@decocms/runtime 0.28.1 → 0.28.2

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 (52) hide show
  1. package/dist/bindings/deconfig/index.js +4 -4
  2. package/dist/bindings/index.js +6 -6
  3. package/dist/bindings/index.js.map +1 -1
  4. package/dist/{chunk-L4OT2YDO.js → chunk-AOFOWQXY.js} +3 -3
  5. package/dist/chunk-AOFOWQXY.js.map +1 -0
  6. package/dist/{chunk-SHQSNOFL.js → chunk-KLMPC2IZ.js} +14 -12
  7. package/dist/chunk-KLMPC2IZ.js.map +1 -0
  8. package/dist/{chunk-UIJGM3NV.js → chunk-LCU3FBI3.js} +5 -5
  9. package/dist/chunk-LCU3FBI3.js.map +1 -0
  10. package/dist/{chunk-7ITSLORK.js → chunk-NKUMVYKI.js} +3 -3
  11. package/dist/chunk-NKUMVYKI.js.map +1 -0
  12. package/dist/index.js +5 -5
  13. package/dist/index.js.map +1 -1
  14. package/dist/mastra.js +3 -3
  15. package/dist/resources.js +1 -1
  16. package/dist/views.js +1 -1
  17. package/package.json +3 -3
  18. package/src/bindings/README.md +1 -1
  19. package/src/bindings/binder.ts +1 -1
  20. package/src/bindings/channels.ts +1 -1
  21. package/src/bindings/deconfig/resources.ts +47 -17
  22. package/src/bindings/deconfig/types.ts +1 -1
  23. package/src/bindings/language-model/ai-sdk.ts +7 -4
  24. package/src/bindings/resources/bindings.ts +1 -1
  25. package/src/bindings/resources/schemas.ts +1 -1
  26. package/src/bindings/views.ts +1 -1
  27. package/src/deprecated.ts +1 -1
  28. package/src/index.ts +1 -1
  29. package/src/mastra.ts +1 -1
  30. package/src/mcp.ts +1 -1
  31. package/src/resources.ts +1 -1
  32. package/src/state.ts +1 -1
  33. package/src/views.ts +1 -1
  34. package/dist/admin.d.ts +0 -5
  35. package/dist/bindings/deconfig/index.d.ts +0 -12
  36. package/dist/bindings/index.d.ts +0 -2315
  37. package/dist/chunk-7ITSLORK.js.map +0 -1
  38. package/dist/chunk-L4OT2YDO.js.map +0 -1
  39. package/dist/chunk-SHQSNOFL.js.map +0 -1
  40. package/dist/chunk-UIJGM3NV.js.map +0 -1
  41. package/dist/client.d.ts +0 -28
  42. package/dist/d1-store.d.ts +0 -9
  43. package/dist/drizzle.d.ts +0 -49
  44. package/dist/index-LOfgE9a_.d.ts +0 -471
  45. package/dist/index-xKtm7A7B.d.ts +0 -530
  46. package/dist/index.d.ts +0 -10
  47. package/dist/mastra.d.ts +0 -10
  48. package/dist/mcp-87iLaW9V.d.ts +0 -105
  49. package/dist/mcp-client.d.ts +0 -232
  50. package/dist/proxy.d.ts +0 -11
  51. package/dist/resources.d.ts +0 -362
  52. package/dist/views.d.ts +0 -72
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/auth.ts","../src/bindings.ts","../src/workflow.ts","../src/index.ts"],"names":["ctx","client"],"mappings":"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","file":"index.js","sourcesContent":["import { JWK, jwtVerify } from \"jose\";\nimport type { DefaultEnv } from \"./index.ts\";\n\nconst DECO_APP_AUTH_COOKIE_NAME = \"deco_page_auth\";\nconst MAX_COOKIE_SIZE = 4000; // Leave some buffer below the 4096 limit\n\nexport interface State {\n next?: string;\n}\n\nexport const StateParser = {\n parse: (state: string) => {\n return JSON.parse(decodeURIComponent(atob(state))) as State;\n },\n stringify: (state: State) => {\n return btoa(encodeURIComponent(JSON.stringify(state)));\n },\n};\n\n// Helper function to chunk a value into multiple cookies\nconst chunkValue = (value: string): string[] => {\n if (value.length <= MAX_COOKIE_SIZE) {\n return [value];\n }\n\n const chunks: string[] = [];\n for (let i = 0; i < value.length; i += MAX_COOKIE_SIZE) {\n chunks.push(value.slice(i, i + MAX_COOKIE_SIZE));\n }\n return chunks;\n};\n\n// Helper function to reassemble chunked cookies\nconst reassembleChunkedCookies = (\n cookies: Record<string, string>,\n baseName: string,\n): string | undefined => {\n // First try the base cookie (non-chunked)\n if (cookies[baseName]) {\n return cookies[baseName];\n }\n\n // Try to reassemble from chunks\n const chunks: string[] = [];\n let index = 0;\n\n while (true) {\n const chunkName = `${baseName}_${index}`;\n if (!cookies[chunkName]) {\n break;\n }\n chunks.push(cookies[chunkName]);\n index++;\n }\n\n return chunks.length > 0 ? chunks.join(\"\") : undefined;\n};\n\n// Helper function to parse cookies from request\nconst parseCookies = (cookieHeader: string): Record<string, string> => {\n const cookies: Record<string, string> = {};\n if (!cookieHeader) return cookies;\n\n cookieHeader.split(\";\").forEach((cookie) => {\n const [name, ...rest] = cookie.trim().split(\"=\");\n if (name && rest.length > 0) {\n cookies[name] = decodeURIComponent(rest.join(\"=\"));\n }\n });\n\n return cookies;\n};\n\nconst parseJWK = (jwk: string): JWK => JSON.parse(atob(jwk)) as JWK;\n\nexport const getReqToken = async (req: Request, env: DefaultEnv) => {\n const token = () => {\n // First try to get token from Authorization header\n const authHeader = req.headers.get(\"Authorization\");\n if (authHeader) {\n return authHeader.split(\" \")[1];\n }\n\n // If not found, try to get from cookie\n const cookieHeader = req.headers.get(\"Cookie\");\n if (cookieHeader) {\n const cookies = parseCookies(cookieHeader);\n return reassembleChunkedCookies(cookies, DECO_APP_AUTH_COOKIE_NAME);\n }\n\n return undefined;\n };\n\n const authToken = token();\n if (!authToken) {\n return undefined;\n }\n\n env.DECO_API_JWT_PUBLIC_KEY &&\n (await jwtVerify(authToken, parseJWK(env.DECO_API_JWT_PUBLIC_KEY), {\n issuer: \"https://api.decocms.com\",\n algorithms: [\"RS256\"],\n typ: \"JWT\",\n }).catch((err) => {\n console.error(\n `[auth-token]: error validating: ${err} ${env.DECO_API_JWT_PUBLIC_KEY}`,\n );\n }));\n\n return authToken;\n};\n\nexport interface AuthCallbackOptions {\n apiUrl?: string;\n appName: string;\n}\n\nexport const handleAuthCallback = async (\n req: Request,\n options: AuthCallbackOptions,\n): Promise<Response> => {\n const url = new URL(req.url);\n const code = url.searchParams.get(\"code\");\n const state = url.searchParams.get(\"state\");\n\n if (!code) {\n return new Response(\"Missing authorization code\", { status: 400 });\n }\n\n // Parse state to get the next URL\n let next = \"/\";\n if (state) {\n try {\n const parsedState = StateParser.parse(state);\n next = parsedState.next || \"/\";\n } catch {\n // ignore parse errors\n }\n }\n\n try {\n // Exchange code for token\n const apiUrl = options.apiUrl ?? \"https://api.decocms.com\";\n const exchangeResponse = await fetch(`${apiUrl}/apps/code-exchange`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n code,\n client_id: options.appName,\n }),\n });\n\n if (!exchangeResponse.ok) {\n console.error(\n \"authentication failed\",\n code,\n options.appName,\n await exchangeResponse.text().catch((_) => \"\"),\n );\n return new Response(\"Authentication failed\", { status: 401 });\n }\n\n const { access_token } = (await exchangeResponse.json()) as {\n access_token: string;\n };\n\n if (!access_token) {\n return new Response(\"No access token received\", { status: 401 });\n }\n\n // Chunk the token if it's too large\n const chunks = chunkValue(access_token);\n const headers = new Headers();\n headers.set(\"Location\", next);\n\n // Set cookies for each chunk\n if (chunks.length === 1) {\n // Single cookie for small tokens\n headers.set(\n \"Set-Cookie\",\n `${DECO_APP_AUTH_COOKIE_NAME}=${access_token}; HttpOnly; SameSite=None; Secure; Path=/`,\n );\n } else {\n // Multiple cookies for large tokens\n chunks.forEach((chunk, index) => {\n headers.append(\n \"Set-Cookie\",\n `${DECO_APP_AUTH_COOKIE_NAME}_${index}=${chunk}; HttpOnly; SameSite=None; Secure; Path=/`,\n );\n });\n }\n\n return new Response(null, {\n status: 302,\n headers,\n });\n } catch (err) {\n return new Response(`Authentication failed ${err}`, { status: 500 });\n }\n};\n\nconst removeAuthCookie = (headers: Headers) => {\n // Clear the base cookie\n headers.append(\n \"Set-Cookie\",\n `${DECO_APP_AUTH_COOKIE_NAME}=; HttpOnly; SameSite=None; Secure; Path=/; Max-Age=0`,\n );\n\n // Clear all potential chunked cookies\n // We'll try to clear up to 10 chunks (which would support tokens up to 40KB)\n // This is a reasonable upper limit\n for (let i = 0; i < 10; i++) {\n headers.append(\n \"Set-Cookie\",\n `${DECO_APP_AUTH_COOKIE_NAME}_${i}=; HttpOnly; SameSite=None; Secure; Path=/; Max-Age=0`,\n );\n }\n};\n\nexport const handleLogout = (req: Request) => {\n const url = new URL(req.url);\n const next = url.searchParams.get(\"next\");\n const redirectTo = new URL(\"/\", url);\n const headers = new Headers();\n removeAuthCookie(headers);\n headers.set(\"Location\", next ?? redirectTo.href);\n return new Response(null, {\n status: 302,\n headers,\n });\n};\n","import type { MCPConnection } from \"./connection.ts\";\nimport type { DefaultEnv, RequestContext } from \"./index.ts\";\nimport { MCPClient } from \"./mcp.ts\";\nimport type {\n BindingBase,\n ContractBinding,\n MCPBinding,\n MCPIntegrationNameBinding,\n} from \"./wrangler.ts\";\n\ninterface IntegrationContext {\n integrationId: string;\n workspace: string;\n branch?: string;\n decoCmsApiUrl?: string;\n}\n\nconst normalizeWorkspace = (workspace: string) => {\n if (workspace.startsWith(\"/users\")) {\n return workspace;\n }\n if (workspace.startsWith(\"/shared\")) {\n return workspace;\n }\n if (workspace.includes(\"/\")) {\n return workspace;\n }\n return `/shared/${workspace}`;\n};\n\n/**\n * Url: /apps/mcp?appName=$appName\n */\nconst createAppsUrl = ({\n appName,\n decoChatApiUrl,\n}: {\n appName: string;\n decoChatApiUrl?: string;\n}) =>\n new URL(\n `/apps/mcp?appName=${appName}`,\n decoChatApiUrl ?? \"https://api.decocms.com\",\n ).href;\n/**\n * Url: /:workspace.root/:workspace.slug/:integrationId/mcp\n */\nconst createIntegrationsUrl = ({\n integrationId,\n workspace,\n decoCmsApiUrl,\n branch,\n}: IntegrationContext) => {\n const base = `${normalizeWorkspace(workspace)}/${integrationId}/mcp`;\n const url = new URL(base, decoCmsApiUrl ?? \"https://api.decocms.com\");\n branch && url.searchParams.set(\"branch\", branch);\n return url.href;\n};\n\ntype WorkspaceClientContext = Omit<\n RequestContext,\n \"ensureAuthenticated\" | \"state\" | \"fetchIntegrationMetadata\"\n>;\nexport const workspaceClient = (\n ctx: WorkspaceClientContext,\n): ReturnType<(typeof MCPClient)[\"forWorkspace\"]> => {\n return MCPClient.forWorkspace(ctx.workspace, ctx.token);\n};\n\nconst mcpClientForAppName = (appName: string, decoChatApiUrl?: string) => {\n const mcpConnection: MCPConnection = {\n type: \"HTTP\",\n url: createAppsUrl({\n appName,\n decoChatApiUrl,\n }),\n };\n\n return MCPClient.forConnection(mcpConnection);\n};\n\nexport const proxyConnectionForId = (\n integrationId: string,\n ctx: Omit<WorkspaceClientContext, \"token\"> & {\n token?: string;\n cookie?: string;\n },\n decoChatApiUrl?: string,\n appName?: string,\n): MCPConnection => {\n let headers: Record<string, string> | undefined = appName\n ? { \"x-caller-app\": appName }\n : undefined;\n if (ctx.cookie) {\n headers ??= {};\n headers.cookie = ctx.cookie;\n }\n return {\n type: \"HTTP\",\n url: createIntegrationsUrl({\n integrationId,\n workspace: ctx.workspace,\n decoCmsApiUrl: decoChatApiUrl,\n branch: ctx.branch,\n }),\n token: ctx.token,\n headers,\n };\n};\nconst mcpClientForIntegrationId = (\n integrationId: string,\n ctx: WorkspaceClientContext,\n decoChatApiUrl?: string,\n appName?: string,\n) => {\n const mcpConnection = proxyConnectionForId(\n integrationId,\n ctx,\n decoChatApiUrl,\n appName,\n );\n\n // TODO(@igorbrasileiro): Switch this proxy to be a proxy that call MCP Client.toolCall from @modelcontextprotocol\n return MCPClient.forConnection(mcpConnection);\n};\n\nfunction mcpClientFromState(\n binding: BindingBase | MCPIntegrationNameBinding,\n env: DefaultEnv,\n) {\n const ctx = env.DECO_REQUEST_CONTEXT;\n const bindingFromState = ctx?.state?.[binding.name];\n const integrationId =\n bindingFromState &&\n typeof bindingFromState === \"object\" &&\n \"value\" in bindingFromState\n ? bindingFromState.value\n : undefined;\n if (typeof integrationId !== \"string\" && \"integration_name\" in binding) {\n // in case of a binding to an app name, we need to use the new apps/mcp endpoint which will proxy the request to the app but without any token\n return mcpClientForAppName(binding.integration_name, env.DECO_API_URL);\n }\n return mcpClientForIntegrationId(\n integrationId,\n ctx,\n env.DECO_API_URL,\n env.DECO_APP_NAME,\n );\n}\n\nexport const createContractBinding = (\n binding: ContractBinding,\n env: DefaultEnv,\n) => {\n return mcpClientFromState(binding, env);\n};\n\nexport const createIntegrationBinding = (\n binding: MCPBinding,\n env: DefaultEnv,\n) => {\n const integrationId =\n \"integration_id\" in binding ? binding.integration_id : undefined;\n if (!integrationId) {\n return mcpClientFromState(binding, env);\n }\n // bindings pointed to an specific integration id are binded using the app deployment workspace\n return mcpClientForIntegrationId(\n integrationId,\n {\n workspace: env.DECO_WORKSPACE,\n token: env.DECO_API_TOKEN,\n branch: env.DECO_REQUEST_CONTEXT?.branch,\n },\n env.DECO_API_URL,\n env.DECO_APP_NAME,\n );\n};\n","/* oxlint-disable no-explicit-any */\nimport { type DefaultEnv, type RequestContext, withBindings } from \"./index.ts\";\nimport {\n type AppContext,\n type CreateMCPServerOptions,\n isWorkflow,\n MCPServer,\n} from \"./mastra.ts\";\n\nimport { D1Store } from \"./d1-store.ts\";\nimport { Mastra, type Workflow as MastraWorkflow } from \"@mastra/core\";\nimport { RuntimeContext } from \"@mastra/core/di\";\nimport { DurableObject } from \"./cf-imports.ts\";\nimport { State } from \"./state.ts\";\n\nconst createRuntimeContext = (env: DefaultEnv, ctx: DurableObjectState) => {\n const runtimeContext = new RuntimeContext<AppContext>();\n runtimeContext.set(\"env\", env);\n runtimeContext.set(\"ctx\", ctx);\n return runtimeContext;\n};\nexport interface StartWorkflowArgs {\n workflowId: string;\n args: unknown;\n runId?: string;\n ctx: RequestContext;\n}\n\nexport interface CancelWorkflowArgs {\n workflowId: string;\n runId?: string;\n ctx: RequestContext;\n}\n\nexport interface ResumeWorkflowArgs {\n workflowId: string;\n runId?: string;\n resumeData: unknown;\n stepId: string;\n ctx: RequestContext;\n}\nexport interface WorkflowDO extends Rpc.DurableObjectBranded {\n start: (args: StartWorkflowArgs) => Promise<{ runId: string }>;\n cancel: (args: CancelWorkflowArgs) => Promise<{ cancelled: boolean }>;\n resume: (args: ResumeWorkflowArgs) => Promise<{ resumed: boolean }>;\n}\n\nexport const Workflow = (\n server: MCPServer<any, any>,\n workflows?: CreateMCPServerOptions[\"workflows\"],\n) => {\n return class Workflow\n extends DurableObject<DefaultEnv>\n implements WorkflowDO\n {\n constructor(\n // @ts-ignore: This is a workaround to fix the type error\n // oxlint-disable-next-line ban-types\n public override ctx: DurableObjectState<{}>,\n public override env: DefaultEnv,\n ) {\n super(ctx, env);\n }\n\n bindings(ctx: RequestContext) {\n return withBindings<DefaultEnv>({\n env: this.env,\n server,\n tokenOrContext: ctx,\n });\n }\n\n runWithContext<T>(\n ctx: RequestContext,\n f: (ctx: DefaultEnv) => Promise<T>,\n ): Promise<T> {\n const bindings = this.bindings(ctx);\n return State.run(\n {\n ctx: {\n waitUntil: this.ctx.waitUntil.bind(this.ctx),\n },\n env: this.bindings(ctx),\n },\n () => f(bindings),\n );\n }\n\n async #getWorkflow(\n workflowId: string,\n bindings: DefaultEnv,\n ): Promise<{ workflow: MastraWorkflow }> {\n const bindedWorkflows = await Promise.all(\n workflows?.map(async (workflow) => {\n const workflowResult = workflow(bindings);\n if (isWorkflow(workflowResult)) {\n return { workflow: workflowResult };\n }\n\n return await workflowResult;\n }) ?? [],\n );\n const workflowsMap = Object.fromEntries(\n bindedWorkflows.map((w) => [w.workflow.id, w.workflow]),\n );\n const d1Storage = new D1Store({\n client: bindings.DECO_WORKSPACE_DB,\n });\n const mastra = new Mastra({\n storage: d1Storage,\n workflows: {\n [workflowId]: workflowsMap[workflowId],\n },\n telemetry: {\n enabled: true,\n serviceName: `app-${\n this.env.DECO_CHAT_SCRIPT_SLUG ?? this.env.DECO_APP_SLUG\n }`,\n },\n });\n // since mastra workflows are thenables, so we need to wrap then into an object\n return { workflow: mastra.getWorkflow(workflowId) };\n }\n\n start({ workflowId, runId, args, ctx }: StartWorkflowArgs) {\n return this.runWithContext(ctx, async (bindings) => {\n const { workflow } = await this.#getWorkflow(workflowId, bindings);\n\n const run = await workflow.createRunAsync({\n runId: this.ctx.id.name ?? runId,\n });\n\n const promise = run.start({\n inputData: args,\n runtimeContext: createRuntimeContext(bindings, this.ctx),\n });\n\n this.ctx.waitUntil(\n promise\n .then(() => {\n console.debug(\"workflow\", run.runId, \"finished successfully\");\n })\n .catch((e) => {\n console.error(\"workflow\", run.runId, \"finished with error\", e);\n throw e;\n }),\n );\n\n return {\n runId: run.runId,\n };\n });\n }\n\n cancel({ workflowId, runId, ctx }: CancelWorkflowArgs) {\n return this.runWithContext(ctx, async () => {\n const { workflow } = await this.#getWorkflow(\n workflowId,\n this.bindings(ctx),\n );\n const run = await workflow.createRunAsync({\n runId: this.ctx.id.name ?? runId,\n });\n\n this.ctx.waitUntil(run.cancel());\n\n return {\n cancelled: true,\n };\n });\n }\n resume({ workflowId, runId, resumeData, stepId, ctx }: ResumeWorkflowArgs) {\n return this.runWithContext(ctx, async (bindings) => {\n const { workflow } = await this.#getWorkflow(workflowId, bindings);\n const run = await workflow.createRunAsync({\n runId: this.ctx.id.name ?? runId,\n });\n\n this.ctx.waitUntil(\n run.resume({\n resumeData,\n step: stepId,\n runtimeContext: createRuntimeContext(bindings, this.ctx),\n }),\n );\n\n return {\n resumed: true,\n };\n });\n }\n };\n};\n","/* oxlint-disable no-explicit-any */\nimport type { ExecutionContext } from \"@cloudflare/workers-types\";\nimport { decodeJwt } from \"jose\";\nimport type { z } from \"zod/v3\";\nimport {\n getReqToken,\n handleAuthCallback,\n handleLogout,\n StateParser,\n} from \"./auth.ts\";\nimport {\n createContractBinding,\n createIntegrationBinding,\n workspaceClient,\n} from \"./bindings.ts\";\nimport { DeconfigResource } from \"./bindings/deconfig/index.ts\";\nimport { DECO_MCP_CLIENT_HEADER } from \"./client.ts\";\nimport { DeprecatedEnv } from \"./deprecated.ts\";\nimport {\n createMCPServer,\n type CreateMCPServerOptions,\n MCPServer,\n} from \"./mastra.ts\";\nimport { MCPClient, type QueryResult } from \"./mcp.ts\";\nimport { State } from \"./state.ts\";\nimport type { WorkflowDO } from \"./workflow.ts\";\nimport { Workflow } from \"./workflow.ts\";\nimport type { Binding, ContractBinding, MCPBinding } from \"./wrangler.ts\";\nexport { proxyConnectionForId } from \"./bindings.ts\";\nexport {\n createMCPFetchStub,\n type CreateStubAPIOptions,\n type ToolBinder,\n} from \"./mcp.ts\";\nexport interface WorkspaceDB {\n query: (params: {\n sql: string;\n params: string[];\n }) => Promise<{ result: QueryResult[] }>;\n}\n\nexport interface DefaultEnv<TSchema extends z.ZodTypeAny = any>\n extends DeprecatedEnv<TSchema> {\n DECO_REQUEST_CONTEXT: RequestContext<TSchema>;\n DECO_APP_NAME: string;\n DECO_APP_SLUG: string;\n DECO_APP_ENTRYPOINT: string;\n DECO_API_URL?: string;\n DECO_WORKSPACE: string;\n DECO_API_JWT_PUBLIC_KEY: string;\n DECO_APP_DEPLOYMENT_ID: string;\n DECO_BINDINGS: string;\n DECO_API_TOKEN: string;\n DECO_WORKFLOW_DO: DurableObjectNamespace<WorkflowDO>;\n DECO_WORKSPACE_DB: WorkspaceDB & {\n forContext: (ctx: RequestContext) => WorkspaceDB;\n };\n IS_LOCAL: boolean;\n [key: string]: unknown;\n}\n\nexport interface BindingsObject {\n bindings?: Binding[];\n}\n\nexport const WorkersMCPBindings = {\n parse: (bindings?: string): Binding[] => {\n if (!bindings) return [];\n try {\n return JSON.parse(atob(bindings)) as Binding[];\n } catch {\n return [];\n }\n },\n stringify: (bindings: Binding[]): string => {\n return btoa(JSON.stringify(bindings));\n },\n};\n\nexport interface UserDefaultExport<\n TUserEnv = Record<string, unknown>,\n TSchema extends z.ZodTypeAny = never,\n TEnv = TUserEnv & DefaultEnv<TSchema>,\n> extends CreateMCPServerOptions<TEnv, TSchema> {\n fetch?: (\n req: Request,\n env: TEnv,\n ctx: ExecutionContext,\n ) => Promise<Response> | Response;\n}\n\n// 1. Map binding type to its interface\ninterface BindingTypeMap {\n mcp: MCPBinding;\n contract: ContractBinding;\n}\n\nexport interface User {\n id: string;\n email: string;\n workspace: string;\n user_metadata: {\n avatar_url: string;\n full_name: string;\n picture: string;\n [key: string]: unknown;\n };\n}\n\nexport interface RequestContext<TSchema extends z.ZodTypeAny = any> {\n state: z.infer<TSchema>;\n branch?: string;\n token: string;\n workspace: string;\n ensureAuthenticated: (options?: {\n workspaceHint?: string;\n }) => User | undefined;\n callerApp?: string;\n integrationId?: string;\n}\n\n// 2. Map binding type to its creator function\ntype CreatorByType = {\n [K in keyof BindingTypeMap]: (\n value: BindingTypeMap[K],\n env: DefaultEnv,\n ) => unknown;\n};\n\n// 3. Strongly type creatorByType\nconst creatorByType: CreatorByType = {\n mcp: createIntegrationBinding,\n contract: createContractBinding,\n};\n\nconst withDefaultBindings = ({\n env,\n server,\n ctx,\n url,\n}: {\n env: DefaultEnv;\n server: MCPServer<any, any>;\n ctx: RequestContext;\n url?: string;\n}) => {\n const client = workspaceClient(ctx);\n const createWorkspaceDB = (ctx: RequestContext): WorkspaceDB => {\n const client = workspaceClient(ctx);\n return {\n query: ({ sql, params }) => {\n return client.DATABASES_RUN_SQL({\n sql,\n params,\n });\n },\n };\n };\n env[\"SELF\"] = new Proxy(\n {},\n {\n get: (_, prop) => {\n if (prop === \"toJSON\") {\n return null;\n }\n\n return async (args: unknown) => {\n return await server.callTool({\n toolCallId: prop as string,\n toolCallInput: args,\n });\n };\n },\n },\n );\n\n const workspaceDbBinding = {\n ...createWorkspaceDB(ctx),\n forContext: createWorkspaceDB,\n };\n\n env[\"DECO_API\"] = MCPClient;\n env[\"DECO_WORKSPACE_API\"] = client;\n env[\"DECO_WORKSPACE_DB\"] = workspaceDbBinding;\n\n // Backwards compatibility\n env[\"DECO_CHAT_API\"] = MCPClient;\n env[\"DECO_CHAT_WORKSPACE_API\"] = client;\n env[\"DECO_CHAT_WORKSPACE_DB\"] = workspaceDbBinding;\n\n env[\"IS_LOCAL\"] =\n (url?.startsWith(\"http://localhost\") ||\n url?.startsWith(\"http://127.0.0.1\")) ??\n false;\n};\n\nexport class UnauthorizedError extends Error {\n constructor(\n message: string,\n public redirectTo: URL,\n ) {\n super(message);\n this.name = \"UnauthorizedError\";\n }\n}\n\nconst AUTH_CALLBACK_ENDPOINT = \"/oauth/callback\";\nconst AUTH_START_ENDPOINT = \"/oauth/start\";\nconst AUTH_LOGOUT_ENDPOINT = \"/oauth/logout\";\nconst AUTHENTICATED = (user?: unknown, workspace?: string) => () => {\n return {\n ...((user as User) ?? {}),\n workspace,\n } as User;\n};\n\nexport const withBindings = <TEnv>({\n env: _env,\n server,\n tokenOrContext,\n origin,\n url,\n branch,\n}: {\n env: TEnv;\n server: MCPServer<TEnv, any>;\n tokenOrContext?: string | RequestContext;\n origin?: string | null;\n url?: string;\n branch?: string | null;\n}): TEnv => {\n branch ??= undefined;\n const env = _env as DefaultEnv<any>;\n\n const apiUrl = env.DECO_API_URL ?? \"https://api.decocms.com\";\n let context;\n if (typeof tokenOrContext === \"string\") {\n const decoded = decodeJwt(tokenOrContext);\n const workspace = decoded.aud as string;\n\n context = {\n state: decoded.state as Record<string, unknown>,\n token: tokenOrContext,\n integrationId: decoded.integrationId as string,\n workspace,\n ensureAuthenticated: AUTHENTICATED(decoded.user, workspace),\n branch,\n } as RequestContext<any>;\n } else if (typeof tokenOrContext === \"object\") {\n context = tokenOrContext;\n const decoded = decodeJwt(tokenOrContext.token);\n const workspace = decoded.aud as string;\n const appName = decoded.appName as string | undefined;\n context.callerApp = appName;\n context.integrationId ??= decoded.integrationId as string;\n context.ensureAuthenticated = AUTHENTICATED(decoded.user, workspace);\n } else {\n context = {\n state: undefined,\n token: env.DECO_API_TOKEN,\n workspace: env.DECO_WORKSPACE,\n branch,\n ensureAuthenticated: (options?: { workspaceHint?: string }) => {\n const workspaceHint = options?.workspaceHint ?? env.DECO_WORKSPACE;\n const authUri = new URL(\"/apps/oauth\", apiUrl);\n authUri.searchParams.set(\"client_id\", env.DECO_APP_NAME);\n authUri.searchParams.set(\n \"redirect_uri\",\n new URL(AUTH_CALLBACK_ENDPOINT, origin ?? env.DECO_APP_ENTRYPOINT)\n .href,\n );\n workspaceHint &&\n authUri.searchParams.set(\"workspace_hint\", workspaceHint);\n throw new UnauthorizedError(\"Unauthorized\", authUri);\n },\n };\n }\n\n env.DECO_REQUEST_CONTEXT = context;\n // Backwards compatibility\n env.DECO_CHAT_REQUEST_CONTEXT = context;\n const bindings = WorkersMCPBindings.parse(env.DECO_BINDINGS);\n\n for (const binding of bindings) {\n env[binding.name] = creatorByType[binding.type](binding as any, env);\n }\n\n withDefaultBindings({\n env,\n server,\n ctx: env.DECO_REQUEST_CONTEXT,\n url,\n });\n\n return env as TEnv;\n};\n\nexport const withRuntime = <TEnv, TSchema extends z.ZodTypeAny = never>(\n userFns: UserDefaultExport<TEnv, TSchema>,\n): ExportedHandler<TEnv & DefaultEnv<TSchema>> & {\n Workflow: ReturnType<typeof Workflow>;\n} => {\n const server = createMCPServer<TEnv, TSchema>(userFns);\n const fetcher = async (\n req: Request,\n env: TEnv & DefaultEnv<TSchema>,\n ctx: ExecutionContext,\n ) => {\n const url = new URL(req.url);\n if (url.pathname === AUTH_CALLBACK_ENDPOINT) {\n return handleAuthCallback(req, {\n apiUrl: env.DECO_API_URL,\n appName: env.DECO_APP_NAME,\n });\n }\n if (url.pathname === AUTH_START_ENDPOINT) {\n env.DECO_REQUEST_CONTEXT.ensureAuthenticated();\n const redirectTo = new URL(\"/\", url);\n const next = url.searchParams.get(\"next\");\n return Response.redirect(next ?? redirectTo, 302);\n }\n if (url.pathname === AUTH_LOGOUT_ENDPOINT) {\n return handleLogout(req);\n }\n if (url.pathname === \"/mcp\") {\n return server.fetch(req, env, ctx);\n }\n\n if (url.pathname.startsWith(\"/mcp/call-tool\")) {\n const toolCallId = url.pathname.split(\"/\").pop();\n if (!toolCallId) {\n return new Response(\"Not found\", { status: 404 });\n }\n const toolCallInput = await req.json();\n const result = await server.callTool({\n toolCallId,\n toolCallInput,\n });\n\n if (result instanceof Response) {\n return result;\n }\n\n return new Response(JSON.stringify(result), {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n if (url.pathname.startsWith(DeconfigResource.WatchPathNameBase)) {\n return DeconfigResource.watchAPI(req, env);\n }\n return (\n userFns.fetch?.(req, env, ctx) ||\n new Response(\"Not found\", { status: 404 })\n );\n };\n return {\n Workflow: Workflow(server, userFns.workflows),\n fetch: async (\n req: Request,\n env: TEnv & DefaultEnv<TSchema>,\n ctx: ExecutionContext,\n ) => {\n const referer = req.headers.get(\"referer\");\n const isFetchRequest = req.headers.has(DECO_MCP_CLIENT_HEADER);\n\n try {\n const bindings = withBindings({\n env,\n server,\n branch:\n req.headers.get(\"x-deco-branch\") ??\n new URL(req.url).searchParams.get(\"__b\"),\n tokenOrContext: await getReqToken(req, env),\n origin:\n referer ?? req.headers.get(\"origin\") ?? new URL(req.url).origin,\n url: req.url,\n });\n return await State.run(\n { req, env: bindings, ctx },\n async () => await fetcher(req, bindings, ctx),\n );\n } catch (error) {\n if (error instanceof UnauthorizedError) {\n if (!isFetchRequest) {\n const url = new URL(req.url);\n error.redirectTo.searchParams.set(\n \"state\",\n StateParser.stringify({\n next: url.searchParams.get(\"next\") ?? referer ?? req.url,\n }),\n );\n return Response.redirect(error.redirectTo, 302);\n }\n return new Response(null, { status: 401 });\n }\n throw error;\n }\n },\n };\n};\n\nexport {\n type Contract,\n type Migration,\n type WranglerConfig,\n} from \"./wrangler.ts\";\n"]}
1
+ {"version":3,"sources":["../src/auth.ts","../src/bindings.ts","../src/workflow.ts","../src/index.ts"],"names":["ctx","client"],"mappings":"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","file":"index.js","sourcesContent":["import { JWK, jwtVerify } from \"jose\";\nimport type { DefaultEnv } from \"./index.ts\";\n\nconst DECO_APP_AUTH_COOKIE_NAME = \"deco_page_auth\";\nconst MAX_COOKIE_SIZE = 4000; // Leave some buffer below the 4096 limit\n\nexport interface State {\n next?: string;\n}\n\nexport const StateParser = {\n parse: (state: string) => {\n return JSON.parse(decodeURIComponent(atob(state))) as State;\n },\n stringify: (state: State) => {\n return btoa(encodeURIComponent(JSON.stringify(state)));\n },\n};\n\n// Helper function to chunk a value into multiple cookies\nconst chunkValue = (value: string): string[] => {\n if (value.length <= MAX_COOKIE_SIZE) {\n return [value];\n }\n\n const chunks: string[] = [];\n for (let i = 0; i < value.length; i += MAX_COOKIE_SIZE) {\n chunks.push(value.slice(i, i + MAX_COOKIE_SIZE));\n }\n return chunks;\n};\n\n// Helper function to reassemble chunked cookies\nconst reassembleChunkedCookies = (\n cookies: Record<string, string>,\n baseName: string,\n): string | undefined => {\n // First try the base cookie (non-chunked)\n if (cookies[baseName]) {\n return cookies[baseName];\n }\n\n // Try to reassemble from chunks\n const chunks: string[] = [];\n let index = 0;\n\n while (true) {\n const chunkName = `${baseName}_${index}`;\n if (!cookies[chunkName]) {\n break;\n }\n chunks.push(cookies[chunkName]);\n index++;\n }\n\n return chunks.length > 0 ? chunks.join(\"\") : undefined;\n};\n\n// Helper function to parse cookies from request\nconst parseCookies = (cookieHeader: string): Record<string, string> => {\n const cookies: Record<string, string> = {};\n if (!cookieHeader) return cookies;\n\n cookieHeader.split(\";\").forEach((cookie) => {\n const [name, ...rest] = cookie.trim().split(\"=\");\n if (name && rest.length > 0) {\n cookies[name] = decodeURIComponent(rest.join(\"=\"));\n }\n });\n\n return cookies;\n};\n\nconst parseJWK = (jwk: string): JWK => JSON.parse(atob(jwk)) as JWK;\n\nexport const getReqToken = async (req: Request, env: DefaultEnv) => {\n const token = () => {\n // First try to get token from Authorization header\n const authHeader = req.headers.get(\"Authorization\");\n if (authHeader) {\n return authHeader.split(\" \")[1];\n }\n\n // If not found, try to get from cookie\n const cookieHeader = req.headers.get(\"Cookie\");\n if (cookieHeader) {\n const cookies = parseCookies(cookieHeader);\n return reassembleChunkedCookies(cookies, DECO_APP_AUTH_COOKIE_NAME);\n }\n\n return undefined;\n };\n\n const authToken = token();\n if (!authToken) {\n return undefined;\n }\n\n env.DECO_API_JWT_PUBLIC_KEY &&\n (await jwtVerify(authToken, parseJWK(env.DECO_API_JWT_PUBLIC_KEY), {\n issuer: \"https://api.decocms.com\",\n algorithms: [\"RS256\"],\n typ: \"JWT\",\n }).catch((err) => {\n console.error(\n `[auth-token]: error validating: ${err} ${env.DECO_API_JWT_PUBLIC_KEY}`,\n );\n }));\n\n return authToken;\n};\n\nexport interface AuthCallbackOptions {\n apiUrl?: string;\n appName: string;\n}\n\nexport const handleAuthCallback = async (\n req: Request,\n options: AuthCallbackOptions,\n): Promise<Response> => {\n const url = new URL(req.url);\n const code = url.searchParams.get(\"code\");\n const state = url.searchParams.get(\"state\");\n\n if (!code) {\n return new Response(\"Missing authorization code\", { status: 400 });\n }\n\n // Parse state to get the next URL\n let next = \"/\";\n if (state) {\n try {\n const parsedState = StateParser.parse(state);\n next = parsedState.next || \"/\";\n } catch {\n // ignore parse errors\n }\n }\n\n try {\n // Exchange code for token\n const apiUrl = options.apiUrl ?? \"https://api.decocms.com\";\n const exchangeResponse = await fetch(`${apiUrl}/apps/code-exchange`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n code,\n client_id: options.appName,\n }),\n });\n\n if (!exchangeResponse.ok) {\n console.error(\n \"authentication failed\",\n code,\n options.appName,\n await exchangeResponse.text().catch((_) => \"\"),\n );\n return new Response(\"Authentication failed\", { status: 401 });\n }\n\n const { access_token } = (await exchangeResponse.json()) as {\n access_token: string;\n };\n\n if (!access_token) {\n return new Response(\"No access token received\", { status: 401 });\n }\n\n // Chunk the token if it's too large\n const chunks = chunkValue(access_token);\n const headers = new Headers();\n headers.set(\"Location\", next);\n\n // Set cookies for each chunk\n if (chunks.length === 1) {\n // Single cookie for small tokens\n headers.set(\n \"Set-Cookie\",\n `${DECO_APP_AUTH_COOKIE_NAME}=${access_token}; HttpOnly; SameSite=None; Secure; Path=/`,\n );\n } else {\n // Multiple cookies for large tokens\n chunks.forEach((chunk, index) => {\n headers.append(\n \"Set-Cookie\",\n `${DECO_APP_AUTH_COOKIE_NAME}_${index}=${chunk}; HttpOnly; SameSite=None; Secure; Path=/`,\n );\n });\n }\n\n return new Response(null, {\n status: 302,\n headers,\n });\n } catch (err) {\n return new Response(`Authentication failed ${err}`, { status: 500 });\n }\n};\n\nconst removeAuthCookie = (headers: Headers) => {\n // Clear the base cookie\n headers.append(\n \"Set-Cookie\",\n `${DECO_APP_AUTH_COOKIE_NAME}=; HttpOnly; SameSite=None; Secure; Path=/; Max-Age=0`,\n );\n\n // Clear all potential chunked cookies\n // We'll try to clear up to 10 chunks (which would support tokens up to 40KB)\n // This is a reasonable upper limit\n for (let i = 0; i < 10; i++) {\n headers.append(\n \"Set-Cookie\",\n `${DECO_APP_AUTH_COOKIE_NAME}_${i}=; HttpOnly; SameSite=None; Secure; Path=/; Max-Age=0`,\n );\n }\n};\n\nexport const handleLogout = (req: Request) => {\n const url = new URL(req.url);\n const next = url.searchParams.get(\"next\");\n const redirectTo = new URL(\"/\", url);\n const headers = new Headers();\n removeAuthCookie(headers);\n headers.set(\"Location\", next ?? redirectTo.href);\n return new Response(null, {\n status: 302,\n headers,\n });\n};\n","import type { MCPConnection } from \"./connection.ts\";\nimport type { DefaultEnv, RequestContext } from \"./index.ts\";\nimport { MCPClient } from \"./mcp.ts\";\nimport type {\n BindingBase,\n ContractBinding,\n MCPBinding,\n MCPIntegrationNameBinding,\n} from \"./wrangler.ts\";\n\ninterface IntegrationContext {\n integrationId: string;\n workspace: string;\n branch?: string;\n decoCmsApiUrl?: string;\n}\n\nconst normalizeWorkspace = (workspace: string) => {\n if (workspace.startsWith(\"/users\")) {\n return workspace;\n }\n if (workspace.startsWith(\"/shared\")) {\n return workspace;\n }\n if (workspace.includes(\"/\")) {\n return workspace;\n }\n return `/shared/${workspace}`;\n};\n\n/**\n * Url: /apps/mcp?appName=$appName\n */\nconst createAppsUrl = ({\n appName,\n decoChatApiUrl,\n}: {\n appName: string;\n decoChatApiUrl?: string;\n}) =>\n new URL(\n `/apps/mcp?appName=${appName}`,\n decoChatApiUrl ?? \"https://api.decocms.com\",\n ).href;\n/**\n * Url: /:workspace.root/:workspace.slug/:integrationId/mcp\n */\nconst createIntegrationsUrl = ({\n integrationId,\n workspace,\n decoCmsApiUrl,\n branch,\n}: IntegrationContext) => {\n const base = `${normalizeWorkspace(workspace)}/${integrationId}/mcp`;\n const url = new URL(base, decoCmsApiUrl ?? \"https://api.decocms.com\");\n branch && url.searchParams.set(\"branch\", branch);\n return url.href;\n};\n\ntype WorkspaceClientContext = Omit<\n RequestContext,\n \"ensureAuthenticated\" | \"state\" | \"fetchIntegrationMetadata\"\n>;\nexport const workspaceClient = (\n ctx: WorkspaceClientContext,\n): ReturnType<(typeof MCPClient)[\"forWorkspace\"]> => {\n return MCPClient.forWorkspace(ctx.workspace, ctx.token);\n};\n\nconst mcpClientForAppName = (appName: string, decoChatApiUrl?: string) => {\n const mcpConnection: MCPConnection = {\n type: \"HTTP\",\n url: createAppsUrl({\n appName,\n decoChatApiUrl,\n }),\n };\n\n return MCPClient.forConnection(mcpConnection);\n};\n\nexport const proxyConnectionForId = (\n integrationId: string,\n ctx: Omit<WorkspaceClientContext, \"token\"> & {\n token?: string;\n cookie?: string;\n },\n decoChatApiUrl?: string,\n appName?: string,\n): MCPConnection => {\n let headers: Record<string, string> | undefined = appName\n ? { \"x-caller-app\": appName }\n : undefined;\n if (ctx.cookie) {\n headers ??= {};\n headers.cookie = ctx.cookie;\n }\n return {\n type: \"HTTP\",\n url: createIntegrationsUrl({\n integrationId,\n workspace: ctx.workspace,\n decoCmsApiUrl: decoChatApiUrl,\n branch: ctx.branch,\n }),\n token: ctx.token,\n headers,\n };\n};\nconst mcpClientForIntegrationId = (\n integrationId: string,\n ctx: WorkspaceClientContext,\n decoChatApiUrl?: string,\n appName?: string,\n) => {\n const mcpConnection = proxyConnectionForId(\n integrationId,\n ctx,\n decoChatApiUrl,\n appName,\n );\n\n // TODO(@igorbrasileiro): Switch this proxy to be a proxy that call MCP Client.toolCall from @modelcontextprotocol\n return MCPClient.forConnection(mcpConnection);\n};\n\nfunction mcpClientFromState(\n binding: BindingBase | MCPIntegrationNameBinding,\n env: DefaultEnv,\n) {\n const ctx = env.DECO_REQUEST_CONTEXT;\n const bindingFromState = ctx?.state?.[binding.name];\n const integrationId =\n bindingFromState &&\n typeof bindingFromState === \"object\" &&\n \"value\" in bindingFromState\n ? bindingFromState.value\n : undefined;\n if (typeof integrationId !== \"string\" && \"integration_name\" in binding) {\n // in case of a binding to an app name, we need to use the new apps/mcp endpoint which will proxy the request to the app but without any token\n return mcpClientForAppName(binding.integration_name, env.DECO_API_URL);\n }\n return mcpClientForIntegrationId(\n integrationId,\n ctx,\n env.DECO_API_URL,\n env.DECO_APP_NAME,\n );\n}\n\nexport const createContractBinding = (\n binding: ContractBinding,\n env: DefaultEnv,\n) => {\n return mcpClientFromState(binding, env);\n};\n\nexport const createIntegrationBinding = (\n binding: MCPBinding,\n env: DefaultEnv,\n) => {\n const integrationId =\n \"integration_id\" in binding ? binding.integration_id : undefined;\n if (!integrationId) {\n return mcpClientFromState(binding, env);\n }\n // bindings pointed to an specific integration id are binded using the app deployment workspace\n return mcpClientForIntegrationId(\n integrationId,\n {\n workspace: env.DECO_WORKSPACE,\n token: env.DECO_API_TOKEN,\n branch: env.DECO_REQUEST_CONTEXT?.branch,\n },\n env.DECO_API_URL,\n env.DECO_APP_NAME,\n );\n};\n","/* oxlint-disable no-explicit-any */\nimport { type DefaultEnv, type RequestContext, withBindings } from \"./index.ts\";\nimport {\n type AppContext,\n type CreateMCPServerOptions,\n isWorkflow,\n MCPServer,\n} from \"./mastra.ts\";\n\nimport { D1Store } from \"./d1-store.ts\";\nimport { Mastra, type Workflow as MastraWorkflow } from \"@mastra/core\";\nimport { RuntimeContext } from \"@mastra/core/di\";\nimport { DurableObject } from \"./cf-imports.ts\";\nimport { State } from \"./state.ts\";\n\nconst createRuntimeContext = (env: DefaultEnv, ctx: DurableObjectState) => {\n const runtimeContext = new RuntimeContext<AppContext>();\n runtimeContext.set(\"env\", env);\n runtimeContext.set(\"ctx\", ctx);\n return runtimeContext;\n};\nexport interface StartWorkflowArgs {\n workflowId: string;\n args: unknown;\n runId?: string;\n ctx: RequestContext;\n}\n\nexport interface CancelWorkflowArgs {\n workflowId: string;\n runId?: string;\n ctx: RequestContext;\n}\n\nexport interface ResumeWorkflowArgs {\n workflowId: string;\n runId?: string;\n resumeData: unknown;\n stepId: string;\n ctx: RequestContext;\n}\nexport interface WorkflowDO extends Rpc.DurableObjectBranded {\n start: (args: StartWorkflowArgs) => Promise<{ runId: string }>;\n cancel: (args: CancelWorkflowArgs) => Promise<{ cancelled: boolean }>;\n resume: (args: ResumeWorkflowArgs) => Promise<{ resumed: boolean }>;\n}\n\nexport const Workflow = (\n server: MCPServer<any, any>,\n workflows?: CreateMCPServerOptions[\"workflows\"],\n) => {\n return class Workflow\n extends DurableObject<DefaultEnv>\n implements WorkflowDO\n {\n constructor(\n // @ts-ignore: This is a workaround to fix the type error\n // oxlint-disable-next-line ban-types\n public override ctx: DurableObjectState<{}>,\n public override env: DefaultEnv,\n ) {\n super(ctx, env);\n }\n\n bindings(ctx: RequestContext) {\n return withBindings<DefaultEnv>({\n env: this.env,\n server,\n tokenOrContext: ctx,\n });\n }\n\n runWithContext<T>(\n ctx: RequestContext,\n f: (ctx: DefaultEnv) => Promise<T>,\n ): Promise<T> {\n const bindings = this.bindings(ctx);\n return State.run(\n {\n ctx: {\n waitUntil: this.ctx.waitUntil.bind(this.ctx),\n },\n env: this.bindings(ctx),\n },\n () => f(bindings),\n );\n }\n\n async #getWorkflow(\n workflowId: string,\n bindings: DefaultEnv,\n ): Promise<{ workflow: MastraWorkflow }> {\n const bindedWorkflows = await Promise.all(\n workflows?.map(async (workflow) => {\n const workflowResult = workflow(bindings);\n if (isWorkflow(workflowResult)) {\n return { workflow: workflowResult };\n }\n\n return await workflowResult;\n }) ?? [],\n );\n const workflowsMap = Object.fromEntries(\n bindedWorkflows.map((w) => [w.workflow.id, w.workflow]),\n );\n const d1Storage = new D1Store({\n client: bindings.DECO_WORKSPACE_DB,\n });\n const mastra = new Mastra({\n storage: d1Storage,\n workflows: {\n [workflowId]: workflowsMap[workflowId],\n },\n telemetry: {\n enabled: true,\n serviceName: `app-${\n this.env.DECO_CHAT_SCRIPT_SLUG ?? this.env.DECO_APP_SLUG\n }`,\n },\n });\n // since mastra workflows are thenables, so we need to wrap then into an object\n return { workflow: mastra.getWorkflow(workflowId) };\n }\n\n start({ workflowId, runId, args, ctx }: StartWorkflowArgs) {\n return this.runWithContext(ctx, async (bindings) => {\n const { workflow } = await this.#getWorkflow(workflowId, bindings);\n\n const run = await workflow.createRunAsync({\n runId: this.ctx.id.name ?? runId,\n });\n\n const promise = run.start({\n inputData: args,\n runtimeContext: createRuntimeContext(bindings, this.ctx),\n });\n\n this.ctx.waitUntil(\n promise\n .then(() => {\n console.debug(\"workflow\", run.runId, \"finished successfully\");\n })\n .catch((e) => {\n console.error(\"workflow\", run.runId, \"finished with error\", e);\n throw e;\n }),\n );\n\n return {\n runId: run.runId,\n };\n });\n }\n\n cancel({ workflowId, runId, ctx }: CancelWorkflowArgs) {\n return this.runWithContext(ctx, async () => {\n const { workflow } = await this.#getWorkflow(\n workflowId,\n this.bindings(ctx),\n );\n const run = await workflow.createRunAsync({\n runId: this.ctx.id.name ?? runId,\n });\n\n this.ctx.waitUntil(run.cancel());\n\n return {\n cancelled: true,\n };\n });\n }\n resume({ workflowId, runId, resumeData, stepId, ctx }: ResumeWorkflowArgs) {\n return this.runWithContext(ctx, async (bindings) => {\n const { workflow } = await this.#getWorkflow(workflowId, bindings);\n const run = await workflow.createRunAsync({\n runId: this.ctx.id.name ?? runId,\n });\n\n this.ctx.waitUntil(\n run.resume({\n resumeData,\n step: stepId,\n runtimeContext: createRuntimeContext(bindings, this.ctx),\n }),\n );\n\n return {\n resumed: true,\n };\n });\n }\n };\n};\n","/* oxlint-disable no-explicit-any */\nimport type { ExecutionContext } from \"@cloudflare/workers-types\";\nimport { decodeJwt } from \"jose\";\nimport type { z } from \"zod\";\nimport {\n getReqToken,\n handleAuthCallback,\n handleLogout,\n StateParser,\n} from \"./auth.ts\";\nimport {\n createContractBinding,\n createIntegrationBinding,\n workspaceClient,\n} from \"./bindings.ts\";\nimport { DeconfigResource } from \"./bindings/deconfig/index.ts\";\nimport { DECO_MCP_CLIENT_HEADER } from \"./client.ts\";\nimport { DeprecatedEnv } from \"./deprecated.ts\";\nimport {\n createMCPServer,\n type CreateMCPServerOptions,\n MCPServer,\n} from \"./mastra.ts\";\nimport { MCPClient, type QueryResult } from \"./mcp.ts\";\nimport { State } from \"./state.ts\";\nimport type { WorkflowDO } from \"./workflow.ts\";\nimport { Workflow } from \"./workflow.ts\";\nimport type { Binding, ContractBinding, MCPBinding } from \"./wrangler.ts\";\nexport { proxyConnectionForId } from \"./bindings.ts\";\nexport {\n createMCPFetchStub,\n type CreateStubAPIOptions,\n type ToolBinder,\n} from \"./mcp.ts\";\nexport interface WorkspaceDB {\n query: (params: {\n sql: string;\n params: string[];\n }) => Promise<{ result: QueryResult[] }>;\n}\n\nexport interface DefaultEnv<TSchema extends z.ZodTypeAny = any>\n extends DeprecatedEnv<TSchema> {\n DECO_REQUEST_CONTEXT: RequestContext<TSchema>;\n DECO_APP_NAME: string;\n DECO_APP_SLUG: string;\n DECO_APP_ENTRYPOINT: string;\n DECO_API_URL?: string;\n DECO_WORKSPACE: string;\n DECO_API_JWT_PUBLIC_KEY: string;\n DECO_APP_DEPLOYMENT_ID: string;\n DECO_BINDINGS: string;\n DECO_API_TOKEN: string;\n DECO_WORKFLOW_DO: DurableObjectNamespace<WorkflowDO>;\n DECO_WORKSPACE_DB: WorkspaceDB & {\n forContext: (ctx: RequestContext) => WorkspaceDB;\n };\n IS_LOCAL: boolean;\n [key: string]: unknown;\n}\n\nexport interface BindingsObject {\n bindings?: Binding[];\n}\n\nexport const WorkersMCPBindings = {\n parse: (bindings?: string): Binding[] => {\n if (!bindings) return [];\n try {\n return JSON.parse(atob(bindings)) as Binding[];\n } catch {\n return [];\n }\n },\n stringify: (bindings: Binding[]): string => {\n return btoa(JSON.stringify(bindings));\n },\n};\n\nexport interface UserDefaultExport<\n TUserEnv = Record<string, unknown>,\n TSchema extends z.ZodTypeAny = never,\n TEnv = TUserEnv & DefaultEnv<TSchema>,\n> extends CreateMCPServerOptions<TEnv, TSchema> {\n fetch?: (\n req: Request,\n env: TEnv,\n ctx: ExecutionContext,\n ) => Promise<Response> | Response;\n}\n\n// 1. Map binding type to its interface\ninterface BindingTypeMap {\n mcp: MCPBinding;\n contract: ContractBinding;\n}\n\nexport interface User {\n id: string;\n email: string;\n workspace: string;\n user_metadata: {\n avatar_url: string;\n full_name: string;\n picture: string;\n [key: string]: unknown;\n };\n}\n\nexport interface RequestContext<TSchema extends z.ZodTypeAny = any> {\n state: z.infer<TSchema>;\n branch?: string;\n token: string;\n workspace: string;\n ensureAuthenticated: (options?: {\n workspaceHint?: string;\n }) => User | undefined;\n callerApp?: string;\n integrationId?: string;\n}\n\n// 2. Map binding type to its creator function\ntype CreatorByType = {\n [K in keyof BindingTypeMap]: (\n value: BindingTypeMap[K],\n env: DefaultEnv,\n ) => unknown;\n};\n\n// 3. Strongly type creatorByType\nconst creatorByType: CreatorByType = {\n mcp: createIntegrationBinding,\n contract: createContractBinding,\n};\n\nconst withDefaultBindings = ({\n env,\n server,\n ctx,\n url,\n}: {\n env: DefaultEnv;\n server: MCPServer<any, any>;\n ctx: RequestContext;\n url?: string;\n}) => {\n const client = workspaceClient(ctx);\n const createWorkspaceDB = (ctx: RequestContext): WorkspaceDB => {\n const client = workspaceClient(ctx);\n return {\n query: ({ sql, params }) => {\n return client.DATABASES_RUN_SQL({\n sql,\n params,\n });\n },\n };\n };\n env[\"SELF\"] = new Proxy(\n {},\n {\n get: (_, prop) => {\n if (prop === \"toJSON\") {\n return null;\n }\n\n return async (args: unknown) => {\n return await server.callTool({\n toolCallId: prop as string,\n toolCallInput: args,\n });\n };\n },\n },\n );\n\n const workspaceDbBinding = {\n ...createWorkspaceDB(ctx),\n forContext: createWorkspaceDB,\n };\n\n env[\"DECO_API\"] = MCPClient;\n env[\"DECO_WORKSPACE_API\"] = client;\n env[\"DECO_WORKSPACE_DB\"] = workspaceDbBinding;\n\n // Backwards compatibility\n env[\"DECO_CHAT_API\"] = MCPClient;\n env[\"DECO_CHAT_WORKSPACE_API\"] = client;\n env[\"DECO_CHAT_WORKSPACE_DB\"] = workspaceDbBinding;\n\n env[\"IS_LOCAL\"] =\n (url?.startsWith(\"http://localhost\") ||\n url?.startsWith(\"http://127.0.0.1\")) ??\n false;\n};\n\nexport class UnauthorizedError extends Error {\n constructor(\n message: string,\n public redirectTo: URL,\n ) {\n super(message);\n this.name = \"UnauthorizedError\";\n }\n}\n\nconst AUTH_CALLBACK_ENDPOINT = \"/oauth/callback\";\nconst AUTH_START_ENDPOINT = \"/oauth/start\";\nconst AUTH_LOGOUT_ENDPOINT = \"/oauth/logout\";\nconst AUTHENTICATED = (user?: unknown, workspace?: string) => () => {\n return {\n ...((user as User) ?? {}),\n workspace,\n } as User;\n};\n\nexport const withBindings = <TEnv>({\n env: _env,\n server,\n tokenOrContext,\n origin,\n url,\n branch,\n}: {\n env: TEnv;\n server: MCPServer<TEnv, any>;\n tokenOrContext?: string | RequestContext;\n origin?: string | null;\n url?: string;\n branch?: string | null;\n}): TEnv => {\n branch ??= undefined;\n const env = _env as DefaultEnv<any>;\n\n const apiUrl = env.DECO_API_URL ?? \"https://api.decocms.com\";\n let context;\n if (typeof tokenOrContext === \"string\") {\n const decoded = decodeJwt(tokenOrContext);\n const workspace = decoded.aud as string;\n\n context = {\n state: decoded.state as Record<string, unknown>,\n token: tokenOrContext,\n integrationId: decoded.integrationId as string,\n workspace,\n ensureAuthenticated: AUTHENTICATED(decoded.user, workspace),\n branch,\n } as RequestContext<any>;\n } else if (typeof tokenOrContext === \"object\") {\n context = tokenOrContext;\n const decoded = decodeJwt(tokenOrContext.token);\n const workspace = decoded.aud as string;\n const appName = decoded.appName as string | undefined;\n context.callerApp = appName;\n context.integrationId ??= decoded.integrationId as string;\n context.ensureAuthenticated = AUTHENTICATED(decoded.user, workspace);\n } else {\n context = {\n state: undefined,\n token: env.DECO_API_TOKEN,\n workspace: env.DECO_WORKSPACE,\n branch,\n ensureAuthenticated: (options?: { workspaceHint?: string }) => {\n const workspaceHint = options?.workspaceHint ?? env.DECO_WORKSPACE;\n const authUri = new URL(\"/apps/oauth\", apiUrl);\n authUri.searchParams.set(\"client_id\", env.DECO_APP_NAME);\n authUri.searchParams.set(\n \"redirect_uri\",\n new URL(AUTH_CALLBACK_ENDPOINT, origin ?? env.DECO_APP_ENTRYPOINT)\n .href,\n );\n workspaceHint &&\n authUri.searchParams.set(\"workspace_hint\", workspaceHint);\n throw new UnauthorizedError(\"Unauthorized\", authUri);\n },\n };\n }\n\n env.DECO_REQUEST_CONTEXT = context;\n // Backwards compatibility\n env.DECO_CHAT_REQUEST_CONTEXT = context;\n const bindings = WorkersMCPBindings.parse(env.DECO_BINDINGS);\n\n for (const binding of bindings) {\n env[binding.name] = creatorByType[binding.type](binding as any, env);\n }\n\n withDefaultBindings({\n env,\n server,\n ctx: env.DECO_REQUEST_CONTEXT,\n url,\n });\n\n return env as TEnv;\n};\n\nexport const withRuntime = <TEnv, TSchema extends z.ZodTypeAny = never>(\n userFns: UserDefaultExport<TEnv, TSchema>,\n): ExportedHandler<TEnv & DefaultEnv<TSchema>> & {\n Workflow: ReturnType<typeof Workflow>;\n} => {\n const server = createMCPServer<TEnv, TSchema>(userFns);\n const fetcher = async (\n req: Request,\n env: TEnv & DefaultEnv<TSchema>,\n ctx: ExecutionContext,\n ) => {\n const url = new URL(req.url);\n if (url.pathname === AUTH_CALLBACK_ENDPOINT) {\n return handleAuthCallback(req, {\n apiUrl: env.DECO_API_URL,\n appName: env.DECO_APP_NAME,\n });\n }\n if (url.pathname === AUTH_START_ENDPOINT) {\n env.DECO_REQUEST_CONTEXT.ensureAuthenticated();\n const redirectTo = new URL(\"/\", url);\n const next = url.searchParams.get(\"next\");\n return Response.redirect(next ?? redirectTo, 302);\n }\n if (url.pathname === AUTH_LOGOUT_ENDPOINT) {\n return handleLogout(req);\n }\n if (url.pathname === \"/mcp\") {\n return server.fetch(req, env, ctx);\n }\n\n if (url.pathname.startsWith(\"/mcp/call-tool\")) {\n const toolCallId = url.pathname.split(\"/\").pop();\n if (!toolCallId) {\n return new Response(\"Not found\", { status: 404 });\n }\n const toolCallInput = await req.json();\n const result = await server.callTool({\n toolCallId,\n toolCallInput,\n });\n\n if (result instanceof Response) {\n return result;\n }\n\n return new Response(JSON.stringify(result), {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n }\n\n if (url.pathname.startsWith(DeconfigResource.WatchPathNameBase)) {\n return DeconfigResource.watchAPI(req, env);\n }\n return (\n userFns.fetch?.(req, env, ctx) ||\n new Response(\"Not found\", { status: 404 })\n );\n };\n return {\n Workflow: Workflow(server, userFns.workflows),\n fetch: async (\n req: Request,\n env: TEnv & DefaultEnv<TSchema>,\n ctx: ExecutionContext,\n ) => {\n const referer = req.headers.get(\"referer\");\n const isFetchRequest = req.headers.has(DECO_MCP_CLIENT_HEADER);\n\n try {\n const bindings = withBindings({\n env,\n server,\n branch:\n req.headers.get(\"x-deco-branch\") ??\n new URL(req.url).searchParams.get(\"__b\"),\n tokenOrContext: await getReqToken(req, env),\n origin:\n referer ?? req.headers.get(\"origin\") ?? new URL(req.url).origin,\n url: req.url,\n });\n return await State.run(\n { req, env: bindings, ctx },\n async () => await fetcher(req, bindings, ctx),\n );\n } catch (error) {\n if (error instanceof UnauthorizedError) {\n if (!isFetchRequest) {\n const url = new URL(req.url);\n error.redirectTo.searchParams.set(\n \"state\",\n StateParser.stringify({\n next: url.searchParams.get(\"next\") ?? referer ?? req.url,\n }),\n );\n return Response.redirect(error.redirectTo, 302);\n }\n return new Response(null, { status: 401 });\n }\n throw error;\n }\n },\n };\n};\n\nexport {\n type Contract,\n type Migration,\n type WranglerConfig,\n} from \"./wrangler.ts\";\n"]}
package/dist/mastra.js CHANGED
@@ -1,6 +1,6 @@
1
- export { cloneStep, cloneWorkflow, createMCPServer, createPrivateTool, createRuntimeContext, createStep, createStepFromTool, createStreamableTool, createTool, createWorkflow, isStreamableTool, isWorkflow } from './chunk-UIJGM3NV.js';
2
- import './chunk-L4OT2YDO.js';
3
- import './chunk-7ITSLORK.js';
1
+ export { cloneStep, cloneWorkflow, createMCPServer, createPrivateTool, createRuntimeContext, createStep, createStepFromTool, createStreamableTool, createTool, createWorkflow, isStreamableTool, isWorkflow } from './chunk-LCU3FBI3.js';
2
+ import './chunk-AOFOWQXY.js';
3
+ import './chunk-NKUMVYKI.js';
4
4
  import './chunk-I7BWSAN6.js';
