agents 0.2.21 → 0.2.22

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.
@@ -1,4 +1,4 @@
1
- import "./client-BEMdXPYJ.js";
1
+ import "./client-GfgZTqrS.js";
2
2
  import "./mcp-Dw5vDrY8.js";
3
3
  import "./do-oauth-client-provider-DGc5pP0l.js";
4
4
  import "./index-DhJCaDWd.js";
@@ -8,7 +8,7 @@ import {
8
8
  s as Connection,
9
9
  t as Agent,
10
10
  x as WSMessage
11
- } from "./index-BXG3v10y.js";
11
+ } from "./index-BQLBXqnQ.js";
12
12
  import { StreamTextOnFinishCallback, ToolSet, UIMessage } from "ai";
13
13
 
14
14
  //#region src/ai-chat-agent.d.ts
@@ -1,8 +1,8 @@
1
1
  import { t as MessageType } from "./ai-types-B3aQaFv3.js";
2
2
  import "./client-BfiZ3HQd.js";
3
- import "./client-JMskg2fw.js";
3
+ import "./client-DZhjV_XA.js";
4
4
  import "./do-oauth-client-provider-CswoD5Lu.js";
5
- import { t as Agent } from "./src-nFNV3Ttx.js";
5
+ import { t as Agent } from "./src-CwIW7tU2.js";
6
6
  import { r as autoTransformMessages } from "./ai-chat-v5-migration-DBHGW4Hv.js";
7
7
 
8
8
  //#region src/ai-chat-agent.ts
@@ -1,12 +1,12 @@
1
- import "./client-BEMdXPYJ.js";
1
+ import "./client-GfgZTqrS.js";
2
2
  import "./mcp-Dw5vDrY8.js";
3
3
  import "./do-oauth-client-provider-DGc5pP0l.js";
4
4
  import "./index-DhJCaDWd.js";
5
5
  import "./ai-types-D5YoPrBZ.js";
6
- import "./index-BXG3v10y.js";
6
+ import "./index-BQLBXqnQ.js";
7
7
  import "./serializable-CymX8ovI.js";
8
8
  import "./client-CbWe9FBd.js";
9
- import { n as useAgent } from "./react-k5kPzKcj.js";
9
+ import { n as useAgent } from "./react-Bu7EB5xh.js";
10
10
  import { UseChatOptions, useChat } from "@ai-sdk/react";
11
11
  import { ChatInit, UIMessage } from "ai";
12
12
 
@@ -1,8 +1,8 @@
1
1
  import { nanoid } from "nanoid";
2
2
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
3
- import { ElicitRequestSchema, PromptListChangedNotificationSchema, ResourceListChangedNotificationSchema, ToolListChangedNotificationSchema } from "@modelcontextprotocol/sdk/types.js";
4
3
  import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
5
4
  import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
5
+ import { ElicitRequestSchema, PromptListChangedNotificationSchema, ResourceListChangedNotificationSchema, ToolListChangedNotificationSchema } from "@modelcontextprotocol/sdk/types.js";
6
6
 
7
7
  //#region src/core/events.ts
