diff --git a/frontend/CLAUDE.md b/frontend/CLAUDE.md index c65e8e07ea..88d066f6ef 100644 --- a/frontend/CLAUDE.md +++ b/frontend/CLAUDE.md @@ -1,3 +1,4 @@ # Frontend - When building new UI components, ship a Ladle story alongside the component (`*.stories.tsx` next to the source). Cover the meaningful states (empty, loading, error, success, edge cases) so the component can be reviewed and iterated on in isolation without booting the whole dashboard. Run with `pnpm dev:ladle` from `frontend/`. Existing example: [src/app/runner-pool-error-popover.stories.tsx](src/app/runner-pool-error-popover.stories.tsx). +- HTTP responses can be mocked end-to-end in dev via MSW. Append `?mock=1` to any dashboard URL (dev only, gated by `import.meta.env.DEV` in [src/lib/agent-mocks.ts](src/lib/agent-mocks.ts)) to boot the worker. Then in DevTools / agent-browser console: `window.__rivetMock("*/actors/:id/kv/keys/*", { status: 503, body: { group: "guard", code: "service_unavailable", message: "..." } })`. Mocks persist across reloads via sessionStorage; `window.__rivetClearMocks()` resets. Use this to exercise error UIs without standing up real engine state. Prod bundle is unaffected (dynamic `import("msw/browser")` behind the dev gate). diff --git a/frontend/package.json b/frontend/package.json index 852e07b68e..d5540fd2bb 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,163 +1,169 @@ { - "name": "@rivetkit/engine-frontend", - "private": true, - "version": "2.0.21", - "type": "module", - "scripts": { - "dev": "vite", - "check-types": "tsc --noEmit", - "build": "NODE_OPTIONS='--max-old-space-size=8192' vite build --mode=production", - "preview": "vite preview", - "test": "vitest run", - "test:watch": "vitest", - "dev:ladle": "ladle dev", - "build:ladle": "ladle build" - }, - "dependencies": { - "@codemirror/autocomplete": "^6.18.7", - "@codemirror/commands": "^6.8.1", - "@codemirror/lang-javascript": "^6.2.4", - "@codemirror/lang-json": "^6.0.2", - "@codemirror/lang-sql": "^6.8.0", - "@codemirror/lint": "^6.8.5", - "@codemirror/merge": "^6.10.2", - "@codemirror/state": "^6.5.2", - "@codemirror/view": "^6.38.2", - "@date-fns/utc": "^1.2.0", - "@fortawesome/fontawesome-svg-core": "^6.7.2", - "@fortawesome/free-brands-svg-icons": "^6.7.2", - "@fortawesome/free-solid-svg-icons": "^6.7.2", - "@fortawesome/react-fontawesome": "^0.2.6", - "@hookform/resolvers": "^5.2", - "@ladle/react": "^5.1.1", - "@marsidev/react-turnstile": "^1.5.0", - "@microsoft/fetch-event-source": "^2.0.1", - "@radix-ui/react-accordion": "^1.2.12", - "@radix-ui/react-avatar": "^1.1.10", - "@radix-ui/react-checkbox": "^1.3.3", - "@radix-ui/react-collapsible": "^1.1.12", - "@radix-ui/react-dialog": "^1.1.15", - "@radix-ui/react-dropdown-menu": "^2.1.16", - "@radix-ui/react-label": "^2.1.7", - "@radix-ui/react-popover": "^1.1.15", - "@radix-ui/react-progress": "^1.1.7", - "@radix-ui/react-radio-group": "^1.3.8", - "@radix-ui/react-scroll-area": "^1.2.10", - "@radix-ui/react-select": "^2.2.6", - "@radix-ui/react-separator": "^1.1.7", - "@radix-ui/react-slider": "^1.3.6", - "@radix-ui/react-slot": "^1.2.3", - "@radix-ui/react-switch": "^1.2.6", - "@radix-ui/react-tabs": "^1.1.13", - "@radix-ui/react-toggle": "^1.1.10", - "@radix-ui/react-toggle-group": "^1.1.11", - "@radix-ui/react-tooltip": "^1.2.8", - "@radix-ui/react-visually-hidden": "^1.2.3", - "@rivet-gg/cloud": "*", - "@rivet-gg/icons": "workspace:*", - "@rivetkit/engine-api-full": "workspace:*", - "@rivetkit/shared-data": "workspace:*", - "@rivetkit/traces": "workspace:*", - "@sentry/react": "^8.55.0", - "@sentry/vite-plugin": "^2.23.1", - "@shikijs/langs": "^3.12.2", - "@shikijs/transformers": "^3.12.2", - "@stepperize/react": "^5.1.8", - "@tailwindcss/container-queries": "^0.1.1", - "@tailwindcss/typography": "^0.5.16", - "@tanstack/history": "^1.133.28", - "@tanstack/pacer": "^0.21.0", - "@tanstack/query-core": "^5.87.1", - "@tanstack/react-hotkeys": "^0.3.0", - "@tanstack/react-query": "^5.87.1", - "@tanstack/react-query-devtools": "^5.87.3", - "@tanstack/react-router": "^1.167.1", - "@tanstack/react-router-devtools": "^1.166.8", - "@tanstack/react-store": "^0.7.5", - "@tanstack/react-table": "^8.21.3", - "@tanstack/react-virtual": "^3.13.12", - "@tanstack/router-devtools": "^1.166.8", - "@tanstack/router-plugin": "^1.166.10", - "@tanstack/store": "^0.7.5", - "@tanstack/zod-adapter": "^1.131.36", - "@types/bcryptjs": "^2.4.6", - "@types/canvas-confetti": "^1.9.0", - "@types/d3-array": "^3.2.1", - "@types/escape-html": "^1.0.4", - "@types/file-saver": "^2.0.7", - "@types/lodash": "^4.17.20", - "@types/mdx": "^2.0.13", - "@types/node": "^20.19.13", - "@types/react": "^19", - "@types/react-dom": "^19", - "@types/reconnectingwebsocket": "^1.0.10", - "@uiw/codemirror-extensions-basic-setup": "^4.25.1", - "@uiw/codemirror-theme-github": "^4.25.1", - "@uiw/react-codemirror": "^4.25.1", - "@visx/axis": "^3.12.0", - "@visx/brush": "^3.12.0", - "@visx/curve": "^3.12.0", - "@visx/event": "^3.12.0", - "@visx/grid": "^3.12.0", - "@visx/group": "^3.12.0", - "@visx/pattern": "^3.12.0", - "@visx/responsive": "^3.12.0", - "@visx/scale": "^3.12.0", - "@visx/shape": "^3.12.0", - "@visx/tooltip": "^3.12.0", - "@vitejs/plugin-react": "^4.7.0", - "@xyflow/react": "^12.10.0", - "actor-core": "^0.6.3", - "autoprefixer": "^10.4.21", - "bcryptjs": "^2.4.3", - "better-auth": "^1.5.6", - "canvas-confetti": "^1.9.3", - "cbor-x": "^1.6.0", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "cmdk": "^1.1.1", - "d3-array": "^3.2.4", - "date-fns": "^4.1.0", - "es-toolkit": "^1.45.1", - "esast-util-from-js": "^2.0.1", - "escape-html": "^1.0.3", - "estree-util-to-js": "^2.0.0", - "fast-deep-equal": "^3.1.3", - "fast-json-patch": "^3.1.1", - "favigo": "^1.1.0", - "file-saver": "^2.0.5", - "filesize": "^11.0.2", - "framer-motion": "^11.18.2", - "input-otp": "^1.4.2", - "lodash": "^4.17.21", - "postcss": "^8.5.6", - "posthog-js": "^1.275.1", - "react": "^19.1.1", - "react-day-picker": "8.10.1", - "react-dom": "^19.1.1", - "react-error-boundary": "^6.0.3", - "react-hook-form": "^7.62.0", - "react-inspector": "^6.0.2", - "react-resizable-panels": "^2.1.9", - "recharts": "^2.15.4", - "reconnectingwebsocket": "^1.0.0", - "rivetkit": "workspace:*", - "shiki": "^3.12.2", - "sonner": "^1.7.4", - "tailwind-merge": "^2.6.0", - "tailwindcss": "^3.4.17", - "tailwindcss-animate": "^1.0.7", - "ts-pattern": "^5.8.0", - "typescript": "^5.9.2", - "typescript-plugin-css-modules": "^5.2.0", - "unplugin-macros": "^0.18.3", - "usehooks-ts": "^3.1.1", - "vite": "^5.4.20", - "vite-plugin-favicons-inject": "^2.2.0", - "vite-tsconfig-paths": "^5.1.4", - "zod": "^3.25.76" - }, - "devDependencies": { - "vitest": "^4.0.18" - } -} + "name": "@rivetkit/engine-frontend", + "private": true, + "version": "2.0.21", + "type": "module", + "scripts": { + "dev": "vite", + "check-types": "tsc --noEmit", + "build": "NODE_OPTIONS='--max-old-space-size=8192' vite build --mode=production", + "preview": "vite preview", + "test": "vitest run", + "test:watch": "vitest", + "dev:ladle": "ladle dev", + "build:ladle": "ladle build" + }, + "dependencies": { + "@codemirror/autocomplete": "^6.18.7", + "@codemirror/commands": "^6.8.1", + "@codemirror/lang-javascript": "^6.2.4", + "@codemirror/lang-json": "^6.0.2", + "@codemirror/lang-sql": "^6.8.0", + "@codemirror/lint": "^6.8.5", + "@codemirror/merge": "^6.10.2", + "@codemirror/state": "^6.5.2", + "@codemirror/view": "^6.38.2", + "@date-fns/utc": "^1.2.0", + "@fortawesome/fontawesome-svg-core": "^6.7.2", + "@fortawesome/free-brands-svg-icons": "^6.7.2", + "@fortawesome/free-solid-svg-icons": "^6.7.2", + "@fortawesome/react-fontawesome": "^0.2.6", + "@hookform/resolvers": "^5.2", + "@ladle/react": "^5.1.1", + "@marsidev/react-turnstile": "^1.5.0", + "@microsoft/fetch-event-source": "^2.0.1", + "@radix-ui/react-accordion": "^1.2.12", + "@radix-ui/react-avatar": "^1.1.10", + "@radix-ui/react-checkbox": "^1.3.3", + "@radix-ui/react-collapsible": "^1.1.12", + "@radix-ui/react-dialog": "^1.1.15", + "@radix-ui/react-dropdown-menu": "^2.1.16", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-popover": "^1.1.15", + "@radix-ui/react-progress": "^1.1.7", + "@radix-ui/react-radio-group": "^1.3.8", + "@radix-ui/react-scroll-area": "^1.2.10", + "@radix-ui/react-select": "^2.2.6", + "@radix-ui/react-separator": "^1.1.7", + "@radix-ui/react-slider": "^1.3.6", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-switch": "^1.2.6", + "@radix-ui/react-tabs": "^1.1.13", + "@radix-ui/react-toggle": "^1.1.10", + "@radix-ui/react-toggle-group": "^1.1.11", + "@radix-ui/react-tooltip": "^1.2.8", + "@radix-ui/react-visually-hidden": "^1.2.3", + "@rivet-gg/cloud": "*", + "@rivet-gg/icons": "workspace:*", + "@rivetkit/engine-api-full": "workspace:*", + "@rivetkit/shared-data": "workspace:*", + "@rivetkit/traces": "workspace:*", + "@sentry/react": "^8.55.0", + "@sentry/vite-plugin": "^2.23.1", + "@shikijs/langs": "^3.12.2", + "@shikijs/transformers": "^3.12.2", + "@stepperize/react": "^5.1.8", + "@tailwindcss/container-queries": "^0.1.1", + "@tailwindcss/typography": "^0.5.16", + "@tanstack/history": "^1.133.28", + "@tanstack/pacer": "^0.21.0", + "@tanstack/query-core": "^5.87.1", + "@tanstack/react-hotkeys": "^0.3.0", + "@tanstack/react-query": "^5.87.1", + "@tanstack/react-query-devtools": "^5.87.3", + "@tanstack/react-router": "^1.167.1", + "@tanstack/react-router-devtools": "^1.166.8", + "@tanstack/react-store": "^0.7.5", + "@tanstack/react-table": "^8.21.3", + "@tanstack/react-virtual": "^3.13.12", + "@tanstack/router-devtools": "^1.166.8", + "@tanstack/router-plugin": "^1.166.10", + "@tanstack/store": "^0.7.5", + "@tanstack/zod-adapter": "^1.131.36", + "@types/bcryptjs": "^2.4.6", + "@types/canvas-confetti": "^1.9.0", + "@types/d3-array": "^3.2.1", + "@types/escape-html": "^1.0.4", + "@types/file-saver": "^2.0.7", + "@types/lodash": "^4.17.20", + "@types/mdx": "^2.0.13", + "@types/node": "^20.19.13", + "@types/react": "^19", + "@types/react-dom": "^19", + "@types/reconnectingwebsocket": "^1.0.10", + "@uiw/codemirror-extensions-basic-setup": "^4.25.1", + "@uiw/codemirror-theme-github": "^4.25.1", + "@uiw/react-codemirror": "^4.25.1", + "@visx/axis": "^3.12.0", + "@visx/brush": "^3.12.0", + "@visx/curve": "^3.12.0", + "@visx/event": "^3.12.0", + "@visx/grid": "^3.12.0", + "@visx/group": "^3.12.0", + "@visx/pattern": "^3.12.0", + "@visx/responsive": "^3.12.0", + "@visx/scale": "^3.12.0", + "@visx/shape": "^3.12.0", + "@visx/tooltip": "^3.12.0", + "@vitejs/plugin-react": "^4.7.0", + "@xyflow/react": "^12.10.0", + "actor-core": "^0.6.3", + "autoprefixer": "^10.4.21", + "bcryptjs": "^2.4.3", + "better-auth": "^1.5.6", + "canvas-confetti": "^1.9.3", + "cbor-x": "^1.6.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "d3-array": "^3.2.4", + "date-fns": "^4.1.0", + "es-toolkit": "^1.45.1", + "esast-util-from-js": "^2.0.1", + "escape-html": "^1.0.3", + "estree-util-to-js": "^2.0.0", + "fast-deep-equal": "^3.1.3", + "fast-json-patch": "^3.1.1", + "favigo": "^1.1.0", + "file-saver": "^2.0.5", + "filesize": "^11.0.2", + "framer-motion": "^11.18.2", + "input-otp": "^1.4.2", + "lodash": "^4.17.21", + "postcss": "^8.5.6", + "posthog-js": "^1.275.1", + "react": "^19.1.1", + "react-day-picker": "8.10.1", + "react-dom": "^19.1.1", + "react-error-boundary": "^6.0.3", + "react-hook-form": "^7.62.0", + "react-inspector": "^6.0.2", + "react-resizable-panels": "^2.1.9", + "recharts": "^2.15.4", + "reconnectingwebsocket": "^1.0.0", + "rivetkit": "workspace:*", + "shiki": "^3.12.2", + "sonner": "^1.7.4", + "tailwind-merge": "^2.6.0", + "tailwindcss": "^3.4.17", + "tailwindcss-animate": "^1.0.7", + "ts-pattern": "^5.8.0", + "typescript": "^5.9.2", + "typescript-plugin-css-modules": "^5.2.0", + "unplugin-macros": "^0.18.3", + "usehooks-ts": "^3.1.1", + "vite": "^5.4.20", + "vite-plugin-favicons-inject": "^2.2.0", + "vite-tsconfig-paths": "^5.1.4", + "zod": "^3.25.76" + }, + "devDependencies": { + "msw": "^2.14.4", + "vitest": "^4.0.18" + }, + "msw": { + "workerDirectory": [ + "public" + ] + } +} \ No newline at end of file diff --git a/frontend/public/mockServiceWorker.js b/frontend/public/mockServiceWorker.js new file mode 100644 index 0000000000..3c51c57a3d --- /dev/null +++ b/frontend/public/mockServiceWorker.js @@ -0,0 +1,349 @@ +/* eslint-disable */ +/* tslint:disable */ + +/** + * Mock Service Worker. + * @see https://github.com/mswjs/msw + * - Please do NOT modify this file. + */ + +const PACKAGE_VERSION = '2.14.4' +const INTEGRITY_CHECKSUM = '4db4a41e972cec1b64cc569c66952d82' +const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') +const activeClientIds = new Set() + +addEventListener('install', function () { + self.skipWaiting() +}) + +addEventListener('activate', function (event) { + event.waitUntil(self.clients.claim()) +}) + +addEventListener('message', async function (event) { + const clientId = Reflect.get(event.source || {}, 'id') + + if (!clientId || !self.clients) { + return + } + + const client = await self.clients.get(clientId) + + if (!client) { + return + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }) + + switch (event.data) { + case 'KEEPALIVE_REQUEST': { + sendToClient(client, { + type: 'KEEPALIVE_RESPONSE', + }) + break + } + + case 'INTEGRITY_CHECK_REQUEST': { + sendToClient(client, { + type: 'INTEGRITY_CHECK_RESPONSE', + payload: { + packageVersion: PACKAGE_VERSION, + checksum: INTEGRITY_CHECKSUM, + }, + }) + break + } + + case 'MOCK_ACTIVATE': { + activeClientIds.add(clientId) + + sendToClient(client, { + type: 'MOCKING_ENABLED', + payload: { + client: { + id: client.id, + frameType: client.frameType, + }, + }, + }) + break + } + + case 'CLIENT_CLOSED': { + activeClientIds.delete(clientId) + + const remainingClients = allClients.filter((client) => { + return client.id !== clientId + }) + + // Unregister itself when there are no more clients + if (remainingClients.length === 0) { + self.registration.unregister() + } + + break + } + } +}) + +addEventListener('fetch', function (event) { + const requestInterceptedAt = Date.now() + + // Bypass navigation requests. + if (event.request.mode === 'navigate') { + return + } + + // Opening the DevTools triggers the "only-if-cached" request + // that cannot be handled by the worker. Bypass such requests. + if ( + event.request.cache === 'only-if-cached' && + event.request.mode !== 'same-origin' + ) { + return + } + + // Bypass all requests when there are no active clients. + // Prevents the self-unregistered worked from handling requests + // after it's been terminated (still remains active until the next reload). + if (activeClientIds.size === 0) { + return + } + + const requestId = crypto.randomUUID() + event.respondWith(handleRequest(event, requestId, requestInterceptedAt)) +}) + +/** + * @param {FetchEvent} event + * @param {string} requestId + * @param {number} requestInterceptedAt + */ +async function handleRequest(event, requestId, requestInterceptedAt) { + const client = await resolveMainClient(event) + const requestCloneForEvents = event.request.clone() + const response = await getResponse( + event, + client, + requestId, + requestInterceptedAt, + ) + + // Send back the response clone for the "response:*" life-cycle events. + // Ensure MSW is active and ready to handle the message, otherwise + // this message will pend indefinitely. + if (client && activeClientIds.has(client.id)) { + const serializedRequest = await serializeRequest(requestCloneForEvents) + + // Clone the response so both the client and the library could consume it. + const responseClone = response.clone() + + sendToClient( + client, + { + type: 'RESPONSE', + payload: { + isMockedResponse: IS_MOCKED_RESPONSE in response, + request: { + id: requestId, + ...serializedRequest, + }, + response: { + type: responseClone.type, + status: responseClone.status, + statusText: responseClone.statusText, + headers: Object.fromEntries(responseClone.headers.entries()), + body: responseClone.body, + }, + }, + }, + responseClone.body ? [serializedRequest.body, responseClone.body] : [], + ) + } + + return response +} + +/** + * Resolve the main client for the given event. + * Client that issues a request doesn't necessarily equal the client + * that registered the worker. It's with the latter the worker should + * communicate with during the response resolving phase. + * @param {FetchEvent} event + * @returns {Promise} + */ +async function resolveMainClient(event) { + const client = await self.clients.get(event.clientId) + + if (activeClientIds.has(event.clientId)) { + return client + } + + if (client?.frameType === 'top-level') { + return client + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }) + + return allClients + .filter((client) => { + // Get only those clients that are currently visible. + return client.visibilityState === 'visible' + }) + .find((client) => { + // Find the client ID that's recorded in the + // set of clients that have registered the worker. + return activeClientIds.has(client.id) + }) +} + +/** + * @param {FetchEvent} event + * @param {Client | undefined} client + * @param {string} requestId + * @param {number} requestInterceptedAt + * @returns {Promise} + */ +async function getResponse(event, client, requestId, requestInterceptedAt) { + // Clone the request because it might've been already used + // (i.e. its body has been read and sent to the client). + const requestClone = event.request.clone() + + function passthrough() { + // Cast the request headers to a new Headers instance + // so the headers can be manipulated with. + const headers = new Headers(requestClone.headers) + + // Remove the "accept" header value that marked this request as passthrough. + // This prevents request alteration and also keeps it compliant with the + // user-defined CORS policies. + const acceptHeader = headers.get('accept') + if (acceptHeader) { + const values = acceptHeader.split(',').map((value) => value.trim()) + const filteredValues = values.filter( + (value) => value !== 'msw/passthrough', + ) + + if (filteredValues.length > 0) { + headers.set('accept', filteredValues.join(', ')) + } else { + headers.delete('accept') + } + } + + return fetch(requestClone, { headers }) + } + + // Bypass mocking when the client is not active. + if (!client) { + return passthrough() + } + + // Bypass initial page load requests (i.e. static assets). + // The absence of the immediate/parent client in the map of the active clients + // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet + // and is not ready to handle requests. + if (!activeClientIds.has(client.id)) { + return passthrough() + } + + // Notify the client that a request has been intercepted. + const serializedRequest = await serializeRequest(event.request) + const clientMessage = await sendToClient( + client, + { + type: 'REQUEST', + payload: { + id: requestId, + interceptedAt: requestInterceptedAt, + ...serializedRequest, + }, + }, + [serializedRequest.body], + ) + + switch (clientMessage.type) { + case 'MOCK_RESPONSE': { + return respondWithMock(clientMessage.data) + } + + case 'PASSTHROUGH': { + return passthrough() + } + } + + return passthrough() +} + +/** + * @param {Client} client + * @param {any} message + * @param {Array} transferrables + * @returns {Promise} + */ +function sendToClient(client, message, transferrables = []) { + return new Promise((resolve, reject) => { + const channel = new MessageChannel() + + channel.port1.onmessage = (event) => { + if (event.data && event.data.error) { + return reject(event.data.error) + } + + resolve(event.data) + } + + client.postMessage(message, [ + channel.port2, + ...transferrables.filter(Boolean), + ]) + }) +} + +/** + * @param {Response} response + * @returns {Response} + */ +function respondWithMock(response) { + // Setting response status code to 0 is a no-op. + // However, when responding with a "Response.error()", the produced Response + // instance will have status code set to 0. Since it's not possible to create + // a Response instance with status code 0, handle that use-case separately. + if (response.status === 0) { + return Response.error() + } + + const mockedResponse = new Response(response.body, response) + + Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, { + value: true, + enumerable: true, + }) + + return mockedResponse +} + +/** + * @param {Request} request + */ +async function serializeRequest(request) { + return { + url: request.url, + mode: request.mode, + method: request.method, + headers: Object.fromEntries(request.headers.entries()), + cache: request.cache, + credentials: request.credentials, + destination: request.destination, + integrity: request.integrity, + redirect: request.redirect, + referrer: request.referrer, + referrerPolicy: request.referrerPolicy, + body: await request.arrayBuffer(), + keepalive: request.keepalive, + } +} diff --git a/frontend/src/components/actors/guard-connectable-inspector.stories.tsx b/frontend/src/components/actors/guard-connectable-inspector.stories.tsx new file mode 100644 index 0000000000..3471ea1fd8 --- /dev/null +++ b/frontend/src/components/actors/guard-connectable-inspector.stories.tsx @@ -0,0 +1,461 @@ +import type { Story } from "@ladle/react"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { RivetError } from "@rivetkit/engine-api-full"; +import "../../../.ladle/ladle.css"; +import { TooltipProvider } from "@/components"; +import { + buildInspectorTokenErrorMessage, + OutdatedInspector, + useInspectorGuard, +} from "./guard-connectable-inspector"; + +function OutdatedInspectorPreview({ error }: { error: unknown }) { + return ( + + + + ); +} + +function RenderGuard() { + const node = useInspectorGuard(); + return <>{node}; +} + +const queryClient = new QueryClient({ + defaultOptions: { queries: { retry: false, staleTime: Infinity } }, +}); + +function Frame({ children }: { children: React.ReactNode }) { + return ( + + +
+
{children}
+
+
+
+ ); +} + +function Section({ + title, + children, +}: { + title: string; + children: React.ReactNode; +}) { + return ( +
+

+ {title} +

+
{children}
+
+ ); +} + +const LOCAL_METADATA = { type: "local", version: "2.0.40" }; +const DEPLOYED_METADATA = { type: "deployed", version: "2.0.40" }; +const OUTDATED_METADATA = { type: "deployed", version: "2.0.10" }; + +function rivetError(statusCode: number, body: unknown) { + return new RivetError({ + message: typeof body === "object" && body !== null && "message" in body + ? String((body as { message: unknown }).message) + : "Request failed", + statusCode, + body, + }); +} + +// Real engine error codes. Sources: +// engine/packages/pegboard/src/errors.rs +// engine/packages/api-builder/src/errors.rs +// engine/packages/api-public/src/errors.rs +// engine/packages/namespace/src/errors.rs +// engine/packages/guard-core/src/errors.rs + +const KV_KEY_NOT_FOUND = rivetError(404, { + group: "actor", + code: "kv_key_not_found", + message: "The KV key does not exist for this actor.", +}); + +const FORBIDDEN = rivetError(403, { + group: "api", + code: "forbidden", + message: "Access denied", +}); + +const UNAUTHORIZED = rivetError(401, { + group: "api", + code: "unauthorized", + message: "Authentication required", +}); + +const ACTOR_NOT_FOUND = rivetError(404, { + group: "actor", + code: "not_found", + message: "The actor does not exist or was destroyed.", +}); + +const NAMESPACE_NOT_FOUND = rivetError(404, { + group: "namespace", + code: "not_found", + message: "The namespace does not exist.", +}); + +const NO_RUNNER_CONFIG_CONFIGURED = rivetError(400, { + group: "actor", + code: "no_runner_config_configured", + message: + "No runner config with name 'serverless' are available in any datacenter for the namespace 'default'. Validate a provider is listed that matches the requested pool name.", +}); + +const SERVICE_UNAVAILABLE = rivetError(503, { + group: "guard", + code: "service_unavailable", + message: "Service unavailable.", +}); + +const TUNNEL_RESPONSE_CLOSED = rivetError(502, { + group: "guard", + code: "tunnel_response_closed", + message: "Actor tunnel closed before sending a response.", +}); + +const RATE_LIMIT = rivetError(429, { + group: "guard", + code: "rate_limit", + message: + "Too many requests to 'GET /actors/01HXK3TRAD8N5K9V2J6F1Z2N4Q/kv/keys/aW5zcGVjdG9yX3Rva2Vu' from IP 203.0.113.42.", +}); + +const API_INTERNAL_ERROR = rivetError(500, { + group: "api", + code: "internal_error", + message: "An internal server error occurred", +}); + +const NETWORK_ERROR = new TypeError("Failed to fetch"); + +export const RivetKitOutdated: Story = () => ( + +
+ {buildInspectorTokenErrorMessage({ + statusCode: 500, + metadata: OUTDATED_METADATA, + error: API_INTERNAL_ERROR, + })} +
+ +); + +export const RivetKitOutdatedKvKeyNotFound: Story = () => ( + +
+ {buildInspectorTokenErrorMessage({ + statusCode: 404, + metadata: OUTDATED_METADATA, + error: KV_KEY_NOT_FOUND, + })} +
+ +); + +export const KvKeyNotFound: Story = () => ( + +
+ {buildInspectorTokenErrorMessage({ + statusCode: 404, + metadata: DEPLOYED_METADATA, + error: KV_KEY_NOT_FOUND, + })} +
+ +); + +export const KvEndpointMissing: Story = () => ( + +
+ {buildInspectorTokenErrorMessage({ + statusCode: 404, + metadata: DEPLOYED_METADATA, + error: new RivetError({ + statusCode: 404, + body: "Not Found", + }), + })} +
+ +); + +export const Forbidden: Story = () => ( + +
+ {buildInspectorTokenErrorMessage({ + statusCode: 403, + metadata: DEPLOYED_METADATA, + error: FORBIDDEN, + })} +
+ +); + +export const ForbiddenLocal: Story = () => ( + +
+ {buildInspectorTokenErrorMessage({ + statusCode: 403, + metadata: LOCAL_METADATA, + error: FORBIDDEN, + })} +
+ +); + +export const ActorNotFound: Story = () => ( + +
+ {buildInspectorTokenErrorMessage({ + statusCode: 404, + metadata: DEPLOYED_METADATA, + error: ACTOR_NOT_FOUND, + })} +
+ +); + +export const NamespaceNotFound: Story = () => ( + +
+ {buildInspectorTokenErrorMessage({ + statusCode: 404, + metadata: DEPLOYED_METADATA, + error: NAMESPACE_NOT_FOUND, + })} +
+ +); + +export const Unauthorized: Story = () => ( + +
+ {buildInspectorTokenErrorMessage({ + statusCode: 401, + metadata: DEPLOYED_METADATA, + error: UNAUTHORIZED, + })} +
+ +); + +export const NoRunnerConfigConfigured: Story = () => ( + +
+ {buildInspectorTokenErrorMessage({ + statusCode: 400, + metadata: DEPLOYED_METADATA, + error: NO_RUNNER_CONFIG_CONFIGURED, + })} +
+ +); + +export const ServiceUnavailable: Story = () => ( + +
+ {buildInspectorTokenErrorMessage({ + statusCode: 503, + metadata: DEPLOYED_METADATA, + error: SERVICE_UNAVAILABLE, + })} +
+ +); + +export const TunnelResponseClosed: Story = () => ( + +
+ {buildInspectorTokenErrorMessage({ + statusCode: 502, + metadata: DEPLOYED_METADATA, + error: TUNNEL_RESPONSE_CLOSED, + })} +
+ +); + +export const RateLimit: Story = () => ( + +
+ {buildInspectorTokenErrorMessage({ + statusCode: 429, + metadata: DEPLOYED_METADATA, + error: RATE_LIMIT, + })} +
+ +); + +export const InternalError: Story = () => ( + +
+ {buildInspectorTokenErrorMessage({ + statusCode: 500, + metadata: DEPLOYED_METADATA, + error: API_INTERNAL_ERROR, + })} +
+ +); + +export const NonStructuredError: Story = () => ( + +
+ {buildInspectorTokenErrorMessage({ + metadata: DEPLOYED_METADATA, + error: NETWORK_ERROR, + })} +
+ +); + +export const OutdatedInspectorRivetKitTooOld: Story = () => ( + +
+ +
+ +); + +export const OutdatedInspectorWithEngineError: Story = () => ( + +
+ +
+ +); + +export const OutdatedInspectorNoStructuredError: Story = () => ( + +
+ +
+ +); + +export const Gallery: Story = () => ( + +
+ {buildInspectorTokenErrorMessage({ + statusCode: 500, + metadata: OUTDATED_METADATA, + error: API_INTERNAL_ERROR, + })} +
+
+ {buildInspectorTokenErrorMessage({ + statusCode: 404, + metadata: OUTDATED_METADATA, + error: KV_KEY_NOT_FOUND, + })} +
+
+ {buildInspectorTokenErrorMessage({ + statusCode: 404, + metadata: DEPLOYED_METADATA, + error: KV_KEY_NOT_FOUND, + })} +
+
+ {buildInspectorTokenErrorMessage({ + statusCode: 404, + metadata: DEPLOYED_METADATA, + error: new RivetError({ + statusCode: 404, + body: "Not Found", + }), + })} +
+
+ {buildInspectorTokenErrorMessage({ + statusCode: 403, + metadata: DEPLOYED_METADATA, + error: FORBIDDEN, + })} +
+
+ {buildInspectorTokenErrorMessage({ + statusCode: 401, + metadata: DEPLOYED_METADATA, + error: UNAUTHORIZED, + })} +
+
+ {buildInspectorTokenErrorMessage({ + statusCode: 404, + metadata: DEPLOYED_METADATA, + error: ACTOR_NOT_FOUND, + })} +
+
+ {buildInspectorTokenErrorMessage({ + statusCode: 404, + metadata: DEPLOYED_METADATA, + error: NAMESPACE_NOT_FOUND, + })} +
+
+ {buildInspectorTokenErrorMessage({ + statusCode: 400, + metadata: DEPLOYED_METADATA, + error: NO_RUNNER_CONFIG_CONFIGURED, + })} +
+
+ {buildInspectorTokenErrorMessage({ + statusCode: 503, + metadata: DEPLOYED_METADATA, + error: SERVICE_UNAVAILABLE, + })} +
+
+ {buildInspectorTokenErrorMessage({ + statusCode: 502, + metadata: DEPLOYED_METADATA, + error: TUNNEL_RESPONSE_CLOSED, + })} +
+
+ {buildInspectorTokenErrorMessage({ + statusCode: 429, + metadata: DEPLOYED_METADATA, + error: RATE_LIMIT, + })} +
+
+ {buildInspectorTokenErrorMessage({ + statusCode: 500, + metadata: DEPLOYED_METADATA, + error: API_INTERNAL_ERROR, + })} +
+
+ {buildInspectorTokenErrorMessage({ + metadata: DEPLOYED_METADATA, + error: NETWORK_ERROR, + })} +
+
+ +
+
+ +
+
+ +
+ +); diff --git a/frontend/src/components/actors/guard-connectable-inspector.tsx b/frontend/src/components/actors/guard-connectable-inspector.tsx index a1ac1dee54..d1c30c51cb 100644 --- a/frontend/src/components/actors/guard-connectable-inspector.tsx +++ b/frontend/src/components/actors/guard-connectable-inspector.tsx @@ -23,6 +23,7 @@ import { useMemo, } from "react"; import { match, P } from "ts-pattern"; +import { z } from "zod"; import { HelpDropdown } from "@/app/help-dropdown"; import { isRivetApiError } from "@/lib/errors"; import { features } from "@/lib/features"; @@ -263,135 +264,177 @@ interface InspectorTokenErrorContext { error?: unknown; } -function buildInspectorTokenErrorMessage( +const EngineErrorBodySchema = z.object({ + group: z.string(), + code: z.string(), + message: z.string(), + metadata: z.unknown().optional(), +}); + +type EngineErrorBody = z.infer; + +function extractEngineErrorBody(error: unknown): EngineErrorBody | undefined { + if (!isRivetApiError(error)) return undefined; + const parsed = EngineErrorBodySchema.safeParse(error.body); + return parsed.success ? parsed.data : undefined; +} + +export function buildInspectorTokenErrorMessage( context: InspectorTokenErrorContext, ): ReactNode { const { statusCode, metadata, error } = context; - const isLocal = metadata?.type === "local"; + const engineError = extractEngineErrorBody(error); + + // Version check is orthogonal to the specific error. If RivetKit itself + // is below the minimum, surface that first regardless of which call + // failed. + if ( + metadata?.version && + isVersionOutdated(metadata.version, RIVET_KIT_MIN_VERSION) + ) { + return ( + + ); + } + + // The inspector token couldn't be retrieved. Two underlying causes: + // 1. Engine route is missing entirely (older engine without the KV + // endpoint, returns 404 with no structured body). + // 2. Engine returned `actor.kv_key_not_found` for the inspector token + // key. + const isKvKeyMissing = + engineError?.group === "actor" && + engineError?.code === "kv_key_not_found"; + const isEndpointMissing = statusCode === 404 && !engineError; + + if (isKvKeyMissing || isEndpointMissing) { + return ( + + ); + } - // 403: Inspector auth rejected (deployed only). + // Inspector auth rejected. Deployed only: locally we expect to fall + // through to the verbose error so the user can debug. + const isLocal = metadata?.type === "local"; if (statusCode === 403 && !isLocal) { return ( -

- Inspector authentication failed. The dashboard fetches the - per-actor inspector token from the engine KV API; this - typically indicates a permissions or configuration issue - with the request. -

-

- See the{" "} + +

Inspector authentication failed.

+

+ The dashboard fetches the per-actor inspector token from the + engine KV API. This typically indicates a permissions or + configuration issue with the request. See the{" "} Inspector documentation {" "} for more details.

+ {engineError ? ( + + ) : ( + + )}
); } - // 404: Check version mismatch first - if (statusCode === 404) { - if (metadata?.version) { - const currentVersion = metadata.version; - const minVersion = RIVET_KIT_MIN_VERSION; - const versionIsOutdated = - currentVersion && - minVersion && - isVersionOutdated(currentVersion, minVersion); - - if (versionIsOutdated) { - return ( - -