5
5
  //# sourceMappingURL=mastra.js.map
6
6
  //# sourceMappingURL=mastra.js.map
package/dist/resources.js CHANGED
@@ -1,4 +1,4 @@
1
- export { ResourceCreateInputSchema, ResourceCreateOutputSchema, ResourceDeleteInputSchema, ResourceDeleteOutputSchema, ResourceSearchInputSchema, ResourceSearchOutputSchema, ResourceUpdateInputSchema, ResourceUpdateOutputSchema, ResourcesListInputSchema, ResourcesListOutputSchema, ResourcesReadInputSchema, ResourcesReadOutputSchema, mimeType } from './chunk-7ITSLORK.js';
1
+ export { ResourceCreateInputSchema, ResourceCreateOutputSchema, ResourceDeleteInputSchema, ResourceDeleteOutputSchema, ResourceSearchInputSchema, ResourceSearchOutputSchema, ResourceUpdateInputSchema, ResourceUpdateOutputSchema, ResourcesListInputSchema, ResourcesListOutputSchema, ResourcesReadInputSchema, ResourcesReadOutputSchema, mimeType } from './chunk-NKUMVYKI.js';
2
2
  import './chunk-I7BWSAN6.js';
3
3
  //# sourceMappingURL=resources.js.map
4
4
  //# sourceMappingURL=resources.js.map
