diff --git a/apps/ai-gateway/.dev.vars.example b/apps/ai-gateway/.dev.vars.example index 860dc82f..5950b164 100644 --- a/apps/ai-gateway/.dev.vars.example +++ b/apps/ai-gateway/.dev.vars.example @@ -2,4 +2,4 @@ CLOUDFLARE_CLIENT_ID= CLOUDFLARE_CLIENT_SECRET= DEV_DISABLE_OAUTH= DEV_CLOUDFLARE_API_TOKEN= -DEV_CLOUDFLARE_EMAIL= + diff --git a/apps/ai-gateway/wrangler.jsonc b/apps/ai-gateway/wrangler.jsonc index 727e6620..1880de3d 100644 --- a/apps/ai-gateway/wrangler.jsonc +++ b/apps/ai-gateway/wrangler.jsonc @@ -15,7 +15,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "durable_objects": { "bindings": [ diff --git a/apps/auditlogs/.dev.vars.example b/apps/auditlogs/.dev.vars.example index c087f669..d2d3cd20 100644 --- a/apps/auditlogs/.dev.vars.example +++ b/apps/auditlogs/.dev.vars.example @@ -2,4 +2,3 @@ CLOUDFLARE_CLIENT_ID= CLOUDFLARE_CLIENT_SECRET= DEV_DISABLE_OAUTH= DEV_CLOUDFLARE_API_TOKEN= -DEV_CLOUDFLARE_EMAIL= \ No newline at end of file diff --git a/apps/auditlogs/wrangler.jsonc b/apps/auditlogs/wrangler.jsonc index bfcc887b..5ee77351 100644 --- a/apps/auditlogs/wrangler.jsonc +++ b/apps/auditlogs/wrangler.jsonc @@ -15,7 +15,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "durable_objects": { "bindings": [ diff --git a/apps/autorag/.dev.vars.example b/apps/autorag/.dev.vars.example index 860dc82f..5950b164 100644 --- a/apps/autorag/.dev.vars.example +++ b/apps/autorag/.dev.vars.example @@ -2,4 +2,4 @@ CLOUDFLARE_CLIENT_ID= CLOUDFLARE_CLIENT_SECRET= DEV_DISABLE_OAUTH= DEV_CLOUDFLARE_API_TOKEN= -DEV_CLOUDFLARE_EMAIL= + diff --git a/apps/autorag/wrangler.jsonc b/apps/autorag/wrangler.jsonc index d0b058f8..a69ff76e 100644 --- a/apps/autorag/wrangler.jsonc +++ b/apps/autorag/wrangler.jsonc @@ -15,7 +15,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "durable_objects": { "bindings": [ diff --git a/apps/browser-rendering/.dev.vars.example b/apps/browser-rendering/.dev.vars.example index 860dc82f..5950b164 100644 --- a/apps/browser-rendering/.dev.vars.example +++ b/apps/browser-rendering/.dev.vars.example @@ -2,4 +2,4 @@ CLOUDFLARE_CLIENT_ID= CLOUDFLARE_CLIENT_SECRET= DEV_DISABLE_OAUTH= DEV_CLOUDFLARE_API_TOKEN= -DEV_CLOUDFLARE_EMAIL= + diff --git a/apps/browser-rendering/wrangler.jsonc b/apps/browser-rendering/wrangler.jsonc index ee6dc585..2974997a 100644 --- a/apps/browser-rendering/wrangler.jsonc +++ b/apps/browser-rendering/wrangler.jsonc @@ -15,7 +15,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "durable_objects": { "bindings": [ diff --git a/apps/cloudflare-one-casb/.dev.vars.example b/apps/cloudflare-one-casb/.dev.vars.example index c087f669..d2d3cd20 100644 --- a/apps/cloudflare-one-casb/.dev.vars.example +++ b/apps/cloudflare-one-casb/.dev.vars.example @@ -2,4 +2,3 @@ CLOUDFLARE_CLIENT_ID= CLOUDFLARE_CLIENT_SECRET= DEV_DISABLE_OAUTH= DEV_CLOUDFLARE_API_TOKEN= -DEV_CLOUDFLARE_EMAIL= \ No newline at end of file diff --git a/apps/cloudflare-one-casb/wrangler.jsonc b/apps/cloudflare-one-casb/wrangler.jsonc index c17a423f..2fd22c09 100644 --- a/apps/cloudflare-one-casb/wrangler.jsonc +++ b/apps/cloudflare-one-casb/wrangler.jsonc @@ -14,7 +14,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "vars": { "MCP_SERVER_NAME": "PLACEHOLDER", diff --git a/apps/demo-day/wrangler.json b/apps/demo-day/wrangler.json index 86828ec0..1180c9b7 100644 --- a/apps/demo-day/wrangler.json +++ b/apps/demo-day/wrangler.json @@ -13,7 +13,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "durable_objects": { "bindings": [ diff --git a/apps/dex-analysis/.dev.vars.example b/apps/dex-analysis/.dev.vars.example index c087f669..d2d3cd20 100644 --- a/apps/dex-analysis/.dev.vars.example +++ b/apps/dex-analysis/.dev.vars.example @@ -2,4 +2,3 @@ CLOUDFLARE_CLIENT_ID= CLOUDFLARE_CLIENT_SECRET= DEV_DISABLE_OAUTH= DEV_CLOUDFLARE_API_TOKEN= -DEV_CLOUDFLARE_EMAIL= \ No newline at end of file diff --git a/apps/dex-analysis/wrangler.jsonc b/apps/dex-analysis/wrangler.jsonc index e69c8d9a..edeb775d 100644 --- a/apps/dex-analysis/wrangler.jsonc +++ b/apps/dex-analysis/wrangler.jsonc @@ -18,7 +18,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "durable_objects": { "bindings": [ diff --git a/apps/dns-analytics/CONTRIBUTING.md b/apps/dns-analytics/CONTRIBUTING.md index 433c1f15..67449380 100644 --- a/apps/dns-analytics/CONTRIBUTING.md +++ b/apps/dns-analytics/CONTRIBUTING.md @@ -18,7 +18,7 @@ If you'd like to iterate and test your MCP server, you can do so in local develo ``` DEV_DISABLE_OAUTH=true - DEV_CLOUDFLARE_EMAIL=your_cloudflare_email + your_cloudflare_email # This is your api token with endpoint access. DEV_CLOUDFLARE_API_TOKEN=your_development_api_token ``` diff --git a/apps/dns-analytics/wrangler.jsonc b/apps/dns-analytics/wrangler.jsonc index 1c33d47d..efcc3605 100644 --- a/apps/dns-analytics/wrangler.jsonc +++ b/apps/dns-analytics/wrangler.jsonc @@ -15,7 +15,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "durable_objects": { "bindings": [ diff --git a/apps/docs-autorag/wrangler.jsonc b/apps/docs-autorag/wrangler.jsonc index f3f37ffb..4cec6aac 100644 --- a/apps/docs-autorag/wrangler.jsonc +++ b/apps/docs-autorag/wrangler.jsonc @@ -15,7 +15,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "durable_objects": { "bindings": [ diff --git a/apps/docs-vectorize/wrangler.jsonc b/apps/docs-vectorize/wrangler.jsonc index 208a6621..8a131fd7 100644 --- a/apps/docs-vectorize/wrangler.jsonc +++ b/apps/docs-vectorize/wrangler.jsonc @@ -15,7 +15,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "durable_objects": { "bindings": [ diff --git a/apps/graphql/wrangler.jsonc b/apps/graphql/wrangler.jsonc index 38136723..73098c74 100644 --- a/apps/graphql/wrangler.jsonc +++ b/apps/graphql/wrangler.jsonc @@ -15,7 +15,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "durable_objects": { "bindings": [ diff --git a/apps/logpush/.dev.vars.example b/apps/logpush/.dev.vars.example index c087f669..d2d3cd20 100644 --- a/apps/logpush/.dev.vars.example +++ b/apps/logpush/.dev.vars.example @@ -2,4 +2,3 @@ CLOUDFLARE_CLIENT_ID= CLOUDFLARE_CLIENT_SECRET= DEV_DISABLE_OAUTH= DEV_CLOUDFLARE_API_TOKEN= -DEV_CLOUDFLARE_EMAIL= \ No newline at end of file diff --git a/apps/logpush/wrangler.jsonc b/apps/logpush/wrangler.jsonc index 2d9de9a0..b83188bb 100644 --- a/apps/logpush/wrangler.jsonc +++ b/apps/logpush/wrangler.jsonc @@ -15,7 +15,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "durable_objects": { "bindings": [ diff --git a/apps/radar/.dev.vars.example b/apps/radar/.dev.vars.example index 860dc82f..5950b164 100644 --- a/apps/radar/.dev.vars.example +++ b/apps/radar/.dev.vars.example @@ -2,4 +2,4 @@ CLOUDFLARE_CLIENT_ID= CLOUDFLARE_CLIENT_SECRET= DEV_DISABLE_OAUTH= DEV_CLOUDFLARE_API_TOKEN= -DEV_CLOUDFLARE_EMAIL= + diff --git a/apps/radar/CONTRIBUTING.md b/apps/radar/CONTRIBUTING.md index cebd2656..797f595a 100644 --- a/apps/radar/CONTRIBUTING.md +++ b/apps/radar/CONTRIBUTING.md @@ -17,7 +17,6 @@ If you'd like to iterate and test your MCP server, you can do so in local develo ``` DEV_DISABLE_OAUTH=true - DEV_CLOUDFLARE_EMAIL=your_cloudflare_email # This is your global api token DEV_CLOUDFLARE_API_TOKEN=your_development_api_token ``` diff --git a/apps/radar/wrangler.jsonc b/apps/radar/wrangler.jsonc index 6478c484..3f89ca17 100644 --- a/apps/radar/wrangler.jsonc +++ b/apps/radar/wrangler.jsonc @@ -15,7 +15,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "durable_objects": { "bindings": [ diff --git a/apps/sandbox-container/.dev.vars.example b/apps/sandbox-container/.dev.vars.example index c087f669..d2d3cd20 100644 --- a/apps/sandbox-container/.dev.vars.example +++ b/apps/sandbox-container/.dev.vars.example @@ -2,4 +2,3 @@ CLOUDFLARE_CLIENT_ID= CLOUDFLARE_CLIENT_SECRET= DEV_DISABLE_OAUTH= DEV_CLOUDFLARE_API_TOKEN= -DEV_CLOUDFLARE_EMAIL= \ No newline at end of file diff --git a/apps/sandbox-container/wrangler.jsonc b/apps/sandbox-container/wrangler.jsonc index 494f223d..f84387c2 100644 --- a/apps/sandbox-container/wrangler.jsonc +++ b/apps/sandbox-container/wrangler.jsonc @@ -40,7 +40,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "kv_namespaces": [ { diff --git a/apps/workers-bindings/.dev.vars.example b/apps/workers-bindings/.dev.vars.example index c087f669..d2d3cd20 100644 --- a/apps/workers-bindings/.dev.vars.example +++ b/apps/workers-bindings/.dev.vars.example @@ -2,4 +2,3 @@ CLOUDFLARE_CLIENT_ID= CLOUDFLARE_CLIENT_SECRET= DEV_DISABLE_OAUTH= DEV_CLOUDFLARE_API_TOKEN= -DEV_CLOUDFLARE_EMAIL= \ No newline at end of file diff --git a/apps/workers-bindings/CONTRIBUTING.md b/apps/workers-bindings/CONTRIBUTING.md index cebd2656..797f595a 100644 --- a/apps/workers-bindings/CONTRIBUTING.md +++ b/apps/workers-bindings/CONTRIBUTING.md @@ -17,7 +17,6 @@ If you'd like to iterate and test your MCP server, you can do so in local develo ``` DEV_DISABLE_OAUTH=true - DEV_CLOUDFLARE_EMAIL=your_cloudflare_email # This is your global api token DEV_CLOUDFLARE_API_TOKEN=your_development_api_token ``` diff --git a/apps/workers-bindings/wrangler.jsonc b/apps/workers-bindings/wrangler.jsonc index 1e71e5dc..dce4a313 100644 --- a/apps/workers-bindings/wrangler.jsonc +++ b/apps/workers-bindings/wrangler.jsonc @@ -33,7 +33,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "dev": { "port": 8976 diff --git a/apps/workers-builds/.dev.vars.example b/apps/workers-builds/.dev.vars.example index a4c2f64d..232698b5 100644 --- a/apps/workers-builds/.dev.vars.example +++ b/apps/workers-builds/.dev.vars.example @@ -3,4 +3,4 @@ CLOUDFLARE_CLIENT_SECRET= # OR DEV_DISABLE_OAUTH= DEV_CLOUDFLARE_API_TOKEN= -DEV_CLOUDFLARE_EMAIL= + diff --git a/apps/workers-builds/CONTRIBUTING.md b/apps/workers-builds/CONTRIBUTING.md index 535e45c6..3024be9f 100644 --- a/apps/workers-builds/CONTRIBUTING.md +++ b/apps/workers-builds/CONTRIBUTING.md @@ -17,7 +17,6 @@ If you'd like to iterate and test your MCP server, you can do so in local develo ``` DEV_DISABLE_OAUTH=true - DEV_CLOUDFLARE_EMAIL=your_cloudflare_email # This is your global api token DEV_CLOUDFLARE_API_TOKEN=your_development_api_token ``` diff --git a/apps/workers-builds/wrangler.jsonc b/apps/workers-builds/wrangler.jsonc index 6d46e484..3f76311a 100644 --- a/apps/workers-builds/wrangler.jsonc +++ b/apps/workers-builds/wrangler.jsonc @@ -15,7 +15,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "durable_objects": { "bindings": [ diff --git a/apps/workers-observability/.dev.vars.example b/apps/workers-observability/.dev.vars.example index c087f669..5950b164 100644 --- a/apps/workers-observability/.dev.vars.example +++ b/apps/workers-observability/.dev.vars.example @@ -2,4 +2,4 @@ CLOUDFLARE_CLIENT_ID= CLOUDFLARE_CLIENT_SECRET= DEV_DISABLE_OAUTH= DEV_CLOUDFLARE_API_TOKEN= -DEV_CLOUDFLARE_EMAIL= \ No newline at end of file + diff --git a/apps/workers-observability/CONTRIBUTING.md b/apps/workers-observability/CONTRIBUTING.md index cebd2656..f5b2752b 100644 --- a/apps/workers-observability/CONTRIBUTING.md +++ b/apps/workers-observability/CONTRIBUTING.md @@ -17,8 +17,6 @@ If you'd like to iterate and test your MCP server, you can do so in local develo ``` DEV_DISABLE_OAUTH=true - DEV_CLOUDFLARE_EMAIL=your_cloudflare_email - # This is your global api token DEV_CLOUDFLARE_API_TOKEN=your_development_api_token ``` diff --git a/apps/workers-observability/package.json b/apps/workers-observability/package.json index 8adc2dc3..5cb40251 100644 --- a/apps/workers-observability/package.json +++ b/apps/workers-observability/package.json @@ -21,6 +21,7 @@ "agents": "0.2.7", "cloudflare": "4.2.0", "hono": "4.7.6", + "workers-tagged-logger": "0.13.5", "zod": "3.24.2" }, "devDependencies": { diff --git a/apps/workers-observability/src/tools/workers-observability.tools.ts b/apps/workers-observability/src/tools/workers-observability.tools.ts index 4a3d8a21..9412f4c3 100644 --- a/apps/workers-observability/src/tools/workers-observability.tools.ts +++ b/apps/workers-observability/src/tools/workers-observability.tools.ts @@ -1,4 +1,5 @@ import { writeToString } from '@fast-csv/format' +import { WorkersLogger } from 'workers-tagged-logger' import { handleWorkerLogsKeys, @@ -14,6 +15,10 @@ import { import type { ObservabilityMCP } from '../workers-observability.app' +type Tags = { + toolName?: string +} +const logger = new WorkersLogger() /** * Registers the logs analysis tool with the MCP server * @param server The MCP server instance @@ -49,9 +54,15 @@ This tool provides three primary views of your Worker data: { query: zQueryRunRequest, }, - async ({ query }) => { + async ({ query }, req) => { + logger.setTags({ userAgent: req.requestInfo?.headers?.['mcp-protocol-version'] }) + logger.setTags({ mcpSessionId: req.requestInfo?.headers?.['mcp-session-id'] }) + logger.setTags({ userAgent: req.requestInfo?.headers?.['sec-ch-ua'] }) + logger.setTags({ toolName: 'query_worker_observability' }) const accountId = await agent.getActiveAccountId() + logger.setTags({ hasAccount: !!accountId }) if (!accountId) { + logger.warn('Ran Workers Observability Tool') return { content: [ { @@ -63,8 +74,11 @@ This tool provides three primary views of your Worker data: } try { const props = getProps(agent) + logger.setTags({ datasets: query.parameters?.datasets }) + logger.setTags({ view: query.view }) const response = await queryWorkersObservability(props.accessToken, accountId, query) + logger.info('Ran Workers Observability Query') if (query.view === 'calculations') { let data = '' for (const calculation of response?.calculations || []) { diff --git a/apps/workers-observability/wrangler.jsonc b/apps/workers-observability/wrangler.jsonc index 8d60496e..00297b26 100644 --- a/apps/workers-observability/wrangler.jsonc +++ b/apps/workers-observability/wrangler.jsonc @@ -15,7 +15,11 @@ } ], "observability": { - "enabled": true + "enabled": true, + "traces": { + "enabled": true, + "head_sampling_rate": 0.1 + } }, "durable_objects": { "bindings": [ diff --git a/packages/mcp-common/src/api-token-mode.ts b/packages/mcp-common/src/api-token-mode.ts index 9597975f..a13ac6ad 100644 --- a/packages/mcp-common/src/api-token-mode.ts +++ b/packages/mcp-common/src/api-token-mode.ts @@ -33,14 +33,9 @@ export async function handleApiTokenMode< // Handle global API token case let opts, token // dev mode - if ( - env.DEV_CLOUDFLARE_API_TOKEN && - env.DEV_CLOUDFLARE_EMAIL && - env.DEV_DISABLE_OAUTH === 'true' - ) { + if (env.DEV_CLOUDFLARE_API_TOKEN && env.DEV_DISABLE_OAUTH === 'true') { opts = { - 'X-Auth-Key': env.DEV_CLOUDFLARE_API_TOKEN, - 'X-Auth-Email': env.DEV_CLOUDFLARE_EMAIL, + Authorization: `Bearer ${env.DEV_CLOUDFLARE_API_TOKEN}`, } token = env.DEV_CLOUDFLARE_API_TOKEN // header mode @@ -76,5 +71,5 @@ export async function handleApiTokenMode< accounts, } satisfies AuthProps } - return agent.mount('/sse').fetch(req, env, ctx) + return agent.serve('/mcp').fetch(req, env, ctx) } diff --git a/packages/mcp-common/src/cloudflare-api.ts b/packages/mcp-common/src/cloudflare-api.ts index 17e2d303..447e411f 100644 --- a/packages/mcp-common/src/cloudflare-api.ts +++ b/packages/mcp-common/src/cloudflare-api.ts @@ -8,9 +8,7 @@ export function getCloudflareClient(apiToken: string) { if (env.DEV_DISABLE_OAUTH) { return new Cloudflare({ // @ts-expect-error We don't have actual env in this package, but we know this is defined because the initial Oauth handshake will fail without it - apiEmail: env.DEV_CLOUDFLARE_EMAIL, - // @ts-expect-error We don't have actual env in this package, but we know this is defined because the initial Oauth handshake will fail without it - apiKey: env.DEV_CLOUDFLARE_API_TOKEN, + apiToken: env.DEV_CLOUDFLARE_API_TOKEN, }) } @@ -45,9 +43,7 @@ export async function fetchCloudflareApi({ options.headers = { ...options.headers, // @ts-expect-error We don't have actual env in this package - 'X-Auth-Email': env.DEV_CLOUDFLARE_EMAIL, - // @ts-expect-error We don't have actual env in this package - 'X-Auth-Key': env.DEV_CLOUDFLARE_API_TOKEN, + Authorization: `Bearer ${env.DEV_CLOUDFLARE_API_TOKEN}`, } } const response = await fetch(url, { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7c9c7d51..ca444ca8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -912,6 +912,9 @@ importers: hono: specifier: 4.7.6 version: 4.7.6 + workers-tagged-logger: + specifier: 0.13.5 + version: 0.13.5 zod: specifier: 3.24.2 version: 3.24.2 @@ -1335,11 +1338,11 @@ packages: resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} '@cloudflare/kv-asset-handler@0.4.0': - resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} + resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==, tarball: https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.4.0.tgz} engines: {node: '>=18.0.0'} '@cloudflare/unenv-preset@2.3.1': - resolution: {integrity: sha512-Xq57Qd+ADpt6hibcVBO0uLG9zzRgyRhfCUgBT9s+g3+3Ivg5zDyVgLFy40ES1VdNcu8rPNSivm9A+kGP5IVaPg==} + resolution: {integrity: sha512-Xq57Qd+ADpt6hibcVBO0uLG9zzRgyRhfCUgBT9s+g3+3Ivg5zDyVgLFy40ES1VdNcu8rPNSivm9A+kGP5IVaPg==, tarball: https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.3.1.tgz} peerDependencies: unenv: 2.0.0-rc.15 workerd: ^1.20250320.0 @@ -1348,146 +1351,146 @@ packages: optional: true '@cloudflare/vite-plugin@1.1.0': - resolution: {integrity: sha512-b265RnBqZE57KBPPwhDWFu8W51RNnl4LkxNgY/GzbXoztc6qDcnMs7IVyPCcCvyXa4ogSQz5MvQ3yB5Ehn5E8A==} + resolution: {integrity: sha512-b265RnBqZE57KBPPwhDWFu8W51RNnl4LkxNgY/GzbXoztc6qDcnMs7IVyPCcCvyXa4ogSQz5MvQ3yB5Ehn5E8A==, tarball: https://registry.npmjs.org/@cloudflare/vite-plugin/-/vite-plugin-1.1.0.tgz} peerDependencies: vite: ^6.1.0 wrangler: ^3.101.0 || ^4.0.0 '@cloudflare/vitest-pool-workers@0.8.14': - resolution: {integrity: sha512-uqUvelQQkU/8JD/mgd9OV3byB6CaHxkw/DzHZ4z2haM9epR9D5mDshw5+AfPu7x/IWZ9zciaDawjM8QW8QrjIA==} + resolution: {integrity: sha512-uqUvelQQkU/8JD/mgd9OV3byB6CaHxkw/DzHZ4z2haM9epR9D5mDshw5+AfPu7x/IWZ9zciaDawjM8QW8QrjIA==, tarball: https://registry.npmjs.org/@cloudflare/vitest-pool-workers/-/vitest-pool-workers-0.8.14.tgz} peerDependencies: '@vitest/runner': 2.0.x - 3.0.x '@vitest/snapshot': 2.0.x - 3.0.x vitest: 2.0.x - 3.0.x '@cloudflare/workerd-darwin-64@1.20250408.0': - resolution: {integrity: sha512-bxhIwBWxaNItZLXDNOKY2dCv0FHjDiDkfJFpwv4HvtvU5MKcrivZHVmmfDzLW85rqzfcDOmKbZeMPVfiKxdBZw==} + resolution: {integrity: sha512-bxhIwBWxaNItZLXDNOKY2dCv0FHjDiDkfJFpwv4HvtvU5MKcrivZHVmmfDzLW85rqzfcDOmKbZeMPVfiKxdBZw==, tarball: https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20250408.0.tgz} engines: {node: '>=16'} cpu: [x64] os: [darwin] '@cloudflare/workerd-darwin-64@1.20250409.0': - resolution: {integrity: sha512-smA9yq77xsdQ1NMLhFz3JZxMHGd01lg0bE+X3dTFmIUs+hHskJ+HJ/IkMFInkCCeEFlUkoL4yO7ilaU/fin/xA==} + resolution: {integrity: sha512-smA9yq77xsdQ1NMLhFz3JZxMHGd01lg0bE+X3dTFmIUs+hHskJ+HJ/IkMFInkCCeEFlUkoL4yO7ilaU/fin/xA==, tarball: https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20250409.0.tgz} engines: {node: '>=16'} cpu: [x64] os: [darwin] '@cloudflare/workerd-darwin-64@1.20250428.0': - resolution: {integrity: sha512-6nVe9oV4Hdec6ctzMtW80TiDvNTd2oFPi3VsKqSDVaJSJbL+4b6seyJ7G/UEPI+si6JhHBSLV2/9lNXNGLjClA==} + resolution: {integrity: sha512-6nVe9oV4Hdec6ctzMtW80TiDvNTd2oFPi3VsKqSDVaJSJbL+4b6seyJ7G/UEPI+si6JhHBSLV2/9lNXNGLjClA==, tarball: https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20250428.0.tgz} engines: {node: '>=16'} cpu: [x64] os: [darwin] '@cloudflare/workerd-darwin-64@1.20250507.0': - resolution: {integrity: sha512-xC+8hmQuOUUNCVT9DWpLMfxhR4Xs4kI8v7Bkybh4pzGC85moH6fMfCBNaP0YQCNAA/BR56aL/AwfvMVGskTK/A==} + resolution: {integrity: sha512-xC+8hmQuOUUNCVT9DWpLMfxhR4Xs4kI8v7Bkybh4pzGC85moH6fMfCBNaP0YQCNAA/BR56aL/AwfvMVGskTK/A==, tarball: https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20250507.0.tgz} engines: {node: '>=16'} cpu: [x64] os: [darwin] '@cloudflare/workerd-darwin-arm64@1.20250408.0': - resolution: {integrity: sha512-5XZ2Oykr8bSo7zBmERtHh18h5BZYC/6H1YFWVxEj3PtalF3+6SHsO4KZsbGvDml9Pu7sHV277jiZE5eny8Hlyw==} + resolution: {integrity: sha512-5XZ2Oykr8bSo7zBmERtHh18h5BZYC/6H1YFWVxEj3PtalF3+6SHsO4KZsbGvDml9Pu7sHV277jiZE5eny8Hlyw==, tarball: https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20250408.0.tgz} engines: {node: '>=16'} cpu: [arm64] os: [darwin] '@cloudflare/workerd-darwin-arm64@1.20250409.0': - resolution: {integrity: sha512-oLVcf+Y5Qun8JHcy1VcR/YnbA5U2ne0czh3XNhDqdHZFK8+vKeC7MnVPX+kEqQA3+uLcMM1/FsIDU1U4Na0h1g==} + resolution: {integrity: sha512-oLVcf+Y5Qun8JHcy1VcR/YnbA5U2ne0czh3XNhDqdHZFK8+vKeC7MnVPX+kEqQA3+uLcMM1/FsIDU1U4Na0h1g==, tarball: https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20250409.0.tgz} engines: {node: '>=16'} cpu: [arm64] os: [darwin] '@cloudflare/workerd-darwin-arm64@1.20250428.0': - resolution: {integrity: sha512-/TB7bh7SIJ5f+6r4PHsAz7+9Qal/TK1cJuKFkUno1kqGlZbdrMwH0ATYwlWC/nBFeu2FB3NUolsTntEuy23hnQ==} + resolution: {integrity: sha512-/TB7bh7SIJ5f+6r4PHsAz7+9Qal/TK1cJuKFkUno1kqGlZbdrMwH0ATYwlWC/nBFeu2FB3NUolsTntEuy23hnQ==, tarball: https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20250428.0.tgz} engines: {node: '>=16'} cpu: [arm64] os: [darwin] '@cloudflare/workerd-darwin-arm64@1.20250507.0': - resolution: {integrity: sha512-Oynff5H8yM4trfUFaKdkOvPV3jac8mg7QC19ILZluCVgLx/JGEVLEJ7do1Na9rLqV8CK4gmUXPrUMX7uerhQgg==} + resolution: {integrity: sha512-Oynff5H8yM4trfUFaKdkOvPV3jac8mg7QC19ILZluCVgLx/JGEVLEJ7do1Na9rLqV8CK4gmUXPrUMX7uerhQgg==, tarball: https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20250507.0.tgz} engines: {node: '>=16'} cpu: [arm64] os: [darwin] '@cloudflare/workerd-linux-64@1.20250408.0': - resolution: {integrity: sha512-WbgItXWln6G5d7GvYLWcuOzAVwafysZaWunH3UEfsm95wPuRofpYnlDD861gdWJX10IHSVgMStGESUcs7FLerQ==} + resolution: {integrity: sha512-WbgItXWln6G5d7GvYLWcuOzAVwafysZaWunH3UEfsm95wPuRofpYnlDD861gdWJX10IHSVgMStGESUcs7FLerQ==, tarball: https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20250408.0.tgz} engines: {node: '>=16'} cpu: [x64] os: [linux] '@cloudflare/workerd-linux-64@1.20250409.0': - resolution: {integrity: sha512-D31B4kdC3a0RD5yfpdIa89//kGHbYsYihZmejm1k4S4NHOho3MUDHAEh4aHtafQNXbZdydGHlSyiVYjTdQ9ILQ==} + resolution: {integrity: sha512-D31B4kdC3a0RD5yfpdIa89//kGHbYsYihZmejm1k4S4NHOho3MUDHAEh4aHtafQNXbZdydGHlSyiVYjTdQ9ILQ==, tarball: https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20250409.0.tgz} engines: {node: '>=16'} cpu: [x64] os: [linux] '@cloudflare/workerd-linux-64@1.20250428.0': - resolution: {integrity: sha512-9eCbj+R3CKqpiXP6DfAA20DxKge+OTj7Hyw3ZewiEhWH9INIHiJwJQYybu4iq9kJEGjnGvxgguLFjSCWm26hgg==} + resolution: {integrity: sha512-9eCbj+R3CKqpiXP6DfAA20DxKge+OTj7Hyw3ZewiEhWH9INIHiJwJQYybu4iq9kJEGjnGvxgguLFjSCWm26hgg==, tarball: https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20250428.0.tgz} engines: {node: '>=16'} cpu: [x64] os: [linux] '@cloudflare/workerd-linux-64@1.20250507.0': - resolution: {integrity: sha512-/HAA+Zg/R7Q/Smyl835FUFKjotZN1UzN9j/BHBd0xKmKov97QkXAX8gsyGnyKqRReIOinp8x/8+UebTICR7VJw==} + resolution: {integrity: sha512-/HAA+Zg/R7Q/Smyl835FUFKjotZN1UzN9j/BHBd0xKmKov97QkXAX8gsyGnyKqRReIOinp8x/8+UebTICR7VJw==, tarball: https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20250507.0.tgz} engines: {node: '>=16'} cpu: [x64] os: [linux] '@cloudflare/workerd-linux-arm64@1.20250408.0': - resolution: {integrity: sha512-pAhEywPPvr92SLylnQfZEPgXz+9pOG9G9haAPLpEatncZwYiYd9yiR6HYWhKp2erzCoNrOqKg9IlQwU3z1IDiw==} + resolution: {integrity: sha512-pAhEywPPvr92SLylnQfZEPgXz+9pOG9G9haAPLpEatncZwYiYd9yiR6HYWhKp2erzCoNrOqKg9IlQwU3z1IDiw==, tarball: https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20250408.0.tgz} engines: {node: '>=16'} cpu: [arm64] os: [linux] '@cloudflare/workerd-linux-arm64@1.20250409.0': - resolution: {integrity: sha512-Sr59P0TREayil5OQ7kcbjuIn6L6OTSRLI91LKu0D8vi1hss2q9FUwBcwxg0+Yd/x+ty/x7IISiAK5QBkAMeITQ==} + resolution: {integrity: sha512-Sr59P0TREayil5OQ7kcbjuIn6L6OTSRLI91LKu0D8vi1hss2q9FUwBcwxg0+Yd/x+ty/x7IISiAK5QBkAMeITQ==, tarball: https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20250409.0.tgz} engines: {node: '>=16'} cpu: [arm64] os: [linux] '@cloudflare/workerd-linux-arm64@1.20250428.0': - resolution: {integrity: sha512-D9NRBnW46nl1EQsP13qfkYb5lbt4C6nxl38SBKY/NOcZAUoHzNB5K0GaK8LxvpkM7X/97ySojlMfR5jh5DNXYQ==} + resolution: {integrity: sha512-D9NRBnW46nl1EQsP13qfkYb5lbt4C6nxl38SBKY/NOcZAUoHzNB5K0GaK8LxvpkM7X/97ySojlMfR5jh5DNXYQ==, tarball: https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20250428.0.tgz} engines: {node: '>=16'} cpu: [arm64] os: [linux] '@cloudflare/workerd-linux-arm64@1.20250507.0': - resolution: {integrity: sha512-NMPibSdOYeycU0IrKkgOESFJQy7dEpHvuatZxQxlT+mIQK0INzI3irp2kKxhF99s25kPC4p+xg9bU3ugTrs3VQ==} + resolution: {integrity: sha512-NMPibSdOYeycU0IrKkgOESFJQy7dEpHvuatZxQxlT+mIQK0INzI3irp2kKxhF99s25kPC4p+xg9bU3ugTrs3VQ==, tarball: https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20250507.0.tgz} engines: {node: '>=16'} cpu: [arm64] os: [linux] '@cloudflare/workerd-windows-64@1.20250408.0': - resolution: {integrity: sha512-nJ3RjMKGae2aF2rZ/CNeBvQPM+W5V1SUK0FYWG/uomyr7uQ2l4IayHna1ODg/OHHTEgIjwom0Mbn58iXb0WOcQ==} + resolution: {integrity: sha512-nJ3RjMKGae2aF2rZ/CNeBvQPM+W5V1SUK0FYWG/uomyr7uQ2l4IayHna1ODg/OHHTEgIjwom0Mbn58iXb0WOcQ==, tarball: https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20250408.0.tgz} engines: {node: '>=16'} cpu: [x64] os: [win32] '@cloudflare/workerd-windows-64@1.20250409.0': - resolution: {integrity: sha512-dK9I8zBX5rR7MtaaP2AhICQTEw3PVzHcsltN8o46w7JsbYlMvFOj27FfYH5dhs3IahgmIfw2e572QXW2o/dbpg==} + resolution: {integrity: sha512-dK9I8zBX5rR7MtaaP2AhICQTEw3PVzHcsltN8o46w7JsbYlMvFOj27FfYH5dhs3IahgmIfw2e572QXW2o/dbpg==, tarball: https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20250409.0.tgz} engines: {node: '>=16'} cpu: [x64] os: [win32] '@cloudflare/workerd-windows-64@1.20250428.0': - resolution: {integrity: sha512-RQCRj28eitjKD0tmei6iFOuWqMuHMHdNGEigRmbkmuTlpbWHNAoHikgCzZQ/dkKDdatA76TmcpbyECNf31oaTA==} + resolution: {integrity: sha512-RQCRj28eitjKD0tmei6iFOuWqMuHMHdNGEigRmbkmuTlpbWHNAoHikgCzZQ/dkKDdatA76TmcpbyECNf31oaTA==, tarball: https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20250428.0.tgz} engines: {node: '>=16'} cpu: [x64] os: [win32] '@cloudflare/workerd-windows-64@1.20250507.0': - resolution: {integrity: sha512-c91fhNP8ufycdIDqjVyKTqeb4ewkbAYXFQbLreMVgh4LLQQPDDEte8wCdmaFy5bIL0M9d85PpdCq51RCzq/FaQ==} + resolution: {integrity: sha512-c91fhNP8ufycdIDqjVyKTqeb4ewkbAYXFQbLreMVgh4LLQQPDDEte8wCdmaFy5bIL0M9d85PpdCq51RCzq/FaQ==, tarball: https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20250507.0.tgz} engines: {node: '>=16'} cpu: [x64] os: [win32] '@cloudflare/workers-oauth-provider@0.0.5': - resolution: {integrity: sha512-t1x5KAzsubCvb4APnJ93z407X1x7SGj/ga5ziRnwIb/iLy4PMkT/hgd1y5z7Bbsdy5Fy6mywhCP4lym24bX66w==} + resolution: {integrity: sha512-t1x5KAzsubCvb4APnJ93z407X1x7SGj/ga5ziRnwIb/iLy4PMkT/hgd1y5z7Bbsdy5Fy6mywhCP4lym24bX66w==, tarball: https://registry.npmjs.org/@cloudflare/workers-oauth-provider/-/workers-oauth-provider-0.0.5.tgz} '@cloudflare/workers-types@4.20250410.0': - resolution: {integrity: sha512-Yx9VUi6QpmXtUIhOL+em+V02gue12kmVBVL6RGH5mhFh50M0x9JyOmm6wKwKZUny2uQd+22nuouE2q3z1OrsIQ==} + resolution: {integrity: sha512-Yx9VUi6QpmXtUIhOL+em+V02gue12kmVBVL6RGH5mhFh50M0x9JyOmm6wKwKZUny2uQd+22nuouE2q3z1OrsIQ==, tarball: https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20250410.0.tgz} '@cloudflare/workers-types@4.20250416.0': - resolution: {integrity: sha512-i37TX0Clp+MrPdXMBdvKZM7JghCrWD9GtG7E+8ANOAPmtZjUkZfEy9qq46IG3XlNpagPaWDkY3SgJ3s01gPxCw==} + resolution: {integrity: sha512-i37TX0Clp+MrPdXMBdvKZM7JghCrWD9GtG7E+8ANOAPmtZjUkZfEy9qq46IG3XlNpagPaWDkY3SgJ3s01gPxCw==, tarball: https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20250416.0.tgz} '@coinbase/wallet-sdk@3.9.3': resolution: {integrity: sha512-N/A2DRIf0Y3PHc1XAMvbBUu4zisna6qAdqABMZwBMNEfWrXpAwx16pZGkYCLGE+Rvv1edbcB2LYDRnACNcmCiw==} @@ -3069,10 +3072,6 @@ packages: resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} - call-bound@1.0.3: - resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} - engines: {node: '>= 0.4'} - call-bound@1.0.4: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} @@ -5900,6 +5899,9 @@ packages: workers-ai-provider@0.3.0: resolution: {integrity: sha512-NCnwRJ0OVgyVIZwbHRmn+8A80vi4iXxnjvLaxn0CCYMsooVKgf52rEIcbap5FJNd7fx3nLOi2OgNKjqS1ipz5A==} + workers-tagged-logger@0.13.5: + resolution: {integrity: sha512-B+cLaM38vOpnEikAB19PK8RkUS4QaeK7iq0lle6Xvp5V5a55mpIO9Gn2nSAT18Ph4QvF/H2vnCReYlAMcBe6Jw==} + wrangler@4.10.0: resolution: {integrity: sha512-fTE4hZ79msEUt8+HEjl/8Q72haCyzPLu4PgrU3L81ysmjrMEdiYfUPqnvCkBUVtJvrDNdctTEimkufT1Y0ipNg==} engines: {node: '>=18.0.0'} @@ -6046,8 +6048,8 @@ packages: zod@4.0.0-beta.20250505T195954: resolution: {integrity: sha512-iB8WvxkobVIXMARvQu20fKvbS7mUTiYRpcD8OQV1xjRhxO0EEpYIRJBk6yfBzHAHEdOSDh3SxDITr5Eajr2vtg==} - zod@4.1.11: - resolution: {integrity: sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==} + zod@4.1.12: + resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==} zustand@5.0.0: resolution: {integrity: sha512-LE+VcmbartOPM+auOjCCLQOsQ05zUTp8RkgwRzefUk+2jISdMMFnxvyTjA4YNWr5ZGXYbVsEMZosttuxUBkojQ==} @@ -8823,10 +8825,10 @@ snapshots: typescript: 5.5.4 zod: 3.24.2 - abitype@1.1.1(typescript@5.5.4)(zod@4.1.11): + abitype@1.1.1(typescript@5.5.4)(zod@4.1.12): optionalDependencies: typescript: 5.5.4 - zod: 4.1.11 + zod: 4.1.12 abort-controller@3.0.0: dependencies: @@ -9139,11 +9141,6 @@ snapshots: get-intrinsic: 1.3.0 set-function-length: 1.2.2 - call-bound@1.0.3: - dependencies: - call-bind-apply-helpers: 1.0.1 - get-intrinsic: 1.2.7 - call-bound@1.0.4: dependencies: call-bind-apply-helpers: 1.0.2 @@ -10294,7 +10291,7 @@ snapshots: is-arguments@1.2.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-array-buffer@3.0.4: @@ -10897,10 +10894,10 @@ snapshots: ox@0.6.7(typescript@5.5.4)(zod@3.24.2): dependencies: '@adraffy/ens-normalize': 1.11.1 - '@noble/curves': 1.8.1 - '@noble/hashes': 1.7.1 - '@scure/bip32': 1.6.2 - '@scure/bip39': 1.5.4 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 abitype: 1.0.8(typescript@5.5.4)(zod@3.24.2) eventemitter3: 5.0.1 optionalDependencies: @@ -10952,7 +10949,7 @@ snapshots: transitivePeerDependencies: - zod - ox@0.9.8(typescript@5.5.4)(zod@4.1.11): + ox@0.9.8(typescript@5.5.4)(zod@4.1.12): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -10960,7 +10957,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.1(typescript@5.5.4)(zod@4.1.11) + abitype: 1.1.1(typescript@5.5.4)(zod@4.1.12) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.5.4 @@ -11088,9 +11085,9 @@ snapshots: hono: 4.9.9 idb-keyval: 6.2.2 mipd: 0.0.7(typescript@5.5.4) - ox: 0.9.8(typescript@5.5.4)(zod@4.1.11) + ox: 0.9.8(typescript@5.5.4)(zod@4.1.12) viem: 2.37.9(bufferutil@4.0.9)(typescript@5.5.4)(utf-8-validate@5.0.10)(zod@3.24.2) - zod: 4.1.11 + zod: 4.1.12 zustand: 5.0.8(react@17.0.2)(use-sync-external-store@1.4.0(react@17.0.2)) optionalDependencies: '@tanstack/react-query': 5.90.2(react@17.0.2) @@ -11910,8 +11907,8 @@ snapshots: inherits: 2.0.4 is-arguments: 1.2.0 is-generator-function: 1.1.2 - is-typed-array: 1.1.13 - which-typed-array: 1.1.15 + is-typed-array: 1.1.15 + which-typed-array: 1.1.19 uuid@8.3.2: {} @@ -12268,6 +12265,12 @@ snapshots: dependencies: '@cloudflare/workers-types': 4.20250410.0 + workers-tagged-logger@0.13.5: + dependencies: + zod: 4.1.12 + optionalDependencies: + hono: 4.7.6 + wrangler@4.10.0(@cloudflare/workers-types@4.20250416.0)(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@cloudflare/kv-asset-handler': 0.4.0 @@ -12451,7 +12454,7 @@ snapshots: dependencies: '@zod/core': 0.11.6 - zod@4.1.11: {} + zod@4.1.12: {} zustand@5.0.0(react@17.0.2)(use-sync-external-store@1.4.0(react@17.0.2)): optionalDependencies: