@decocms/runtime 0.25.1 → 0.27.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/bindings/deconfig/index.d.ts +6 -5
  2. package/dist/bindings/deconfig/index.js +4 -4
  3. package/dist/bindings/index.d.ts +1286 -28
  4. package/dist/bindings/index.js +9 -7
  5. package/dist/bindings/index.js.map +1 -1
  6. package/dist/{chunk-F6XZPFWM.js → chunk-3AWMDSOH.js} +20 -51
  7. package/dist/chunk-3AWMDSOH.js.map +1 -0
  8. package/dist/{chunk-QELHWEZH.js → chunk-5EYZ2LVM.js} +8 -5
  9. package/dist/chunk-5EYZ2LVM.js.map +1 -0
  10. package/dist/{chunk-O6IURJAY.js → chunk-GPIGZ6DL.js} +38 -33
  11. package/dist/chunk-GPIGZ6DL.js.map +1 -0
  12. package/dist/{chunk-I2KGAHFY.js → chunk-LCU3FBI3.js} +6 -2
  13. package/dist/chunk-LCU3FBI3.js.map +1 -0
  14. package/dist/drizzle.d.ts +4 -3
  15. package/dist/{index-SnnmAI05.d.ts → index-6dtc1EK6.d.ts} +14 -14
  16. package/dist/{index-D8GtUDPS.d.ts → index-COMJ3oN7.d.ts} +4 -3
  17. package/dist/index.d.ts +4 -3
  18. package/dist/index.js +5 -5
  19. package/dist/mastra.d.ts +4 -3
  20. package/dist/mastra.js +1 -1
  21. package/dist/{mcp-Bv7IAgWX.d.ts → mcp-Dbqp-p04.d.ts} +9 -13
  22. package/dist/mcp-client.d.ts +10 -14
  23. package/dist/mcp-client.js +1 -1
  24. package/dist/proxy.d.ts +3 -2
  25. package/dist/proxy.js +2 -2
  26. package/dist/resources.d.ts +38 -38
  27. package/dist/views.d.ts +6 -6
  28. package/package.json +3 -1
  29. package/src/bindings/binder.ts +37 -34
  30. package/src/bindings/channels.ts +1 -1
  31. package/src/bindings/index.ts +8 -6
  32. package/src/bindings/language-model/ai-sdk.ts +87 -0
  33. package/src/bindings/language-model/index.ts +4 -0
  34. package/src/bindings/language-model/utils.ts +118 -0
  35. package/src/bindings/views.ts +1 -1
  36. package/src/connection.ts +8 -53
  37. package/src/http-client-transport.ts +1 -66
  38. package/src/mastra.ts +4 -0
  39. package/src/mcp-client.ts +22 -2
  40. package/src/mcp.ts +16 -17
  41. package/src/proxy.ts +6 -2
  42. package/dist/chunk-F6XZPFWM.js.map +0 -1
  43. package/dist/chunk-I2KGAHFY.js.map +0 -1
  44. package/dist/chunk-O6IURJAY.js.map +0 -1
  45. package/dist/chunk-QELHWEZH.js.map +0 -1
  46. package/dist/connection-DDtQYrea.d.ts +0 -30
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/mcp.ts","../src/bindings/channels.ts","../src/bindings/views.ts","../src/bindings/binder.ts","../src/bindings/resources/schemas.ts","../src/bindings/resources/bindings.ts","../src/bindings/deconfig/resources.ts"],"names":["z","impl","env"],"mappings":"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","file":"chunk-O6IURJAY.js","sourcesContent":["/* oxlint-disable no-explicit-any */\nimport { env } from \"cloudflare:workers\";\nimport { z } from \"zod\";\nimport type { MCPConnection } from \"./connection.ts\";\nimport type { DefaultEnv } from \"./index.ts\";\nimport { createMCPClientProxy } from \"./proxy.ts\";\n\nexport interface FetchOptions extends RequestInit {\n path?: string;\n segments?: string[];\n}\n\nconst Timings = z.object({\n sql_duration_ms: z.number().optional(),\n});\n\nconst Meta = z.object({\n changed_db: z.boolean().optional(),\n changes: z.number().optional(),\n duration: z.number().optional(),\n last_row_id: z.number().optional(),\n rows_read: z.number().optional(),\n rows_written: z.number().optional(),\n served_by_primary: z.boolean().optional(),\n served_by_region: z\n .enum([\"WNAM\", \"ENAM\", \"WEUR\", \"EEUR\", \"APAC\", \"OC\"])\n .optional(),\n size_after: z.number().optional(),\n timings: Timings.optional(),\n});\n\nconst QueryResult = z.object({\n meta: Meta.optional(),\n results: z.array(z.unknown()).optional(),\n success: z.boolean().optional(),\n});\n\nexport type QueryResult = z.infer<typeof QueryResult>;\n\nconst workspaceTools = [\n {\n name: \"INTEGRATIONS_GET\" as const,\n inputSchema: z.object({\n id: z.string(),\n }),\n outputSchema: z.object({\n connection: z.object({}),\n }),\n },\n {\n name: \"DATABASES_RUN_SQL\" as const,\n inputSchema: z.object({\n sql: z.string().describe(\"The SQL query to run\"),\n params: z\n .array(z.string())\n .describe(\"The parameters to pass to the SQL query\"),\n }),\n outputSchema: z.object({\n result: z.array(QueryResult),\n }),\n },\n] satisfies ToolBinder<string, unknown, object>[];\n\n// Default fetcher instance with API_SERVER_URL and API_HEADERS\nconst global = createMCPFetchStub<[]>({});\nexport const MCPClient = new Proxy(\n {} as typeof global & {\n forWorkspace: (\n workspace: string,\n token?: string,\n ) => MCPClientFetchStub<typeof workspaceTools>;\n forConnection: <TDefinition extends readonly ToolBinder[]>(\n connection: MCPConnectionProvider,\n ) => MCPClientFetchStub<TDefinition>;\n },\n {\n get(_, name) {\n if (name === \"toJSON\") {\n return null;\n }\n\n if (name === \"forWorkspace\") {\n return (workspace: string, token?: string) =>\n createMCPFetchStub<[]>({\n workspace,\n token,\n decoCmsApiUrl: (env as DefaultEnv).DECO_API_URL,\n });\n }\n if (name === \"forConnection\") {\n return <TDefinition extends readonly ToolBinder[]>(\n connection: MCPConnectionProvider,\n ) =>\n createMCPFetchStub<TDefinition>({\n connection,\n decoCmsApiUrl: (env as DefaultEnv).DECO_API_URL,\n });\n }\n return global[name as keyof typeof global];\n },\n },\n);\n\nexport interface ToolBinder<\n TName extends string = string,\n TInput = any,\n TReturn extends object | null | boolean = object,\n> {\n name: TName;\n inputSchema: z.ZodType<TInput>;\n outputSchema?: z.ZodType<TReturn>;\n opt?: true;\n}\nexport type MCPClientStub<TDefinition extends readonly ToolBinder[]> = {\n [K in TDefinition[number] as K[\"name\"]]: K extends ToolBinder<\n string,\n infer TInput,\n infer TReturn\n >\n ? (params: TInput, init?: RequestInit) => Promise<TReturn>\n : never;\n};\n\nexport type MCPClientFetchStub<TDefinition extends readonly ToolBinder[]> = {\n [K in TDefinition[number] as K[\"name\"]]: K extends ToolBinder<\n string,\n infer TInput,\n infer TReturn\n >\n ? (params: TInput, init?: RequestInit) => Promise<Awaited<TReturn>>\n : never;\n};\n\nexport type MCPConnectionProvider = MCPConnection;\n\nexport interface MCPClientRaw {\n callTool: (tool: string, args: unknown) => Promise<unknown>;\n listTools: () => Promise<\n {\n name: string;\n inputSchema: any;\n outputSchema?: any;\n description: string;\n }[]\n >;\n}\nexport type JSONSchemaToZodConverter = (jsonSchema: any) => z.ZodTypeAny;\nexport interface CreateStubAPIOptions {\n mcpPath?: string;\n decoCmsApiUrl?: string;\n workspace?: string;\n token?: string;\n connection?: MCPConnectionProvider;\n debugId?: () => string;\n getErrorByStatusCode?: (\n statusCode: number,\n message?: string,\n traceId?: string,\n errorObject?: unknown,\n ) => Error;\n supportsToolName?: boolean;\n}\n\nexport function createMCPFetchStub<TDefinition extends readonly ToolBinder[]>(\n options?: CreateStubAPIOptions,\n): MCPClientFetchStub<TDefinition> {\n return createMCPClientProxy<MCPClientFetchStub<TDefinition>>({\n ...(options ?? {}),\n });\n}\n","import { z } from \"zod\";\nimport type { ToolBinder } from \"../mcp.ts\";\n\nconst callbacksSchema = z.object({\n stream: z.string(),\n generate: z.string(),\n generateObject: z.string(),\n});\n\nconst channelIdSchema = z.object({\n workspace: z.string(),\n discriminator: z.string(),\n});\n\nconst channelBindingSchema = channelIdSchema.extend({\n agentId: z.string(),\n agentName: z.string(),\n agentLink: z.string(),\n});\n\nconst joinChannelSchema = channelBindingSchema.extend({\n callbacks: callbacksSchema,\n});\n\nconst listChannelsSchema = z.object({\n channels: z.array(\n z.object({\n label: z.string(),\n value: z.string(),\n }),\n ),\n});\n\nexport type Callbacks = z.infer<typeof callbacksSchema>;\nexport type JoinedChannelPayload = z.infer<typeof joinChannelSchema>;\nexport type ListChannelsSchema = z.infer<typeof listChannelsSchema>;\nexport const CHANNEL_BINDING_SCHEMA = [\n {\n name: \"DECO_CHAT_CHANNELS_JOIN\" as const,\n inputSchema: joinChannelSchema,\n outputSchema: z.any(),\n },\n {\n name: \"DECO_CHAT_CHANNELS_LEAVE\" as const,\n inputSchema: channelIdSchema,\n outputSchema: z.any(),\n },\n {\n name: \"DECO_CHAT_CHANNELS_LIST\" as const,\n inputSchema: z.any(),\n outputSchema: listChannelsSchema,\n opt: true,\n },\n] as const satisfies readonly ToolBinder[];\n","import { ViewsListOutputSchema } from \"../views.ts\";\nimport { z } from \"zod\";\nimport type { ToolBinder } from \"../mcp.ts\";\n\nexport const VIEW_BINDING_SCHEMA = [\n {\n name: \"DECO_CHAT_VIEWS_LIST\" as const,\n inputSchema: z.any(),\n outputSchema: ViewsListOutputSchema,\n },\n] as const satisfies readonly ToolBinder[];\n\n// Re-export for existing imports expecting listViewsSchema\nexport const listViewsSchema = ViewsListOutputSchema;\n","/* oxlint-disable no-explicit-any */\nimport { z } from \"zod\";\nimport type { MCPConnection } from \"../connection.ts\";\nimport { createPrivateTool } from \"../mastra.ts\";\nimport {\n createMCPFetchStub,\n type MCPClientFetchStub,\n type ToolBinder,\n} from \"../mcp.ts\";\nimport { CHANNEL_BINDING_SCHEMA } from \"./channels.ts\";\nimport { VIEW_BINDING_SCHEMA } from \"./views.ts\";\n\n// ToolLike is a simplified version of the Tool interface that matches what we need for bindings\nexport interface ToolLike<\n TName extends string = string,\n TInput = any,\n TReturn extends object | null | boolean = object,\n> {\n name: TName;\n description: string;\n inputSchema: z.ZodType<TInput>;\n outputSchema?: z.ZodType<TReturn>;\n handler: (props: TInput) => Promise<TReturn> | TReturn;\n}\n\nexport type Binder<\n TDefinition extends readonly ToolBinder[] = readonly ToolBinder[],\n> = TDefinition;\n\nexport type BinderImplementation<\n TBinder extends Binder<any>,\n TContext = any,\n> = TBinder extends Binder<infer TDefinition>\n ? {\n [K in keyof TDefinition]: Omit<\n ToolLike<\n TDefinition[K][\"name\"],\n z.infer<TDefinition[K][\"inputSchema\"]>,\n TDefinition[K] extends { outputSchema: infer Schema }\n ? Schema extends z.ZodType\n ? z.infer<Schema>\n : never\n : never\n >,\n \"name\" | \"inputSchema\" | \"outputSchema\" | \"handler\"\n > & {\n handler: (\n props: z.infer<TDefinition[K][\"inputSchema\"]>,\n c?: TContext,\n ) => ReturnType<\n ToolLike<\n TDefinition[K][\"name\"],\n z.infer<TDefinition[K][\"inputSchema\"]>,\n TDefinition[K] extends { outputSchema: infer Schema }\n ? Schema extends z.ZodType\n ? z.infer<Schema>\n : never\n : never\n >[\"handler\"]\n >;\n };\n }\n : never;\n\nexport const bindingClient = <TDefinition extends readonly ToolBinder[]>(\n binder: TDefinition,\n) => {\n return {\n implements: (tools: ToolBinder[]) => {\n return binder.every(\n (tool) =>\n tool.opt === true || (tools ?? []).some((t) => t.name === tool.name),\n );\n },\n forConnection: (\n mcpConnection: MCPConnection,\n ): MCPClientFetchStub<TDefinition> => {\n const stub = createMCPFetchStub<TDefinition>({\n connection: mcpConnection,\n });\n return new Proxy<MCPClientFetchStub<TDefinition>>(\n {} as MCPClientFetchStub<TDefinition>,\n {\n get(_, name) {\n if (typeof name !== \"string\") {\n throw new Error(\"Name must be a string\");\n }\n\n return (args: Record<string, unknown>) => {\n return (\n stub[name as keyof MCPClientFetchStub<TDefinition>] as (\n args: Record<string, unknown>,\n ) => Promise<unknown>\n )(args);\n };\n },\n },\n );\n },\n };\n};\n\nexport type MCPBindingClient<T extends ReturnType<typeof bindingClient>> =\n ReturnType<T[\"forConnection\"]>;\n\nexport const ChannelBinding = bindingClient(CHANNEL_BINDING_SCHEMA);\n\nexport const ViewBinding = bindingClient(VIEW_BINDING_SCHEMA);\n\nexport type { Callbacks } from \"./channels.ts\";\n\nexport const impl = <TBinder extends Binder>(\n schema: TBinder,\n implementation: BinderImplementation<TBinder>,\n createToolFn = createPrivateTool,\n) => {\n const impl: ReturnType<typeof createToolFn>[] = [];\n for (const key in schema) {\n const toolSchema = schema[key];\n const toolImplementation = implementation[key];\n\n if (toolSchema.opt && !toolImplementation) {\n continue;\n }\n\n if (!toolImplementation) {\n throw new Error(`Implementation for ${key} is required`);\n }\n\n const { name, handler, ...toolLike }: ToolLike = {\n ...toolSchema,\n ...toolImplementation,\n };\n impl.push(\n createToolFn({\n ...toolLike,\n id: name,\n execute: ({ context }) => Promise.resolve(handler(context)),\n }),\n );\n }\n return impl;\n};\n","import { z } from \"zod\";\n\n/**\n * Resources 2.0 Schemas\n *\n * This module provides standardized schemas for Resources 2.0, a major version upgrade\n * that introduces standardized resource management with `rsc://` URI format and\n * consistent CRUD operations across all resource types.\n *\n * Key Features:\n * - Standardized `rsc://` URI format for all resources\n * - Generic CRUD operation schemas that work with any resource type\n * - Type-safe factory functions for creating resource-specific schemas\n * - Comprehensive validation and error handling\n * - Full TypeScript support with Zod validation\n */\n\n// Common URI format validation for Resources 2.0\nexport const ResourceUriSchema = z\n .string()\n .regex(\n /^rsc:\\/\\/[^/]+\\/[^/]+\\/.+$/,\n \"Invalid resource URI format. Expected format: rsc://workspace/project/resource-id\",\n );\n\nexport const DescribeInputSchema = z.object({});\nexport const DescribeOutputSchema = z.object({\n uriTemplate: ResourceUriSchema.describe(\"URI template for the resource\"),\n features: z.object({\n watch: z.object({\n pathname: z.string().describe(\"Pathname to watch\"),\n }),\n }),\n});\n\n/**\n * Search input schema for resource queries\n * Supports pagination, filtering, sorting, and search terms\n */\nexport const SearchInputSchema = z.object({\n term: z.string().optional().describe(\"Search term to filter resources\"),\n page: z.number().int().min(1).default(1).describe(\"Page number (1-based)\"),\n pageSize: z\n .number()\n .int()\n .min(1)\n .max(100)\n .default(20)\n .describe(\"Number of items per page\"),\n filters: z.record(z.any()).optional().describe(\"Additional filters to apply\"),\n sortBy: z.string().optional().describe(\"Field to sort by\"),\n sortOrder: z\n .enum([\"asc\", \"desc\"])\n .optional()\n .default(\"asc\")\n .describe(\"Sort order\"),\n});\n\n/**\n * Factory function to create search output schema for a specific resource type\n * @param itemSchema - The schema for individual resource items\n * @returns Zod schema for search results with pagination metadata\n */\nexport function createSearchOutputSchema<T extends z.ZodTypeAny>(\n itemSchema: T,\n) {\n return z.object({\n items: z.array(itemSchema).describe(\"Array of matching resources\"),\n totalCount: z\n .number()\n .int()\n .min(0)\n .describe(\"Total number of matching resources\"),\n page: z.number().int().min(1).describe(\"Current page number\"),\n pageSize: z.number().int().min(1).describe(\"Number of items per page\"),\n totalPages: z.number().int().min(0).describe(\"Total number of pages\"),\n hasNextPage: z.boolean().describe(\"Whether there are more pages available\"),\n hasPreviousPage: z\n .boolean()\n .describe(\"Whether there are previous pages available\"),\n });\n}\n\n/**\n * Read input schema for retrieving a single resource\n */\nexport const ReadInputSchema = z.object({\n uri: ResourceUriSchema.describe(\"URI of the resource to read\"),\n});\n\n/**\n * Factory function to create read output schema for a specific resource type\n * @param dataSchema - The schema for the resource data\n * @returns Zod schema for read operation results\n */\nexport function createReadOutputSchema<T extends z.ZodTypeAny>(dataSchema: T) {\n return z.object({\n uri: ResourceUriSchema.describe(\"URI of the resource\"),\n data: dataSchema.describe(\"Resource data\"),\n created_at: z.string().datetime().optional().describe(\"Creation timestamp\"),\n updated_at: z\n .string()\n .datetime()\n .optional()\n .describe(\"Last update timestamp\"),\n created_by: z.string().optional().describe(\"User who created the resource\"),\n updated_by: z\n .string()\n .optional()\n .describe(\"User who last updated the resource\"),\n });\n}\n\n/**\n * Factory function to create create input schema for a specific resource type\n * @param dataSchema - The schema for the resource data to create\n * @returns Zod schema for create operation input\n */\nexport function createCreateInputSchema<T extends z.ZodTypeAny>(dataSchema: T) {\n return z.object({\n data: dataSchema.describe(\"Resource data to create\"),\n });\n}\n\n/**\n * Factory function to create create output schema for a specific resource type\n * @param dataSchema - The schema for the created resource data\n * @returns Zod schema for create operation results\n */\nexport function createCreateOutputSchema<T extends z.ZodTypeAny>(\n dataSchema: T,\n) {\n return z.object({\n uri: ResourceUriSchema.describe(\"URI of the created resource\"),\n data: dataSchema.describe(\"Created resource data\"),\n created_at: z.string().datetime().optional().describe(\"Creation timestamp\"),\n updated_at: z\n .string()\n .datetime()\n .optional()\n .describe(\"Last update timestamp\"),\n created_by: z.string().optional().describe(\"User who created the resource\"),\n });\n}\n\n/**\n * Factory function to create update input schema for a specific resource type\n * @param dataSchema - The schema for the resource data to update\n * @returns Zod schema for update operation input\n */\nexport function createUpdateInputSchema<T extends z.ZodTypeAny>(dataSchema: T) {\n return z.object({\n uri: ResourceUriSchema.describe(\"URI of the resource to update\"),\n data: dataSchema.describe(\"Updated resource data\"),\n });\n}\n\n/**\n * Factory function to create update output schema for a specific resource type\n * @param dataSchema - The schema for the updated resource data\n * @returns Zod schema for update operation results\n */\nexport function createUpdateOutputSchema<T extends z.ZodTypeAny>(\n dataSchema: T,\n) {\n return z.object({\n uri: ResourceUriSchema.describe(\"URI of the updated resource\"),\n data: dataSchema.describe(\"Updated resource data\"),\n created_at: z\n .string()\n .datetime()\n .optional()\n .describe(\"Original creation timestamp\"),\n updated_at: z\n .string()\n .datetime()\n .optional()\n .describe(\"Last update timestamp\"),\n created_by: z\n .string()\n .optional()\n .describe(\"User who originally created the resource\"),\n updated_by: z\n .string()\n .optional()\n .describe(\"User who last updated the resource\"),\n });\n}\n\n/**\n * Delete input schema for removing a resource\n */\nexport const DeleteInputSchema = z.object({\n uri: ResourceUriSchema.describe(\"URI of the resource to delete\"),\n});\n\n/**\n * Delete output schema for delete operation results\n */\nexport const DeleteOutputSchema = z.object({\n success: z.boolean().describe(\"Whether the deletion was successful\"),\n uri: ResourceUriSchema.describe(\"URI of the deleted resource\"),\n});\n\n/**\n * Factory function to create item schema for a specific resource type\n * This schema is used in search results and lists\n * @param dataSchema - The schema for the resource data\n * @returns Zod schema for resource items with metadata\n */\nexport function createItemSchema<T extends z.ZodTypeAny>(dataSchema: T) {\n return z.object({\n uri: ResourceUriSchema.describe(\"URI of the resource\"),\n data: z\n .object({\n name: z.string().min(1, \"Name is required\"),\n description: z\n .string()\n .optional()\n .describe(\"Description of the resource\"),\n icon: z.string().url().optional().describe(\"URL to the resource icon\"),\n })\n .and(dataSchema)\n .describe(\"Resource data with required name\"),\n created_at: z.string().datetime().optional().describe(\"Creation timestamp\"),\n updated_at: z\n .string()\n .datetime()\n .optional()\n .describe(\"Last update timestamp\"),\n created_by: z.string().optional().describe(\"User who created the resource\"),\n updated_by: z\n .string()\n .optional()\n .describe(\"User who last updated the resource\"),\n });\n}\n\n// Export types for TypeScript usage\nexport type ResourceUri = z.infer<typeof ResourceUriSchema>;\nexport type SearchInput = z.infer<typeof SearchInputSchema>;\nexport type SearchOutput<T extends z.ZodTypeAny> = z.infer<\n ReturnType<typeof createSearchOutputSchema<T>>\n>;\nexport type ReadInput = z.infer<typeof ReadInputSchema>;\nexport type ReadOutput<T extends z.ZodTypeAny> = z.infer<\n ReturnType<typeof createReadOutputSchema<T>>\n>;\nexport type CreateInput<T extends z.ZodTypeAny> = z.infer<\n ReturnType<typeof createCreateInputSchema<T>>\n>;\nexport type CreateOutput<T extends z.ZodTypeAny> = z.infer<\n ReturnType<typeof createCreateOutputSchema<T>>\n>;\nexport type UpdateInput<T extends z.ZodTypeAny> = z.infer<\n ReturnType<typeof createUpdateInputSchema<T>>\n>;\nexport type UpdateOutput<T extends z.ZodTypeAny> = z.infer<\n ReturnType<typeof createUpdateOutputSchema<T>>\n>;\nexport type DeleteInput = z.infer<typeof DeleteInputSchema>;\nexport type DeleteOutput = z.infer<typeof DeleteOutputSchema>;\nexport type ResourceItem<T extends z.ZodTypeAny> = z.infer<\n ReturnType<typeof createItemSchema<T>>\n>;\n","import { z } from \"zod\";\nimport type { ToolBinder } from \"../../mcp.ts\";\nimport {\n createCreateInputSchema,\n createCreateOutputSchema,\n createItemSchema,\n createReadOutputSchema,\n createSearchOutputSchema,\n createUpdateInputSchema,\n createUpdateOutputSchema,\n DeleteInputSchema,\n DeleteOutputSchema,\n DescribeInputSchema,\n DescribeOutputSchema,\n ReadInputSchema,\n SearchInputSchema,\n} from \"./schemas.ts\";\nexport type BaseResourceDataSchema = z.ZodObject<{\n name: z.ZodString;\n description: z.ZodString;\n}>;\n\n/**\n * Resources 2.0 Bindings\n *\n * This module provides standardized tool bindings for Resources 2.0, a major version upgrade\n * that introduces standardized resource management with `rsc://` URI format and\n * consistent CRUD operations across all resource types.\n *\n * Key Features:\n * - Generic resource bindings that work with any resource type\n * - Standardized tool naming: `deco_resource_*`\n * - Full TypeScript support with proper type constraints\n * - Integration with existing binding system\n */\n\n/**\n * Creates generic resource bindings for Resources 2.0\n *\n * This function generates standardized tool bindings that work with any resource type\n * by accepting a custom data schema and resource name. The bindings provide the standard CRUD operations:\n * - DECO_RESOURCE_{RESOURCE}_SEARCH - Search resources with pagination and filtering\n * - DECO_RESOURCE_{RESOURCE}_READ - Read a single resource by URI\n * - DECO_RESOURCE_{RESOURCE}_CREATE - Create new resources (optional)\n * - DECO_RESOURCE_{RESOURCE}_UPDATE - Update existing resources (optional)\n * - DECO_RESOURCE_{RESOURCE}_DELETE - Delete resources (optional)\n *\n * @param resourceName - The name of the resource type (e.g., \"workflow\", \"document\", \"user\")\n * @param dataSchema - The Zod schema for the resource data type\n * @returns Array of tool bindings for Resources 2.0 CRUD operations\n */\nexport function createResourceBindings<\n TDataSchema extends BaseResourceDataSchema,\n>(resourceName: string, dataSchema: TDataSchema) {\n const readOutputSchema = createReadOutputSchema(dataSchema);\n return [\n {\n name: `DECO_RESOURCE_${resourceName.toUpperCase()}_SEARCH` as const,\n inputSchema: SearchInputSchema,\n outputSchema: createSearchOutputSchema(\n createItemSchema(dataSchema.pick({ name: true, description: true })),\n ),\n },\n {\n name: `DECO_RESOURCE_${resourceName.toUpperCase()}_READ` as const,\n inputSchema: ReadInputSchema,\n outputSchema: readOutputSchema,\n },\n {\n name: `DECO_RESOURCE_${resourceName.toUpperCase()}_CREATE` as const,\n inputSchema: createCreateInputSchema(dataSchema),\n outputSchema: createCreateOutputSchema(dataSchema),\n opt: true,\n },\n {\n name: `DECO_RESOURCE_${resourceName.toUpperCase()}_UPDATE` as const,\n inputSchema: createUpdateInputSchema(dataSchema),\n outputSchema: createUpdateOutputSchema(dataSchema),\n opt: true,\n },\n {\n name: `DECO_RESOURCE_${resourceName.toUpperCase()}_DELETE` as const,\n inputSchema: DeleteInputSchema,\n outputSchema: DeleteOutputSchema,\n opt: true,\n },\n {\n name: `DECO_RESOURCE_${resourceName.toUpperCase()}_DESCRIBE` as const,\n inputSchema: DescribeInputSchema,\n outputSchema: DescribeOutputSchema,\n opt: true,\n },\n ] as const satisfies readonly ToolBinder[];\n}\n\n// Export types for TypeScript usage\nexport type ResourceBinding<TDataSchema extends BaseResourceDataSchema> =\n ReturnType<typeof createResourceBindings<TDataSchema>>;\nexport type ResourceBindingsFunction = typeof createResourceBindings;\n","/**\n * DeconfigResources 2.0\n *\n * This module provides file-based resource management using the Resources 2.0 system\n * with standardized `rsc://` URI format and consistent CRUD operations.\n *\n * Key Features:\n * - File-based resource storage in DECONFIG directories\n * - Resources 2.0 standardized schemas and URI format\n * - Type-safe resource definitions with Zod validation\n * - Full CRUD operations with proper error handling\n * - Integration with existing deconfig file system\n * - Support for custom resource schemas and enhancements\n */\n\nimport { DefaultEnv } from \"../../index.ts\";\nimport { impl } from \"../binder.ts\";\nimport type { BaseResourceDataSchema } from \"../resources/bindings.ts\";\nimport { createResourceBindings } from \"../resources/bindings.ts\";\nimport { ResourceUriSchema } from \"../resources/schemas.ts\";\nimport {\n ResourcePath,\n ResourceUri,\n getMetadataString,\n normalizeDirectory,\n toAsyncIterator,\n} from \"./helpers.ts\";\nimport type { DeconfigClient, DeconfigResourceOptions } from \"./types.ts\";\nimport { WELL_KNOWN_ORIGINS } from \"../../well-known.ts\";\n\nexport type {\n EnhancedResourcesTools,\n ResourcesBinding,\n ResourcesTools,\n} from \"./types.ts\";\nexport type { DeconfigClient, DeconfigResourceOptions };\n\n// Error classes - these will be imported from SDK when used there\nexport class NotFoundError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"NotFoundError\";\n }\n}\n\nexport class UserInputError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"UserInputError\";\n }\n}\n\nconst dirOf = (\n options: Pick<\n DeconfigResourceOptions<BaseResourceDataSchema>,\n \"directory\" | \"resourceName\"\n >,\n) => {\n return options.directory\n ? options.directory\n : `/resources/${options.resourceName}`;\n};\nexport const createDeconfigResource = <\n TDataSchema extends BaseResourceDataSchema,\n>(\n options: DeconfigResourceOptions<TDataSchema>,\n) => {\n const {\n resourceName,\n dataSchema,\n enhancements,\n env,\n validate: semanticValidate,\n } = options;\n const deconfig = env.DECONFIG;\n const directory = dirOf(options);\n\n // Create resource-specific bindings using the provided data schema\n const resourceBindings = createResourceBindings(resourceName, dataSchema);\n\n const tools = impl(resourceBindings, [\n // deco_resource_search\n {\n description:\n enhancements?.[\n `DECO_RESOURCE_${resourceName.toUpperCase()}_SEARCH` as keyof typeof enhancements\n ]?.description ||\n `Search ${resourceName} resources in the DECONFIG directory ${directory}`,\n handler: async ({\n term,\n page = 1,\n pageSize = 10,\n filters,\n sortBy,\n sortOrder,\n }) => {\n const normalizedDir = normalizeDirectory(directory);\n const offset = pageSize !== Infinity ? (page - 1) * pageSize : 0;\n\n // List all files in the directory\n const filesList = await deconfig.LIST_FILES({\n prefix: normalizedDir,\n });\n\n // Filter files that end with .json\n const allFiles = Object.entries(filesList.files)\n .filter(([path]) => path.endsWith(\".json\"))\n .map(([path, metadata]) => ({\n path,\n resourceId: path\n .replace(`${normalizedDir}/`, \"\")\n .replace(\".json\", \"\"),\n metadata,\n }));\n\n // Simple search - filter by resource ID, path, title, description, created_by, or updated_by\n let filteredFiles = allFiles;\n if (term) {\n filteredFiles = allFiles.filter(({ resourceId, path, metadata }) => {\n const searchTerm = term.toLowerCase();\n return (\n resourceId.toLowerCase().includes(searchTerm) ||\n path.toLowerCase().includes(searchTerm) ||\n (\n getMetadataString(metadata, \"name\")?.toLowerCase() ?? \"\"\n ).includes(searchTerm) ||\n (\n getMetadataString(metadata, \"description\")?.toLowerCase() ?? \"\"\n ).includes(searchTerm) ||\n (\n getMetadataString(metadata, \"createdBy\")?.toLowerCase() ?? \"\"\n ).includes(searchTerm) ||\n (\n getMetadataString(metadata, \"updatedBy\")?.toLowerCase() ?? \"\"\n ).includes(searchTerm)\n );\n });\n }\n\n // Apply additional filters if provided\n if (filters) {\n const createdByFilter = filters.created_by as\n | string\n | string[]\n | undefined;\n const updatedByFilter = filters.updated_by as\n | string\n | string[]\n | undefined;\n\n if (createdByFilter) {\n const createdBySet = new Set(\n Array.isArray(createdByFilter)\n ? createdByFilter.map((v: unknown) => String(v))\n : [String(createdByFilter)],\n );\n filteredFiles = filteredFiles.filter(({ metadata }) => {\n const value = getMetadataString(metadata, \"createdBy\");\n return value ? createdBySet.has(value) : false;\n });\n }\n\n if (updatedByFilter) {\n const updatedBySet = new Set(\n Array.isArray(updatedByFilter)\n ? updatedByFilter.map((v: unknown) => String(v))\n : [String(updatedByFilter)],\n );\n filteredFiles = filteredFiles.filter(({ metadata }) => {\n const value = getMetadataString(metadata, \"updatedBy\");\n return value ? updatedBySet.has(value) : false;\n });\n }\n }\n\n // Sort if specified\n if (sortBy) {\n filteredFiles.sort((a, b) => {\n let aValue: string | number;\n let bValue: string | number;\n\n if (sortBy === \"resourceId\") {\n aValue = a.resourceId;\n bValue = b.resourceId;\n } else if (sortBy === \"name\") {\n aValue = getMetadataString(a.metadata, \"name\") || a.resourceId;\n bValue = getMetadataString(b.metadata, \"name\") || b.resourceId;\n } else if (sortBy === \"description\") {\n aValue = getMetadataString(a.metadata, \"description\") || \"\";\n bValue = getMetadataString(b.metadata, \"description\") || \"\";\n } else {\n aValue = a.metadata.mtime;\n bValue = b.metadata.mtime;\n }\n\n if (sortOrder === \"desc\") {\n return aValue < bValue ? 1 : aValue > bValue ? -1 : 0;\n } else {\n return aValue > bValue ? 1 : aValue < bValue ? -1 : 0;\n }\n });\n }\n\n // Apply pagination\n const totalCount = filteredFiles.length;\n const totalPages = Math.ceil(totalCount / pageSize);\n const hasNextPage = offset + pageSize < totalCount;\n const hasPreviousPage = page > 1;\n const items = filteredFiles.slice(offset, offset + pageSize);\n\n return {\n items: items.map(({ resourceId, metadata }) => {\n // Construct Resources 2.0 URI\n const uri = ResourceUri.build(\n env.DECO_REQUEST_CONTEXT.integrationId as string,\n resourceName,\n resourceId,\n );\n\n // Extract title and description from metadata, with fallbacks\n const name = getMetadataString(metadata, \"name\") || resourceId;\n const description =\n getMetadataString(metadata, \"description\") || \"\";\n\n return {\n uri,\n data: { name, description },\n created_at:\n \"ctime\" in metadata && typeof metadata.ctime === \"number\"\n ? new Date(metadata.ctime).toISOString()\n : undefined,\n updated_at:\n \"mtime\" in metadata && typeof metadata.mtime === \"number\"\n ? new Date(metadata.mtime).toISOString()\n : undefined,\n created_by: getMetadataString(metadata, \"createdBy\"),\n updated_by:\n getMetadataString(metadata, \"updatedBy\") ||\n getMetadataString(metadata, \"createdBy\"),\n };\n }),\n totalCount,\n page,\n pageSize,\n totalPages,\n hasNextPage,\n hasPreviousPage,\n };\n },\n },\n\n // deco_resource_read\n {\n description:\n enhancements?.[\n `DECO_RESOURCE_${resourceName.toUpperCase()}_READ` as keyof typeof enhancements\n ]?.description ||\n `Read a ${resourceName} resource from the DECONFIG directory ${directory}`,\n handler: async ({ uri }) => {\n // Validate URI format\n ResourceUriSchema.parse(uri);\n\n const resourceId = ResourceUri.unwind(uri).resourceId;\n const filePath = ResourcePath.build(directory, resourceId);\n\n try {\n const fileData = await deconfig.READ_FILE({\n path: filePath,\n format: \"plainString\",\n });\n\n const content = fileData.content as string;\n\n // Parse the JSON content\n let parsedData: Record<string, unknown> = {};\n try {\n parsedData = JSON.parse(content);\n } catch {\n throw new UserInputError(\"Invalid JSON content in resource file\");\n }\n\n // Validate against schema\n const validatedData = dataSchema.parse(parsedData);\n\n return {\n uri,\n data: validatedData,\n created_at: new Date(fileData.ctime).toISOString(),\n updated_at: new Date(fileData.mtime).toISOString(),\n created_by:\n parsedData &&\n \"created_by\" in parsedData &&\n typeof parsedData.created_by === \"string\"\n ? parsedData.created_by\n : undefined,\n updated_by:\n parsedData &&\n \"updated_by\" in parsedData &&\n typeof parsedData.updated_by === \"string\"\n ? parsedData.updated_by\n : undefined,\n };\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"not found\")) {\n throw new NotFoundError(`Resource not found: ${uri}`);\n }\n throw error;\n }\n },\n },\n\n // deco_resource_create (optional)\n {\n description:\n enhancements?.[\n `DECO_RESOURCE_${resourceName.toUpperCase()}_CREATE` as keyof typeof enhancements\n ]?.description ||\n `Create a new ${resourceName} resource in the DECONFIG directory ${directory}`,\n handler: async ({ data }) => {\n // Validate data against schema\n const validatedData = dataSchema.parse(data);\n\n // Run semantic validation if provided\n if (semanticValidate) {\n await semanticValidate(validatedData);\n }\n\n // Extract resource ID from name or generate one\n const resourceId =\n (validatedData.name as string)?.replace(/[^a-zA-Z0-9-_]/g, \"-\") ||\n crypto.randomUUID();\n const uri = ResourceUri.build(\n env.DECO_REQUEST_CONTEXT.integrationId as string,\n resourceName,\n resourceId,\n );\n const filePath = ResourcePath.build(directory, resourceId);\n const user = env.DECO_REQUEST_CONTEXT.ensureAuthenticated();\n // Prepare resource data with metadata\n const resourceData = {\n ...validatedData,\n id: resourceId,\n created_at: new Date().toISOString(),\n updated_at: new Date().toISOString(),\n created_by: user?.id ? String(user.id) : undefined,\n updated_by: user?.id ? String(user.id) : undefined,\n };\n\n const fileContent = JSON.stringify(resourceData, null, 2);\n const putResult = await deconfig.PUT_FILE({\n path: filePath,\n content: fileContent,\n metadata: {\n resourceType: resourceName,\n resourceId,\n createdBy: user?.id,\n name: validatedData.name || resourceId,\n description: validatedData.description || \"\",\n },\n });\n\n if (putResult.conflict) {\n throw new UserInputError(\n \"Resource write conflicted. Please refresh and retry.\",\n );\n }\n\n return {\n uri,\n data: validatedData,\n created_at: resourceData.created_at,\n updated_at: resourceData.updated_at,\n created_by: user?.id ? String(user.id) : undefined,\n updated_by: user?.id ? String(user.id) : undefined,\n };\n },\n },\n\n // deco_resource_update (optional)\n {\n description:\n enhancements?.[\n `DECO_RESOURCE_${resourceName.toUpperCase()}_UPDATE` as keyof typeof enhancements\n ]?.description ||\n `Update a ${resourceName} resource in the DECONFIG directory ${directory}`,\n handler: async ({ uri, data }) => {\n // Validate URI format\n ResourceUriSchema.parse(uri);\n\n const resourceId = ResourceUri.unwind(uri).resourceId;\n const filePath = ResourcePath.build(directory, resourceId);\n\n // Read existing file to get current data\n let existingData: Record<string, unknown> = {};\n try {\n const fileData = await deconfig.READ_FILE({\n path: filePath,\n format: \"plainString\",\n });\n existingData = JSON.parse(fileData.content as string);\n } catch {\n throw new NotFoundError(`Resource not found: ${uri}`);\n }\n\n // Validate new data against schema\n const validatedData = dataSchema.parse(data);\n\n // Run semantic validation if provided\n if (semanticValidate) {\n await semanticValidate(validatedData);\n }\n\n const user = env.DECO_REQUEST_CONTEXT.ensureAuthenticated();\n\n const previousCreatedBy =\n typeof existingData[\"created_by\"] === \"string\"\n ? (existingData[\"created_by\"] as string)\n : undefined;\n\n // Merge existing data with updates\n const updatedData = {\n ...existingData,\n ...validatedData,\n id: resourceId,\n createdBy: previousCreatedBy,\n updated_at: new Date().toISOString(),\n updated_by: user?.id ? String(user.id) : undefined,\n };\n\n const fileContent = JSON.stringify(updatedData, null, 2);\n\n const putResult = await deconfig.PUT_FILE({\n path: filePath,\n content: fileContent,\n metadata: {\n resourceType: resourceName,\n resourceId,\n updatedBy: user?.id,\n name: validatedData.name || resourceId,\n description: validatedData.description || \"\",\n },\n });\n\n if (putResult.conflict) {\n throw new UserInputError(\n \"Resource write conflicted. Please refresh and retry.\",\n );\n }\n\n return {\n uri,\n data: validatedData,\n created_at: existingData.created_at as string,\n updated_at: updatedData.updated_at,\n created_by: existingData.created_by as string,\n updated_by: user?.id ? String(user.id) : undefined,\n };\n },\n },\n // deco_resource_delete (optional)\n {\n description:\n enhancements?.[\n `DECO_RESOURCE_${resourceName.toUpperCase()}_DELETE` as keyof typeof enhancements\n ]?.description ||\n `Delete a ${resourceName} resource from the DECONFIG directory ${directory}`,\n handler: async ({ uri }) => {\n // Validate URI format\n ResourceUriSchema.parse(uri);\n\n const resourceId = ResourceUri.unwind(uri).resourceId;\n const filePath = ResourcePath.build(directory, resourceId);\n\n try {\n await deconfig.DELETE_FILE({\n path: filePath,\n });\n\n return {\n success: true,\n uri,\n };\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"not found\")) {\n throw new NotFoundError(`Resource not found: ${uri}`);\n }\n throw error;\n }\n },\n },\n {\n description:\n enhancements?.[\n `DECO_RESOURCE_${resourceName.toUpperCase()}_DESCRIBE` as keyof typeof enhancements\n ]?.description ||\n `Describe the ${resourceName} resource in the DECONFIG directory ${directory}`,\n handler: () => {\n return {\n uriTemplate: ResourceUri.build(\n env.DECO_REQUEST_CONTEXT.integrationId as string,\n resourceName,\n \"*\",\n ),\n features: {\n watch: {\n pathname: `${RESOURCE_WATCH_BASE_PATHNAME}${directory}`,\n },\n },\n };\n },\n },\n ]);\n\n return tools;\n};\n\nconst removeLeadingSlash = (url: string) => {\n return url.startsWith(\"/\") ? url.slice(1) : url;\n};\n\nexport interface WatchOptions {\n watcherId?: string;\n pathFilter: string;\n resourceName: string;\n env: DefaultEnv & { DECONFIG: DeconfigClient };\n}\nconst watcher = ({\n env,\n pathFilter,\n resourceName,\n ...options\n}: WatchOptions): AsyncIterableIterator<{ uri: string }> => {\n const url = new URL(\n `/${removeLeadingSlash(env.DECO_REQUEST_CONTEXT.workspace)}/deconfig/watch`,\n `${env.DECO_API_URL ?? \"https://api.decocms.com\"}`,\n );\n if (options.watcherId) {\n url.searchParams.set(\"watcher-id\", options.watcherId);\n }\n url.searchParams.set(\"path-filter\", pathFilter);\n url.searchParams.set(\"branch\", env.DECO_REQUEST_CONTEXT.branch ?? \"main\");\n url.searchParams.set(\"auth-token\", env.DECO_REQUEST_CONTEXT.token);\n url.searchParams.set(\"from-ctime\", \"1\");\n\n const eventSource = new EventSource(url);\n const it = toAsyncIterator<{\n path: string;\n metadata: { address: string };\n }>(eventSource, \"change\");\n const iterator = async function* () {\n for await (const event of it) {\n const { path } = event;\n try {\n const { resourceId } = ResourcePath.extract(path);\n const uri = ResourceUri.build(\n env.DECO_REQUEST_CONTEXT.integrationId as string,\n resourceName,\n resourceId,\n );\n yield { uri };\n } catch {\n // ignore\n }\n }\n };\n const mIterator = iterator();\n const retn = mIterator.return;\n mIterator.return = function (val) {\n eventSource.close();\n return retn?.call(mIterator, val) ?? val;\n };\n return mIterator;\n};\n\nconst hasDeconfigBinding = (\n env: unknown,\n): env is DefaultEnv & { DECONFIG: DeconfigClient } => {\n return (\n env !== undefined &&\n typeof env === \"object\" &&\n env !== null &&\n \"DECONFIG\" in env\n );\n};\nexport const RESOURCE_WATCH_BASE_PATHNAME = \"/resources/watch\";\nexport const DeconfigResource = {\n WatchPathNameBase: RESOURCE_WATCH_BASE_PATHNAME,\n watchAPI: (req: Request, env: DefaultEnv) => {\n if (!hasDeconfigBinding(env)) {\n return new Response(\"DECONFIG:@deco/deconfig binding is required\", {\n status: 400,\n });\n }\n\n const url = new URL(req.url);\n const uri = url.searchParams.get(\"uri\");\n if (!uri) {\n return new Response(\"URI is required\", { status: 400 });\n }\n const pathname = url.pathname;\n let pathFilter = pathname.slice(RESOURCE_WATCH_BASE_PATHNAME.length); // removes `${RESOURCE_WATCH_BASE_PATHNAME}`\n const { resourceName, resourceId } = ResourceUri.unwind(uri);\n pathFilter =\n resourceId === \"*\"\n ? pathFilter\n : ResourcePath.build(pathFilter, resourceId);\n const watch = watcher({\n env,\n resourceName,\n pathFilter,\n });\n\n // Create SSE-compatible ReadableStream\n const sseStream = new ReadableStream({\n async start(controller) {\n const encoder = new TextEncoder();\n\n try {\n for await (const event of watch) {\n // Format as SSE: data: {json}\\n\\n\n const sseData = `data: ${JSON.stringify(event)}\\n\\n`;\n controller.enqueue(encoder.encode(sseData));\n }\n controller.close();\n } catch (error) {\n controller.error(error);\n }\n },\n cancel() {\n watch.return?.();\n // Clean up the async iterator if needed\n },\n });\n\n return new Response(sseStream, {\n status: 200,\n headers: {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n \"Access-Control-Allow-Origin\": WELL_KNOWN_ORIGINS.join(\",\"),\n \"Access-Control-Allow-Headers\": \"Cache-Control\",\n },\n });\n },\n define: <TDataSchema extends BaseResourceDataSchema>(\n options: Omit<DeconfigResourceOptions<TDataSchema>, \"env\">,\n ) => {\n return {\n watcher,\n create: (env: DefaultEnv & { DECONFIG: DeconfigClient }) => {\n return createDeconfigResource({\n env,\n ...options,\n });\n },\n };\n },\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/well-known.ts","../src/proxy.ts"],"names":[],"mappings":"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","file":"chunk-QELHWEZH.js","sourcesContent":["const Hosts = {\n API: \"api.decocms.com\",\n WEB_APP: \"admin.decocms.com\",\n APPS: \"deco.page\",\n LOCALHOST: \"localhost:3000\",\n API_LEGACY: \"api.deco.chat\",\n WEB_APP_LEGACY: \"deco.chat\",\n} as const;\n\nexport const WELL_KNOWN_API_HOSTNAMES = [\n Hosts.API,\n Hosts.API_LEGACY,\n Hosts.LOCALHOST.split(\":\")[0],\n] as const;\n\nexport const WELL_KNOWN_ORIGINS = [\n `http://${Hosts.LOCALHOST}`,\n `https://${Hosts.WEB_APP}`,\n `https://${Hosts.WEB_APP_LEGACY}`,\n] as const;\n","/* oxlint-disable no-explicit-any */\nimport type { ToolExecutionContext as _ToolExecutionContext } from \"@mastra/core\";\nimport { convertJsonSchemaToZod } from \"zod-from-json-schema\";\nimport { MCPConnection } from \"./connection.ts\";\nimport { createServerClient } from \"./mcp-client.ts\";\nimport type { CreateStubAPIOptions } from \"./mcp.ts\";\nimport { WELL_KNOWN_API_HOSTNAMES } from \"./well-known.ts\";\n\nconst getWorkspace = (workspace?: string) => {\n if (workspace && workspace.length > 0 && !workspace.includes(\"/\")) {\n return `/shared/${workspace}`;\n }\n return workspace ?? \"\";\n};\n\nconst safeParse = (content: string) => {\n try {\n return JSON.parse(content as string);\n } catch {\n return content;\n }\n};\n\nconst toolsMap = new Map<\n string,\n Promise<\n Array<{\n name: string;\n inputSchema: any;\n outputSchema?: any;\n description: string;\n }>\n >\n>();\n\n/**\n * Determines if a given URL supports tool names in the path.\n * Our APIs (api.decocms.com, api.deco.chat, localhost) support /tool/${toolName} routing.\n * Third-party APIs typically don't support this pattern.\n */\nfunction supportsToolNameInPath(url: string): boolean {\n try {\n // Our main APIs that support /tool/${toolName} routing\n return WELL_KNOWN_API_HOSTNAMES.includes(new URL(url).hostname);\n } catch {\n return false;\n }\n}\n\n/**\n * The base fetcher used to fetch the MCP from API.\n */\nexport function createMCPClientProxy<T extends Record<string, unknown>>(\n options?: CreateStubAPIOptions,\n): T {\n if (typeof options?.connection === \"function\") {\n // [DEPRECATED] Passing a function as 'connection' is deprecated and will be removed in a future release.\n // Please provide a connection object instead.\n throw new Error(\n \"Deprecation Notice: Passing a function as 'connection' is deprecated and will be removed in a future release. Please provide a connection object instead.\",\n );\n }\n\n const mcpPath = options?.mcpPath ?? \"/mcp\";\n\n const connection: MCPConnection = options?.connection || {\n type: \"HTTP\",\n token: options?.token,\n url: new URL(\n `${getWorkspace(options?.workspace)}${mcpPath}`,\n options?.decoCmsApiUrl ?? `https://api.decocms.com`,\n ).href,\n };\n\n return new Proxy<T>({} as T, {\n get(_, name) {\n if (name === \"toJSON\") {\n return null;\n }\n if (typeof name !== \"string\") {\n throw new Error(\"Name must be a string\");\n }\n async function callToolFn(args: unknown) {\n const debugId = options?.debugId?.();\n const extraHeaders = debugId\n ? { \"x-trace-debug-id\": debugId }\n : undefined;\n\n // Create a connection with the tool name in the URL path for better logging\n // Only modify connections that have a URL property (HTTP, SSE, Websocket)\n // Use automatic detection based on URL, with optional override\n let toolConnection = connection;\n const shouldAddToolName =\n options?.supportsToolName ??\n (\"url\" in connection &&\n typeof connection.url === \"string\" &&\n supportsToolNameInPath(connection.url));\n\n if (\n shouldAddToolName &&\n \"url\" in connection &&\n typeof connection.url === \"string\"\n ) {\n toolConnection = {\n ...connection,\n url: connection.url.endsWith(\"/\")\n ? `${connection.url}tool/${String(name)}`\n : `${connection.url}/tool/${String(name)}`,\n };\n }\n\n const client = await createServerClient(\n { connection: toolConnection },\n undefined,\n extraHeaders,\n );\n\n const { structuredContent, isError, content } = await client.callTool(\n {\n name: String(name),\n arguments: args as Record<string, unknown>,\n },\n undefined,\n {\n timeout: 3000000,\n },\n );\n\n if (isError) {\n // @ts-expect-error - content is not typed\n const maybeErrorMessage = content?.[0]?.text;\n const error =\n typeof maybeErrorMessage === \"string\"\n ? safeParse(maybeErrorMessage)\n : null;\n\n const throwableError =\n error?.code && typeof options?.getErrorByStatusCode === \"function\"\n ? options.getErrorByStatusCode(\n error.code,\n error.message,\n error.traceId,\n )\n : null;\n\n if (throwableError) {\n throw throwableError;\n }\n\n throw new Error(\n `Tool ${String(name)} returned an error: ${JSON.stringify(\n structuredContent ?? content,\n )}`,\n );\n }\n return structuredContent;\n }\n\n const listToolsFn = async () => {\n const client = await createServerClient({ connection });\n const { tools } = await client.listTools();\n\n return tools as {\n name: string;\n inputSchema: any;\n outputSchema?: any;\n description: string;\n }[];\n };\n\n async function listToolsOnce() {\n const conn = connection;\n const key = JSON.stringify(conn);\n\n try {\n if (!toolsMap.has(key)) {\n toolsMap.set(key, listToolsFn());\n }\n\n return await toolsMap.get(key)!;\n } catch (error) {\n console.error(\"Failed to list tools\", error);\n\n toolsMap.delete(key);\n return;\n }\n }\n callToolFn.asTool = async () => {\n const tools = (await listToolsOnce()) ?? [];\n const tool = tools.find((t) => t.name === name);\n if (!tool) {\n throw new Error(`Tool ${name} not found`);\n }\n\n return {\n ...tool,\n id: tool.name,\n inputSchema: tool.inputSchema\n ? convertJsonSchemaToZod(tool.inputSchema)\n : undefined,\n outputSchema: tool.outputSchema\n ? convertJsonSchemaToZod(tool.outputSchema)\n : undefined,\n execute: (input: any) => {\n return callToolFn(input.context);\n },\n };\n };\n return callToolFn;\n },\n });\n}\n"]}
@@ -1,30 +0,0 @@
1
- type SSEConnection = {
2
- type: "SSE";
3
- url: string;
4
- token?: string;
5
- headers?: Record<string, string>;
6
- };
7
- type WebsocketConnection = {
8
- type: "Websocket";
9
- url: string;
10
- token?: string;
11
- };
12
- type DecoConnection = {
13
- type: "Deco";
14
- tenant: string;
15
- token?: string;
16
- };
17
- type InnateConnection = {
18
- type: "INNATE";
19
- name: string;
20
- workspace?: string;
21
- };
22
- type HTTPConnection = {
23
- type: "HTTP";
24
- url: string;
25
- headers?: Record<string, string>;
26
- token?: string;
27
- };
28
- type MCPConnection = SSEConnection | WebsocketConnection | InnateConnection | DecoConnection | HTTPConnection;
29
-
30
- export type { MCPConnection as M };