package/dist/views.js CHANGED
@@ -1,4 +1,4 @@
1
- export { ViewsListOutputSchema } from './chunk-L4OT2YDO.js';
1
+ export { ViewsListOutputSchema } from './chunk-AOFOWQXY.js';
2
2
  import './chunk-I7BWSAN6.js';
3
3
  //# sourceMappingURL=views.js.map
4
4
  //# sourceMappingURL=views.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@decocms/runtime",
3
- "version": "0.28.1",
3
+ "version": "0.28.2",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "build": "tsup",
@@ -9,10 +9,10 @@
9
9
  "dependencies": {
10
10
  "@cloudflare/workers-types": "^4.20250617.0",
11
11
  "@deco/mcp": "npm:@jsr/deco__mcp@0.5.5",
12
- "@decocms/bindings": "*",
12
+ "@decocms/bindings": "0.2.5",
13
13
  "@mastra/cloudflare-d1": "^0.13.4",
14
14
  "@mastra/core": "^0.20.2",
15
- "@modelcontextprotocol/sdk": "^1.19.1",
15
+ "@modelcontextprotocol/sdk": "1.20.2",
16
16
  "@ai-sdk/provider": "^2.0.0",
17
17
  "bidc": "0.0.3",
18
18
  "drizzle-orm": "^0.44.5",
@@ -78,7 +78,7 @@ To create a new binding:
78
78
  input/output:
79
79
 
80
80
  ```ts
81
- import { z } from "zod/v3";
81
+ import { z } from "zod";
82
82
  import type { Binder } from "../index.ts";
83
83
 
84
84
  const myInputSchema = z.object({ ... });
@@ -1,5 +1,5 @@
1
1
  /* oxlint-disable no-explicit-any */
2
- import { z } from "zod/v3";
2
+ import { z } from "zod";
3
3
  import type { MCPConnection } from "../connection.ts";
4
4
  import { createPrivateTool, createStreamableTool } from "../mastra.ts";
5
5
  import {
@@ -1,4 +1,4 @@
1
- import { z } from "zod/v3";
1
+ import { z } from "zod";
2
2
  import type { ToolBinder } from "../mcp.ts";
3
3
 
4
4
  const callbacksSchema = z.object({
@@ -103,7 +103,9 @@ export const createDeconfigResource = <
103
103
  });
104
104
 
105
105
  // Filter files that end with .json
106
- const allFiles = Object.entries(filesList.files)
106
+ const allFiles = Object.entries(
107
+ (filesList as { files: Record<string, unknown> }).files,
108
+ )
107
109
  .filter(([path]) => path.endsWith(".json"))
108
110
  .map(([path, metadata]) => ({
109
111
  path,
@@ -189,8 +191,20 @@ export const createDeconfigResource = <
189
191
  aValue = getMetadataString(a.metadata, "description") || "";
190
192
  bValue = getMetadataString(b.metadata, "description") || "";
191
193
  } else {
192
- aValue = a.metadata.mtime;
193
- bValue = b.metadata.mtime;
194
+ aValue =
195
+ typeof a.metadata === "object" &&
196
+ a.metadata &&
197
+ "mtime" in a.metadata &&
198
+ typeof a.metadata.mtime === "number"
199
+ ? a.metadata.mtime
200
+ : 0;
201
+ bValue =
202
+ typeof b.metadata === "object" &&
203
+ b.metadata &&
204
+ "mtime" in b.metadata &&
205
+ typeof b.metadata.mtime === "number"
206
+ ? b.metadata.mtime
207
+ : 0;
194
208
  }
195
209
 
196
210
  if (sortOrder === "desc") {
@@ -226,11 +240,17 @@ export const createDeconfigResource = <
226
240
  uri,
227
241
  data: { name, description },
228
242
  created_at:
229
- "ctime" in metadata && typeof metadata.ctime === "number"
243
+ typeof metadata === "object" &&
244
+ metadata &&
245
+ "ctime" in metadata &&
246
+ typeof metadata.ctime === "number"
230
247
  ? new Date(metadata.ctime).toISOString()
231
248
  : undefined,
232
249
  updated_at:
233
- "mtime" in metadata && typeof metadata.mtime === "number"
250
+ typeof metadata === "object" &&
251
+ metadata &&
252
+ "mtime" in metadata &&
253
+ typeof metadata.mtime === "number"
234
254
  ? new Date(metadata.mtime).toISOString()
235
255
  : undefined,
236
256
  created_by: getMetadataString(metadata, "createdBy"),
@@ -264,12 +284,16 @@ export const createDeconfigResource = <
264
284
  const filePath = ResourcePath.build(directory, resourceId);
265
285
 
266
286
  try {
267
- const fileData = await deconfig.READ_FILE({
287
+ const fileData = (await deconfig.READ_FILE({
268
288
  path: filePath,
269
289
  format: "plainString",
270
- });
290
+ })) as {
291
+ content: string;
292
+ ctime: number;
293
+ mtime: number;
294
+ };
271
295
 
272
- const content = fileData.content as string;
296
+ const content = fileData.content;
273
297
 
274
298
  // Parse the JSON content
275
299
  let parsedData: Record<string, unknown> = {};
@@ -285,8 +309,14 @@ export const createDeconfigResource = <
285
309
  return {
286
310
  uri,
287
311
  data: validatedData,
288
- created_at: new Date(fileData.ctime).toISOString(),
289
- updated_at: new Date(fileData.mtime).toISOString(),
312
+ created_at:
313
+ typeof fileData.ctime === "number"
314
+ ? new Date(fileData.ctime).toISOString()
315
+ : new Date().toISOString(),
316
+ updated_at:
317
+ typeof fileData.mtime === "number"
318
+ ? new Date(fileData.mtime).toISOString()
319
+ : new Date().toISOString(),
290
320
  created_by:
291
321
  parsedData &&
292
322
  "created_by" in parsedData &&
@@ -347,7 +377,7 @@ export const createDeconfigResource = <
347
377
  };
348
378
 
349
379
  const fileContent = JSON.stringify(resourceData, null, 2);
350
- const putResult = await deconfig.PUT_FILE({
380
+ const putResult = (await deconfig.PUT_FILE({
351
381
  path: filePath,
352
382
  content: fileContent,
353
383
  metadata: {
@@ -357,7 +387,7 @@ export const createDeconfigResource = <
357
387
  name: validatedData.name || resourceId,
358
388
  description: validatedData.description || "",
359
389
  },
360
- });
390
+ })) as { conflict?: boolean };
361
391
 
362
392
  if (putResult.conflict) {
363
393
  throw new UserInputError(
@@ -393,11 +423,11 @@ export const createDeconfigResource = <
393
423
  // Read existing file to get current data
394
424
  let existingData: Record<string, unknown> = {};
395
425
  try {
396
- const fileData = await deconfig.READ_FILE({
426
+ const fileData = (await deconfig.READ_FILE({
397
427
  path: filePath,
398
428
  format: "plainString",
399
- });
400
- existingData = JSON.parse(fileData.content as string);
429
+ })) as { content: string };
430
+ existingData = JSON.parse(fileData.content);
401
431
  } catch {
402
432
  throw new NotFoundError(`Resource not found: ${uri}`);
403
433
  }
@@ -429,7 +459,7 @@ export const createDeconfigResource = <
429
459
 
430
460
  const fileContent = JSON.stringify(updatedData, null, 2);
431
461
 
432
- const putResult = await deconfig.PUT_FILE({
462
+ const putResult = (await deconfig.PUT_FILE({
433
463
  path: filePath,
434
464
  content: fileContent,
435
465
  metadata: {
@@ -439,7 +469,7 @@ export const createDeconfigResource = <
439
469
  name: validatedData.name || resourceId,
440
470
  description: validatedData.description || "",
441
471
  },
442
- });
472
+ })) as { conflict?: boolean };
443
473
 
444
474
  if (putResult.conflict) {
445
475
  throw new UserInputError(
@@ -1,5 +1,5 @@
1
1
  // Types for DeconfigResource
2
- import { z } from "zod/v3";
2
+ import { z } from "zod";
3
3
  import type { DefaultEnv } from "../../index.ts";
4
4
  import type { MCPClientFetchStub, ToolBinder } from "../../mcp.ts";
5
5
  import type { BaseResourceDataSchema } from "../resources/bindings.ts";
@@ -42,10 +42,13 @@ export const createProvider = (binding: LLMBindingClient): Provider => {
42
42
  return await binding.COLLECTION_LLM_LIST({});
43
43
  },
44
44
  languageModel: (modelId: string): LanguageModelV2 => {
45
- const supportedUrls = lazy(() =>
46
- binding
47
- .LLM_METADATA({ modelId })
48
- .then((metadata) => toRegExp(metadata.supportedUrls)),
45
+ const supportedUrls = lazy(
46
+ (): Promise<Record<string, RegExp[]>> =>
47
+ binding
48
+ .LLM_METADATA({ modelId })
49
+ .then((metadata: { supportedUrls: Record<string, string[]> }) =>
50
+ toRegExp(metadata.supportedUrls),
51
+ ),
49
52
  );
50
53
 
51
54
  return {
@@ -1,4 +1,4 @@
1
- import { z } from "zod/v3";
1
+ import { z } from "zod";
2
2
  import type { ToolBinder } from "../../mcp.ts";
3
3
  import {
4
4
  createCreateInputSchema,
@@ -1,4 +1,4 @@
1
- import { z } from "zod/v3";
1
+ import { z } from "zod";
2
2
 
3
3
  /**
4
4
  * Resources 2.0 Schemas
@@ -1,5 +1,5 @@
1
1
  import { ViewsListOutputSchema } from "../views.ts";
2
- import { z } from "zod/v3";
2
+ import { z } from "zod";
3
3
  import type { ToolBinder } from "../mcp.ts";
4
4
 
5
5
  export const VIEW_BINDING = [
package/src/deprecated.ts CHANGED
@@ -2,7 +2,7 @@ import type { RequestContext } from "./index.ts";
2
2
  import type { DurableObjectNamespace } from "@cloudflare/workers-types";
3
3
  import type { WorkspaceDB } from "./index.ts";
4
4
  import type { WorkflowDO } from "./workflow.ts";
5
- import type { z } from "zod/v3";
5
+ import type { z } from "zod";
6
6
 
7
7
  // oxlint-disable-next-line no-explicit-any
8
8
  export interface DeprecatedEnv<TSchema extends z.ZodTypeAny = any> {
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /* oxlint-disable no-explicit-any */
2
2
  import type { ExecutionContext } from "@cloudflare/workers-types";
3
3
  import { decodeJwt } from "jose";
4
- import type { z } from "zod/v3";
4
+ import type { z } from "zod";
5
5
  import {
6
6
  getReqToken,
7
7
  handleAuthCallback,
package/src/mastra.ts CHANGED
@@ -17,7 +17,7 @@ import {
17
17
  type Step as MastraStep,
18
18
  } from "@mastra/core/workflows";
19
19
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
20
- import { z } from "zod/v3";
20
+ import { z } from "zod";
21
21
  import { zodToJsonSchema } from "zod-to-json-schema";
22
22
  import type { DefaultEnv } from "./index.ts";
23
23
  import {
package/src/mcp.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /* oxlint-disable no-explicit-any */
2
2
  import { env } from "cloudflare:workers";
3
- import { z } from "zod/v3";
3
+ import { z } from "zod";
4
4
  import type { MCPConnection } from "./connection.ts";
5
5
  import type { DefaultEnv } from "./index.ts";
6
6
  import { createMCPClientProxy } from "./proxy.ts";
package/src/resources.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { z } from "zod/v3";
1
+ import { z } from "zod";
2
2
  import mimeDb from "mime-db";
3
3
 
4
4
  type MimeDb = Record<string, { extensions?: string[] }>;
package/src/state.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
- import { z } from "zod/v3";
2
+ import { z } from "zod";
3
3
  import type { AppContext } from "./mastra.ts";
4
4
  import { createTool } from "./mastra.ts";
5
5
 
package/src/views.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { z } from "zod/v3";
1
+ import { z } from "zod";
2
2
 
3
3
  const installBehavior = z.enum(["none", "open", "autoPin"]);
4
4
 
package/dist/admin.d.ts DELETED
@@ -1,5 +0,0 @@
1
- declare const requestMissingScopes: ({ scopes }: {
2
- scopes: string[];
3
- }) => void;
4
-
5
- export { requestMissingScopes };
@@ -1,12 +0,0 @@
1
- export { D as DeconfigClient, i as DeconfigResource, b as DeconfigResourceOptions, E as EnhancedResourcesTools, N as NotFoundError, h as RESOURCE_WATCH_BASE_PATHNAME, R as ResourcesBinding, d as ResourcesTools, U as UserInputError, W as WatchOptions, a as createDeconfigResource } from '../../index-xKtm7A7B.js';
2
- import '@mastra/core';
3
- import '../../index-LOfgE9a_.js';
4
- import '@cloudflare/workers-types';
5
- import 'zod/v3';
6
- import '@mastra/core/di';
7
- import '@mastra/core/workflows';
8
- import '../../resources.js';
9
- import '../../mcp-87iLaW9V.js';
10
- import '@decocms/bindings/connection';
11
- import '@decocms/bindings';
12
- import 'zod';