diff --git a/app/routes/api.chat.ts b/app/routes/api.chat.ts index a05d272..8f2cae3 100644 --- a/app/routes/api.chat.ts +++ b/app/routes/api.chat.ts @@ -1,6 +1,6 @@ -import { getModel } from "~/chat/ai/providers.server"; import type { modelID } from "~/chat/ai/providers.shared"; import { streamText, type ToolSet, type UIMessage } from "ai"; +import { createWorkersAI } from "workers-ai-provider"; import type { StorageKey } from "~/chat/ai/providers.shared"; import { MCPClientManager } from "agents/mcp/client"; @@ -41,73 +41,11 @@ export async function action({ apiKeys: Record; } = await request.json(); - const env = context.cloudflare.env as CloudflareEnvironment; - const model = getModel(env, apiKeys); - - // // Initialize tools - // let tools = {}; - // const mcpClients: any[] = []; - - // // Process each MCP server configuration - // for (const mcpServer of mcpServers) { - // try { - // // Create appropriate transport based on type - // let transport: - // | MCPTransport - // | { type: "sse"; url: string; headers?: Record }; - - // if (mcpServer.type === "sse") { - // // Convert headers array to object for SSE transport - // const headers: Record = {}; - // if (mcpServer.headers && mcpServer.headers.length > 0) { - // mcpServer.headers.forEach((header) => { - // if (header.key) headers[header.key] = header.value || ""; - // }); - // } - - // transport = { - // type: "sse" as const, - // url: mcpServer.url, - // headers: Object.keys(headers).length > 0 ? headers : undefined, - // }; - // } else { - // console.warn( - // `Skipping MCP server with unsupported transport type: ${mcpServer.type}`, - // ); - // continue; - // } - - // const mcpClient = await createMCPClient({ transport }); - // mcpClients.push(mcpClient); - - // const mcptools = await mcpClient.tools(); - // console.log("mcptools", mcptools); - - // console.log( - // `MCP tools from ${mcpServer.type} transport:`, - // Object.keys(mcptools), - // ); - - // // Add MCP tools to tools object - // tools = { ...tools, ...mcptools }; - // } catch (error) { - // console.error("Failed to initialize MCP client:", error); - // // Continue with other servers instead of failing the entire request - // } - // } - - // // Register cleanup for all clients - // if (mcpClients.length > 0) { - // request.signal.addEventListener("abort", async () => { - // for (const client of mcpClients) { - // try { - // await client.close(); - // } catch (error) { - // console.error("Error closing MCP client:", error); - // } - // } - // }); - // } + const env = context.cloudflare.env as CloudflareEnvironment & { AI: any }; + + const workersai = createWorkersAI({ binding: env.AI }); + + const model = workersai("@cf/deepseek-ai/deepseek-r1-distill-qwen-32b", {}); let tools: ToolSet = {}; const mcp = new MCPClientManager("my-agent", "1.0.0"); @@ -127,15 +65,9 @@ export async function action({ } } - // console.log("messages", messages); - // console.log( - // "parts", - // messages.map((m) => m.parts.map((p) => p)), - // ); - // If there was an error setting up MCP clients but we at least have composio tools, continue const result = streamText({ - model: model.languageModel(selectedModel), + model: model, system: `You are a helpful assistant with access to a variety of tools. Today's date is ${new Date().toISOString().split("T")[0]}. @@ -161,19 +93,6 @@ export async function action({ messages, tools, maxSteps: 20, - providerOptions: { - google: { - thinkingConfig: { - thinkingBudget: 2048, - }, - }, - anthropic: { - thinking: { - type: "enabled", - budgetTokens: 12000, - }, - }, - }, onError: (error) => { console.error(JSON.stringify(error, null, 2)); }, diff --git a/package.json b/package.json index 53ee77f..fd3b0f5 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "@types/react": "^19.1.2", "@types/react-dom": "^19.1.2", "agents": "^0.0.66", - "ai": "^4.3.9", + "ai": "^4.3.10", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "dotenv": "^16.5.0", @@ -81,11 +81,12 @@ "tailwind-merge": "^3.2.0", "tailwindcss-animate": "^1.0.7", "typewriter-effect": "^2.21.0", + "workers-ai-provider": "^0.3.0", "zod": "^3.24.3" }, "devDependencies": { - "@cloudflare/vite-plugin": "^0.1.21", - "@cloudflare/workers-types": "^4.20250418.0", + "@cloudflare/vite-plugin": "^1.0.12", + "@cloudflare/workers-types": "^4.20250425.0", "@react-router/dev": "^7.5.1", "@tailwindcss/postcss": "^4.1.4", "@tailwindcss/vite": "^4.1.4", @@ -102,6 +103,6 @@ "vite-tsconfig-paths": "^5.1.4", "vitest": "^1.6.1", "workers-mcp": "0.1.0-3", - "wrangler": "^4.12.0" + "wrangler": "^4.13.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index faa726b..06cda43 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -70,10 +70,10 @@ importers: version: 1.2.4(@types/react-dom@19.1.2(@types/react@19.1.2))(@types/react@19.1.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@react-router/fs-routes': specifier: ^7.5.1 - version: 7.5.1(@react-router/dev@7.5.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(react-router@7.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(tsx@4.19.3)(typescript@5.8.3)(vite@6.3.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1))(wrangler@4.12.0(@cloudflare/workers-types@4.20250418.0))(yaml@2.7.1))(typescript@5.8.3) + version: 7.5.1(@react-router/dev@7.5.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(react-router@7.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(tsx@4.19.3)(typescript@5.8.3)(vite@6.3.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1))(wrangler@4.13.2(@cloudflare/workers-types@4.20250425.0))(yaml@2.7.1))(typescript@5.8.3) '@remix-run/cloudflare': specifier: ^2.16.5 - version: 2.16.5(@cloudflare/workers-types@4.20250418.0)(typescript@5.8.3) + version: 2.16.5(@cloudflare/workers-types@4.20250425.0)(typescript@5.8.3) '@types/react': specifier: ^19.1.2 version: 19.1.2 @@ -82,10 +82,10 @@ importers: version: 19.1.2(@types/react@19.1.2) agents: specifier: ^0.0.66 - version: 0.0.66(@cloudflare/workers-types@4.20250418.0)(react@19.1.0) + version: 0.0.66(@cloudflare/workers-types@4.20250425.0)(react@19.1.0) ai: - specifier: ^4.3.9 - version: 4.3.9(react@19.1.0)(zod@3.24.3) + specifier: ^4.3.10 + version: 4.3.10(react@19.1.0)(zod@3.24.3) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -146,19 +146,22 @@ importers: typewriter-effect: specifier: ^2.21.0 version: 2.21.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + workers-ai-provider: + specifier: ^0.3.0 + version: 0.3.0 zod: specifier: ^3.24.3 version: 3.24.3 devDependencies: '@cloudflare/vite-plugin': - specifier: ^0.1.21 - version: 0.1.21(vite@6.3.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1))(workerd@1.20250416.0)(wrangler@4.12.0(@cloudflare/workers-types@4.20250418.0)) + specifier: ^1.0.12 + version: 1.0.12(rollup@4.40.0)(vite@6.3.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1))(workerd@1.20250424.0)(wrangler@4.13.2(@cloudflare/workers-types@4.20250425.0)) '@cloudflare/workers-types': - specifier: ^4.20250418.0 - version: 4.20250418.0 + specifier: ^4.20250425.0 + version: 4.20250425.0 '@react-router/dev': specifier: ^7.5.1 - version: 7.5.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(react-router@7.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(tsx@4.19.3)(typescript@5.8.3)(vite@6.3.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1))(wrangler@4.12.0(@cloudflare/workers-types@4.20250418.0))(yaml@2.7.1) + version: 7.5.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(react-router@7.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(tsx@4.19.3)(typescript@5.8.3)(vite@6.3.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1))(wrangler@4.13.2(@cloudflare/workers-types@4.20250425.0))(yaml@2.7.1) '@tailwindcss/postcss': specifier: ^4.1.4 version: 4.1.4 @@ -199,8 +202,8 @@ importers: specifier: 0.1.0-3 version: 0.1.0-3 wrangler: - specifier: ^4.12.0 - version: 4.12.0(@cloudflare/workers-types@4.20250418.0) + specifier: ^4.13.2 + version: 4.13.2(@cloudflare/workers-types@4.20250425.0) packages: @@ -433,68 +436,38 @@ packages: workerd: optional: true - '@cloudflare/vite-plugin@0.1.21': - resolution: {integrity: sha512-2QU5+c6HChdCT5AfJekCjXn5C1NjhReEDw5x4jpvSR4qexUNpVnzFhBtGmWjvAfbgzJZGBkEIRz0DaW9dU6fWA==} + '@cloudflare/vite-plugin@1.0.12': + resolution: {integrity: sha512-Z2rW72nxq4KcFVHl/aB7/FwE/UzAGuUUNF+lpGPqbBriQgeWWMQZ8Vf9YLdDZeQprUdXcdZ+8RgCx00RWdZSnw==} peerDependencies: vite: ^6.1.0 wrangler: ^3.101.0 || ^4.0.0 - '@cloudflare/workerd-darwin-64@1.20250321.0': - resolution: {integrity: sha512-y273GfLaNCxkL8hTfo0c8FZKkOPdq+CPZAKJXPWB+YpS1JCOULu6lNTptpD7ZtF14dTYPkn5Weug31TTlviJmw==} + '@cloudflare/workerd-darwin-64@1.20250424.0': + resolution: {integrity: sha512-E+9tyQfwKwg7iz+vI50UeF9m9MhO6uCTnn6VPBTobhgi0rKcfmCteUGz6YJejG6ex9OIfFHg/tIcr1+ywGZtiA==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-64@1.20250416.0': - resolution: {integrity: sha512-aZgF8Swp9eVYxJPWOoZbAgAaYjWuYqGmEA+QJ2ecRGDBqm87rT4GEw7/mmLpxrpllny3VfEEhkk9iYCGv8nlFw==} - engines: {node: '>=16'} - cpu: [x64] - os: [darwin] - - '@cloudflare/workerd-darwin-arm64@1.20250321.0': - resolution: {integrity: sha512-qvf7/gkkQq7fAsoMlntJSimN/WfwQqxi2oL0aWZMGodTvs/yRHO2I4oE0eOihVdK1BXyBHJXNxEvNDBjF0+Yuw==} - engines: {node: '>=16'} - cpu: [arm64] - os: [darwin] - - '@cloudflare/workerd-darwin-arm64@1.20250416.0': - resolution: {integrity: sha512-FhswG1QYRfaTZ4FAlUkfVWaoM2lrlqumiBTrhbo9czMJdGR/oBXS4SGynuI6zyhApHeBf3/fZpA/SBAe4cXdgg==} + '@cloudflare/workerd-darwin-arm64@1.20250424.0': + resolution: {integrity: sha512-5vReSs+Gx4vPNR3zoU3a7BVBoTEc7aoe2gGcaxSSQKMOvVkp3bo9poOGZbISodhYnCCRXltZcl8Vgyi0l/YZLA==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20250321.0': - resolution: {integrity: sha512-AEp3xjWFrNPO/h0StCOgOb0bWCcNThnkESpy91Wf4mfUF2p7tOCdp37Nk/1QIRqSxnfv4Hgxyi7gcWud9cJuMw==} + '@cloudflare/workerd-linux-64@1.20250424.0': + resolution: {integrity: sha512-8kBNy7LpW/E4XKGrx/1Xql3Hfy8viDb+tFudu+sN/b6A2tNczNoOzDyNeWeWa99/zfyzncah1l0Wl2RBmVvY+Q==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-64@1.20250416.0': - resolution: {integrity: sha512-G+nXEAJ/9y+A857XShwxKeRdfxok6UcjiQe6G+wQeCn/Ofkp/EWydacKdyeVU6QIm1oHS78DwJ7AzbCYywf9aw==} - engines: {node: '>=16'} - cpu: [x64] - os: [linux] - - '@cloudflare/workerd-linux-arm64@1.20250321.0': - resolution: {integrity: sha512-wRWyMIoPIS1UBXCisW0FYTgGsfZD4AVS0hXA5nuLc0c21CvzZpmmTjqEWMcwPFenwy/MNL61NautVOC4qJqQ3Q==} + '@cloudflare/workerd-linux-arm64@1.20250424.0': + resolution: {integrity: sha512-R4wLZNobQo5K96e3BEaTwCbZhyspeoW81k/yrkSRseLpSoIpLNguw6ckk5sGCjUkXEZQyu9TG6PzdYqlQo70gw==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20250416.0': - resolution: {integrity: sha512-U6oVW0d9w1fpnDYNrjPJ9SFkDlGJWJWbXHlTBObXl6vccP16WewvuxyHkKqyUhUc8hyBaph7sxeKzKmuCFQ4SA==} - engines: {node: '>=16'} - cpu: [arm64] - os: [linux] - - '@cloudflare/workerd-windows-64@1.20250321.0': - resolution: {integrity: sha512-8vYP3QYO0zo2faUDfWl88jjfUvz7Si9GS3mUYaTh/TR9LcAUtsO7muLxPamqEyoxNFtbQgy08R4rTid94KRi3w==} - engines: {node: '>=16'} - cpu: [x64] - os: [win32] - - '@cloudflare/workerd-windows-64@1.20250416.0': - resolution: {integrity: sha512-YAjjTzL1z9YYeN4sqYfj1dtQXd2Bblj+B+hl4Rz2aOhblpZEZAdhapZlOCRvLLkOJshKJUnRD3mDlytAdgwybQ==} + '@cloudflare/workerd-windows-64@1.20250424.0': + resolution: {integrity: sha512-uwzZhNaKjJKq6NGFPd0hQWecpf5OTZCrlWKQZm4kkufZ7uIzkn5t3kOjh/J3L9puM/GvIPxCiDUE2aG66P6YxA==} engines: {node: '>=16'} cpu: [x64] os: [win32] @@ -502,8 +475,8 @@ packages: '@cloudflare/workers-oauth-provider@0.0.2': resolution: {integrity: sha512-/4ITlItqtmG077CBdo/14c4GNrhLDQ9Y/+mDMEppzXz5g0gVbYjzZGtXrQFQG1mfOHNfXmNxgVwin2eh0X423Q==} - '@cloudflare/workers-types@4.20250418.0': - resolution: {integrity: sha512-cPnHbEAryOX1FwEjjMXXCLudkxXUlfy7Hf55lqTPpYRSUA76NGLFfkhUF7+KkRrFg2u6pNpXTj24Gv5pMEHlqg==} + '@cloudflare/workers-types@4.20250425.0': + resolution: {integrity: sha512-BOU4hbK7Bhcxhmjuk/FcDopWvdvuCLMIanHjNxI0UflPhsFJj5se224iNluw8T5pROA0NFAYhBd3Up784p2/Jw==} '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -1510,6 +1483,24 @@ packages: typescript: optional: true + '@rollup/plugin-replace@6.0.2': + resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.1.4': + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.40.0': resolution: {integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==} cpu: [arm] @@ -1815,8 +1806,8 @@ packages: peerDependencies: react: '*' - ai@4.3.9: - resolution: {integrity: sha512-P2RpV65sWIPdUlA4f1pcJ11pB0N1YmqPVLEmC4j8WuBwKY0L3q9vGhYPh0Iv+spKHKyn0wUbMfas+7Z6nTfS0g==} + ai@4.3.10: + resolution: {integrity: sha512-jw+ahNu+T4SHj9gtraIKtYhanJI6gj2IZ5BFcfEHgoyQVMln5a5beGjzl/nQSX6FxyLqJ/UBpClRa279EEKK/Q==} engines: {node: '>=18'} peerDependencies: react: ^18 || ^19 || ^19.0.0-rc @@ -2199,6 +2190,9 @@ packages: estree-util-is-identifier-name@3.0.0: resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} @@ -2900,13 +2894,8 @@ packages: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} - miniflare@4.20250321.2: - resolution: {integrity: sha512-1HPrKb0qBWe2vvbabIciJAhydLlqwXwJEuM3tWlhQPwWZtySzfb69Knadr3l1evGG9RB2qMML4yrowzdyUoOwg==} - engines: {node: '>=18.0.0'} - hasBin: true - - miniflare@4.20250416.0: - resolution: {integrity: sha512-261PhPgD9zs5/BTdbWqwiaXtWxb+Av5zKCwTU+HXrA5E4tf3qnULwh3u6SVUOAEArEroFuKJzawsQ9COtNBurQ==} + miniflare@4.20250424.1: + resolution: {integrity: sha512-CqBzp8DPO76DLRBSx5/1GM200B5SbfpkNA9n/IxFGY7n6YNc1ypPYy/J0tQqj7vOA62jyD/3kPVbUXxbPKe5SQ==} engines: {node: '>=18.0.0'} hasBin: true @@ -3851,27 +3840,25 @@ packages: engines: {node: '>=8'} hasBin: true - workerd@1.20250321.0: - resolution: {integrity: sha512-vyuz9pdJ+7o1lC79vQ2UVRLXPARa2Lq94PbTfqEcYQeSxeR9X+YqhNq2yysv8Zs5vpokmexLCtMniPp9u+2LVQ==} + workerd@1.20250424.0: + resolution: {integrity: sha512-3Nb69De9pfC21vLMW8Xpp5JXEPYd7e8MGcaEfo/6z1jOX9CFJVaqrAXr8RwYxDgN528ZahHqM51YQEcVlOu1Cw==} engines: {node: '>=16'} hasBin: true - workerd@1.20250416.0: - resolution: {integrity: sha512-Yrx/bZAKbmSvomdTAzzIpOHwpYhs0ldr2wqed22UEhQ0mIplAHY4xmY+SjAJhP/TydZrciOVzBxwM1+4T40KNA==} - engines: {node: '>=16'} - hasBin: true + workers-ai-provider@0.3.0: + resolution: {integrity: sha512-NCnwRJ0OVgyVIZwbHRmn+8A80vi4iXxnjvLaxn0CCYMsooVKgf52rEIcbap5FJNd7fx3nLOi2OgNKjqS1ipz5A==} workers-mcp@0.1.0-3: resolution: {integrity: sha512-PCgcGZnFvtk0WkbUsA9nDd5qqwv310L7on0/hlJZ9hQZkJMntGf5v3L2X3mLSDs9WSDF6jSedxlvWCtIXrKbEg==} engines: {node: '>=16.17.0'} hasBin: true - wrangler@4.12.0: - resolution: {integrity: sha512-4rfAXOi5KqM3ECvOrZJ97k3zEqxVwtdt4bijd8jcRBZ6iJYvEtjgjVi4TsfkVa/eXGhpfHTUnKu2uk8UHa8M2w==} + wrangler@4.13.2: + resolution: {integrity: sha512-CryA3MRzjNceFVef78ymqhxXrIYQoYKQIPITvvd/Yn3SX4UAADZOOrztatNcgRAyXssjdGH4JRw7fKoSnOaOog==} engines: {node: '>=18.0.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20250415.0 + '@cloudflare/workers-types': ^4.20250424.0 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -4223,64 +4210,51 @@ snapshots: dependencies: mime: 3.0.0 - '@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250416.0)': + '@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250424.0)': dependencies: unenv: 2.0.0-rc.15 optionalDependencies: - workerd: 1.20250416.0 + workerd: 1.20250424.0 - '@cloudflare/vite-plugin@0.1.21(vite@6.3.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1))(workerd@1.20250416.0)(wrangler@4.12.0(@cloudflare/workers-types@4.20250418.0))': + '@cloudflare/vite-plugin@1.0.12(rollup@4.40.0)(vite@6.3.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1))(workerd@1.20250424.0)(wrangler@4.13.2(@cloudflare/workers-types@4.20250425.0))': dependencies: - '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250416.0) + '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250424.0) '@hattip/adapter-node': 0.0.49 + '@rollup/plugin-replace': 6.0.2(rollup@4.40.0) get-port: 7.1.0 - miniflare: 4.20250321.2 + miniflare: 4.20250424.1 picocolors: 1.1.1 tinyglobby: 0.2.12 unenv: 2.0.0-rc.15 vite: 6.3.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1) - wrangler: 4.12.0(@cloudflare/workers-types@4.20250418.0) + wrangler: 4.13.2(@cloudflare/workers-types@4.20250425.0) ws: 8.18.0 transitivePeerDependencies: - bufferutil + - rollup - utf-8-validate - workerd - '@cloudflare/workerd-darwin-64@1.20250321.0': - optional: true - - '@cloudflare/workerd-darwin-64@1.20250416.0': + '@cloudflare/workerd-darwin-64@1.20250424.0': optional: true - '@cloudflare/workerd-darwin-arm64@1.20250321.0': + '@cloudflare/workerd-darwin-arm64@1.20250424.0': optional: true - '@cloudflare/workerd-darwin-arm64@1.20250416.0': + '@cloudflare/workerd-linux-64@1.20250424.0': optional: true - '@cloudflare/workerd-linux-64@1.20250321.0': + '@cloudflare/workerd-linux-arm64@1.20250424.0': optional: true - '@cloudflare/workerd-linux-64@1.20250416.0': - optional: true - - '@cloudflare/workerd-linux-arm64@1.20250321.0': - optional: true - - '@cloudflare/workerd-linux-arm64@1.20250416.0': - optional: true - - '@cloudflare/workerd-windows-64@1.20250321.0': - optional: true - - '@cloudflare/workerd-windows-64@1.20250416.0': + '@cloudflare/workerd-windows-64@1.20250424.0': optional: true '@cloudflare/workers-oauth-provider@0.0.2': dependencies: - '@cloudflare/workers-types': 4.20250418.0 + '@cloudflare/workers-types': 4.20250425.0 - '@cloudflare/workers-types@4.20250418.0': {} + '@cloudflare/workers-types@4.20250425.0': {} '@cspotcode/source-map-support@0.8.1': dependencies: @@ -5111,7 +5085,7 @@ snapshots: '@radix-ui/rect@1.1.1': {} - '@react-router/dev@7.5.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(react-router@7.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(tsx@4.19.3)(typescript@5.8.3)(vite@6.3.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1))(wrangler@4.12.0(@cloudflare/workers-types@4.20250418.0))(yaml@2.7.1)': + '@react-router/dev@7.5.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(react-router@7.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(tsx@4.19.3)(typescript@5.8.3)(vite@6.3.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1))(wrangler@4.13.2(@cloudflare/workers-types@4.20250425.0))(yaml@2.7.1)': dependencies: '@babel/core': 7.26.10 '@babel/generator': 7.27.0 @@ -5144,7 +5118,7 @@ snapshots: vite-node: 3.0.0-beta.2(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1) optionalDependencies: typescript: 5.8.3 - wrangler: 4.12.0(@cloudflare/workers-types@4.20250418.0) + wrangler: 4.13.2(@cloudflare/workers-types@4.20250425.0) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -5161,9 +5135,9 @@ snapshots: - tsx - yaml - '@react-router/fs-routes@7.5.1(@react-router/dev@7.5.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(react-router@7.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(tsx@4.19.3)(typescript@5.8.3)(vite@6.3.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1))(wrangler@4.12.0(@cloudflare/workers-types@4.20250418.0))(yaml@2.7.1))(typescript@5.8.3)': + '@react-router/fs-routes@7.5.1(@react-router/dev@7.5.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(react-router@7.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(tsx@4.19.3)(typescript@5.8.3)(vite@6.3.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1))(wrangler@4.13.2(@cloudflare/workers-types@4.20250425.0))(yaml@2.7.1))(typescript@5.8.3)': dependencies: - '@react-router/dev': 7.5.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(react-router@7.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(tsx@4.19.3)(typescript@5.8.3)(vite@6.3.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1))(wrangler@4.12.0(@cloudflare/workers-types@4.20250418.0))(yaml@2.7.1) + '@react-router/dev': 7.5.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(react-router@7.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(tsx@4.19.3)(typescript@5.8.3)(vite@6.3.1(@types/node@20.17.30)(jiti@2.4.2)(lightningcss@1.29.2)(tsx@4.19.3)(yaml@2.7.1))(wrangler@4.13.2(@cloudflare/workers-types@4.20250425.0))(yaml@2.7.1) minimatch: 9.0.5 optionalDependencies: typescript: 5.8.3 @@ -5178,10 +5152,10 @@ snapshots: optionalDependencies: typescript: 5.8.3 - '@remix-run/cloudflare@2.16.5(@cloudflare/workers-types@4.20250418.0)(typescript@5.8.3)': + '@remix-run/cloudflare@2.16.5(@cloudflare/workers-types@4.20250425.0)(typescript@5.8.3)': dependencies: '@cloudflare/kv-asset-handler': 0.1.3 - '@cloudflare/workers-types': 4.20250418.0 + '@cloudflare/workers-types': 4.20250425.0 '@remix-run/server-runtime': 2.16.5(typescript@5.8.3) optionalDependencies: typescript: 5.8.3 @@ -5200,6 +5174,21 @@ snapshots: optionalDependencies: typescript: 5.8.3 + '@rollup/plugin-replace@6.0.2(rollup@4.40.0)': + dependencies: + '@rollup/pluginutils': 5.1.4(rollup@4.40.0) + magic-string: 0.30.17 + optionalDependencies: + rollup: 4.40.0 + + '@rollup/pluginutils@5.1.4(rollup@4.40.0)': + dependencies: + '@types/estree': 1.0.7 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.40.0 + '@rollup/rollup-android-arm-eabi@4.40.0': optional: true @@ -5446,13 +5435,13 @@ snapshots: acorn@8.14.1: {} - agents@0.0.66(@cloudflare/workers-types@4.20250418.0)(react@19.1.0): + agents@0.0.66(@cloudflare/workers-types@4.20250425.0)(react@19.1.0): dependencies: '@modelcontextprotocol/sdk': 1.10.2 - ai: 4.3.9(react@19.1.0)(zod@3.24.3) + ai: 4.3.10(react@19.1.0)(zod@3.24.3) cron-schedule: 5.0.4 nanoid: 5.1.5 - partyserver: 0.0.67(@cloudflare/workers-types@4.20250418.0) + partyserver: 0.0.67(@cloudflare/workers-types@4.20250425.0) partysocket: 1.1.3 react: 19.1.0 zod: 3.24.3 @@ -5460,7 +5449,7 @@ snapshots: - '@cloudflare/workers-types' - supports-color - ai@4.3.9(react@19.1.0)(zod@3.24.3): + ai@4.3.10(react@19.1.0)(zod@3.24.3): dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.7(zod@3.24.3) @@ -5825,6 +5814,8 @@ snapshots: estree-util-is-identifier-name@3.0.0: {} + estree-walker@2.0.2: {} + estree-walker@3.0.3: dependencies: '@types/estree': 1.0.7 @@ -6731,24 +6722,7 @@ snapshots: mimic-function@5.0.1: {} - miniflare@4.20250321.2: - dependencies: - '@cspotcode/source-map-support': 0.8.1 - acorn: 8.14.0 - acorn-walk: 8.3.2 - exit-hook: 2.2.1 - glob-to-regexp: 0.4.1 - stoppable: 1.1.0 - undici: 5.29.0 - workerd: 1.20250321.0 - ws: 8.18.0 - youch: 3.3.4 - zod: 3.22.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - miniflare@4.20250416.0: + miniflare@4.20250424.1: dependencies: '@cspotcode/source-map-support': 0.8.1 acorn: 8.14.0 @@ -6757,7 +6731,7 @@ snapshots: glob-to-regexp: 0.4.1 stoppable: 1.1.0 undici: 5.29.0 - workerd: 1.20250416.0 + workerd: 1.20250424.0 ws: 8.18.0 youch: 3.3.4 zod: 3.22.3 @@ -6896,9 +6870,9 @@ snapshots: parseurl@1.3.3: {} - partyserver@0.0.67(@cloudflare/workers-types@4.20250418.0): + partyserver@0.0.67(@cloudflare/workers-types@4.20250425.0): dependencies: - '@cloudflare/workers-types': 4.20250418.0 + '@cloudflare/workers-types': 4.20250425.0 nanoid: 5.1.5 partysocket@1.1.3: @@ -7711,21 +7685,17 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - workerd@1.20250321.0: + workerd@1.20250424.0: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20250321.0 - '@cloudflare/workerd-darwin-arm64': 1.20250321.0 - '@cloudflare/workerd-linux-64': 1.20250321.0 - '@cloudflare/workerd-linux-arm64': 1.20250321.0 - '@cloudflare/workerd-windows-64': 1.20250321.0 + '@cloudflare/workerd-darwin-64': 1.20250424.0 + '@cloudflare/workerd-darwin-arm64': 1.20250424.0 + '@cloudflare/workerd-linux-64': 1.20250424.0 + '@cloudflare/workerd-linux-arm64': 1.20250424.0 + '@cloudflare/workerd-windows-64': 1.20250424.0 - workerd@1.20250416.0: - optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20250416.0 - '@cloudflare/workerd-darwin-arm64': 1.20250416.0 - '@cloudflare/workerd-linux-64': 1.20250416.0 - '@cloudflare/workerd-linux-arm64': 1.20250416.0 - '@cloudflare/workerd-windows-64': 1.20250416.0 + workers-ai-provider@0.3.0: + dependencies: + '@cloudflare/workers-types': 4.20250425.0 workers-mcp@0.1.0-3: dependencies: @@ -7746,18 +7716,18 @@ snapshots: - '@75lb/nature' - supports-color - wrangler@4.12.0(@cloudflare/workers-types@4.20250418.0): + wrangler@4.13.2(@cloudflare/workers-types@4.20250425.0): dependencies: '@cloudflare/kv-asset-handler': 0.4.0 - '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250416.0) + '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250424.0) blake3-wasm: 2.1.5 esbuild: 0.25.2 - miniflare: 4.20250416.0 + miniflare: 4.20250424.1 path-to-regexp: 6.3.0 unenv: 2.0.0-rc.15 - workerd: 1.20250416.0 + workerd: 1.20250424.0 optionalDependencies: - '@cloudflare/workers-types': 4.20250418.0 + '@cloudflare/workers-types': 4.20250425.0 fsevents: 2.3.3 sharp: 0.33.5 transitivePeerDependencies: