diff --git a/AGENTS.md b/AGENTS.md index cebc1835..d31c2acc 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -93,7 +93,7 @@ The kit is the integration hub. When adding to it, the question is "does this he ## Structured Diagnostics (Error Codes) -All node-side warnings and errors use structured diagnostics via [`logs-sdk`](https://github.com/vercel-labs/logs-sdk). Never use raw `console.warn`, `console.error`, or `throw new Error` with ad-hoc messages in node-side code — always define a coded diagnostic. +All node-side warnings and errors use structured diagnostics via [`nostics`](https://github.com/vercel-labs/nostics). Never use raw `console.warn`, `console.error`, or `throw new Error` with ad-hoc messages in node-side code — always define a coded diagnostic. ### Code prefixes @@ -115,23 +115,21 @@ Codes are sequential 4-digit numbers per prefix (e.g. `DTK0033`, `RDDT0003`). Ch ```txt // diagnostics.ts DTK0033: { - message: (p: { name: string }) => `Something went wrong with "${p.name}"`, - hint: 'Optional hint for the user.', - level: 'warn', // defaults to 'error' if omitted + why: (p: { name: string }) => `Something went wrong with "${p.name}"`, + fix: 'Optional remediation hint for the user.', }, ``` -2. **Use the logger** at the call site: +2. **Emit the diagnostic** at the call site: ```ts - import { logger } from './diagnostics' + import { diagnostics } from './diagnostics' // For thrown errors — always prefix with `throw` for TypeScript control flow: - throw logger.DTK0033({ name }).throw() + throw diagnostics.DTK0033.throw({ name }) - // For logged warnings/errors (not thrown): - logger.DTK0033({ name }).log() // uses definition level - logger.DTK0033({ name }).warn() // override to warn - logger.DTK0033({ name }, { cause: error }).log() // attach cause + // For reported (non-thrown) diagnostics: + diagnostics.DTK0033.report({ name }) + diagnostics.DTK0033.report({ name, cause: error }) // attach cause via params ``` 3. **Create a docs page** at `docs/errors/DTK0033.md`: diff --git a/devframe b/devframe index 2458e6e5..6f75d5c6 160000 --- a/devframe +++ b/devframe @@ -1 +1 @@ -Subproject commit 2458e6e5fe79bff0e6a9736fe63fc4059b2e68e5 +Subproject commit 6f75d5c65bdf9690a53402b5301650c47d960584 diff --git a/docs/errors/index.md b/docs/errors/index.md index 274b4712..42ec21d3 100644 --- a/docs/errors/index.md +++ b/docs/errors/index.md @@ -11,7 +11,7 @@ Vite DevTools uses structured diagnostics to surface actionable warnings and err - Codes follow the pattern **prefix + 4-digit number** (e.g., `DF0001`, `DTK0008`, `RDDT0002`). - Each prefix maps to a package: `DTK` for `@vitejs/devtools` (Vite-specific pieces), `RDDT` for `@vitejs/devtools-rolldown`. The framework-neutral `devframe` package documents its own `DF`-prefixed codes at the [Devframe docs site](https://devfra.me/errors/). - Every error page includes the cause, recommended fix, and a reference to the source file that emits it. -- The diagnostics system is powered by [`logs-sdk`](https://github.com/vercel-labs/logs-sdk), which provides structured logging with docs URLs, ANSI-formatted console output, and level-based filtering. +- The diagnostics system is powered by [`nostics`](https://github.com/vercel-labs/nostics), which provides structured diagnostic codes with docs URLs and ANSI-formatted console output. ## DevTools Kit (DTK) diff --git a/docs/kit/diagnostics.md b/docs/kit/diagnostics.md index e3e68c11..ee3693b7 100644 --- a/docs/kit/diagnostics.md +++ b/docs/kit/diagnostics.md @@ -1,6 +1,6 @@ # Structured Diagnostics -`ctx.diagnostics` is a thin layer over [`logs-sdk`](https://github.com/vercel-labs/logs-sdk) that lets DevTools plugins register coded errors and warnings into a shared logger without depending on `logs-sdk` directly. Use it for author-defined coded diagnostics — errors, warnings, deprecations — that carry a stable code, a documentation URL, and a structured payload. For free-form runtime output that should appear in the DevTools UI, use [`ctx.messages`](./messages). +`ctx.diagnostics` is a thin layer over [`nostics`](https://github.com/vercel-labs/nostics) that lets DevTools plugins register coded errors and warnings into a shared registry without depending on `nostics` directly. Use it for author-defined coded diagnostics — errors, warnings, deprecations — that carry a stable code, a documentation URL, and a structured payload. For free-form runtime output that should appear in the DevTools UI, use [`ctx.messages`](./messages). | Surface | Purpose | Example | |---------|---------|---------| @@ -11,17 +11,20 @@ ```ts interface DevToolsDiagnosticsHost { - /** Combined logs-sdk Logger across all registered diagnostics. */ - readonly logger: Logger + /** + * Proxy-backed lookup of every registered code by name. Each entry is a + * `nostics` handle with `.report()` and `.throw()` methods. + */ + readonly logger: Record /** Register additional diagnostic definitions. */ - register: (definitions: DiagnosticsResult) => void + register: (definitions: Record) => void - /** Re-export of logs-sdk's `defineDiagnostics`. */ + /** + * Mirror of `nostics`'s `defineDiagnostics`, pre-wired with the host's + * ANSI console reporter — plugins typically omit `reporters`. + */ defineDiagnostics: typeof defineDiagnostics - - /** Re-export of logs-sdk's `createLogger`. */ - createLogger: typeof createLogger } ``` @@ -41,20 +44,19 @@ export function MyPlugin(): PluginWithDevTools { docsBase: 'https://example.com/errors', codes: { MYP0001: { - message: (p: { name: string }) => `Plugin "${p.name}" is not configured`, - hint: 'Add the plugin to your `vite.config.ts` and pass an options object.', + why: (p: { name: string }) => `Plugin "${p.name}" is not configured`, + fix: 'Add the plugin to your `vite.config.ts` and pass an options object.', }, MYP0002: { - message: 'Cache directory missing — running cold.', - level: 'warn', + why: 'Cache directory missing — running cold.', }, }, }) ctx.diagnostics.register(diagnostics) - // Now you can emit codes through the shared logger: - ctx.diagnostics.logger.MYP0002().log() + // Emit codes through the shared lookup: + ctx.diagnostics.logger.MYP0002.report() }, }, } @@ -74,68 +76,49 @@ Prefixes used by the in-tree packages: | `RDDT` | `@vitejs/devtools-rolldown` | | `VDT` | `@vitejs/devtools-vite` (reserved) | -Each definition supports `message` (string or function), optional `hint`, optional `level` (`'error'` / `'warn'` / `'suggestion'` / `'deprecation'` — defaults to `'error'`), and a `docsBase` for generating documentation URLs. +Each definition supports `why` (string or function returning a string) and an optional `fix` (string or function). A `docsBase` on the definition group auto-attaches a per-code URL to every emitted diagnostic. ## Emit a diagnostic -Each registered code becomes a callable factory on `ctx.diagnostics.logger`. The factory returns an object with `.throw()`, `.warn()`, `.error()`, `.log()`, and `.format()`. +Each registered code is reachable as a property on `ctx.diagnostics.logger`. Every handle exposes `.throw(params)` and `.report(params)`. ```ts // Throw — control flow stops here -throw ctx.diagnostics.logger.MYP0001({ name: 'foo' }).throw() - -// Log without throwing -ctx.diagnostics.logger.MYP0002().log() +throw ctx.diagnostics.logger.MYP0001.throw({ name: 'foo' }) -// Override level per call -ctx.diagnostics.logger.MYP0002().warn() +// Report without throwing (goes through the host's reporter) +ctx.diagnostics.logger.MYP0002.report() -// Attach a `cause` -ctx.diagnostics.logger.MYP0001({ name: 'foo' }, { cause: error }).log() +// Attach a `cause` via the params object +ctx.diagnostics.logger.MYP0001.report({ name: 'foo', cause: error }) ``` `.throw()` is typed `never`. Prefix the call with `throw` so TypeScript narrows control flow correctly: ```ts -throw ctx.diagnostics.logger.MYP0001({ name }).throw() +throw ctx.diagnostics.logger.MYP0001.throw({ name }) ``` -## Typed logger reference +## Typed handle reference -`ctx.diagnostics.logger` is loosely typed — it covers an unbounded set of registered codes, beyond what TypeScript can narrow. For autocompletion on your plugin's specific codes, keep a typed reference returned from `createLogger`: +`ctx.diagnostics.logger` is a loosely typed proxy — it covers an unbounded set of registered codes, beyond what TypeScript can narrow. For autocompletion on your plugin's specific codes, keep a reference to the typed handle returned by `defineDiagnostics()`: ```ts const myDiagnostics = ctx.diagnostics.defineDiagnostics({ docsBase: 'https://example.com/errors', codes: { - MYP0001: { message: (p: { name: string }) => `…${p.name}` }, + MYP0001: { why: (p: { name: string }) => `…${p.name}` }, }, }) -// Register so the shared logger can also see it +// Register so the shared lookup can also see it ctx.diagnostics.register(myDiagnostics) -// Keep a typed reference for your own emit sites -const logger = ctx.diagnostics.createLogger({ diagnostics: [myDiagnostics] }) -logger.MYP0001({ name: 'foo' }).warn() -``` - -Both loggers share the formatter and reporter defaults set by the host (ANSI console output). - -## Don't cache the combined logger - -`ctx.diagnostics.logger` is a getter — it returns the freshest combined logger, rebuilt each time `register()` is called. Don't cache it across registrations: - -```ts -// ❌ Stale after a later register() call -const log = ctx.diagnostics.logger -log.MYP0001({ name: 'foo' }).log() - -// ✅ Always fresh -ctx.diagnostics.logger.MYP0001({ name: 'foo' }).log() +// Use the typed handle directly at emit sites +myDiagnostics.MYP0001.report({ name: 'foo' }) ``` -For a stable reference, use the typed `createLogger` form above. +Both paths share the formatter and reporter defaults set by the host (ANSI console output). ## Document your codes diff --git a/package.json b/package.json index 3be6e9b0..0d1f3d51 100644 --- a/package.json +++ b/package.json @@ -61,9 +61,9 @@ "chokidar": "catalog:devtools", "esbuild": "catalog:build", "eslint": "catalog:devtools", - "logs-sdk": "catalog:deps", "magic-string": "catalog:build", "nano-staged": "catalog:devtools", + "nostics": "catalog:deps", "nuxt": "catalog:build", "p-limit": "catalog:deps", "pathe": "catalog:deps", diff --git a/packages/core/package.json b/packages/core/package.json index 857174c0..5b715762 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -62,8 +62,8 @@ "cac": "catalog:deps", "devframe": "catalog:deps", "h3": "catalog:deps", - "logs-sdk": "catalog:deps", "mlly": "catalog:deps", + "nostics": "catalog:deps", "obug": "catalog:deps", "pathe": "catalog:deps", "perfect-debounce": "catalog:deps", diff --git a/packages/core/src/node/cli-commands.ts b/packages/core/src/node/cli-commands.ts index a2adc5af..fa51f285 100644 --- a/packages/core/src/node/cli-commands.ts +++ b/packages/core/src/node/cli-commands.ts @@ -8,7 +8,7 @@ import { colors as c } from 'devframe/utils/colors' import { open } from 'devframe/utils/open' import { resolve } from 'pathe' import { MARK_NODE } from './constants' -import { logger } from './diagnostics' +import { diagnostics } from './diagnostics' export interface StartOptions { root?: string @@ -88,5 +88,5 @@ export async function build(options: BuildOptions) { outDir, }) - logger.DTK0010().log() + diagnostics.DTK0010.report() } diff --git a/packages/core/src/node/context.ts b/packages/core/src/node/context.ts index c6b4e421..f28f1ed1 100644 --- a/packages/core/src/node/context.ts +++ b/packages/core/src/node/context.ts @@ -4,7 +4,7 @@ import type { ResolvedConfig, ViteDevServer } from 'vite' import { createKitContext, createViteDevToolsHost } from '@vitejs/devtools-kit/node' import { isObject } from 'devframe/node' import { createDebug } from 'obug' -import { diagnostics, logger } from './diagnostics' +import { diagnostics } from './diagnostics' import { builtinRpcDeclarations } from './rpc' const debugSetup = createDebug('vite:devtools:context:setup') @@ -78,7 +78,7 @@ export async function createDevToolsContext( await plugin.devtools?.setup?.(context) } catch (error) { - throw logger.DTK0014({ name: plugin.name }, { cause: error }).throw() + throw diagnostics.DTK0014.throw({ name: plugin.name, cause: error }) } } diff --git a/packages/core/src/node/diagnostics.ts b/packages/core/src/node/diagnostics.ts index 7045f721..72979117 100644 --- a/packages/core/src/node/diagnostics.ts +++ b/packages/core/src/node/diagnostics.ts @@ -1,53 +1,44 @@ -import { colors as c } from 'devframe/utils/colors' -import { consoleReporter, createLogger, defineDiagnostics } from 'logs-sdk' -import { ansiFormatter } from 'logs-sdk/formatters/ansi' +import { defineDiagnostics, reporterLog } from 'nostics' export const diagnostics = defineDiagnostics({ docsBase: 'https://devtools.vite.dev/errors', + reporters: [reporterLog], codes: { DTK0008: { - message: 'Client authentication is disabled. Any browser can connect to the devtools and access your server and filesystem.', - level: 'warn', + why: 'Client authentication is disabled. Any browser can connect to the devtools and access your server and filesystem.', }, DTK0010: { - message: 'Static build is still experimental and not yet complete. Generated output may be missing features and can change without notice.', - level: 'warn', + why: 'Static build is still experimental and not yet complete. Generated output may be missing features and can change without notice.', }, DTK0011: { - message: (p: { name: string }) => `RPC error on executing "${p.name}"`, + why: (p: { name: string }) => `RPC error on executing "${p.name}"`, }, DTK0012: { - message: 'RPC error on executing rpc', + why: 'RPC error on executing rpc', }, DTK0013: { - message: (p: { name: string, clientId: string }) => `Unauthorized access to method ${JSON.stringify(p.name)} from client [${p.clientId}]`, + why: (p: { name: string, clientId: string }) => `Unauthorized access to method ${JSON.stringify(p.name)} from client [${p.clientId}]`, }, DTK0014: { - message: (p: { name: string }) => `Error setting up plugin ${p.name}`, + why: (p: { name: string }) => `Error setting up plugin ${p.name}`, }, DTK0023: { - message: 'viteServer is required in dev mode', + why: 'viteServer is required in dev mode', }, DTK0028: { - message: 'Path is outside the workspace root', + why: 'Path is outside the workspace root', }, DTK0029: { - message: 'Path is outside the workspace root', + why: 'Path is outside the workspace root', }, DTK0030: { - message: (p: { id: string }) => `Dock entry with id "${p.id}" not found`, + why: (p: { id: string }) => `Dock entry with id "${p.id}" not found`, }, DTK0031: { - message: (p: { id: string }) => `Dock entry with id "${p.id}" is not a launcher`, + why: (p: { id: string }) => `Dock entry with id "${p.id}" is not a launcher`, }, DTK0032: { - message: (p: { id: string }) => `Error launching dock entry "${p.id}"`, + why: (p: { id: string }) => `Error launching dock entry "${p.id}"`, }, }, }) - -export const logger = createLogger({ - diagnostics: [diagnostics], - formatter: ansiFormatter(c), - reporters: consoleReporter, -}) diff --git a/packages/core/src/node/rpc/internal/docks-on-launch.ts b/packages/core/src/node/rpc/internal/docks-on-launch.ts index 3376d03a..d4df3538 100644 --- a/packages/core/src/node/rpc/internal/docks-on-launch.ts +++ b/packages/core/src/node/rpc/internal/docks-on-launch.ts @@ -1,5 +1,5 @@ import { defineRpcFunction } from '@vitejs/devtools-kit' -import { logger } from '../../diagnostics' +import { diagnostics } from '../../diagnostics' export const docksOnLaunch = defineRpcFunction({ name: 'devtoolskit:internal:docks:on-launch', @@ -14,10 +14,10 @@ export const docksOnLaunch = defineRpcFunction({ const entry = context.docks.values().find(entry => entry.id === entryId) if (!entry) { - throw logger.DTK0030({ id: entryId }).throw() + throw diagnostics.DTK0030.throw({ id: entryId }) } if (entry.type !== 'launcher') { - throw logger.DTK0031({ id: entryId }).throw() + throw diagnostics.DTK0031.throw({ id: entryId }) } try { context.docks.update({ @@ -43,7 +43,7 @@ export const docksOnLaunch = defineRpcFunction({ return result } catch (error) { - logger.DTK0032({ id: entryId }, { cause: error }).log() + diagnostics.DTK0032.report({ id: entryId, cause: error }) context.docks.update({ ...entry, launcher: { diff --git a/packages/core/src/node/rpc/public/open-in-editor.ts b/packages/core/src/node/rpc/public/open-in-editor.ts index dd2fd028..d728f785 100644 --- a/packages/core/src/node/rpc/public/open-in-editor.ts +++ b/packages/core/src/node/rpc/public/open-in-editor.ts @@ -1,7 +1,7 @@ import { relative, resolve } from 'node:path' import { defineRpcFunction } from '@vitejs/devtools-kit' import { launchEditor } from 'devframe/utils/launch-editor' -import { logger } from '../../diagnostics' +import { diagnostics } from '../../diagnostics' export const openInEditor = defineRpcFunction({ name: 'vite:core:open-in-editor', @@ -15,7 +15,7 @@ export const openInEditor = defineRpcFunction({ // Prevent escaping the workspace root if (rel.startsWith('..') || rel.includes('\0')) { - throw logger.DTK0028().throw() + throw diagnostics.DTK0028.throw() } launchEditor(resolved) diff --git a/packages/core/src/node/rpc/public/open-in-finder.ts b/packages/core/src/node/rpc/public/open-in-finder.ts index 4eb19b09..7ad4ce91 100644 --- a/packages/core/src/node/rpc/public/open-in-finder.ts +++ b/packages/core/src/node/rpc/public/open-in-finder.ts @@ -1,7 +1,7 @@ import { relative, resolve } from 'node:path' import { defineRpcFunction } from '@vitejs/devtools-kit' import { open } from 'devframe/utils/open' -import { logger } from '../../diagnostics' +import { diagnostics } from '../../diagnostics' export const openInFinder = defineRpcFunction({ name: 'vite:core:open-in-finder', @@ -15,7 +15,7 @@ export const openInFinder = defineRpcFunction({ // Ensure the path stays within workspace root if (rel.startsWith('..') || rel.includes('\0')) { - throw logger.DTK0029().throw() + throw diagnostics.DTK0029.throw() } await open(resolved) diff --git a/packages/core/src/node/ws.ts b/packages/core/src/node/ws.ts index f52ee145..43ee4563 100644 --- a/packages/core/src/node/ws.ts +++ b/packages/core/src/node/ws.ts @@ -11,7 +11,7 @@ import { colors as c } from 'devframe/utils/colors' import { getPort } from 'get-port-please' import { createDebug } from 'obug' import { MARK_INFO } from './constants' -import { logger } from './diagnostics' +import { diagnostics } from './diagnostics' const debugInvoked = createDebug('vite:devtools:rpc:invoked') @@ -50,7 +50,7 @@ export async function createWsServer(options: CreateWsServerOptions) { const isClientAuthDisabled = context.mode === 'build' || context.viteConfig.devtools?.config?.clientAuth === false || process.env.VITE_DEVTOOLS_DISABLE_CLIENT_AUTH === 'true' if (isClientAuthDisabled) { - logger.DTK0008().log() + diagnostics.DTK0008.report() } contextInternal.wsEndpoint = { @@ -74,10 +74,10 @@ export async function createWsServer(options: CreateWsServerOptions) { { rpcOptions: { onFunctionError(error, name) { - logger.DTK0011({ name }, { cause: error }).log() + diagnostics.DTK0011.report({ name, cause: error }) }, onGeneralError(error) { - logger.DTK0012({ cause: error }).log() + diagnostics.DTK0012.report({ cause: error }) }, resolver(name, fn) { // eslint-disable-next-line ts/no-this-alias @@ -86,7 +86,7 @@ export async function createWsServer(options: CreateWsServerOptions) { // Block unauthorized access to non-anonymous methods if (!name.startsWith(ANONYMOUS_SCOPE) && !rpc.$meta.isTrusted) { return () => { - throw logger.DTK0013({ name, clientId: rpc.$meta.id }).throw() + throw diagnostics.DTK0013.throw({ name, clientId: rpc.$meta.id }) } } diff --git a/packages/kit/package.json b/packages/kit/package.json index 74a505ae..56c594d8 100644 --- a/packages/kit/package.json +++ b/packages/kit/package.json @@ -46,8 +46,8 @@ "dependencies": { "birpc": "catalog:deps", "devframe": "catalog:deps", - "logs-sdk": "catalog:deps", "mlly": "catalog:deps", + "nostics": "catalog:deps", "pathe": "catalog:deps", "perfect-debounce": "catalog:deps", "tinyexec": "catalog:deps" diff --git a/packages/kit/src/node/diagnostics.ts b/packages/kit/src/node/diagnostics.ts index 4631cd66..42e3f49f 100644 --- a/packages/kit/src/node/diagnostics.ts +++ b/packages/kit/src/node/diagnostics.ts @@ -1,6 +1,4 @@ -import { colors as c } from 'devframe/utils/colors' -import { consoleReporter, createLogger, defineDiagnostics } from 'logs-sdk' -import { ansiFormatter } from 'logs-sdk/formatters/ansi' +import { defineDiagnostics, reporterLog } from 'nostics' // Kit-side diagnostics for the hub subsystems (docks, terminals, commands, // messages). The `DTK` prefix is shared with `@vitejs/devtools` (core); @@ -8,37 +6,32 @@ import { ansiFormatter } from 'logs-sdk/formatters/ansi' // below that today. export const diagnostics = defineDiagnostics({ docsBase: 'https://devtools.vite.dev/errors', + reporters: [reporterLog], codes: { DTK0050: { - message: (p: { id: string }) => `Dock with id "${p.id}" is already registered`, - hint: 'Use the `force` parameter to overwrite an existing registration.', + why: (p: { id: string }) => `Dock with id "${p.id}" is already registered`, + fix: 'Use the `force` parameter to overwrite an existing registration.', }, DTK0051: { - message: 'Cannot change the id of a dock. Use register() to add new docks.', + why: 'Cannot change the id of a dock. Use register() to add new docks.', }, DTK0052: { - message: (p: { id: string }) => `Dock with id "${p.id}" is not registered. Use register() to add new docks.`, + why: (p: { id: string }) => `Dock with id "${p.id}" is not registered. Use register() to add new docks.`, }, DTK0053: { - message: (p: { id: string }) => `Terminal session with id "${p.id}" already registered`, + why: (p: { id: string }) => `Terminal session with id "${p.id}" already registered`, }, DTK0054: { - message: (p: { id: string }) => `Terminal session with id "${p.id}" not registered`, + why: (p: { id: string }) => `Terminal session with id "${p.id}" not registered`, }, DTK0055: { - message: (p: { id: string }) => `Command "${p.id}" is already registered`, + why: (p: { id: string }) => `Command "${p.id}" is already registered`, }, DTK0056: { - message: 'Cannot change the id of a command. Use register() to add new commands.', + why: 'Cannot change the id of a command. Use register() to add new commands.', }, DTK0057: { - message: (p: { id: string }) => `Command "${p.id}" is not registered`, + why: (p: { id: string }) => `Command "${p.id}" is not registered`, }, }, }) - -export const logger = createLogger({ - diagnostics: [diagnostics], - formatter: ansiFormatter(c), - reporters: consoleReporter, -}) diff --git a/packages/kit/src/node/host-commands.ts b/packages/kit/src/node/host-commands.ts index bc77e30b..dbcad21b 100644 --- a/packages/kit/src/node/host-commands.ts +++ b/packages/kit/src/node/host-commands.ts @@ -6,7 +6,7 @@ import type { } from '../types/commands' import type { KitNodeContext } from './context' import { createEventEmitter } from 'devframe/utils/events' -import { logger } from './diagnostics' +import { diagnostics } from './diagnostics' export class DevToolsCommandsHost implements DevToolsCommandsHostType { public readonly commands: DevToolsCommandsHostType['commands'] = new Map() @@ -18,7 +18,7 @@ export class DevToolsCommandsHost implements DevToolsCommandsHostType { register(command: DevToolsServerCommandInput): DevToolsCommandHandle { if (this.commands.has(command.id)) { - throw logger.DTK0055({ id: command.id }).throw() + throw diagnostics.DTK0055.throw({ id: command.id }) } this.commands.set(command.id, command) this.events.emit('command:registered', this.toSerializable(command)) @@ -27,11 +27,11 @@ export class DevToolsCommandsHost implements DevToolsCommandsHostType { id: command.id, update: (patch: Partial>) => { if ('id' in patch) { - throw logger.DTK0056().throw() + throw diagnostics.DTK0056.throw() } const existing = this.commands.get(command.id) if (!existing) { - throw logger.DTK0057({ id: command.id }).throw() + throw diagnostics.DTK0057.throw({ id: command.id }) } Object.assign(existing, patch) this.events.emit('command:registered', this.toSerializable(existing)) @@ -51,7 +51,7 @@ export class DevToolsCommandsHost implements DevToolsCommandsHostType { async execute(id: string, ...args: any[]): Promise { const found = this.findCommand(id) if (!found) { - throw logger.DTK0057({ id }).throw() + throw diagnostics.DTK0057.throw({ id }) } if (!found.handler) { throw new Error(`Command "${id}" has no handler (group-only command)`) diff --git a/packages/kit/src/node/host-docks.ts b/packages/kit/src/node/host-docks.ts index b0ef88a7..a90f714a 100644 --- a/packages/kit/src/node/host-docks.ts +++ b/packages/kit/src/node/host-docks.ts @@ -17,7 +17,7 @@ import { getInternalContext } from 'devframe/node/internal' import { createEventEmitter } from 'devframe/utils/events' import { join } from 'pathe' import { DEFAULT_STATE_USER_SETTINGS } from '../constants' -import { logger } from './diagnostics' +import { diagnostics } from './diagnostics' interface RemoteDockRecord { token: string @@ -157,7 +157,7 @@ export class DevToolsDockHost implements DevToolsDockHostType { update: (patch: Partial) => void } { if (this.views.has(view.id) && !force) { - throw logger.DTK0050({ id: view.id }).throw() + throw diagnostics.DTK0050.throw({ id: view.id }) } this.prepareRemoteRegistration(view) this.views.set(view.id, view) @@ -166,7 +166,7 @@ export class DevToolsDockHost implements DevToolsDockHostType { return { update: (patch) => { if (patch.id && patch.id !== view.id) { - throw logger.DTK0051().throw() + throw diagnostics.DTK0051.throw() } this.update(Object.assign(this.views.get(view.id)!, patch)) }, @@ -175,7 +175,7 @@ export class DevToolsDockHost implements DevToolsDockHostType { update(view: DevToolsDockUserEntry): void { if (!this.views.has(view.id)) { - throw logger.DTK0052({ id: view.id }).throw() + throw diagnostics.DTK0052.throw({ id: view.id }) } this.prepareRemoteRegistration(view) this.views.set(view.id, view) diff --git a/packages/kit/src/node/host-terminals.ts b/packages/kit/src/node/host-terminals.ts index f7e36821..5a69556f 100644 --- a/packages/kit/src/node/host-terminals.ts +++ b/packages/kit/src/node/host-terminals.ts @@ -10,7 +10,7 @@ import type { import type { KitNodeContext } from './context' import process from 'node:process' import { createEventEmitter } from 'devframe/utils/events' -import { logger } from './diagnostics' +import { diagnostics } from './diagnostics' type PartialWithoutId = Partial & { id: string } @@ -57,7 +57,7 @@ export class DevToolsTerminalHost implements DevToolsTerminalHostType { register(session: DevToolsTerminalSession): DevToolsTerminalSession { if (this.sessions.has(session.id)) { - throw logger.DTK0053({ id: session.id }).throw() + throw diagnostics.DTK0053.throw({ id: session.id }) } this.sessions.set(session.id, session) this.bindStream(session) @@ -67,7 +67,7 @@ export class DevToolsTerminalHost implements DevToolsTerminalHostType { update(patch: PartialWithoutId): void { if (!this.sessions.has(patch.id)) { - throw logger.DTK0054({ id: patch.id }).throw() + throw diagnostics.DTK0054.throw({ id: patch.id }) } const session = this.sessions.get(patch.id)! Object.assign(session, patch) @@ -136,7 +136,7 @@ export class DevToolsTerminalHost implements DevToolsTerminalHostType { terminal: Omit, ): Promise { if (this.sessions.has(terminal.id)) { - throw logger.DTK0053({ id: terminal.id }).throw() + throw diagnostics.DTK0053.throw({ id: terminal.id }) } const { exec } = await import('tinyexec') diff --git a/packages/rolldown/package.json b/packages/rolldown/package.json index 66ec90de..3fcaa1fe 100644 --- a/packages/rolldown/package.json +++ b/packages/rolldown/package.json @@ -45,9 +45,9 @@ "diff": "catalog:deps", "get-port-please": "catalog:deps", "h3": "catalog:deps", - "logs-sdk": "catalog:deps", "mlly": "catalog:deps", "mrmime": "catalog:deps", + "nostics": "catalog:deps", "p-limit": "catalog:deps", "pathe": "catalog:deps", "publint": "catalog:deps", diff --git a/packages/rolldown/src/node/diagnostics.ts b/packages/rolldown/src/node/diagnostics.ts index 7766ceba..d22b36c2 100644 --- a/packages/rolldown/src/node/diagnostics.ts +++ b/packages/rolldown/src/node/diagnostics.ts @@ -1,23 +1,14 @@ -import { colors as c } from 'devframe/utils/colors' -import { consoleReporter, createLogger, defineDiagnostics } from 'logs-sdk' -import { ansiFormatter } from 'logs-sdk/formatters/ansi' +import { defineDiagnostics, reporterLog } from 'nostics' export const diagnostics = defineDiagnostics({ docsBase: 'https://devtools.vite.dev/errors', + reporters: [reporterLog], codes: { RDDT0001: { - message: 'Rolldown logs directory `.rolldown` not found, you might want to run build with `build.rolldownOptions.devtools` enabled first.', - level: 'warn', + why: 'Rolldown logs directory `.rolldown` not found, you might want to run build with `build.rolldownOptions.devtools` enabled first.', }, RDDT0002: { - message: (p: { line: number, error: string, preview: string }) => `JSON parse stream skip bad line ${p.line}: ${p.error}\n${p.preview}`, - level: 'warn', + why: (p: { line: number, error: string, preview: string }) => `JSON parse stream skip bad line ${p.line}: ${p.error}\n${p.preview}`, }, }, }) - -export const logger = createLogger({ - diagnostics: [diagnostics], - formatter: ansiFormatter(c), - reporters: consoleReporter, -}) diff --git a/packages/rolldown/src/node/rpc/utils.ts b/packages/rolldown/src/node/rpc/utils.ts index b6ac358c..74d55380 100644 --- a/packages/rolldown/src/node/rpc/utils.ts +++ b/packages/rolldown/src/node/rpc/utils.ts @@ -2,7 +2,7 @@ import type { DevToolsNodeContext } from '@vitejs/devtools-kit' import { existsSync } from 'node:fs' import process from 'node:process' import { join } from 'pathe' -import { logger } from '../diagnostics' +import { diagnostics } from '../diagnostics' import { RolldownLogsManager } from '../rolldown/logs-manager' const weakMap = new WeakMap() @@ -16,7 +16,7 @@ export function getLogsManager(context: DevToolsNodeContext): RolldownLogsManage ] const dir = dirs.find(dir => existsSync(dir)) if (!dir) { - logger.RDDT0001().log() + diagnostics.RDDT0001.report() } manager = new RolldownLogsManager(dir ?? dirs[0]!) } diff --git a/packages/rolldown/src/node/utils/json-parse-stream.ts b/packages/rolldown/src/node/utils/json-parse-stream.ts index 5ef5fb48..3008d350 100644 --- a/packages/rolldown/src/node/utils/json-parse-stream.ts +++ b/packages/rolldown/src/node/utils/json-parse-stream.ts @@ -1,6 +1,6 @@ import { pipeline } from 'node:stream/promises' import split2 from 'split2' -import { logger } from '../diagnostics' +import { diagnostics } from '../diagnostics' export class JsonParseStreamError extends Error { constructor( @@ -37,7 +37,7 @@ export async function parseJsonStreamWithConcatArrays( } catch (e) { const preview = line.length > 256 ? `${line.slice(0, 256)}...` : line - logger.RDDT0002({ line: lineNumber, error: (e as Error).message, preview }).log() + diagnostics.RDDT0002.report({ line: lineNumber, error: (e as Error).message, preview }) } } }, diff --git a/patches/devframe@0.3.0.patch b/patches/devframe@0.3.0.patch new file mode 100644 index 00000000..2988a0ad --- /dev/null +++ b/patches/devframe@0.3.0.patch @@ -0,0 +1,122 @@ +diff --git a/dist/index-DTeZXHSi.d.mts b/dist/index-DTeZXHSi.d.mts +index 3efe244a31e344efe99a12c472f75e255624f9fd..4e56e2a2cc9a9ea3fcb56a23ee534f64b6fc727e 100644 +--- a/dist/index-DTeZXHSi.d.mts ++++ b/dist/index-DTeZXHSi.d.mts +@@ -497,112 +497,11 @@ declare function createStreamSink(options?: CreateStreamSinkOptions): StreamS + declare function createStreamReader(options?: CreateStreamReaderOptions): StreamReader; + //#endregion + //#region src/types/rpc-augments.d.ts +-/** +- * To be extended +- */ +-interface DevToolsRpcClientFunctions { +- /** +- * Streaming chunk pushed from server to subscribed clients. Wired by +- * `RpcStreamingHost`; do not register manually. +- * +- * @internal +- */ +- 'devframe:streaming:chunk': (channel: string, id: string, seq: number, chunk: any) => Promise; +- /** +- * Streaming terminator pushed from server to subscribed clients. Wired by +- * `RpcStreamingHost`; do not register manually. +- * +- * @internal +- */ +- 'devframe:streaming:end': (channel: string, id: string, error?: { +- name: string; +- message: string; +- }) => Promise; +- /** +- * Server→client cancel for an in-flight upload. Wired by +- * `RpcStreamingHost`; do not register manually. +- * +- * @internal +- */ +- 'devframe:streaming:upload-cancel': (channel: string, id: string) => Promise; +-} +-/** +- * To be extended +- */ +-interface DevToolsRpcServerFunctions { +- /** +- * Subscribe a client to a shared-state key. Wired by +- * `RpcSharedStateHost`; do not register manually. +- * +- * @internal +- */ +- 'devframe:rpc:server-state:subscribe': (key: string) => Promise; +- /** +- * Read the current value for a shared-state key. Wired by +- * `RpcSharedStateHost`; do not register manually. +- * +- * @internal +- */ +- 'devframe:rpc:server-state:get': (key: string) => Promise; +- /** +- * Replace a shared-state value (from the client). Wired by +- * `RpcSharedStateHost`; do not register manually. +- * +- * @internal +- */ +- 'devframe:rpc:server-state:set': (key: string, value: any, syncId: string) => Promise; +- /** +- * Apply a patch to a shared-state value (from the client). Wired by +- * `RpcSharedStateHost`; do not register manually. +- * +- * @internal +- */ +- 'devframe:rpc:server-state:patch': (key: string, patches: any[], syncId: string) => Promise; +- /** +- * Client→server streaming subscription with optional replay cursor. +- * Wired by `RpcStreamingHost`; do not register manually. +- * +- * @internal +- */ +- 'devframe:streaming:subscribe': (channel: string, id: string, opts?: { +- afterSeq?: number; +- }) => Promise; +- /** +- * Client→server streaming unsubscribe. Wired by `RpcStreamingHost`; +- * do not register manually. +- * +- * @internal +- */ +- 'devframe:streaming:unsubscribe': (channel: string, id: string) => Promise; +- /** +- * Client→server streaming cancellation request. Wired by +- * `RpcStreamingHost`; do not register manually. +- * +- * @internal +- */ +- 'devframe:streaming:cancel': (channel: string, id: string) => Promise; +- /** +- * Client→server upload chunk. Wired by `RpcStreamingHost`; do not +- * register manually. +- * +- * @internal +- */ +- 'devframe:streaming:upload-chunk': (channel: string, id: string, seq: number, chunk: any) => Promise; +- /** +- * Client→server upload terminator. Wired by `RpcStreamingHost`; do not +- * register manually. +- * +- * @internal +- */ +- 'devframe:streaming:upload-end': (channel: string, id: string, error?: { +- name: string; +- message: string; +- }) => Promise; +-} +-/** +- * To be extended +- */ +-interface DevToolsRpcSharedStates {} ++// Re-imported from the canonical chunk to keep a single declaration of the ++// three augmentable interfaces. Without this, tsdown's client/server split ++// emits duplicate `interface` declarations in two chunks, which breaks ++// `declare module` augmentations from consumers. ++import type { E as DevToolsRpcServerFunctions, T as DevToolsRpcClientFunctions, D as DevToolsRpcSharedStates } from "./devframe-sc4cb5xr.mjs"; + //#endregion + //#region src/types/rpc.d.ts + interface RpcSharedStateGetOptions { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2eed31d6..6411dc7d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -44,8 +44,8 @@ catalogs: specifier: ^4.0.0 version: 4.0.0 devframe: - specifier: 0.2.2 - version: 0.2.2 + specifier: ^0.3.0 + version: 0.3.0 diff: specifier: ^9.0.0 version: 9.0.0 @@ -58,15 +58,15 @@ catalogs: h3: specifier: 2.0.1-rc.22 version: 2.0.1-rc.22 - logs-sdk: - specifier: ^0.0.6 - version: 0.0.6 mlly: specifier: ^1.8.2 version: 1.8.2 mrmime: specifier: ^2.0.1 version: 2.0.1 + nostics: + specifier: ^0.1.0 + version: 0.1.0 obug: specifier: ^2.1.1 version: 2.1.1 @@ -381,6 +381,11 @@ overrides: twoslash: ^0.3.8 vite: ^8.0.13 +patchedDependencies: + devframe@0.3.0: + hash: 11c90360b1a79e6b23bd30a1659078b11a1a3b45998189dd44602d6f4fd72227 + path: patches/devframe@0.3.0.patch + importers: .: @@ -444,7 +449,7 @@ importers: version: 0.13.0(vue@3.5.34(typescript@6.0.3))(zod@4.3.6) '@nuxt/devtools': specifier: ^3.2.4 - version: 3.2.4(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(vite@8.0.13)(vue@3.5.34(typescript@6.0.3)) + version: 3.2.4(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(vite@8.0.13)(vue@3.5.34(typescript@6.0.3)) '@nuxt/eslint': specifier: catalog:devtools version: 1.15.2(@typescript-eslint/utils@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(@vue/compiler-sfc@3.5.34)(eslint@10.3.0(jiti@2.6.1))(magicast@0.5.2)(typescript@6.0.3)(vite@8.0.13) @@ -493,18 +498,18 @@ importers: eslint: specifier: catalog:devtools version: 10.3.0(jiti@2.6.1) - logs-sdk: - specifier: catalog:deps - version: 0.0.6 magic-string: specifier: catalog:build version: 0.30.21 nano-staged: specifier: catalog:devtools version: 1.0.2 + nostics: + specifier: catalog:deps + version: 0.1.0 nuxt: specifier: ^4.4.5 - version: 4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4) + version: 4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4) p-limit: specifier: catalog:deps version: 7.3.0 @@ -522,7 +527,7 @@ importers: version: 1.1.2 tsdown: specifier: catalog:build - version: 0.22.0(@vitejs/devtools@0.1.23)(publint@0.3.21)(tsx@4.22.0)(typescript@6.0.3)(unrun@0.2.37(synckit@0.11.12))(vue-tsc@3.2.9(typescript@6.0.3)) + version: 0.22.0(@vitejs/devtools@0.1.24)(publint@0.3.21)(tsx@4.22.0)(typescript@6.0.3)(unrun@0.2.37(synckit@0.11.12))(vue-tsc@3.2.9(typescript@6.0.3)) tsnapi: specifier: catalog:testing version: 0.3.3(vitest@4.1.6(@opentelemetry/api@1.9.0)(@types/node@25.0.3)(vite@8.0.13)) @@ -543,7 +548,7 @@ importers: version: 1.17.5(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1) vite: specifier: ^8.0.13 - version: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + version: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) vite-plugin-inspect: specifier: catalog:devtools version: 12.0.0-beta.1(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@nuxt/kit@4.4.5(magicast@0.5.2))(typescript@6.0.3)(vite@8.0.13) @@ -576,7 +581,7 @@ importers: version: 4.8.4(change-case@5.4.4)(focus-trap@8.0.0)(fuse.js@7.3.0)(idb-keyval@6.2.2)(typescript@6.0.3)(vite@8.0.13(@types/node@25.0.3)(@vitejs/devtools@packages+core)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4))(vitepress@2.0.0-alpha.17(@types/node@25.0.3)(@vitejs/devtools@packages+core)(change-case@5.4.4)(esbuild@0.28.0)(fuse.js@7.3.0)(idb-keyval@6.2.2)(jiti@2.6.1)(oxc-minify@0.128.0)(postcss@8.5.14)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(yaml@2.8.4))(vue@3.5.34(typescript@6.0.3)) devframe: specifier: catalog:deps - version: 0.2.2(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) + version: 0.3.0(patch_hash=11c90360b1a79e6b23bd30a1659078b11a1a3b45998189dd44602d6f4fd72227)(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) mermaid: specifier: catalog:docs version: 11.15.0 @@ -723,16 +728,16 @@ importers: version: 7.0.0 devframe: specifier: catalog:deps - version: 0.2.2(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) + version: 0.3.0(patch_hash=11c90360b1a79e6b23bd30a1659078b11a1a3b45998189dd44602d6f4fd72227)(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) h3: specifier: catalog:deps version: 2.0.1-rc.22 - logs-sdk: - specifier: catalog:deps - version: 0.0.6 mlly: specifier: catalog:deps version: 1.8.2 + nostics: + specifier: catalog:deps + version: 0.1.0 obug: specifier: catalog:deps version: 2.1.1 @@ -775,16 +780,16 @@ importers: version: 4.1.3 tsdown: specifier: catalog:build - version: 0.22.0(@vitejs/devtools@0.1.23)(publint@0.3.21)(tsx@4.22.0)(typescript@6.0.3)(unrun@0.2.37(synckit@0.11.12))(vue-tsc@3.2.9(typescript@6.0.3)) + version: 0.22.0(@vitejs/devtools@0.1.24)(publint@0.3.21)(tsx@4.22.0)(typescript@6.0.3)(unrun@0.2.37(synckit@0.11.12))(vue-tsc@3.2.9(typescript@6.0.3)) typescript: specifier: catalog:devtools version: 6.0.3 unplugin-vue: specifier: catalog:build - version: 7.2.0(@types/node@25.0.3)(@vitejs/devtools@0.1.23)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(vue@3.5.34(typescript@6.0.3))(yaml@2.8.4) + version: 7.2.0(@types/node@25.0.3)(@vitejs/devtools@0.1.24)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(vue@3.5.34(typescript@6.0.3))(yaml@2.8.4) vite: specifier: ^8.0.13 - version: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + version: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) vue-router: specifier: catalog:playground version: 5.0.7(@vue/compiler-sfc@3.5.34)(vue@3.5.34(typescript@6.0.3)) @@ -799,13 +804,13 @@ importers: version: 4.0.0 devframe: specifier: catalog:deps - version: 0.2.2(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) - logs-sdk: - specifier: catalog:deps - version: 0.0.6 + version: 0.3.0(patch_hash=11c90360b1a79e6b23bd30a1659078b11a1a3b45998189dd44602d6f4fd72227)(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) mlly: specifier: catalog:deps version: 1.8.2 + nostics: + specifier: catalog:deps + version: 0.1.0 pathe: specifier: catalog:deps version: 2.0.3 @@ -821,13 +826,13 @@ importers: version: 4.1.3 tsdown: specifier: catalog:build - version: 0.22.0(@vitejs/devtools@0.1.23)(publint@0.3.21)(tsx@4.22.0)(typescript@6.0.3)(unrun@0.2.37(synckit@0.11.12))(vue-tsc@3.2.9(typescript@6.0.3)) + version: 0.22.0(@vitejs/devtools@0.1.24)(publint@0.3.21)(tsx@4.22.0)(typescript@6.0.3)(unrun@0.2.37(synckit@0.11.12))(vue-tsc@3.2.9(typescript@6.0.3)) ua-parser-modern: specifier: catalog:frontend version: 0.1.1 vite: specifier: ^8.0.13 - version: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + version: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) packages/rolldown: dependencies: @@ -854,7 +859,7 @@ importers: version: 3.2.0 devframe: specifier: catalog:deps - version: 0.2.2(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) + version: 0.3.0(patch_hash=11c90360b1a79e6b23bd30a1659078b11a1a3b45998189dd44602d6f4fd72227)(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) diff: specifier: catalog:deps version: 9.0.0 @@ -864,15 +869,15 @@ importers: h3: specifier: catalog:deps version: 2.0.1-rc.22 - logs-sdk: - specifier: catalog:deps - version: 0.0.6 mlly: specifier: catalog:deps version: 1.8.2 mrmime: specifier: catalog:deps version: 2.0.1 + nostics: + specifier: catalog:deps + version: 0.1.0 p-limit: specifier: catalog:deps version: 7.3.0 @@ -918,7 +923,7 @@ importers: version: 14.3.0(vue@3.5.34(typescript@6.0.3)) '@vueuse/nuxt': specifier: catalog:build - version: 14.3.0(magicast@0.5.2)(nuxt@4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4))(vue@3.5.34(typescript@6.0.3)) + version: 14.3.0(magicast@0.5.2)(nuxt@4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4))(vue@3.5.34(typescript@6.0.3)) '@vueuse/router': specifier: catalog:frontend version: 14.3.0(vue-router@5.0.7(@vue/compiler-sfc@3.5.34)(vue@3.5.34(typescript@6.0.3)))(vue@3.5.34(typescript@6.0.3)) @@ -957,7 +962,7 @@ importers: version: 1.0.0 tsdown: specifier: catalog:build - version: 0.22.0(@vitejs/devtools@0.1.23)(publint@0.3.21)(tsx@4.22.0)(typescript@6.0.3)(unrun@0.2.37(synckit@0.11.12))(vue-tsc@3.2.9(typescript@6.0.3)) + version: 0.22.0(@vitejs/devtools@0.1.24)(publint@0.3.21)(tsx@4.22.0)(typescript@6.0.3)(unrun@0.2.37(synckit@0.11.12))(vue-tsc@3.2.9(typescript@6.0.3)) unocss: specifier: catalog:build version: 66.6.8(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@unocss/webpack@66.6.8(webpack@5.104.1(esbuild@0.28.0)))(vite@8.0.13) @@ -978,7 +983,7 @@ importers: version: 4.0.0 devframe: specifier: catalog:deps - version: 0.2.2(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) + version: 0.3.0(patch_hash=11c90360b1a79e6b23bd30a1659078b11a1a3b45998189dd44602d6f4fd72227)(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) pathe: specifier: catalog:deps version: 2.0.3 @@ -1015,7 +1020,7 @@ importers: version: 14.3.0(vue@3.5.34(typescript@6.0.3)) nuxt: specifier: ^4.4.5 - version: 4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4) + version: 4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4) unocss: specifier: '*' version: 66.6.8(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@unocss/webpack@66.6.8(webpack@5.104.1(esbuild@0.28.0)))(vite@8.0.13) @@ -1039,7 +1044,7 @@ importers: version: 4.0.0 devframe: specifier: catalog:deps - version: 0.2.2(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) + version: 0.3.0(patch_hash=11c90360b1a79e6b23bd30a1659078b11a1a3b45998189dd44602d6f4fd72227)(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) envinfo: specifier: catalog:deps version: 7.21.0 @@ -1067,13 +1072,13 @@ importers: version: 14.3.0(vue@3.5.34(typescript@6.0.3)) '@vueuse/nuxt': specifier: catalog:build - version: 14.3.0(magicast@0.5.2)(nuxt@4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4))(vue@3.5.34(typescript@6.0.3)) + version: 14.3.0(magicast@0.5.2)(nuxt@4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4))(vue@3.5.34(typescript@6.0.3)) floating-vue: specifier: catalog:frontend version: 5.2.2(@nuxt/kit@4.4.5(magicast@0.5.2))(vue@3.5.34(typescript@6.0.3)) tsdown: specifier: catalog:build - version: 0.22.0(@vitejs/devtools@0.1.23)(publint@0.3.21)(tsx@4.22.0)(typescript@6.0.3)(unrun@0.2.37(synckit@0.11.12))(vue-tsc@3.2.9(typescript@6.0.3)) + version: 0.22.0(@vitejs/devtools@0.1.24)(publint@0.3.21)(tsx@4.22.0)(typescript@6.0.3)(unrun@0.2.37(synckit@0.11.12))(vue-tsc@3.2.9(typescript@6.0.3)) unocss: specifier: catalog:build version: 66.6.8(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@unocss/webpack@66.6.8(webpack@5.104.1(esbuild@0.28.0)))(vite@8.0.13) @@ -1086,7 +1091,7 @@ importers: devDependencies: tsdown: specifier: catalog:build - version: 0.22.0(@vitejs/devtools@0.1.23)(publint@0.3.21)(tsx@4.22.0)(typescript@6.0.3)(unrun@0.2.37(synckit@0.11.12))(vue-tsc@3.2.9(typescript@6.0.3)) + version: 0.22.0(@vitejs/devtools@0.1.24)(publint@0.3.21)(tsx@4.22.0)(typescript@6.0.3)(unrun@0.2.37(synckit@0.11.12))(vue-tsc@3.2.9(typescript@6.0.3)) tsx: specifier: catalog:build version: 4.22.0 @@ -1337,18 +1342,10 @@ packages: '@chevrotain/types@11.1.2': resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} - '@clack/core@1.3.0': - resolution: {integrity: sha512-xJPHpAmEQUBrXSLx0gF+q5K/IyihXpsHZcha+jB+tyahsKRK3Dxo4D0coZDewHo12NhiuzC3dTtMPbm53GEAAA==} - engines: {node: '>= 20.12.0'} - '@clack/core@1.3.1': resolution: {integrity: sha512-fT1qHVGAag4IEkrupZ6lRRbNCs1vS9P01KB/sG8zKgvUztbYtFBtQpjSITNwooDZ83tpsPzP0mRNs1/KVszCRA==} engines: {node: '>= 20.12.0'} - '@clack/prompts@1.3.0': - resolution: {integrity: sha512-GgcWwRCs/xPtaqlMy8qRhPnZf9vlWcWZNHAitnVQ3yk7JmSralSiq5q07yaffYE8SogtDm7zFeKccx1QNVARpw==} - engines: {node: '>= 20.12.0'} - '@clack/prompts@1.4.0': resolution: {integrity: sha512-S0My7XPGIgpRWMDG8uRqalbgT+a6FmCUdOW+HaIOVVpUPHOb7RrpvjTjiODadKp06fsrVDJZlIzc6yCTp4AnxA==} engines: {node: '>= 20.12.0'} @@ -1708,9 +1705,6 @@ packages: '@iconify-json/ri@1.2.10': resolution: {integrity: sha512-WWMhoncVVM+Xmu9T5fgu2lhYRrKTEWhKk3Com0KiM111EeEsRLiASjpsFKnC/SrB6covhUp95r2mH8tGxhgd5Q==} - '@iconify-json/simple-icons@1.2.81': - resolution: {integrity: sha512-Utjw4sPtoVdbpAQAkC4O0cYpt4ehQZYr6aFHhmvdeW8mQwkINyAe0ogTPqNptSSKogZ2lfgXM8zpuhO961Wnng==} - '@iconify-json/simple-icons@1.2.82': resolution: {integrity: sha512-4p978qHx8eD/QBOhgBzp/p7uS3OO2KCnVpFPJTUvuhuDXv1Hr4RcxcZ5MWc6ptkf/3Dlb1xb23068OtPyx10mA==} @@ -2097,6 +2091,12 @@ packages: cpu: [arm] os: [android] + '@oxc-parser/binding-android-arm-eabi@0.130.0': + resolution: {integrity: sha512-h/xYU8/7ADWzVSf5I+YalLpj33LOy9CI/zgbJNIZ5eunRBG+Czqa3lZsvuPHHf3rOt6z1c5+UzoxjbAzAvhwVw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + '@oxc-parser/binding-android-arm64@0.124.0': resolution: {integrity: sha512-ULHC/gVZ+nP4pd3kNNQTYaQ/e066BW/KuY5qUsvwkVWwOUQGDg+WpfyVOmQ4xfxoue6cMlkKkJ+ntdzfDXpNlg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2121,6 +2121,12 @@ packages: cpu: [arm64] os: [android] + '@oxc-parser/binding-android-arm64@0.130.0': + resolution: {integrity: sha512-oFWFJrsGv9siFM4HjMqKNB7IuIZD/SMmZdCXl8xyx7lDplGvPKyewpOo272rSWgMXe2Wx7bWI0Yj+gkHv4qbeg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + '@oxc-parser/binding-darwin-arm64@0.124.0': resolution: {integrity: sha512-fGJ2hw7bnbUYn6UvTjp0m4WJ9zXz3cohgcwcgeo7gUZehpPNpvcVEVeIVHNmHnAuAw/ysf4YJR8DA1E+xCA4Lw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2145,6 +2151,12 @@ packages: cpu: [arm64] os: [darwin] + '@oxc-parser/binding-darwin-arm64@0.130.0': + resolution: {integrity: sha512-sGUzupdTplK9jQg7eJZ878HfEgQjJNBc6dAYVWJ9W5aU+J8rLfRJhTVsKThiu1pNwm6Y1qKCcbC6WhNWSXR3Ig==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + '@oxc-parser/binding-darwin-x64@0.124.0': resolution: {integrity: sha512-j0+re9pgps5BH2Tk3fm59Hi3QuLP3C4KhqXi6A+wRHHHJWDFR8mc/KI9mBrfk2JRT+15doGo+zv1eN75/9DuOw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2169,6 +2181,12 @@ packages: cpu: [x64] os: [darwin] + '@oxc-parser/binding-darwin-x64@0.130.0': + resolution: {integrity: sha512-PsB4cdCISbC00Uy8eiD8bc2AkGWjZqrSrJnkBFuG2ptrrf6mZ2F5gLFSjOAVMMgZPg8B1D7OydJwLWSfyI2Plg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + '@oxc-parser/binding-freebsd-x64@0.124.0': resolution: {integrity: sha512-0k5mS0npnrhKy72UfF51lpOZ2ESoPWn6gdFw+RdeRWcokraDW1O2kSx3laQ+yk7cCEavQdJSpWCYS/GvBbUCXQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2193,6 +2211,12 @@ packages: cpu: [x64] os: [freebsd] + '@oxc-parser/binding-freebsd-x64@0.130.0': + resolution: {integrity: sha512-DgABp3l38hS77JbXCV4qk1+n6DPym5u8zzwuweokezm2tX194nDSJDENbDRECxVsiNbprKATLbk+Z5wlHT0OHw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + '@oxc-parser/binding-linux-arm-gnueabihf@0.124.0': resolution: {integrity: sha512-P/i4eguRWvAUfGdfhQYg1jpwYkyUV6D3gefIH7HhmRl1Ph6P4IqTIEVcyJr1i/3vr1V5OHU4wonH6/ue/Qzvrw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2217,6 +2241,12 @@ packages: cpu: [arm] os: [linux] + '@oxc-parser/binding-linux-arm-gnueabihf@0.130.0': + resolution: {integrity: sha512-4Kn3CTEmwFrzhTSC/JuUW16qovmaMdX7jeSKbL8w0pLtLww7To1a2XJi9Z5uD8QWUkfUHhqfV+VD6dVzBnWzoA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@oxc-parser/binding-linux-arm-musleabihf@0.124.0': resolution: {integrity: sha512-/ameqFQH5fFP+66Atr8Ynv/2rYe4utcU7L4MoWS5JtrFLVO78g4qDLavyIlJxa6caSwYOvG/eO3c/DXqY5/6Rw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2241,6 +2271,12 @@ packages: cpu: [arm] os: [linux] + '@oxc-parser/binding-linux-arm-musleabihf@0.130.0': + resolution: {integrity: sha512-D35KZM3F4rRu1uAFKyBlg3Gaf/ybCjyaPR1hfgvk5ex8NtcTmRgc0JgSighEyNg96TPrFhemFba68SZuxaha8w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@oxc-parser/binding-linux-arm64-gnu@0.124.0': resolution: {integrity: sha512-gNeyEcXTtfrRCbj2EfxWU85Fs0wIX3p44Y3twnvuMfkWlLrb9M1Z25AYNSKjJM+fdAjeeQCjw0on47zFuBYwQw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2269,6 +2305,13 @@ packages: os: [linux] libc: [glibc] + '@oxc-parser/binding-linux-arm64-gnu@0.130.0': + resolution: {integrity: sha512-Q9o7oVlo955KHwS8l1u0bCzIx+JsZUA3XToLXC+MsMhye/9LeBQbt84nh120cl2XLy+TEzvugYDiHShg5yaX6Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@oxc-parser/binding-linux-arm64-musl@0.124.0': resolution: {integrity: sha512-uvG7v4Tz9S8/PVqY0SP0DLHxo4hZGe+Pv2tGVnwcsjKCCUPjplbrFVvDzXq+kOaEoUkiCY0Kt1hlZ6FDJ1LKNQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2297,6 +2340,13 @@ packages: os: [linux] libc: [musl] + '@oxc-parser/binding-linux-arm64-musl@0.130.0': + resolution: {integrity: sha512-EiJ/gC0ljbcwVpycC8YWw6ggMbtsPX8XMOt0mPx0aqWeMsNR+L9m05Flbvd5T+GlivG+GkSWQL7tM9SRFpM/dw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + '@oxc-parser/binding-linux-ppc64-gnu@0.124.0': resolution: {integrity: sha512-t7KZaaUhfp2au0MRpoENEFqwLKYDdptEry6V7pTAVdPEcFG4P6ii8yeGU9m6p5vb+b8WEKmdpGMNXBEYy7iJdw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2325,6 +2375,13 @@ packages: os: [linux] libc: [glibc] + '@oxc-parser/binding-linux-ppc64-gnu@0.130.0': + resolution: {integrity: sha512-b+h/lsLLurp756dMGizNs5uPaJfyEdWrTcV5t8M609jWm1DEHB1StpRXCkyvwtkJx3m+qL5BNQ0dEKan/4yGFA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@oxc-parser/binding-linux-riscv64-gnu@0.124.0': resolution: {integrity: sha512-eurGGaxHZiIQ+fBSageS8TAkRqZgdOiBeqNrWAqAPup9hXBTmQ0WcBjwsLElf+3jvDL9NhnX0dOgOqPfsjSjdg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2353,6 +2410,13 @@ packages: os: [linux] libc: [glibc] + '@oxc-parser/binding-linux-riscv64-gnu@0.130.0': + resolution: {integrity: sha512-O19Cil83XAyjEFfo8WhkMwY58ALqZ7ckjGL+25mjMIuF84urWBeANH0FC8B8BsSSygWU3/1aY3ADdDbp+wlBnw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@oxc-parser/binding-linux-riscv64-musl@0.124.0': resolution: {integrity: sha512-d1V7/ll1i/LhqE/gZy6Wbz6evlk0egh2XKkwMI3epiojtbtUwQSLIER0Y3yDBBocPuWOjJdvmjtEmPTTLXje/w==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2381,6 +2445,13 @@ packages: os: [linux] libc: [musl] + '@oxc-parser/binding-linux-riscv64-musl@0.130.0': + resolution: {integrity: sha512-BgXRVC0+83n3YzCscLQjj6nbyeBIVeZYPTI4fFMAE4WNm2+4RXhWp03IVizL7esIz36kgmT48aebk1iM+cs8sw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + '@oxc-parser/binding-linux-s390x-gnu@0.124.0': resolution: {integrity: sha512-w1+cBvriUteOpox6ATqCFVkpGL47PFdcfCPGmgUZbd78Fw44U0gQkc+kVGvAOTvGrptMYgwomD1c6OTVvkrpGg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2409,6 +2480,13 @@ packages: os: [linux] libc: [glibc] + '@oxc-parser/binding-linux-s390x-gnu@0.130.0': + resolution: {integrity: sha512-6tJz0xvnGhsokE7N1WlUSBXibpYmT9xSJFS1Ce41Km/+8gQvdlW8MLhRv8PD0L7ix8vRG0FDDepp3jdOFzdVdw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@oxc-parser/binding-linux-x64-gnu@0.124.0': resolution: {integrity: sha512-RRB1evQiXRtMCsQQiAh9U0H3HzguLpE0ytfStuhRgmOj7tqUCOVxkHsvM9geZjAax6NqVRj7VXx32qjjkZPsBw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2437,6 +2515,13 @@ packages: os: [linux] libc: [glibc] + '@oxc-parser/binding-linux-x64-gnu@0.130.0': + resolution: {integrity: sha512-9aCWj83dp3heTQGmGnZGdIWgxjZrr/7VQ0TGFHH5PKByxJKF2Hcr4qvaSUHhhGEa3MSsDjTL1YDP8RAgdL5/Cg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + '@oxc-parser/binding-linux-x64-musl@0.124.0': resolution: {integrity: sha512-asVYN0qmSHlCU8H9Q47SmeJ/Z5EG4IWCC+QGxkfFboI5qh15aLlJnHmnrV61MwQRPXGnVC/sC3qKhrUyqGxUqw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2465,6 +2550,13 @@ packages: os: [linux] libc: [musl] + '@oxc-parser/binding-linux-x64-musl@0.130.0': + resolution: {integrity: sha512-afXt87aZBqrUVli8TB/I8H1G50RDWcwirjWtXGXYqJ2ZqWEiErH7V72j3LUSDZaivmtu2OLX0KQ/mbhP81mr7A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + '@oxc-parser/binding-openharmony-arm64@0.124.0': resolution: {integrity: sha512-nhwuxm6B8pn9lzAzMUfa571L5hCXYwQo8C8cx5aGOuHWCzruR8gPJnRRXGBci+uGaIIQEZDyU/U6HDgrSp/JlQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2489,6 +2581,12 @@ packages: cpu: [arm64] os: [openharmony] + '@oxc-parser/binding-openharmony-arm64@0.130.0': + resolution: {integrity: sha512-I0NCrZV/YZuCGWgqwNN/GO/iXlLF2z+Wgc7u+Aa9N4P51oYeIa0XT+zVBUne4csO9GqxskXgI4g8JzzWGRpfOw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + '@oxc-parser/binding-wasm32-wasi@0.124.0': resolution: {integrity: sha512-LWuq4Dl9tff7n+HjJcqoBjDlVCtruc0shgtdtGM+rTUIE9aFxHA/P+wCYR+aWMjN8m9vNaRME/sKXErmhmeKrA==} engines: {node: '>=14.0.0'} @@ -2509,6 +2607,11 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] + '@oxc-parser/binding-wasm32-wasi@0.130.0': + resolution: {integrity: sha512-sJgQkGaBX0WJvPUDfwciex6IcTk5O5NLQ1bhEb6f3nBruh1GshKMRSMt2bxZlYrgBzjyBbJzsnO+InPG0bg+fA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + '@oxc-parser/binding-win32-arm64-msvc@0.124.0': resolution: {integrity: sha512-aOh3Lf3AeH0dgzT4yBXcArFZ8VhqNXwZ/xlN0GqBtgVaGoHOOqL2YHlcVIgT+ghsXPVR2PTtYgBiQ1CNK7jp5A==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2533,6 +2636,12 @@ packages: cpu: [arm64] os: [win32] + '@oxc-parser/binding-win32-arm64-msvc@0.130.0': + resolution: {integrity: sha512-bjcma99sQrNh6RY4mPO9yTkfxql6TDFoN3HWdK31RCKXwNhcDgJXW/l8PUtzKNiQ+9vpKJfJtQq+LklBuxSOBA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + '@oxc-parser/binding-win32-ia32-msvc@0.124.0': resolution: {integrity: sha512-sib5xC0nz/+SCpaETBuHBz4SXS02KuG5HtyOcHsO/SK5ZvLRGhOZx0elDKawjb6adFkD7dQCqpXUS25wY6ELKQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2557,6 +2666,12 @@ packages: cpu: [ia32] os: [win32] + '@oxc-parser/binding-win32-ia32-msvc@0.130.0': + resolution: {integrity: sha512-hRYbv6HhpSTzT4xTiIkadLI7upLQxuOdLPR/9nL1fTjwhgutBTPXrwaAPb/jTFVx6/8C7Jb5HcUKhmNwloTbFA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + '@oxc-parser/binding-win32-x64-msvc@0.124.0': resolution: {integrity: sha512-UgojtjGUgZgAZQYt7SC6VO65OVdxEkRe2q+2vbHJO//18qw3Hrk6UvHGQKldsQKgbVcIBT/YBrt85YberiYIPQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2581,6 +2696,12 @@ packages: cpu: [x64] os: [win32] + '@oxc-parser/binding-win32-x64-msvc@0.130.0': + resolution: {integrity: sha512-RBpA9TsRucJq6HNVNCFF1iKg+QeTkLdZf7hi4xaOGCPvMZWvDHjQgSOEZMUpuW4JNciHbxNhLEYmz5CVygjVGQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@oxc-project/types@0.124.0': resolution: {integrity: sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==} @@ -3001,9 +3122,6 @@ packages: '@rolldown/pluginutils@1.0.0-rc.13': resolution: {integrity: sha512-3ngTAv6F/Py35BsYbeeLeecvhMKdsKm4AoOETVhAA+Qc8nrA2I0kF7oa93mE9qnIurngOSpMnQ0x2nQY2FPviA==} - '@rolldown/pluginutils@1.0.0-rc.18': - resolution: {integrity: sha512-CUY5Mnhe64xQBGZEEXQ5WyZwsc1JU3vAZLIxtrsBt3LO6UOb+C8GunVKqe9sT8NeWb4lqSaoJtp2xo6GxT1MNw==} - '@rollup/plugin-alias@6.0.0': resolution: {integrity: sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==} engines: {node: '>=20.19.0'} @@ -3658,14 +3776,6 @@ packages: '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@typescript-eslint/eslint-plugin@8.58.2': - resolution: {integrity: sha512-aC2qc5thQahutKjP+cl8cgN9DWe3ZUqVko30CMSZHnFEHyhOYoZSzkGtAI2mcwZ38xeImDucI4dnqsHiOYuuCw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.58.2 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/eslint-plugin@8.59.3': resolution: {integrity: sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3681,13 +3791,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.58.2': - resolution: {integrity: sha512-/Zb/xaIDfxeJnvishjGdcR4jmr7S+bda8PKNhRGdljDM+elXhlvN0FyPSsMnLmJUrVG9aPO6dof80wjMawsASg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.59.3': resolution: {integrity: sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3701,12 +3804,6 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.58.2': - resolution: {integrity: sha512-Cq6UfpZZk15+r87BkIh5rDpi38W4b+Sjnb8wQCPPDDweS/LRCFjCyViEbzHk5Ck3f2QDfgmlxqSa7S7clDtlfg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.59.3': resolution: {integrity: sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3723,10 +3820,6 @@ packages: resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.58.2': - resolution: {integrity: sha512-SgmyvDPexWETQek+qzZnrG6844IaO02UVyOLhI4wpo82dpZJY9+6YZCKAMFzXb7qhx37mFK1QcPQ18tud+vo6Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.59.3': resolution: {integrity: sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3737,31 +3830,12 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.58.2': - resolution: {integrity: sha512-3SR+RukipDvkkKp/d0jP0dyzuls3DbGmwDpVEc5wqk5f38KFThakqAAO0XMirWAE+kT00oTauTbzMFGPoAzB0A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/tsconfig-utils@8.59.2': - resolution: {integrity: sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/tsconfig-utils@8.59.3': resolution: {integrity: sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.58.2': - resolution: {integrity: sha512-Z7EloNR/B389FvabdGeTo2XMs4W9TjtPiO9DAsmT0yom0bwlPyRjkJ1uCdW1DvrrrYP50AJZ9Xc3sByZA9+dcg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.59.3': resolution: {integrity: sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3773,14 +3847,6 @@ packages: resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.58.2': - resolution: {integrity: sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.59.2': - resolution: {integrity: sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.59.3': resolution: {integrity: sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3791,12 +3857,6 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.58.2': - resolution: {integrity: sha512-ELGuoofuhhoCvNbQjFFiobFcGgcDCEm0ThWdmO4Z0UzLqPXS3KFvnEZ+SHewwOYHjM09tkzOWXNTv9u6Gqtyuw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/typescript-estree@8.59.3': resolution: {integrity: sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3810,13 +3870,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.58.2': - resolution: {integrity: sha512-QZfjHNEzPY8+l0+fIXMvuQ2sJlplB4zgDZvA+NmvZsZv3EQwOcc1DuIU1VJUTWZ/RKouBMhDyNaBMx4sWvrzRA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.59.3': resolution: {integrity: sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3828,10 +3881,6 @@ packages: resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.58.2': - resolution: {integrity: sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.59.3': resolution: {integrity: sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4062,21 +4111,21 @@ packages: peerDependencies: vue: ^3.3.0 - '@vitejs/devtools-kit@0.1.21': - resolution: {integrity: sha512-u9d45h1GhcbY4O6a2TZxNTJnw6lySqSoEZM2i26caxVkbKEPuW6qSQMkVVr4ZfciNVfae2R3Trgn6DLxaq9BZQ==} + '@vitejs/devtools-kit@0.1.23': + resolution: {integrity: sha512-WsMvJ9GISv/gm/DIJvpqVz4nQuj89MFEbMf0iTb7MmTGb2mXEzG9tcWBpG36bjoziqxUuRBoi9O7PkQoCaTQpQ==} peerDependencies: vite: ^8.0.13 - '@vitejs/devtools-kit@0.1.23': - resolution: {integrity: sha512-WsMvJ9GISv/gm/DIJvpqVz4nQuj89MFEbMf0iTb7MmTGb2mXEzG9tcWBpG36bjoziqxUuRBoi9O7PkQoCaTQpQ==} + '@vitejs/devtools-kit@0.1.24': + resolution: {integrity: sha512-sHM4i80Rrx4HTv/c2d28pQpeMz99GQe/2lVvJvna9t/YcoVouqpsms8oKiF/NcX8474A5gx3TtJHXWvqbov1dg==} peerDependencies: vite: ^8.0.13 - '@vitejs/devtools-rolldown@0.1.23': - resolution: {integrity: sha512-hchdXsrr46tVMULs5htqqJFUIT/biZugkcifnCMF272BBc6rEP4Tayk0xtCy6Tva68CoOEn/t6QnEMrn1hlVLA==} + '@vitejs/devtools-rolldown@0.1.24': + resolution: {integrity: sha512-KN3Bd7O0/xAq9KKjH9R1hrbw5GK3eKq563IExw8jf/FjiTllppR/iNUnlg6JHBLG3wVBFrhxL6bHjgQUAaBDBQ==} - '@vitejs/devtools@0.1.23': - resolution: {integrity: sha512-4lXaQXoETmk35b1BnAgmPCjV42chisOm4AM8dH++oyeofnYkY0658j349H5LJgH/zgreoVsKHT2CjZEeBdra3Q==} + '@vitejs/devtools@0.1.24': + resolution: {integrity: sha512-XPsNo8fTXtshuQrK5ddnlZzE9wtGJWs1Xfu9g1bMKZoM/XI+ool1zPSM1k8RHE09LPiUf/5E29KykResyyKx/w==} hasBin: true peerDependencies: vite: ^8.0.13 @@ -4125,9 +4174,6 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.5': - resolution: {integrity: sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==} - '@vitest/pretty-format@4.1.6': resolution: {integrity: sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==} @@ -4140,9 +4186,6 @@ packages: '@vitest/spy@4.1.6': resolution: {integrity: sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==} - '@vitest/utils@4.1.5': - resolution: {integrity: sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==} - '@vitest/utils@4.1.6': resolution: {integrity: sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==} @@ -4224,9 +4267,6 @@ packages: '@vue/devtools-shared@8.1.2': resolution: {integrity: sha512-X9RyVFYAdkBe4IUf5v48TxBF/6QPmF8CmWrDAjXzfUHrgQ/HGfTC1A6TqgXqZ03ye66l3AD51BAGD69IvKM9sw==} - '@vue/language-core@3.2.8': - resolution: {integrity: sha512-9OiSPQFiAAWNVnXb0d2dcTmcKnFQamhuNES6ayyISrb/mwPWVgoGdAqSfCWqKhQpa3D5gDTcYD+w7ObiheZ81g==} - '@vue/language-core@3.2.9': resolution: {integrity: sha512-ie0ojt/0fU/GfIogh+zgHbaYRPlt9S+cLOxcWwF7nTSFh897BVgnFKL2byT4kpp1mlqYWZ2psGwSniyE2xsxYw==} @@ -4465,9 +4505,6 @@ packages: ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} - alien-signals@3.1.2: - resolution: {integrity: sha512-d9dYqZTS90WLiU0I5c6DHj/HcKkF8ZyGN3G5x8wSbslulz70KOxaqCT0hQCo9KOyhVqzqGojvNdJXoTumZOtcw==} - alien-signals@3.2.0: resolution: {integrity: sha512-5J9+NpCLHgic4xnZtI8SznvNagwJsZSvRFsAwoLlLw+Edaqa4upCiOC19P8Vx2DqmEvqK2qJBMtI8+9eXOEb/A==} @@ -5231,24 +5268,24 @@ packages: devalue@5.8.0: resolution: {integrity: sha512-2zA9pFEsnp7vWBZbXF5JAgAq0fsUIt/1XPbRiAmRV3lp/2C3upzH+sADiyy66aFCihoLEsrQHxNM5w1gIDfsBg==} - devframe@0.1.21: - resolution: {integrity: sha512-tOCbGyJKYyYatfk1E7I96KVZQRTyFwewF1c5BVsm92EN6ezuUkAmJqNu6/kR6sAA8lUSnRG4iTUrk+bOtutJjQ==} + devframe@0.2.2: + resolution: {integrity: sha512-nB5xJR0XREJSVD7Me7j9UUY1NIpPlBGYI/b6EMigeoVPaUv7/RwKf/uyc/94P00yMMxQzSMy/94NzWemDd70SQ==} peerDependencies: '@modelcontextprotocol/sdk': ^1.0.0 peerDependenciesMeta: '@modelcontextprotocol/sdk': optional: true - devframe@0.2.2: - resolution: {integrity: sha512-nB5xJR0XREJSVD7Me7j9UUY1NIpPlBGYI/b6EMigeoVPaUv7/RwKf/uyc/94P00yMMxQzSMy/94NzWemDd70SQ==} + devframe@0.2.3: + resolution: {integrity: sha512-wQjB78wPADHtm7Gt6Atd5qHAsRpXGjJKhrebz2SncnybK6k+M9Lccu8ERtD+1+3a6Bp2JevNywei5BCHqYoHLw==} peerDependencies: '@modelcontextprotocol/sdk': ^1.0.0 peerDependenciesMeta: '@modelcontextprotocol/sdk': optional: true - devframe@0.2.3: - resolution: {integrity: sha512-wQjB78wPADHtm7Gt6Atd5qHAsRpXGjJKhrebz2SncnybK6k+M9Lccu8ERtD+1+3a6Bp2JevNywei5BCHqYoHLw==} + devframe@0.3.0: + resolution: {integrity: sha512-Yli2NJ2Xs5pK69YhdkrPHU7MccVsCuNj15o5l5lrOjDna3g5c6A/7br03w0jVzl2Rl0VJTZ9YMN7GaomDAFrRQ==} peerDependencies: '@modelcontextprotocol/sdk': ^1.0.0 peerDependenciesMeta: @@ -5283,9 +5320,6 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} - dompurify@3.4.2: - resolution: {integrity: sha512-lHeS9SA/IKeIFFyYciHBr2n0v1VMPlSj843HdLOwjb2OxNwdq9Xykxqhk+FE42MzAdHvInbAolSE4mhahPpjXA==} - dompurify@3.4.3: resolution: {integrity: sha512-VVwJidIJcp1hpg2OMXML3ZVRPYSZiq4aX7qBh83BSIpOaRDqI+qxhXjjIWnpzkOXhmp0L81lnoME1mnCc9H48A==} @@ -5425,9 +5459,6 @@ packages: peerDependencies: eslint: ^9.5.0 || ^10.0.0 - eslint-flat-config-utils@3.1.0: - resolution: {integrity: sha512-lM+Nwo2CzpuTS/RASQExlEIwk/BQoKqJWX6VbDlLMb/mveqvt9MMrRXFEkG3bseuK6g8noKZLeX82epkILtv4A==} - eslint-flat-config-utils@3.2.0: resolution: {integrity: sha512-PHgo1X5uqIorJONLVD9BIaOSdoYFD3z/AeJljdqDPlWVRpeCYkDbK9k0AXoYVqqNJr6FEYIEr5Rm2TSktLQcHw==} @@ -5573,20 +5604,6 @@ packages: '@typescript-eslint/eslint-plugin': optional: true - eslint-plugin-vue@10.8.0: - resolution: {integrity: sha512-f1J/tcbnrpgC8suPN5AtdJ5MQjuXbSU9pGRSSYAuF3SHoiYCOdEX6O22pLaRyLHXvDcOe+O5ENgc1owQ587agA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - '@typescript-eslint/parser': ^7.0.0 || ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - vue-eslint-parser: ^10.0.0 - peerDependenciesMeta: - '@stylistic/eslint-plugin': - optional: true - '@typescript-eslint/parser': - optional: true - eslint-plugin-vue@10.9.1: resolution: {integrity: sha512-cHB0Tf4Duvzwecwd/AqWzZvF/QszE13BhjVUpVXWCy9AeMR5GjkAjP3i85vqgLgOuTmkHR1OJ5oMeqLHtuw8zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5946,10 +5963,6 @@ packages: resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} engines: {node: '>=18'} - globals@17.5.0: - resolution: {integrity: sha512-qoV+HK2yFl/366t2/Cb3+xxPUo5BuMynomoDmiaZBIdbs+0pYbjfZU+twLhGKp4uCZ/+NbtpVepH5bGCxRyy2g==} - engines: {node: '>=18'} - globals@17.6.0: resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==} engines: {node: '>=18'} @@ -6085,9 +6098,6 @@ packages: image-meta@0.2.2: resolution: {integrity: sha512-3MOLanc3sb3LNGWQl1RlQlNWURE5g32aUphrDyFeCsxBTk08iE3VNe4CwsUZ0Qs1X+EfX0+r29Sxdpza4B+yRA==} - immer@11.1.7: - resolution: {integrity: sha512-LFVFtAROHcDy1er5UI6nodRFnZ2SgdCXhfNSI+DpObO8N7Pur/muBGsjzH5wpnFHCYhYVQxZskCkV4koQ//3/Q==} - import-without-cache@0.4.0: resolution: {integrity: sha512-NkJQA7oZ4YHQhd2+H3BoRFKF3d/XNsiKpHZCQEMH9pDX27hQQLsTyOocyRgaIVtf8gHX3Nt3LPkR4e5EdtPAGQ==} engines: {node: ^22.18.0 || >=24.0.0} @@ -6972,6 +6982,9 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + nostics@0.1.0: + resolution: {integrity: sha512-gSujQXUjmUOFVum7XazE2EcoHYZB3Et0dZwiQh1plulZdolEZL+Y7TOu9yVsXCxxUqfw5q0+svxJJXvynygKEQ==} + npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -7089,6 +7102,10 @@ packages: resolution: {integrity: sha512-S6eFI+VLkpyA+/Lf8z6qURjDV6Mgo74SLNznNopHTlQW3hedv2MB/z31kBRuBCCTqZN9HHdva0ojljEhPnBKFA==} engines: {node: ^20.19.0 || >=22.12.0} + oxc-parser@0.130.0: + resolution: {integrity: sha512-X0PJ+NmOok8qP3vK9uaW431ngkdM9UPEK7KG466urtIL2+EYTEgbZK2yqe2MWKJKBjRlFweP/pJPx0x9muMEVw==} + engines: {node: ^20.19.0 || >=22.12.0} + oxc-transform@0.128.0: resolution: {integrity: sha512-8DfEHlmUiLOHlCK9DGX+d5tORc1xwPPvoRSHSJCYgLHyGjKp4PvfBrvgi59DkEW0SMOWfO8GL9t+R7vdKtupbg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -7719,10 +7736,6 @@ packages: peerDependencies: seroval: ^1.0 - seroval@1.5.2: - resolution: {integrity: sha512-xcRN39BdsnO9Tf+VzsE7b3JyTJASItIV1FVFewJKCFcW4s4haIKS3e6vj8PGB9qBwC7tnuOywQMdv5N4qkzi7Q==} - engines: {node: '>=10'} - seroval@1.5.4: resolution: {integrity: sha512-46uFvgrXTVxZcUorgSSRZ4y+ieqLLQRMlG4bnCZKW3qI6BZm7Rg4ntMW4p1mILEEBZWrFlcpp0AyIIlM6jD9iw==} engines: {node: '>=10'} @@ -8921,7 +8934,7 @@ snapshots: '@eslint-community/eslint-plugin-eslint-comments': 4.7.1(eslint@10.3.0(jiti@2.6.1)) '@eslint/markdown': 8.0.1 '@stylistic/eslint-plugin': 5.10.0(eslint@10.3.0(jiti@2.6.1)) - '@typescript-eslint/eslint-plugin': 8.59.3(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.59.3(@typescript-eslint/parser@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) '@typescript-eslint/parser': 8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) '@vitest/eslint-plugin': 1.6.17(@typescript-eslint/eslint-plugin@8.59.3(@typescript-eslint/parser@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)(vitest@4.1.6(@opentelemetry/api@1.9.0)(@types/node@25.0.3)(vite@8.0.13)) ansis: 4.2.0 @@ -9190,23 +9203,11 @@ snapshots: '@chevrotain/types@11.1.2': {} - '@clack/core@1.3.0': - dependencies: - fast-wrap-ansi: 0.2.0 - sisteransi: 1.0.5 - '@clack/core@1.3.1': dependencies: fast-wrap-ansi: 0.2.0 sisteransi: 1.0.5 - '@clack/prompts@1.3.0': - dependencies: - '@clack/core': 1.3.0 - fast-string-width: 3.0.2 - fast-wrap-ansi: 0.2.0 - sisteransi: 1.0.5 - '@clack/prompts@1.4.0': dependencies: '@clack/core': 1.3.1 @@ -9284,7 +9285,7 @@ snapshots: '@es-joy/jsdoccomment@0.86.0': dependencies: '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/types': 8.59.3 comment-parser: 1.4.6 esquery: 1.7.0 jsdoc-type-pratt-parser: 7.2.0 @@ -9410,7 +9411,7 @@ snapshots: eslint: 10.3.0(jiti@2.6.1) h3: 1.15.11 tinyglobby: 0.2.16 - ws: 8.20.0 + ws: 8.20.1 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -9531,10 +9532,6 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.81': - dependencies: - '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.82': dependencies: '@iconify/types': 2.0.0 @@ -9720,7 +9717,7 @@ snapshots: '@nuxt/cli@3.35.1(@nuxt/schema@4.4.5)(cac@7.0.0)(magicast@0.5.2)': dependencies: '@bomb.sh/tab': 0.0.14(cac@7.0.0)(citty@0.2.2) - '@clack/prompts': 1.3.0 + '@clack/prompts': 1.4.0 c12: 3.3.4(magicast@0.5.2) citty: 0.2.2 confbox: 0.2.4 @@ -9769,13 +9766,13 @@ snapshots: dependencies: '@nuxt/kit': 4.4.5(magicast@0.5.2) execa: 8.0.1 - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) transitivePeerDependencies: - magicast '@nuxt/devtools-wizard@3.2.4': dependencies: - '@clack/prompts': 1.3.0 + '@clack/prompts': 1.4.0 consola: 3.4.2 diff: 8.0.4 execa: 8.0.1 @@ -9784,7 +9781,7 @@ snapshots: pkg-types: 2.3.1 semver: 7.8.0 - '@nuxt/devtools@3.2.4(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(vite@8.0.13)(vue@3.5.34(typescript@6.0.3))': + '@nuxt/devtools@3.2.4(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(vite@8.0.13)(vue@3.5.34(typescript@6.0.3))': dependencies: '@nuxt/devtools-kit': 3.2.4(magicast@0.5.2)(vite@8.0.13) '@nuxt/devtools-wizard': 3.2.4 @@ -9814,13 +9811,13 @@ snapshots: sirv: 3.0.2 structured-clone-es: 2.0.0 tinyglobby: 0.2.16 - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) vite-plugin-inspect: 11.3.3(@nuxt/kit@4.4.5(magicast@0.5.2))(vite@8.0.13) vite-plugin-vue-tracer: 1.4.0(vite@8.0.13)(vue@3.5.34(typescript@6.0.3)) which: 6.0.1 ws: 8.20.0 optionalDependencies: - '@vitejs/devtools': 0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13) + '@vitejs/devtools': 0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13) transitivePeerDependencies: - bufferutil - supports-color @@ -9873,24 +9870,24 @@ snapshots: '@nuxt/eslint-config@1.15.2(@typescript-eslint/utils@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(@vue/compiler-sfc@3.5.34)(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)': dependencies: '@antfu/install-pkg': 1.1.0 - '@clack/prompts': 1.3.0 + '@clack/prompts': 1.4.0 '@eslint/js': 9.39.3 '@nuxt/eslint-plugin': 1.15.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) '@stylistic/eslint-plugin': 5.10.0(eslint@10.3.0(jiti@2.6.1)) - '@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) - '@typescript-eslint/parser': 8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.59.3(@typescript-eslint/parser@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/parser': 8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) eslint: 10.3.0(jiti@2.6.1) eslint-config-flat-gitignore: 2.3.0(eslint@10.3.0(jiti@2.6.1)) - eslint-flat-config-utils: 3.1.0 + eslint-flat-config-utils: 3.2.0 eslint-merge-processors: 2.0.0(eslint@10.3.0(jiti@2.6.1)) eslint-plugin-import-lite: 0.5.2(eslint@10.3.0(jiti@2.6.1)) eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1)) eslint-plugin-jsdoc: 62.9.0(eslint@10.3.0(jiti@2.6.1)) eslint-plugin-regexp: 3.1.0(eslint@10.3.0(jiti@2.6.1)) eslint-plugin-unicorn: 63.0.0(eslint@10.3.0(jiti@2.6.1)) - eslint-plugin-vue: 10.8.0(@stylistic/eslint-plugin@5.10.0(eslint@10.3.0(jiti@2.6.1)))(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1))) + eslint-plugin-vue: 10.9.1(@stylistic/eslint-plugin@5.10.0(eslint@10.3.0(jiti@2.6.1)))(@typescript-eslint/parser@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1))) eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.34)(eslint@10.3.0(jiti@2.6.1)) - globals: 17.5.0 + globals: 17.6.0 local-pkg: 1.1.2 pathe: 2.0.3 vue-eslint-parser: 10.4.0(eslint@10.3.0(jiti@2.6.1)) @@ -9903,7 +9900,7 @@ snapshots: '@nuxt/eslint-plugin@1.15.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/types': 8.59.3 '@typescript-eslint/utils': 8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) eslint: 10.3.0(jiti@2.6.1) transitivePeerDependencies: @@ -9919,7 +9916,7 @@ snapshots: '@nuxt/kit': 4.4.5(magicast@0.5.2) chokidar: 5.0.0 eslint: 10.3.0(jiti@2.6.1) - eslint-flat-config-utils: 3.1.0 + eslint-flat-config-utils: 3.2.0 eslint-typegen: 2.3.1(eslint@10.3.0(jiti@2.6.1)) find-up: 8.0.0 get-port-please: 3.2.0 @@ -9963,7 +9960,7 @@ snapshots: transitivePeerDependencies: - magicast - '@nuxt/nitro-server@4.4.5(@babel/core@7.29.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(nuxt@4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4))(oxc-parser@0.128.0)(rolldown@1.0.1)(typescript@6.0.3)': + '@nuxt/nitro-server@4.4.5(@babel/core@7.29.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(nuxt@4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4))(oxc-parser@0.128.0)(rolldown@1.0.1)(typescript@6.0.3)': dependencies: '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) '@nuxt/devalue': 2.0.2 @@ -9982,7 +9979,7 @@ snapshots: klona: 2.0.6 mocked-exports: 0.1.1 nitropack: 2.13.4(idb-keyval@6.2.2)(oxc-parser@0.128.0)(rolldown@1.0.1) - nuxt: 4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4) + nuxt: 4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4) nypm: 0.6.6 ohash: 2.0.11 pathe: 2.0.3 @@ -10116,7 +10113,7 @@ snapshots: rc9: 3.0.1 std-env: 4.1.0 - '@nuxt/vite-builder@4.4.5(cc4fd587fa2d27ada00a59f9529f8cf9)': + '@nuxt/vite-builder@4.4.5(0ea436c3957a26676c635d54be396380)': dependencies: '@nuxt/kit': 4.4.5(magicast@0.5.2) '@rollup/plugin-replace': 6.0.3(rollup@4.60.2) @@ -10134,7 +10131,7 @@ snapshots: magic-string: 0.30.21 mlly: 1.8.2 mocked-exports: 0.1.1 - nuxt: 4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4) + nuxt: 4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4) nypm: 0.6.6 pathe: 2.0.3 pkg-types: 2.3.1 @@ -10143,8 +10140,8 @@ snapshots: std-env: 4.1.0 ufo: 1.6.4 unenv: 2.0.0-rc.24 - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) - vite-node: 5.3.0(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite-node: 5.3.0(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) vite-plugin-checker: 0.13.0(eslint@10.3.0(jiti@2.6.1))(optionator@0.9.4)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3)) vue: 3.5.34(typescript@6.0.3) vue-bundle-renderer: 2.2.0 @@ -10321,6 +10318,9 @@ snapshots: '@oxc-parser/binding-android-arm-eabi@0.129.0': optional: true + '@oxc-parser/binding-android-arm-eabi@0.130.0': + optional: true + '@oxc-parser/binding-android-arm64@0.124.0': optional: true @@ -10333,6 +10333,9 @@ snapshots: '@oxc-parser/binding-android-arm64@0.129.0': optional: true + '@oxc-parser/binding-android-arm64@0.130.0': + optional: true + '@oxc-parser/binding-darwin-arm64@0.124.0': optional: true @@ -10345,6 +10348,9 @@ snapshots: '@oxc-parser/binding-darwin-arm64@0.129.0': optional: true + '@oxc-parser/binding-darwin-arm64@0.130.0': + optional: true + '@oxc-parser/binding-darwin-x64@0.124.0': optional: true @@ -10357,6 +10363,9 @@ snapshots: '@oxc-parser/binding-darwin-x64@0.129.0': optional: true + '@oxc-parser/binding-darwin-x64@0.130.0': + optional: true + '@oxc-parser/binding-freebsd-x64@0.124.0': optional: true @@ -10369,6 +10378,9 @@ snapshots: '@oxc-parser/binding-freebsd-x64@0.129.0': optional: true + '@oxc-parser/binding-freebsd-x64@0.130.0': + optional: true + '@oxc-parser/binding-linux-arm-gnueabihf@0.124.0': optional: true @@ -10381,6 +10393,9 @@ snapshots: '@oxc-parser/binding-linux-arm-gnueabihf@0.129.0': optional: true + '@oxc-parser/binding-linux-arm-gnueabihf@0.130.0': + optional: true + '@oxc-parser/binding-linux-arm-musleabihf@0.124.0': optional: true @@ -10393,6 +10408,9 @@ snapshots: '@oxc-parser/binding-linux-arm-musleabihf@0.129.0': optional: true + '@oxc-parser/binding-linux-arm-musleabihf@0.130.0': + optional: true + '@oxc-parser/binding-linux-arm64-gnu@0.124.0': optional: true @@ -10405,6 +10423,9 @@ snapshots: '@oxc-parser/binding-linux-arm64-gnu@0.129.0': optional: true + '@oxc-parser/binding-linux-arm64-gnu@0.130.0': + optional: true + '@oxc-parser/binding-linux-arm64-musl@0.124.0': optional: true @@ -10417,6 +10438,9 @@ snapshots: '@oxc-parser/binding-linux-arm64-musl@0.129.0': optional: true + '@oxc-parser/binding-linux-arm64-musl@0.130.0': + optional: true + '@oxc-parser/binding-linux-ppc64-gnu@0.124.0': optional: true @@ -10429,6 +10453,9 @@ snapshots: '@oxc-parser/binding-linux-ppc64-gnu@0.129.0': optional: true + '@oxc-parser/binding-linux-ppc64-gnu@0.130.0': + optional: true + '@oxc-parser/binding-linux-riscv64-gnu@0.124.0': optional: true @@ -10441,6 +10468,9 @@ snapshots: '@oxc-parser/binding-linux-riscv64-gnu@0.129.0': optional: true + '@oxc-parser/binding-linux-riscv64-gnu@0.130.0': + optional: true + '@oxc-parser/binding-linux-riscv64-musl@0.124.0': optional: true @@ -10453,6 +10483,9 @@ snapshots: '@oxc-parser/binding-linux-riscv64-musl@0.129.0': optional: true + '@oxc-parser/binding-linux-riscv64-musl@0.130.0': + optional: true + '@oxc-parser/binding-linux-s390x-gnu@0.124.0': optional: true @@ -10465,6 +10498,9 @@ snapshots: '@oxc-parser/binding-linux-s390x-gnu@0.129.0': optional: true + '@oxc-parser/binding-linux-s390x-gnu@0.130.0': + optional: true + '@oxc-parser/binding-linux-x64-gnu@0.124.0': optional: true @@ -10477,6 +10513,9 @@ snapshots: '@oxc-parser/binding-linux-x64-gnu@0.129.0': optional: true + '@oxc-parser/binding-linux-x64-gnu@0.130.0': + optional: true + '@oxc-parser/binding-linux-x64-musl@0.124.0': optional: true @@ -10489,6 +10528,9 @@ snapshots: '@oxc-parser/binding-linux-x64-musl@0.129.0': optional: true + '@oxc-parser/binding-linux-x64-musl@0.130.0': + optional: true + '@oxc-parser/binding-openharmony-arm64@0.124.0': optional: true @@ -10501,6 +10543,9 @@ snapshots: '@oxc-parser/binding-openharmony-arm64@0.129.0': optional: true + '@oxc-parser/binding-openharmony-arm64@0.130.0': + optional: true + '@oxc-parser/binding-wasm32-wasi@0.124.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) @@ -10530,6 +10575,13 @@ snapshots: '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true + '@oxc-parser/binding-wasm32-wasi@0.130.0': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + '@oxc-parser/binding-win32-arm64-msvc@0.124.0': optional: true @@ -10542,6 +10594,9 @@ snapshots: '@oxc-parser/binding-win32-arm64-msvc@0.129.0': optional: true + '@oxc-parser/binding-win32-arm64-msvc@0.130.0': + optional: true + '@oxc-parser/binding-win32-ia32-msvc@0.124.0': optional: true @@ -10554,6 +10609,9 @@ snapshots: '@oxc-parser/binding-win32-ia32-msvc@0.129.0': optional: true + '@oxc-parser/binding-win32-ia32-msvc@0.130.0': + optional: true + '@oxc-parser/binding-win32-x64-msvc@0.124.0': optional: true @@ -10566,6 +10624,9 @@ snapshots: '@oxc-parser/binding-win32-x64-msvc@0.129.0': optional: true + '@oxc-parser/binding-win32-x64-msvc@0.130.0': + optional: true + '@oxc-project/types@0.124.0': {} '@oxc-project/types@0.126.0': {} @@ -10851,8 +10912,6 @@ snapshots: '@rolldown/pluginutils@1.0.0-rc.13': {} - '@rolldown/pluginutils@1.0.0-rc.18': {} - '@rollup/plugin-alias@6.0.0(rollup@4.60.2)': optionalDependencies: rollup: 4.60.2 @@ -11121,7 +11180,7 @@ snapshots: '@stylistic/eslint-plugin@5.10.0(eslint@10.3.0(jiti@2.6.1))': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1)) - '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/types': 8.59.3 eslint: 10.3.0(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -11479,26 +11538,10 @@ snapshots: dependencies: '@types/node': 25.0.3 - '@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.59.3(@typescript-eslint/parser@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.58.2 - '@typescript-eslint/type-utils': 8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) - '@typescript-eslint/utils': 8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.58.2 - eslint: 10.3.0(jiti@2.6.1) - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/eslint-plugin@8.59.3(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/parser': 8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) '@typescript-eslint/scope-manager': 8.59.3 '@typescript-eslint/type-utils': 8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) '@typescript-eslint/utils': 8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) @@ -11523,18 +11566,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.58.2 - '@typescript-eslint/types': 8.58.2 - '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.58.2 - debug: 4.4.3 - eslint: 10.3.0(jiti@2.6.1) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/parser@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)': dependencies: '@typescript-eslint/scope-manager': 8.59.3 @@ -11556,15 +11587,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.58.2(typescript@6.0.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@6.0.3) - '@typescript-eslint/types': 8.59.2 - debug: 4.4.3 - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/project-service@8.59.3(typescript@6.0.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.59.3(typescript@6.0.3) @@ -11593,11 +11615,6 @@ snapshots: '@typescript-eslint/types': 8.56.1 '@typescript-eslint/visitor-keys': 8.56.1 - '@typescript-eslint/scope-manager@8.58.2': - dependencies: - '@typescript-eslint/types': 8.58.2 - '@typescript-eslint/visitor-keys': 8.58.2 - '@typescript-eslint/scope-manager@8.59.3': dependencies: '@typescript-eslint/types': 8.59.3 @@ -11607,30 +11624,10 @@ snapshots: dependencies: typescript: 6.0.3 - '@typescript-eslint/tsconfig-utils@8.58.2(typescript@6.0.3)': - dependencies: - typescript: 6.0.3 - - '@typescript-eslint/tsconfig-utils@8.59.2(typescript@6.0.3)': - dependencies: - typescript: 6.0.3 - '@typescript-eslint/tsconfig-utils@8.59.3(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)': - dependencies: - '@typescript-eslint/types': 8.58.2 - '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) - '@typescript-eslint/utils': 8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) - debug: 4.4.3 - eslint: 10.3.0(jiti@2.6.1) - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/type-utils@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)': dependencies: '@typescript-eslint/types': 8.59.3 @@ -11645,10 +11642,6 @@ snapshots: '@typescript-eslint/types@8.56.1': {} - '@typescript-eslint/types@8.58.2': {} - - '@typescript-eslint/types@8.59.2': {} - '@typescript-eslint/types@8.59.3': {} '@typescript-eslint/typescript-estree@8.56.1(typescript@6.0.3)': @@ -11666,21 +11659,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.58.2(typescript@6.0.3)': - dependencies: - '@typescript-eslint/project-service': 8.58.2(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@6.0.3) - '@typescript-eslint/types': 8.58.2 - '@typescript-eslint/visitor-keys': 8.58.2 - debug: 4.4.3 - minimatch: 10.2.4 - semver: 7.8.0 - tinyglobby: 0.2.16 - ts-api-utils: 2.5.0(typescript@6.0.3) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@8.59.3(typescript@6.0.3)': dependencies: '@typescript-eslint/project-service': 8.59.3(typescript@6.0.3) @@ -11707,17 +11685,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.58.2 - '@typescript-eslint/types': 8.58.2 - '@typescript-eslint/typescript-estree': 8.58.2(typescript@6.0.3) - eslint: 10.3.0(jiti@2.6.1) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/utils@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1)) @@ -11734,11 +11701,6 @@ snapshots: '@typescript-eslint/types': 8.56.1 eslint-visitor-keys: 5.0.1 - '@typescript-eslint/visitor-keys@8.58.2': - dependencies: - '@typescript-eslint/types': 8.58.2 - eslint-visitor-keys: 5.0.1 - '@typescript-eslint/visitor-keys@8.59.3': dependencies: '@typescript-eslint/types': 8.59.3 @@ -11975,7 +11937,7 @@ snapshots: pathe: 2.0.3 tinyglobby: 0.2.16 unplugin-utils: 0.3.1 - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) '@unocss/webpack@66.6.8(webpack@5.104.1(esbuild@0.28.0))': dependencies: @@ -12085,35 +12047,33 @@ snapshots: '@visual-json/core': 0.4.0 vue: 3.5.34(typescript@6.0.3) - '@vitejs/devtools-kit@0.1.21(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3)(vite@8.0.13)': + '@vitejs/devtools-kit@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3)(vite@8.0.13)': dependencies: - ansis: 4.2.0 birpc: 4.0.0 - devframe: 0.1.21(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) + devframe: 0.2.3(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) logs-sdk: 0.0.6 mlly: 1.8.2 - ohash: 2.0.11 pathe: 2.0.3 perfect-debounce: 2.1.0 - sirv: 3.0.2 tinyexec: 1.1.2 - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) transitivePeerDependencies: - '@modelcontextprotocol/sdk' - bufferutil + - crossws - typescript - utf-8-validate - '@vitejs/devtools-kit@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3)(vite@8.0.13)': + '@vitejs/devtools-kit@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3)(vite@8.0.13)': dependencies: birpc: 4.0.0 - devframe: 0.2.3(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) + devframe: 0.2.2(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) logs-sdk: 0.0.6 mlly: 1.8.2 pathe: 2.0.3 perfect-debounce: 2.1.0 tinyexec: 1.1.2 - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) transitivePeerDependencies: - '@modelcontextprotocol/sdk' - bufferutil @@ -12122,16 +12082,16 @@ snapshots: - utf-8-validate optional: true - '@vitejs/devtools-rolldown@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13)(vue@3.5.34(typescript@6.0.3))': + '@vitejs/devtools-rolldown@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13)(vue@3.5.34(typescript@6.0.3))': dependencies: '@floating-ui/dom': 1.7.6 '@pnpm/read-project-manifest': 1001.2.6(@pnpm/logger@1001.0.1) '@rolldown/debug': 1.0.1 - '@vitejs/devtools-kit': 0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3)(vite@8.0.13) + '@vitejs/devtools-kit': 0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3)(vite@8.0.13) birpc: 4.0.0 cac: 7.0.0 d3-shape: 3.2.0 - devframe: 0.2.3(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) + devframe: 0.2.2(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) diff: 9.0.0 get-port-please: 3.2.0 h3: 2.0.1-rc.22 @@ -12177,13 +12137,13 @@ snapshots: - vue optional: true - '@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13)': + '@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13)': dependencies: - '@vitejs/devtools-kit': 0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3)(vite@8.0.13) - '@vitejs/devtools-rolldown': 0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13)(vue@3.5.34(typescript@6.0.3)) + '@vitejs/devtools-kit': 0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3)(vite@8.0.13) + '@vitejs/devtools-rolldown': 0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13)(vue@3.5.34(typescript@6.0.3)) birpc: 4.0.0 cac: 7.0.0 - devframe: 0.2.3(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) + devframe: 0.2.2(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3) h3: 2.0.1-rc.22 logs-sdk: 0.0.6 mlly: 1.8.2 @@ -12191,7 +12151,7 @@ snapshots: pathe: 2.0.3 perfect-debounce: 2.1.0 tinyexec: 1.1.2 - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) vue: 3.5.34(typescript@6.0.3) ws: 8.20.1 transitivePeerDependencies: @@ -12227,7 +12187,7 @@ snapshots: '@babel/core': 7.29.0 '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) - '@rolldown/pluginutils': 1.0.0-rc.18 + '@rolldown/pluginutils': 1.0.0 '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.0) vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@packages+core)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) vue: 3.5.34(typescript@6.0.3) @@ -12239,9 +12199,9 @@ snapshots: '@babel/core': 7.29.0 '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) - '@rolldown/pluginutils': 1.0.0-rc.18 + '@rolldown/pluginutils': 1.0.0 '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.0) - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) vue: 3.5.34(typescript@6.0.3) transitivePeerDependencies: - supports-color @@ -12255,7 +12215,7 @@ snapshots: '@vitejs/plugin-vue@6.0.6(vite@8.0.13)(vue@3.5.34(typescript@6.0.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.13 - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) vue: 3.5.34(typescript@6.0.3) '@vitest/eslint-plugin@1.6.17(@typescript-eslint/eslint-plugin@8.59.3(@typescript-eslint/parser@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3)(vitest@4.1.6(@opentelemetry/api@1.9.0)(@types/node@25.0.3)(vite@8.0.13))': @@ -12264,7 +12224,7 @@ snapshots: '@typescript-eslint/utils': 8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) eslint: 10.3.0(jiti@2.6.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.59.3(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.59.3(@typescript-eslint/parser@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) typescript: 6.0.3 vitest: 4.1.6(@opentelemetry/api@1.9.0)(@types/node@25.0.3)(vite@8.0.13) transitivePeerDependencies: @@ -12293,11 +12253,7 @@ snapshots: estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) - - '@vitest/pretty-format@4.1.5': - dependencies: - tinyrainbow: 3.1.0 + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) '@vitest/pretty-format@4.1.6': dependencies: @@ -12317,12 +12273,6 @@ snapshots: '@vitest/spy@4.1.6': {} - '@vitest/utils@4.1.5': - dependencies: - '@vitest/pretty-format': 4.1.5 - convert-source-map: 2.0.0 - tinyrainbow: 3.1.0 - '@vitest/utils@4.1.6': dependencies: '@vitest/pretty-format': 4.1.6 @@ -12486,16 +12436,6 @@ snapshots: '@vue/devtools-shared@8.1.2': {} - '@vue/language-core@3.2.8': - dependencies: - '@volar/language-core': 2.4.28 - '@vue/compiler-dom': 3.5.34 - '@vue/shared': 3.5.34 - alien-signals: 3.1.2 - muggle-string: 0.4.1 - path-browserify: 1.0.1 - picomatch: 4.0.4 - '@vue/language-core@3.2.9': dependencies: '@volar/language-core': 2.4.28 @@ -12576,13 +12516,13 @@ snapshots: '@vueuse/metadata@14.3.0': {} - '@vueuse/nuxt@14.3.0(magicast@0.5.2)(nuxt@4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4))(vue@3.5.34(typescript@6.0.3))': + '@vueuse/nuxt@14.3.0(magicast@0.5.2)(nuxt@4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4))(vue@3.5.34(typescript@6.0.3))': dependencies: '@nuxt/kit': 4.4.5(magicast@0.5.2) '@vueuse/core': 14.3.0(vue@3.5.34(typescript@6.0.3)) '@vueuse/metadata': 14.3.0 local-pkg: 1.1.2 - nuxt: 4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4) + nuxt: 4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4) vue: 3.5.34(typescript@6.0.3) transitivePeerDependencies: - magicast @@ -12760,8 +12700,6 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - alien-signals@3.1.2: {} - alien-signals@3.2.0: {} ansi-align@3.0.1: @@ -13520,30 +13458,27 @@ snapshots: devalue@5.8.0: {} - devframe@0.1.21(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3): + devframe@0.2.2(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3): dependencies: '@valibot/to-json-schema': 1.7.0(valibot@1.4.0(typescript@6.0.3)) - ansis: 4.2.0 birpc: 4.0.0 cac: 7.0.0 - h3: 1.15.11 - immer: 11.1.7 - launch-editor: 2.13.2 + h3: 2.0.1-rc.22 logs-sdk: 0.0.6 - ohash: 2.0.11 + mrmime: 2.0.1 pathe: 2.0.3 - sirv: 3.0.2 - structured-clone-es: 2.0.0 valibot: 1.4.0(typescript@6.0.3) - ws: 8.20.0 + ws: 8.20.1 optionalDependencies: '@modelcontextprotocol/sdk': 1.29.0(zod@4.3.6) transitivePeerDependencies: - bufferutil + - crossws - typescript - utf-8-validate + optional: true - devframe@0.2.2(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3): + devframe@0.2.3(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3): dependencies: '@valibot/to-json-schema': 1.7.0(valibot@1.4.0(typescript@6.0.3)) birpc: 4.0.0 @@ -13562,14 +13497,14 @@ snapshots: - typescript - utf-8-validate - devframe@0.2.3(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3): + devframe@0.3.0(patch_hash=11c90360b1a79e6b23bd30a1659078b11a1a3b45998189dd44602d6f4fd72227)(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3): dependencies: '@valibot/to-json-schema': 1.7.0(valibot@1.4.0(typescript@6.0.3)) birpc: 4.0.0 cac: 7.0.0 h3: 2.0.1-rc.22 - logs-sdk: 0.0.6 mrmime: 2.0.1 + nostics: 0.1.0 pathe: 2.0.3 valibot: 1.4.0(typescript@6.0.3) ws: 8.20.1 @@ -13580,7 +13515,6 @@ snapshots: - crossws - typescript - utf-8-validate - optional: true devlop@1.1.0: dependencies: @@ -13606,10 +13540,6 @@ snapshots: dependencies: domelementtype: 2.3.0 - dompurify@3.4.2: - optionalDependencies: - '@types/trusted-types': 2.0.7 - dompurify@3.4.3: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -13738,11 +13668,6 @@ snapshots: '@eslint/compat': 2.0.3(eslint@10.3.0(jiti@2.6.1)) eslint: 10.3.0(jiti@2.6.1) - eslint-flat-config-utils@3.1.0: - dependencies: - '@eslint/config-helpers': 0.5.5 - pathe: 2.0.3 - eslint-flat-config-utils@3.2.0: dependencies: '@eslint/config-helpers': 0.5.5 @@ -13794,7 +13719,7 @@ snapshots: eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1)): dependencies: - '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/types': 8.59.3 comment-parser: 1.4.6 debug: 4.4.3 eslint: 10.3.0(jiti@2.6.1) @@ -13947,21 +13872,7 @@ snapshots: dependencies: eslint: 10.3.0(jiti@2.6.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.59.3(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) - - eslint-plugin-vue@10.8.0(@stylistic/eslint-plugin@5.10.0(eslint@10.3.0(jiti@2.6.1)))(@typescript-eslint/parser@8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1))): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.6.1)) - eslint: 10.3.0(jiti@2.6.1) - natural-compare: 1.4.0 - nth-check: 2.1.1 - postcss-selector-parser: 7.1.1 - semver: 7.8.0 - vue-eslint-parser: 10.4.0(eslint@10.3.0(jiti@2.6.1)) - xml-name-validator: 4.0.0 - optionalDependencies: - '@stylistic/eslint-plugin': 5.10.0(eslint@10.3.0(jiti@2.6.1)) - '@typescript-eslint/parser': 8.58.2(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.59.3(@typescript-eslint/parser@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) eslint-plugin-vue@10.9.1(@stylistic/eslint-plugin@5.10.0(eslint@10.3.0(jiti@2.6.1)))(@typescript-eslint/parser@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(vue-eslint-parser@10.4.0(eslint@10.3.0(jiti@2.6.1))): dependencies: @@ -14377,8 +14288,6 @@ snapshots: globals@16.5.0: {} - globals@17.5.0: {} - globals@17.6.0: {} globby@16.2.0: @@ -14515,8 +14424,6 @@ snapshots: image-meta@0.2.2: {} - immer@11.1.7: {} - import-without-cache@0.4.0: {} impound@1.1.5: @@ -15127,7 +15034,7 @@ snapshots: d3-sankey: 0.12.3 dagre-d3-es: 7.0.14 dayjs: 1.11.19 - dompurify: 3.4.2 + dompurify: 3.4.3 es-toolkit: 1.46.1 katex: 0.16.27 khroma: 2.1.0 @@ -15576,6 +15483,12 @@ snapshots: normalize-path@3.0.0: {} + nostics@0.1.0: + dependencies: + magic-string: 0.30.21 + oxc-parser: 0.130.0 + unplugin: 3.0.0 + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 @@ -15593,16 +15506,16 @@ snapshots: dependencies: boolbase: 1.0.0 - nuxt@4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4): + nuxt@4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4): dependencies: '@dxup/nuxt': 0.4.1(magicast@0.5.2)(typescript@6.0.3) '@nuxt/cli': 3.35.1(@nuxt/schema@4.4.5)(cac@7.0.0)(magicast@0.5.2) - '@nuxt/devtools': 3.2.4(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(vite@8.0.13)(vue@3.5.34(typescript@6.0.3)) + '@nuxt/devtools': 3.2.4(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(vite@8.0.13)(vue@3.5.34(typescript@6.0.3)) '@nuxt/kit': 4.4.5(magicast@0.5.2) - '@nuxt/nitro-server': 4.4.5(@babel/core@7.29.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(nuxt@4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4))(oxc-parser@0.128.0)(rolldown@1.0.1)(typescript@6.0.3) + '@nuxt/nitro-server': 4.4.5(@babel/core@7.29.0)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(nuxt@4.4.5(@babel/core@7.29.0)(@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0))(@parcel/watcher@2.5.6)(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(@vue/compiler-sfc@3.5.34)(cac@7.0.0)(db0@0.3.4)(esbuild@0.28.0)(eslint@10.3.0(jiti@2.6.1))(idb-keyval@6.2.2)(ioredis@5.10.1)(magicast@0.5.2)(optionator@0.9.4)(rolldown@1.0.1)(rollup-plugin-visualizer@7.0.1(rolldown@1.0.1)(rollup@4.60.2))(rollup@4.60.2)(terser@5.44.1)(tsx@4.22.0)(typescript@6.0.3)(vite@8.0.13)(vue-tsc@3.2.9(typescript@6.0.3))(yaml@2.8.4))(oxc-parser@0.128.0)(rolldown@1.0.1)(typescript@6.0.3) '@nuxt/schema': 4.4.5 '@nuxt/telemetry': 2.8.0(@nuxt/kit@4.4.5(magicast@0.5.2)) - '@nuxt/vite-builder': 4.4.5(cc4fd587fa2d27ada00a59f9529f8cf9) + '@nuxt/vite-builder': 4.4.5(0ea436c3957a26676c635d54be396380) '@unhead/vue': 2.1.13(vue@3.5.34(typescript@6.0.3)) '@vue/shared': 3.5.34 chokidar: 5.0.0 @@ -16055,6 +15968,31 @@ snapshots: '@oxc-parser/binding-win32-ia32-msvc': 0.129.0 '@oxc-parser/binding-win32-x64-msvc': 0.129.0 + oxc-parser@0.130.0: + dependencies: + '@oxc-project/types': 0.130.0 + optionalDependencies: + '@oxc-parser/binding-android-arm-eabi': 0.130.0 + '@oxc-parser/binding-android-arm64': 0.130.0 + '@oxc-parser/binding-darwin-arm64': 0.130.0 + '@oxc-parser/binding-darwin-x64': 0.130.0 + '@oxc-parser/binding-freebsd-x64': 0.130.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.130.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.130.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.130.0 + '@oxc-parser/binding-linux-arm64-musl': 0.130.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.130.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.130.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.130.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.130.0 + '@oxc-parser/binding-linux-x64-gnu': 0.130.0 + '@oxc-parser/binding-linux-x64-musl': 0.130.0 + '@oxc-parser/binding-openharmony-arm64': 0.130.0 + '@oxc-parser/binding-wasm32-wasi': 0.130.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.130.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.130.0 + '@oxc-parser/binding-win32-x64-msvc': 0.130.0 + oxc-transform@0.128.0: optionalDependencies: '@oxc-transform/binding-android-arm-eabi': 0.128.0 @@ -16734,11 +16672,9 @@ snapshots: serialize-javascript@7.0.4: {} - seroval-plugins@1.5.1(seroval@1.5.2): + seroval-plugins@1.5.1(seroval@1.5.4): dependencies: - seroval: 1.5.2 - - seroval@1.5.2: {} + seroval: 1.5.4 seroval@1.5.4: {} @@ -16871,14 +16807,14 @@ snapshots: skills-npm@1.1.1: dependencies: - '@clack/prompts': 1.3.0 + '@clack/prompts': 1.4.0 cac: 7.0.0 gray-matter: 4.0.3 picocolors: 1.1.1 tinyglobby: 0.2.16 unconfig: 7.5.0 xdg-basedir: 5.1.0 - yaml: 2.8.3 + yaml: 2.8.4 slash@5.1.0: {} @@ -16887,8 +16823,8 @@ snapshots: solid-js@1.9.12: dependencies: csstype: 3.2.3 - seroval: 1.5.2 - seroval-plugins: 1.5.1(seroval@1.5.2) + seroval: 1.5.4 + seroval-plugins: 1.5.1(seroval@1.5.4) solid-refresh@0.6.3(solid-js@1.9.12): dependencies: @@ -17146,7 +17082,7 @@ snapshots: ts-dedent@2.2.0: {} - tsdown@0.22.0(@vitejs/devtools@0.1.23)(publint@0.3.21)(tsx@4.22.0)(typescript@6.0.3)(unrun@0.2.37(synckit@0.11.12))(vue-tsc@3.2.9(typescript@6.0.3)): + tsdown@0.22.0(@vitejs/devtools@0.1.24)(publint@0.3.21)(tsx@4.22.0)(typescript@6.0.3)(unrun@0.2.37(synckit@0.11.12))(vue-tsc@3.2.9(typescript@6.0.3)): dependencies: ansis: 4.2.0 cac: 7.0.0 @@ -17164,7 +17100,7 @@ snapshots: tree-kill: 1.2.2 unconfig-core: 7.5.0 optionalDependencies: - '@vitejs/devtools': 0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13) + '@vitejs/devtools': 0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13) publint: 0.3.21 tsx: 4.22.0 typescript: 6.0.3 @@ -17208,7 +17144,7 @@ snapshots: tsnapi@0.3.3(vitest@4.1.6(@opentelemetry/api@1.9.0)(@types/node@25.0.3)(vite@8.0.13)): dependencies: - '@vitest/utils': 4.1.5 + '@vitest/utils': 4.1.6 cac: 7.0.0 magic-string: 0.30.21 oxc-parser: 0.129.0 @@ -17237,7 +17173,7 @@ snapshots: twoslash-vue@0.3.6(typescript@6.0.3): dependencies: - '@vue/language-core': 3.2.8 + '@vue/language-core': 3.2.9 twoslash: 0.3.8(typescript@6.0.3) twoslash-protocol: 0.3.6 typescript: 6.0.3 @@ -17441,14 +17377,14 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.4 - unplugin-vue@7.2.0(@types/node@25.0.3)(@vitejs/devtools@0.1.23)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(vue@3.5.34(typescript@6.0.3))(yaml@2.8.4): + unplugin-vue@7.2.0(@types/node@25.0.3)(@vitejs/devtools@0.1.24)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(vue@3.5.34(typescript@6.0.3))(yaml@2.8.4): dependencies: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 '@vue/reactivity': 3.5.34 obug: 2.1.1 unplugin: 3.0.0 - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) vue: 3.5.34(typescript@6.0.3) transitivePeerDependencies: - '@types/node' @@ -17597,7 +17533,7 @@ snapshots: vite-dev-rpc@1.1.0(vite@8.0.13): dependencies: birpc: 2.9.0 - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) vite-hot-client: 2.2.0(vite@8.0.13) vite-hot-client@2.2.0(vite@8.0.13(@types/node@25.0.3)(@vitejs/devtools@packages+core)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4)): @@ -17606,15 +17542,15 @@ snapshots: vite-hot-client@2.2.0(vite@8.0.13): dependencies: - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) - vite-node@5.3.0(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4): + vite-node@5.3.0(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4): dependencies: cac: 7.0.0 es-module-lexer: 2.0.0 obug: 2.1.1 pathe: 2.0.3 - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) transitivePeerDependencies: - '@types/node' - '@vitejs/devtools' @@ -17678,7 +17614,7 @@ snapshots: proper-lockfile: 4.1.2 tiny-invariant: 1.3.3 tinyglobby: 0.2.16 - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) vscode-uri: 3.1.0 optionalDependencies: eslint: 10.3.0(jiti@2.6.1) @@ -17713,7 +17649,7 @@ snapshots: perfect-debounce: 2.1.0 sirv: 3.0.2 unplugin-utils: 0.3.1 - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) vite-dev-rpc: 1.1.0(vite@8.0.13) optionalDependencies: '@nuxt/kit': 4.4.5(magicast@0.5.2) @@ -17722,7 +17658,7 @@ snapshots: vite-plugin-inspect@12.0.0-beta.1(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@nuxt/kit@4.4.5(magicast@0.5.2))(typescript@6.0.3)(vite@8.0.13): dependencies: - '@vitejs/devtools-kit': 0.1.21(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3)(vite@8.0.13) + '@vitejs/devtools-kit': 0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(typescript@6.0.3)(vite@8.0.13) ansis: 4.2.0 error-stack-parser-es: 1.0.5 obug: 2.1.1 @@ -17731,12 +17667,13 @@ snapshots: perfect-debounce: 2.1.0 sirv: 3.0.2 unplugin-utils: 0.3.1 - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) optionalDependencies: '@nuxt/kit': 4.4.5(magicast@0.5.2) transitivePeerDependencies: - '@modelcontextprotocol/sdk' - bufferutil + - crossws - typescript - utf-8-validate @@ -17770,10 +17707,10 @@ snapshots: magic-string: 0.30.21 pathe: 2.0.3 source-map-js: 1.2.1 - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) vue: 3.5.34(typescript@6.0.3) - vite@8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4): + vite@8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -17782,7 +17719,7 @@ snapshots: tinyglobby: 0.2.16 optionalDependencies: '@types/node': 25.0.3 - '@vitejs/devtools': 0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13) + '@vitejs/devtools': 0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13) esbuild: 0.28.0 fsevents: 2.3.3 jiti: 2.6.1 @@ -17790,7 +17727,7 @@ snapshots: tsx: 4.22.0 yaml: 2.8.4 - vite@8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4): + vite@8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -17799,7 +17736,7 @@ snapshots: tinyglobby: 0.2.16 optionalDependencies: '@types/node': 25.0.3 - '@vitejs/devtools': 0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13) + '@vitejs/devtools': 0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13) esbuild: 0.28.0 fsevents: 2.3.3 jiti: 2.6.1 @@ -17848,13 +17785,13 @@ snapshots: '@docsearch/css': 4.5.4 '@docsearch/js': 4.5.4 '@docsearch/sidepanel-js': 4.5.4 - '@iconify-json/simple-icons': 1.2.81 + '@iconify-json/simple-icons': 1.2.82 '@shikijs/core': 3.23.0 '@shikijs/transformers': 3.23.0 '@shikijs/types': 3.23.0 '@types/markdown-it': 14.1.2 '@vitejs/plugin-vue': 6.0.6(vite@8.0.13(@types/node@25.0.3)(@vitejs/devtools@packages+core)(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4))(vue@3.5.34(typescript@6.0.3)) - '@vue/devtools-api': 8.0.6 + '@vue/devtools-api': 8.1.2 '@vue/shared': 3.5.34 '@vueuse/core': 14.3.0(vue@3.5.34(typescript@6.0.3)) '@vueuse/integrations': 14.2.1(change-case@5.4.4)(focus-trap@8.0.0)(fuse.js@7.3.0)(idb-keyval@6.2.2)(vue@3.5.34(typescript@6.0.3)) @@ -17941,7 +17878,7 @@ snapshots: tinyexec: 1.1.2 tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.23(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) + vite: 8.0.13(@types/node@25.0.3)(@vitejs/devtools@0.1.24(@modelcontextprotocol/sdk@1.29.0(zod@4.3.6))(@pnpm/logger@1001.0.1)(db0@0.3.4)(idb-keyval@6.2.2)(ioredis@5.10.1)(typescript@6.0.3)(vite@8.0.13))(esbuild@0.28.0)(jiti@2.6.1)(terser@5.44.1)(tsx@4.22.0)(yaml@2.8.4) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 34c56229..5e48411c 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -4,7 +4,6 @@ allowBuilds: simple-git-hooks: true unrs-resolver: true vue-demi: true - ignoreWorkspaceRootCheck: true shamefullyHoist: true shellEmulator: true @@ -33,6 +32,8 @@ overrides: semver: 'catalog:resolutions' twoslash: 'catalog:docs' vite: 'catalog:build' +patchedDependencies: + devframe@0.3.0: patches/devframe@0.3.0.patch catalogs: build: '@antfu/ni': ^30.1.0 @@ -57,15 +58,14 @@ catalogs: '@rolldown/debug': ^1.0.1 birpc: ^4.0.0 cac: ^7.0.0 - # 0.2.3 emits dts in a way that breaks kit/core's `declare module` augmentations. - devframe: 0.2.2 + devframe: ^0.3.0 diff: ^9.0.0 envinfo: ^7.21.0 get-port-please: ^3.2.0 h3: 2.0.1-rc.22 - logs-sdk: ^0.0.6 mlly: ^1.8.2 mrmime: ^2.0.1 + nostics: ^0.1.0 obug: ^2.1.1 p-limit: ^7.3.0 pathe: ^2.0.3 diff --git a/skills/vite-devtools-kit/SKILL.md b/skills/vite-devtools-kit/SKILL.md index 26a5e554..6c25ae5f 100644 --- a/skills/vite-devtools-kit/SKILL.md +++ b/skills/vite-devtools-kit/SKILL.md @@ -31,7 +31,7 @@ A DevTools plugin extends a Vite plugin with a `devtools.setup(ctx)` hook. The c | `ctx.rpc.sharedState` | devframe | Synchronized server-client state | | `ctx.rpc.streaming` | devframe | Streaming channels — chunk-style server↔client data with cancellation, replay, Web Streams interop | | `ctx.views` | devframe | Host static files for UI (`hostStatic(base, distDir)`) | -| `ctx.diagnostics` | devframe | Structured diagnostics host (logs-sdk) — register custom error codes | +| `ctx.diagnostics` | devframe | Structured diagnostics host (nostics) — register custom error codes | | `ctx.createJsonRenderer` | **kit** | Create server-side JSON render specs for zero-client-code UIs | | `ctx.viteConfig` | core | Resolved Vite configuration | | `ctx.viteServer` | core | Dev server instance (dev mode only) | @@ -666,7 +666,7 @@ Real-world example plugins in the repo — reference their code structure and pa - [JSON Render Patterns](./references/json-render-patterns.md) - Server-side JSON specs, components, state binding - [Terminals Patterns](./references/terminals-patterns.md) - Child processes, custom streams, session lifecycle - [Messages Patterns](./references/messages-patterns.md) - Message entries, toast notifications, and handle patterns -- [Diagnostics Patterns](./references/diagnostics-patterns.md) - Coded errors / warnings via `ctx.diagnostics` (logs-sdk integration) +- [Diagnostics Patterns](./references/diagnostics-patterns.md) - Coded errors / warnings via `ctx.diagnostics` (nostics integration) - [Commands Patterns](./references/commands-patterns.md) - Command registration, sub-commands, keybindings, palette integration - [When Clauses](./references/when-clauses.md) - Conditional expression syntax, context variables, API reference - [Remote Client Patterns](./references/remote-client-patterns.md) - Remote-hosted iframe docks, `connectRemoteDevTools`, trust model diff --git a/skills/vite-devtools-kit/references/diagnostics-patterns.md b/skills/vite-devtools-kit/references/diagnostics-patterns.md index e68facca..bb76ec43 100644 --- a/skills/vite-devtools-kit/references/diagnostics-patterns.md +++ b/skills/vite-devtools-kit/references/diagnostics-patterns.md @@ -1,22 +1,22 @@ # Structured Diagnostics Patterns -`ctx.diagnostics` exposes a shared [`logs-sdk`](https://github.com/vercel-labs/logs-sdk) logger and lets plugins register their own coded errors / warnings without depending on `logs-sdk` directly. Use it for *author-defined coded conditions* with a stable code and a docs URL — distinct from `ctx.messages`, which is for free-form user-facing notifications shown in the DevTools UI. +`ctx.diagnostics` exposes a shared [`nostics`](https://github.com/vercel-labs/nostics) registry and lets plugins register their own coded errors / warnings without depending on `nostics` directly. Use it for *author-defined coded conditions* with a stable code and a docs URL — distinct from `ctx.messages`, which is for free-form user-facing notifications shown in the DevTools UI. ## API Surface ```ts interface DevToolsDiagnosticsHost { - /** Combined logs-sdk Logger across all registered diagnostics. Always returns the freshest logger — rebuilt on each `register()`. */ - readonly logger: Logger + /** Proxy-backed lookup of every registered code by name. Each entry is a + * `nostics` handle with `.report()` and `.throw()` methods. Loosely typed + * because it spans heterogeneous definitions from different integrations. */ + readonly logger: Record /** Register additional diagnostic definitions with the host. */ - register: (definitions: DiagnosticsResult) => void + register: (definitions: Record) => void - /** Re-export of logs-sdk's `defineDiagnostics`. */ + /** Mirror of `nostics`'s `defineDiagnostics`, pre-wired with the host's + * ANSI console reporter. Plugins typically omit `reporters`. */ defineDiagnostics: typeof defineDiagnostics - - /** Re-export of logs-sdk's `createLogger`. */ - createLogger: typeof createLogger } ``` @@ -41,11 +41,10 @@ ctx.diagnostics.defineDiagnostics({ docsBase: 'https://example.com/errors', codes: { MYP0001: { - message: 'Static string message', + why: 'Static string message', // OR a template function: - // message: (p: { name: string }) => `Plugin "${p.name}" failed`, - hint: 'Optional secondary guidance — shown after the message.', - level: 'warn', // 'error' (default) | 'warn' | 'suggestion' | 'deprecation' + // why: (p: { name: string }) => `Plugin "${p.name}" failed`, + fix: 'Optional secondary remediation guidance — shown after the message.', }, }, }) @@ -65,12 +64,11 @@ export function MyPlugin(): PluginWithDevTools { docsBase: 'https://my-plugin.dev/errors', codes: { MYP0001: { - message: (p: { name: string }) => `Plugin "${p.name}" is not configured`, - hint: 'Pass an options object to the plugin in `vite.config.ts`.', + why: (p: { name: string }) => `Plugin "${p.name}" is not configured`, + fix: 'Pass an options object to the plugin in `vite.config.ts`.', }, MYP0002: { - message: 'Cache directory missing — running cold.', - level: 'warn', + why: 'Cache directory missing — running cold.', }, }, }) @@ -83,56 +81,43 @@ export function MyPlugin(): PluginWithDevTools { ## Emit a Diagnostic -Each code becomes a callable factory on `ctx.diagnostics.logger`. Each call returns an object with `.throw()`, `.warn()`, `.error()`, `.log()`, and `.format()`. +Each registered code is reachable as a property on `ctx.diagnostics.logger`. Every handle exposes `.throw(params)` and `.report(params)`. ```ts // Throw — control flow stops here. Prefix with `throw` for TS narrowing. -throw ctx.diagnostics.logger.MYP0001({ name: 'foo' }).throw() - -// Log without throwing -ctx.diagnostics.logger.MYP0002().log() +throw ctx.diagnostics.logger.MYP0001.throw({ name: 'foo' }) -// Override level per call -ctx.diagnostics.logger.MYP0002().warn() +// Report without throwing (goes through the host's reporter) +ctx.diagnostics.logger.MYP0002.report() -// Attach a cause -ctx.diagnostics.logger.MYP0001({ name }, { cause: error }).log() +// Attach a cause via the params object +ctx.diagnostics.logger.MYP0001.report({ name, cause: error }) ``` -## Loosely Typed `logger` vs Typed Reference +## Loosely Typed `logger` vs Typed Handle -`ctx.diagnostics.logger` covers an unbounded set of registered codes, so TypeScript can't narrow them. For full autocompletion, keep your own typed reference via `createLogger`: +`ctx.diagnostics.logger` is a proxy covering an unbounded set of registered codes, so TypeScript can't narrow them. For full autocompletion, keep your own reference to the typed handle returned from `defineDiagnostics()`: ```ts const diagnostics = ctx.diagnostics.defineDiagnostics({ /* ... */ }) -// Register so the shared logger sees it too +// Register so the shared lookup sees it too ctx.diagnostics.register(diagnostics) -// Typed reference — autocompletes MYP* codes -const logger = ctx.diagnostics.createLogger({ diagnostics: [diagnostics] }) -logger.MYP0001({ name: 'foo' }).warn() +// Typed handle — autocompletes MYP* codes +diagnostics.MYP0001.report({ name: 'foo' }) ``` -Both loggers share the host's default formatter (ANSI) and reporter (console). +Both paths share the host's default formatter (ANSI) and reporter (console). ## Anti-Patterns ```ts -// ❌ Caching the getter — stale after a later register() call -const log = ctx.diagnostics.logger -log.MYP0001({ name: 'foo' }).log() - -// ✅ Always go through the getter -ctx.diagnostics.logger.MYP0001({ name: 'foo' }).log() -``` - -```ts -// ❌ Using a raw throw with an ad-hoc string +// ❌ Raw throw with an ad-hoc string throw new Error('Plugin foo not configured') // ✅ Use a structured code -throw ctx.diagnostics.logger.MYP0001({ name: 'foo' }).throw() +throw ctx.diagnostics.logger.MYP0001.throw({ name: 'foo' }) ``` ```ts @@ -140,7 +125,7 @@ throw ctx.diagnostics.logger.MYP0001({ name: 'foo' }).throw() ctx.messages.add({ message: 'Plugin failed: bad config', level: 'error' }) // ✅ Use ctx.diagnostics for coded conditions; ctx.messages for UI activity -ctx.diagnostics.logger.MYP0001({ name }).log() +ctx.diagnostics.logger.MYP0001.report({ name }) ``` ## Document Your Codes @@ -166,4 +151,4 @@ Each page covers: message, cause, example trigger, and fix. The `docsBase` you s - `packages/core/src/node/diagnostics.ts` — `DTK*` codes (Vite-specific) - `packages/rolldown/src/node/diagnostics.ts` — `RDDT*` codes (rolldown UI) -Each defines a `diagnostics` object via `defineDiagnostics(...)` and either keeps its own `createLogger`-built `logger` or — in plugin setup — calls `ctx.diagnostics.register(diagnostics)` to fold the codes into the shared host logger. +Each defines a `diagnostics` object via `defineDiagnostics(...)` and either uses its own typed handle directly, or — in plugin setup — calls `ctx.diagnostics.register(diagnostics)` to fold the codes into the shared host lookup.