8
8
  function toDisposable(fn) {
@@ -56,80 +56,6 @@ function isTransportNotImplemented(error) {
56
56
  return msg.includes("404") || msg.includes("405") || msg.includes("Not Implemented") || msg.includes("not implemented");
57
57
  }
58
58
 
59
- //#endregion
60
- //#region src/mcp/sse-edge.ts
61
- var SSEEdgeClientTransport = class extends SSEClientTransport {
62
- /**
63
- * Creates a new EdgeSSEClientTransport, which overrides fetch to be compatible with the CF workers environment
64
- */
65
- constructor(url, options) {
66
- const fetchOverride = async (fetchUrl, fetchInit = {}) => {
67
- const headers = await this.authHeaders();
68
- const workerOptions = {
69
- ...fetchInit,
70
- headers: {
71
- ...options.requestInit?.headers,
72
- ...fetchInit?.headers,
73
- ...headers
74
- }
75
- };
76
- delete workerOptions.mode;
77
- return options.eventSourceInit?.fetch?.(fetchUrl, workerOptions) || fetch(fetchUrl, workerOptions);
78
- };
79
- super(url, {
80
- ...options,
81
- eventSourceInit: {
82
- ...options.eventSourceInit,
83
- fetch: fetchOverride
84
- }
85
- });
86
- this.authProvider = options.authProvider;
87
- }
88
- async authHeaders() {
89
- if (this.authProvider) {
90
- const tokens = await this.authProvider.tokens();
91
- if (tokens) return { Authorization: `Bearer ${tokens.access_token}` };
92
- }
93
- }
94
- };
95
-
96
- //#endregion
97
- //#region src/mcp/streamable-http-edge.ts
98
- var StreamableHTTPEdgeClientTransport = class extends StreamableHTTPClientTransport {
99
- /**
100
- * Creates a new StreamableHTTPEdgeClientTransport, which overrides fetch to be compatible with the CF workers environment
101
- */
102
- constructor(url, options) {
103
- const fetchOverride = async (fetchUrl, fetchInit = {}) => {
104
- const headers = await this.authHeaders();
105
- const workerOptions = {
106
- ...fetchInit,
107
- headers: {
108
- ...options.requestInit?.headers,
109
- ...fetchInit?.headers,
110
- ...headers
111
- }
112
- };
113
- delete workerOptions.mode;
114
- return options.requestInit?.fetch?.(fetchUrl, workerOptions) || fetch(fetchUrl, workerOptions);
115
- };
116
- super(url, {
117
- ...options,
118
- requestInit: {
119
- ...options.requestInit,
120
- fetch: fetchOverride
121
- }
122
- });
123
- this.authProvider = options.authProvider;
124
- }
125
- async authHeaders() {
126
- if (this.authProvider) {
127
- const tokens = await this.authProvider.tokens();
128
- if (tokens) return { Authorization: `Bearer ${tokens.access_token}` };
129
- }
130
- }
131
- };
132
-
133
59
  //#endregion
134
60
  //#region src/mcp/client-connection.ts
135
61
  var MCPClientConnection = class {
@@ -375,8 +301,8 @@ var MCPClientConnection = class {
375
301
  */
376
302
  getTransport(transportType) {
377
303
  switch (transportType) {
378
- case "streamable-http": return new StreamableHTTPEdgeClientTransport(this.url, this.options.transport);
379
- case "sse": return new SSEEdgeClientTransport(this.url, this.options.transport);
304
+ case "streamable-http": return new StreamableHTTPClientTransport(this.url, this.options.transport);
305
+ case "sse": return new SSEClientTransport(this.url, this.options.transport);
380
306
  default: throw new Error(`Unsupported transport type: ${transportType}`);
381
307
  }
382
308
  }
@@ -789,5 +715,5 @@ function getNamespacedData(mcpClients, type) {
789
715
  }
790
716
 
791
717
  //#endregion
792
- export { SSEEdgeClientTransport as a, StreamableHTTPEdgeClientTransport as i, getNamespacedData as n, DisposableStore as o, MCPClientConnection as r, MCPClientManager as t };
793
- //# sourceMappingURL=client-JMskg2fw.js.map
718
+ export { DisposableStore as i, getNamespacedData as n, MCPClientConnection as r, MCPClientManager as t };
719
+ //# sourceMappingURL=client-DZhjV_XA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-DZhjV_XA.js","names":["url: URL","options: {\n transport: MCPTransportOptions;\n client: ConstructorParameters<typeof Client>[1];\n }","toolsAgg: Tool[]","toolsResult: ListToolsResult","resourcesAgg: Resource[]","resourcesResult: ListResourcesResult","promptsAgg: Prompt[]","promptsResult: ListPromptsResult","templatesAgg: ResourceTemplate[]","templatesResult: ListResourceTemplatesResult","transports: BaseTransportType[]","_name: string","_version: string","url","error"],"sources":["../src/core/events.ts","../src/mcp/errors.ts","../src/mcp/client-connection.ts","../src/mcp/client.ts"],"sourcesContent":["export interface Disposable {\n dispose(): void;\n}\n\nexport function toDisposable(fn: () => void): Disposable {\n return { dispose: fn };\n}\n\nexport class DisposableStore implements Disposable {\n private readonly _items: Disposable[] = [];\n\n add<T extends Disposable>(d: T): T {\n this._items.push(d);\n return d;\n }\n\n dispose(): void {\n while (this._items.length) {\n try {\n this._items.pop()!.dispose();\n } catch {\n // best-effort cleanup\n }\n }\n }\n}\n\nexport type Event<T> = (listener: (e: T) => void) => Disposable;\n\nexport class Emitter<T> implements Disposable {\n private _listeners: Set<(e: T) => void> = new Set();\n\n readonly event: Event<T> = (listener) => {\n this._listeners.add(listener);\n return toDisposable(() => this._listeners.delete(listener));\n };\n\n fire(data: T): void {\n for (const listener of [...this._listeners]) {\n try {\n listener(data);\n } catch (err) {\n // do not let one bad listener break others\n console.error(\"Emitter listener error:\", err);\n }\n }\n }\n\n dispose(): void {\n this._listeners.clear();\n }\n}\n","export function toErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nexport function isUnauthorized(error: unknown): boolean {\n const msg = toErrorMessage(error);\n return msg.includes(\"Unauthorized\") || msg.includes(\"401\");\n}\n\nexport function isTransportNotImplemented(error: unknown): boolean {\n const msg = toErrorMessage(error);\n // Treat common \"not implemented\" surfaces as transport not supported\n return (\n msg.includes(\"404\") ||\n msg.includes(\"405\") ||\n msg.includes(\"Not Implemented\") ||\n msg.includes(\"not implemented\")\n );\n}\n","import { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport {\n SSEClientTransport,\n type SSEClientTransportOptions\n} from \"@modelcontextprotocol/sdk/client/sse.js\";\nimport {\n StreamableHTTPClientTransport,\n type StreamableHTTPClientTransportOptions\n} from \"@modelcontextprotocol/sdk/client/streamableHttp.js\";\n// Import types directly from MCP SDK\nimport type {\n Prompt,\n Resource,\n Tool\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport {\n type ClientCapabilities,\n type ElicitRequest,\n ElicitRequestSchema,\n type ElicitResult,\n type ListPromptsResult,\n type ListResourceTemplatesResult,\n type ListResourcesResult,\n type ListToolsResult,\n PromptListChangedNotificationSchema,\n ResourceListChangedNotificationSchema,\n type ResourceTemplate,\n type ServerCapabilities,\n ToolListChangedNotificationSchema\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { nanoid } from \"nanoid\";\nimport { Emitter, type Event } from \"../core/events\";\nimport type { MCPObservabilityEvent } from \"../observability/mcp\";\nimport type { AgentsOAuthProvider } from \"./do-oauth-client-provider\";\nimport {\n isTransportNotImplemented,\n isUnauthorized,\n toErrorMessage\n} from \"./errors\";\nimport type { BaseTransportType, TransportType } from \"./types\";\n\n/**\n * Connection state for MCP client connections\n */\nexport type MCPConnectionState =\n | \"authenticating\"\n | \"connecting\"\n | \"ready\"\n | \"discovering\"\n | \"failed\";\n\nexport type MCPTransportOptions = (\n | SSEClientTransportOptions\n | StreamableHTTPClientTransportOptions\n) & {\n authProvider?: AgentsOAuthProvider;\n type?: TransportType;\n};\n\nexport class MCPClientConnection {\n client: Client;\n connectionState: MCPConnectionState = \"connecting\";\n lastConnectedTransport: BaseTransportType | undefined;\n instructions?: string;\n tools: Tool[] = [];\n prompts: Prompt[] = [];\n resources: Resource[] = [];\n resourceTemplates: ResourceTemplate[] = [];\n serverCapabilities: ServerCapabilities | undefined;\n\n private readonly _onObservabilityEvent = new Emitter<MCPObservabilityEvent>();\n public readonly onObservabilityEvent: Event<MCPObservabilityEvent> =\n this._onObservabilityEvent.event;\n\n constructor(\n public url: URL,\n info: ConstructorParameters<typeof Client>[0],\n public options: {\n transport: MCPTransportOptions;\n client: ConstructorParameters<typeof Client>[1];\n } = { client: {}, transport: {} }\n ) {\n const clientOptions = {\n ...options.client,\n capabilities: {\n ...options.client?.capabilities,\n elicitation: {}\n } as ClientCapabilities\n };\n\n this.client = new Client(info, clientOptions);\n }\n\n /**\n * Initialize a client connection\n *\n * @returns\n */\n async init() {\n const transportType = this.options.transport.type;\n if (!transportType) {\n throw new Error(\"Transport type must be specified\");\n }\n\n try {\n await this.tryConnect(transportType);\n } catch (e) {\n if (isUnauthorized(e)) {\n // unauthorized, we should wait for the user to authenticate\n this.connectionState = \"authenticating\";\n return;\n }\n // For explicit transport mismatches or other errors, mark as failed\n // and do not throw to avoid bubbling errors to the client runtime.\n this._onObservabilityEvent.fire({\n type: \"mcp:client:connect\",\n displayMessage: `Connection initialization failed for ${this.url.toString()}`,\n payload: {\n url: this.url.toString(),\n transport: transportType,\n state: this.connectionState,\n error: toErrorMessage(e)\n },\n timestamp: Date.now(),\n id: nanoid()\n });\n this.connectionState = \"failed\";\n return;\n }\n\n await this.discoverAndRegister();\n }\n\n /**\n * Finish OAuth by probing transports based on configured type.\n * - Explicit: finish on that transport\n * - Auto: try streamable-http, then sse on 404/405/Not Implemented\n */\n private async finishAuthProbe(code: string): Promise<void> {\n if (!this.options.transport.authProvider) {\n throw new Error(\"No auth provider configured\");\n }\n\n const configuredType = this.options.transport.type;\n if (!configuredType) {\n throw new Error(\"Transport type must be specified\");\n }\n\n const finishAuth = async (base: BaseTransportType) => {\n const transport = this.getTransport(base);\n await transport.finishAuth(code);\n };\n\n if (configuredType === \"sse\" || configuredType === \"streamable-http\") {\n await finishAuth(configuredType);\n return;\n }\n\n // For \"auto\" mode, try streamable-http first, then fall back to SSE\n try {\n await finishAuth(\"streamable-http\");\n } catch (e) {\n if (isTransportNotImplemented(e)) {\n await finishAuth(\"sse\");\n return;\n }\n throw e;\n }\n }\n\n /**\n * Complete OAuth authorization\n */\n async completeAuthorization(code: string): Promise<void> {\n if (this.connectionState !== \"authenticating\") {\n throw new Error(\n \"Connection must be in authenticating state to complete authorization\"\n );\n }\n\n try {\n // Finish OAuth by probing transports per configuration\n await this.finishAuthProbe(code);\n\n // Mark as connecting\n this.connectionState = \"connecting\";\n } catch (error) {\n this.connectionState = \"failed\";\n throw error;\n }\n }\n\n /**\n * Establish connection after successful authorization\n */\n async establishConnection(): Promise<void> {\n if (this.connectionState !== \"connecting\") {\n throw new Error(\n \"Connection must be in connecting state to establish connection\"\n );\n }\n\n try {\n const transportType = this.options.transport.type;\n if (!transportType) {\n throw new Error(\"Transport type must be specified\");\n }\n await this.tryConnect(transportType);\n\n await this.discoverAndRegister();\n } catch (error) {\n this.connectionState = \"failed\";\n throw error;\n }\n }\n\n /**\n * Discover server capabilities and register tools, resources, prompts, and templates\n */\n private async discoverAndRegister(): Promise<void> {\n this.connectionState = \"discovering\";\n\n this.serverCapabilities = this.client.getServerCapabilities();\n if (!this.serverCapabilities) {\n throw new Error(\"The MCP Server failed to return server capabilities\");\n }\n\n const [\n instructionsResult,\n toolsResult,\n resourcesResult,\n promptsResult,\n resourceTemplatesResult\n ] = await Promise.allSettled([\n this.client.getInstructions(),\n this.registerTools(),\n this.registerResources(),\n this.registerPrompts(),\n this.registerResourceTemplates()\n ]);\n\n const operations = [\n { name: \"instructions\", result: instructionsResult },\n { name: \"tools\", result: toolsResult },\n { name: \"resources\", result: resourcesResult },\n { name: \"prompts\", result: promptsResult },\n { name: \"resource templates\", result: resourceTemplatesResult }\n ];\n\n for (const { name, result } of operations) {\n if (result.status === \"rejected\") {\n const url = this.url.toString();\n this._onObservabilityEvent.fire({\n type: \"mcp:client:discover\",\n displayMessage: `Failed to discover ${name} for ${url}`,\n payload: {\n url,\n capability: name,\n error: result.reason\n },\n timestamp: Date.now(),\n id: nanoid()\n });\n }\n }\n\n this.instructions =\n instructionsResult.status === \"fulfilled\"\n ? instructionsResult.value\n : undefined;\n this.tools = toolsResult.status === \"fulfilled\" ? toolsResult.value : [];\n this.resources =\n resourcesResult.status === \"fulfilled\" ? resourcesResult.value : [];\n this.prompts =\n promptsResult.status === \"fulfilled\" ? promptsResult.value : [];\n this.resourceTemplates =\n resourceTemplatesResult.status === \"fulfilled\"\n ? resourceTemplatesResult.value\n : [];\n\n this.connectionState = \"ready\";\n }\n\n /**\n * Notification handler registration\n */\n async registerTools(): Promise<Tool[]> {\n if (!this.serverCapabilities || !this.serverCapabilities.tools) {\n return [];\n }\n\n if (this.serverCapabilities.tools.listChanged) {\n this.client.setNotificationHandler(\n ToolListChangedNotificationSchema,\n async (_notification) => {\n this.tools = await this.fetchTools();\n }\n );\n }\n\n return this.fetchTools();\n }\n\n async registerResources(): Promise<Resource[]> {\n if (!this.serverCapabilities || !this.serverCapabilities.resources) {\n return [];\n }\n\n if (this.serverCapabilities.resources.listChanged) {\n this.client.setNotificationHandler(\n ResourceListChangedNotificationSchema,\n async (_notification) => {\n this.resources = await this.fetchResources();\n }\n );\n }\n\n return this.fetchResources();\n }\n\n async registerPrompts(): Promise<Prompt[]> {\n if (!this.serverCapabilities || !this.serverCapabilities.prompts) {\n return [];\n }\n\n if (this.serverCapabilities.prompts.listChanged) {\n this.client.setNotificationHandler(\n PromptListChangedNotificationSchema,\n async (_notification) => {\n this.prompts = await this.fetchPrompts();\n }\n );\n }\n\n return this.fetchPrompts();\n }\n\n async registerResourceTemplates(): Promise<ResourceTemplate[]> {\n if (!this.serverCapabilities || !this.serverCapabilities.resources) {\n return [];\n }\n\n return this.fetchResourceTemplates();\n }\n\n async fetchTools() {\n let toolsAgg: Tool[] = [];\n let toolsResult: ListToolsResult = { tools: [] };\n do {\n toolsResult = await this.client\n .listTools({\n cursor: toolsResult.nextCursor\n })\n .catch(this._capabilityErrorHandler({ tools: [] }, \"tools/list\"));\n toolsAgg = toolsAgg.concat(toolsResult.tools);\n } while (toolsResult.nextCursor);\n return toolsAgg;\n }\n\n async fetchResources() {\n let resourcesAgg: Resource[] = [];\n let resourcesResult: ListResourcesResult = { resources: [] };\n do {\n resourcesResult = await this.client\n .listResources({\n cursor: resourcesResult.nextCursor\n })\n .catch(\n this._capabilityErrorHandler({ resources: [] }, \"resources/list\")\n );\n resourcesAgg = resourcesAgg.concat(resourcesResult.resources);\n } while (resourcesResult.nextCursor);\n return resourcesAgg;\n }\n\n async fetchPrompts() {\n let promptsAgg: Prompt[] = [];\n let promptsResult: ListPromptsResult = { prompts: [] };\n do {\n promptsResult = await this.client\n .listPrompts({\n cursor: promptsResult.nextCursor\n })\n .catch(this._capabilityErrorHandler({ prompts: [] }, \"prompts/list\"));\n promptsAgg = promptsAgg.concat(promptsResult.prompts);\n } while (promptsResult.nextCursor);\n return promptsAgg;\n }\n\n async fetchResourceTemplates() {\n let templatesAgg: ResourceTemplate[] = [];\n let templatesResult: ListResourceTemplatesResult = {\n resourceTemplates: []\n };\n do {\n templatesResult = await this.client\n .listResourceTemplates({\n cursor: templatesResult.nextCursor\n })\n .catch(\n this._capabilityErrorHandler(\n { resourceTemplates: [] },\n \"resources/templates/list\"\n )\n );\n templatesAgg = templatesAgg.concat(templatesResult.resourceTemplates);\n } while (templatesResult.nextCursor);\n return templatesAgg;\n }\n\n /**\n * Handle elicitation request from server\n * Automatically uses the Agent's built-in elicitation handling if available\n */\n async handleElicitationRequest(\n _request: ElicitRequest\n ): Promise<ElicitResult> {\n // Elicitation handling must be implemented by the platform\n // For MCP servers, this should be handled by McpAgent.elicitInput()\n throw new Error(\n \"Elicitation handler must be implemented for your platform. Override handleElicitationRequest method.\"\n );\n }\n /**\n * Get the transport for the client\n * @param transportType - The transport type to get\n * @returns The transport for the client\n */\n getTransport(transportType: BaseTransportType) {\n switch (transportType) {\n case \"streamable-http\":\n return new StreamableHTTPClientTransport(\n this.url,\n this.options.transport as StreamableHTTPClientTransportOptions\n );\n case \"sse\":\n return new SSEClientTransport(\n this.url,\n this.options.transport as SSEClientTransportOptions\n );\n default:\n throw new Error(`Unsupported transport type: ${transportType}`);\n }\n }\n\n private async tryConnect(transportType: TransportType) {\n const transports: BaseTransportType[] =\n transportType === \"auto\" ? [\"streamable-http\", \"sse\"] : [transportType];\n\n for (const currentTransportType of transports) {\n const isLastTransport =\n currentTransportType === transports[transports.length - 1];\n const hasFallback =\n transportType === \"auto\" &&\n currentTransportType === \"streamable-http\" &&\n !isLastTransport;\n\n const transport = this.getTransport(currentTransportType);\n\n try {\n await this.client.connect(transport);\n this.lastConnectedTransport = currentTransportType;\n const url = this.url.toString();\n this._onObservabilityEvent.fire({\n type: \"mcp:client:connect\",\n displayMessage: `Connected successfully using ${currentTransportType} transport for ${url}`,\n payload: {\n url,\n transport: currentTransportType,\n state: this.connectionState\n },\n timestamp: Date.now(),\n id: nanoid()\n });\n break;\n } catch (e) {\n const error = e instanceof Error ? e : new Error(String(e));\n\n // If unauthorized, bubble up for proper auth handling\n if (isUnauthorized(error)) {\n throw e;\n }\n\n if (hasFallback && isTransportNotImplemented(error)) {\n // Try the next transport silently\n const url = this.url.toString();\n this._onObservabilityEvent.fire({\n type: \"mcp:client:connect\",\n displayMessage: `${currentTransportType} transport not available, trying ${transports[transports.indexOf(currentTransportType) + 1]} for ${url}`,\n payload: {\n url,\n transport: currentTransportType,\n state: this.connectionState\n },\n timestamp: Date.now(),\n id: nanoid()\n });\n continue;\n }\n\n throw e;\n }\n }\n\n // Set up elicitation request handler\n this.client.setRequestHandler(\n ElicitRequestSchema,\n async (request: ElicitRequest) => {\n return await this.handleElicitationRequest(request);\n }\n );\n }\n\n private _capabilityErrorHandler<T>(empty: T, method: string) {\n return (e: { code: number }) => {\n // server is badly behaved and returning invalid capabilities. This commonly occurs for resource templates\n if (e.code === -32601) {\n const url = this.url.toString();\n this._onObservabilityEvent.fire({\n type: \"mcp:client:discover\",\n displayMessage: `The server advertised support for the capability ${method.split(\"/\")[0]}, but returned \"Method not found\" for '${method}' for ${url}`,\n payload: {\n url,\n capability: method.split(\"/\")[0],\n error: toErrorMessage(e)\n },\n timestamp: Date.now(),\n id: nanoid()\n });\n return empty;\n }\n throw e;\n };\n }\n}\n","import type { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport type { RequestOptions } from \"@modelcontextprotocol/sdk/shared/protocol.js\";\nimport type {\n CallToolRequest,\n CallToolResultSchema,\n CompatibilityCallToolResultSchema,\n GetPromptRequest,\n Prompt,\n ReadResourceRequest,\n Resource,\n ResourceTemplate,\n Tool\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport type { ToolSet } from \"ai\";\nimport type { JSONSchema7 } from \"json-schema\";\nimport { nanoid } from \"nanoid\";\nimport { Emitter, type Event, DisposableStore } from \"../core/events\";\nimport type { MCPObservabilityEvent } from \"../observability/mcp\";\nimport {\n MCPClientConnection,\n type MCPTransportOptions\n} from \"./client-connection\";\nimport { toErrorMessage } from \"./errors\";\nimport type { TransportType } from \"./types\";\n\nexport type MCPClientOAuthCallbackConfig = {\n successRedirect?: string;\n errorRedirect?: string;\n customHandler?: (result: MCPClientOAuthResult) => Response;\n};\n\nexport type MCPClientOAuthResult = {\n serverId: string;\n authSuccess: boolean;\n authError?: string;\n};\n\n/**\n * Utility class that aggregates multiple MCP clients into one\n */\nexport class MCPClientManager {\n public mcpConnections: Record<string, MCPClientConnection> = {};\n private _callbackUrls: string[] = [];\n private _didWarnAboutUnstableGetAITools = false;\n private _oauthCallbackConfig?: MCPClientOAuthCallbackConfig;\n private _connectionDisposables = new Map<string, DisposableStore>();\n\n private readonly _onObservabilityEvent = new Emitter<MCPObservabilityEvent>();\n public readonly onObservabilityEvent: Event<MCPObservabilityEvent> =\n this._onObservabilityEvent.event;\n\n private readonly _onConnected = new Emitter<string>();\n public readonly onConnected: Event<string> = this._onConnected.event;\n\n /**\n * @param _name Name of the MCP client\n * @param _version Version of the MCP Client\n * @param auth Auth paramters if being used to create a DurableObjectOAuthClientProvider\n */\n constructor(\n private _name: string,\n private _version: string\n ) {}\n\n jsonSchema: typeof import(\"ai\").jsonSchema | undefined;\n\n /**\n * Connect to and register an MCP server\n *\n * @param transportConfig Transport config\n * @param clientConfig Client config\n * @param capabilities Client capabilities (i.e. if the client supports roots/sampling)\n */\n async connect(\n url: string,\n options: {\n // Allows you to reconnect to a server (in the case of an auth reconnect)\n reconnect?: {\n // server id\n id: string;\n oauthClientId?: string;\n oauthCode?: string;\n };\n // we're overriding authProvider here because we want to be able to access the auth URL\n transport?: MCPTransportOptions;\n client?: ConstructorParameters<typeof Client>[1];\n } = {}\n ): Promise<{\n id: string;\n authUrl?: string;\n clientId?: string;\n }> {\n /* Late initialization of jsonSchemaFn */\n /**\n * We need to delay loading ai sdk, because putting it in module scope is\n * causing issues with startup time.\n * The only place it's used is in getAITools, which only matters after\n * .connect() is called on at least one server.\n * So it's safe to delay loading it until .connect() is called.\n */\n if (!this.jsonSchema) {\n const { jsonSchema } = await import(\"ai\");\n this.jsonSchema = jsonSchema;\n }\n\n const id = options.reconnect?.id ?? nanoid(8);\n\n if (options.transport?.authProvider) {\n options.transport.authProvider.serverId = id;\n // reconnect with auth\n if (options.reconnect?.oauthClientId) {\n options.transport.authProvider.clientId =\n options.reconnect?.oauthClientId;\n }\n }\n\n // During OAuth reconnect, reuse existing connection to preserve state\n if (!options.reconnect?.oauthCode || !this.mcpConnections[id]) {\n const normalizedTransport = {\n ...options.transport,\n type: options.transport?.type ?? (\"auto\" as TransportType)\n };\n\n this.mcpConnections[id] = new MCPClientConnection(\n new URL(url),\n {\n name: this._name,\n version: this._version\n },\n {\n client: options.client ?? {},\n transport: normalizedTransport\n }\n );\n\n // Pipe connection-level observability events to the manager-level emitter\n // and track the subscription for cleanup.\n const store = new DisposableStore();\n // If we somehow already had disposables for this id, clear them first\n const existing = this._connectionDisposables.get(id);\n if (existing) existing.dispose();\n this._connectionDisposables.set(id, store);\n store.add(\n this.mcpConnections[id].onObservabilityEvent((event) => {\n this._onObservabilityEvent.fire(event);\n })\n );\n }\n\n // Initialize connection first\n await this.mcpConnections[id].init();\n\n // Handle OAuth completion if we have a reconnect code\n if (options.reconnect?.oauthCode) {\n try {\n await this.mcpConnections[id].completeAuthorization(\n options.reconnect.oauthCode\n );\n await this.mcpConnections[id].establishConnection();\n } catch (error) {\n this._onObservabilityEvent.fire({\n type: \"mcp:client:connect\",\n displayMessage: `Failed to complete OAuth reconnection for ${id} for ${url}`,\n payload: {\n url: url,\n transport: options.transport?.type ?? \"auto\",\n state: this.mcpConnections[id].connectionState,\n error: toErrorMessage(error)\n },\n timestamp: Date.now(),\n id\n });\n // Re-throw to signal failure to the caller\n throw error;\n }\n }\n\n // If connection is in authenticating state, return auth URL for OAuth flow\n const authUrl = options.transport?.authProvider?.authUrl;\n if (\n this.mcpConnections[id].connectionState === \"authenticating\" &&\n authUrl &&\n options.transport?.authProvider?.redirectUrl\n ) {\n this._callbackUrls.push(\n options.transport.authProvider.redirectUrl.toString()\n );\n return {\n authUrl,\n clientId: options.transport?.authProvider?.clientId,\n id\n };\n }\n\n return {\n id\n };\n }\n\n isCallbackRequest(req: Request): boolean {\n return (\n req.method === \"GET\" &&\n !!this._callbackUrls.find((url) => {\n return req.url.startsWith(url);\n })\n );\n }\n\n async handleCallbackRequest(req: Request) {\n const url = new URL(req.url);\n const urlMatch = this._callbackUrls.find((url) => {\n return req.url.startsWith(url);\n });\n if (!urlMatch) {\n throw new Error(\n `No callback URI match found for the request url: ${req.url}. Was the request matched with \\`isCallbackRequest()\\`?`\n );\n }\n const code = url.searchParams.get(\"code\");\n const state = url.searchParams.get(\"state\");\n const error = url.searchParams.get(\"error\");\n const errorDescription = url.searchParams.get(\"error_description\");\n const urlParams = urlMatch.split(\"/\");\n const serverId = urlParams[urlParams.length - 1];\n\n // Handle OAuth error responses from the provider\n if (error) {\n return {\n serverId,\n authSuccess: false,\n authError: errorDescription || error\n };\n }\n\n if (!code) {\n throw new Error(\"Unauthorized: no code provided\");\n }\n if (!state) {\n throw new Error(\"Unauthorized: no state provided\");\n }\n\n if (this.mcpConnections[serverId] === undefined) {\n throw new Error(`Could not find serverId: ${serverId}`);\n }\n\n if (this.mcpConnections[serverId].connectionState !== \"authenticating\") {\n throw new Error(\n \"Failed to authenticate: the client isn't in the `authenticating` state\"\n );\n }\n\n const conn = this.mcpConnections[serverId];\n if (!conn.options.transport.authProvider) {\n throw new Error(\n \"Trying to finalize authentication for a server connection without an authProvider\"\n );\n }\n\n // Get clientId from auth provider (stored during redirectToAuthorization) or fallback to state for backward compatibility\n const clientId = conn.options.transport.authProvider.clientId || state;\n\n // Set the OAuth credentials\n conn.options.transport.authProvider.clientId = clientId;\n conn.options.transport.authProvider.serverId = serverId;\n\n try {\n await conn.completeAuthorization(code);\n return {\n serverId,\n authSuccess: true\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n\n return {\n serverId,\n authSuccess: false,\n authError: errorMessage\n };\n }\n }\n\n /**\n * Establish connection in the background after OAuth completion\n * This method is called asynchronously and doesn't block the OAuth callback response\n * @param serverId The server ID to establish connection for\n */\n async establishConnection(serverId: string): Promise<void> {\n const conn = this.mcpConnections[serverId];\n if (!conn) {\n this._onObservabilityEvent.fire({\n type: \"mcp:client:preconnect\",\n displayMessage: `Connection not found for serverId: ${serverId}`,\n payload: { serverId },\n timestamp: Date.now(),\n id: nanoid()\n });\n return;\n }\n\n try {\n await conn.establishConnection();\n this._onConnected.fire(serverId);\n } catch (error) {\n const url = conn.url.toString();\n this._onObservabilityEvent.fire({\n type: \"mcp:client:connect\",\n displayMessage: `Failed to establish connection to server ${serverId} with url ${url}`,\n payload: {\n url,\n transport: conn.options.transport.type ?? \"auto\",\n state: conn.connectionState,\n error: toErrorMessage(error)\n },\n timestamp: Date.now(),\n id: nanoid()\n });\n }\n }\n\n /**\n * Register a callback URL for OAuth handling\n * @param url The callback URL to register\n */\n registerCallbackUrl(url: string): void {\n if (!this._callbackUrls.includes(url)) {\n this._callbackUrls.push(url);\n }\n }\n\n /**\n * Unregister a callback URL\n * @param serverId The server ID whose callback URL should be removed\n */\n unregisterCallbackUrl(serverId: string): void {\n // Remove callback URLs that end with this serverId\n this._callbackUrls = this._callbackUrls.filter(\n (url) => !url.endsWith(`/${serverId}`)\n );\n }\n\n /**\n * Configure OAuth callback handling\n * @param config OAuth callback configuration\n */\n configureOAuthCallback(config: MCPClientOAuthCallbackConfig): void {\n this._oauthCallbackConfig = config;\n }\n\n /**\n * Get the current OAuth callback configuration\n * @returns The current OAuth callback configuration\n */\n getOAuthCallbackConfig(): MCPClientOAuthCallbackConfig | undefined {\n return this._oauthCallbackConfig;\n }\n\n /**\n * @returns namespaced list of tools\n */\n listTools(): NamespacedData[\"tools\"] {\n return getNamespacedData(this.mcpConnections, \"tools\");\n }\n\n /**\n * @returns a set of tools that you can use with the AI SDK\n */\n getAITools(): ToolSet {\n return Object.fromEntries(\n getNamespacedData(this.mcpConnections, \"tools\").map((tool) => {\n return [\n `tool_${tool.serverId.replace(/-/g, \"\")}_${tool.name}`,\n {\n description: tool.description,\n execute: async (args) => {\n const result = await this.callTool({\n arguments: args,\n name: tool.name,\n serverId: tool.serverId\n });\n if (result.isError) {\n // @ts-expect-error TODO we should fix this\n throw new Error(result.content[0].text);\n }\n return result;\n },\n inputSchema: this.jsonSchema!(tool.inputSchema as JSONSchema7),\n outputSchema: tool.outputSchema\n ? this.jsonSchema!(tool.outputSchema as JSONSchema7)\n : undefined\n }\n ];\n })\n );\n }\n\n /**\n * @deprecated this has been renamed to getAITools(), and unstable_getAITools will be removed in the next major version\n * @returns a set of tools that you can use with the AI SDK\n */\n unstable_getAITools(): ToolSet {\n if (!this._didWarnAboutUnstableGetAITools) {\n this._didWarnAboutUnstableGetAITools = true;\n console.warn(\n \"unstable_getAITools is deprecated, use getAITools instead. unstable_getAITools will be removed in the next major version.\"\n );\n }\n return this.getAITools();\n }\n\n /**\n * Closes all connections to MCP servers\n */\n async closeAllConnections() {\n const ids = Object.keys(this.mcpConnections);\n await Promise.all(\n ids.map(async (id) => {\n await this.mcpConnections[id].client.close();\n })\n );\n // Dispose all per-connection subscriptions\n for (const id of ids) {\n const store = this._connectionDisposables.get(id);\n if (store) store.dispose();\n this._connectionDisposables.delete(id);\n delete this.mcpConnections[id];\n }\n }\n\n /**\n * Closes a connection to an MCP server\n * @param id The id of the connection to close\n */\n async closeConnection(id: string) {\n if (!this.mcpConnections[id]) {\n throw new Error(`Connection with id \"${id}\" does not exist.`);\n }\n await this.mcpConnections[id].client.close();\n delete this.mcpConnections[id];\n\n const store = this._connectionDisposables.get(id);\n if (store) store.dispose();\n this._connectionDisposables.delete(id);\n }\n\n /**\n * Dispose the manager and all resources.\n */\n async dispose(): Promise<void> {\n try {\n await this.closeAllConnections();\n } finally {\n // Dispose manager-level emitters\n this._onConnected.dispose();\n this._onObservabilityEvent.dispose();\n }\n }\n\n /**\n * @returns namespaced list of prompts\n */\n listPrompts(): NamespacedData[\"prompts\"] {\n return getNamespacedData(this.mcpConnections, \"prompts\");\n }\n\n /**\n * @returns namespaced list of tools\n */\n listResources(): NamespacedData[\"resources\"] {\n return getNamespacedData(this.mcpConnections, \"resources\");\n }\n\n /**\n * @returns namespaced list of resource templates\n */\n listResourceTemplates(): NamespacedData[\"resourceTemplates\"] {\n return getNamespacedData(this.mcpConnections, \"resourceTemplates\");\n }\n\n /**\n * Namespaced version of callTool\n */\n async callTool(\n params: CallToolRequest[\"params\"] & { serverId: string },\n resultSchema?:\n | typeof CallToolResultSchema\n | typeof CompatibilityCallToolResultSchema,\n options?: RequestOptions\n ) {\n const unqualifiedName = params.name.replace(`${params.serverId}.`, \"\");\n return this.mcpConnections[params.serverId].client.callTool(\n {\n ...params,\n name: unqualifiedName\n },\n resultSchema,\n options\n );\n }\n\n /**\n * Namespaced version of readResource\n */\n readResource(\n params: ReadResourceRequest[\"params\"] & { serverId: string },\n options: RequestOptions\n ) {\n return this.mcpConnections[params.serverId].client.readResource(\n params,\n options\n );\n }\n\n /**\n * Namespaced version of getPrompt\n */\n getPrompt(\n params: GetPromptRequest[\"params\"] & { serverId: string },\n options: RequestOptions\n ) {\n return this.mcpConnections[params.serverId].client.getPrompt(\n params,\n options\n );\n }\n}\n\ntype NamespacedData = {\n tools: (Tool & { serverId: string })[];\n prompts: (Prompt & { serverId: string })[];\n resources: (Resource & { serverId: string })[];\n resourceTemplates: (ResourceTemplate & { serverId: string })[];\n};\n\nexport function getNamespacedData<T extends keyof NamespacedData>(\n mcpClients: Record<string, MCPClientConnection>,\n type: T\n): NamespacedData[T] {\n const sets = Object.entries(mcpClients).map(([name, conn]) => {\n return { data: conn[type], name };\n });\n\n const namespacedData = sets.flatMap(({ name: serverId, data }) => {\n return data.map((item) => {\n return {\n ...item,\n // we add a serverId so we can easily pull it out and send the tool call to the right server\n serverId\n };\n });\n });\n\n return namespacedData as NamespacedData[T]; // Type assertion needed due to TS limitations with conditional return types\n}\n"],"mappings":"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"}
@@ -1,6 +1,14 @@
1
1
  import { t as MCPObservabilityEvent } from "./mcp-Dw5vDrY8.js";
2
2
  import { t as AgentsOAuthProvider } from "./do-oauth-client-provider-DGc5pP0l.js";
3
3
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
4
+ import {
5
+ SSEClientTransport,
6
+ SSEClientTransportOptions
7
+ } from "@modelcontextprotocol/sdk/client/sse.js";
8
+ import {
9
+ StreamableHTTPClientTransport,
10
+ StreamableHTTPClientTransportOptions
11
+ } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
4
12
  import {
5
13
  CallToolRequest,
6
14
  CallToolResultSchema,
@@ -15,14 +23,6 @@ import {
15
23
  ServerCapabilities,
16
24
  Tool
17
25
  } from "@modelcontextprotocol/sdk/types.js";
18
- import {
19
- SSEClientTransport,
20
- SSEClientTransportOptions
21
- } from "@modelcontextprotocol/sdk/client/sse.js";
22
- import {
23
- StreamableHTTPClientTransport,
24
- StreamableHTTPClientTransportOptions
25
- } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
26
26
  import * as ai0 from "ai";
27
27
  import { ToolSet } from "ai";
28
28
  import * as zod0 from "zod";
@@ -32,40 +32,10 @@ import { RequestOptions } from "@modelcontextprotocol/sdk/shared/protocol.js";
32
32
  interface Disposable {
33
33
  dispose(): void;
34
34
  }
35
- type Event<T$1> = (listener: (e: T$1) => void) => Disposable;
36
- //#endregion
37
- //#region src/mcp/sse-edge.d.ts
38
- declare class SSEEdgeClientTransport extends SSEClientTransport {
39
- private authProvider;
40
- /**
41
- * Creates a new EdgeSSEClientTransport, which overrides fetch to be compatible with the CF workers environment
42
- */
43
- constructor(url: URL, options: SSEClientTransportOptions);
44
- authHeaders(): Promise<
45
- | {
46
- Authorization: string;
47
- }
48
- | undefined
49
- >;
50
- }
51
- //#endregion
52
- //#region src/mcp/streamable-http-edge.d.ts
53
- declare class StreamableHTTPEdgeClientTransport extends StreamableHTTPClientTransport {
54
- private authProvider;
55
- /**
56
- * Creates a new StreamableHTTPEdgeClientTransport, which overrides fetch to be compatible with the CF workers environment
57
- */
58
- constructor(url: URL, options: StreamableHTTPClientTransportOptions);
59
- authHeaders(): Promise<
60
- | {
61
- Authorization: string;
62
- }
63
- | undefined
64
- >;
65
- }
35
+ type Event<T> = (listener: (e: T) => void) => Disposable;
66
36
  //#endregion
67
37
  //#region src/mcp/types.d.ts
68
- type MaybePromise<T$1> = T$1 | Promise<T$1>;
38
+ type MaybePromise<T> = T | Promise<T>;
69
39
  type BaseTransportType = "sse" | "streamable-http";
70
40
  type TransportType = BaseTransportType | "auto";
71
41
  interface CORSOptions {
@@ -169,13 +139,13 @@ declare class MCPClientConnection {
169
139
  | undefined;
170
140
  required?: string[] | undefined;
171
141
  };
172
- description?: string | undefined;
173
142
  _meta?:
174
143
  | {
175
144
  [x: string]: unknown;
176
145
  }
177
146
  | undefined;
178
147
  title?: string | undefined;
148
+ description?: string | undefined;
179
149
  icons?:
180
150
  | {
181
151
  [x: string]: unknown;
@@ -213,7 +183,6 @@ declare class MCPClientConnection {
213
183
  [x: string]: unknown;
214
184
  name: string;
215
185
  uri: string;
216
- description?: string | undefined;
217
186
  _meta?:
218
187
  | {
219
188
  [x: string]: unknown;
@@ -221,6 +190,7 @@ declare class MCPClientConnection {
221
190
  | undefined;
222
191
  mimeType?: string | undefined;
223
192
  title?: string | undefined;
193
+ description?: string | undefined;
224
194
  icons?:
225
195
  | {
226
196
  [x: string]: unknown;
@@ -235,7 +205,6 @@ declare class MCPClientConnection {
235
205
  {
236
206
  [x: string]: unknown;
237
207
  name: string;
238
- description?: string | undefined;
239
208
  _meta?:
240
209
  | {
241
210
  [x: string]: unknown;
@@ -250,6 +219,7 @@ declare class MCPClientConnection {
250
219
  }[]
251
220
  | undefined;
252
221
  title?: string | undefined;
222
+ description?: string | undefined;
253
223
  icons?:
254
224
  | {
255
225
  [x: string]: unknown;
@@ -265,7 +235,6 @@ declare class MCPClientConnection {
265
235
  [x: string]: unknown;
266
236
  name: string;
267
237
  uriTemplate: string;
268
- description?: string | undefined;
269
238
  _meta?:
270
239
  | {
271
240
  [x: string]: unknown;
@@ -273,6 +242,7 @@ declare class MCPClientConnection {
273
242
  | undefined;
274
243
  mimeType?: string | undefined;
275
244
  title?: string | undefined;
245
+ description?: string | undefined;
276
246
  icons?:
277
247
  | {
278
248
  [x: string]: unknown;
@@ -295,7 +265,7 @@ declare class MCPClientConnection {
295
265
  */
296
266
  getTransport(
297
267
  transportType: BaseTransportType
298
- ): StreamableHTTPEdgeClientTransport | SSEEdgeClientTransport;
268
+ ): SSEClientTransport | StreamableHTTPClientTransport;
299
269
  private tryConnect;
300
270
  private _capabilityErrorHandler;
301
271
  }
@@ -5293,16 +5263,14 @@ type NamespacedData = {
5293
5263
  serverId: string;
5294
5264
  })[];
5295
5265
  };
5296
- declare function getNamespacedData<T$1 extends keyof NamespacedData>(
5266
+ declare function getNamespacedData<T extends keyof NamespacedData>(
5297
5267
  mcpClients: Record<string, MCPClientConnection>,
5298
- type: T$1
5299
- ): NamespacedData[T$1];
5268
+ type: T
5269
+ ): NamespacedData[T];
5300
5270
  //#endregion
5301
5271
  export {
5302
5272
  MCPConnectionState as a,
5303
5273
  MaybePromise as c,
5304
- StreamableHTTPEdgeClientTransport as d,
5305
- SSEEdgeClientTransport as f,
5306
5274
  getNamespacedData as i,
5307
5275
  ServeOptions as l,
5308
5276
  MCPClientOAuthCallbackConfig as n,
@@ -5312,4 +5280,4 @@ export {
5312
5280
  MCPClientManager as t,
5313
5281
  TransportType as u
5314
5282
  };
5315
- //# sourceMappingURL=client-BEMdXPYJ.d.ts.map
5283
+ //# sourceMappingURL=client-GfgZTqrS.d.ts.map
@@ -1,8 +1,8 @@
1
1
  import "../ai-types-B3aQaFv3.js";
2
2
  import "../client-BfiZ3HQd.js";
3
- import "../client-JMskg2fw.js";
3
+ import "../client-DZhjV_XA.js";
4
4
  import "../do-oauth-client-provider-CswoD5Lu.js";
5
- import { s as getAgentByName } from "../src-nFNV3Ttx.js";
5
+ import { s as getAgentByName } from "../src-CwIW7tU2.js";
6
6
  import { generateObject, tool } from "ai";
7
7
  import { openai } from "@ai-sdk/openai";
8
8
  import { z } from "zod/v3";
@@ -2,7 +2,7 @@ import {
2
2
  a as MCPConnectionState,
3
3
  t as MCPClientManager,
4
4
  u as TransportType
5
- } from "./client-BEMdXPYJ.js";
5
+ } from "./client-GfgZTqrS.js";
6
6
  import { t as Observability } from "./index-DhJCaDWd.js";
7
7
  import { n as MessageType } from "./ai-types-D5YoPrBZ.js";
8
8
  import {
@@ -87,9 +87,9 @@ declare function callable(
87
87
  * @param metadata Optional metadata about the callable method
88
88
  */
89
89
  declare const unstable_callable: (metadata?: CallableMetadata) => void;
90
- type QueueItem<T$1 = string> = {
90
+ type QueueItem<T = string> = {
91
91
  id: string;
92
- payload: T$1;
92
+ payload: T;
93
93
  callback: keyof Agent<unknown>;
94
94
  created_at: number;
95
95
  };
@@ -97,13 +97,13 @@ type QueueItem<T$1 = string> = {
97
97
  * Represents a scheduled task within an Agent
98
98
  * @template T Type of the payload data
99
99
  */
100
- type Schedule<T$1 = string> = {
100
+ type Schedule<T = string> = {
101
101
  /** Unique identifier for the schedule */
102
102
  id: string;
103
103
  /** Name of the method to be called */
104
104
  callback: string;
105
105
  /** Data to be passed to the callback */
106
- payload: T$1;
106
+ payload: T;
107
107
  } & (
108
108
  | {
109
109
  /** Type of schedule for one-time execution at a specific time */
@@ -152,9 +152,9 @@ type MCPServer = {
152
152
  capabilities: ServerCapabilities | null;
153
153
  };
154
154
  declare function getCurrentAgent<
155
- T$1 extends Agent<unknown, unknown> = Agent<unknown, unknown>
155
+ T extends Agent<unknown, unknown> = Agent<unknown, unknown>
156
156
  >(): {
157
- agent: T$1 | undefined;
157
+ agent: T | undefined;
158
158
  connection: Connection | undefined;
159
159
  request: Request | undefined;
160
160
  email: AgentEmail | undefined;
@@ -494,17 +494,17 @@ type EmailSendOptions = {
494
494
  */
495
495
  declare function getAgentByName<
496
496
  Env,
497
- T$1 extends Agent<Env>,
497
+ T extends Agent<Env>,
498
498
  Props extends Record<string, unknown> = Record<string, unknown>
499
499
  >(
500
- namespace: AgentNamespace<T$1>,
500
+ namespace: AgentNamespace<T>,
501
501
  name: string,
502
502
  options?: {
503
503
  jurisdiction?: DurableObjectJurisdiction;
504
504
  locationHint?: DurableObjectLocationHint;
505
505
  props?: Props;
506
506
  }
507
- ): Promise<DurableObjectStub<T$1>>;
507
+ ): Promise<DurableObjectStub<T>>;
508
508
  /**
509
509
  * A wrapper for streaming responses in callable methods
510
510
  */
@@ -557,4 +557,4 @@ export {
557
557
  WSMessage as x,
558
558
  StateUpdateMessage as y
559
559
  };
560
- //# sourceMappingURL=index-BXG3v10y.d.ts.map
560
+ //# sourceMappingURL=index-BQLBXqnQ.d.ts.map
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { u as TransportType } from "./client-BEMdXPYJ.js";
1
+ import { u as TransportType } from "./client-GfgZTqrS.js";
2
2
  import "./mcp-Dw5vDrY8.js";
3
3
  import "./do-oauth-client-provider-DGc5pP0l.js";
4
4
  import "./index-DhJCaDWd.js";
@@ -34,7 +34,7 @@ import {
34
34
  w as createCatchAllEmailResolver,
35
35
  x as WSMessage,
36
36
  y as StateUpdateMessage
37
- } from "./index-BXG3v10y.js";
37
+ } from "./index-BQLBXqnQ.js";
38
38
  export {
39
39
  Agent,
40
40
  AgentContext,
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import "./ai-types-B3aQaFv3.js";
2
2
  import "./client-BfiZ3HQd.js";
3
- import "./client-JMskg2fw.js";
3
+ import "./client-DZhjV_XA.js";
4
4
  import "./do-oauth-client-provider-CswoD5Lu.js";
5
- import { a as createCatchAllEmailResolver, c as getCurrentAgent, d as unstable_callable, i as createAddressBasedEmailResolver, l as routeAgentEmail, n as StreamingResponse, o as createHeaderBasedEmailResolver, r as callable, s as getAgentByName, t as Agent, u as routeAgentRequest } from "./src-nFNV3Ttx.js";
5
+ import { a as createCatchAllEmailResolver, c as getCurrentAgent, d as unstable_callable, i as createAddressBasedEmailResolver, l as routeAgentEmail, n as StreamingResponse, o as createHeaderBasedEmailResolver, r as callable, s as getAgentByName, t as Agent, u as routeAgentRequest } from "./src-CwIW7tU2.js";
6
6
 
7
7
  export { Agent, StreamingResponse, callable, createAddressBasedEmailResolver, createCatchAllEmailResolver, createHeaderBasedEmailResolver, getAgentByName, getCurrentAgent, routeAgentEmail, routeAgentRequest, unstable_callable };
@@ -1,4 +1,4 @@
1
- import { i as getNamespacedData, n as MCPClientOAuthCallbackConfig, r as MCPClientOAuthResult, t as MCPClientManager } from "../client-BEMdXPYJ.js";
1
+ import { i as getNamespacedData, n as MCPClientOAuthCallbackConfig, r as MCPClientOAuthResult, t as MCPClientManager } from "../client-GfgZTqrS.js";
2
2
  import "../mcp-Dw5vDrY8.js";
3
3
  import "../do-oauth-client-provider-DGc5pP0l.js";
4
4
  export { MCPClientManager, MCPClientOAuthCallbackConfig, MCPClientOAuthResult, getNamespacedData };
@@ -1,3 +1,3 @@
1
- import { n as getNamespacedData, t as MCPClientManager } from "../client-JMskg2fw.js";
1
+ import { n as getNamespacedData, t as MCPClientManager } from "../client-DZhjV_XA.js";
2
2
 
3
3
  export { MCPClientManager, getNamespacedData };