@kya-os/mcp-i-cloudflare 1.5.8-canary.6 → 1.5.8-canary.61

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 (93) hide show
  1. package/README.md +130 -0
  2. package/dist/__tests__/e2e/test-config.d.ts +37 -0
  3. package/dist/__tests__/e2e/test-config.d.ts.map +1 -0
  4. package/dist/__tests__/e2e/test-config.js +62 -0
  5. package/dist/__tests__/e2e/test-config.js.map +1 -0
  6. package/dist/adapter.d.ts +44 -0
  7. package/dist/adapter.d.ts.map +1 -1
  8. package/dist/adapter.js +677 -88
  9. package/dist/adapter.js.map +1 -1
  10. package/dist/agent.d.ts +69 -25
  11. package/dist/agent.d.ts.map +1 -1
  12. package/dist/agent.js +435 -40
  13. package/dist/agent.js.map +1 -1
  14. package/dist/app.d.ts +0 -8
  15. package/dist/app.d.ts.map +1 -1
  16. package/dist/app.js +208 -55
  17. package/dist/app.js.map +1 -1
  18. package/dist/cache/kv-oauth-config-cache.d.ts +47 -0
  19. package/dist/cache/kv-oauth-config-cache.d.ts.map +1 -0
  20. package/dist/cache/kv-oauth-config-cache.js +82 -0
  21. package/dist/cache/kv-oauth-config-cache.js.map +1 -0
  22. package/dist/config.d.ts.map +1 -1
  23. package/dist/config.js +33 -4
  24. package/dist/config.js.map +1 -1
  25. package/dist/helpers/env-mapper.d.ts +60 -1
  26. package/dist/helpers/env-mapper.d.ts.map +1 -1
  27. package/dist/helpers/env-mapper.js +136 -6
  28. package/dist/helpers/env-mapper.js.map +1 -1
  29. package/dist/index.d.ts +4 -2
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +8 -3
  32. package/dist/index.js.map +1 -1
  33. package/dist/runtime/audit-logger.d.ts +96 -0
  34. package/dist/runtime/audit-logger.d.ts.map +1 -0
  35. package/dist/runtime/audit-logger.js +276 -0
  36. package/dist/runtime/audit-logger.js.map +1 -0
  37. package/dist/runtime/oauth-handler.d.ts +5 -0
  38. package/dist/runtime/oauth-handler.d.ts.map +1 -1
  39. package/dist/runtime/oauth-handler.js +287 -35
  40. package/dist/runtime/oauth-handler.js.map +1 -1
  41. package/dist/runtime.d.ts +12 -1
  42. package/dist/runtime.d.ts.map +1 -1
  43. package/dist/runtime.js +34 -4
  44. package/dist/runtime.js.map +1 -1
  45. package/dist/server.d.ts +7 -0
  46. package/dist/server.d.ts.map +1 -1
  47. package/dist/server.js +55 -2
  48. package/dist/server.js.map +1 -1
  49. package/dist/services/admin.service.d.ts.map +1 -1
  50. package/dist/services/admin.service.js +27 -0
  51. package/dist/services/admin.service.js.map +1 -1
  52. package/dist/services/consent-audit.service.d.ts +91 -0
  53. package/dist/services/consent-audit.service.d.ts.map +1 -0
  54. package/dist/services/consent-audit.service.js +243 -0
  55. package/dist/services/consent-audit.service.js.map +1 -0
  56. package/dist/services/consent-config.service.d.ts +2 -2
  57. package/dist/services/consent-config.service.d.ts.map +1 -1
  58. package/dist/services/consent-config.service.js +55 -24
  59. package/dist/services/consent-config.service.js.map +1 -1
  60. package/dist/services/consent-page-renderer.d.ts +14 -0
  61. package/dist/services/consent-page-renderer.d.ts.map +1 -1
  62. package/dist/services/consent-page-renderer.js +42 -0
  63. package/dist/services/consent-page-renderer.js.map +1 -1
  64. package/dist/services/consent.service.d.ts +82 -4
  65. package/dist/services/consent.service.d.ts.map +1 -1
  66. package/dist/services/consent.service.js +1717 -34
  67. package/dist/services/consent.service.js.map +1 -1
  68. package/dist/services/delegation.service.d.ts.map +1 -1
  69. package/dist/services/delegation.service.js +67 -29
  70. package/dist/services/delegation.service.js.map +1 -1
  71. package/dist/services/idp-token-storage.d.ts +68 -0
  72. package/dist/services/idp-token-storage.d.ts.map +1 -0
  73. package/dist/services/idp-token-storage.js +157 -0
  74. package/dist/services/idp-token-storage.js.map +1 -0
  75. package/dist/services/oauth-service.d.ts +66 -0
  76. package/dist/services/oauth-service.d.ts.map +1 -0
  77. package/dist/services/oauth-service.js +223 -0
  78. package/dist/services/oauth-service.js.map +1 -0
  79. package/dist/services/proof.service.d.ts +5 -3
  80. package/dist/services/proof.service.d.ts.map +1 -1
  81. package/dist/services/proof.service.js +35 -8
  82. package/dist/services/proof.service.js.map +1 -1
  83. package/dist/services/tool-context-builder.d.ts +55 -0
  84. package/dist/services/tool-context-builder.d.ts.map +1 -0
  85. package/dist/services/tool-context-builder.js +124 -0
  86. package/dist/services/tool-context-builder.js.map +1 -0
  87. package/dist/types/tool-context.d.ts +35 -0
  88. package/dist/types/tool-context.d.ts.map +1 -0
  89. package/dist/types/tool-context.js +13 -0
  90. package/dist/types/tool-context.js.map +1 -0
  91. package/dist/types.d.ts +30 -0
  92. package/dist/types.d.ts.map +1 -1
  93. package/package.json +27 -60
package/dist/agent.js CHANGED
@@ -10,8 +10,11 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
10
10
  import { CloudflareRuntime } from "./runtime";
11
11
  import { createCloudflareRuntime } from "./index";
12
12
  import { mapPrefixedEnv } from "./helpers/env-mapper";
13
- // Global registry for agent options (set by createMCPIApp)
14
- const agentOptionsRegistry = new Map();
13
+ import { STORAGE_KEYS } from "./constants/storage-keys";
14
+ import { OAuthConfigService, OAuthService, IdpTokenResolver, ToolContextBuilder, OAuthRequiredError, DelegationRequiredError, } from "@kya-os/mcp-i-core";
15
+ import { KVOAuthConfigCache } from "./cache/kv-oauth-config-cache";
16
+ import { IdpTokenStorage } from "./services/idp-token-storage";
17
+ import { OAuthSecurityService } from "./services/oauth-security.service";
15
18
  /**
16
19
  * Base class for MCP agents with MCP-I features
17
20
  *
@@ -21,45 +24,45 @@ const agentOptionsRegistry = new Map();
21
24
  * - Session management
22
25
  * - Durable Object routing
23
26
  *
24
- * Users extend this class and implement `registerTools()` to add their custom tools.
27
+ * Users extend this class and implement:
28
+ * - `getAgentName()`: Return the agent name
29
+ * - `getAgentVersion()`: Return the agent version (optional)
30
+ * - `getEnvPrefix()`: Return the KV environment prefix (optional)
31
+ * - `getRuntimeConfig()`: Return the runtime configuration
32
+ * - `registerTools()`: Register tools with the MCP server
25
33
  */
26
34
  export class MCPICloudflareAgent extends McpAgent {
27
- // @ts-ignore - Type incompatibility between different versions of @modelcontextprotocol/sdk
28
- // Runtime behavior is correct, this is a type-only issue
29
35
  // Initialize server as class field (before constructor) so parent class can access it
36
+ // Note: SDK 1.x uses single parameter constructor (server info only)
30
37
  server = new McpServer({
31
38
  name: "MCP-I Agent",
32
39
  version: "1.0.0",
33
40
  });
34
41
  mcpiRuntime;
35
42
  env;
36
- options;
37
43
  constructor(state, env) {
38
44
  // Call super() with just state and env (agents@0.2.21+ only accepts 2 parameters)
39
45
  // The config is no longer passed to the constructor - it's set via the server property
40
46
  super(state, env);
41
- // Get options from registry AFTER calling super() (can now access 'this')
42
- const AgentClass = new.target;
43
- const options = agentOptionsRegistry.get(AgentClass);
44
- // Now we can safely access 'this' and set properties
45
- if (!options) {
46
- throw new Error(`Agent options not found. Make sure to call createMCPIApp() before instantiating ${AgentClass.name}.`);
47
- }
48
47
  this.env = env;
49
- this.options = options;
50
- // Update server with correct config from options (override the default)
48
+ // Get agent configuration from subclass methods
49
+ const agentName = this.getAgentName();
50
+ const agentVersion = this.getAgentVersion();
51
+ const envPrefix = this.getEnvPrefix();
52
+ // Update server with correct config
53
+ // Note: SDK 1.x uses single parameter constructor (server info only)
51
54
  this.server = new McpServer({
52
- name: this.options.name,
53
- version: this.options.version || "1.0.0",
55
+ name: agentName,
56
+ version: agentVersion || "1.0.0",
54
57
  });
55
58
  // Map prefixed environment to standard CloudflareEnv
56
- const mappedEnv = this.options.envPrefix
57
- ? mapPrefixedEnv(env, this.options.envPrefix)
59
+ const mappedEnv = envPrefix
60
+ ? mapPrefixedEnv(env, envPrefix)
58
61
  : env;
59
- // Add DurableObjectState to mapped env
62
+ // Add DurableObjectState to mapped env for identity persistence
60
63
  mappedEnv._durableObjectState = state;
61
- // Load runtime configuration
62
- const runtimeConfig = this.options.getRuntimeConfig(mappedEnv);
64
+ // Load runtime configuration from subclass
65
+ const runtimeConfig = this.getRuntimeConfigInternal(mappedEnv);
63
66
  // Create tool protection service if configured
64
67
  const toolProtectionService = runtimeConfig.toolProtection &&
65
68
  mappedEnv.TOOL_PROTECTION_KV &&
@@ -73,10 +76,13 @@ export class MCPICloudflareAgent extends McpAgent {
73
76
  mappedEnv.AGENTSHIELD_PROJECT_ID,
74
77
  cacheTtl: runtimeConfig.toolProtection.agentShield?.cacheTtl || 300000,
75
78
  debug: runtimeConfig.environment === "development",
79
+ // Wrap fallback ToolProtectionMap into ToolProtectionConfig format
80
+ // Handle both wrapped and unwrapped formats for backward compatibility
76
81
  fallbackConfig: runtimeConfig.toolProtection.fallback
77
- ? {
78
- toolProtections: runtimeConfig.toolProtection.fallback,
79
- }
82
+ ? runtimeConfig.toolProtection.fallback.toolProtections !==
83
+ undefined
84
+ ? runtimeConfig.toolProtection.fallback // Already wrapped
85
+ : { toolProtections: runtimeConfig.toolProtection.fallback } // Wrap it
80
86
  : undefined,
81
87
  })
82
88
  : undefined;
@@ -94,40 +100,119 @@ export class MCPICloudflareAgent extends McpAgent {
94
100
  });
95
101
  }
96
102
  /**
97
- * Register options for an agent class
98
- * Called internally by createMCPIApp
103
+ * Get agent version
104
+ * Subclasses can override this to provide a custom version
105
+ */
106
+ getAgentVersion() {
107
+ return "1.0.0";
108
+ }
109
+ /**
110
+ * Get environment prefix for KV bindings
111
+ * Subclasses can override this for multi-agent deployments
99
112
  */
100
- static registerOptions(AgentClass, options) {
101
- agentOptionsRegistry.set(AgentClass, options);
113
+ getEnvPrefix() {
114
+ return undefined;
102
115
  }
103
116
  /**
104
117
  * Initialize the agent
105
118
  * Call this after construction to set up the runtime and register tools
106
119
  */
107
120
  async init() {
108
- await this.mcpiRuntime?.initialize();
109
- const identity = await this.mcpiRuntime?.getIdentity();
110
- console.log("[MCP-I] Initialized with DID:", identity?.did);
111
- // Register tools (implemented by subclasses)
112
- await this.registerTools();
121
+ try {
122
+ await this.mcpiRuntime?.initialize();
123
+ const identity = await this.mcpiRuntime?.getIdentity();
124
+ console.log("[MCP-I] Initialized with DID:", identity?.did);
125
+ // Ensure server is initialized before registering tools
126
+ if (!this.server) {
127
+ throw new Error("Server not initialized. This should not happen - server is initialized in constructor.");
128
+ }
129
+ // Register tools (implemented by subclasses)
130
+ await this.registerTools();
131
+ }
132
+ catch (error) {
133
+ console.error("[MCPICloudflareAgent] Initialization failed:", error);
134
+ throw error;
135
+ }
136
+ }
137
+ /**
138
+ * Register a tool with automatic session ID extraction and proof generation
139
+ *
140
+ * This helper method automatically extracts `sessionId` from `ToolExtraArguments`
141
+ * and passes it to `executeToolWithProof`, eliminating the need for manual extraction
142
+ * in every tool handler.
143
+ *
144
+ * @example
145
+ * ```typescript
146
+ * this.registerToolWithProof(
147
+ * greetTool.name,
148
+ * greetTool.description,
149
+ * greetTool.inputSchema.shape,
150
+ * greetTool.handler
151
+ * );
152
+ * ```
153
+ *
154
+ * @param name - Tool name
155
+ * @param description - Tool description
156
+ * @param schema - Tool input schema (Zod schema shape)
157
+ * @param handler - Tool handler function that receives args and returns result
158
+ */
159
+ registerToolWithProof(name, description, schema, handler) {
160
+ // Safety check: ensure server is initialized
161
+ if (!this.server) {
162
+ throw new Error(`Cannot register tool "${name}": server not initialized. Make sure to call init() before registering tools.`);
163
+ }
164
+ try {
165
+ this.server.tool(name, description, schema, async (args, extra) => {
166
+ // ✅ Automatically extract sessionId from ToolExtraArguments
167
+ // This ensures delegation tokens stored with the original session ID
168
+ // can be retrieved on subsequent tool calls
169
+ // Note: extra is typed as 'any' to match MCP SDK's ToolExtraArguments type
170
+ const sessionId = extra?.sessionId;
171
+ return this.executeToolWithProof(name, args, handler, sessionId);
172
+ });
173
+ }
174
+ catch (error) {
175
+ console.error(`[MCPICloudflareAgent] Failed to register tool "${name}":`, error);
176
+ throw error;
177
+ }
113
178
  }
114
179
  /**
115
180
  * Execute a tool with automatic proof generation
116
181
  * Use this helper method when registering tools to ensure proofs are generated
182
+ *
183
+ * @param toolName - Name of the tool being executed
184
+ * @param args - Tool arguments
185
+ * @param handler - Tool handler function
186
+ * @param providedSessionId - Optional session ID from MCP request (extracted from ToolExtraArguments.sessionId)
187
+ * If provided, uses this session ID for delegation token lookup.
188
+ * If not provided, falls back to getSessionId() or generates ephemeral ID.
117
189
  */
118
- async executeToolWithProof(toolName, args, handler) {
190
+ async executeToolWithProof(toolName, args, handler, providedSessionId) {
119
191
  if (!this.mcpiRuntime) {
120
192
  throw new Error("MCP-I runtime not initialized. Call init() first.");
121
193
  }
122
194
  // Create session
195
+ // ✅ CRITICAL: Use provided sessionId if available (from MCP request params)
196
+ // This ensures delegation tokens stored with the original session ID can be retrieved
123
197
  const timestamp = Date.now();
124
- const sessionId = this.getSessionId() ||
198
+ const sessionId = providedSessionId ||
199
+ this.getSessionId() ||
125
200
  `ephemeral-${timestamp}-${Math.random().toString(36).substring(2, 10)}`;
201
+ // Log session ID source for debugging
202
+ const envPrefix = this.getEnvPrefix();
203
+ const mappedEnv = envPrefix
204
+ ? mapPrefixedEnv(this.env, envPrefix)
205
+ : this.env;
206
+ if (this.getRuntimeConfigInternal(mappedEnv).environment === "development") {
207
+ console.log("[MCPICloudflareAgent] Session ID source:", {
208
+ provided: !!providedSessionId,
209
+ fromGetSessionId: !!this.getSessionId(),
210
+ isEphemeral: !providedSessionId && !this.getSessionId(),
211
+ sessionId: sessionId.slice(0, 20) + "...",
212
+ });
213
+ }
126
214
  // Get server URL from env var (MCP_SERVER_URL) for consent URL building
127
215
  // In production, this should be set to the deployed worker URL
128
- const mappedEnv = this.options?.envPrefix
129
- ? mapPrefixedEnv(this.env, this.options.envPrefix)
130
- : this.env;
131
216
  let serverUrl = mappedEnv.MCP_SERVER_URL;
132
217
  // Ensure URL has protocol (https://) if provided
133
218
  if (serverUrl &&
@@ -136,6 +221,92 @@ export class MCPICloudflareAgent extends McpAgent {
136
221
  // Auto-add https:// if protocol missing
137
222
  serverUrl = `https://${serverUrl}`;
138
223
  }
224
+ // ✅ Look up delegation token from KV storage (3-priority system)
225
+ let delegationToken;
226
+ let userDid; // Extract userDid for IDP token resolution
227
+ const delegationStorage = mappedEnv.DELEGATION_STORAGE;
228
+ if (delegationStorage) {
229
+ try {
230
+ const agentDid = (await this.mcpiRuntime.getIdentity()).did;
231
+ console.log("[MCPICloudflareAgent] 🔍 Starting delegation token lookup:", {
232
+ sessionId: sessionId.slice(0, 20) + "...",
233
+ agentDid: agentDid.slice(0, 20) + "...",
234
+ hasDelegationStorage: !!delegationStorage,
235
+ });
236
+ // PRIORITY 1: User+Agent scoped token (user-specific, most secure)
237
+ // Try to get userDid from session cache
238
+ const sessionKey = STORAGE_KEYS.session(sessionId);
239
+ const sessionData = (await delegationStorage.get(sessionKey, "json"));
240
+ userDid = sessionData?.userDid;
241
+ if (userDid) {
242
+ const userAgentKey = STORAGE_KEYS.delegation(userDid, agentDid);
243
+ console.log("[MCPICloudflareAgent] 🔍 PRIORITY 1: Checking user+agent scoped key:", {
244
+ key: userAgentKey,
245
+ userDid: userDid.slice(0, 20) + "...",
246
+ agentDid: agentDid.slice(0, 20) + "...",
247
+ });
248
+ const userAgentToken = await delegationStorage.get(userAgentKey, "text");
249
+ console.log("[MCPICloudflareAgent] 🔍 PRIORITY 1: User+agent scoped lookup result:", {
250
+ found: !!userAgentToken,
251
+ tokenLength: userAgentToken?.length || 0,
252
+ });
253
+ if (userAgentToken) {
254
+ delegationToken = userAgentToken;
255
+ }
256
+ }
257
+ // PRIORITY 2: Session-scoped token (if session ID persists)
258
+ if (!delegationToken) {
259
+ console.log("[MCPICloudflareAgent] 🔍 PRIORITY 2: Checking session-scoped key:", {
260
+ key: sessionKey,
261
+ sessionId: sessionId.slice(0, 20) + "...",
262
+ });
263
+ const sessionTokenData = (await delegationStorage.get(sessionKey, "json"));
264
+ console.log("[MCPICloudflareAgent] 🔍 PRIORITY 2: Session-scoped lookup result:", {
265
+ found: !!sessionTokenData,
266
+ hasDelegationToken: !!sessionTokenData?.delegationToken,
267
+ tokenLength: sessionTokenData?.delegationToken?.length || 0,
268
+ });
269
+ if (sessionTokenData?.delegationToken) {
270
+ delegationToken = sessionTokenData.delegationToken;
271
+ }
272
+ }
273
+ // PRIORITY 3: Agent-scoped token (legacy fallback - DEPRECATED)
274
+ // Only use when userDid is unavailable (backward compatibility)
275
+ if (!delegationToken && !userDid) {
276
+ const agentKey = STORAGE_KEYS.legacyDelegation(agentDid);
277
+ console.warn("[MCPICloudflareAgent] ⚠️ DEPRECATION: Using agent-scoped token (legacy format). Migrate to user+agent scoped tokens for proper user isolation.", {
278
+ key: agentKey,
279
+ agentDid: agentDid.slice(0, 20) + "...",
280
+ reason: "userDid unavailable",
281
+ });
282
+ console.log("[MCPICloudflareAgent] 🔍 PRIORITY 3: Checking agent-scoped key (legacy):", {
283
+ key: agentKey,
284
+ agentDid: agentDid.slice(0, 20) + "...",
285
+ });
286
+ delegationToken = await delegationStorage.get(agentKey, "text");
287
+ console.log("[MCPICloudflareAgent] 🔍 PRIORITY 3: Agent-scoped lookup result:", {
288
+ found: !!delegationToken,
289
+ tokenLength: delegationToken?.length || 0,
290
+ });
291
+ }
292
+ if (delegationToken) {
293
+ console.log("[MCPICloudflareAgent] ✅ Delegation token retrieved:", {
294
+ sessionId: sessionId.slice(0, 20) + "...",
295
+ tokenLength: delegationToken.length,
296
+ source: "kv-storage",
297
+ });
298
+ }
299
+ else {
300
+ console.log("[MCPICloudflareAgent] ⚠️ No delegation token found in KV storage:", {
301
+ sessionId: sessionId.slice(0, 20) + "...",
302
+ agentDid: agentDid.slice(0, 20) + "...",
303
+ });
304
+ }
305
+ }
306
+ catch (error) {
307
+ console.warn("[MCPICloudflareAgent] Failed to retrieve delegation token:", error);
308
+ }
309
+ }
139
310
  const session = {
140
311
  id: sessionId,
141
312
  audience: "https://kya.vouched.id",
@@ -143,11 +314,235 @@ export class MCPICloudflareAgent extends McpAgent {
143
314
  createdAt: timestamp,
144
315
  expiresAt: timestamp + 30 * 60 * 1000, // 30 minutes
145
316
  serverOrigin: serverUrl, // Use MCP_SERVER_URL for consent URL building
317
+ delegationToken, // ✅ Include token in session if found
318
+ };
319
+ // ✅ NEW: Build tool execution context with IDP token (Phase 1 - MH-7)
320
+ let toolContext;
321
+ try {
322
+ toolContext = await this.buildToolContext(toolName, userDid, sessionId, delegationToken, mappedEnv);
323
+ }
324
+ catch (error) {
325
+ // Handle OAuthRequiredError - build OAuth URL and throw DelegationRequiredError
326
+ if (error instanceof OAuthRequiredError) {
327
+ try {
328
+ const oauthUrl = await this.buildOAuthUrlForError(error, sessionId, mappedEnv);
329
+ // Generate resume token using runtime's internal method
330
+ // The runtime will generate it when DelegationRequiredError is thrown
331
+ const resumeToken = `resume_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
332
+ // Throw DelegationRequiredError with OAuth URL
333
+ throw new DelegationRequiredError(error.toolName, error.requiredScopes, oauthUrl, // Use OAuth URL as consent URL
334
+ undefined, // interceptedCall
335
+ resumeToken);
336
+ }
337
+ catch (oauthError) {
338
+ // If OAuth URL building fails, re-throw the original error
339
+ throw oauthError instanceof DelegationRequiredError
340
+ ? oauthError
341
+ : error;
342
+ }
343
+ }
344
+ // Log other errors but don't fail tool execution (backward compatibility)
345
+ console.warn("[MCPICloudflareAgent] Failed to build tool context:", error);
346
+ }
347
+ // Wrap handler to pass context as optional second parameter
348
+ // For backward compatibility, handlers can accept (args) or (args, context)
349
+ // If handler doesn't accept context, it will be ignored
350
+ const handlerWithContext = async (handlerArgs) => {
351
+ // Try to call handler with context if available
352
+ // TypeScript function types don't preserve length, so we try both signatures
353
+ try {
354
+ // Try calling with context (for handlers that accept it)
355
+ if (toolContext) {
356
+ return handler(handlerArgs, toolContext);
357
+ }
358
+ else {
359
+ return handler(handlerArgs);
360
+ }
361
+ }
362
+ catch (error) {
363
+ // If handler doesn't accept context parameter, fall back to args-only call
364
+ // This maintains backward compatibility
365
+ return handler(handlerArgs);
366
+ }
146
367
  };
147
368
  // Execute tool with automatic proof generation
148
- const result = await this.mcpiRuntime.processToolCall(toolName, args, handler, session);
369
+ const result = await this.mcpiRuntime.processToolCall(toolName, args, handlerWithContext, session);
149
370
  return result;
150
371
  }
372
+ /**
373
+ * Build tool execution context with IDP token (Phase 1 - MH-7)
374
+ *
375
+ * @private
376
+ */
377
+ async buildToolContext(toolName, userDid, sessionId, delegationToken, env) {
378
+ // Only build context if userDid is available and services are configured
379
+ if (!userDid || !env.AGENTSHIELD_API_KEY || !env.DELEGATION_STORAGE) {
380
+ return undefined;
381
+ }
382
+ // Check if tool protection service is available
383
+ const toolProtectionService = this.mcpiRuntime.config
384
+ ?.toolProtectionService;
385
+ if (!toolProtectionService) {
386
+ return undefined;
387
+ }
388
+ try {
389
+ // Get tool protection configuration
390
+ const agentDid = (await this.mcpiRuntime.getIdentity()).did;
391
+ const protection = await toolProtectionService.checkToolProtection(toolName, agentDid);
392
+ // Only build context if tool requires OAuth
393
+ if (!protection?.requiredScopes?.length) {
394
+ return undefined;
395
+ }
396
+ // Get project ID from tool protection service
397
+ const projectId = toolProtectionService.getProjectId();
398
+ if (!projectId) {
399
+ return undefined;
400
+ }
401
+ // Initialize OAuth services lazily
402
+ const fetchProvider = this.mcpiRuntime.fetch;
403
+ if (!fetchProvider) {
404
+ return undefined;
405
+ }
406
+ // Use KV cache for OAuth config if available, otherwise in-memory
407
+ const oauthConfigCache = env.TOOL_PROTECTION_KV
408
+ ? new KVOAuthConfigCache({ kv: env.TOOL_PROTECTION_KV })
409
+ : undefined;
410
+ const oauthConfigService = new OAuthConfigService({
411
+ baseUrl: env.AGENTSHIELD_API_URL || "https://kya.vouched.id",
412
+ apiKey: env.AGENTSHIELD_API_KEY,
413
+ fetchProvider,
414
+ cache: oauthConfigCache,
415
+ });
416
+ // Phase 2: Initialize provider registry and resolver
417
+ const { OAuthProviderRegistry, ProviderResolver } = await import("@kya-os/mcp-i-core");
418
+ const providerRegistry = new OAuthProviderRegistry(oauthConfigService);
419
+ const providerResolver = new ProviderResolver(providerRegistry, oauthConfigService);
420
+ const oauthService = new OAuthService({
421
+ configService: oauthConfigService,
422
+ fetchProvider,
423
+ agentShieldApiUrl: env.AGENTSHIELD_API_URL || "https://kya.vouched.id",
424
+ agentShieldApiKey: env.AGENTSHIELD_API_KEY,
425
+ projectId,
426
+ });
427
+ const oauthSecurityService = new OAuthSecurityService(env.DELEGATION_STORAGE, env.OAUTH_ENCRYPTION_SECRET);
428
+ const idpTokenStorage = new IdpTokenStorage({
429
+ storage: env.DELEGATION_STORAGE,
430
+ oauthSecurityService,
431
+ });
432
+ const tokenResolver = new IdpTokenResolver({
433
+ tokenStorage: idpTokenStorage,
434
+ oauthService,
435
+ });
436
+ const contextBuilder = new ToolContextBuilder({
437
+ tokenResolver,
438
+ configService: oauthConfigService,
439
+ providerResolver: providerResolver, // Phase 2: Pass ProviderResolver (type assertion for dist/src compatibility)
440
+ projectId,
441
+ });
442
+ // Build context
443
+ return await contextBuilder.buildContext(toolName, userDid, sessionId, delegationToken, protection);
444
+ }
445
+ catch (error) {
446
+ // Re-throw OAuthRequiredError so it can be handled by executeToolWithProof
447
+ if (error instanceof OAuthRequiredError) {
448
+ throw error;
449
+ }
450
+ console.warn("[MCPICloudflareAgent] Failed to build tool context:", error);
451
+ return undefined;
452
+ }
453
+ }
454
+ /**
455
+ * Build OAuth URL for OAuthRequiredError
456
+ *
457
+ * Creates OAuth authorization URL with PKCE challenge for secure token exchange.
458
+ *
459
+ * @private
460
+ */
461
+ async buildOAuthUrlForError(error, sessionId, env) {
462
+ const agentShieldUrl = env.AGENTSHIELD_API_URL || "https://kya.vouched.id";
463
+ const toolProtectionService = this.mcpiRuntime.config
464
+ ?.toolProtectionService;
465
+ const projectId = toolProtectionService?.getProjectId();
466
+ if (!projectId) {
467
+ throw new Error("Project ID not available for OAuth URL building");
468
+ }
469
+ // Get server URL
470
+ let serverUrl = env.MCP_SERVER_URL;
471
+ if (serverUrl &&
472
+ !serverUrl.startsWith("http://") &&
473
+ !serverUrl.startsWith("https://")) {
474
+ serverUrl = `https://${serverUrl}`;
475
+ }
476
+ if (!serverUrl) {
477
+ throw new Error("MCP_SERVER_URL not configured for OAuth callback");
478
+ }
479
+ // TypeScript: projectId is guaranteed to be defined after the check above
480
+ // Use non-null assertion since we've already validated it
481
+ const safeProjectId = projectId;
482
+ const agentDid = (await this.mcpiRuntime.getIdentity()).did;
483
+ // Generate PKCE challenge if OAuthSecurityService is available
484
+ let codeChallenge;
485
+ let stateParam;
486
+ if (env.DELEGATION_STORAGE && env.OAUTH_ENCRYPTION_SECRET) {
487
+ try {
488
+ const oauthSecurityService = new OAuthSecurityService(env.DELEGATION_STORAGE, env.OAUTH_ENCRYPTION_SECRET);
489
+ const pkceChallenge = await oauthSecurityService.generatePKCEChallenge();
490
+ codeChallenge = pkceChallenge.challenge;
491
+ // Build state data
492
+ const stateData = {
493
+ project_id: safeProjectId,
494
+ agent_did: agentDid,
495
+ session_id: sessionId || "",
496
+ scopes: error.requiredScopes,
497
+ storedAt: Date.now(),
498
+ code_verifier: pkceChallenge.verifier,
499
+ code_challenge: pkceChallenge.challenge,
500
+ redirect_uri: `${serverUrl}/oauth/callback`,
501
+ };
502
+ // Store state securely
503
+ const randomBytes = crypto.getRandomValues(new Uint8Array(32));
504
+ const stateValue = btoa(String.fromCharCode(...randomBytes))
505
+ .replace(/\+/g, "-")
506
+ .replace(/\//g, "_")
507
+ .replace(/=/g, "");
508
+ await oauthSecurityService.storeOAuthState(stateValue, stateData, 600);
509
+ stateParam = stateValue;
510
+ }
511
+ catch (err) {
512
+ console.warn("[MCPICloudflareAgent] Failed to generate PKCE challenge, using insecure state:", err);
513
+ // Fallback to insecure state encoding
514
+ const stateData = {
515
+ project_id: safeProjectId,
516
+ agent_did: agentDid,
517
+ session_id: sessionId || "",
518
+ scopes: error.requiredScopes,
519
+ };
520
+ stateParam = btoa(JSON.stringify(stateData));
521
+ }
522
+ }
523
+ else {
524
+ // Fallback to insecure state encoding
525
+ const stateData = {
526
+ project_id: safeProjectId,
527
+ agent_did: agentDid,
528
+ session_id: sessionId || "",
529
+ scopes: error.requiredScopes,
530
+ };
531
+ stateParam = btoa(JSON.stringify(stateData));
532
+ }
533
+ // Build OAuth authorization URL
534
+ const oauthUrl = new URL(`${agentShieldUrl}/bouncer/oauth/authorize`);
535
+ oauthUrl.searchParams.set("response_type", "code");
536
+ oauthUrl.searchParams.set("client_id", safeProjectId);
537
+ oauthUrl.searchParams.set("redirect_uri", `${serverUrl}/oauth/callback`);
538
+ oauthUrl.searchParams.set("scope", error.requiredScopes.join(" "));
539
+ oauthUrl.searchParams.set("state", stateParam);
540
+ if (codeChallenge) {
541
+ oauthUrl.searchParams.set("code_challenge", codeChallenge);
542
+ oauthUrl.searchParams.set("code_challenge_method", "S256");
543
+ }
544
+ return oauthUrl.toString();
545
+ }
151
546
  /**
152
547
  * Get Durable Object instance ID based on routing strategy
153
548
  */
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/dist/app.d.ts CHANGED
@@ -22,14 +22,6 @@ export interface CreateMCPIAppOptions {
22
22
  * MCP Agent class (extends MCPICloudflareAgent)
23
23
  */
24
24
  AgentClass: typeof MCPICloudflareAgent;
25
- /**
26
- * Agent name (used in MCP server metadata)
27
- */
28
- agentName: string;
29
- /**
30
- * Agent version (used in MCP server metadata)
31
- */
32
- agentVersion?: string;
33
25
  }
34
26
  /**
35
27
  * Create a Hono app with all MCP-I routes configured
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAIxD,OAAO,EAAE,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAG1E,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,gBAAgB,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,uBAAuB,CAAC;IAElE;;OAEG;IACH,UAAU,EAAE,OAAO,mBAAmB,CAAC;IAEvC;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB;;qBA2IhC,cAAc,OAAO,qBAAqB,OAAO,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;EAK3G"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAIxD,OAAO,EAAE,mBAAmB,EAAE,KAAK,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAG1E,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,gBAAgB,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,uBAAuB,CAAC;IAElE;;OAEG;IACH,UAAU,EAAE,OAAO,mBAAmB,CAAC;CACxC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,oBAAoB;;qBAsS9C,cAAc,OAChB,qBAAqB,OACrB,gBAAgB,GACpB,OAAO,CAAC,IAAI,CAAC;EAKnB"}