agents 0.0.0-c5e3a32 → 0.0.0-c6d9bf1
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.
- package/README.md +234 -6
- package/dist/_esm-LV5FJ3HK.js +3922 -0
- package/dist/_esm-LV5FJ3HK.js.map +1 -0
- package/dist/ai-chat-agent.d.ts +13 -9
- package/dist/ai-chat-agent.js +444 -60
- package/dist/ai-chat-agent.js.map +1 -1
- package/dist/ai-chat-v5-migration.d.ts +152 -0
- package/dist/ai-chat-v5-migration.js +20 -0
- package/dist/ai-chat-v5-migration.js.map +1 -0
- package/dist/ai-react.d.ts +69 -71
- package/dist/ai-react.js +252 -99
- package/dist/ai-react.js.map +1 -1
- package/dist/ai-types.d.ts +37 -19
- package/dist/ai-types.js +7 -0
- package/dist/ccip-CMBYN64O.js +15 -0
- package/dist/ccip-CMBYN64O.js.map +1 -0
- package/dist/{chunk-EDUDXISR.js → chunk-254F4GDT.js} +321 -126
- package/dist/chunk-254F4GDT.js.map +1 -0
- package/dist/chunk-3OT2NNEW.js +941 -0
- package/dist/chunk-3OT2NNEW.js.map +1 -0
- package/dist/chunk-5Y6BEZDY.js +276 -0
- package/dist/chunk-5Y6BEZDY.js.map +1 -0
- package/dist/chunk-BER7KXUJ.js +18 -0
- package/dist/chunk-BER7KXUJ.js.map +1 -0
- package/dist/chunk-JJBFIGUC.js +5202 -0
- package/dist/chunk-JJBFIGUC.js.map +1 -0
- package/dist/chunk-PR4QN5HX.js +43 -0
- package/dist/chunk-PR4QN5HX.js.map +1 -0
- package/dist/{chunk-KUH345EY.js → chunk-QEVM4BVL.js} +5 -5
- package/dist/chunk-QEVM4BVL.js.map +1 -0
- package/dist/chunk-TYAY6AU6.js +159 -0
- package/dist/chunk-TYAY6AU6.js.map +1 -0
- package/dist/chunk-UJVEAURM.js +150 -0
- package/dist/chunk-UJVEAURM.js.map +1 -0
- package/dist/{chunk-PVQZBKN7.js → chunk-Z44WASMA.js} +11 -3
- package/dist/chunk-Z44WASMA.js.map +1 -0
- package/dist/client-DVoPb3-C.d.ts +5120 -0
- package/dist/client.js +3 -1
- package/dist/codemode/ai.d.ts +25 -0
- package/dist/codemode/ai.js +5112 -0
- package/dist/codemode/ai.js.map +1 -0
- package/dist/index.d.ts +550 -31
- package/dist/index.js +8 -4
- package/dist/mcp/client.d.ts +10 -1053
- package/dist/mcp/client.js +2 -1
- package/dist/mcp/do-oauth-client-provider.d.ts +1 -0
- package/dist/mcp/do-oauth-client-provider.js +2 -1
- package/dist/mcp/index.d.ts +58 -63
- package/dist/mcp/index.js +954 -638
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/x402.d.ts +39 -0
- package/dist/mcp/x402.js +3195 -0
- package/dist/mcp/x402.js.map +1 -0
- package/dist/mcp-BH1fJeiU.d.ts +58 -0
- package/dist/observability/index.d.ts +34 -12
- package/dist/observability/index.js +6 -4
- package/dist/react.d.ts +16 -8
- package/dist/react.js +107 -7
- package/dist/react.js.map +1 -1
- package/dist/schedule.d.ts +83 -9
- package/dist/schedule.js +17 -2
- package/dist/schedule.js.map +1 -1
- package/dist/secp256k1-M22GZP2U.js +2193 -0
- package/dist/secp256k1-M22GZP2U.js.map +1 -0
- package/package.json +32 -9
- package/src/index.ts +453 -154
- package/dist/chunk-EDUDXISR.js.map +0 -1
- package/dist/chunk-KUH345EY.js.map +0 -1
- package/dist/chunk-MW5BQ2FW.js +0 -469
- package/dist/chunk-MW5BQ2FW.js.map +0 -1
- package/dist/chunk-PVQZBKN7.js.map +0 -1
- package/dist/index-DukU3sIa.d.ts +0 -571
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/mcp/client.ts","../src/mcp/client-connection.ts","../src/mcp/sse-edge.ts"],"sourcesContent":["import type { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport type { SSEClientTransportOptions } from \"@modelcontextprotocol/sdk/client/sse.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, jsonSchema } from \"ai\";\nimport { nanoid } from \"nanoid\";\nimport { MCPClientConnection } from \"./client-connection\";\nimport type { AgentsOAuthProvider } from \"./do-oauth-client-provider\";\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\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 /**\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?: SSEClientTransportOptions & {\n authProvider?: AgentsOAuthProvider;\n };\n client?: ConstructorParameters<typeof Client>[1];\n } = {}\n ): Promise<{\n id: string;\n authUrl?: string;\n clientId?: string;\n }> {\n const id = options.reconnect?.id ?? nanoid(8);\n\n if (!options.transport?.authProvider) {\n console.warn(\n \"No authProvider provided in the transport options. This client will only support unauthenticated remote MCP Servers\"\n );\n } else {\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 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: options.transport ?? {}\n }\n );\n\n await this.mcpConnections[id].init(options.reconnect?.oauthCode);\n\n const authUrl = options.transport?.authProvider?.authUrl;\n if (authUrl && options.transport?.authProvider?.redirectUrl) {\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 clientId = url.searchParams.get(\"state\");\n const urlParams = urlMatch.split(\"/\");\n const serverId = urlParams[urlParams.length - 1];\n if (!code) {\n throw new Error(\"Unauthorized: no code provided\");\n }\n if (!clientId) {\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 conn.options.transport.authProvider.clientId = clientId;\n conn.options.transport.authProvider.serverId = serverId;\n\n // reconnect to server with authorization\n const serverUrl = conn.url.toString();\n await this.connect(serverUrl, {\n reconnect: {\n id: serverId,\n oauthClientId: clientId,\n oauthCode: code\n },\n ...conn.options\n });\n\n if (this.mcpConnections[serverId].connectionState === \"authenticating\") {\n throw new Error(\"Failed to authenticate: client failed to initialize\");\n }\n\n return { serverId };\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 unstable_getAITools(): ToolSet {\n return Object.fromEntries(\n getNamespacedData(this.mcpConnections, \"tools\").map((tool) => {\n return [\n `${tool.serverId}_${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 parameters: jsonSchema(tool.inputSchema)\n }\n ];\n })\n );\n }\n\n /**\n * Closes all connections to MCP servers\n */\n async closeAllConnections() {\n return Promise.all(\n Object.values(this.mcpConnections).map(async (connection) => {\n await connection.client.close();\n })\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\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 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","import { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport type { SSEClientTransportOptions } from \"@modelcontextprotocol/sdk/client/sse.js\";\nimport {\n // type ClientCapabilities,\n type ListPromptsResult,\n type ListResourceTemplatesResult,\n type ListResourcesResult,\n type ListToolsResult,\n // type Notification,\n type Prompt,\n PromptListChangedNotificationSchema,\n type Resource,\n ResourceListChangedNotificationSchema,\n type ResourceTemplate,\n type ServerCapabilities,\n type Tool,\n ToolListChangedNotificationSchema\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport type { AgentsOAuthProvider } from \"./do-oauth-client-provider\";\nimport { SSEEdgeClientTransport } from \"./sse-edge\";\n\nexport class MCPClientConnection {\n client: Client;\n connectionState:\n | \"authenticating\"\n | \"connecting\"\n | \"ready\"\n | \"discovering\"\n | \"failed\" = \"connecting\";\n instructions?: string;\n tools: Tool[] = [];\n prompts: Prompt[] = [];\n resources: Resource[] = [];\n resourceTemplates: ResourceTemplate[] = [];\n serverCapabilities: ServerCapabilities | undefined;\n\n constructor(\n public url: URL,\n info: ConstructorParameters<typeof Client>[0],\n public options: {\n transport: SSEClientTransportOptions & {\n authProvider?: AgentsOAuthProvider;\n };\n client: ConstructorParameters<typeof Client>[1];\n } = { client: {}, transport: {} }\n ) {\n this.client = new Client(info, options.client);\n }\n\n /**\n * Initialize a client connection\n *\n * @param code Optional OAuth code to initialize the connection with if auth hasn't been initialized\n * @returns\n */\n async init(code?: string) {\n try {\n const transport = new SSEEdgeClientTransport(\n this.url,\n this.options.transport\n );\n\n if (code) {\n await transport.finishAuth(code);\n }\n\n await this.client.connect(transport);\n // biome-ignore lint/suspicious/noExplicitAny: allow for the error check here\n } catch (e: any) {\n if (e.toString().includes(\"Unauthorized\")) {\n // unauthorized, we should wait for the user to authenticate\n this.connectionState = \"authenticating\";\n return;\n }\n this.connectionState = \"failed\";\n throw e;\n }\n\n this.connectionState = \"discovering\";\n\n this.serverCapabilities = await this.client.getServerCapabilities();\n if (!this.serverCapabilities) {\n throw new Error(\"The MCP Server failed to return server capabilities\");\n }\n\n const [instructions, tools, resources, prompts, resourceTemplates] =\n await Promise.all([\n this.client.getInstructions(),\n this.registerTools(),\n this.registerResources(),\n this.registerPrompts(),\n this.registerResourceTemplates()\n ]);\n\n this.instructions = instructions;\n this.tools = tools;\n this.resources = resources;\n this.prompts = prompts;\n this.resourceTemplates = resourceTemplates;\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(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(capabilityErrorHandler({ resources: [] }, \"resources/list\"));\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(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 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\nfunction 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 console.error(\n `The server advertised support for the capability ${method.split(\"/\")[0]}, but returned \"Method not found\" for '${method}'.`\n );\n return empty;\n }\n throw e;\n };\n}\n","import type { OAuthClientProvider } from \"@modelcontextprotocol/sdk/client/auth.js\";\nimport {\n SSEClientTransport,\n type SSEClientTransportOptions\n} from \"@modelcontextprotocol/sdk/client/sse.js\";\n\nexport class SSEEdgeClientTransport extends SSEClientTransport {\n private authProvider: OAuthClientProvider | undefined;\n /**\n * Creates a new EdgeSSEClientTransport, which overrides fetch to be compatible with the CF workers environment\n */\n constructor(url: URL, options: SSEClientTransportOptions) {\n const fetchOverride: typeof fetch = async (\n fetchUrl: RequestInfo | URL,\n fetchInit: RequestInit = {}\n ) => {\n // add auth headers\n const headers = await this.authHeaders();\n const workerOptions = {\n ...fetchInit,\n headers: {\n ...options.requestInit?.headers,\n ...fetchInit?.headers,\n ...headers\n }\n };\n\n // Remove unsupported properties\n delete workerOptions.mode;\n\n // Call the original fetch with fixed options\n return (\n (options.eventSourceInit?.fetch?.(\n fetchUrl as URL | string,\n // @ts-expect-error Expects FetchLikeInit from EventSource but is compatible with RequestInit\n workerOptions\n ) as Promise<Response>) || fetch(fetchUrl, workerOptions)\n );\n };\n\n super(url, {\n ...options,\n eventSourceInit: {\n ...options.eventSourceInit,\n fetch: fetchOverride\n }\n });\n this.authProvider = options.authProvider;\n }\n\n async authHeaders() {\n if (this.authProvider) {\n const tokens = await this.authProvider.tokens();\n if (tokens) {\n return {\n Authorization: `Bearer ${tokens.access_token}`\n };\n }\n }\n }\n}\n"],"mappings":"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","names":["url"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/mcp/do-oauth-client-provider.ts"],"sourcesContent":["import type { OAuthClientProvider } from \"@modelcontextprotocol/sdk/client/auth.js\";\nimport type {\n OAuthClientInformation,\n OAuthClientInformationFull,\n OAuthClientMetadata,\n OAuthTokens\n} from \"@modelcontextprotocol/sdk/shared/auth.js\";\n\n// A slight extension to the standard OAuthClientProvider interface because `redirectToAuthorization` doesn't give us the interface we need\n// This allows us to track authentication for a specific server and associated dynamic client registration\nexport interface AgentsOAuthProvider extends OAuthClientProvider {\n authUrl: string | undefined;\n clientId: string | undefined;\n serverId: string | undefined;\n}\n\nexport class DurableObjectOAuthClientProvider implements AgentsOAuthProvider {\n private _authUrl_: string | undefined;\n private _serverId_: string | undefined;\n private _clientId_: string | undefined;\n\n constructor(\n public storage: DurableObjectStorage,\n public clientName: string,\n public baseRedirectUrl: string\n ) {}\n\n get clientMetadata(): OAuthClientMetadata {\n return {\n client_name: this.clientName,\n client_uri: \"example.com\",\n grant_types: [\"authorization_code\", \"refresh_token\"],\n redirect_uris: [this.redirectUrl],\n response_types: [\"code\"],\n token_endpoint_auth_method: \"none\"\n };\n }\n\n get redirectUrl() {\n return `${this.baseRedirectUrl}/${this.serverId}`;\n }\n\n get clientId() {\n if (!this._clientId_) {\n throw new Error(\"Trying to access clientId before it was set\");\n }\n return this._clientId_;\n }\n\n set clientId(clientId_: string) {\n this._clientId_ = clientId_;\n }\n\n get serverId() {\n if (!this._serverId_) {\n throw new Error(\"Trying to access serverId before it was set\");\n }\n return this._serverId_;\n }\n\n set serverId(serverId_: string) {\n this._serverId_ = serverId_;\n }\n\n keyPrefix(clientId: string) {\n return `/${this.clientName}/${this.serverId}/${clientId}`;\n }\n\n clientInfoKey(clientId: string) {\n return `${this.keyPrefix(clientId)}/client_info/`;\n }\n\n async clientInformation(): Promise<OAuthClientInformation | undefined> {\n if (!this._clientId_) {\n return undefined;\n }\n return (\n (await this.storage.get<OAuthClientInformation>(\n this.clientInfoKey(this.clientId)\n )) ?? undefined\n );\n }\n\n async saveClientInformation(\n clientInformation: OAuthClientInformationFull\n ): Promise<void> {\n await this.storage.put(\n this.clientInfoKey(clientInformation.client_id),\n clientInformation\n );\n this.clientId = clientInformation.client_id;\n }\n\n tokenKey(clientId: string) {\n return `${this.keyPrefix(clientId)}/token`;\n }\n\n async tokens(): Promise<OAuthTokens | undefined> {\n if (!this._clientId_) {\n return undefined;\n }\n return (\n (await this.storage.get<OAuthTokens>(this.tokenKey(this.clientId))) ??\n undefined\n );\n }\n\n async saveTokens(tokens: OAuthTokens): Promise<void> {\n await this.storage.put(this.tokenKey(this.clientId), tokens);\n }\n\n get authUrl() {\n return this._authUrl_;\n }\n\n /**\n * Because this operates on the server side (but we need browser auth), we send this url back to the user\n * and require user interact to initiate the redirect flow\n */\n async redirectToAuthorization(authUrl: URL): Promise<void> {\n // We want to track the client ID in state here because the typescript SSE client sometimes does\n // a dynamic client registration AFTER generating this redirect URL.\n const client_id = authUrl.searchParams.get(\"client_id\");\n if (client_id) {\n authUrl.searchParams.append(\"state\", client_id);\n }\n this._authUrl_ = authUrl.toString();\n }\n\n codeVerifierKey(clientId: string) {\n return `${this.keyPrefix(clientId)}/code_verifier`;\n }\n\n async saveCodeVerifier(verifier: string): Promise<void> {\n await this.storage.put(this.codeVerifierKey(this.clientId), verifier);\n }\n\n async codeVerifier(): Promise<string> {\n const codeVerifier = await this.storage.get<string>(\n this.codeVerifierKey(this.clientId)\n );\n if (!codeVerifier) {\n throw new Error(\"No code verifier found\");\n }\n return codeVerifier;\n }\n}\n"],"mappings":";AAgBO,IAAM,mCAAN,MAAsE;AAAA,EAK3E,YACS,SACA,YACA,iBACP;AAHO;AACA;AACA;AAAA,EACN;AAAA,EAEH,IAAI,iBAAsC;AACxC,WAAO;AAAA,MACL,aAAa,KAAK;AAAA,MAClB,YAAY;AAAA,MACZ,aAAa,CAAC,sBAAsB,eAAe;AAAA,MACnD,eAAe,CAAC,KAAK,WAAW;AAAA,MAChC,gBAAgB,CAAC,MAAM;AAAA,MACvB,4BAA4B;AAAA,IAC9B;AAAA,EACF;AAAA,EAEA,IAAI,cAAc;AAChB,WAAO,GAAG,KAAK,eAAe,IAAI,KAAK,QAAQ;AAAA,EACjD;AAAA,EAEA,IAAI,WAAW;AACb,QAAI,CAAC,KAAK,YAAY;AACpB,YAAM,IAAI,MAAM,6CAA6C;AAAA,IAC/D;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,SAAS,WAAmB;AAC9B,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,IAAI,WAAW;AACb,QAAI,CAAC,KAAK,YAAY;AACpB,YAAM,IAAI,MAAM,6CAA6C;AAAA,IAC/D;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,SAAS,WAAmB;AAC9B,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,UAAU,UAAkB;AAC1B,WAAO,IAAI,KAAK,UAAU,IAAI,KAAK,QAAQ,IAAI,QAAQ;AAAA,EACzD;AAAA,EAEA,cAAc,UAAkB;AAC9B,WAAO,GAAG,KAAK,UAAU,QAAQ,CAAC;AAAA,EACpC;AAAA,EAEA,MAAM,oBAAiE;AACrE,QAAI,CAAC,KAAK,YAAY;AACpB,aAAO;AAAA,IACT;AACA,WACG,MAAM,KAAK,QAAQ;AAAA,MAClB,KAAK,cAAc,KAAK,QAAQ;AAAA,IAClC,KAAM;AAAA,EAEV;AAAA,EAEA,MAAM,sBACJ,mBACe;AACf,UAAM,KAAK,QAAQ;AAAA,MACjB,KAAK,cAAc,kBAAkB,SAAS;AAAA,MAC9C;AAAA,IACF;AACA,SAAK,WAAW,kBAAkB;AAAA,EACpC;AAAA,EAEA,SAAS,UAAkB;AACzB,WAAO,GAAG,KAAK,UAAU,QAAQ,CAAC;AAAA,EACpC;AAAA,EAEA,MAAM,SAA2C;AAC/C,QAAI,CAAC,KAAK,YAAY;AACpB,aAAO;AAAA,IACT;AACA,WACG,MAAM,KAAK,QAAQ,IAAiB,KAAK,SAAS,KAAK,QAAQ,CAAC,KACjE;AAAA,EAEJ;AAAA,EAEA,MAAM,WAAW,QAAoC;AACnD,UAAM,KAAK,QAAQ,IAAI,KAAK,SAAS,KAAK,QAAQ,GAAG,MAAM;AAAA,EAC7D;AAAA,EAEA,IAAI,UAAU;AACZ,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,wBAAwB,SAA6B;AAGzD,UAAM,YAAY,QAAQ,aAAa,IAAI,WAAW;AACtD,QAAI,WAAW;AACb,cAAQ,aAAa,OAAO,SAAS,SAAS;AAAA,IAChD;AACA,SAAK,YAAY,QAAQ,SAAS;AAAA,EACpC;AAAA,EAEA,gBAAgB,UAAkB;AAChC,WAAO,GAAG,KAAK,UAAU,QAAQ,CAAC;AAAA,EACpC;AAAA,EAEA,MAAM,iBAAiB,UAAiC;AACtD,UAAM,KAAK,QAAQ,IAAI,KAAK,gBAAgB,KAAK,QAAQ,GAAG,QAAQ;AAAA,EACtE;AAAA,EAEA,MAAM,eAAgC;AACpC,UAAM,eAAe,MAAM,KAAK,QAAQ;AAAA,MACtC,KAAK,gBAAgB,KAAK,QAAQ;AAAA,IACpC;AACA,QAAI,CAAC,cAAc;AACjB,YAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AACA,WAAO;AAAA,EACT;AACF;","names":[]}
|
package/dist/index-DukU3sIa.d.ts
DELETED
|
@@ -1,571 +0,0 @@
|
|
|
1
|
-
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
2
|
-
import {
|
|
3
|
-
ServerCapabilities,
|
|
4
|
-
Tool,
|
|
5
|
-
Prompt,
|
|
6
|
-
Resource
|
|
7
|
-
} from "@modelcontextprotocol/sdk/types.js";
|
|
8
|
-
import { Server, Connection, PartyServerOptions } from "partyserver";
|
|
9
|
-
import { MCPClientManager } from "./mcp/client.js";
|
|
10
|
-
import { Message } from "ai";
|
|
11
|
-
|
|
12
|
-
type BaseEvent<
|
|
13
|
-
T extends string,
|
|
14
|
-
Payload extends Record<string, unknown> = {}
|
|
15
|
-
> = {
|
|
16
|
-
type: T;
|
|
17
|
-
/**
|
|
18
|
-
* The unique identifier for the event
|
|
19
|
-
*/
|
|
20
|
-
id: string;
|
|
21
|
-
/**
|
|
22
|
-
* The message to display in the logs for this event, should the implementation choose to display
|
|
23
|
-
* a human-readable message.
|
|
24
|
-
*/
|
|
25
|
-
displayMessage: string;
|
|
26
|
-
/**
|
|
27
|
-
* The payload of the event
|
|
28
|
-
*/
|
|
29
|
-
payload: Payload;
|
|
30
|
-
/**
|
|
31
|
-
* The timestamp of the event in milliseconds since epoch
|
|
32
|
-
*/
|
|
33
|
-
timestamp: number;
|
|
34
|
-
};
|
|
35
|
-
/**
|
|
36
|
-
* The type of events that can be emitted by an Agent
|
|
37
|
-
*/
|
|
38
|
-
type ObservabilityEvent =
|
|
39
|
-
| BaseEvent<
|
|
40
|
-
"state:update",
|
|
41
|
-
{
|
|
42
|
-
state: unknown;
|
|
43
|
-
previousState: unknown;
|
|
44
|
-
}
|
|
45
|
-
>
|
|
46
|
-
| BaseEvent<
|
|
47
|
-
"rpc",
|
|
48
|
-
{
|
|
49
|
-
method: string;
|
|
50
|
-
args: unknown[];
|
|
51
|
-
streaming?: boolean;
|
|
52
|
-
success: boolean;
|
|
53
|
-
}
|
|
54
|
-
>
|
|
55
|
-
| BaseEvent<
|
|
56
|
-
"message:request" | "message:response",
|
|
57
|
-
{
|
|
58
|
-
message: Message[];
|
|
59
|
-
}
|
|
60
|
-
>
|
|
61
|
-
| BaseEvent<"message:clear">
|
|
62
|
-
| BaseEvent<
|
|
63
|
-
"schedule:create" | "schedule:execute" | "schedule:cancel",
|
|
64
|
-
Schedule<unknown>
|
|
65
|
-
>
|
|
66
|
-
| BaseEvent<"destroy">
|
|
67
|
-
| BaseEvent<
|
|
68
|
-
"connect",
|
|
69
|
-
{
|
|
70
|
-
connectionId: string;
|
|
71
|
-
}
|
|
72
|
-
>;
|
|
73
|
-
interface Observability {
|
|
74
|
-
/**
|
|
75
|
-
* Emit an event for the Agent's observability implementation to handle.
|
|
76
|
-
* @param event - The event to emit
|
|
77
|
-
* @param ctx - The execution context of the invocation
|
|
78
|
-
*/
|
|
79
|
-
emit(event: ObservabilityEvent, ctx: DurableObjectState): void;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* A generic observability implementation that logs events to the console.
|
|
83
|
-
*/
|
|
84
|
-
declare const genericObservability: Observability;
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* RPC request message from client
|
|
88
|
-
*/
|
|
89
|
-
type RPCRequest = {
|
|
90
|
-
type: "rpc";
|
|
91
|
-
id: string;
|
|
92
|
-
method: string;
|
|
93
|
-
args: unknown[];
|
|
94
|
-
};
|
|
95
|
-
/**
|
|
96
|
-
* State update message from client
|
|
97
|
-
*/
|
|
98
|
-
type StateUpdateMessage = {
|
|
99
|
-
type: "cf_agent_state";
|
|
100
|
-
state: unknown;
|
|
101
|
-
};
|
|
102
|
-
/**
|
|
103
|
-
* RPC response message to client
|
|
104
|
-
*/
|
|
105
|
-
type RPCResponse = {
|
|
106
|
-
type: "rpc";
|
|
107
|
-
id: string;
|
|
108
|
-
} & (
|
|
109
|
-
| {
|
|
110
|
-
success: true;
|
|
111
|
-
result: unknown;
|
|
112
|
-
done?: false;
|
|
113
|
-
}
|
|
114
|
-
| {
|
|
115
|
-
success: true;
|
|
116
|
-
result: unknown;
|
|
117
|
-
done: true;
|
|
118
|
-
}
|
|
119
|
-
| {
|
|
120
|
-
success: false;
|
|
121
|
-
error: string;
|
|
122
|
-
}
|
|
123
|
-
);
|
|
124
|
-
/**
|
|
125
|
-
* Metadata for a callable method
|
|
126
|
-
*/
|
|
127
|
-
type CallableMetadata = {
|
|
128
|
-
/** Optional description of what the method does */
|
|
129
|
-
description?: string;
|
|
130
|
-
/** Whether the method supports streaming responses */
|
|
131
|
-
streaming?: boolean;
|
|
132
|
-
};
|
|
133
|
-
/**
|
|
134
|
-
* Decorator that marks a method as callable by clients
|
|
135
|
-
* @param metadata Optional metadata about the callable method
|
|
136
|
-
*/
|
|
137
|
-
declare function unstable_callable(
|
|
138
|
-
metadata?: CallableMetadata
|
|
139
|
-
): <This, Args extends unknown[], Return>(
|
|
140
|
-
target: (this: This, ...args: Args) => Return,
|
|
141
|
-
context: ClassMethodDecoratorContext
|
|
142
|
-
) => (this: This, ...args: Args) => Return;
|
|
143
|
-
/**
|
|
144
|
-
* Represents a scheduled task within an Agent
|
|
145
|
-
* @template T Type of the payload data
|
|
146
|
-
*/
|
|
147
|
-
type Schedule<T = string> = {
|
|
148
|
-
/** Unique identifier for the schedule */
|
|
149
|
-
id: string;
|
|
150
|
-
/** Name of the method to be called */
|
|
151
|
-
callback: string;
|
|
152
|
-
/** Data to be passed to the callback */
|
|
153
|
-
payload: T;
|
|
154
|
-
} & (
|
|
155
|
-
| {
|
|
156
|
-
/** Type of schedule for one-time execution at a specific time */
|
|
157
|
-
type: "scheduled";
|
|
158
|
-
/** Timestamp when the task should execute */
|
|
159
|
-
time: number;
|
|
160
|
-
}
|
|
161
|
-
| {
|
|
162
|
-
/** Type of schedule for delayed execution */
|
|
163
|
-
type: "delayed";
|
|
164
|
-
/** Timestamp when the task should execute */
|
|
165
|
-
time: number;
|
|
166
|
-
/** Number of seconds to delay execution */
|
|
167
|
-
delayInSeconds: number;
|
|
168
|
-
}
|
|
169
|
-
| {
|
|
170
|
-
/** Type of schedule for recurring execution based on cron expression */
|
|
171
|
-
type: "cron";
|
|
172
|
-
/** Timestamp for the next execution */
|
|
173
|
-
time: number;
|
|
174
|
-
/** Cron expression defining the schedule */
|
|
175
|
-
cron: string;
|
|
176
|
-
}
|
|
177
|
-
);
|
|
178
|
-
/**
|
|
179
|
-
* MCP Server state update message from server -> Client
|
|
180
|
-
*/
|
|
181
|
-
type MCPServerMessage = {
|
|
182
|
-
type: "cf_agent_mcp_servers";
|
|
183
|
-
mcp: MCPServersState;
|
|
184
|
-
};
|
|
185
|
-
type MCPServersState = {
|
|
186
|
-
servers: {
|
|
187
|
-
[id: string]: MCPServer;
|
|
188
|
-
};
|
|
189
|
-
tools: Tool[];
|
|
190
|
-
prompts: Prompt[];
|
|
191
|
-
resources: Resource[];
|
|
192
|
-
};
|
|
193
|
-
type MCPServer = {
|
|
194
|
-
name: string;
|
|
195
|
-
server_url: string;
|
|
196
|
-
auth_url: string | null;
|
|
197
|
-
state: "authenticating" | "connecting" | "ready" | "discovering" | "failed";
|
|
198
|
-
instructions: string | null;
|
|
199
|
-
capabilities: ServerCapabilities | null;
|
|
200
|
-
};
|
|
201
|
-
declare function getCurrentAgent<
|
|
202
|
-
T extends Agent<unknown, unknown> = Agent<unknown, unknown>
|
|
203
|
-
>(): {
|
|
204
|
-
agent: T | undefined;
|
|
205
|
-
connection: Connection | undefined;
|
|
206
|
-
request: Request | undefined;
|
|
207
|
-
email: AgentEmail | undefined;
|
|
208
|
-
};
|
|
209
|
-
/**
|
|
210
|
-
* Base class for creating Agent implementations
|
|
211
|
-
* @template Env Environment type containing bindings
|
|
212
|
-
* @template State State type to store within the Agent
|
|
213
|
-
*/
|
|
214
|
-
declare class Agent<Env, State = unknown> extends Server<Env> {
|
|
215
|
-
private _state;
|
|
216
|
-
private _ParentClass;
|
|
217
|
-
mcp: MCPClientManager;
|
|
218
|
-
/**
|
|
219
|
-
* Initial state for the Agent
|
|
220
|
-
* Override to provide default state values
|
|
221
|
-
*/
|
|
222
|
-
initialState: State;
|
|
223
|
-
/**
|
|
224
|
-
* Current state of the Agent
|
|
225
|
-
*/
|
|
226
|
-
get state(): State;
|
|
227
|
-
/**
|
|
228
|
-
* Agent configuration options
|
|
229
|
-
*/
|
|
230
|
-
static options: {
|
|
231
|
-
/** Whether the Agent should hibernate when inactive */
|
|
232
|
-
hibernate: boolean;
|
|
233
|
-
};
|
|
234
|
-
/**
|
|
235
|
-
* The observability implementation to use for the Agent
|
|
236
|
-
*/
|
|
237
|
-
observability?: Observability;
|
|
238
|
-
/**
|
|
239
|
-
* Execute SQL queries against the Agent's database
|
|
240
|
-
* @template T Type of the returned rows
|
|
241
|
-
* @param strings SQL query template strings
|
|
242
|
-
* @param values Values to be inserted into the query
|
|
243
|
-
* @returns Array of query results
|
|
244
|
-
*/
|
|
245
|
-
sql<T = Record<string, string | number | boolean | null>>(
|
|
246
|
-
strings: TemplateStringsArray,
|
|
247
|
-
...values: (string | number | boolean | null)[]
|
|
248
|
-
): T[];
|
|
249
|
-
constructor(ctx: AgentContext, env: Env);
|
|
250
|
-
private _setStateInternal;
|
|
251
|
-
/**
|
|
252
|
-
* Update the Agent's state
|
|
253
|
-
* @param state New state to set
|
|
254
|
-
*/
|
|
255
|
-
setState(state: State): void;
|
|
256
|
-
/**
|
|
257
|
-
* Called when the Agent's state is updated
|
|
258
|
-
* @param state Updated state
|
|
259
|
-
* @param source Source of the state update ("server" or a client connection)
|
|
260
|
-
*/
|
|
261
|
-
onStateUpdate(state: State | undefined, source: Connection | "server"): void;
|
|
262
|
-
/**
|
|
263
|
-
* Called when the Agent receives an email via routeAgentEmail()
|
|
264
|
-
* Override this method to handle incoming emails
|
|
265
|
-
* @param email Email message to process
|
|
266
|
-
*/
|
|
267
|
-
_onEmail(email: AgentEmail): Promise<void>;
|
|
268
|
-
/**
|
|
269
|
-
* Reply to an email
|
|
270
|
-
* @param email The email to reply to
|
|
271
|
-
* @param options Options for the reply
|
|
272
|
-
* @returns void
|
|
273
|
-
*/
|
|
274
|
-
replyToEmail(
|
|
275
|
-
email: AgentEmail,
|
|
276
|
-
options: {
|
|
277
|
-
fromName: string;
|
|
278
|
-
subject?: string | undefined;
|
|
279
|
-
body: string;
|
|
280
|
-
contentType?: string;
|
|
281
|
-
headers?: Record<string, string>;
|
|
282
|
-
}
|
|
283
|
-
): Promise<void>;
|
|
284
|
-
private _tryCatch;
|
|
285
|
-
/**
|
|
286
|
-
* Automatically wrap custom methods with agent context
|
|
287
|
-
* This ensures getCurrentAgent() works in all custom methods without decorators
|
|
288
|
-
*/
|
|
289
|
-
private _autoWrapCustomMethods;
|
|
290
|
-
onError(connection: Connection, error: unknown): void | Promise<void>;
|
|
291
|
-
onError(error: unknown): void | Promise<void>;
|
|
292
|
-
/**
|
|
293
|
-
* Render content (not implemented in base class)
|
|
294
|
-
*/
|
|
295
|
-
render(): void;
|
|
296
|
-
/**
|
|
297
|
-
* Schedule a task to be executed in the future
|
|
298
|
-
* @template T Type of the payload data
|
|
299
|
-
* @param when When to execute the task (Date, seconds delay, or cron expression)
|
|
300
|
-
* @param callback Name of the method to call
|
|
301
|
-
* @param payload Data to pass to the callback
|
|
302
|
-
* @returns Schedule object representing the scheduled task
|
|
303
|
-
*/
|
|
304
|
-
schedule<T = string>(
|
|
305
|
-
when: Date | string | number,
|
|
306
|
-
callback: keyof this,
|
|
307
|
-
payload?: T
|
|
308
|
-
): Promise<Schedule<T>>;
|
|
309
|
-
/**
|
|
310
|
-
* Get a scheduled task by ID
|
|
311
|
-
* @template T Type of the payload data
|
|
312
|
-
* @param id ID of the scheduled task
|
|
313
|
-
* @returns The Schedule object or undefined if not found
|
|
314
|
-
*/
|
|
315
|
-
getSchedule<T = string>(id: string): Promise<Schedule<T> | undefined>;
|
|
316
|
-
/**
|
|
317
|
-
* Get scheduled tasks matching the given criteria
|
|
318
|
-
* @template T Type of the payload data
|
|
319
|
-
* @param criteria Criteria to filter schedules
|
|
320
|
-
* @returns Array of matching Schedule objects
|
|
321
|
-
*/
|
|
322
|
-
getSchedules<T = string>(criteria?: {
|
|
323
|
-
id?: string;
|
|
324
|
-
type?: "scheduled" | "delayed" | "cron";
|
|
325
|
-
timeRange?: {
|
|
326
|
-
start?: Date;
|
|
327
|
-
end?: Date;
|
|
328
|
-
};
|
|
329
|
-
}): Schedule<T>[];
|
|
330
|
-
/**
|
|
331
|
-
* Cancel a scheduled task
|
|
332
|
-
* @param id ID of the task to cancel
|
|
333
|
-
* @returns true if the task was cancelled, false otherwise
|
|
334
|
-
*/
|
|
335
|
-
cancelSchedule(id: string): Promise<boolean>;
|
|
336
|
-
private _scheduleNextAlarm;
|
|
337
|
-
/**
|
|
338
|
-
* Method called when an alarm fires.
|
|
339
|
-
* Executes any scheduled tasks that are due.
|
|
340
|
-
*
|
|
341
|
-
* @remarks
|
|
342
|
-
* To schedule a task, please use the `this.schedule` method instead.
|
|
343
|
-
* See {@link https://developers.cloudflare.com/agents/api-reference/schedule-tasks/}
|
|
344
|
-
*/
|
|
345
|
-
readonly alarm: () => Promise<void>;
|
|
346
|
-
/**
|
|
347
|
-
* Destroy the Agent, removing all state and scheduled tasks
|
|
348
|
-
*/
|
|
349
|
-
destroy(): Promise<void>;
|
|
350
|
-
/**
|
|
351
|
-
* Get all methods marked as callable on this Agent
|
|
352
|
-
* @returns A map of method names to their metadata
|
|
353
|
-
*/
|
|
354
|
-
private _isCallable;
|
|
355
|
-
/**
|
|
356
|
-
* Connect to a new MCP Server
|
|
357
|
-
*
|
|
358
|
-
* @param url MCP Server SSE URL
|
|
359
|
-
* @param callbackHost Base host for the agent, used for the redirect URI.
|
|
360
|
-
* @param agentsPrefix agents routing prefix if not using `agents`
|
|
361
|
-
* @param options MCP client and transport (header) options
|
|
362
|
-
* @returns authUrl
|
|
363
|
-
*/
|
|
364
|
-
addMcpServer(
|
|
365
|
-
serverName: string,
|
|
366
|
-
url: string,
|
|
367
|
-
callbackHost: string,
|
|
368
|
-
agentsPrefix?: string,
|
|
369
|
-
options?: {
|
|
370
|
-
client?: ConstructorParameters<typeof Client>[1];
|
|
371
|
-
transport?: {
|
|
372
|
-
headers: HeadersInit;
|
|
373
|
-
};
|
|
374
|
-
}
|
|
375
|
-
): Promise<{
|
|
376
|
-
id: string;
|
|
377
|
-
authUrl: string | undefined;
|
|
378
|
-
}>;
|
|
379
|
-
_connectToMcpServerInternal(
|
|
380
|
-
_serverName: string,
|
|
381
|
-
url: string,
|
|
382
|
-
callbackUrl: string,
|
|
383
|
-
options?: {
|
|
384
|
-
client?: ConstructorParameters<typeof Client>[1];
|
|
385
|
-
/**
|
|
386
|
-
* We don't expose the normal set of transport options because:
|
|
387
|
-
* 1) we can't serialize things like the auth provider or a fetch function into the DB for reconnection purposes
|
|
388
|
-
* 2) We probably want these options to be agnostic to the transport type (SSE vs Streamable)
|
|
389
|
-
*
|
|
390
|
-
* This has the limitation that you can't override fetch, but I think headers should handle nearly all cases needed (i.e. non-standard bearer auth).
|
|
391
|
-
*/
|
|
392
|
-
transport?: {
|
|
393
|
-
headers?: HeadersInit;
|
|
394
|
-
};
|
|
395
|
-
},
|
|
396
|
-
reconnect?: {
|
|
397
|
-
id: string;
|
|
398
|
-
oauthClientId?: string;
|
|
399
|
-
}
|
|
400
|
-
): Promise<{
|
|
401
|
-
id: string;
|
|
402
|
-
authUrl: string | undefined;
|
|
403
|
-
clientId: string | undefined;
|
|
404
|
-
}>;
|
|
405
|
-
removeMcpServer(id: string): Promise<void>;
|
|
406
|
-
getMcpServers(): MCPServersState;
|
|
407
|
-
}
|
|
408
|
-
/**
|
|
409
|
-
* Namespace for creating Agent instances
|
|
410
|
-
* @template Agentic Type of the Agent class
|
|
411
|
-
*/
|
|
412
|
-
type AgentNamespace<Agentic extends Agent<unknown>> =
|
|
413
|
-
DurableObjectNamespace<Agentic>;
|
|
414
|
-
/**
|
|
415
|
-
* Agent's durable context
|
|
416
|
-
*/
|
|
417
|
-
type AgentContext = DurableObjectState;
|
|
418
|
-
/**
|
|
419
|
-
* Configuration options for Agent routing
|
|
420
|
-
*/
|
|
421
|
-
type AgentOptions<Env> = PartyServerOptions<Env> & {
|
|
422
|
-
/**
|
|
423
|
-
* Whether to enable CORS for the Agent
|
|
424
|
-
*/
|
|
425
|
-
cors?: boolean | HeadersInit | undefined;
|
|
426
|
-
};
|
|
427
|
-
/**
|
|
428
|
-
* Route a request to the appropriate Agent
|
|
429
|
-
* @param request Request to route
|
|
430
|
-
* @param env Environment containing Agent bindings
|
|
431
|
-
* @param options Routing options
|
|
432
|
-
* @returns Response from the Agent or undefined if no route matched
|
|
433
|
-
*/
|
|
434
|
-
declare function routeAgentRequest<Env>(
|
|
435
|
-
request: Request,
|
|
436
|
-
env: Env,
|
|
437
|
-
options?: AgentOptions<Env>
|
|
438
|
-
): Promise<Response | null>;
|
|
439
|
-
type EmailResolver<Env> = (
|
|
440
|
-
email: ForwardableEmailMessage,
|
|
441
|
-
env: Env
|
|
442
|
-
) => Promise<{
|
|
443
|
-
agentName: string;
|
|
444
|
-
agentId: string;
|
|
445
|
-
} | null>;
|
|
446
|
-
/**
|
|
447
|
-
* Create a resolver that uses the message-id header to determine the agent to route the email to
|
|
448
|
-
* @returns A function that resolves the agent to route the email to
|
|
449
|
-
*/
|
|
450
|
-
declare function createHeaderBasedEmailResolver<Env>(): EmailResolver<Env>;
|
|
451
|
-
/**
|
|
452
|
-
* Create a resolver that uses the email address to determine the agent to route the email to
|
|
453
|
-
* @param defaultAgentName The default agent name to use if the email address does not contain a sub-address
|
|
454
|
-
* @returns A function that resolves the agent to route the email to
|
|
455
|
-
*/
|
|
456
|
-
declare function createAddressBasedEmailResolver<Env>(
|
|
457
|
-
defaultAgentName: string
|
|
458
|
-
): EmailResolver<Env>;
|
|
459
|
-
/**
|
|
460
|
-
* Create a resolver that uses the agentName and agentId to determine the agent to route the email to
|
|
461
|
-
* @param agentName The name of the agent to route the email to
|
|
462
|
-
* @param agentId The id of the agent to route the email to
|
|
463
|
-
* @returns A function that resolves the agent to route the email to
|
|
464
|
-
*/
|
|
465
|
-
declare function createCatchAllEmailResolver<Env>(
|
|
466
|
-
agentName: string,
|
|
467
|
-
agentId: string
|
|
468
|
-
): EmailResolver<Env>;
|
|
469
|
-
type EmailRoutingOptions<Env> = AgentOptions<Env> & {
|
|
470
|
-
resolver: EmailResolver<Env>;
|
|
471
|
-
};
|
|
472
|
-
/**
|
|
473
|
-
* Route an email to the appropriate Agent
|
|
474
|
-
* @param email The email to route
|
|
475
|
-
* @param env The environment containing the Agent bindings
|
|
476
|
-
* @param options The options for routing the email
|
|
477
|
-
* @returns A promise that resolves when the email has been routed
|
|
478
|
-
*/
|
|
479
|
-
declare function routeAgentEmail<Env>(
|
|
480
|
-
email: ForwardableEmailMessage,
|
|
481
|
-
env: Env,
|
|
482
|
-
options: EmailRoutingOptions<Env>
|
|
483
|
-
): Promise<void>;
|
|
484
|
-
type AgentEmail = {
|
|
485
|
-
from: string;
|
|
486
|
-
to: string;
|
|
487
|
-
getRaw: () => Promise<Uint8Array>;
|
|
488
|
-
headers: Headers;
|
|
489
|
-
rawSize: number;
|
|
490
|
-
setReject: (reason: string) => void;
|
|
491
|
-
forward: (rcptTo: string, headers?: Headers) => Promise<void>;
|
|
492
|
-
reply: (options: { from: string; to: string; raw: string }) => Promise<void>;
|
|
493
|
-
};
|
|
494
|
-
type EmailSendOptions = {
|
|
495
|
-
to: string;
|
|
496
|
-
subject: string;
|
|
497
|
-
body: string;
|
|
498
|
-
contentType?: string;
|
|
499
|
-
headers?: Record<string, string>;
|
|
500
|
-
includeRoutingHeaders?: boolean;
|
|
501
|
-
agentName?: string;
|
|
502
|
-
agentId?: string;
|
|
503
|
-
domain?: string;
|
|
504
|
-
};
|
|
505
|
-
/**
|
|
506
|
-
* Get or create an Agent by name
|
|
507
|
-
* @template Env Environment type containing bindings
|
|
508
|
-
* @template T Type of the Agent class
|
|
509
|
-
* @param namespace Agent namespace
|
|
510
|
-
* @param name Name of the Agent instance
|
|
511
|
-
* @param options Options for Agent creation
|
|
512
|
-
* @returns Promise resolving to an Agent instance stub
|
|
513
|
-
*/
|
|
514
|
-
declare function getAgentByName<Env, T extends Agent<Env>>(
|
|
515
|
-
namespace: AgentNamespace<T>,
|
|
516
|
-
name: string,
|
|
517
|
-
options?: {
|
|
518
|
-
jurisdiction?: DurableObjectJurisdiction;
|
|
519
|
-
locationHint?: DurableObjectLocationHint;
|
|
520
|
-
}
|
|
521
|
-
): Promise<DurableObjectStub<T>>;
|
|
522
|
-
/**
|
|
523
|
-
* A wrapper for streaming responses in callable methods
|
|
524
|
-
*/
|
|
525
|
-
declare class StreamingResponse {
|
|
526
|
-
private _connection;
|
|
527
|
-
private _id;
|
|
528
|
-
private _closed;
|
|
529
|
-
constructor(connection: Connection, id: string);
|
|
530
|
-
/**
|
|
531
|
-
* Send a chunk of data to the client
|
|
532
|
-
* @param chunk The data to send
|
|
533
|
-
*/
|
|
534
|
-
send(chunk: unknown): void;
|
|
535
|
-
/**
|
|
536
|
-
* End the stream and send the final chunk (if any)
|
|
537
|
-
* @param finalChunk Optional final chunk of data to send
|
|
538
|
-
*/
|
|
539
|
-
end(finalChunk?: unknown): void;
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
export {
|
|
543
|
-
Agent as A,
|
|
544
|
-
type CallableMetadata as C,
|
|
545
|
-
type EmailResolver as E,
|
|
546
|
-
type MCPServersState as M,
|
|
547
|
-
type ObservabilityEvent as O,
|
|
548
|
-
type RPCRequest as R,
|
|
549
|
-
type StateUpdateMessage as S,
|
|
550
|
-
type AgentContext as a,
|
|
551
|
-
type Observability as b,
|
|
552
|
-
type RPCResponse as c,
|
|
553
|
-
type Schedule as d,
|
|
554
|
-
type MCPServerMessage as e,
|
|
555
|
-
type MCPServer as f,
|
|
556
|
-
genericObservability as g,
|
|
557
|
-
getCurrentAgent as h,
|
|
558
|
-
type AgentNamespace as i,
|
|
559
|
-
type AgentOptions as j,
|
|
560
|
-
createHeaderBasedEmailResolver as k,
|
|
561
|
-
createAddressBasedEmailResolver as l,
|
|
562
|
-
createCatchAllEmailResolver as m,
|
|
563
|
-
type EmailRoutingOptions as n,
|
|
564
|
-
routeAgentEmail as o,
|
|
565
|
-
type AgentEmail as p,
|
|
566
|
-
type EmailSendOptions as q,
|
|
567
|
-
routeAgentRequest as r,
|
|
568
|
-
getAgentByName as s,
|
|
569
|
-
StreamingResponse as t,
|
|
570
|
-
unstable_callable as u
|
|
571
|
-
};
|