RivetKit version is outdated.

-

- Your RivetKit version ( - - {currentVersion} - - ) is older than the required version ( - - {minVersion} - - ). -

-

- Please upgrade RivetKit to use the Inspector. -

-
- ); - } - } - - // 404 in deployed environment but not a version issue - if (!isLocal) { - return ( - -

- Inspector token endpoint returned a 404. Please check - your RivetKit version and contact support if the issue - persists. -

-

- Current RivetKit version:{" "} - - {metadata?.version || "unknown"} - -

-
- ); - } - - // 404 in local environment + // Surface the engine's structured error directly. + if (engineError) { return ( -

- Inspector token endpoint returned a 404. This might indicate - an outdated version of RivetKit. -

-

- Current RivetKit version:{" "} - - {metadata?.version || "unknown"} - -

-

- Please ensure you're running the latest version of RivetKit. -

-

- If the problem persists, please contact support. + +

+ Unable to connect to the Inspector.

+
); } - // Unknown error code in deployed environment - if (statusCode && statusCode !== 403 && statusCode !== 404 && !isLocal) { - return ; - } + return ; +} - // Default/generic error +function OutdatedRivetKit({ + currentVersion, + error, +}: { + currentVersion: string; + error?: unknown; +}) { return ( -

Unable to retrieve the Actor's Inspector token.

-

- Please ensure the Inspector is enabled for your Actor and that - you're using RivetKit version{" "} - {RIVET_KIT_MIN_VERSION} or - newer. + +

RivetKit version is outdated.

+

+ Your RivetKit version ( + {currentVersion}) is + older than the required version ( + + {RIVET_KIT_MIN_VERSION} + + ). Please upgrade RivetKit to use the Inspector.

-

+ {error ? ( + + ) : null} + + ); +} + +function MissingInspectorToken({ + currentVersion, + error, +}: { + currentVersion?: string; + error: unknown; +}) { + return ( + + +

Inspector token not found.

+

+ Ensure the Inspector is enabled on your Actor and that you are + running RivetKit{" "} + + {RIVET_KIT_MIN_VERSION} + {" "} + or newer. +

+

Current RivetKit version:{" "} - - {metadata?.version || "unknown"} + + {currentVersion || "unknown"}

@@ -400,6 +443,18 @@ function buildInspectorTokenErrorMessage( ); } +function EngineErrorBlock({ body }: { body: EngineErrorBody }) { + return ( +
+ + {body.group}.{body.code} + +

{body.message}

+ +
+ ); +} + function UnexpectedInspectorError({ error, metadata, @@ -424,12 +479,17 @@ function UnexpectedInspectorError({ }, []); return ( -

- An unexpected error occurred while connecting to the Inspector. + +

+ Unable to connect to the Inspector.

-

- Our team has been notified. Please try again later or contact - support if the issue persists. +

+ An unexpected error occurred. Our team has been notified. + Please try again later or contact support if the issue + persists.

@@ -689,7 +749,9 @@ function InspectorGuard({ } if (!data || error || !isInspectorAvailable) { - return {children}; + return ( + {children} + ); } if (connectionStatus === "error") { @@ -719,18 +781,49 @@ function InspectorGuard({ ); } -function OutdatedInspector({ children }: { children: ReactNode }) { +export function OutdatedInspector({ + children, + error, +}: { + children: ReactNode; + error?: unknown; +}) { + const engineError = extractEngineErrorBody(error); + return ( -

- Please upgrade your Actor to RivetKit version{" "} - - {RIVET_KIT_MIN_VERSION} - {" "} - to use the Inspector. + +

+ Unable to connect to the Inspector.

+ {engineError ? ( + + ) : ( + <> +

+ Ensure the Inspector is enabled and that you are + running RivetKit{" "} + + {RIVET_KIT_MIN_VERSION} + {" "} + or newer. +

+ {error ? ( + + ) : null} + + )}
} > diff --git a/frontend/src/lib/agent-mocks.ts b/frontend/src/lib/agent-mocks.ts new file mode 100644 index 0000000000..53d8bc0b42 --- /dev/null +++ b/frontend/src/lib/agent-mocks.ts @@ -0,0 +1,92 @@ +// Dev-only HTTP mocking surface for agent-driven testing. +// +// Activated when the dev build sees `?mock=1` on the URL. Once active, exposes: +// window.__rivetMock(pattern, { status, body, method? }) +// window.__rivetClearMocks() +// +// `pattern` is an MSW path matcher (e.g. "*/actors/:id/kv/keys/*"). Mocks are +// persisted to sessionStorage so they survive page reloads, which is the +// common agent-test workflow (set mock, reload to retrigger queries). + +import type { HttpHandler } from "msw"; + +type MockMethod = "get" | "post" | "put" | "delete" | "patch"; + +type MockSpec = { + status: number; + body?: unknown; + method?: MockMethod; +}; + +type StoredMock = MockSpec & { pattern: string }; + +const STORAGE_KEY = "__rivetAgentMocks"; + +declare global { + interface Window { + __rivetMock?: (pattern: string, spec: MockSpec) => void; + __rivetClearMocks?: () => void; + } +} + +function readStoredMocks(): StoredMock[] { + try { + const raw = sessionStorage.getItem(STORAGE_KEY); + if (!raw) return []; + const parsed = JSON.parse(raw); + return Array.isArray(parsed) ? parsed : []; + } catch { + return []; + } +} + +function writeStoredMocks(mocks: StoredMock[]) { + sessionStorage.setItem(STORAGE_KEY, JSON.stringify(mocks)); +} + +export async function maybeStartAgentMocks() { + if (!import.meta.env.DEV) return; + const params = new URLSearchParams(window.location.search); + if (params.get("mock") !== "1") return; + + const { setupWorker } = await import("msw/browser"); + const { http, HttpResponse } = await import("msw"); + + const buildHandler = (m: StoredMock): HttpHandler => { + const method = m.method ?? "get"; + return http[method](m.pattern, () => + HttpResponse.json(m.body ?? null, { status: m.status }), + ); + }; + + const initial = readStoredMocks(); + const worker = setupWorker(...initial.map(buildHandler)); + await worker.start({ + onUnhandledRequest: "bypass", + quiet: true, + }); + + window.__rivetMock = (pattern, spec) => { + const stored: StoredMock = { pattern, ...spec }; + const next = [ + ...readStoredMocks().filter( + (m) => + m.pattern !== pattern || + (m.method ?? "get") !== (spec.method ?? "get"), + ), + stored, + ]; + writeStoredMocks(next); + worker.use(buildHandler(stored)); + }; + + window.__rivetClearMocks = () => { + writeStoredMocks([]); + worker.resetHandlers(); + }; + + // eslint-disable-next-line no-console + console.info( + `[agent-mocks] active (${initial.length} restored). Use window.__rivetMock(pattern, { status, body }).`, + ); +} diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index 0d2521c618..4ac82e53ca 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -3,8 +3,10 @@ import ReactDOM from "react-dom/client"; import "./index.css"; import { initThirdPartyProviders } from "@/components"; import { App, router } from "./app"; +import { maybeStartAgentMocks } from "./lib/agent-mocks"; async function init() { + await maybeStartAgentMocks(); await initThirdPartyProviders(router, false); // biome-ignore lint/style/noNonNullAssertion: it should always be present diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f8e7443bce..23472ae6e5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -216,7 +216,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/actor-actions-vercel: dependencies: @@ -265,7 +265,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/agent-os: dependencies: @@ -355,7 +355,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/ai-agent-vercel: dependencies: @@ -410,7 +410,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/ai-and-user-generated-actors-freestyle: dependencies: @@ -468,7 +468,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^2.1.8 - version: 2.1.9(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 2.1.9(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/ai-generated-actor: dependencies: @@ -544,7 +544,7 @@ importers: version: 1.0.2(srvx@0.10.0)(vite@5.4.21(@types/node@22.19.15)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.15)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.15)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.15)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.15)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/chat-room: dependencies: @@ -587,7 +587,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/chat-room-render: dependencies: @@ -694,7 +694,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/collaborative-document: dependencies: @@ -743,7 +743,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/collaborative-document-vercel: dependencies: @@ -798,7 +798,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/cross-actor-actions: dependencies: @@ -841,7 +841,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/cross-actor-actions-vercel: dependencies: @@ -890,7 +890,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/cursors: dependencies: @@ -933,7 +933,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/cursors-raw-websocket: dependencies: @@ -976,7 +976,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/cursors-raw-websocket-vercel: dependencies: @@ -1025,7 +1025,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/cursors-vercel: dependencies: @@ -1074,7 +1074,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/custom-serverless: dependencies: @@ -1093,7 +1093,7 @@ importers: version: 5.9.3 vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/dynamic-actors: dependencies: @@ -1145,7 +1145,7 @@ importers: version: 1.0.2(srvx@0.10.0)(vite@5.4.21(@types/node@22.19.15)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.15)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.15)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.15)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.15)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/elysia: dependencies: @@ -1225,7 +1225,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/experimental-durable-streams-ai-agent-vercel: dependencies: @@ -1292,7 +1292,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/geo-distributed-database: dependencies: @@ -1335,7 +1335,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/geo-distributed-database-vercel: dependencies: @@ -1384,7 +1384,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/hello-world: dependencies: @@ -1427,7 +1427,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/hello-world-render: dependencies: @@ -1528,7 +1528,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/hono: dependencies: @@ -1593,7 +1593,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/hono-react-vercel: dependencies: @@ -1642,7 +1642,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/kitchen-sink: dependencies: @@ -1849,7 +1849,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/multiplayer-game: dependencies: @@ -1892,7 +1892,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/multiplayer-game-patterns: dependencies: @@ -1947,7 +1947,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/multiplayer-game-patterns-vercel: dependencies: @@ -2005,7 +2005,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/multiplayer-game-vercel: dependencies: @@ -2054,7 +2054,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/native-websockets: dependencies: @@ -2100,7 +2100,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) ws: specifier: ^8.16.0 version: 8.19.0 @@ -2155,7 +2155,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) ws: specifier: ^8.16.0 version: 8.19.0 @@ -2241,7 +2241,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/per-tenant-database-vercel: dependencies: @@ -2290,7 +2290,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/raw-fetch-handler: dependencies: @@ -2336,7 +2336,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/raw-fetch-handler-vercel: dependencies: @@ -2385,7 +2385,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/raw-websocket-handler: dependencies: @@ -2428,7 +2428,7 @@ importers: version: 6.4.1(@types/node@22.19.10)(jiti@2.6.1)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/raw-websocket-handler-proxy: dependencies: @@ -2486,7 +2486,7 @@ importers: version: 6.4.1(@types/node@22.19.10)(jiti@2.6.1)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/raw-websocket-handler-proxy-vercel: dependencies: @@ -2541,7 +2541,7 @@ importers: version: 6.4.1(@types/node@22.19.10)(jiti@2.6.1)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/raw-websocket-handler-vercel: dependencies: @@ -2590,7 +2590,7 @@ importers: version: 6.4.1(@types/node@22.19.10)(jiti@2.6.1)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/react: dependencies: @@ -2633,7 +2633,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/react-render: dependencies: @@ -2740,7 +2740,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/sandbox-coding-agent: dependencies: @@ -2783,7 +2783,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/sandbox-coding-agent-vercel: dependencies: @@ -2832,7 +2832,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/scheduling: dependencies: @@ -2875,7 +2875,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/scheduling-vercel: dependencies: @@ -2924,7 +2924,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/sqlite-drizzle: dependencies: @@ -3004,7 +3004,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/state-render: dependencies: @@ -3111,7 +3111,7 @@ importers: version: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/stream: dependencies: @@ -3154,7 +3154,7 @@ importers: version: 5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@20.19.13)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@20.19.13)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/stream-render: dependencies: @@ -3261,7 +3261,7 @@ importers: version: 5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@20.19.13)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@20.19.13)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) examples/trpc: dependencies: @@ -3586,7 +3586,7 @@ importers: version: 2.4.3 better-auth: specifier: ^1.5.6 - version: 1.5.6(@cloudflare/workers-types@4.20251014.0)(@opentelemetry/api@1.9.0)(better-sqlite3@12.8.0)(drizzle-kit@0.31.5)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20251014.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(@types/sql.js@1.4.9)(better-sqlite3@12.8.0)(bun-types@1.3.11)(kysely@0.28.15)(pg@8.17.2)(sql.js@1.13.0))(next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.57.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.93.2))(pg@8.17.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@20.19.13)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@20.19.13)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + version: 1.5.6(@cloudflare/workers-types@4.20251014.0)(@opentelemetry/api@1.9.0)(better-sqlite3@12.8.0)(drizzle-kit@0.31.5)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20251014.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(@types/sql.js@1.4.9)(better-sqlite3@12.8.0)(bun-types@1.3.11)(kysely@0.28.15)(pg@8.17.2)(sql.js@1.13.0))(next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.57.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.93.2))(pg@8.17.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@20.19.13)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@20.19.13)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) canvas-confetti: specifier: ^1.9.3 version: 1.9.3 @@ -3723,9 +3723,12 @@ importers: specifier: ^3.25.76 version: 3.25.76 devDependencies: + msw: + specifier: ^2.14.4 + version: 2.14.4(@types/node@20.19.13)(typescript@5.9.3) vitest: specifier: ^4.0.18 - version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@20.19.13)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@20.19.13)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + version: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@20.19.13)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@20.19.13)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) frontend/packages/components: dependencies: @@ -4180,7 +4183,7 @@ importers: version: 5.9.3 vitest: specifier: ^3.0.6 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) rivetkit-typescript/packages/next-js: dependencies: @@ -4357,7 +4360,7 @@ importers: version: 5.1.4(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.10)(jiti@2.6.1)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) ws: specifier: ^8.18.1 version: 8.19.0 @@ -4424,7 +4427,7 @@ importers: version: 5.9.3 vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) rivetkit-typescript/packages/workflow-engine: dependencies: @@ -4467,7 +4470,7 @@ importers: version: 5.9.3 vitest: specifier: ^3.1.1 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) scripts/publish: dependencies: @@ -4818,7 +4821,7 @@ importers: version: link:../../../rivetkit-typescript/packages/rivetkit vitest: specifier: ^3.0.9 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) zod: specifier: ^4.1.0 version: 4.1.13 @@ -7300,35 +7303,35 @@ packages: cpu: [x64] os: [win32] - '@inquirer/ansi@1.0.2': - resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} - engines: {node: '>=18'} + '@inquirer/ansi@2.0.5': + resolution: {integrity: sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} - '@inquirer/confirm@5.1.21': - resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} - engines: {node: '>=18'} + '@inquirer/confirm@6.0.12': + resolution: {integrity: sha512-h9FgGun3QwVYNj5TWIZZ+slii73bMoBFjPfVIGtnFuL4t8gBiNDV9PcSfIzkuxvgquJKt9nr1QzszpBzTbH8Og==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/core@10.3.2': - resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} - engines: {node: '>=18'} + '@inquirer/core@11.1.9': + resolution: {integrity: sha512-BDE4fG22uYh1bGSifcj7JSx119TVYNViMhMu85usp4Fswrzh6M0DV3yld64jA98uOAa2GSQ4Bg4bZRm2d2cwSg==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: '@types/node': optional: true - '@inquirer/figures@1.0.15': - resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} - engines: {node: '>=18'} + '@inquirer/figures@2.0.5': + resolution: {integrity: sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} - '@inquirer/type@3.0.10': - resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} - engines: {node: '>=18'} + '@inquirer/type@4.0.5': + resolution: {integrity: sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -7684,8 +7687,8 @@ packages: cpu: [x64] os: [win32] - '@mswjs/interceptors@0.41.2': - resolution: {integrity: sha512-7G0Uf0yK3f2bjElBLGHIQzgRgMESczOMyYVasq1XK8P5HaXtlW4eQhz9MBL+TQILZLaruq+ClGId+hH0w4jvWw==} + '@mswjs/interceptors@0.41.8': + resolution: {integrity: sha512-pRLMNKTSGRoLq+KnEB/7OY5vijw1XmcheAAOiv6pj7W1FG32kAGqj1C/RK/cqxRGr1Fh+zBi8sDur8kj3EQv6A==} engines: {node: '>=18'} '@napi-rs/cli@2.18.4': @@ -7771,6 +7774,9 @@ packages: '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} + '@open-draft/deferred-promise@3.0.0': + resolution: {integrity: sha512-XW375UK8/9SqUVNVa6M0yEy8+iTi4QN5VZ7aZuRFQmy76LRwI9wy5F4YIBU6T+eTe2/DNDo8tqu8RHlwLHM6RA==} + '@open-draft/logger@0.3.0': resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} @@ -10369,6 +10375,9 @@ packages: '@types/semver@7.7.1': resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + '@types/set-cookie-parser@2.4.10': + resolution: {integrity: sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==} + '@types/sql.js@1.4.9': resolution: {integrity: sha512-ep8b36RKHlgWPqjNG9ToUrPiwkhwh0AEzy883mO5Xnd+cL6VBH1EvSjBAAuxLUFF2Vn/moE3Me6v9E1Lo+48GQ==} @@ -10451,6 +10460,7 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + deprecated: Potential CWE-502 - Update to 1.3.1 or higher '@urql/core@5.2.0': resolution: {integrity: sha512-/n0ieD0mvvDnVAXEQgX/7qJiVcvYvNkOHeBvkwtylfjydar123caCXcl58PXFY11oU1oquJocVXHxLAbtv4x1A==} @@ -12937,9 +12947,18 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fast-string-truncated-width@3.0.3: + resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} + + fast-string-width@3.0.2: + resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} + fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fast-wrap-ansi@0.2.0: + resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==} + fast-xml-builder@1.1.4: resolution: {integrity: sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==} @@ -13366,8 +13385,8 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphql@16.12.0: - resolution: {integrity: sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==} + graphql@16.14.0: + resolution: {integrity: sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} h3@1.15.4: @@ -13486,8 +13505,8 @@ packages: header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} - headers-polyfill@4.0.3: - resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + headers-polyfill@5.0.1: + resolution: {integrity: sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA==} help-me@5.0.0: resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} @@ -14926,8 +14945,8 @@ packages: msgpackr@1.11.5: resolution: {integrity: sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==} - msw@2.12.10: - resolution: {integrity: sha512-G3VUymSE0/iegFnuipujpwyTM2GuZAKXNeerUSrG2+Eg391wW63xFs5ixWsK9MWzr1AGoSkYGmyAzNgbR3+urw==} + msw@2.14.4: + resolution: {integrity: sha512-HVPZJ9Rx4nDCWhjNQ57lKQGSE+0zDHw0xWE2IN2rLOUTLkagEBWNlvWuKYNwG2pQWq96TMd8NiSK/6vO1udnWQ==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -14939,9 +14958,9 @@ packages: muggle-string@0.3.1: resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} - mute-stream@2.0.0: - resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} - engines: {node: ^18.17.0 || >=20.5.0} + mute-stream@3.0.0: + resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} + engines: {node: ^20.17.0 || >=22.9.0} mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -16402,8 +16421,8 @@ packages: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} - rettime@0.10.1: - resolution: {integrity: sha512-uyDrIlUEH37cinabq0AX4QbgV4HbFZ/gqoiunWQ1UqBtRvTTytwhNYjE++pO/MjPTZL5KQCf2bEoJ/BJNVQ5Kw==} + rettime@0.11.11: + resolution: {integrity: sha512-ILJRqVWBCTlg9r42fFgwVZx1gnFAcQF8mRoMkbgQfIrjEDf9nbBFDFx00oloOa+Q869FUtaYDXZvEfnecQSCoQ==} reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} @@ -17138,8 +17157,8 @@ packages: resolution: {integrity: sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==} engines: {node: '>=14.16'} - tough-cookie@6.0.0: - resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==} + tough-cookie@6.0.1: + resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} engines: {node: '>=16'} tr46@0.0.3: @@ -17306,8 +17325,8 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - type-fest@5.4.4: - resolution: {integrity: sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==} + type-fest@5.6.0: + resolution: {integrity: sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==} engines: {node: '>=20'} type-is@1.6.18: @@ -18104,10 +18123,6 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -18276,10 +18291,6 @@ packages: resolution: {integrity: sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==} engines: {node: '>=18.19'} - yoctocolors-cjs@2.1.3: - resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} - engines: {node: '>=18'} - yoctocolors@2.1.2: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} @@ -18352,9 +18363,9 @@ packages: snapshots: - '@0no-co/graphql.web@1.2.0(graphql@16.12.0)': + '@0no-co/graphql.web@1.2.0(graphql@16.14.0)': optionalDependencies: - graphql: 16.12.0 + graphql: 16.14.0 '@adobe/css-tools@4.3.3': optional: true @@ -20360,9 +20371,9 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 - '@expo/cli@54.0.13(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(expo@54.0.18)(graphql@16.12.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))': + '@expo/cli@54.0.13(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(expo@54.0.18)(graphql@16.14.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))': dependencies: - '@0no-co/graphql.web': 1.2.0(graphql@16.12.0) + '@0no-co/graphql.web': 1.2.0(graphql@16.14.0) '@expo/code-signing-certificates': 0.0.5 '@expo/config': 12.0.13 '@expo/config-plugins': 54.0.4 @@ -20382,8 +20393,8 @@ snapshots: '@expo/ws-tunnel': 1.0.6 '@expo/xcpretty': 4.4.1 '@react-native/dev-middleware': 0.81.5 - '@urql/core': 5.2.0(graphql@16.12.0) - '@urql/exchange-retry': 1.3.2(@urql/core@5.2.0(graphql@16.12.0)) + '@urql/core': 5.2.0(graphql@16.14.0) + '@urql/exchange-retry': 1.3.2(@urql/core@5.2.0(graphql@16.14.0)) accepts: 1.3.8 arg: 5.0.2 better-opn: 3.0.2 @@ -20395,7 +20406,7 @@ snapshots: connect: 3.7.0 debug: 4.4.3 env-editor: 0.4.2 - expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.12.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) + expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.14.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) expo-server: 1.0.5 freeport-async: 2.0.0 getenv: 2.0.0 @@ -20631,7 +20642,7 @@ snapshots: postcss: 8.4.49 resolve-from: 5.0.0 optionalDependencies: - expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.12.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) + expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.14.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) transitivePeerDependencies: - bufferutil - supports-color @@ -20694,7 +20705,7 @@ snapshots: '@expo/json-file': 10.0.12 '@react-native/normalize-colors': 0.81.5 debug: 4.4.3 - expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.12.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) + expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.14.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) resolve-from: 5.0.0 semver: 7.7.4 xml2js: 0.6.0 @@ -21118,84 +21129,81 @@ snapshots: '@img/sharp-win32-x64@0.34.5': optional: true - '@inquirer/ansi@1.0.2': {} + '@inquirer/ansi@2.0.5': {} - '@inquirer/confirm@5.1.21(@types/node@20.19.13)': + '@inquirer/confirm@6.0.12(@types/node@20.19.13)': dependencies: - '@inquirer/core': 10.3.2(@types/node@20.19.13) - '@inquirer/type': 3.0.10(@types/node@20.19.13) + '@inquirer/core': 11.1.9(@types/node@20.19.13) + '@inquirer/type': 4.0.5(@types/node@20.19.13) optionalDependencies: '@types/node': 20.19.13 - '@inquirer/confirm@5.1.21(@types/node@22.19.10)': + '@inquirer/confirm@6.0.12(@types/node@22.19.10)': dependencies: - '@inquirer/core': 10.3.2(@types/node@22.19.10) - '@inquirer/type': 3.0.10(@types/node@22.19.10) + '@inquirer/core': 11.1.9(@types/node@22.19.10) + '@inquirer/type': 4.0.5(@types/node@22.19.10) optionalDependencies: '@types/node': 22.19.10 optional: true - '@inquirer/confirm@5.1.21(@types/node@22.19.15)': + '@inquirer/confirm@6.0.12(@types/node@22.19.15)': dependencies: - '@inquirer/core': 10.3.2(@types/node@22.19.15) - '@inquirer/type': 3.0.10(@types/node@22.19.15) + '@inquirer/core': 11.1.9(@types/node@22.19.15) + '@inquirer/type': 4.0.5(@types/node@22.19.15) optionalDependencies: '@types/node': 22.19.15 optional: true - '@inquirer/core@10.3.2(@types/node@20.19.13)': + '@inquirer/core@11.1.9(@types/node@20.19.13)': dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@20.19.13) + '@inquirer/ansi': 2.0.5 + '@inquirer/figures': 2.0.5 + '@inquirer/type': 4.0.5(@types/node@20.19.13) cli-width: 4.1.0 - mute-stream: 2.0.0 + fast-wrap-ansi: 0.2.0 + mute-stream: 3.0.0 signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.3 optionalDependencies: '@types/node': 20.19.13 - '@inquirer/core@10.3.2(@types/node@22.19.10)': + '@inquirer/core@11.1.9(@types/node@22.19.10)': dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@22.19.10) + '@inquirer/ansi': 2.0.5 + '@inquirer/figures': 2.0.5 + '@inquirer/type': 4.0.5(@types/node@22.19.10) cli-width: 4.1.0 - mute-stream: 2.0.0 + fast-wrap-ansi: 0.2.0 + mute-stream: 3.0.0 signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.3 optionalDependencies: '@types/node': 22.19.10 optional: true - '@inquirer/core@10.3.2(@types/node@22.19.15)': + '@inquirer/core@11.1.9(@types/node@22.19.15)': dependencies: - '@inquirer/ansi': 1.0.2 - '@inquirer/figures': 1.0.15 - '@inquirer/type': 3.0.10(@types/node@22.19.15) + '@inquirer/ansi': 2.0.5 + '@inquirer/figures': 2.0.5 + '@inquirer/type': 4.0.5(@types/node@22.19.15) cli-width: 4.1.0 - mute-stream: 2.0.0 + fast-wrap-ansi: 0.2.0 + mute-stream: 3.0.0 signal-exit: 4.1.0 - wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.3 optionalDependencies: '@types/node': 22.19.15 optional: true - '@inquirer/figures@1.0.15': {} + '@inquirer/figures@2.0.5': {} - '@inquirer/type@3.0.10(@types/node@20.19.13)': + '@inquirer/type@4.0.5(@types/node@20.19.13)': optionalDependencies: '@types/node': 20.19.13 - '@inquirer/type@3.0.10(@types/node@22.19.10)': + '@inquirer/type@4.0.5(@types/node@22.19.10)': optionalDependencies: '@types/node': 22.19.10 optional: true - '@inquirer/type@3.0.10(@types/node@22.19.15)': + '@inquirer/type@4.0.5(@types/node@22.19.15)': optionalDependencies: '@types/node': 22.19.15 optional: true @@ -21356,7 +21364,7 @@ snapshots: history: 5.3.0 koa: 2.16.3 lodash.merge: 4.6.2 - msw: 2.12.10(@types/node@20.19.13)(typescript@5.9.3) + msw: 2.14.4(@types/node@20.19.13)(typescript@5.9.3) open: 10.2.0 prism-react-renderer: 2.4.1(react@19.1.0) prop-types: 15.8.1 @@ -21879,7 +21887,7 @@ snapshots: react-simple-code-editor: 0.14.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) serve-handler: 6.1.6 tailwind-merge: 2.6.0 - tailwindcss-animate: 1.0.7(tailwindcss@3.4.18(tsx@4.21.0)(yaml@2.8.2)) + tailwindcss-animate: 1.0.7(tailwindcss@4.2.2) zod: 3.25.76 transitivePeerDependencies: - '@cfworker/json-schema' @@ -22003,7 +22011,7 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true - '@mswjs/interceptors@0.41.2': + '@mswjs/interceptors@0.41.8': dependencies: '@open-draft/deferred-promise': 2.2.0 '@open-draft/logger': 0.3.0 @@ -22060,6 +22068,8 @@ snapshots: '@open-draft/deferred-promise@2.2.0': {} + '@open-draft/deferred-promise@3.0.0': {} + '@open-draft/logger@0.3.0': dependencies: is-node-process: 1.2.0 @@ -25172,6 +25182,10 @@ snapshots: '@types/semver@7.7.1': {} + '@types/set-cookie-parser@2.4.10': + dependencies: + '@types/node': 22.19.15 + '@types/sql.js@1.4.9': dependencies: '@types/emscripten': 1.41.5 @@ -25270,16 +25284,16 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@urql/core@5.2.0(graphql@16.12.0)': + '@urql/core@5.2.0(graphql@16.14.0)': dependencies: - '@0no-co/graphql.web': 1.2.0(graphql@16.12.0) + '@0no-co/graphql.web': 1.2.0(graphql@16.14.0) wonka: 6.3.5 transitivePeerDependencies: - graphql - '@urql/exchange-retry@1.3.2(@urql/core@5.2.0(graphql@16.12.0))': + '@urql/exchange-retry@1.3.2(@urql/core@5.2.0(graphql@16.14.0))': dependencies: - '@urql/core': 5.2.0(graphql@16.12.0) + '@urql/core': 5.2.0(graphql@16.14.0) wonka: 6.3.5 '@vercel/oidc@3.1.0': {} @@ -25541,49 +25555,49 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.0.3 - '@vitest/mocker@2.1.9(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(vite@5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0))': + '@vitest/mocker@2.1.9(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(vite@5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0))': dependencies: '@vitest/spy': 2.1.9 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - msw: 2.12.10(@types/node@22.19.10)(typescript@5.9.3) + msw: 2.14.4(@types/node@22.19.10)(typescript@5.9.3) vite: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) - '@vitest/mocker@3.2.4(msw@2.12.10(@types/node@20.19.13)(typescript@5.9.3))(vite@5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0))': + '@vitest/mocker@3.2.4(msw@2.14.4(@types/node@20.19.13)(typescript@5.9.3))(vite@5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - msw: 2.12.10(@types/node@20.19.13)(typescript@5.9.3) + msw: 2.14.4(@types/node@20.19.13)(typescript@5.9.3) vite: 5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) - '@vitest/mocker@3.2.4(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(vite@5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0))': + '@vitest/mocker@3.2.4(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(vite@5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - msw: 2.12.10(@types/node@22.19.10)(typescript@5.9.3) + msw: 2.14.4(@types/node@22.19.10)(typescript@5.9.3) vite: 5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) - '@vitest/mocker@3.2.4(msw@2.12.10(@types/node@22.19.15)(typescript@5.9.3))(vite@5.4.21(@types/node@22.19.15)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0))': + '@vitest/mocker@3.2.4(msw@2.14.4(@types/node@22.19.15)(typescript@5.9.3))(vite@5.4.21(@types/node@22.19.15)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - msw: 2.12.10(@types/node@22.19.15)(typescript@5.9.3) + msw: 2.14.4(@types/node@22.19.15)(typescript@5.9.3) vite: 5.4.21(@types/node@22.19.15)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) - '@vitest/mocker@4.0.18(msw@2.12.10(@types/node@20.19.13)(typescript@5.9.3))(vite@6.4.1(@types/node@20.19.13)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.0.18(msw@2.14.4(@types/node@20.19.13)(typescript@5.9.3))(vite@6.4.1(@types/node@20.19.13)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - msw: 2.12.10(@types/node@20.19.13)(typescript@5.9.3) + msw: 2.14.4(@types/node@20.19.13)(typescript@5.9.3) vite: 6.4.1(@types/node@20.19.13)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@2.1.9': @@ -26374,7 +26388,7 @@ snapshots: resolve-from: 5.0.0 optionalDependencies: '@babel/runtime': 7.29.2 - expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.12.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) + expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.14.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) transitivePeerDependencies: - '@babel/core' - supports-color @@ -26405,7 +26419,7 @@ snapshots: bcryptjs@2.4.3: {} - better-auth@1.5.6(@cloudflare/workers-types@4.20251014.0)(@opentelemetry/api@1.9.0)(better-sqlite3@12.8.0)(drizzle-kit@0.31.5)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20251014.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(@types/sql.js@1.4.9)(better-sqlite3@12.8.0)(bun-types@1.3.11)(kysely@0.28.15)(pg@8.17.2)(sql.js@1.13.0))(next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.57.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.93.2))(pg@8.17.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@20.19.13)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@20.19.13)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)): + better-auth@1.5.6(@cloudflare/workers-types@4.20251014.0)(@opentelemetry/api@1.9.0)(better-sqlite3@12.8.0)(drizzle-kit@0.31.5)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20251014.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(@types/sql.js@1.4.9)(better-sqlite3@12.8.0)(bun-types@1.3.11)(kysely@0.28.15)(pg@8.17.2)(sql.js@1.13.0))(next@16.1.1(@babel/core@7.29.0)(@opentelemetry/api@1.9.0)(@playwright/test@1.57.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(sass@1.93.2))(pg@8.17.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@20.19.13)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@20.19.13)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)): dependencies: '@better-auth/core': 1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20251014.0)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@3.25.76))(jose@6.1.3)(kysely@0.28.15)(nanostores@1.2.0) '@better-auth/drizzle-adapter': 1.5.6(@better-auth/core@1.5.6(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20251014.0)(@opentelemetry/api@1.9.0)(better-call@1.3.2(zod@3.25.76))(jose@6.1.3)(kysely@0.28.15)(nanostores@1.2.0))(@better-auth/utils@0.3.1)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20251014.0)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(@types/sql.js@1.4.9)(better-sqlite3@12.8.0)(bun-types@1.3.11)(kysely@0.28.15)(pg@8.17.2)(sql.js@1.13.0)) @@ -26432,7 +26446,7 @@ snapshots: pg: 8.17.2 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@20.19.13)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@20.19.13)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) + vitest: 4.0.18(@opentelemetry/api@1.9.0)(@types/node@20.19.13)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@20.19.13)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@cloudflare/workers-types' - '@opentelemetry/api' @@ -28125,7 +28139,7 @@ snapshots: expo-asset@12.0.12(expo@54.0.18)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0): dependencies: '@expo/image-utils': 0.8.12 - expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.12.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) + expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.14.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) expo-constants: 18.0.13(expo@54.0.18)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)) react: 19.1.0 react-native: 0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0) @@ -28136,7 +28150,7 @@ snapshots: dependencies: '@expo/config': 10.0.11 '@expo/env': 0.4.2 - expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.12.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) + expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.14.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) react-native: 0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0) transitivePeerDependencies: - supports-color @@ -28145,26 +28159,26 @@ snapshots: dependencies: '@expo/config': 12.0.13 '@expo/env': 2.0.11 - expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.12.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) + expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.14.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) react-native: 0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0) transitivePeerDependencies: - supports-color expo-file-system@19.0.21(expo@54.0.18)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)): dependencies: - expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.12.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) + expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.14.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) react-native: 0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0) expo-font@14.0.11(expo@54.0.18)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0): dependencies: - expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.12.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) + expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.14.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) fontfaceobserver: 2.3.0 react: 19.1.0 react-native: 0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0) expo-keep-awake@15.0.8(expo@54.0.18)(react@19.1.0): dependencies: - expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.12.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) + expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.14.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) react: 19.1.0 expo-linking@7.0.5(expo@54.0.18)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0): @@ -28201,7 +28215,7 @@ snapshots: '@react-navigation/native': 7.1.18(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) '@react-navigation/native-stack': 7.3.28(@react-navigation/native@7.1.18(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native-screens@4.17.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0))(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) client-only: 0.0.1 - expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.12.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) + expo: 54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.14.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) expo-constants: 18.0.13(expo@54.0.18)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)) expo-linking: 7.0.5(expo@54.0.18)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) react-helmet-async: 1.3.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -28221,10 +28235,10 @@ snapshots: expo-server@1.0.5: {} - expo@54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.12.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0): + expo@54.0.18(@babel/core@7.29.0)(@expo/metro-runtime@4.0.1(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)))(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(graphql@16.14.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0): dependencies: '@babel/runtime': 7.29.2 - '@expo/cli': 54.0.13(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(expo@54.0.18)(graphql@16.12.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)) + '@expo/cli': 54.0.13(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(expo-router@4.0.21)(expo@54.0.18)(graphql@16.14.0)(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0)) '@expo/config': 12.0.13 '@expo/config-plugins': 54.0.4 '@expo/devtools': 0.1.7(react-native@0.82.1(@babel/core@7.29.0)(@types/react@19.2.13)(react@19.1.0))(react@19.1.0) @@ -28334,8 +28348,18 @@ snapshots: fast-safe-stringify@2.1.1: {} + fast-string-truncated-width@3.0.3: {} + + fast-string-width@3.0.2: + dependencies: + fast-string-truncated-width: 3.0.3 + fast-uri@3.1.0: {} + fast-wrap-ansi@0.2.0: + dependencies: + fast-string-width: 3.0.2 + fast-xml-builder@1.1.4: dependencies: path-expression-matcher: 1.2.1 @@ -28806,7 +28830,7 @@ snapshots: graceful-fs@4.2.11: {} - graphql@16.12.0: {} + graphql@16.14.0: {} h3@1.15.4: dependencies: @@ -29078,7 +29102,10 @@ snapshots: capital-case: 1.0.4 tslib: 2.8.1 - headers-polyfill@4.0.3: {} + headers-polyfill@5.0.1: + dependencies: + '@types/set-cookie-parser': 2.4.10 + set-cookie-parser: 3.1.0 help-me@5.0.0: {} @@ -30960,24 +30987,24 @@ snapshots: optionalDependencies: msgpackr-extract: 3.0.3 - msw@2.12.10(@types/node@20.19.13)(typescript@5.9.3): + msw@2.14.4(@types/node@20.19.13)(typescript@5.9.3): dependencies: - '@inquirer/confirm': 5.1.21(@types/node@20.19.13) - '@mswjs/interceptors': 0.41.2 - '@open-draft/deferred-promise': 2.2.0 + '@inquirer/confirm': 6.0.12(@types/node@20.19.13) + '@mswjs/interceptors': 0.41.8 + '@open-draft/deferred-promise': 3.0.0 '@types/statuses': 2.0.6 cookie: 1.1.1 - graphql: 16.12.0 - headers-polyfill: 4.0.3 + graphql: 16.14.0 + headers-polyfill: 5.0.1 is-node-process: 1.2.0 outvariant: 1.4.3 path-to-regexp: 6.3.0 picocolors: 1.1.1 - rettime: 0.10.1 + rettime: 0.11.11 statuses: 2.0.2 strict-event-emitter: 0.5.1 - tough-cookie: 6.0.0 - type-fest: 5.4.4 + tough-cookie: 6.0.1 + type-fest: 5.6.0 until-async: 3.0.2 yargs: 17.7.2 optionalDependencies: @@ -30985,24 +31012,24 @@ snapshots: transitivePeerDependencies: - '@types/node' - msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3): + msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3): dependencies: - '@inquirer/confirm': 5.1.21(@types/node@22.19.10) - '@mswjs/interceptors': 0.41.2 - '@open-draft/deferred-promise': 2.2.0 + '@inquirer/confirm': 6.0.12(@types/node@22.19.10) + '@mswjs/interceptors': 0.41.8 + '@open-draft/deferred-promise': 3.0.0 '@types/statuses': 2.0.6 cookie: 1.1.1 - graphql: 16.12.0 - headers-polyfill: 4.0.3 + graphql: 16.14.0 + headers-polyfill: 5.0.1 is-node-process: 1.2.0 outvariant: 1.4.3 path-to-regexp: 6.3.0 picocolors: 1.1.1 - rettime: 0.10.1 + rettime: 0.11.11 statuses: 2.0.2 strict-event-emitter: 0.5.1 - tough-cookie: 6.0.0 - type-fest: 5.4.4 + tough-cookie: 6.0.1 + type-fest: 5.6.0 until-async: 3.0.2 yargs: 17.7.2 optionalDependencies: @@ -31011,24 +31038,24 @@ snapshots: - '@types/node' optional: true - msw@2.12.10(@types/node@22.19.15)(typescript@5.9.3): + msw@2.14.4(@types/node@22.19.15)(typescript@5.9.3): dependencies: - '@inquirer/confirm': 5.1.21(@types/node@22.19.15) - '@mswjs/interceptors': 0.41.2 - '@open-draft/deferred-promise': 2.2.0 + '@inquirer/confirm': 6.0.12(@types/node@22.19.15) + '@mswjs/interceptors': 0.41.8 + '@open-draft/deferred-promise': 3.0.0 '@types/statuses': 2.0.6 cookie: 1.1.1 - graphql: 16.12.0 - headers-polyfill: 4.0.3 + graphql: 16.14.0 + headers-polyfill: 5.0.1 is-node-process: 1.2.0 outvariant: 1.4.3 path-to-regexp: 6.3.0 picocolors: 1.1.1 - rettime: 0.10.1 + rettime: 0.11.11 statuses: 2.0.2 strict-event-emitter: 0.5.1 - tough-cookie: 6.0.0 - type-fest: 5.4.4 + tough-cookie: 6.0.1 + type-fest: 5.6.0 until-async: 3.0.2 yargs: 17.7.2 optionalDependencies: @@ -31039,7 +31066,7 @@ snapshots: muggle-string@0.3.1: {} - mute-stream@2.0.0: {} + mute-stream@3.0.0: {} mz@2.7.0: dependencies: @@ -32671,7 +32698,7 @@ snapshots: retry@0.13.1: {} - rettime@0.10.1: {} + rettime@0.11.11: {} reusify@1.1.0: {} @@ -33556,7 +33583,7 @@ snapshots: '@tokenizer/token': 0.3.0 ieee754: 1.2.1 - tough-cookie@6.0.0: + tough-cookie@6.0.1: dependencies: tldts: 7.0.23 @@ -33842,7 +33869,7 @@ snapshots: type-fest@4.41.0: {} - type-fest@5.4.4: + type-fest@5.6.0: dependencies: tagged-tag: 1.0.0 @@ -34657,10 +34684,10 @@ snapshots: - supports-color - terser - vitest@2.1.9(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0): + vitest@2.1.9(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0): dependencies: '@vitest/expect': 2.1.9 - '@vitest/mocker': 2.1.9(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(vite@5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)) + '@vitest/mocker': 2.1.9(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(vite@5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)) '@vitest/pretty-format': 2.1.9 '@vitest/runner': 2.1.9 '@vitest/snapshot': 2.1.9 @@ -34692,11 +34719,11 @@ snapshots: - supports-color - terser - vitest@3.2.4(@types/debug@4.1.12)(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@20.19.13)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@20.19.13)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(msw@2.12.10(@types/node@20.19.13)(typescript@5.9.3))(vite@5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)) + '@vitest/mocker': 3.2.4(msw@2.14.4(@types/node@20.19.13)(typescript@5.9.3))(vite@5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -34731,11 +34758,11 @@ snapshots: - supports-color - terser - vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(msw@2.12.10(@types/node@22.19.10)(typescript@5.9.3))(vite@5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)) + '@vitest/mocker': 3.2.4(msw@2.14.4(@types/node@22.19.10)(typescript@5.9.3))(vite@5.4.21(@types/node@22.19.10)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -34770,11 +34797,11 @@ snapshots: - supports-color - terser - vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.15)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@22.19.15)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.15)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@22.19.15)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(msw@2.12.10(@types/node@22.19.15)(typescript@5.9.3))(vite@5.4.21(@types/node@22.19.15)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)) + '@vitest/mocker': 3.2.4(msw@2.14.4(@types/node@22.19.15)(typescript@5.9.3))(vite@5.4.21(@types/node@22.19.15)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -34809,10 +34836,10 @@ snapshots: - supports-color - terser - vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@20.19.13)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.32.0)(msw@2.12.10(@types/node@20.19.13)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.0.18(@opentelemetry/api@1.9.0)(@types/node@20.19.13)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.32.0)(msw@2.14.4(@types/node@20.19.13)(typescript@5.9.3))(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(msw@2.12.10(@types/node@20.19.13)(typescript@5.9.3))(vite@6.4.1(@types/node@20.19.13)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.0.18(msw@2.14.4(@types/node@20.19.13)(typescript@5.9.3))(vite@6.4.1(@types/node@20.19.13)(jiti@1.21.7)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.0.18 '@vitest/runner': 4.0.18 '@vitest/snapshot': 4.0.18 @@ -35015,12 +35042,6 @@ snapshots: word-wrap@1.2.5: {} - wrap-ansi@6.2.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -35155,8 +35176,6 @@ snapshots: dependencies: yoctocolors: 2.1.2 - yoctocolors-cjs@2.1.3: {} - yoctocolors@2.1.2: {} z-schema@5.0.5: