macro-agent 0.0.13 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/.claude/settings.local.json +59 -0
  2. package/dist/agent/agent-manager.d.ts.map +1 -1
  3. package/dist/agent/agent-manager.js +10 -4
  4. package/dist/agent/agent-manager.js.map +1 -1
  5. package/dist/cli/acp.d.ts +6 -0
  6. package/dist/cli/acp.d.ts.map +1 -1
  7. package/dist/cli/acp.js +16 -2
  8. package/dist/cli/acp.js.map +1 -1
  9. package/dist/map/adapter/index.d.ts +1 -1
  10. package/dist/map/adapter/index.d.ts.map +1 -1
  11. package/dist/map/adapter/index.js +1 -1
  12. package/dist/map/adapter/index.js.map +1 -1
  13. package/dist/map/utils/address-translation.d.ts +99 -0
  14. package/dist/map/utils/address-translation.d.ts.map +1 -0
  15. package/dist/map/utils/address-translation.js +285 -0
  16. package/dist/map/utils/address-translation.js.map +1 -0
  17. package/dist/map/utils/index.d.ts +7 -0
  18. package/dist/map/utils/index.d.ts.map +1 -0
  19. package/dist/map/utils/index.js +7 -0
  20. package/dist/map/utils/index.js.map +1 -0
  21. package/dist/server/combined-server.d.ts.map +1 -1
  22. package/dist/server/combined-server.js +8 -1
  23. package/dist/server/combined-server.js.map +1 -1
  24. package/dist/store/event-store.js +9 -2
  25. package/dist/store/event-store.js.map +1 -1
  26. package/dist/store/types/agents.d.ts +2 -0
  27. package/dist/store/types/agents.d.ts.map +1 -1
  28. package/package.json +4 -4
  29. package/references/acp-factory-ref/CHANGELOG.md +33 -0
  30. package/references/acp-factory-ref/LICENSE +21 -0
  31. package/references/acp-factory-ref/README.md +341 -0
  32. package/references/acp-factory-ref/package-lock.json +3102 -0
  33. package/references/acp-factory-ref/package.json +96 -0
  34. package/references/acp-factory-ref/python/CHANGELOG.md +33 -0
  35. package/references/acp-factory-ref/python/LICENSE +21 -0
  36. package/references/acp-factory-ref/python/Makefile +57 -0
  37. package/references/acp-factory-ref/python/README.md +253 -0
  38. package/references/acp-factory-ref/python/pyproject.toml +73 -0
  39. package/references/acp-factory-ref/python/tests/__init__.py +0 -0
  40. package/references/acp-factory-ref/python/tests/e2e/__init__.py +1 -0
  41. package/references/acp-factory-ref/python/tests/e2e/test_codex_e2e.py +349 -0
  42. package/references/acp-factory-ref/python/tests/e2e/test_gemini_e2e.py +165 -0
  43. package/references/acp-factory-ref/python/tests/e2e/test_opencode_e2e.py +296 -0
  44. package/references/acp-factory-ref/python/tests/test_client_handler.py +543 -0
  45. package/references/acp-factory-ref/python/tests/test_pushable.py +199 -0
  46. package/references/claude-code-acp/.github/workflows/ci.yml +45 -0
  47. package/references/claude-code-acp/.github/workflows/publish.yml +34 -0
  48. package/references/claude-code-acp/.prettierrc.json +4 -0
  49. package/references/claude-code-acp/CHANGELOG.md +249 -0
  50. package/references/claude-code-acp/LICENSE +222 -0
  51. package/references/claude-code-acp/README.md +53 -0
  52. package/references/claude-code-acp/docs/RELEASES.md +24 -0
  53. package/references/claude-code-acp/eslint.config.js +48 -0
  54. package/references/claude-code-acp/package-lock.json +4570 -0
  55. package/references/claude-code-acp/package.json +88 -0
  56. package/references/claude-code-acp/scripts/release.sh +119 -0
  57. package/references/claude-code-acp/src/acp-agent.ts +2079 -0
  58. package/references/claude-code-acp/src/index.ts +26 -0
  59. package/references/claude-code-acp/src/lib.ts +38 -0
  60. package/references/claude-code-acp/src/mcp-server.ts +911 -0
  61. package/references/claude-code-acp/src/settings.ts +522 -0
  62. package/references/claude-code-acp/src/tests/.claude/commands/quick-math.md +5 -0
  63. package/references/claude-code-acp/src/tests/.claude/commands/say-hello.md +6 -0
  64. package/references/claude-code-acp/src/tests/acp-agent-fork.test.ts +479 -0
  65. package/references/claude-code-acp/src/tests/acp-agent.test.ts +1502 -0
  66. package/references/claude-code-acp/src/tests/extract-lines.test.ts +103 -0
  67. package/references/claude-code-acp/src/tests/fork-session.test.ts +335 -0
  68. package/references/claude-code-acp/src/tests/replace-and-calculate-location.test.ts +334 -0
  69. package/references/claude-code-acp/src/tests/settings.test.ts +617 -0
  70. package/references/claude-code-acp/src/tests/skills-options.test.ts +187 -0
  71. package/references/claude-code-acp/src/tests/tools.test.ts +318 -0
  72. package/references/claude-code-acp/src/tests/typescript-declarations.test.ts +558 -0
  73. package/references/claude-code-acp/src/tools.ts +819 -0
  74. package/references/claude-code-acp/src/utils.ts +171 -0
  75. package/references/claude-code-acp/tsconfig.json +18 -0
  76. package/references/claude-code-acp/vitest.config.ts +19 -0
  77. package/references/multi-agent-protocol/.sudocode/issues.jsonl +111 -0
  78. package/references/multi-agent-protocol/.sudocode/specs.jsonl +13 -0
  79. package/references/multi-agent-protocol/LICENSE +21 -0
  80. package/references/multi-agent-protocol/README.md +113 -0
  81. package/references/multi-agent-protocol/docs/00-design-specification.md +496 -0
  82. package/references/multi-agent-protocol/docs/01-open-questions.md +1050 -0
  83. package/references/multi-agent-protocol/docs/02-wire-protocol.md +296 -0
  84. package/references/multi-agent-protocol/docs/03-streaming-semantics.md +252 -0
  85. package/references/multi-agent-protocol/docs/04-error-handling.md +231 -0
  86. package/references/multi-agent-protocol/docs/05-connection-model.md +244 -0
  87. package/references/multi-agent-protocol/docs/06-visibility-permissions.md +243 -0
  88. package/references/multi-agent-protocol/docs/07-federation.md +259 -0
  89. package/references/multi-agent-protocol/docs/08-macro-agent-migration.md +253 -0
  90. package/references/multi-agent-protocol/docs/09-authentication.md +680 -0
  91. package/references/multi-agent-protocol/docs/10-mail-protocol.md +553 -0
  92. package/references/multi-agent-protocol/docs/agent-iam-integration.md +877 -0
  93. package/references/multi-agent-protocol/docs/agentic-mesh-integration-draft.md +459 -0
  94. package/references/multi-agent-protocol/docs/git-transport-draft.md +251 -0
  95. package/references/multi-agent-protocol/docs-site/Gemfile +22 -0
  96. package/references/multi-agent-protocol/docs-site/README.md +82 -0
  97. package/references/multi-agent-protocol/docs-site/_config.yml +91 -0
  98. package/references/multi-agent-protocol/docs-site/_includes/head_custom.html +20 -0
  99. package/references/multi-agent-protocol/docs-site/_sass/color_schemes/map.scss +42 -0
  100. package/references/multi-agent-protocol/docs-site/_sass/custom/custom.scss +34 -0
  101. package/references/multi-agent-protocol/docs-site/examples/full-integration.md +510 -0
  102. package/references/multi-agent-protocol/docs-site/examples/index.md +138 -0
  103. package/references/multi-agent-protocol/docs-site/examples/simple-chat.md +282 -0
  104. package/references/multi-agent-protocol/docs-site/examples/task-queue.md +399 -0
  105. package/references/multi-agent-protocol/docs-site/getting-started/index.md +98 -0
  106. package/references/multi-agent-protocol/docs-site/getting-started/installation.md +219 -0
  107. package/references/multi-agent-protocol/docs-site/getting-started/overview.md +172 -0
  108. package/references/multi-agent-protocol/docs-site/getting-started/quickstart.md +237 -0
  109. package/references/multi-agent-protocol/docs-site/index.md +136 -0
  110. package/references/multi-agent-protocol/docs-site/protocol/authentication.md +391 -0
  111. package/references/multi-agent-protocol/docs-site/protocol/connection-model.md +376 -0
  112. package/references/multi-agent-protocol/docs-site/protocol/design.md +284 -0
  113. package/references/multi-agent-protocol/docs-site/protocol/error-handling.md +312 -0
  114. package/references/multi-agent-protocol/docs-site/protocol/federation.md +449 -0
  115. package/references/multi-agent-protocol/docs-site/protocol/index.md +129 -0
  116. package/references/multi-agent-protocol/docs-site/protocol/permissions.md +398 -0
  117. package/references/multi-agent-protocol/docs-site/protocol/streaming.md +353 -0
  118. package/references/multi-agent-protocol/docs-site/protocol/wire-protocol.md +369 -0
  119. package/references/multi-agent-protocol/docs-site/sdk/api/agent.md +357 -0
  120. package/references/multi-agent-protocol/docs-site/sdk/api/client.md +380 -0
  121. package/references/multi-agent-protocol/docs-site/sdk/api/index.md +62 -0
  122. package/references/multi-agent-protocol/docs-site/sdk/api/server.md +453 -0
  123. package/references/multi-agent-protocol/docs-site/sdk/api/types.md +468 -0
  124. package/references/multi-agent-protocol/docs-site/sdk/guides/agent.md +375 -0
  125. package/references/multi-agent-protocol/docs-site/sdk/guides/authentication.md +405 -0
  126. package/references/multi-agent-protocol/docs-site/sdk/guides/client.md +352 -0
  127. package/references/multi-agent-protocol/docs-site/sdk/guides/index.md +89 -0
  128. package/references/multi-agent-protocol/docs-site/sdk/guides/server.md +360 -0
  129. package/references/multi-agent-protocol/docs-site/sdk/guides/testing.md +446 -0
  130. package/references/multi-agent-protocol/docs-site/sdk/guides/transports.md +363 -0
  131. package/references/multi-agent-protocol/docs-site/sdk/index.md +206 -0
  132. package/references/multi-agent-protocol/package-lock.json +3886 -0
  133. package/references/multi-agent-protocol/package.json +56 -0
  134. package/references/multi-agent-protocol/schema/meta.json +467 -0
  135. package/references/multi-agent-protocol/schema/schema.json +2558 -0
  136. package/src/agent/__tests__/agent-manager.test.ts +67 -1
  137. package/src/agent/agent-manager.ts +10 -4
  138. package/src/cli/__tests__/stable-instance-id.test.ts +57 -0
  139. package/src/cli/acp.ts +17 -2
  140. package/src/map/adapter/index.ts +3 -0
  141. package/src/server/combined-server.ts +10 -0
  142. package/src/store/event-store.ts +10 -3
  143. package/src/store/types/agents.ts +2 -0
@@ -0,0 +1,136 @@
1
+ ---
2
+ title: Home
3
+ layout: home
4
+ nav_order: 1
5
+ description: "Multi-Agent Protocol (MAP) - A JSON-RPC based protocol for observing, coordinating, and routing messages within multi-agent AI systems."
6
+ permalink: /
7
+ ---
8
+
9
+ # Multi-Agent Protocol (MAP)
10
+ {: .fs-9 }
11
+
12
+ A JSON-RPC based protocol for observing, coordinating, and routing messages within multi-agent AI systems.
13
+ {: .fs-6 .fw-300 }
14
+
15
+ [Get Started](/multi-agent-protocol/getting-started/){: .btn .btn-primary .fs-5 .mb-4 .mb-md-0 .mr-2 }
16
+ [View on GitHub](https://github.com/multi-agent-protocol/multi-agent-protocol){: .btn .fs-5 .mb-4 .mb-md-0 }
17
+
18
+ ---
19
+
20
+ ## Why MAP?
21
+
22
+ Unlike protocols designed for single-agent interaction (ACP) or peer-to-peer agent delegation (A2A), MAP provides a **window into** a multi-agent system with visibility into its internal structure, agent relationships, and message flows.
23
+
24
+ {: .highlight }
25
+ MAP is the protocol for building **observable, coordinated** multi-agent systems.
26
+
27
+ ### Key Features
28
+
29
+ | Feature | Description |
30
+ |:--------|:------------|
31
+ | **Real-time Streaming** | Subscribe to events with backpressure support |
32
+ | **Auto-reconnection** | Exponential backoff with subscription restoration |
33
+ | **Permission System** | 4-layer access control (system, participant, scope, agent) |
34
+ | **Federation** | Connect multiple MAP systems with envelope-based routing |
35
+ | **Causal Ordering** | Events released in dependency order |
36
+
37
+ ---
38
+
39
+ ## Protocol Landscape
40
+
41
+ | Protocol | Relationship | Visibility | Primary Use |
42
+ |:---------|:-------------|:-----------|:------------|
43
+ | MCP | Agent → Tool | N/A | Tool invocation |
44
+ | ACP | Client → Agent | Opaque | Single-agent sessions |
45
+ | A2A | Agent → Agent (peer) | Opaque | Cross-org delegation |
46
+ | **MAP** | Client → System | **Transparent** | Internal orchestration |
47
+
48
+ ---
49
+
50
+ ## Quick Example
51
+
52
+ ```typescript
53
+ import { MAPServer } from "@multi-agent-protocol/sdk/server";
54
+ import { ClientConnection, AgentConnection } from "@multi-agent-protocol/sdk";
55
+
56
+ // Create a MAP server
57
+ const server = new MAPServer({ name: "MyServer" });
58
+
59
+ // Register an agent
60
+ const agent = new AgentConnection(stream, {
61
+ name: "Worker",
62
+ role: "processor"
63
+ });
64
+ await agent.connect();
65
+
66
+ // Subscribe to events from a client
67
+ const client = new ClientConnection(stream, { name: "Dashboard" });
68
+ await client.connect();
69
+
70
+ const subscription = await client.subscribe({
71
+ eventTypes: ["agent.*"]
72
+ });
73
+
74
+ for await (const event of subscription) {
75
+ console.log(event.type, event.data);
76
+ }
77
+ ```
78
+
79
+ ---
80
+
81
+ ## Three Participant Types
82
+
83
+ ```mermaid
84
+ flowchart TB
85
+ subgraph Server["MAP Server"]
86
+ EventBus["EventBus"]
87
+ Agents["Agents"]
88
+ Scopes["Scopes"]
89
+ end
90
+
91
+ Agent1["Agent"] --> Server
92
+ Client["Client"] --> Server
93
+ Agent2["Agent"] --> Server
94
+ ```
95
+
96
+ | Type | Role | Capabilities |
97
+ |:-----|:-----|:-------------|
98
+ | **Agent** | Worker that processes tasks | Register, join scopes, send/receive messages |
99
+ | **Client** | Observer and requester | Subscribe to events, query state, send messages |
100
+ | **Gateway** | Federation bridge | Route between MAP systems |
101
+
102
+ ---
103
+
104
+ ## Protocol Methods
105
+
106
+ The protocol defines **27 methods** across three tiers:
107
+
108
+ ### Core (Required)
109
+ `map/connect`, `map/disconnect`, `map/send`, `map/subscribe`, `map/unsubscribe`, `map/agents/list`, `map/agents/get`
110
+
111
+ ### Structure (Recommended)
112
+ Agent lifecycle (`register`, `spawn`, `unregister`, `update`, `stop`, `suspend`, `resume`), scope management (`scopes/create`, `join`, `leave`), and structure queries
113
+
114
+ ### Extensions (Optional)
115
+ Federation (`federation/connect`, `federation/route`), session management, and steering (`map/inject`)
116
+
117
+ ---
118
+
119
+ ## Getting Started
120
+
121
+ <div class="code-example" markdown="1">
122
+ **Installation**
123
+ ```bash
124
+ npm install @multi-agent-protocol/sdk
125
+ ```
126
+ </div>
127
+
128
+ Ready to build? Check out the [Getting Started Guide](/multi-agent-protocol/getting-started/) to run your first MAP server in 5 minutes.
129
+
130
+ ---
131
+
132
+ ## About
133
+
134
+ Multi-Agent Protocol is open source and available under the [MIT License](https://github.com/multi-agent-protocol/multi-agent-protocol/blob/main/LICENSE).
135
+
136
+ Created and maintained by the [sudocode](https://github.com/sudocode-ai) team.
@@ -0,0 +1,391 @@
1
+ ---
2
+ title: Authentication
3
+ parent: Protocol
4
+ nav_order: 6
5
+ description: "Authentication methods and flows"
6
+ ---
7
+
8
+ # Authentication
9
+ {: .no_toc }
10
+
11
+ Authentication methods, negotiation flows, and security considerations.
12
+ {: .fs-6 .fw-300 }
13
+
14
+ ## Table of contents
15
+ {: .no_toc .text-delta }
16
+
17
+ 1. TOC
18
+ {:toc}
19
+
20
+ ---
21
+
22
+ ## Design Principles
23
+
24
+ 1. **Pluggable mechanisms** - Support multiple auth methods with a standard negotiation flow
25
+ 2. **Sensible defaults** - Built-in support for common methods (bearer tokens, API keys)
26
+ 3. **Transport-aware** - Acknowledge that some auth happens at transport layer (mTLS)
27
+ 4. **Optional for local** - No auth overhead for trusted local connections (stdio)
28
+ 5. **Federation-ready** - Credentials can carry claims for cross-server authentication
29
+
30
+ ---
31
+
32
+ ## Authentication Methods
33
+
34
+ | Method | Description | Use Case |
35
+ |:-------|:------------|:---------|
36
+ | `none` | No authentication | Local subprocess agents, development |
37
+ | `bearer` | Bearer token (JWT or opaque) | OAuth2, IdP integration, M2M tokens |
38
+ | `api-key` | Simple API key | Simple integrations, internal services |
39
+ | `mtls` | Mutual TLS (transport layer) | High-security service-to-service |
40
+
41
+ ### Extension Methods
42
+
43
+ Custom authentication methods use the `x-` prefix:
44
+
45
+ ```
46
+ x-custom-auth
47
+ x-kerberos
48
+ x-saml
49
+ ```
50
+
51
+ Servers MUST reject unknown methods without the `x-` prefix.
52
+
53
+ ---
54
+
55
+ ## Wire Protocol
56
+
57
+ ### Server Authentication Capabilities
58
+
59
+ Servers advertise requirements in the connect response:
60
+
61
+ ```typescript
62
+ interface ServerAuthCapabilities {
63
+ /** Supported authentication methods (in preference order) */
64
+ methods: AuthMethod[];
65
+
66
+ /** Is authentication required to proceed? */
67
+ required: boolean;
68
+
69
+ /** OAuth2 authorization server metadata URL */
70
+ oauth2MetadataUrl?: string;
71
+
72
+ /** JWKS URL for local JWT verification */
73
+ jwksUrl?: string;
74
+
75
+ /** Realm identifier for this server */
76
+ realm?: string;
77
+ }
78
+ ```
79
+
80
+ ### Client Credentials
81
+
82
+ ```typescript
83
+ interface AuthCredentials {
84
+ /** The authentication method being used */
85
+ method: AuthMethod;
86
+
87
+ /** The credential value (token, API key, etc.) */
88
+ credential?: string;
89
+
90
+ /** Method-specific additional data */
91
+ metadata?: Record<string, unknown>;
92
+ }
93
+ ```
94
+
95
+ ### Authentication Result
96
+
97
+ ```typescript
98
+ interface AuthResult {
99
+ success: boolean;
100
+
101
+ principal?: {
102
+ id: string;
103
+ issuer?: string;
104
+ claims?: Record<string, unknown>;
105
+ };
106
+
107
+ error?: {
108
+ code: AuthErrorCode;
109
+ message: string;
110
+ };
111
+ }
112
+
113
+ type AuthErrorCode =
114
+ | 'invalid_credentials'
115
+ | 'expired'
116
+ | 'insufficient_scope'
117
+ | 'method_not_supported'
118
+ | 'auth_required';
119
+ ```
120
+
121
+ ---
122
+
123
+ ## Connection Flows
124
+
125
+ ### Flow 1: Auth Provided Upfront (Recommended)
126
+
127
+ When the client knows the server's auth requirements:
128
+
129
+ ```mermaid
130
+ sequenceDiagram
131
+ participant Client
132
+ participant Server
133
+
134
+ Client->>Server: map/connect {participantType, auth}
135
+ Server-->>Client: connect response {session, principal}
136
+ ```
137
+
138
+ ```typescript
139
+ // Request
140
+ {
141
+ "jsonrpc": "2.0",
142
+ "id": 1,
143
+ "method": "map/connect",
144
+ "params": {
145
+ "protocolVersion": 1,
146
+ "participantType": "client",
147
+ "name": "my-client",
148
+ "auth": {
149
+ "method": "bearer",
150
+ "credential": "eyJhbGciOiJSUzI1NiIs..."
151
+ }
152
+ }
153
+ }
154
+
155
+ // Response (success)
156
+ {
157
+ "jsonrpc": "2.0",
158
+ "id": 1,
159
+ "result": {
160
+ "sessionId": "session_01ABC",
161
+ "participantId": "client_01XYZ",
162
+ "principal": {
163
+ "id": "user_123",
164
+ "issuer": "https://auth.example.com",
165
+ "claims": { "scope": "read write" }
166
+ }
167
+ }
168
+ }
169
+ ```
170
+
171
+ ### Flow 2: Auth Negotiation
172
+
173
+ When the client doesn't know auth requirements:
174
+
175
+ ```mermaid
176
+ sequenceDiagram
177
+ participant Client
178
+ participant Server
179
+
180
+ Client->>Server: map/connect {participantType}
181
+ Server-->>Client: auth_required {methods, required}
182
+ Client->>Server: map/authenticate {method, credential}
183
+ Server-->>Client: auth result {success, session, principal}
184
+ ```
185
+
186
+ ### Flow 3: No Authentication
187
+
188
+ For trusted local connections:
189
+
190
+ ```mermaid
191
+ sequenceDiagram
192
+ participant Client
193
+ participant Server
194
+
195
+ Client->>Server: map/connect {participantType}
196
+ Server-->>Client: connect response {session}
197
+ ```
198
+
199
+ ---
200
+
201
+ ## Method-Specific Details
202
+
203
+ ### Bearer Tokens (JWT)
204
+
205
+ ```typescript
206
+ // Standard JWT claims used by MAP
207
+ interface MAPJWTClaims {
208
+ sub: string; // Subject (principal ID)
209
+ iss: string; // Issuer
210
+ aud: string | string[];// Audience (MAP server ID)
211
+ exp: number; // Expiration
212
+ iat: number; // Issued at
213
+ nbf?: number; // Not before
214
+
215
+ // MAP-specific claims
216
+ "map:permissions"?: MAPPermissions;
217
+ "map:roles"?: string[];
218
+ "map:scopes"?: string[];
219
+ }
220
+ ```
221
+
222
+ ### API Keys
223
+
224
+ ```typescript
225
+ // API key format
226
+ interface MAPApiKey {
227
+ prefix: string; // e.g., "map_"
228
+ keyId: string; // Key identifier
229
+ secret: string; // Secret portion
230
+
231
+ // Combined format: map_keyId_secret
232
+ }
233
+
234
+ // Header format
235
+ Authorization: ApiKey map_abc123_secretxyz
236
+ ```
237
+
238
+ ### Mutual TLS
239
+
240
+ Authentication happens at transport layer:
241
+
242
+ ```typescript
243
+ interface MTLSAuth {
244
+ method: "mtls";
245
+ metadata: {
246
+ clientCertificate: {
247
+ subject: string;
248
+ issuer: string;
249
+ fingerprint: string;
250
+ validFrom: string;
251
+ validTo: string;
252
+ };
253
+ };
254
+ }
255
+ ```
256
+
257
+ ---
258
+
259
+ ## Token Refresh
260
+
261
+ ### Proactive Refresh
262
+
263
+ Client refreshes before expiration:
264
+
265
+ ```typescript
266
+ {
267
+ "method": "map/authenticate",
268
+ "params": {
269
+ "method": "bearer",
270
+ "credential": "new_access_token",
271
+ "refresh": true
272
+ }
273
+ }
274
+ ```
275
+
276
+ ### Server-Initiated Refresh
277
+
278
+ Server can request reauthentication:
279
+
280
+ ```typescript
281
+ // Server notification
282
+ {
283
+ "method": "map/auth.expiring",
284
+ "params": {
285
+ "expiresIn": 300, // seconds
286
+ "reason": "token_expiring"
287
+ }
288
+ }
289
+
290
+ // Client responds with new credentials
291
+ {
292
+ "method": "map/authenticate",
293
+ "params": {
294
+ "method": "bearer",
295
+ "credential": "refreshed_token"
296
+ }
297
+ }
298
+ ```
299
+
300
+ ---
301
+
302
+ ## Federation Authentication
303
+
304
+ ### Trust Establishment
305
+
306
+ ```typescript
307
+ interface FederationAuth {
308
+ // Peer identification
309
+ peerId: string;
310
+ peerCertificate?: string;
311
+
312
+ // Trust method
313
+ trustMethod: "mtls" | "signed_tokens" | "shared_secret";
314
+
315
+ // Token signing for cross-system calls
316
+ tokenSigning?: {
317
+ algorithm: string;
318
+ keyId: string;
319
+ };
320
+ }
321
+ ```
322
+
323
+ ### Cross-System Token Propagation
324
+
325
+ ```typescript
326
+ // Message with propagated auth context
327
+ {
328
+ "method": "map/federation/send",
329
+ "params": {
330
+ "peerId": "system_beta",
331
+ "message": { ... },
332
+ "authContext": {
333
+ "originalPrincipal": "user_123",
334
+ "originalIssuer": "system_alpha",
335
+ "delegationChain": ["system_alpha"],
336
+ "signature": "..."
337
+ }
338
+ }
339
+ }
340
+ ```
341
+
342
+ ---
343
+
344
+ ## Error Handling
345
+
346
+ ### Authentication Errors
347
+
348
+ | Code | Error | Recovery |
349
+ |:-----|:------|:---------|
350
+ | 1000 | AUTH_REQUIRED | Provide credentials |
351
+ | 1001 | AUTH_FAILED | Check credentials |
352
+ | 1002 | AUTH_EXPIRED | Refresh token |
353
+ | 1003 | PERMISSION_DENIED | Request additional scope |
354
+
355
+ ### Error Response
356
+
357
+ ```typescript
358
+ {
359
+ "error": {
360
+ "code": 1001,
361
+ "message": "Authentication failed",
362
+ "data": {
363
+ "category": "auth",
364
+ "reason": "invalid_signature",
365
+ "hint": "Token signature verification failed"
366
+ }
367
+ }
368
+ }
369
+ ```
370
+
371
+ ---
372
+
373
+ ## Security Considerations
374
+
375
+ {: .warning }
376
+ > Always use TLS in production environments. Never transmit credentials over unencrypted connections.
377
+
378
+ ### Best Practices
379
+
380
+ 1. **Short-lived tokens** - Use access tokens with short expiration
381
+ 2. **Secure storage** - Never log or store credentials in plain text
382
+ 3. **Scope limitation** - Request minimum necessary permissions
383
+ 4. **Token rotation** - Rotate API keys and refresh tokens regularly
384
+ 5. **Audit logging** - Log authentication events for security monitoring
385
+
386
+ ---
387
+
388
+ ## Next Steps
389
+
390
+ - [Permissions](./permissions.html) - 4-layer permission model
391
+ - [Federation](./federation.html) - Cross-system authentication