diff --git a/bun.lock b/bun.lock index 949144f3b..9b8ad334a 100644 --- a/bun.lock +++ b/bun.lock @@ -125,9 +125,9 @@ }, }, "patchedDependencies": { + "electrobun@1.18.1": "patches/electrobun@1.18.1.patch", "@mariozechner/pi-coding-agent@0.73.1": "patches/@mariozechner%2Fpi-coding-agent@0.73.1.patch", "electrobun-e2e@1.0.2": "patches/electrobun-e2e@1.0.2.patch", - "electrobun@1.18.1": "patches/electrobun@1.18.1.patch", "electrobun-browser-tools@1.0.1": "patches/electrobun-browser-tools@1.0.1.patch", }, "packages": { diff --git a/docs/execution-model.md b/docs/execution-model.md index f6d861eaa..9537f3e2f 100644 --- a/docs/execution-model.md +++ b/docs/execution-model.md @@ -100,7 +100,7 @@ Smithers owns workflow authoring concepts and workflow graph, run, node, iterati resume semantics. `svvy` owns Shell command tracking, app approval/sandbox execution, pi-backed workflow task-agent attempt surfaces, durable observed Smithers facts, and the narrow runtime-owned `runTaskAgent` bridge. Agents use official Smithers CLI commands through Shell, such as -`bunx smithers-orchestrator ...`, according to Smithers documentation and the active +`bunx smthrs ...`, according to Smithers documentation and the active sandbox/approval policy. `svvy` does not expose `workflow.*`, `svvyx smithers`, or loopback Smithers runtime-control tools as product surfaces. diff --git a/docs/features.ts b/docs/features.ts index 56480a469..db63bee20 100644 --- a/docs/features.ts +++ b/docs/features.ts @@ -212,7 +212,7 @@ export const PRODUCT_FEATURES: ProductFeature[] = [ name: "Extension CLI Requirements", status: "in-progress", summary: - "Lets extensions declare required CLIs or command providers with a binary name, optional package name, default target version, version-check command, and reusable exact-version install/update command template when that provider is installed rather than `bunx`-resolved; reports missing, unknown, available, detected version, current version, latest version, and update-available state through Extension Managing inspect/build and the Extensions UI; keeps user-clicked Extensions UI install/update admission outside the shipped public runtime facade surface; excludes dependency-action admission from the shipped public runtime facade surface unless a runtime-owned contract specifies app-global scope, immutable dependency planning, durable command and approval facts, sandboxed package-manager execution, readiness refresh, invalidation, cancellation, shutdown, and recovery; keeps `@svvy/extensions` responsible for immutable dependency command planning and normalized dependency identity interpretation while committed dependency approval facts are DB/product-state-backed `@svvy/state` facts read through `ExtensionStatePort`, with optional origin workspace identity as UI lineage only; agent-initiated installs remain ordinary Shell work; uses default versioned requirements for `cx-cli@0.7.1`, Smithers documentation generated from `smithers-orchestrator@0.22.0` while preserving official `bunx smithers-orchestrator ...` commands, and `@tiny-fish/cli@0.1.6`; and keeps Git and GitHub CLI requirements unversioned because their builtin instructions are not pinned to a specific CLI release.", + "Lets extensions declare required CLIs or command providers with a binary name, optional package name, default target version, version-check command, and reusable exact-version install/update command template when that provider is installed rather than `bunx`-resolved; reports missing, unknown, available, detected version, current version, latest version, and update-available state through Extension Managing inspect/build and the Extensions UI; keeps user-clicked Extensions UI install/update admission outside the shipped public runtime facade surface; excludes dependency-action admission from the shipped public runtime facade surface unless a runtime-owned contract specifies app-global scope, immutable dependency planning, durable command and approval facts, sandboxed package-manager execution, readiness refresh, invalidation, cancellation, shutdown, and recovery; keeps `@svvy/extensions` responsible for immutable dependency command planning and normalized dependency identity interpretation while committed dependency approval facts are DB/product-state-backed `@svvy/state` facts read through `ExtensionStatePort`, with optional origin workspace identity as UI lineage only; agent-initiated installs remain ordinary Shell work; uses default versioned requirements for `cx-cli@0.7.1`, Smithers documentation generated from `smthrs@0.22.0` while preserving official `bunx smthrs ...` commands, and `@tiny-fish/cli@0.1.6`; and keeps Git and GitHub CLI requirements unversioned because their builtin instructions are not pinned to a specific CLI release.", sourceSpecs: [ "docs/specs/extensions-and-tools.spec.md", "docs/specs/extension/git.extension.spec.md", @@ -284,7 +284,7 @@ export const PRODUCT_FEATURES: ProductFeature[] = [ name: "Prompt-Only Smithers CLI Guidance", status: "in-progress", summary: - "Defines Smithers as a builtin prompt-only extension for handler-thread workflow authoring, generated from the current Extension Managing-selected Smithers documentation version with a small svvy boundary appendix; agents use official `bunx smithers-orchestrator ...` commands through Shell against workspace `.smithers/` packages, TypeScript source imports from package `smithers-orchestrator`, reusable svvy assets are documented by the Workflows extension and imported only from generated `@svvyx/workflows`, and agents do not receive product workflow wrapper tools, Smithers runtime-control APIs or broad bridge tools, Smithers TypeScript facades, or workspace-local svvy workflow source guidance.", + "Defines Smithers as a builtin prompt-only extension for handler-thread workflow authoring, generated from the current Extension Managing-selected Smithers documentation version with a small svvy boundary appendix; agents use official `bunx smthrs ...` commands through Shell against workspace `.smithers/` packages, TypeScript source imports from package `smthrs`, reusable svvy assets are documented by the Workflows extension and imported only from generated `@svvyx/workflows`, and agents do not receive product workflow wrapper tools, Smithers runtime-control APIs or broad bridge tools, Smithers TypeScript facades, or workspace-local svvy workflow source guidance.", sourceSpecs: [ "docs/prd.md", "docs/specs/extension/smithers.extension.spec.md", diff --git a/docs/prd.md b/docs/prd.md index 9437eef0e..bdf2e98e3 100644 --- a/docs/prd.md +++ b/docs/prd.md @@ -478,7 +478,7 @@ Reusable values are accessed through those namespaces, for example `Agents.defau Smithers task usage passes the generated parameter record into `Agents.defineTaskAgent`, which returns the Smithers-compatible `AgentLike` value intended for ``: ```tsx -import { Task } from "smithers-orchestrator"; +import { Task } from "smthrs"; import { Agents } from "@svvyx/workflows"; const reviewer = Agents.defineTaskAgent(Agents.reviewerAgent); @@ -493,7 +493,7 @@ export default ( Direct parameters are also valid when the workflow source owns the task-agent configuration: ```tsx -import { Task } from "smithers-orchestrator"; +import { Task } from "smthrs"; import { Agents } from "@svvyx/workflows"; const explorer = Agents.defineTaskAgent({ diff --git a/docs/progress.md b/docs/progress.md index f296b8b67..fef21b05b 100644 --- a/docs/progress.md +++ b/docs/progress.md @@ -1690,11 +1690,11 @@ This section is governed by `docs/specs/extension/smithers.extension.spec.md`. for handler threads, with no native Smithers tools, generated TypeScript facades, or bundled app Smithers runtime dependencies. Commit(s): `673837a`, `118fd39c9f`. - [x] Generate the Smithers instruction fragment from the Extension Managing-selected - `smithers-orchestrator` documentation version while excluding GUI, Gateway, MCP, HTTP server, + `smthrs` documentation version while excluding GUI, Gateway, MCP, HTTP server, OpenTelemetry, DevTools, event-streaming, OpenAPI, Effect, and wrapper-oriented fragments that are not current `svvy` product surfaces. Commit(s): `c91f88d377`, `dcc79bb073`. - [x] Keep the svvy Smithers boundary instruction focused on workspace `.smithers/`, official - `bunx smithers-orchestrator ...` CLI usage through Shell, official Smithers CLI operations, and + `bunx smthrs ...` CLI usage through Shell, official Smithers CLI operations, and reusable svvy workflow assets as Workflows-extension material. Commit(s): `c91f88d377`, `a02bd48`. - [x] Keep orchestrators aware that workflow action normally delegates into handler threads, while diff --git a/docs/redesign-implementation-checklist.md b/docs/redesign-implementation-checklist.md index 79c091d30..aec32be57 100644 --- a/docs/redesign-implementation-checklist.md +++ b/docs/redesign-implementation-checklist.md @@ -277,7 +277,7 @@ only when the capability and its tests are present. dependency-action command path with exact contracts, approval linkage, sandbox launch policy, subprocess lifetime, command facts, readiness refresh, and tests; agent-initiated setup remains ordinary Shell work. Sources: `docs/prd.md`, `docs/features.ts`. -- [x] Declare default target CLI versions for `cx-cli@0.7.1`, `smithers-orchestrator@0.22.0` invoked through the official `bunx smithers-orchestrator ...` command path, and `@tiny-fish/cli@0.1.6`; keep Git and GitHub CLI requirements unversioned. Sources: `docs/features.ts`, `docs/specs/extension/cx.extension.spec.md`, `docs/specs/extension/web.extension.spec.md`, `docs/specs/extension/smithers.extension.spec.md`. +- [x] Declare default target CLI versions for `cx-cli@0.7.1`, `smthrs@0.22.0` invoked through the official `bunx smthrs ...` command path, and `@tiny-fish/cli@0.1.6`; keep Git and GitHub CLI requirements unversioned. Sources: `docs/features.ts`, `docs/specs/extension/cx.extension.spec.md`, `docs/specs/extension/web.extension.spec.md`, `docs/specs/extension/smithers.extension.spec.md`. ## Direct Tools, Shell, Apply Patch, And Sandbox @@ -476,7 +476,7 @@ only when the capability and its tests are present. - [x] Keep Smithers as the workflow runtime and authoring model used directly through the official Smithers CLI. Sources: `docs/prd.md`, `docs/specs/extension/smithers.extension.spec.md`. - [x] Make Smithers a builtin prompt-only extension for handler-thread workflow authoring. Sources: `docs/features.ts`, `docs/specs/extension/smithers.extension.spec.md`. - [x] Add no native Smithers tools, no generated Smithers TypeScript facades, and no product workflow wrapper tools. Sources: `docs/prd.md`, `docs/specs/extension/smithers.extension.spec.md`. -- [x] Preserve upstream Smithers `bunx smithers-orchestrator ...` examples as the official generated prompt guidance, including `init`, `workflow run`, `ps`, `inspect`, `logs`, approvals, and resume; do not rewrite them to a global `smithers` binary. Sources: `docs/specs/extension/smithers.extension.spec.md`, `docs/vendor/smithers/smithers-0.22.0.llms-full.txt`. +- [x] Preserve upstream Smithers `bunx smthrs ...` examples as the official generated prompt guidance, including `init`, `workflow run`, `ps`, `inspect`, `logs`, approvals, and resume; do not rewrite them to a global `smithers` binary. Sources: `docs/specs/extension/smithers.extension.spec.md`, `docs/vendor/smithers/smithers-0.22.0.llms-full.txt`. - [x] Generate Smithers instruction content from Extension Managing-selected official Smithers documentation plus the bounded svvy appendix. Sources: `docs/specs/extension/smithers.extension.spec.md`, `docs/vendor/smithers/smithers-0.22.0.llms-full.txt`. - [x] Exclude GUI, Gateway, MCP, HTTP server, OpenTelemetry, DevTools, event-streaming, OpenAPI, Effect, and wrapper-oriented fragments not current svvy surfaces from generated Smithers prompt guidance. Sources: `docs/progress.md`, `docs/specs/extension/smithers.extension.spec.md`. - [x] Keep official Smithers concepts in guidance where relevant: `.smithers/`, JSX authoring, official CLI approvals/resume, stable task ids, outputs, schemas, and render-loop behavior. Sources: `docs/specs/extension/smithers.extension.spec.md`, `docs/vendor/smithers/smithers-0.22.0.llms-full.txt`. @@ -839,7 +839,7 @@ only when the capability and its tests are present. - [x] Add focused `@svvyx/extensions` generation tests for file/build-eligible user `svvyx` extension reference exports with workflow task-agent opt-in, approved dependencies, and successful current source/build evidence, plus stale/deleted, instruction-only, dependency-blocked, build-failed, and no-current-build-evidence exclusion. - [x] Add focused Workflows save source-boundary tests for workspace `.smithers/`, outside-source rejection, symlink escape rejection, generated-link rejection, nested workdir resolution, facade rejection, and multi-open-workspace package refresh. - [x] Add focused generated-output writable-boundary tests for Apply Patch rejection, ordinary Shell rejection/cleanup, unrecognized shell writers, long-running Shell completion, workspace package-link writes, and allowed source-driven `svvyx workflows build`. -- [x] Add Smithers prompt-generation tests from pinned `smithers-orchestrator@0.22.0` docs plus svvy boundary appendix and excluded fragment list. Sources: `docs/specs/extension/smithers.extension.spec.md`. +- [x] Add Smithers prompt-generation tests from pinned `smthrs@0.22.0` docs plus svvy boundary appendix and excluded fragment list. Sources: `docs/specs/extension/smithers.extension.spec.md`. - [x] Add Web extension tests proving TinyFish prompt-only behavior, exact CLI requirement, no Web native/generated surfaces, no Firecrawl/provider settings, and `networkAccess` gating. Sources: `docs/specs/extension/web.extension.spec.md`. - [x] Add workspace-tab/default-workspace tests for startup restore, default workspace creation, Open Workspace retargeting, New Tab, Open Workspace in New Tab, duplicate same-cwd tab sharing, explicit `workspaceId` routing, and tab status badges. Sources: `docs/specs/default-workspace-and-open-workspace.spec.md`. - [x] Add Dockview tests for layout slots A/B/C, persistence, duplicated surface panels, independent scroll, drag/drop placement policy, static panes, focus restore, panel-location indicators, and close detachment semantics. Sources: `docs/specs/pane-layout.spec.md`. diff --git a/docs/references/smithers-gui/.smithers/agents.ts b/docs/references/smithers-gui/.smithers/agents.ts index f17f82411..ed19423ba 100644 --- a/docs/references/smithers-gui/.smithers/agents.ts +++ b/docs/references/smithers-gui/.smithers/agents.ts @@ -1,5 +1,5 @@ // smithers-source: generated -import { ClaudeCodeAgent, CodexAgent, GeminiAgent, PiAgent, KimiAgent, AmpAgent, type AgentLike } from "smithers-orchestrator"; +import { ClaudeCodeAgent, CodexAgent, GeminiAgent, PiAgent, KimiAgent, AmpAgent, type AgentLike } from "smthrs"; export const providers = { claude: new ClaudeCodeAgent({ model: "claude-opus-4-6" }), diff --git a/docs/references/smithers-gui/.smithers/bun.lock b/docs/references/smithers-gui/.smithers/bun.lock index 5fae6a03b..b2cf90c04 100644 --- a/docs/references/smithers-gui/.smithers/bun.lock +++ b/docs/references/smithers-gui/.smithers/bun.lock @@ -5,7 +5,7 @@ "": { "name": "smithers-workflows", "dependencies": { - "smithers-orchestrator": "0.14.1", + "smthrs": "0.14.1", "zod": "4.3.6", }, "devDependencies": { @@ -1145,7 +1145,7 @@ "smart-buffer": ["smart-buffer@4.2.0", "", {}, "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="], - "smithers-orchestrator": ["smithers-orchestrator@0.14.1", "", { "dependencies": { "@ai-sdk/anthropic": "^3.0.36", "@ai-sdk/openai": "^3.0.41", "@effect/opentelemetry": "^0.61.0", "@effect/platform": "^0.94.5", "@effect/platform-bun": "^0.87.1", "@effect/sql": "^0.49.0", "@mariozechner/pi-coding-agent": "0.63.1", "@mariozechner/pi-tui": "0.63.1", "@mdx-js/esbuild": "^3.1.1", "@modelcontextprotocol/sdk": "^1.27.0", "@opentelemetry/api": "^1.9.0", "@opentelemetry/exporter-metrics-otlp-http": "^0.213.0", "@opentelemetry/exporter-trace-otlp-http": "^0.213.0", "@opentelemetry/resources": "^2.6.0", "@opentelemetry/sdk-logs": "^0.213.0", "@opentelemetry/sdk-metrics": "^2.6.0", "@opentelemetry/sdk-trace-base": "^2.6.0", "@opentelemetry/sdk-trace-node": "^2.6.0", "@opentelemetry/semantic-conventions": "^1.40.0", "@opentui/core": "^0.1.92", "@opentui/react": "^0.1.92", "@sinclair/typebox": "0.34.49", "@toon-format/toon": "^2.1.0", "@types/react-dom": "^19.2.3", "@types/react-reconciler": "^0.28.9", "ai": "^6.0.69", "bippy": "^0.5.32", "cron-parser": "^5.5.0", "diff": "^5.2.0", "drizzle-orm": "^0.45.1", "drizzle-zod": "^0.8.3", "effect": "^3.19.19", "hono": "^4.12.8", "incur": "^0.3.3", "react": "^19.2.4", "react-dom": "^19.2.4", "react-reconciler": "^0.31.0", "ws": "^8.18.0", "zod": "^4.3.6" }, "peerDependencies": { "typescript": "^5" }, "bin": { "smithers": "src/cli/index.ts" } }, "sha512-2pgxyaHNMCShjpjRdJXtZeUFSHq8E4QZ1QhCHwP0z/d60mIZbFkk8DQVulTSO7EUdu1KXZ8fKQjczxnWr9A7Iw=="], + "smthrs": ["smthrs@0.14.1", "", { "dependencies": { "@ai-sdk/anthropic": "^3.0.36", "@ai-sdk/openai": "^3.0.41", "@effect/opentelemetry": "^0.61.0", "@effect/platform": "^0.94.5", "@effect/platform-bun": "^0.87.1", "@effect/sql": "^0.49.0", "@mariozechner/pi-coding-agent": "0.63.1", "@mariozechner/pi-tui": "0.63.1", "@mdx-js/esbuild": "^3.1.1", "@modelcontextprotocol/sdk": "^1.27.0", "@opentelemetry/api": "^1.9.0", "@opentelemetry/exporter-metrics-otlp-http": "^0.213.0", "@opentelemetry/exporter-trace-otlp-http": "^0.213.0", "@opentelemetry/resources": "^2.6.0", "@opentelemetry/sdk-logs": "^0.213.0", "@opentelemetry/sdk-metrics": "^2.6.0", "@opentelemetry/sdk-trace-base": "^2.6.0", "@opentelemetry/sdk-trace-node": "^2.6.0", "@opentelemetry/semantic-conventions": "^1.40.0", "@opentui/core": "^0.1.92", "@opentui/react": "^0.1.92", "@sinclair/typebox": "0.34.49", "@toon-format/toon": "^2.1.0", "@types/react-dom": "^19.2.3", "@types/react-reconciler": "^0.28.9", "ai": "^6.0.69", "bippy": "^0.5.32", "cron-parser": "^5.5.0", "diff": "^5.2.0", "drizzle-orm": "^0.45.1", "drizzle-zod": "^0.8.3", "effect": "^3.19.19", "hono": "^4.12.8", "incur": "^0.3.3", "react": "^19.2.4", "react-dom": "^19.2.4", "react-reconciler": "^0.31.0", "ws": "^8.18.0", "zod": "^4.3.6" }, "peerDependencies": { "typescript": "^5" }, "bin": { "smithers": "src/cli/index.ts" } }, "sha512-2pgxyaHNMCShjpjRdJXtZeUFSHq8E4QZ1QhCHwP0z/d60mIZbFkk8DQVulTSO7EUdu1KXZ8fKQjczxnWr9A7Iw=="], "socks": ["socks@2.8.7", "", { "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" } }, "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A=="], diff --git a/docs/references/smithers-gui/.smithers/components/CommandProbe.tsx b/docs/references/smithers-gui/.smithers/components/CommandProbe.tsx index 15e19e95d..8ad680768 100644 --- a/docs/references/smithers-gui/.smithers/components/CommandProbe.tsx +++ b/docs/references/smithers-gui/.smithers/components/CommandProbe.tsx @@ -1,6 +1,6 @@ // smithers-source: seeded -/** @jsxImportSource smithers-orchestrator */ -import { Task } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Task } from "smthrs"; import { z } from "zod/v4"; export const commandProbeOutputSchema = z.object({ diff --git a/docs/references/smithers-gui/.smithers/components/FeatureEnum.tsx b/docs/references/smithers-gui/.smithers/components/FeatureEnum.tsx index d6386bd2f..9d36adf54 100644 --- a/docs/references/smithers-gui/.smithers/components/FeatureEnum.tsx +++ b/docs/references/smithers-gui/.smithers/components/FeatureEnum.tsx @@ -1,6 +1,6 @@ // smithers-source: seeded -/** @jsxImportSource smithers-orchestrator */ -import { Sequence, Task, type AgentLike } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Sequence, Task, type AgentLike } from "smthrs"; import { z } from "zod/v4"; import FeatureEnumScanPrompt from "../prompts/feature-enum-scan.mdx"; import FeatureEnumRefinePrompt from "../prompts/feature-enum-refine.mdx"; diff --git a/docs/references/smithers-gui/.smithers/components/ForEachFeature.tsx b/docs/references/smithers-gui/.smithers/components/ForEachFeature.tsx index af0262162..b4da0fe3a 100644 --- a/docs/references/smithers-gui/.smithers/components/ForEachFeature.tsx +++ b/docs/references/smithers-gui/.smithers/components/ForEachFeature.tsx @@ -1,6 +1,6 @@ // smithers-source: seeded -/** @jsxImportSource smithers-orchestrator */ -import { Parallel, Sequence, Task, type AgentLike } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Parallel, Sequence, Task, type AgentLike } from "smthrs"; import { z } from "zod/v4"; export const forEachFeatureResultSchema = z.object({ diff --git a/docs/references/smithers-gui/.smithers/components/GrillMe.tsx b/docs/references/smithers-gui/.smithers/components/GrillMe.tsx index 1d5704738..e8e95583a 100644 --- a/docs/references/smithers-gui/.smithers/components/GrillMe.tsx +++ b/docs/references/smithers-gui/.smithers/components/GrillMe.tsx @@ -1,5 +1,5 @@ -/** @jsxImportSource smithers-orchestrator */ -import { Loop, Sequence, Task, type AgentLike, type OutputTarget } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Loop, Sequence, Task, type AgentLike, type OutputTarget } from "smthrs"; import { z } from "zod/v4"; import GrillMeSkill from "skills/grill-me/SKILL.md"; import AskUserInstructions from "../prompts/ask-user-instructions.mdx"; diff --git a/docs/references/smithers-gui/.smithers/components/Review.tsx b/docs/references/smithers-gui/.smithers/components/Review.tsx index a104f5f51..0464f62df 100644 --- a/docs/references/smithers-gui/.smithers/components/Review.tsx +++ b/docs/references/smithers-gui/.smithers/components/Review.tsx @@ -1,6 +1,6 @@ // smithers-source: seeded -/** @jsxImportSource smithers-orchestrator */ -import { Parallel, Task, type AgentLike } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Parallel, Task, type AgentLike } from "smthrs"; import { z } from "zod/v4"; import ReviewPrompt from "../prompts/review.mdx"; diff --git a/docs/references/smithers-gui/.smithers/components/ValidationLoop.tsx b/docs/references/smithers-gui/.smithers/components/ValidationLoop.tsx index 54fcd0238..9cb98a7fa 100644 --- a/docs/references/smithers-gui/.smithers/components/ValidationLoop.tsx +++ b/docs/references/smithers-gui/.smithers/components/ValidationLoop.tsx @@ -1,6 +1,6 @@ // smithers-source: seeded -/** @jsxImportSource smithers-orchestrator */ -import { Sequence, Loop, Task, type AgentLike } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Sequence, Loop, Task, type AgentLike } from "smthrs"; import { z } from "zod/v4"; import ImplementPrompt from "../prompts/implement.mdx"; import ValidatePrompt from "../prompts/validate.mdx"; diff --git a/docs/references/smithers-gui/.smithers/components/WriteAPrd.tsx b/docs/references/smithers-gui/.smithers/components/WriteAPrd.tsx index 465a80aac..888126b25 100644 --- a/docs/references/smithers-gui/.smithers/components/WriteAPrd.tsx +++ b/docs/references/smithers-gui/.smithers/components/WriteAPrd.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // Inspired by Matt Pocock's write-a-prd skill (https://github.com/mattpocock/skills) -/** @jsxImportSource smithers-orchestrator */ -import { Sequence, Task, type AgentLike } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Sequence, Task, type AgentLike } from "smthrs"; import { z } from "zod/v4"; import WriteAPrdPrompt from "../prompts/write-a-prd.mdx"; diff --git a/docs/references/smithers-gui/.smithers/package.json b/docs/references/smithers-gui/.smithers/package.json index 986183235..f2f346dc7 100644 --- a/docs/references/smithers-gui/.smithers/package.json +++ b/docs/references/smithers-gui/.smithers/package.json @@ -9,7 +9,7 @@ "workflow:implement": "smithers workflow implement" }, "dependencies": { - "smithers-orchestrator": "0.14.1", + "smthrs": "^0.33.0", "zod": "4.3.6" }, "devDependencies": { diff --git a/docs/references/smithers-gui/.smithers/preload.ts b/docs/references/smithers-gui/.smithers/preload.ts index 04b77ae64..04dc24cf0 100644 --- a/docs/references/smithers-gui/.smithers/preload.ts +++ b/docs/references/smithers-gui/.smithers/preload.ts @@ -1,3 +1,3 @@ -import { mdxPlugin } from "smithers-orchestrator"; +import { mdxPlugin } from "smthrs"; mdxPlugin(); diff --git a/docs/references/smithers-gui/.smithers/tsconfig.json b/docs/references/smithers-gui/.smithers/tsconfig.json index 4a049d774..9b3db7aa2 100644 --- a/docs/references/smithers-gui/.smithers/tsconfig.json +++ b/docs/references/smithers-gui/.smithers/tsconfig.json @@ -9,7 +9,7 @@ "module": "ESNext", "moduleDetection": "force", "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", + "jsxImportSource": "smthrs", "moduleResolution": "bundler", "allowImportingTsExtensions": true, "verbatimModuleSyntax": true, diff --git a/docs/references/smithers-gui/.smithers/workflows/ai-review.tsx b/docs/references/smithers-gui/.smithers/workflows/ai-review.tsx index 020e29a17..5dc704fe5 100644 --- a/docs/references/smithers-gui/.smithers/workflows/ai-review.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/ai-review.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: AI Review -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; diff --git a/docs/references/smithers-gui/.smithers/workflows/audit.tsx b/docs/references/smithers-gui/.smithers/workflows/audit.tsx index 3f6d853d5..d10ba5ebc 100644 --- a/docs/references/smithers-gui/.smithers/workflows/audit.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/audit.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Audit -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { ForEachFeature, forEachFeatureMergeSchema, forEachFeatureResultSchema } from "../components/ForEachFeature"; diff --git a/docs/references/smithers-gui/.smithers/workflows/debug.tsx b/docs/references/smithers-gui/.smithers/workflows/debug.tsx index e7bf1619d..bf7107260 100644 --- a/docs/references/smithers-gui/.smithers/workflows/debug.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/debug.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Debug -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { ValidationLoop, implementOutputSchema, validateOutputSchema } from "../components/ValidationLoop"; diff --git a/docs/references/smithers-gui/.smithers/workflows/feature-enum.tsx b/docs/references/smithers-gui/.smithers/workflows/feature-enum.tsx index 119a93f35..4309689a1 100644 --- a/docs/references/smithers-gui/.smithers/workflows/feature-enum.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/feature-enum.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Feature Enum -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { FeatureEnum, featureEnumOutputSchema } from "../components/FeatureEnum"; diff --git a/docs/references/smithers-gui/.smithers/workflows/grill-me.tsx b/docs/references/smithers-gui/.smithers/workflows/grill-me.tsx index 950140f77..2e8fd68bf 100644 --- a/docs/references/smithers-gui/.smithers/workflows/grill-me.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/grill-me.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Grill Me -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { GrillMe, grillOutputSchema } from "../components/GrillMe"; diff --git a/docs/references/smithers-gui/.smithers/workflows/implement.tsx b/docs/references/smithers-gui/.smithers/workflows/implement.tsx index 237e39e02..e8e683c03 100644 --- a/docs/references/smithers-gui/.smithers/workflows/implement.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/implement.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Implement -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { implementOutputSchema, validateOutputSchema } from "../components/ValidationLoop"; diff --git a/docs/references/smithers-gui/.smithers/workflows/improve-test-coverage.tsx b/docs/references/smithers-gui/.smithers/workflows/improve-test-coverage.tsx index a9c3e4799..f76b31f8a 100644 --- a/docs/references/smithers-gui/.smithers/workflows/improve-test-coverage.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/improve-test-coverage.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Improve Test Coverage -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { ValidationLoop, implementOutputSchema, validateOutputSchema } from "../components/ValidationLoop"; diff --git a/docs/references/smithers-gui/.smithers/workflows/lint-autofix.tsx b/docs/references/smithers-gui/.smithers/workflows/lint-autofix.tsx index fb1073d79..fcd713239 100644 --- a/docs/references/smithers-gui/.smithers/workflows/lint-autofix.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/lint-autofix.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Lint Auto-Fix -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; diff --git a/docs/references/smithers-gui/.smithers/workflows/live-run-devtools-build.tsx b/docs/references/smithers-gui/.smithers/workflows/live-run-devtools-build.tsx index 655fedf00..53bc589bd 100644 --- a/docs/references/smithers-gui/.smithers/workflows/live-run-devtools-build.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/live-run-devtools-build.tsx @@ -1,12 +1,12 @@ // smithers-source: seeded // smithers-display-name: Live Run DevTools Build -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { ClaudeCodeAgent, CodexAgent, Parallel, createSmithers, -} from "smithers-orchestrator"; +} from "smthrs"; import { reviewOutputSchema } from "../components/Review"; import { implementOutputSchema } from "../components/ValidationLoop"; import ImplementPrompt from "../prompts/implement.mdx"; diff --git a/docs/references/smithers-gui/.smithers/workflows/plan.tsx b/docs/references/smithers-gui/.smithers/workflows/plan.tsx index 4d0c81c37..e1e282afa 100644 --- a/docs/references/smithers-gui/.smithers/workflows/plan.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/plan.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Plan -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import PlanPrompt from "../prompts/plan.mdx"; diff --git a/docs/references/smithers-gui/.smithers/workflows/pr-description.tsx b/docs/references/smithers-gui/.smithers/workflows/pr-description.tsx index 196632c4f..7d1eb3f8a 100644 --- a/docs/references/smithers-gui/.smithers/workflows/pr-description.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/pr-description.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: PR Description -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; diff --git a/docs/references/smithers-gui/.smithers/workflows/ralph.tsx b/docs/references/smithers-gui/.smithers/workflows/ralph.tsx index 8f6950b2c..fc42688d6 100644 --- a/docs/references/smithers-gui/.smithers/workflows/ralph.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/ralph.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Ralph -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; diff --git a/docs/references/smithers-gui/.smithers/workflows/research.tsx b/docs/references/smithers-gui/.smithers/workflows/research.tsx index 79f63499d..6e3c3ad09 100644 --- a/docs/references/smithers-gui/.smithers/workflows/research.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/research.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Research -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import ResearchPrompt from "../prompts/research.mdx"; diff --git a/docs/references/smithers-gui/.smithers/workflows/review.tsx b/docs/references/smithers-gui/.smithers/workflows/review.tsx index 877bbbdfd..c0f92da7c 100644 --- a/docs/references/smithers-gui/.smithers/workflows/review.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/review.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Review -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { Review, reviewOutputSchema } from "../components/Review"; diff --git a/docs/references/smithers-gui/.smithers/workflows/test-first.tsx b/docs/references/smithers-gui/.smithers/workflows/test-first.tsx index 77700937d..9cd8e757b 100644 --- a/docs/references/smithers-gui/.smithers/workflows/test-first.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/test-first.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Test First -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { ValidationLoop, implementOutputSchema, validateOutputSchema } from "../components/ValidationLoop"; diff --git a/docs/references/smithers-gui/.smithers/workflows/ticket-create.tsx b/docs/references/smithers-gui/.smithers/workflows/ticket-create.tsx index 17545c4ad..002a5e2a1 100644 --- a/docs/references/smithers-gui/.smithers/workflows/ticket-create.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/ticket-create.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Ticket Create -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import TicketPrompt from "../prompts/ticket.mdx"; diff --git a/docs/references/smithers-gui/.smithers/workflows/ticket-implement.tsx b/docs/references/smithers-gui/.smithers/workflows/ticket-implement.tsx index 4bb0eeffb..be5a3725d 100644 --- a/docs/references/smithers-gui/.smithers/workflows/ticket-implement.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/ticket-implement.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Ticket Implement -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { ValidationLoop, implementOutputSchema, validateOutputSchema } from "../components/ValidationLoop"; diff --git a/docs/references/smithers-gui/.smithers/workflows/ticket-kanban.tsx b/docs/references/smithers-gui/.smithers/workflows/ticket-kanban.tsx index c7e70f00a..5984be5df 100644 --- a/docs/references/smithers-gui/.smithers/workflows/ticket-kanban.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/ticket-kanban.tsx @@ -1,6 +1,6 @@ // smithers-display-name: Ticket Kanban -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Parallel, Worktree } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Parallel, Worktree } from "smthrs"; import { readdirSync, readFileSync } from "node:fs"; import { resolve } from "node:path"; import { z } from "zod/v4"; diff --git a/docs/references/smithers-gui/.smithers/workflows/tickets-create.tsx b/docs/references/smithers-gui/.smithers/workflows/tickets-create.tsx index 93b746e3a..4125eb9d9 100644 --- a/docs/references/smithers-gui/.smithers/workflows/tickets-create.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/tickets-create.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Tickets Create -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; diff --git a/docs/references/smithers-gui/.smithers/workflows/write-a-prd.tsx b/docs/references/smithers-gui/.smithers/workflows/write-a-prd.tsx index f69926a3c..c051d559f 100644 --- a/docs/references/smithers-gui/.smithers/workflows/write-a-prd.tsx +++ b/docs/references/smithers-gui/.smithers/workflows/write-a-prd.tsx @@ -1,8 +1,8 @@ // smithers-source: seeded // smithers-display-name: Write a PRD -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ // Inspired by Matt Pocock's write-a-prd skill (https://github.com/mattpocock/skills) -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { GrillMe, grillOutputSchema } from "../components/GrillMe"; diff --git a/docs/references/smithers-gui/AGENTS.md b/docs/references/smithers-gui/AGENTS.md index 897b7f4e5..02699cd3f 100644 --- a/docs/references/smithers-gui/AGENTS.md +++ b/docs/references/smithers-gui/AGENTS.md @@ -4,7 +4,7 @@ You are working inside the Smithers GUI macOS app repository. This app provides ## Smithers CLI -The `smithers` CLI (package: `smithers-orchestrator`) manages durable AI workflow execution. +The `smithers` CLI (package: `smthrs`) manages durable AI workflow execution. ### Quick Reference @@ -46,7 +46,7 @@ smithers down Cancel all active runs Smithers is a Bun/TypeScript framework for building resumable AI workflows as JSX trees. -- Package: `smithers-orchestrator` (requires Bun >= 1.3) +- Package: `smthrs` (requires Bun >= 1.3) - Primary API: `createSmithers(...)` with Zod schemas - Persistence: SQLite - Core components: ``, ``, ``, ``, ``, ``, ``, ``, `` diff --git a/docs/references/smithers-gui/SidebarView.swift b/docs/references/smithers-gui/SidebarView.swift index ad0e0f956..b9b4dad16 100644 --- a/docs/references/smithers-gui/SidebarView.swift +++ b/docs/references/smithers-gui/SidebarView.swift @@ -841,7 +841,7 @@ struct SmithersVersionWarningBanner: View { Text("Smithers \(installed) is too old — update to ≥ \(required)") .font(.system(size: 12, weight: .semibold)) .foregroundColor(.white) - Text("Run lifecycle and heartbeat status will be inaccurate until you upgrade smithers-orchestrator.") + Text("Run lifecycle and heartbeat status will be inaccurate until you upgrade smthrs.") .font(.system(size: 11)) .foregroundColor(.white.opacity(0.85)) } diff --git a/docs/references/smithers-gui/SmithersClient.swift b/docs/references/smithers-gui/SmithersClient.swift index f650a4f06..92524ebe2 100644 --- a/docs/references/smithers-gui/SmithersClient.swift +++ b/docs/references/smithers-gui/SmithersClient.swift @@ -221,7 +221,7 @@ class SmithersClient: ObservableObject { @Published private(set) var connectionTransport: ConnectionTransport = .none @Published private(set) var serverReachable: Bool = false - /// Minimum supported `smithers-orchestrator` version. Older releases + /// Minimum supported `smthrs` version. Older releases /// silently mislabel orphaned heartbeats as "continued"/"succeeded" and /// lack the `state`/`unhealthy` fields the dashboard now expects. static let minimumOrchestratorVersion = "0.16.0" @@ -5177,8 +5177,8 @@ class SmithersClient: ObservableObject { isConnected = false } - /// Returns the smithers-orchestrator version string (e.g. "1.2.3"). Runs - /// `bunx smithers-orchestrator --version` out-of-band of the standard CLI + /// Returns the smthrs version string (e.g. "1.2.3"). Runs + /// `bunx smthrs --version` out-of-band of the standard CLI /// transport so we can surface the underlying engine version even when /// the `smithers` binary is a thin wrapper. Caches the result for the /// lifetime of the client. @@ -5232,8 +5232,8 @@ class SmithersClient: ObservableObject { private func runOrchestratorVersionProbe() async -> String? { let probes: [(executable: String, args: [String])] = [ - ("/usr/bin/env", ["bunx", "smithers-orchestrator", "--version"]), - ("/usr/bin/env", ["smithers-orchestrator", "--version"]), + ("/usr/bin/env", ["bunx", "smthrs", "--version"]), + ("/usr/bin/env", ["smthrs", "--version"]), ] for probe in probes { diff --git a/docs/references/smithers/.github/workflows/faults-nightly.yml b/docs/references/smithers/.github/workflows/faults-nightly.yml index 9031ea642..be3ea9bd1 100644 --- a/docs/references/smithers/.github/workflows/faults-nightly.yml +++ b/docs/references/smithers/.github/workflows/faults-nightly.yml @@ -33,4 +33,4 @@ jobs: - run: pnpm -r build - - run: pnpm --filter @smithers-orchestrator/e2e test:soak + - run: pnpm --filter @smthrs/e2e test:soak diff --git a/docs/references/smithers/.github/workflows/faults.yml b/docs/references/smithers/.github/workflows/faults.yml index 5fe401285..716bc21a4 100644 --- a/docs/references/smithers/.github/workflows/faults.yml +++ b/docs/references/smithers/.github/workflows/faults.yml @@ -32,4 +32,4 @@ jobs: - run: pnpm -r build - - run: pnpm --filter @smithers-orchestrator/e2e test:faults + - run: pnpm --filter @smthrs/e2e test:faults diff --git a/docs/references/smithers/.smithers/agents.ts b/docs/references/smithers/.smithers/agents.ts index d79e5af3c..93b02b9b1 100644 --- a/docs/references/smithers/.smithers/agents.ts +++ b/docs/references/smithers/.smithers/agents.ts @@ -2,7 +2,7 @@ // Account providers (camelCase labels) come from ~/.smithers/accounts.json — managed via `smithers agent add|list|remove`. import { homedir } from "node:os"; import path from "node:path"; -import { type AgentLike, ClaudeCodeAgent as SmithersClaudeCodeAgent, CodexAgent as SmithersCodexAgent, OpenCodeAgent as SmithersOpenCodeAgent, PiAgent as SmithersPiAgent, KimiAgent as SmithersKimiAgent, AmpAgent as SmithersAmpAgent, GeminiAgent as SmithersGeminiAgent } from "smithers-orchestrator"; +import { type AgentLike, ClaudeCodeAgent as SmithersClaudeCodeAgent, CodexAgent as SmithersCodexAgent, OpenCodeAgent as SmithersOpenCodeAgent, PiAgent as SmithersPiAgent, KimiAgent as SmithersKimiAgent, AmpAgent as SmithersAmpAgent, GeminiAgent as SmithersGeminiAgent } from "smthrs"; export const providers = { claude: new SmithersClaudeCodeAgent({ model: "claude-opus-4-7", cwd: process.cwd() }), diff --git a/docs/references/smithers/.smithers/components/CommandProbe.tsx b/docs/references/smithers/.smithers/components/CommandProbe.tsx index 302b32d42..1390852f8 100644 --- a/docs/references/smithers/.smithers/components/CommandProbe.tsx +++ b/docs/references/smithers/.smithers/components/CommandProbe.tsx @@ -1,6 +1,6 @@ // smithers-source: seeded -/** @jsxImportSource smithers-orchestrator */ -import { Task } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Task } from "smthrs"; import { z } from "zod/v4"; export const commandProbeOutputSchema = z.looseObject({ diff --git a/docs/references/smithers/.smithers/components/FeatureEnum.tsx b/docs/references/smithers/.smithers/components/FeatureEnum.tsx index 11438737e..0ff6c0580 100644 --- a/docs/references/smithers/.smithers/components/FeatureEnum.tsx +++ b/docs/references/smithers/.smithers/components/FeatureEnum.tsx @@ -1,6 +1,6 @@ // smithers-source: seeded -/** @jsxImportSource smithers-orchestrator */ -import { Sequence, Task, type AgentLike } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Sequence, Task, type AgentLike } from "smthrs"; import { z } from "zod/v4"; import FeatureEnumScanPrompt from "../prompts/feature-enum-scan.mdx"; import FeatureEnumRefinePrompt from "../prompts/feature-enum-refine.mdx"; diff --git a/docs/references/smithers/.smithers/components/ForEachFeature.tsx b/docs/references/smithers/.smithers/components/ForEachFeature.tsx index 2aa0fe45a..aea1c6dda 100644 --- a/docs/references/smithers/.smithers/components/ForEachFeature.tsx +++ b/docs/references/smithers/.smithers/components/ForEachFeature.tsx @@ -1,6 +1,6 @@ // smithers-source: seeded -/** @jsxImportSource smithers-orchestrator */ -import { Parallel, Sequence, Task, type AgentLike } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Parallel, Sequence, Task, type AgentLike } from "smthrs"; import { z } from "zod/v4"; import FeatureTaskPrompt from "~/prompts/feature-task.mdx"; diff --git a/docs/references/smithers/.smithers/components/GrillMe.tsx b/docs/references/smithers/.smithers/components/GrillMe.tsx index 4a39c629d..1c2ecb08c 100644 --- a/docs/references/smithers/.smithers/components/GrillMe.tsx +++ b/docs/references/smithers/.smithers/components/GrillMe.tsx @@ -1,5 +1,5 @@ -/** @jsxImportSource smithers-orchestrator */ -import { Loop, Sequence, Task, type AgentLike, type OutputTarget } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Loop, Sequence, Task, type AgentLike, type OutputTarget } from "smthrs"; import { z } from "zod/v4"; import GrillMeSkill from "../prompts/grill-me.mdx"; import AskUserInstructions from "../prompts/ask-user-instructions.mdx"; diff --git a/docs/references/smithers/.smithers/components/LoopUntilScored.tsx b/docs/references/smithers/.smithers/components/LoopUntilScored.tsx index 7420d7908..645ddb232 100644 --- a/docs/references/smithers/.smithers/components/LoopUntilScored.tsx +++ b/docs/references/smithers/.smithers/components/LoopUntilScored.tsx @@ -1,6 +1,6 @@ // smithers-source: seeded -/** @jsxImportSource smithers-orchestrator */ -import { Loop } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Loop } from "smthrs"; export type LoopUntilScoredProps = { idPrefix: string; diff --git a/docs/references/smithers/.smithers/components/Review.tsx b/docs/references/smithers/.smithers/components/Review.tsx index f1b6584bb..a0ca0c44f 100644 --- a/docs/references/smithers/.smithers/components/Review.tsx +++ b/docs/references/smithers/.smithers/components/Review.tsx @@ -1,6 +1,6 @@ // smithers-source: seeded -/** @jsxImportSource smithers-orchestrator */ -import { Parallel, Task, type AgentLike } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Parallel, Task, type AgentLike } from "smthrs"; import { z } from "zod/v4"; import ReviewPrompt from "../prompts/review.mdx"; diff --git a/docs/references/smithers/.smithers/components/ShipTickets.tsx b/docs/references/smithers/.smithers/components/ShipTickets.tsx index 49d5f3e97..76f58e32a 100644 --- a/docs/references/smithers/.smithers/components/ShipTickets.tsx +++ b/docs/references/smithers/.smithers/components/ShipTickets.tsx @@ -1,6 +1,6 @@ // smithers-source: authored -/** @jsxImportSource smithers-orchestrator */ -import { Sequence, Task, Worktree, type AgentLike } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Sequence, Task, Worktree, type AgentLike } from "smthrs"; import { readdirSync, readFileSync } from "node:fs"; import { resolve, relative } from "node:path"; import { z } from "zod/v4"; diff --git a/docs/references/smithers/.smithers/components/ValidationLoop.tsx b/docs/references/smithers/.smithers/components/ValidationLoop.tsx index 69a919190..ac4e30753 100644 --- a/docs/references/smithers/.smithers/components/ValidationLoop.tsx +++ b/docs/references/smithers/.smithers/components/ValidationLoop.tsx @@ -1,6 +1,6 @@ // smithers-source: seeded -/** @jsxImportSource smithers-orchestrator */ -import { Sequence, Loop, Task, type AgentLike } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Sequence, Loop, Task, type AgentLike } from "smthrs"; import { z } from "zod/v4"; import { Review } from "~/components/Review"; import ImplementPrompt from "~/prompts/implement.mdx"; diff --git a/docs/references/smithers/.smithers/components/VerifiableGoals.tsx b/docs/references/smithers/.smithers/components/VerifiableGoals.tsx index 26f495cdb..ac8c51f66 100644 --- a/docs/references/smithers/.smithers/components/VerifiableGoals.tsx +++ b/docs/references/smithers/.smithers/components/VerifiableGoals.tsx @@ -1,6 +1,6 @@ // smithers-source: authored -/** @jsxImportSource smithers-orchestrator */ -import { Sequence, Task, type AgentLike } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Sequence, Task, type AgentLike } from "smthrs"; import { z } from "zod/v4"; // One verifiable goal per ticket: small enough to research→plan→implement in a diff --git a/docs/references/smithers/.smithers/components/extract-prompt/ExtractPrompt.tsx b/docs/references/smithers/.smithers/components/extract-prompt/ExtractPrompt.tsx index 462695b73..1eda612d3 100644 --- a/docs/references/smithers/.smithers/components/extract-prompt/ExtractPrompt.tsx +++ b/docs/references/smithers/.smithers/components/extract-prompt/ExtractPrompt.tsx @@ -1,12 +1,12 @@ // smithers-source: seeded -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { Sequence, Task, type AgentLike, type OutputTarget, -} from "smithers-orchestrator"; -import type { ScorersMap } from "@smithers-orchestrator/scorers"; +} from "smthrs"; +import type { ScorersMap } from "@smthrs/scorers"; import { LoopUntilScored } from "../LoopUntilScored"; import ExtractPromptInstructions from "../../prompts/extract-prompt.mdx"; import type { CachedPrompt, Stakes } from "./PromptCache"; diff --git a/docs/references/smithers/.smithers/components/extract-prompt/rctfCompletenessScorer.ts b/docs/references/smithers/.smithers/components/extract-prompt/rctfCompletenessScorer.ts index 188f17242..b9354e722 100644 --- a/docs/references/smithers/.smithers/components/extract-prompt/rctfCompletenessScorer.ts +++ b/docs/references/smithers/.smithers/components/extract-prompt/rctfCompletenessScorer.ts @@ -1,5 +1,5 @@ -import { llmJudge } from "@smithers-orchestrator/scorers"; -import type { Scorer } from "@smithers-orchestrator/scorers"; +import { llmJudge } from "@smthrs/scorers"; +import type { Scorer } from "@smthrs/scorers"; export type RctfCompletenessScorerOptions = { /** The judge agent. Must implement `generate({ prompt }) → string | { text }`. */ diff --git a/docs/references/smithers/.smithers/example.tsx b/docs/references/smithers/.smithers/example.tsx index 81395fc37..3a181b392 100644 --- a/docs/references/smithers/.smithers/example.tsx +++ b/docs/references/smithers/.smithers/example.tsx @@ -1,5 +1,5 @@ -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "./agents"; diff --git a/docs/references/smithers/.smithers/gateway.ts b/docs/references/smithers/.smithers/gateway.ts index eae0597da..977236682 100644 --- a/docs/references/smithers/.smithers/gateway.ts +++ b/docs/references/smithers/.smithers/gateway.ts @@ -1,4 +1,4 @@ -import { Gateway, mdxPlugin } from "smithers-orchestrator"; +import { Gateway, mdxPlugin } from "smthrs"; import { dirname, join, resolve } from "node:path"; import { fileURLToPath } from "node:url"; import { existsSync, readFileSync, readdirSync } from "node:fs"; diff --git a/docs/references/smithers/.smithers/package.json b/docs/references/smithers/.smithers/package.json index 20f58b233..51c72f5de 100644 --- a/docs/references/smithers/.smithers/package.json +++ b/docs/references/smithers/.smithers/package.json @@ -13,8 +13,8 @@ "test:open-code-review": "bun test ./tests/open-code-review.test.ts ./tests/open-code-review-ui.e2e.test.ts" }, "dependencies": { - "@smithers-orchestrator/scorers": "workspace:*", - "smithers-orchestrator": "workspace:*", + "@smthrs/scorers": "^0.33.0", + "smthrs": "^0.33.0", "zod": "4.3.6" }, "devDependencies": { diff --git a/docs/references/smithers/.smithers/preload.ts b/docs/references/smithers/.smithers/preload.ts index 04b77ae64..04dc24cf0 100644 --- a/docs/references/smithers/.smithers/preload.ts +++ b/docs/references/smithers/.smithers/preload.ts @@ -1,3 +1,3 @@ -import { mdxPlugin } from "smithers-orchestrator"; +import { mdxPlugin } from "smthrs"; mdxPlugin(); diff --git a/docs/references/smithers/.smithers/prompts/context-engineer-execute.mdx b/docs/references/smithers/.smithers/prompts/context-engineer-execute.mdx index c72b482ee..33bd9dcfa 100644 --- a/docs/references/smithers/.smithers/prompts/context-engineer-execute.mdx +++ b/docs/references/smithers/.smithers/prompts/context-engineer-execute.mdx @@ -39,7 +39,7 @@ what it reported — continue from there rather than restarting. - If the route is `single_task` or `skills`: do the work directly with your tools, loading the route's `selectedSkills` where helpful. - If the route is `workflow`: dispatch the chosen `selectedWorkflow` (e.g. - `bunx smithers-orchestrator workflow run --input '{...}'`) and report what + `bunx smthrs workflow run --input '{...}'`) and report what you dispatched and how to watch it. - If the route is `manual`: do not force the work — summarize exactly what a human must do and mark the relevant gate's evidence as pending. diff --git a/docs/references/smithers/.smithers/prompts/context-engineer-inventory.mdx b/docs/references/smithers/.smithers/prompts/context-engineer-inventory.mdx index 9b68c30d0..6154f6a12 100644 --- a/docs/references/smithers/.smithers/prompts/context-engineer-inventory.mdx +++ b/docs/references/smithers/.smithers/prompts/context-engineer-inventory.mdx @@ -27,7 +27,7 @@ Local workflows directory: {props.workflowsDir} - Look at the repo: read `README`/`CLAUDE.md`/top-level layout to learn what this project is and what conventions apply. - Inventory tools: which commands and capabilities are actually available to do - this work (build/test runners, CLIs, `bunx smithers-orchestrator ...`). + this work (build/test runners, CLIs, `bunx smthrs ...`). - Inventory skills: list `{props.skillsDir}` and note the skills relevant to this script in `availableSkills`. - Inventory workflows: glance at `{props.workflowsDir}` for durable workflows the diff --git a/docs/references/smithers/.smithers/prompts/create-workflow-document.mdx b/docs/references/smithers/.smithers/prompts/create-workflow-document.mdx index ea6a7b1b8..617053d8d 100644 --- a/docs/references/smithers/.smithers/prompts/create-workflow-document.mdx +++ b/docs/references/smithers/.smithers/prompts/create-workflow-document.mdx @@ -30,7 +30,7 @@ The body must tell an agent: 1. What the workflow does and when to use it (1–2 sentences). 2. Its inputs — especially `prompt` and any typed knobs from the design. 3. How to start it: - `bunx smithers-orchestrator workflow run {props.workflowName} --prompt "…"` + `bunx smthrs workflow run {props.workflowName} --prompt "…"` (or `--input '{…}'` for structured inputs). 4. How to run it detached and watch it: `-d` to detach, then `smithers ps`, `smithers logs -f`, `smithers inspect `. diff --git a/docs/references/smithers/.smithers/prompts/create-workflow-fix.mdx b/docs/references/smithers/.smithers/prompts/create-workflow-fix.mdx index bf7b6b926..ac08264f7 100644 --- a/docs/references/smithers/.smithers/prompts/create-workflow-fix.mdx +++ b/docs/references/smithers/.smithers/prompts/create-workflow-fix.mdx @@ -12,7 +12,7 @@ make it load. You have file + shell tools. ## Verify command that failed -`bunx smithers-orchestrator graph {props.workflowFile}` +`bunx smthrs graph {props.workflowFile}` ## Errors @@ -35,9 +35,9 @@ make it load. You have file + shell tools. is duplicated, or a control-flow component is missing a required prop (`Loop` needs `until`; `Approval` needs `request`). 3. Make the smallest change that fixes the error without abandoning the design. - If the docs would help, run `bunx smithers-orchestrator docs` or - `bunx smithers-orchestrator ask ""`. -4. Re-run `bunx smithers-orchestrator graph {props.workflowFile}` yourself to + If the docs would help, run `bunx smthrs docs` or + `bunx smthrs ask ""`. +4. Re-run `bunx smthrs graph {props.workflowFile}` yourself to confirm it now exits 0 before you finish. Do not delete the workflow or stub it out to "pass" — fix the real problem. diff --git a/docs/references/smithers/.smithers/prompts/create-workflow-provision.mdx b/docs/references/smithers/.smithers/prompts/create-workflow-provision.mdx index 475834c04..aa0886e31 100644 --- a/docs/references/smithers/.smithers/prompts/create-workflow-provision.mdx +++ b/docs/references/smithers/.smithers/prompts/create-workflow-provision.mdx @@ -23,13 +23,13 @@ Local workflows directory: {props.workflowsDir} The docs are progressively disclosed as `llms-*.txt` fragments — load only what this workflow needs, not the whole bundle. -- `bunx smithers-orchestrator docs` — the concise `llms.txt` index. +- `bunx smthrs docs` — the concise `llms.txt` index. - Then pull the fragments that match this workflow's shape, e.g. `llms-core.txt` (runtime, JSX surface, CLI, components, recipes) is almost always relevant; add `llms-memory.txt`, `llms-openapi.txt`, `llms-observability.txt` (HTTP/gateway/MCP/OTel), `llms-integrations.txt` (agent runtimes, tools), or `llms-events.txt` only if the spec calls for them. -- `bunx smithers-orchestrator ask ""` for anything specific +- `bunx smthrs ask ""` for anything specific (e.g. "how do I add a human approval gate?", "how does Ralph decide to stop?"). Record each fragment you pulled and why in `docsFragments`. @@ -61,7 +61,7 @@ their agent dirs. - Decide which skills this workflow's tasks need given its domain (e.g. a deploy workflow → infra/k8s skills; a docs workflow → a docs skill; almost any authoring/orchestration workflow benefits from the `smithers` skill itself). -- Install the missing ones with `bunx smithers-orchestrator skills add ` +- Install the missing ones with `bunx smthrs skills add ` (this syncs them into the agent skill dirs). Mark those `installed`. - If a needed skill genuinely does not exist yet, mark it `recommended` and say what it should cover — the design step can note it as a follow-up. diff --git a/docs/references/smithers/.smithers/prompts/create-workflow-scaffold.mdx b/docs/references/smithers/.smithers/prompts/create-workflow-scaffold.mdx index 5b27aa511..b5207d751 100644 --- a/docs/references/smithers/.smithers/prompts/create-workflow-scaffold.mdx +++ b/docs/references/smithers/.smithers/prompts/create-workflow-scaffold.mdx @@ -20,15 +20,15 @@ own `.mdx` file, one per prompt named in the design. 1. **Start from the closest example** named in the provisioning manifest — copy its structure, then adapt. Don't invent API; if unsure, re-read the example or - `bunx smithers-orchestrator docs`. + `bunx smthrs docs`. 2. **Workflow file header** — begin with the two seed comments and the JSX pragma, exactly like the other workflows in `{props.workflowsDir}`: ``` // smithers-source: seeded // smithers-display-name: - /** @jsxImportSource smithers-orchestrator */ + /** @jsxImportSource smthrs */ ``` -3. **Imports** — `import { createSmithers } from "smithers-orchestrator"`, +3. **Imports** — `import { createSmithers } from "smthrs"`, `import { z } from "zod/v4"`, `import { agents } from "../agents"`, any components from `../components`, and each prompt from `../prompts/<name>.mdx`. 4. **Schemas** — define the Zod input schema and one schema per task output. diff --git a/docs/references/smithers/.smithers/prompts/extract-skill-analyze.mdx b/docs/references/smithers/.smithers/prompts/extract-skill-analyze.mdx index 9cdebb633..4fa5d219e 100644 --- a/docs/references/smithers/.smithers/prompts/extract-skill-analyze.mdx +++ b/docs/references/smithers/.smithers/prompts/extract-skill-analyze.mdx @@ -17,9 +17,9 @@ If a run id is given (the `Run id` above), you have file and shell tools — ins the real run state before deciding, substituting that id for `RUN_ID` below. Read it, do not guess: -- `bunx smithers-orchestrator inspect RUN_ID` for the full run state (steps, agents, outputs). -- `bunx smithers-orchestrator events RUN_ID --limit 200` for the event history. -- `bunx smithers-orchestrator node NODE_ID --run-id RUN_ID` for a specific node's tool calls and output. +- `bunx smthrs inspect RUN_ID` for the full run state (steps, agents, outputs). +- `bunx smthrs events RUN_ID --limit 200` for the event history. +- `bunx smthrs node NODE_ID --run-id RUN_ID` for a specific node's tool calls and output. These are read-only. Do NOT start, cancel, fork, or graph any run — another step owns that. If no run id is given, work purely from the prompt and context above. diff --git a/docs/references/smithers/.smithers/prompts/smoketest.mdx b/docs/references/smithers/.smithers/prompts/smoketest.mdx index 13a23c5ab..7a174fa8b 100644 --- a/docs/references/smithers/.smithers/prompts/smoketest.mdx +++ b/docs/references/smithers/.smithers/prompts/smoketest.mdx @@ -1,10 +1,10 @@ # Smoke Test -You are running a **release smoke test** for the `smithers-orchestrator` +You are running a **release smoke test** for the `smthrs` npm package. Your job is to prove that a user who has never touched Smithers can install it and exercise the feature set — and that every claim in the changelog below actually holds against the published -`smithers-orchestrator@{props.version}` on npm. +`smthrs@{props.version}` on npm. ## Version under test @@ -27,14 +27,14 @@ looking for it elsewhere — this text is the source of truth. 1. Before doing anything else, clear caches so you're testing the registry, not a stale copy: - `bun pm cache rm` - - macOS: `rm -rf $(echo $TMPDIR)bunx-*smithers-orchestrator*` - (or check `/var/folders/**/T/bunx-*smithers-orchestrator*`). - - Linux / other: `rm -rf $TMPDIR/bunx-*smithers-orchestrator*`. + - macOS: `rm -rf $(echo $TMPDIR)bunx-*smthrs*` + (or check `/var/folders/**/T/bunx-*smthrs*`). + - Linux / other: `rm -rf $TMPDIR/bunx-*smthrs*`. 2. Create a fresh scratch directory outside any existing project: `SMOKE_DIR=$(mktemp -d)/smoketest && mkdir -p "$SMOKE_DIR" && cd "$SMOKE_DIR"`. Never reuse an existing folder. Never work in the monorepo itself. -3. Run `bunx smithers-orchestrator@latest init` from the scratch +3. Run `bunx smthrs@latest init` from the scratch directory. Capture stdout/stderr. ## Baseline tests — run these every time @@ -42,18 +42,18 @@ looking for it elsewhere — this text is the source of truth. Do each, record pass/fail with evidence (exact command, exit code, relevant output lines): -- `bunx smithers-orchestrator@latest init` succeeds on a fresh folder. +- `bunx smthrs@latest init` succeeds on a fresh folder. Confirm `.smithers/package.json` exists, `.smithers/workflows/` contains workflow files, and the `install` result reports `status: ok` (i.e. `bun install` ran inside `.smithers/`). - `.smithers/node_modules/skills/` exists with at least one `<name>/SKILL.md` inside — proving the `github:mattpocock/skills` dep was fetched (runtime auto-install can't do that). -- Both `$(echo $TMPDIR)bunx-*smithers-orchestrator*/node_modules/.bin/smithers` +- Both `$(echo $TMPDIR)bunx-*smthrs*/node_modules/.bin/smithers` AND `.smithers/node_modules/.bin/smithers` symlink to - `smithers-orchestrator/src/bin/smithers.js` (not - `@smithers-orchestrator/cli/src/index.js`). Use `readlink`. -- `bunx smithers-orchestrator@latest workflow grill-me` loads without + `smthrs/src/bin/smithers.js` (not + `@smthrs/cli/src/index.js`). Use `readlink`. +- `bunx smthrs@latest workflow grill-me` loads without crashing. The agent call itself is allowed to fail for unrelated reasons (API auth, scorer schema errors). What matters is that you see `workflowName=grill-me` and `→ grill-me:grill (attempt 1, @@ -71,7 +71,7 @@ relevant output lines): For every bullet under `## Fixes` or `## Features` in the changelog embedded above, construct a minimal reproduction of the *original* bug and verify it no longer reproduces on -`smithers-orchestrator@{props.version}`. Common patterns: +`smthrs@{props.version}`. Common patterns: - Fix says a dependency was missing from a generated file → open the file after `init` and grep for the dep. diff --git a/docs/references/smithers/.smithers/prompts/triage-run-recommend.mdx b/docs/references/smithers/.smithers/prompts/triage-run-recommend.mdx index d50122c30..9256a7bb0 100644 --- a/docs/references/smithers/.smithers/prompts/triage-run-recommend.mdx +++ b/docs/references/smithers/.smithers/prompts/triage-run-recommend.mdx @@ -22,20 +22,20 @@ Run id: {props.runId} - **fix** — the run failed because of a real bug in the code or the workflow (a task errored, a command exited non-zero, an output failed validation). The underlying defect must be changed before the run can succeed. The `command` - should point at the follow-up (for example a `bunx smithers-orchestrator node + should point at the follow-up (for example a `bunx smthrs node <runId> <nodeId>` to inspect the failing node, then an edit-and-`retry-task`). - **rewind** — earlier frames were fine but the run went off the rails after a specific point; roll back to a known-good frame with - `bunx smithers-orchestrator rewind <runId>` (target the frame just before the + `bunx smthrs rewind <runId>` (target the frame just before the failure). - **retry** — the failure looks transient (a flaky agent, a heartbeat timeout, a rate limit) and re-running the failing node should clear it: - `bunx smithers-orchestrator retry-task <runId> --node <nodeId>`. + `bunx smthrs retry-task <runId> --node <nodeId>`. - **escalate** — the run is *stuck* waiting on a human (an `Approval` or `HumanTask`), or the right call is genuinely a judgement a person must make. The `command` should clear or surface the gate (for example - `bunx smithers-orchestrator approve <runId> --node <nodeId>` or - `bunx smithers-orchestrator human inbox`). + `bunx smthrs approve <runId> --node <nodeId>` or + `bunx smthrs human inbox`). ## Produce diff --git a/docs/references/smithers/.smithers/scripts/ultragrill.ts b/docs/references/smithers/.smithers/scripts/ultragrill.ts index beb7b9729..cc9560b95 100644 --- a/docs/references/smithers/.smithers/scripts/ultragrill.ts +++ b/docs/references/smithers/.smithers/scripts/ultragrill.ts @@ -8,7 +8,7 @@ * your browser, and stays alive until you Ctrl-C. The worker is a real agent * working directly in this repo (shared-repo model), so it will read/edit files. */ -import { Gateway, mdxPlugin } from "smithers-orchestrator"; +import { Gateway, mdxPlugin } from "smthrs"; import { dirname, resolve } from "node:path"; import { fileURLToPath } from "node:url"; import { spawn } from "node:child_process"; diff --git a/docs/references/smithers/.smithers/specs/cloud-execution-engineering.md b/docs/references/smithers/.smithers/specs/cloud-execution-engineering.md index a18c7df12..d54f866e3 100644 --- a/docs/references/smithers/.smithers/specs/cloud-execution-engineering.md +++ b/docs/references/smithers/.smithers/specs/cloud-execution-engineering.md @@ -243,11 +243,11 @@ In Kubernetes, worker pods discover the orchestrator via a Service: apiVersion: v1 kind: Service metadata: - name: smithers-orchestrator + name: smthrs namespace: smithers-system spec: selector: - app: smithers-orchestrator + app: smthrs ports: - name: gateway port: 3000 @@ -255,7 +255,7 @@ spec: port: 3001 ``` -Workers set `SMITHERS_ORCHESTRATOR_URL=http://smithers-orchestrator:3001`. +Workers set `SMITHERS_ORCHESTRATOR_URL=http://smthrs:3001`. ### Task Serialization @@ -348,10 +348,10 @@ import { $ } from "bun"; const tag = process.env.IMAGE_TAG ?? "latest"; -await $`docker build --target orchestrator -t smithers-orchestrator:${tag} .`; +await $`docker build --target orchestrator -t smthrs:${tag} .`; await $`docker build --target worker -t smithers-worker:${tag} .`; -console.log(`Built smithers-orchestrator:${tag} and smithers-worker:${tag}`); +console.log(`Built smthrs:${tag} and smithers-worker:${tag}`); ``` ### Alternative: Init Container (no custom image) @@ -463,21 +463,21 @@ spec: apiVersion: apps/v1 kind: Deployment metadata: - name: smithers-orchestrator + name: smthrs namespace: smithers-system spec: replicas: 1 selector: matchLabels: - app: smithers-orchestrator + app: smthrs template: metadata: labels: - app: smithers-orchestrator + app: smthrs spec: containers: - name: orchestrator - image: smithers-orchestrator:latest + image: smthrs:latest ports: - name: gateway containerPort: 3000 @@ -513,11 +513,11 @@ spec: apiVersion: v1 kind: Service metadata: - name: smithers-orchestrator + name: smthrs namespace: smithers-system spec: selector: - app: smithers-orchestrator + app: smthrs ports: - name: gateway port: 3000 @@ -554,7 +554,7 @@ spec: - name: SMITHERS_ROLE value: worker - name: SMITHERS_ORCHESTRATOR_URL - value: http://smithers-orchestrator.smithers-system.svc.cluster.local:3001 + value: http://smthrs.smithers-system.svc.cluster.local:3001 envFrom: - secretRef: name: smithers-api-keys @@ -590,7 +590,7 @@ metadata: spec: type: LoadBalancer selector: - app: smithers-orchestrator + app: smthrs ports: - name: http port: 80 @@ -836,7 +836,7 @@ async function deploy() { await $`bun run scripts/build.ts`; // Load into minikube - await $`minikube image load smithers-orchestrator:latest`; + await $`minikube image load smthrs:latest`; await $`minikube image load smithers-worker:latest`; // Apply manifests @@ -852,7 +852,7 @@ async function deploy() { await $`kubectl apply -f k8s/gateway.yaml`; // Wait for orchestrator - await $`kubectl wait --for=condition=ready pod -l app=smithers-orchestrator -n smithers-system --timeout=120s`; + await $`kubectl wait --for=condition=ready pod -l app=smthrs -n smithers-system --timeout=120s`; const url = await $`minikube service smithers-gateway -n smithers-system --url`.text(); console.log(`Gateway available at: ${url.trim()}`); @@ -949,7 +949,7 @@ JJHub may need updates to support the worker model described here. Specifically: [Fabrik](https://github.com/SamuelLHuber/local-isolated-ralph) by [Samuel Huber](https://github.com/SamuelLHuber) (dTech.vision) is an existing -K3s-based Kubernetes layer for Smithers. It has `smithers-orchestrator` as a +K3s-based Kubernetes layer for Smithers. It has `smthrs` as a direct dependency and takes a fundamentally different architecture. ### Fabrik Architecture diff --git a/docs/references/smithers/.smithers/specs/cloud-execution-product.md b/docs/references/smithers/.smithers/specs/cloud-execution-product.md index 415760efb..e35b92295 100644 --- a/docs/references/smithers/.smithers/specs/cloud-execution-product.md +++ b/docs/references/smithers/.smithers/specs/cloud-execution-product.md @@ -146,7 +146,7 @@ minikube image load smithers-example:latest kubectl apply -f k8s/ # Watch it run -kubectl logs -f deployment/smithers-orchestrator +kubectl logs -f deployment/smthrs # Access the Gateway minikube service smithers-gateway --url @@ -223,7 +223,7 @@ Environment variables in `k8s/secrets.yaml`: Your workflow code is identical to local Smithers: ```tsx -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, Workflow, Task, outputs } = createSmithers({ diff --git a/docs/references/smithers/.smithers/specs/devtools-prd.md b/docs/references/smithers/.smithers/specs/devtools-prd.md index aecf9225f..386a1974a 100644 --- a/docs/references/smithers/.smithers/specs/devtools-prd.md +++ b/docs/references/smithers/.smithers/specs/devtools-prd.md @@ -26,7 +26,7 @@ Both surfaces consume the same data from the same backend (HTTP API, SSE streams ## Package Architecture -Smithers DevTools ships as a separate internal package (`@smithers-orchestrator/devtools`) that is a dependency of the main `smithers-orchestrator` package. From the user's perspective, devtools is included out of the box — no additional install step. +Smithers DevTools ships as a separate internal package (`@smthrs/devtools`) that is a dependency of the main `smthrs` package. From the user's perspective, devtools is included out of the box — no additional install step. ## Core Experience @@ -161,7 +161,7 @@ Each agent type stores conversation transcripts in its own format and location. - **Antigravity CLI**: reads from Antigravity's conversation storage - **Custom agents**: extensible adapter interface so users can add support for their own agent types -The adapter interface is part of the `@smithers-orchestrator/devtools` package API, allowing third-party agent integrations to provide their own chat log reader. +The adapter interface is part of the `@smthrs/devtools` package API, allowing third-party agent integrations to provide their own chat log reader. ## Connectivity diff --git a/docs/references/smithers/.smithers/specs/extract-prompt-design.md b/docs/references/smithers/.smithers/specs/extract-prompt-design.md index dbdc88010..b3622cccf 100644 --- a/docs/references/smithers/.smithers/specs/extract-prompt-design.md +++ b/docs/references/smithers/.smithers/specs/extract-prompt-design.md @@ -45,8 +45,8 @@ References: see *Sources* at the bottom. ### `<ExtractPrompt>` ```ts -import type { AgentLike, OutputTarget } from "smithers-orchestrator"; -import type { Scorer } from "@smithers-orchestrator/scorers"; +import type { AgentLike, OutputTarget } from "smthrs"; +import type { Scorer } from "@smthrs/scorers"; import type { PromptCache } from "./extract-prompt/PromptCache"; type ExtractPromptProps = { diff --git a/docs/references/smithers/.smithers/specs/hmr-design.md b/docs/references/smithers/.smithers/specs/hmr-design.md index d4e20594b..9a3dae3a4 100644 --- a/docs/references/smithers/.smithers/specs/hmr-design.md +++ b/docs/references/smithers/.smithers/specs/hmr-design.md @@ -192,8 +192,8 @@ components/workflow.tsx ← the root workflow component ├── ./focuses.ts ← list of work categories ├── ./focusDirs.ts ← directory mappings ├── ./focusTestSuites.ts ← test suite mappings - ├── @smithers-orchestrator/super-ralph ← smithers package (stable, not user code) - └── smithers-orchestrator ← smithers core (stable, not user code) + ├── @smthrs/super-ralph ← smithers package (stable, not user code) + └── smthrs ← smithers core (stable, not user code) ``` The user frequently wants to change: @@ -274,7 +274,7 @@ Bun supports this same `import.meta.hot` API in `Bun.serve()` with `development: - A way to read prompt files that are automatically watched? e.g., `useFile("./prompts/planning.md")` - Or is just re-importing the module enough? -8. **Scope of watched files**: The workflow imports smithers-orchestrator and super-ralph packages. These are **library code** and should NOT be watched (just like Vite doesn't watch `node_modules/`). Only the user's workflow files should be watched. How do we distinguish? +8. **Scope of watched files**: The workflow imports smthrs and super-ralph packages. These are **library code** and should NOT be watched (just like Vite doesn't watch `node_modules/`). Only the user's workflow files should be watched. How do we distinguish? 9. **Error handling**: What happens if the user saves a file with a syntax error? - The old workflow should keep running diff --git a/docs/references/smithers/.smithers/specs/smithers-gateway-sdk-migration.md b/docs/references/smithers/.smithers/specs/smithers-gateway-sdk-migration.md index 0855c18b5..1cf0a1057 100644 --- a/docs/references/smithers/.smithers/specs/smithers-gateway-sdk-migration.md +++ b/docs/references/smithers/.smithers/specs/smithers-gateway-sdk-migration.md @@ -2,8 +2,8 @@ This slice moves the apps/smithers PWA off its hand-written gateway RPC helper (`src/gateway/gatewayRpc.ts`) and 3-second `setInterval` polls onto the -first-class SDK packages — `@smithers-orchestrator/gateway-client` and (where -React hooks make sense) `@smithers-orchestrator/gateway-react`. +first-class SDK packages — `@smthrs/gateway-client` and (where +React hooks make sense) `@smthrs/gateway-react`. ## What changed @@ -84,7 +84,7 @@ RPC-frame `Unauthorized` errors arrive as a `GatewayRpcError` and the store's ## Out of scope - Migrating `WorkflowRunUi` / `GatewayRunInspector` to `useGatewayRun` / - `useGatewayRunEvents` from `@smithers-orchestrator/gateway-react` is a + `useGatewayRunEvents` from `@smthrs/gateway-react` is a separate slice (slice B). The store/SDK boundary is enough to remove the polling loop and fix the `launchRun` bug today. - Mounting `SmithersGatewayProvider` at the app root + a hooks-only inspector diff --git a/docs/references/smithers/.smithers/specs/smithers-init-command-design.md b/docs/references/smithers/.smithers/specs/smithers-init-command-design.md index 20f331837..546452c62 100644 --- a/docs/references/smithers/.smithers/specs/smithers-init-command-design.md +++ b/docs/references/smithers/.smithers/specs/smithers-init-command-design.md @@ -13,8 +13,8 @@ This document proposes a simpler local-first Smithers experience centered on: The key product insight is that users mostly want a ready-made folder of workflows they can use immediately and edit later if they choose. The hello-world path should feel like: ```bash -bunx smithers-orchestrator init -bunx smithers-orchestrator workflow implement --prompt "Commit the .smithers folder created with smithers init" +bunx smthrs init +bunx smthrs workflow implement --prompt "Commit the .smithers folder created with smithers init" ``` ## Goals @@ -201,14 +201,14 @@ Why this shape: Recommended command surface: ```bash -bunx smithers-orchestrator init -bunx smithers-orchestrator workflow # same as workflow list -bunx smithers-orchestrator workflow list -bunx smithers-orchestrator workflow <name> -bunx smithers-orchestrator workflow run <name> -bunx smithers-orchestrator workflow create <name> -bunx smithers-orchestrator workflow path <name> -bunx smithers-orchestrator workflow doctor [<name>] +bunx smthrs init +bunx smthrs workflow # same as workflow list +bunx smthrs workflow list +bunx smthrs workflow <name> +bunx smthrs workflow run <name> +bunx smthrs workflow create <name> +bunx smthrs workflow path <name> +bunx smthrs workflow doctor [<name>] ``` Behavior: @@ -259,7 +259,7 @@ The generated `.smithers/` directory should be a real Bun workspace package. Recommended dependency policy: - runtime dependencies - - `smithers-orchestrator` + - `smthrs` - `zod` - dev dependencies - `typescript` @@ -427,7 +427,7 @@ Implements a single ticket from: Discovers or reads multiple tickets from: - local markdown files under `.smithers/tickets/*.md` -- Linear via custom tools or MCP-backed agent integrations, not a core `smithers-orchestrator/linear` export +- Linear via custom tools or MCP-backed agent integrations, not a core `smthrs/linear` export - GitHub issues via `gh` CLI or HTTP integration Important design note: diff --git a/docs/references/smithers/.smithers/specs/smithers-sync-sdk.md b/docs/references/smithers/.smithers/specs/smithers-sync-sdk.md index c68681b33..5519fa967 100644 --- a/docs/references/smithers/.smithers/specs/smithers-sync-sdk.md +++ b/docs/references/smithers/.smithers/specs/smithers-sync-sdk.md @@ -119,11 +119,11 @@ key namespace. The SDK lives in the two existing gateway packages so embedded workflow UIs get the same surface in-tree code does without reaching into apps/smithers: -- `@smithers-orchestrator/gateway-client` — vanilla core: `SyncKey`, +- `@smthrs/gateway-client` — vanilla core: `SyncKey`, `SyncCache`, `SyncSubscriptionHub`, `SyncClient`, `SyncTransport`, `SyncBackoff`, `gatewayKeys`, and `createSmithersGatewayTransport` which wires `SmithersGatewayClient`'s resilient stream generators in. -- `@smithers-orchestrator/gateway-react` — React surface: `SyncProvider`, +- `@smthrs/gateway-react` — React surface: `SyncProvider`, `useSyncClient`, `useSyncQuery`, `useSyncMutation`, `useSyncSubscription`, and the typed gateway shortcuts (`useGatewayQuery`, `useGatewayMutation`, `useGatewayRunStream`). @@ -147,7 +147,7 @@ the existing store onto SDK primitives is out of scope for slice C. A workflow UI mounted at `/workflows/<key>` can either: -- import from `@smithers-orchestrator/gateway-react` (in-tree or embedded UIs) +- import from `@smthrs/gateway-react` (in-tree or embedded UIs) - pass a `SyncTransport` of its own (third-party UIs that talk to their own RPC over postMessage to the host iframe) diff --git a/docs/references/smithers/.smithers/specs/ui-feature-planning-prompt.md b/docs/references/smithers/.smithers/specs/ui-feature-planning-prompt.md index 06ef6eaa0..7b9b008eb 100644 --- a/docs/references/smithers/.smithers/specs/ui-feature-planning-prompt.md +++ b/docs/references/smithers/.smithers/specs/ui-feature-planning-prompt.md @@ -49,7 +49,7 @@ Your job: produce a **step-by-step implementation plan**: architecture decisions | Package | Role | |---|---| -| `smithers` | Public facade (`smithers-orchestrator` on npm). `createSmithers`, JSX runtime, `mdx-plugin`. | +| `smithers` | Public facade (`smthrs` on npm). `createSmithers`, JSX runtime, `mdx-plugin`. | | `components` | 50+ React components: `Workflow`, `Task`, `Sequence`, `Parallel`, `Branch`, `Loop`, `Ralph`, `Approval`, `Sandbox`, `Signal`, `Timer`, `HumanTask`, `Saga`, `Kanban`, `Debate`, `ReviewLoop`, etc. | | `react-reconciler` | Custom React reconciler that renders JSX into Smithers host trees (NOT DOM). Also contains a DOM adapter used only for devtools. | | `driver` | Workflow driver, `SmithersCtx`, task runner, decision actor. Pure logic (no HTTP). | @@ -72,8 +72,8 @@ Your job: produce a **step-by-step implementation plan**: architecture decisions ### Path aliases (`tsconfig.json`) -- `smithers-orchestrator` → `packages/smithers/src/index.js` -- `@smithers-orchestrator/*` → `packages/*/src/index.js` (or sub-paths) +- `smthrs` → `packages/smithers/src/index.js` +- `@smthrs/*` → `packages/*/src/index.js` (or sub-paths) - All 21 sibling packages aliased. User code always imports via these aliases, never relative paths across packages. ### Organization rules (from user's standing preferences — memory notes) @@ -260,9 +260,9 @@ type SmithersWorkflow<Schema> = { ```js #!/usr/bin/env bun -import { ... } from "@smithers-orchestrator/engine"; -import { mdxPlugin } from "smithers-orchestrator/mdx-plugin"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ... } from "@smthrs/engine"; +import { mdxPlugin } from "smthrs/mdx-plugin"; +import { SmithersDb } from "@smthrs/db/adapter"; async function loadWorkflowAsync(path) { const abs = resolve(process.cwd(), path); @@ -341,7 +341,7 @@ Key Effect packages already present: `effect` v3.21.1, `@effect/sql`, `@effect/s "moduleResolution": "bundler", "lib": ["ESNext", "DOM", "DOM.Iterable"], "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", // <-- !! + "jsxImportSource": "smthrs", // <-- !! "allowImportingTsExtensions": true, "verbatimModuleSyntax": true, "strict": true @@ -349,7 +349,7 @@ Key Effect packages already present: `effect` v3.21.1, `@effect/sql`, `@effect/s } ``` -**The JSX gotcha you must solve**: smithers sets `jsxImportSource: "smithers-orchestrator"` globally, which points JSX at `packages/smithers/src/jsx-runtime.js`. That runtime is written for the Smithers reconciler (workflow graph), not DOM. The UI app needs **standard React JSX** (DOM). Options the planner must weigh: +**The JSX gotcha you must solve**: smithers sets `jsxImportSource: "smthrs"` globally, which points JSX at `packages/smithers/src/jsx-runtime.js`. That runtime is written for the Smithers reconciler (workflow graph), not DOM. The UI app needs **standard React JSX** (DOM). Options the planner must weigh: 1. Per-directory / per-file `@jsxImportSource react` override for UI files. 2. A separate `tsconfig.ui.json` for the UI directory. @@ -367,11 +367,11 @@ Key Effect packages already present: `effect` v3.21.1, `@effect/sql`, `@effect/s `examples/code-review-loop.jsx`: ```jsx -import { Sequence, Ralph } from "smithers-orchestrator"; +import { Sequence, Ralph } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent, Output } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ReviewPrompt from "./prompts/code-review-loop/review.mdx"; import FixPrompt from "./prompts/code-review-loop/fix.mdx"; @@ -528,7 +528,7 @@ A non-exhaustive list of decisions the planner must make explicit. Present each 11. **Errors & boundaries** - UI render failures must not crash the workflow engine. - - Pipe UI-surface errors through `@smithers-orchestrator/errors` tagged-error patterns. + - Pipe UI-surface errors through `@smthrs/errors` tagged-error patterns. 12. **Testing story** - Bun test for server SSR rendering. diff --git a/docs/references/smithers/.smithers/tests/openCodeReviewRunFixture.ts b/docs/references/smithers/.smithers/tests/openCodeReviewRunFixture.ts index e43c736a0..28cd859c7 100644 --- a/docs/references/smithers/.smithers/tests/openCodeReviewRunFixture.ts +++ b/docs/references/smithers/.smithers/tests/openCodeReviewRunFixture.ts @@ -1,5 +1,5 @@ -import { Gateway, mdxPlugin } from "smithers-orchestrator"; -import type { AgentLike } from "smithers-orchestrator"; +import { Gateway, mdxPlugin } from "smthrs"; +import type { AgentLike } from "smthrs"; import { dirname, resolve } from "node:path"; import { fileURLToPath } from "node:url"; diff --git a/docs/references/smithers/.smithers/tests/ship-pipeline-ui.e2e.test.tsx b/docs/references/smithers/.smithers/tests/ship-pipeline-ui.e2e.test.tsx index cb101578b..dbed38638 100644 --- a/docs/references/smithers/.smithers/tests/ship-pipeline-ui.e2e.test.tsx +++ b/docs/references/smithers/.smithers/tests/ship-pipeline-ui.e2e.test.tsx @@ -1,11 +1,11 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { afterAll, beforeAll, expect, test } from "bun:test"; import { mkdtempSync, rmSync } from "node:fs"; import { createServer } from "node:net"; import { tmpdir } from "node:os"; import { dirname, join, resolve } from "node:path"; import { fileURLToPath } from "node:url"; -import { createSmithers, Gateway, Sequence } from "smithers-orchestrator"; +import { createSmithers, Gateway, Sequence } from "smthrs"; import { z } from "zod/v4"; /** diff --git a/docs/references/smithers/.smithers/tests/shipPipelineRunFixture.ts b/docs/references/smithers/.smithers/tests/shipPipelineRunFixture.ts index 4afafee30..e10bbe3bd 100644 --- a/docs/references/smithers/.smithers/tests/shipPipelineRunFixture.ts +++ b/docs/references/smithers/.smithers/tests/shipPipelineRunFixture.ts @@ -4,7 +4,7 @@ // renders the real run. Spawned by ship-pipeline-run.e2e.test.tsx with cwd set to a // throwaway git repo (so the worktrees + ticket files land there, and bun // resolves modules from the real tree rather than a stale global cache). -import { Gateway, mdxPlugin } from "smithers-orchestrator"; +import { Gateway, mdxPlugin } from "smthrs"; import { dirname, resolve } from "node:path"; import { fileURLToPath } from "node:url"; diff --git a/docs/references/smithers/.smithers/tests/ultragrillRunFixture.ts b/docs/references/smithers/.smithers/tests/ultragrillRunFixture.ts index ae68a134a..5da88882c 100644 --- a/docs/references/smithers/.smithers/tests/ultragrillRunFixture.ts +++ b/docs/references/smithers/.smithers/tests/ultragrillRunFixture.ts @@ -3,7 +3,7 @@ // session over real RPC (submitSignal utterances → worker dispatch → end). // Spawned by ultragrill.e2e.test with cwd set to a throwaway dir and a fake // `claude` on PATH so the worker resolves deterministically. -import { Gateway, SmithersDb, mdxPlugin } from "smithers-orchestrator"; +import { Gateway, SmithersDb, mdxPlugin } from "smthrs"; import { dirname, resolve } from "node:path"; import { fileURLToPath } from "node:url"; diff --git a/docs/references/smithers/.smithers/tickets/0003-6larp-assessment.md b/docs/references/smithers/.smithers/tickets/0003-6larp-assessment.md index 0836dcc50..a89ad4fbb 100644 --- a/docs/references/smithers/.smithers/tickets/0003-6larp-assessment.md +++ b/docs/references/smithers/.smithers/tickets/0003-6larp-assessment.md @@ -25,6 +25,6 @@ Objective: critically evaluate whether shipped code is real or performative, the - [x] Run package-level tests for touched packages. - [x] Run `apps/smithers-demo` tests and build after dependency-manifest fix. - [x] Run package-level agents tests after fixing the unawaited diagnostics test and timeout watchdog. -- [x] Run full engine package after serializing the engine package script and fixing the timer/CLI harness races. `pnpm --filter @smithers-orchestrator/engine --config.verify-deps-before-run=false test` passed: 527 tests across 87 files. +- [x] Run full engine package after serializing the engine package script and fixing the timer/CLI harness races. `pnpm --filter @smthrs/engine --config.verify-deps-before-run=false test` passed: 527 tests across 87 files. - [x] Run broader root checks. Root preflight checks passed: `node scripts/check-single-effect-version.mjs`, `node scripts/check-dependency-boundaries.mjs`, and `node scripts/check-architecture-budget.mjs`. - [x] Run a full recursive workspace test after fixes. `pnpm -r --workspace-concurrency=1 --config.verify-deps-before-run=false test` passed across 31 workspace projects. Notable remaining skips are documented above. diff --git a/docs/references/smithers/.smithers/tsconfig.json b/docs/references/smithers/.smithers/tsconfig.json index 55186e925..4cb8c9a0d 100644 --- a/docs/references/smithers/.smithers/tsconfig.json +++ b/docs/references/smithers/.smithers/tsconfig.json @@ -9,7 +9,7 @@ "module": "ESNext", "moduleDetection": "force", "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", + "jsxImportSource": "smthrs", "moduleResolution": "bundler", "allowImportingTsExtensions": true, "allowJs": true, @@ -22,15 +22,15 @@ "baseUrl": ".", "paths": { "~/*": ["./*"], - "smithers-orchestrator": ["../packages/smithers/src/index.js"], - "smithers-orchestrator/jsx-runtime": ["../packages/smithers/src/jsx-runtime.js"], - "smithers-orchestrator/jsx-dev-runtime": ["../packages/smithers/src/jsx-runtime.js"], - "smithers-orchestrator/tools": ["../packages/smithers/src/tools.js"], - "smithers-orchestrator/*": [ + "smthrs": ["../packages/smithers/src/index.js"], + "smthrs/jsx-runtime": ["../packages/smithers/src/jsx-runtime.js"], + "smthrs/jsx-dev-runtime": ["../packages/smithers/src/jsx-runtime.js"], + "smthrs/tools": ["../packages/smithers/src/tools.js"], + "smthrs/*": [ "../packages/smithers/src/*.js", "../packages/smithers/src/*/index.js" ], - "smithers-orchestrator/scorers": ["../packages/scorers/src/index.js"], + "smthrs/scorers": ["../packages/scorers/src/index.js"], "@smithers/agents": ["../packages/agents/src/index.js"], "@smithers/agents/*": [ "../packages/agents/src/*.ts", diff --git a/docs/references/smithers/.smithers/ui/audit.tsx b/docs/references/smithers/.smithers/ui/audit.tsx index 656486853..968f01795 100644 --- a/docs/references/smithers/.smithers/ui/audit.tsx +++ b/docs/references/smithers/.smithers/ui/audit.tsx @@ -7,7 +7,7 @@ import { useGatewayRun, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const WORKFLOW_KEY = "audit"; diff --git a/docs/references/smithers/.smithers/ui/grill-me.tsx b/docs/references/smithers/.smithers/ui/grill-me.tsx index 6d9a221aa..1a49f6e34 100644 --- a/docs/references/smithers/.smithers/ui/grill-me.tsx +++ b/docs/references/smithers/.smithers/ui/grill-me.tsx @@ -7,7 +7,7 @@ import { useGatewayRun, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const WORKFLOW_KEY = "grill-me"; const GRILL_NODE_ID = "grill-me:grill"; diff --git a/docs/references/smithers/.smithers/ui/implement.tsx b/docs/references/smithers/.smithers/ui/implement.tsx index dec61fe4b..b38b3901c 100644 --- a/docs/references/smithers/.smithers/ui/implement.tsx +++ b/docs/references/smithers/.smithers/ui/implement.tsx @@ -6,7 +6,7 @@ import { useGatewayNodeOutput, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const WORKFLOW_KEY = "implement"; diff --git a/docs/references/smithers/.smithers/ui/improve-test-coverage.tsx b/docs/references/smithers/.smithers/ui/improve-test-coverage.tsx index 1dc1fc2bb..859843b2c 100644 --- a/docs/references/smithers/.smithers/ui/improve-test-coverage.tsx +++ b/docs/references/smithers/.smithers/ui/improve-test-coverage.tsx @@ -6,7 +6,7 @@ import { useGatewayNodeOutput, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const WORKFLOW_KEY = "improve-test-coverage"; diff --git a/docs/references/smithers/.smithers/ui/mission.tsx b/docs/references/smithers/.smithers/ui/mission.tsx index d91eac65e..f43d8bafe 100644 --- a/docs/references/smithers/.smithers/ui/mission.tsx +++ b/docs/references/smithers/.smithers/ui/mission.tsx @@ -8,7 +8,7 @@ import { useGatewayRun, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const WORKFLOW_KEY = "mission"; const MAX_MILESTONES = 6; diff --git a/docs/references/smithers/.smithers/ui/open-code-review.tsx b/docs/references/smithers/.smithers/ui/open-code-review.tsx index 6d4823310..8cfe82932 100644 --- a/docs/references/smithers/.smithers/ui/open-code-review.tsx +++ b/docs/references/smithers/.smithers/ui/open-code-review.tsx @@ -6,7 +6,7 @@ import { useGatewayNodeOutput, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const WORKFLOW_KEY = "open-code-review"; diff --git a/docs/references/smithers/.smithers/ui/ralph.tsx b/docs/references/smithers/.smithers/ui/ralph.tsx index 785623772..73da334f1 100644 --- a/docs/references/smithers/.smithers/ui/ralph.tsx +++ b/docs/references/smithers/.smithers/ui/ralph.tsx @@ -6,7 +6,7 @@ import { useGatewayNodeOutput, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const WORKFLOW_KEY = "ralph"; diff --git a/docs/references/smithers/.smithers/ui/research-plan-implement.tsx b/docs/references/smithers/.smithers/ui/research-plan-implement.tsx index 4a6f3cedc..39a00d148 100644 --- a/docs/references/smithers/.smithers/ui/research-plan-implement.tsx +++ b/docs/references/smithers/.smithers/ui/research-plan-implement.tsx @@ -6,7 +6,7 @@ import { useGatewayNodeOutput, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const WORKFLOW_KEY = "research-plan-implement"; diff --git a/docs/references/smithers/.smithers/ui/research.tsx b/docs/references/smithers/.smithers/ui/research.tsx index 7ff15bb82..75c065948 100644 --- a/docs/references/smithers/.smithers/ui/research.tsx +++ b/docs/references/smithers/.smithers/ui/research.tsx @@ -7,7 +7,7 @@ import { useGatewayRun, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const WORKFLOW_KEY = "research"; diff --git a/docs/references/smithers/.smithers/ui/review.tsx b/docs/references/smithers/.smithers/ui/review.tsx index e87cd1b4e..4b8bc7f2b 100644 --- a/docs/references/smithers/.smithers/ui/review.tsx +++ b/docs/references/smithers/.smithers/ui/review.tsx @@ -6,7 +6,7 @@ import { useGatewayNodeOutput, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const WORKFLOW_KEY = "review"; const MAX_REVIEWERS = 6; diff --git a/docs/references/smithers/.smithers/ui/ship-pipeline.tsx b/docs/references/smithers/.smithers/ui/ship-pipeline.tsx index 5054e047a..7addfe1df 100644 --- a/docs/references/smithers/.smithers/ui/ship-pipeline.tsx +++ b/docs/references/smithers/.smithers/ui/ship-pipeline.tsx @@ -7,7 +7,7 @@ import { useGatewayRun, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const WORKFLOW_KEY = "ship-pipeline"; diff --git a/docs/references/smithers/.smithers/ui/ticket-create.tsx b/docs/references/smithers/.smithers/ui/ticket-create.tsx index dbff0352b..9f22674b8 100644 --- a/docs/references/smithers/.smithers/ui/ticket-create.tsx +++ b/docs/references/smithers/.smithers/ui/ticket-create.tsx @@ -6,7 +6,7 @@ import { useGatewayNodeOutput, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const WORKFLOW_KEY = "ticket-create"; diff --git a/docs/references/smithers/.smithers/ui/tickets-create.tsx b/docs/references/smithers/.smithers/ui/tickets-create.tsx index f6aba884b..1e86e0094 100644 --- a/docs/references/smithers/.smithers/ui/tickets-create.tsx +++ b/docs/references/smithers/.smithers/ui/tickets-create.tsx @@ -6,7 +6,7 @@ import { useGatewayNodeOutput, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const WORKFLOW_KEY = "tickets-create"; diff --git a/docs/references/smithers/.smithers/ui/ultragrill.tsx b/docs/references/smithers/.smithers/ui/ultragrill.tsx index c430fc1f9..4ae821247 100644 --- a/docs/references/smithers/.smithers/ui/ultragrill.tsx +++ b/docs/references/smithers/.smithers/ui/ultragrill.tsx @@ -7,7 +7,7 @@ import { useGatewayRun, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const WORKFLOW_KEY = "ultragrill"; diff --git a/docs/references/smithers/.smithers/ui/vcs.tsx b/docs/references/smithers/.smithers/ui/vcs.tsx index a22cc5d69..f50cb714c 100644 --- a/docs/references/smithers/.smithers/ui/vcs.tsx +++ b/docs/references/smithers/.smithers/ui/vcs.tsx @@ -6,7 +6,7 @@ import { useGatewayNodeOutput, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const WORKFLOW_KEY = "vcs"; const ACTIONS = ["status", "log", "commit", "rebase-plan"] as const; diff --git a/docs/references/smithers/.smithers/ui/workflow-skill.tsx b/docs/references/smithers/.smithers/ui/workflow-skill.tsx index 6a916401b..b98f35c62 100644 --- a/docs/references/smithers/.smithers/ui/workflow-skill.tsx +++ b/docs/references/smithers/.smithers/ui/workflow-skill.tsx @@ -6,7 +6,7 @@ import { useGatewayNodeOutput, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const WORKFLOW_KEY = "workflow-skill"; diff --git a/docs/references/smithers/.smithers/workflows/audit.tsx b/docs/references/smithers/.smithers/workflows/audit.tsx index abb391a6e..8b1bfb964 100644 --- a/docs/references/smithers/.smithers/workflows/audit.tsx +++ b/docs/references/smithers/.smithers/workflows/audit.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Audit -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { ForEachFeature, forEachFeatureMergeSchema, forEachFeatureResultSchema } from "../components/ForEachFeature"; diff --git a/docs/references/smithers/.smithers/workflows/backpressure-plan.tsx b/docs/references/smithers/.smithers/workflows/backpressure-plan.tsx index 1c4809db8..fff26ae1a 100644 --- a/docs/references/smithers/.smithers/workflows/backpressure-plan.tsx +++ b/docs/references/smithers/.smithers/workflows/backpressure-plan.tsx @@ -3,8 +3,8 @@ // smithers-display-name: Backpressure Plan // smithers-description: Turn acceptance criteria into a gate matrix (schema/test/eval/review/approval/trace) so a workflow cannot just try-its-best and move on. // smithers-tags: quality, backpressure -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import ExtractCriteriaPrompt from "../prompts/backpressure-plan-extract-criteria.mdx"; diff --git a/docs/references/smithers/.smithers/workflows/context-doctor.tsx b/docs/references/smithers/.smithers/workflows/context-doctor.tsx index 7b876e63a..bdeeccb8b 100644 --- a/docs/references/smithers/.smithers/workflows/context-doctor.tsx +++ b/docs/references/smithers/.smithers/workflows/context-doctor.tsx @@ -3,8 +3,8 @@ // smithers-display-name: Context Doctor // smithers-description: Run deterministic checks over a context contract and report missing goals, inputs, verification, approvals, and report specs. // smithers-tags: quality, context-engineering -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import AdvisePrompt from "../prompts/context-doctor-advise.mdx"; diff --git a/docs/references/smithers/.smithers/workflows/context-engineer.tsx b/docs/references/smithers/.smithers/workflows/context-engineer.tsx index f3fa8b837..4f8437b43 100644 --- a/docs/references/smithers/.smithers/workflows/context-engineer.tsx +++ b/docs/references/smithers/.smithers/workflows/context-engineer.tsx @@ -3,8 +3,8 @@ // smithers-display-name: Context Engineer // smithers-description: Turn a vague user script into a context contract, route it to skills/workflows, add backpressure, execute, and report — the concierge proxy. // smithers-tags: concierge, context-engineering, planning -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { GrillMe, grillOutputSchema } from "../components/GrillMe"; diff --git a/docs/references/smithers/.smithers/workflows/create-skill.tsx b/docs/references/smithers/.smithers/workflows/create-skill.tsx index 4b4838ca9..d63b0790b 100644 --- a/docs/references/smithers/.smithers/workflows/create-skill.tsx +++ b/docs/references/smithers/.smithers/workflows/create-skill.tsx @@ -3,8 +3,8 @@ // smithers-display-name: Create Skill // smithers-description: Author a new agent skill (SKILL.md + supporting files) from a plain-English ask. // smithers-tags: authoring, skills -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import ClarifyPrompt from "../prompts/create-skill-clarify.mdx"; diff --git a/docs/references/smithers/.smithers/workflows/create-workflow.tsx b/docs/references/smithers/.smithers/workflows/create-workflow.tsx index 0d6700d7f..dafdbe5be 100644 --- a/docs/references/smithers/.smithers/workflows/create-workflow.tsx +++ b/docs/references/smithers/.smithers/workflows/create-workflow.tsx @@ -3,9 +3,9 @@ // smithers-display-name: Create Workflow // smithers-description: Build a new Smithers workflow from a plain-English ask — clarify, provision docs & skills, design, scaffold, verify, and document. // smithers-tags: authoring, workflow-pack, scaffolding -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { $ } from "bun"; -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import ClarifyPrompt from "../prompts/create-workflow-clarify.mdx"; @@ -251,8 +251,8 @@ export default smithers((ctx) => { <Sequence> <Task id="verify" output={outputs.verify}> {async () => { - const command = `bunx smithers-orchestrator graph ${workflowFile}`; - const res = await $`bunx smithers-orchestrator graph ${workflowFile}`.nothrow().quiet(); + const command = `bunx smthrs graph ${workflowFile}`; + const res = await $`bunx smthrs graph ${workflowFile}`.nothrow().quiet(); const passed = res.exitCode === 0; const errText = `${res.stderr?.toString() ?? ""}\n${res.stdout?.toString() ?? ""}`.trim(); return { diff --git a/docs/references/smithers/.smithers/workflows/debug.tsx b/docs/references/smithers/.smithers/workflows/debug.tsx index e7bf1619d..bf7107260 100644 --- a/docs/references/smithers/.smithers/workflows/debug.tsx +++ b/docs/references/smithers/.smithers/workflows/debug.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Debug -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { ValidationLoop, implementOutputSchema, validateOutputSchema } from "../components/ValidationLoop"; diff --git a/docs/references/smithers/.smithers/workflows/demo-stage/sample.tsx b/docs/references/smithers/.smithers/workflows/demo-stage/sample.tsx index 0ebf45f1a..43e032f0e 100644 --- a/docs/references/smithers/.smithers/workflows/demo-stage/sample.tsx +++ b/docs/references/smithers/.smithers/workflows/demo-stage/sample.tsx @@ -1,6 +1,6 @@ // smithers-source: authored // smithers-display-name: Demo Sample (Ship It) -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ // // Tiny 3-task workflow the autonomous demo runs LIVE to show crash-resume. // Designed so: @@ -9,7 +9,7 @@ // - implement is fast (~1.2s) // If you run it through, total wall time is ~10s. -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; const result = z.object({ message: z.string() }); diff --git a/docs/references/smithers/.smithers/workflows/demo.tsx b/docs/references/smithers/.smithers/workflows/demo.tsx index 7aad3af1a..a5d49fa61 100644 --- a/docs/references/smithers/.smithers/workflows/demo.tsx +++ b/docs/references/smithers/.smithers/workflows/demo.tsx @@ -1,6 +1,6 @@ // smithers-source: authored // smithers-display-name: Slideshow Demo -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ /** * A keyboard-driven Smithers slide deck for a 5–15 minute screenshare. @@ -28,7 +28,7 @@ * ./.smithers/scripts/run-demo.sh --voice Daniel */ -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; const inputSchema = z.object({ @@ -944,7 +944,7 @@ export function Optimizer({ render: () => { printCode( `import { llmJudge, faithfulness, relevancy, schemaAdherence } from - "smithers-orchestrator/scorers"; + "smthrs/scorers"; <Task id="answer" @@ -976,7 +976,7 @@ export function Optimizer({ "On any task you can set memory dot recall to auto-inject the top K most relevant past facts into the prompt.", render: () => { printCode( -`import { createMemoryStore } from "smithers-orchestrator/memory"; +`import { createMemoryStore } from "smthrs/memory"; const ns = { kind: "workflow", id: "code-review" }; <Task @@ -1289,7 +1289,7 @@ store.setFact(ns, "code-style", { tabs: 2, semi: true }, 30 * 24 * 3600_000);`, // .smithers/workflows/kanban.frontend/ // index.html · assets/ · manifest.json ← React app, served by smithers -bunx smithers-orchestrator up workflow.tsx \\ +bunx smthrs up workflow.tsx \\ --serve --port 7331 \\ --auth-token "$SMITHERS_API_KEY" \\ --metrics @@ -1313,7 +1313,7 @@ GET /metrics # Prometheus`, "Same substrate. Different authoring surface. You can mix both in one workflow.", render: () => { printCode( -`import { Smithers } from "smithers-orchestrator"; +`import { Smithers } from "smthrs"; import { Effect, Schema } from "effect"; const G = Smithers.workflow({ @@ -1363,7 +1363,7 @@ const analyze = G.step("analyze", { ` ${C.cyan}ralph-loop${C.reset} ${C.dim}keep going until done${C.reset}`, "", ` ${C.dim}101 files in examples/. Read one, copy it, edit it.${C.reset}`, - ` ${C.green}bunx smithers-orchestrator init${C.reset}${C.dim} ← scaffolds seeded workflows into your repo${C.reset}`, + ` ${C.green}bunx smthrs init${C.reset}${C.dim} ← scaffolds seeded workflows into your repo${C.reset}`, "", ], C.cyan, @@ -1404,7 +1404,7 @@ const analyze = G.step("analyze", { { title: "THREE LAYERS", - subtitle: "smithers-orchestrator. The forge. The GUI.", + subtitle: "smthrs. The forge. The GUI.", narration: "Smithers is three things. " + "The orchestrator — what you just watched — shipped today on N P M. " + @@ -1415,9 +1415,9 @@ const analyze = G.step("analyze", { "Smithers, three layers", [ "", - ` ${C.cyan}1${C.reset} ${C.bold}smithers-orchestrator${C.reset} ${C.dim}shipped today · OSS · npm${C.reset}`, + ` ${C.cyan}1${C.reset} ${C.bold}smthrs${C.reset} ${C.dim}shipped today · OSS · npm${C.reset}`, ` the durable JSX workflow runtime`, - ` ${C.green}bunx smithers-orchestrator init${C.reset}`, + ` ${C.green}bunx smthrs init${C.reset}`, "", ` ${C.cyan}2${C.reset} ${C.bold}Smithers (the forge)${C.reset} ${C.dim}AGPL · in build · ~78% of MVP${C.reset}`, ` jj-native code host · landing requests · agent runtime`, @@ -1437,10 +1437,10 @@ const analyze = G.step("analyze", { title: "READY TO TRY?", subtitle: "", narration: - "Try it. B U N X smithers-orchestrator init. Thanks for watching.", + "Try it. B U N X smthrs init. Thanks for watching.", render: () => { write("\n\n\n"); - write(` ${C.bold}${C.green}bunx smithers-orchestrator init${C.reset}\n`); + write(` ${C.bold}${C.green}bunx smthrs init${C.reset}\n`); write(` ${C.dim}scaffolds .smithers/ in any project${C.reset}\n\n\n`); write(` ${C.bold}smithers.sh${C.reset}\n`); write(` ${C.dim}docs · llms-full.txt · GUI download${C.reset}\n\n\n`); diff --git a/docs/references/smithers/.smithers/workflows/dynamic-demo.tsx b/docs/references/smithers/.smithers/workflows/dynamic-demo.tsx index 6d5995afb..b4a9b39fa 100644 --- a/docs/references/smithers/.smithers/workflows/dynamic-demo.tsx +++ b/docs/references/smithers/.smithers/workflows/dynamic-demo.tsx @@ -1,7 +1,7 @@ // smithers-source: authored // smithers-display-name: Dynamic Task Demo -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; const inputSchema = z.object({ diff --git a/docs/references/smithers/.smithers/workflows/eval-author.tsx b/docs/references/smithers/.smithers/workflows/eval-author.tsx index f1504bc33..82680e49e 100644 --- a/docs/references/smithers/.smithers/workflows/eval-author.tsx +++ b/docs/references/smithers/.smithers/workflows/eval-author.tsx @@ -3,8 +3,8 @@ // smithers-display-name: Eval Author // smithers-description: Turn acceptance criteria into eval fixtures (JSONL cases + rubric) wired to smithers eval. // smithers-tags: quality, evals -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import DerivePrompt from "../prompts/eval-author-derive.mdx"; diff --git a/docs/references/smithers/.smithers/workflows/extract-prompt.tsx b/docs/references/smithers/.smithers/workflows/extract-prompt.tsx index 56034c69b..d8c660c54 100644 --- a/docs/references/smithers/.smithers/workflows/extract-prompt.tsx +++ b/docs/references/smithers/.smithers/workflows/extract-prompt.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Extract Prompt -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { diff --git a/docs/references/smithers/.smithers/workflows/extract-skill.tsx b/docs/references/smithers/.smithers/workflows/extract-skill.tsx index 401b50a62..7e9fabebb 100644 --- a/docs/references/smithers/.smithers/workflows/extract-skill.tsx +++ b/docs/references/smithers/.smithers/workflows/extract-skill.tsx @@ -3,8 +3,8 @@ // smithers-display-name: Extract Skill // smithers-description: After a run, harvest a reusable skill or workflow and durable memory from the pattern. // smithers-tags: reuse, skills, memory -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import AnalyzePrompt from "../prompts/extract-skill-analyze.mdx"; diff --git a/docs/references/smithers/.smithers/workflows/feature-enum.tsx b/docs/references/smithers/.smithers/workflows/feature-enum.tsx index f96b998c8..30179f401 100644 --- a/docs/references/smithers/.smithers/workflows/feature-enum.tsx +++ b/docs/references/smithers/.smithers/workflows/feature-enum.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Feature Enum -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { FeatureEnum, featureEnumOutputSchema } from "../components/FeatureEnum"; diff --git a/docs/references/smithers/.smithers/workflows/grill-all-three.tsx b/docs/references/smithers/.smithers/workflows/grill-all-three.tsx index 72dd8f1c0..0bf9b6afc 100644 --- a/docs/references/smithers/.smithers/workflows/grill-all-three.tsx +++ b/docs/references/smithers/.smithers/workflows/grill-all-three.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Grill All Three -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Loop, Sequence } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Loop, Sequence } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { grillOutputSchema } from "../components/GrillMe"; diff --git a/docs/references/smithers/.smithers/workflows/grill-me.tsx b/docs/references/smithers/.smithers/workflows/grill-me.tsx index 950140f77..2e8fd68bf 100644 --- a/docs/references/smithers/.smithers/workflows/grill-me.tsx +++ b/docs/references/smithers/.smithers/workflows/grill-me.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Grill Me -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { GrillMe, grillOutputSchema } from "../components/GrillMe"; diff --git a/docs/references/smithers/.smithers/workflows/implement-codex-gemini.tsx b/docs/references/smithers/.smithers/workflows/implement-codex-gemini.tsx index 5e0b848ab..452e15f83 100644 --- a/docs/references/smithers/.smithers/workflows/implement-codex-gemini.tsx +++ b/docs/references/smithers/.smithers/workflows/implement-codex-gemini.tsx @@ -1,7 +1,7 @@ // smithers-source: user // smithers-display-name: Implement Codex Gemini -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { providers } from "../agents"; import { ValidationLoop, implementOutputSchema, validateOutputSchema } from "../components/ValidationLoop"; diff --git a/docs/references/smithers/.smithers/workflows/implement-stable.tsx b/docs/references/smithers/.smithers/workflows/implement-stable.tsx index fa568c386..0f60d2021 100644 --- a/docs/references/smithers/.smithers/workflows/implement-stable.tsx +++ b/docs/references/smithers/.smithers/workflows/implement-stable.tsx @@ -1,7 +1,7 @@ // smithers-source: user // smithers-display-name: Implement Stable -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { providers } from "../agents"; import { ValidationLoop, implementOutputSchema, validateOutputSchema } from "../components/ValidationLoop"; diff --git a/docs/references/smithers/.smithers/workflows/implement.tsx b/docs/references/smithers/.smithers/workflows/implement.tsx index 3e3d7a709..7822675f5 100644 --- a/docs/references/smithers/.smithers/workflows/implement.tsx +++ b/docs/references/smithers/.smithers/workflows/implement.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Implement -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { ValidationLoop, implementOutputSchema, validateOutputSchema } from "../components/ValidationLoop"; diff --git a/docs/references/smithers/.smithers/workflows/improve-test-coverage.tsx b/docs/references/smithers/.smithers/workflows/improve-test-coverage.tsx index a9c3e4799..f76b31f8a 100644 --- a/docs/references/smithers/.smithers/workflows/improve-test-coverage.tsx +++ b/docs/references/smithers/.smithers/workflows/improve-test-coverage.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Improve Test Coverage -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { ValidationLoop, implementOutputSchema, validateOutputSchema } from "../components/ValidationLoop"; diff --git a/docs/references/smithers/.smithers/workflows/kanban.tsx b/docs/references/smithers/.smithers/workflows/kanban.tsx index 4f557e26e..4e92219ea 100644 --- a/docs/references/smithers/.smithers/workflows/kanban.tsx +++ b/docs/references/smithers/.smithers/workflows/kanban.tsx @@ -1,6 +1,6 @@ // smithers-display-name: Kanban -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Parallel, Worktree } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Parallel, Worktree } from "smthrs"; import { readdirSync, readFileSync } from "node:fs"; import { resolve, relative } from "node:path"; import { z } from "zod/v4"; diff --git a/docs/references/smithers/.smithers/workflows/mission.tsx b/docs/references/smithers/.smithers/workflows/mission.tsx index 5ba47ce27..b98d9cd0b 100644 --- a/docs/references/smithers/.smithers/workflows/mission.tsx +++ b/docs/references/smithers/.smithers/workflows/mission.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Mission -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import AskUserInstructions from "../prompts/ask-user-instructions.mdx"; diff --git a/docs/references/smithers/.smithers/workflows/monitor-smithers.tsx b/docs/references/smithers/.smithers/workflows/monitor-smithers.tsx index d0330a0e3..457fa9676 100644 --- a/docs/references/smithers/.smithers/workflows/monitor-smithers.tsx +++ b/docs/references/smithers/.smithers/workflows/monitor-smithers.tsx @@ -3,9 +3,9 @@ // smithers-display-name: Monitor Smithers // smithers-description: Watchdog over Smithers runs: detect stuck, blocked, failed, or over-budget runs and escalate. // smithers-tags: ops, monitoring -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { $ } from "bun"; -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import ClassifyPrompt from "../prompts/monitor-smithers-classify.mdx"; @@ -68,7 +68,7 @@ const { Workflow, Task, Sequence, Branch, smithers, outputs } = createSmithers({ // JSON, and normalise into the watchdog's run shape. Any failure (CLI missing, // non-zero exit, bad JSON) degrades to an empty list rather than throwing. async function pollRuns(staleMinutes: number) { - const res = await $`bunx smithers-orchestrator ps --format json --all`.nothrow().quiet(); + const res = await $`bunx smthrs ps --format json --all`.nothrow().quiet(); if (res.exitCode !== 0) { return { runs: [], summary: "Could not read runs from `smithers ps` (non-zero exit)." }; } diff --git a/docs/references/smithers/.smithers/workflows/open-code-review.tsx b/docs/references/smithers/.smithers/workflows/open-code-review.tsx index 023958ae2..e17d3859c 100644 --- a/docs/references/smithers/.smithers/workflows/open-code-review.tsx +++ b/docs/references/smithers/.smithers/workflows/open-code-review.tsx @@ -1,7 +1,7 @@ // smithers-source: authored // smithers-display-name: Open Code Review -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Parallel, Sequence, type AgentLike } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Parallel, Sequence, type AgentLike } from "smthrs"; import { agents } from "../agents"; import { buildNativeReviewPrompt, diff --git a/docs/references/smithers/.smithers/workflows/plan.tsx b/docs/references/smithers/.smithers/workflows/plan.tsx index ba5403001..c032d21f1 100644 --- a/docs/references/smithers/.smithers/workflows/plan.tsx +++ b/docs/references/smithers/.smithers/workflows/plan.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Plan -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import PlanPrompt from "../prompts/plan.mdx"; diff --git a/docs/references/smithers/.smithers/workflows/ralph.tsx b/docs/references/smithers/.smithers/workflows/ralph.tsx index beb86febe..b951cb590 100644 --- a/docs/references/smithers/.smithers/workflows/ralph.tsx +++ b/docs/references/smithers/.smithers/workflows/ralph.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Ralph -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; diff --git a/docs/references/smithers/.smithers/workflows/release.tsx b/docs/references/smithers/.smithers/workflows/release.tsx index da4fcc98c..88a685fbf 100644 --- a/docs/references/smithers/.smithers/workflows/release.tsx +++ b/docs/references/smithers/.smithers/workflows/release.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Release -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence } from "smthrs"; import { z } from "zod/v4"; const inputSchema = z.object({ diff --git a/docs/references/smithers/.smithers/workflows/report-slideshow.tsx b/docs/references/smithers/.smithers/workflows/report-slideshow.tsx index 71c00bda6..4aade58e2 100644 --- a/docs/references/smithers/.smithers/workflows/report-slideshow.tsx +++ b/docs/references/smithers/.smithers/workflows/report-slideshow.tsx @@ -3,9 +3,9 @@ // smithers-display-name: Report Slideshow // smithers-description: Generate a concise HTML slideshow report from a Smithers run state and artifacts. // smithers-tags: ops, reporting -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { $ } from "bun"; -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import RenderPrompt from "../prompts/report-slideshow-render.mdx"; @@ -100,7 +100,7 @@ export default smithers((ctx) => { {/* 1 — Deterministically capture the run state, nodes, and a summary. */} <Task id="gather" output={outputs.gather}> {async () => { - const res = await $`bunx smithers-orchestrator inspect ${runId} --format json --full-output` + const res = await $`bunx smthrs inspect ${runId} --format json --full-output` .nothrow() .quiet(); const stdout = res.stdout?.toString() ?? ""; diff --git a/docs/references/smithers/.smithers/workflows/research-plan-implement.tsx b/docs/references/smithers/.smithers/workflows/research-plan-implement.tsx index 998e2f629..f0d5ba3fd 100644 --- a/docs/references/smithers/.smithers/workflows/research-plan-implement.tsx +++ b/docs/references/smithers/.smithers/workflows/research-plan-implement.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Research Plan Implement -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { ValidationLoop, implementOutputSchema, validateOutputSchema } from "../components/ValidationLoop"; diff --git a/docs/references/smithers/.smithers/workflows/research.tsx b/docs/references/smithers/.smithers/workflows/research.tsx index d81e23060..a7925a7bb 100644 --- a/docs/references/smithers/.smithers/workflows/research.tsx +++ b/docs/references/smithers/.smithers/workflows/research.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Research -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import ResearchPrompt from "../prompts/research.mdx"; diff --git a/docs/references/smithers/.smithers/workflows/restore-claude-implement.tsx b/docs/references/smithers/.smithers/workflows/restore-claude-implement.tsx index f2c5455dc..a1e3bab64 100644 --- a/docs/references/smithers/.smithers/workflows/restore-claude-implement.tsx +++ b/docs/references/smithers/.smithers/workflows/restore-claude-implement.tsx @@ -1,7 +1,7 @@ // smithers-source: user // smithers-display-name: Restore Claude Implement Agents -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; const restoreSchema = z.object({ diff --git a/docs/references/smithers/.smithers/workflows/review-codex-gemini.tsx b/docs/references/smithers/.smithers/workflows/review-codex-gemini.tsx index 203d43e00..24df29834 100644 --- a/docs/references/smithers/.smithers/workflows/review-codex-gemini.tsx +++ b/docs/references/smithers/.smithers/workflows/review-codex-gemini.tsx @@ -1,7 +1,7 @@ // smithers-source: user // smithers-display-name: Review Codex Gemini -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { providers } from "../agents"; import { Review, reviewOutputSchema } from "../components/Review"; diff --git a/docs/references/smithers/.smithers/workflows/review-nokimi.tsx b/docs/references/smithers/.smithers/workflows/review-nokimi.tsx index 66462181c..7f19960ed 100644 --- a/docs/references/smithers/.smithers/workflows/review-nokimi.tsx +++ b/docs/references/smithers/.smithers/workflows/review-nokimi.tsx @@ -1,7 +1,7 @@ // smithers-source: user // smithers-display-name: Review No Kimi -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { providers } from "../agents"; import { Review, reviewOutputSchema } from "../components/Review"; diff --git a/docs/references/smithers/.smithers/workflows/review.tsx b/docs/references/smithers/.smithers/workflows/review.tsx index 877bbbdfd..c0f92da7c 100644 --- a/docs/references/smithers/.smithers/workflows/review.tsx +++ b/docs/references/smithers/.smithers/workflows/review.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Review -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { Review, reviewOutputSchema } from "../components/Review"; diff --git a/docs/references/smithers/.smithers/workflows/roadmapbench.tsx b/docs/references/smithers/.smithers/workflows/roadmapbench.tsx index 3ec7f1823..7bd67358c 100644 --- a/docs/references/smithers/.smithers/workflows/roadmapbench.tsx +++ b/docs/references/smithers/.smithers/workflows/roadmapbench.tsx @@ -1,5 +1,5 @@ // smithers-display-name: RoadmapBench -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ // // RoadmapBench-on-smithers: a multi-agent, long-horizon software-development // workflow that mixes Claude Opus 4.8 and Codex 5.5 to implement a real @@ -24,7 +24,7 @@ import { Task, createScorer, createSmithers, -} from "smithers-orchestrator"; +} from "smthrs"; import { z } from "zod/v4"; const HARNESS = join( diff --git a/docs/references/smithers/.smithers/workflows/route-task.tsx b/docs/references/smithers/.smithers/workflows/route-task.tsx index d465961e7..afcad5ca0 100644 --- a/docs/references/smithers/.smithers/workflows/route-task.tsx +++ b/docs/references/smithers/.smithers/workflows/route-task.tsx @@ -3,8 +3,8 @@ // smithers-display-name: Route Task // smithers-description: Classify a plain-English script and either run it as a single task or recommend the right durable workflow. // smithers-tags: concierge, routing -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import ClassifyPrompt from "../prompts/route-task-classify.mdx"; diff --git a/docs/references/smithers/.smithers/workflows/ship-pipeline.tsx b/docs/references/smithers/.smithers/workflows/ship-pipeline.tsx index a90254198..9b8e16c97 100644 --- a/docs/references/smithers/.smithers/workflows/ship-pipeline.tsx +++ b/docs/references/smithers/.smithers/workflows/ship-pipeline.tsx @@ -1,7 +1,7 @@ // smithers-source: authored // smithers-display-name: Ship Pipeline -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { VerifiableGoals, goalsSchema, writtenSchema } from "../components/VerifiableGoals"; diff --git a/docs/references/smithers/.smithers/workflows/smoketest.tsx b/docs/references/smithers/.smithers/workflows/smoketest.tsx index fe1e3c492..9601ee7cd 100644 --- a/docs/references/smithers/.smithers/workflows/smoketest.tsx +++ b/docs/references/smithers/.smithers/workflows/smoketest.tsx @@ -1,10 +1,10 @@ // smithers-source: seeded // smithers-display-name: Smoke Test -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { readFileSync } from "node:fs"; import { resolve } from "node:path"; import { fileURLToPath } from "node:url"; -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import SmoketestPrompt from "../prompts/smoketest.mdx"; @@ -47,7 +47,7 @@ const inputSchema = z.object({ prompt: z .string() .default( - "Smoke test the latest published smithers-orchestrator release against the pinned changelog entry.", + "Smoke test the latest published smthrs release against the pinned changelog entry.", ), version: z.string().default(CURRENT_VERSION), changelog: z.string().default(CURRENT_CHANGELOG), diff --git a/docs/references/smithers/.smithers/workflows/studio-parity-swarm.tsx b/docs/references/smithers/.smithers/workflows/studio-parity-swarm.tsx index 26bbd825a..922807003 100644 --- a/docs/references/smithers/.smithers/workflows/studio-parity-swarm.tsx +++ b/docs/references/smithers/.smithers/workflows/studio-parity-swarm.tsx @@ -1,5 +1,5 @@ // smithers-display-name: Smithers Studio Parity Swarm -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { AntigravityAgent, ClaudeCodeAgent, @@ -13,7 +13,7 @@ import { Worktree, createSmithers, type AgentLike, -} from "smithers-orchestrator"; +} from "smthrs"; import { spawnSync } from "node:child_process"; import { join } from "node:path"; import { z } from "zod/v4"; diff --git a/docs/references/smithers/.smithers/workflows/sweep.tsx b/docs/references/smithers/.smithers/workflows/sweep.tsx index 5c3f3c67d..029020174 100644 --- a/docs/references/smithers/.smithers/workflows/sweep.tsx +++ b/docs/references/smithers/.smithers/workflows/sweep.tsx @@ -1,6 +1,6 @@ // smithers-display-name: Sweep -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import { diff --git a/docs/references/smithers/.smithers/workflows/sync-features.tsx b/docs/references/smithers/.smithers/workflows/sync-features.tsx index ddd013354..c40f916f6 100644 --- a/docs/references/smithers/.smithers/workflows/sync-features.tsx +++ b/docs/references/smithers/.smithers/workflows/sync-features.tsx @@ -1,6 +1,6 @@ // smithers-display-name: Sync Features -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import SyncFeaturesScanPrompt from "../prompts/sync-features-scan.mdx"; diff --git a/docs/references/smithers/.smithers/workflows/ticket-create.tsx b/docs/references/smithers/.smithers/workflows/ticket-create.tsx index 3497efc8d..859cc391d 100644 --- a/docs/references/smithers/.smithers/workflows/ticket-create.tsx +++ b/docs/references/smithers/.smithers/workflows/ticket-create.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Ticket Create -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import TicketPrompt from "../prompts/ticket.mdx"; diff --git a/docs/references/smithers/.smithers/workflows/tickets-create.tsx b/docs/references/smithers/.smithers/workflows/tickets-create.tsx index 96de05a5d..13463f938 100644 --- a/docs/references/smithers/.smithers/workflows/tickets-create.tsx +++ b/docs/references/smithers/.smithers/workflows/tickets-create.tsx @@ -1,7 +1,7 @@ // smithers-source: seeded // smithers-display-name: Tickets Create -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import TicketsCreatePrompt from "../prompts/tickets-create.mdx"; diff --git a/docs/references/smithers/.smithers/workflows/triage-run.tsx b/docs/references/smithers/.smithers/workflows/triage-run.tsx index 560762c8f..c8f11a90f 100644 --- a/docs/references/smithers/.smithers/workflows/triage-run.tsx +++ b/docs/references/smithers/.smithers/workflows/triage-run.tsx @@ -3,9 +3,9 @@ // smithers-display-name: Triage Run // smithers-description: Diagnose one failed or stuck Smithers run: pull events/logs, find the root cause, propose a fix/rewind/retry. // smithers-tags: ops, debugging -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { $ } from "bun"; -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import DiagnosePrompt from "../prompts/triage-run-diagnose.mdx"; @@ -94,10 +94,10 @@ export default smithers((ctx) => { {/* 1 — Deterministically pull run state + the recent event log. */} <Task id="gather" output={outputs.gather}> {async () => { - const inspectRes = await $`bunx smithers-orchestrator inspect ${runId} --json` + const inspectRes = await $`bunx smthrs inspect ${runId} --json` .nothrow() .quiet(); - const eventsRes = await $`bunx smithers-orchestrator events ${runId}` + const eventsRes = await $`bunx smthrs events ${runId}` .nothrow() .quiet(); diff --git a/docs/references/smithers/.smithers/workflows/ultragrill.tsx b/docs/references/smithers/.smithers/workflows/ultragrill.tsx index 505411c28..8a11570ab 100644 --- a/docs/references/smithers/.smithers/workflows/ultragrill.tsx +++ b/docs/references/smithers/.smithers/workflows/ultragrill.tsx @@ -1,7 +1,7 @@ // smithers-source: authored // smithers-display-name: UltraGrill -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Loop, Parallel, Task, WaitForEvent } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Loop, Parallel, Task, WaitForEvent } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; diff --git a/docs/references/smithers/.smithers/workflows/vcs.tsx b/docs/references/smithers/.smithers/workflows/vcs.tsx index 99228c96e..e36ebdb8f 100644 --- a/docs/references/smithers/.smithers/workflows/vcs.tsx +++ b/docs/references/smithers/.smithers/workflows/vcs.tsx @@ -1,8 +1,8 @@ // smithers-source: authored // smithers-display-name: VCS // smithers-description: Inspect and act on a git or jj working tree. Status and log are deterministic; commit messages and rebase plans are written by an agent. -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Task, Sequence } from 'smithers-orchestrator'; +/** @jsxImportSource smthrs */ +import { createSmithers, Task, Sequence } from 'smthrs'; import { execFileSync } from 'node:child_process'; import { z } from 'zod/v4'; import { agents } from '../agents'; diff --git a/docs/references/smithers/.smithers/workflows/workflow-skill.tsx b/docs/references/smithers/.smithers/workflows/workflow-skill.tsx index f4340a9f5..e18d6b599 100644 --- a/docs/references/smithers/.smithers/workflows/workflow-skill.tsx +++ b/docs/references/smithers/.smithers/workflows/workflow-skill.tsx @@ -1,9 +1,9 @@ // smithers-source: seeded // smithers-display-name: Workflow Skill -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { existsSync, readdirSync, readFileSync, statSync } from "node:fs"; import { join, resolve } from "node:path"; -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { z } from "zod/v4"; import { agents } from "../agents"; import WorkflowSkillPrompt from "../prompts/workflow-skill.mdx"; diff --git a/docs/references/smithers/README.md b/docs/references/smithers/README.md index b5ffb8596..519ff9f24 100644 --- a/docs/references/smithers/README.md +++ b/docs/references/smithers/README.md @@ -27,8 +27,8 @@ Smithers skill and register the MCP server into **every coding agent on your mac (Claude Code, Codex, Cursor, Copilot, Pi, Hermes, OpenClaw, and ~20 more): ```bash -bunx smithers-orchestrator skills add # install the skill set into every detected agent -bunx smithers-orchestrator mcp add # register Smithers as an MCP server everywhere +bunx smthrs skills add # install the skill set into every detected agent +bunx smthrs mcp add # register Smithers as an MCP server everywhere ``` Then just ask: @@ -60,10 +60,10 @@ Prefer to drive it yourself from the CLI? Start here. ```bash # scaffold the workflow pack into .smithers/ -bunx smithers-orchestrator init +bunx smthrs init # turn a request into a practical implementation plan -bunx smithers-orchestrator workflow run plan --prompt "add rate limiting, audit logging, and API key rotation" +bunx smthrs workflow run plan --prompt "add rate limiting, audit logging, and API key rotation" ``` `init` scaffolds a `.smithers/` folder preloaded with production-ready workflows. Once @@ -71,13 +71,13 @@ that's in place, you can chain a request from tickets to implementation: ```bash # break a request into ticket files under .smithers/tickets/ -bunx smithers-orchestrator workflow run tickets-create --prompt "add rate limiting, audit logging, and API key rotation" +bunx smthrs workflow run tickets-create --prompt "add rate limiting, audit logging, and API key rotation" # implement the tickets, each in its own worktree branch -bunx smithers-orchestrator workflow run kanban +bunx smthrs workflow run kanban ``` -Run `bunx smithers-orchestrator starters` to browse plain-English starters, and +Run `bunx smthrs starters` to browse plain-English starters, and `smithers workflow list` to see what's installed. ## Watch your runs @@ -125,7 +125,7 @@ for the job and switch freely: ## Built-in workflows `smithers init` installs a pack of ready-to-run workflows. Point your agent at one and go -via `bunx smithers-orchestrator workflow run <id> --prompt "..."`: +via `bunx smthrs workflow run <id> --prompt "..."`: **Build** @@ -184,7 +184,7 @@ adapt them to your repo, or have it write new ones from the same primitives. A w is a JSX tree of tasks: ```tsx -import { createSmithers, Sequence } from "smithers-orchestrator"; +import { createSmithers, Sequence } from "smthrs"; import { z } from "zod"; const { Workflow, Task, smithers, outputs } = createSmithers({ diff --git a/docs/references/smithers/apps/cli/docs/llms-full.txt b/docs/references/smithers/apps/cli/docs/llms-full.txt index 079a15a12..58fb225df 100644 --- a/docs/references/smithers/apps/cli/docs/llms-full.txt +++ b/docs/references/smithers/apps/cli/docs/llms-full.txt @@ -1,7 +1,7 @@ # Smithers — full documentation > Durable AI workflow orchestration as a JSX runtime. -> Repo: github.com/smithersai/smithers · Package: smithers-orchestrator (npm) +> Repo: github.com/smithersai/smithers · Package: smthrs (npm) This is the complete agent-facing Smithers documentation in one file. It is the concatenation of every fragment listed in /llms.txt. @@ -24,7 +24,7 @@ Changelogs are not included; see /docs/changelogs/ on the docs site. # Smithers > Smithers — durable AI workflow orchestration as a JSX runtime. -> Repo: github.com/smithersai/smithers · Package: smithers-orchestrator (npm) +> Repo: github.com/smithersai/smithers · Package: smthrs (npm) This file is the agent-facing core Smithers documentation. It is for Claude, Codex, and other AI harnesses operating Smithers for a human. Read top to bottom for the runtime, agent operating playbook, JSX surface, CLI, and components. @@ -81,8 +81,8 @@ harnesses should operate Smithers for the human, including the `llms.txt` and </CardGroup> ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -101,8 +101,8 @@ export default smithers((ctx) => ( ``` ```bash -bunx smithers-orchestrator init -bunx smithers-orchestrator up workflow.tsx --input '{"name":"world"}' +bunx smthrs init +bunx smthrs up workflow.tsx --input '{"name":"world"}' ``` Outputs are validated by Zod, persisted to SQLite, and survive crashes. Resume with @@ -144,14 +144,14 @@ to run, and treats having your agent author new ones as a first-class path. ## Built-in workflows -`bunx smithers-orchestrator init` scaffolds a `.smithers/` folder preloaded with +`bunx smthrs init` scaffolds a `.smithers/` folder preloaded with production-ready workflows. Point your agent at one and go with -`bunx smithers-orchestrator workflow run <id> --prompt "..."`: +`bunx smthrs workflow run <id> --prompt "..."`: ```bash # break a request into tickets, then implement them on a board -bunx smithers-orchestrator workflow run tickets-create --prompt "add rate limiting and audit logging" -bunx smithers-orchestrator workflow run kanban +bunx smthrs workflow run tickets-create --prompt "add rate limiting and audit logging" +bunx smthrs workflow run kanban ``` <CardGroup cols={2}> @@ -306,24 +306,24 @@ Don't use it for a single prompt → single response. Use your model provider's ## Installation -> Install smithers-orchestrator with the workflow pack, or manually for standalone JSX workflow projects. +> Install smthrs with the workflow pack, or manually for standalone JSX workflow projects. Most teams should start with the workflow pack. It gives you a working `.smithers/` directory with seeded workflows, prompts, and agent configuration instead of assembling the project structure by hand. ## Always Run with `bunx` -Every CLI invocation in these docs is `bunx smithers-orchestrator <command>`. Do **not** install Smithers globally and do **not** use the bare `smithers` or `bunx smithers` shorthand. +Every CLI invocation in these docs is `bunx smthrs <command>`. Do **not** install Smithers globally and do **not** use the bare `smithers` or `bunx smithers` shorthand. - `bunx` resolves the package locally if your project depends on it, otherwise it pulls and runs the latest published version. -- The published npm package is [`smithers-orchestrator`](https://www.npmjs.com/package/smithers-orchestrator). The bare name `smithers` is a different package, so `bunx smithers` runs something else entirely. +- The published npm package is [`smthrs`](https://www.npmjs.com/package/smthrs). The bare name `smithers` is a different package, so `bunx smithers` runs something else entirely. - A global install creates version-drift problems across machines, CI, and contributors. With `bunx`, every project pins Smithers through its own `package.json`. -If you previously ran `npm i -g smithers-orchestrator`, uninstall it (`npm rm -g smithers-orchestrator`) and switch to `bunx`. +If you previously ran `npm i -g smthrs`, uninstall it (`npm rm -g smthrs`) and switch to `bunx`. ## Recommended: Install the Workflow Pack ```bash -bunx smithers-orchestrator init +bunx smthrs init ``` That scaffolds `.smithers/` with files such as: @@ -333,7 +333,7 @@ That scaffolds `.smithers/` with files such as: | `.smithers/workflows/` | Pre-built workflows (`implement`, `review`, `plan`, `ralph`, `debug`, ...) | | `.smithers/prompts/` | Shared MDX prompt templates | | `.smithers/components/` | Reusable TSX components (`Review`, `ValidationLoop`, ...) | -| `.smithers/package.json` | Local workflow project manifest with `smithers-orchestrator` dependency | +| `.smithers/package.json` | Local workflow project manifest with `smthrs` dependency | | `.smithers/tsconfig.json` | TypeScript config for JSX workflow authoring | | `.smithers/bunfig.toml` | Bun preload config for MDX workflow prompts | | `.smithers/preload.ts` | Registers the MDX preload plugin | @@ -347,7 +347,7 @@ That scaffolds `.smithers/` with files such as: To overwrite an existing scaffold: ```bash -bunx smithers-orchestrator init --force +bunx smthrs init --force ``` ## Install the Agent Skill @@ -372,8 +372,8 @@ outcome — *"orchestrate an agent to add rate limiting and keep iterating until tests pass"* — and the agent reaches for Smithers itself. For agents without a skills directory, point them at -`bunx smithers-orchestrator docs-full` (prints the same bundle) or -`bunx smithers-orchestrator ask "<question>"`. +`bunx smthrs docs-full` (prints the same bundle) or +`bunx smthrs ask "<question>"`. To install the skill **and** register the MCP server into every coding agent on your machine at once, see Agent Support — it covers Claude @@ -394,13 +394,13 @@ See JSX Installation for the package list, TypeScript configuration, and optiona ### Version control -Smithers bundles jj. The optional `@smithers-orchestrator/jj-<platform>` package installs a vendored jj binary for your platform, so a fresh install works with no system jj. Resolution order is: +Smithers bundles jj. The optional `@smthrs/jj-<platform>` package installs a vendored jj binary for your platform, so a fresh install works with no system jj. Resolution order is: 1. `SMITHERS_JJ_PATH` — point this at a jj binary to override everything. 2. The bundled binary for your platform. 3. `jj` on your `PATH`. -If no bundled binary installed (an unsupported platform, or `--no-optional`) and neither `jj` nor `git` is on `PATH`, runs that need a worktree fail with a message telling you to install one. Check what Smithers found with `bunx smithers-orchestrator workflow doctor` (the `vcs` section reports the resolved jj and git). +If no bundled binary installed (an unsupported platform, or `--no-optional`) and neither `jj` nor `git` is on `PATH`, runs that need a worktree fail with a message telling you to install one. Check what Smithers found with `bunx smthrs workflow doctor` (the `vcs` section reports the resolved jj and git). ## After Installation @@ -419,25 +419,25 @@ If no bundled binary installed (an unsupported platform, or `--no-optional`) and > Scaffold and run a Smithers workflow in two commands. ```bash -bunx smithers-orchestrator init -bunx smithers-orchestrator init --template idea-to-tickets -bunx smithers-orchestrator workflow run implement --prompt "Add rate limiting" +bunx smthrs init +bunx smthrs init --template idea-to-tickets +bunx smthrs workflow run implement --prompt "Add rate limiting" ``` -`init` scaffolds `.smithers/` (workflows, prompts, components, agent config). Add `--template <id>` when you want the init result to include the selected starter command and follow-up notes. Run `bunx smithers-orchestrator starters` to browse template IDs. +`init` scaffolds `.smithers/` (workflows, prompts, components, agent config). Add `--template <id>` when you want the init result to include the selected starter command and follow-up notes. Run `bunx smthrs starters` to browse template IDs. Inspect the run: ```bash -bunx smithers-orchestrator ps -bunx smithers-orchestrator inspect <run-id> -bunx smithers-orchestrator logs <run-id> --tail 20 +bunx smthrs ps +bunx smthrs inspect <run-id> +bunx smthrs logs <run-id> --tail 20 ``` Resume after a crash: ```bash -bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true +bunx smthrs up workflow.tsx --run-id <run-id> --resume true ``` Prefer to let your agent drive? Install the agent skill and just ask for the outcome — your coding agent runs Smithers for you. @@ -453,19 +453,19 @@ For a full worked example, see the Tour. For every CLI command see the CLI catal Smithers ships with starter workflows for when you want a result before your agent writes any workflow code. Browse the starter gallery from any repo: ```bash -bunx smithers-orchestrator starters +bunx smthrs starters ``` First-time setup: ```bash -bunx smithers-orchestrator init --add-agents +bunx smthrs init --add-agents ``` Or initialize with guided next steps for one template: ```bash -bunx smithers-orchestrator init --template idea-to-tickets +bunx smthrs init --template idea-to-tickets ``` Template IDs: @@ -474,37 +474,37 @@ Pass any ID from this table to `init --template <id>` to scaffold that starter. | Starter | Best for | Workflow | Command | | --- | --- | --- | --- | -| `idea-to-prd` | founders, product | `write-a-prd` | `bunx smithers-orchestrator init --template idea-to-prd` | -| `idea-to-tickets` | founders, product, operations, engineering | `tickets-create` | `bunx smithers-orchestrator init --template idea-to-tickets` | -| `launch-checklist` | launch owners and operators | `plan` | `bunx smithers-orchestrator init --template launch-checklist` | -| `customer-incident` | support escalations | `debug` | `bunx smithers-orchestrator init --template customer-incident` | -| `nontechnical-research` | before-build decisions | `research` | `bunx smithers-orchestrator init --template nontechnical-research` | -| `requirements-interview` | vague stakeholder requests | `grill-me` | `bunx smithers-orchestrator init --template requirements-interview` | -| `quality-audit` | release readiness | `audit` | `bunx smithers-orchestrator init --template quality-audit` | -| `test-coverage` | regression prevention | `improve-test-coverage` | `bunx smithers-orchestrator init --template test-coverage` | -| `ship-a-change` | focused product improvements | `research-plan-implement` | `bunx smithers-orchestrator init --template ship-a-change` | -| `mission-mode` | larger approved milestones | `mission` | `bunx smithers-orchestrator init --template mission-mode` | +| `idea-to-prd` | founders, product | `write-a-prd` | `bunx smthrs init --template idea-to-prd` | +| `idea-to-tickets` | founders, product, operations, engineering | `tickets-create` | `bunx smthrs init --template idea-to-tickets` | +| `launch-checklist` | launch owners and operators | `plan` | `bunx smthrs init --template launch-checklist` | +| `customer-incident` | support escalations | `debug` | `bunx smthrs init --template customer-incident` | +| `nontechnical-research` | before-build decisions | `research` | `bunx smthrs init --template nontechnical-research` | +| `requirements-interview` | vague stakeholder requests | `grill-me` | `bunx smthrs init --template requirements-interview` | +| `quality-audit` | release readiness | `audit` | `bunx smthrs init --template quality-audit` | +| `test-coverage` | regression prevention | `improve-test-coverage` | `bunx smthrs init --template test-coverage` | +| `ship-a-change` | focused product improvements | `research-plan-implement` | `bunx smthrs init --template ship-a-change` | +| `mission-mode` | larger approved milestones | `mission` | `bunx smthrs init --template mission-mode` | Each detailed starter prints: - What outcome to expect - What context to gather before running -- The exact `bunx smithers-orchestrator workflow run ...` command +- The exact `bunx smthrs workflow run ...` command - Useful follow-up commands - When not to use that starter Filter by audience or goal: ```bash -bunx smithers-orchestrator starters --audience product -bunx smithers-orchestrator starters --goal quality -bunx smithers-orchestrator starters --workflow debug +bunx smthrs starters --audience product +bunx smthrs starters --goal quality +bunx smthrs starters --workflow debug ``` Use JSON when another tool needs the catalog: ```bash -bunx smithers-orchestrator starters --format json +bunx smthrs starters --format json ``` --- @@ -518,8 +518,8 @@ A code-review workflow built one capability at a time. Each step is a diff again ## 1. Install and scaffold ```bash -bunx smithers-orchestrator init -bun add smithers-orchestrator ai @ai-sdk/anthropic zod +bunx smthrs init +bun add smthrs ai @ai-sdk/anthropic zod bun add -d typescript @types/bun export ANTHROPIC_API_KEY="sk-ant-..." ``` @@ -535,7 +535,7 @@ A minimal `tsconfig.json`: "module": "ESNext", "moduleResolution": "bundler", "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", + "jsxImportSource": "smthrs", "strict": true, "noEmit": true, "skipLibCheck": true @@ -548,7 +548,7 @@ A minimal `tsconfig.json`: ## 2. One-task workflow ```tsx -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -571,14 +571,14 @@ export default smithers((ctx) => ( This Task has no `agent`, just a literal value. Run it. ```bash -bunx smithers-orchestrator up workflow.tsx --input '{"name":"world"}' +bunx smthrs up workflow.tsx --input '{"name":"world"}' ``` Inspect: ```bash -bunx smithers-orchestrator ps # find the run id -bunx smithers-orchestrator inspect <run-id> # structured state +bunx smthrs ps # find the run id +bunx smthrs inspect <run-id> # structured state sqlite3 smithers.db "SELECT * FROM greeting;" # the persisted output ``` @@ -587,7 +587,7 @@ sqlite3 smithers.db "SELECT * FROM greeting;" # the persisted output Replace the literal Task with an agent Task whose output is structured. ```tsx -import { createSmithers, Sequence, Task, AnthropicAgent } from "smithers-orchestrator"; +import { createSmithers, Sequence, Task, AnthropicAgent } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -625,7 +625,7 @@ The runtime injects a JSON-schema description of `outputs.analysis` into the pro Tasks see each other's outputs through `ctx.outputMaybe(...)`. An incomplete upstream returns `undefined`; on the next render frame the upstream output appears and the downstream Task mounts. ```tsx -import { createSmithers, Sequence, Task, AnthropicAgent } from "smithers-orchestrator"; +import { createSmithers, Sequence, Task, AnthropicAgent } from "smthrs"; import { z } from "zod"; const AnalysisSchema = z.object({ @@ -700,7 +700,7 @@ Same shape works for branching, parallel groups, and loops: Pause for a human. The runtime persists the pending decision and exits cleanly; an operator approves or denies through the CLI; resume picks up from the gate. ```tsx -import { Approval } from "smithers-orchestrator"; +import { Approval } from "smthrs"; {analysis ? ( <Approval @@ -726,10 +726,10 @@ import { Approval } from "smithers-orchestrator"; Operator side: ```bash -bunx smithers-orchestrator ps --status waiting-approval # find paused runs -bunx smithers-orchestrator inspect <run-id> # see the request -bunx smithers-orchestrator approve <run-id> --node confirm-fix --by alice -bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true +bunx smthrs ps --status waiting-approval # find paused runs +bunx smthrs inspect <run-id> # see the request +bunx smthrs approve <run-id> --node confirm-fix --by alice +bunx smthrs up workflow.tsx --run-id <run-id> --resume true ``` `onDeny` controls behavior on rejection: `"fail"` aborts the run, `"continue"` proceeds without the approved branch, `"skip"` skips the gated tasks. @@ -739,10 +739,10 @@ bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true Every completed task's output sits in SQLite. A crash, kill, or restart loses no work — the next run with `--resume true` skips finished tasks. ```bash -bunx smithers-orchestrator up workflow.tsx --input '{"repo":"."}' --run-id review-1 +bunx smthrs up workflow.tsx --input '{"repo":"."}' --run-id review-1 # ...analyze finishes, fix is mid-flight, you Ctrl+C -bunx smithers-orchestrator up workflow.tsx --run-id review-1 --resume true +bunx smthrs up workflow.tsx --run-id review-1 --resume true # analyze is skipped (already in DB), fix re-runs from scratch (was incomplete) ``` @@ -751,14 +751,14 @@ In-flight attempts are marked stale and re-tried; finished tasks are not. Resume For unattended recovery, run the supervisor: ```bash -bunx smithers-orchestrator supervise --interval 30s --stale-threshold 1m +bunx smthrs supervise --interval 30s --stale-threshold 1m ``` It auto-resumes runs whose owner process died. ## What you skipped (and where to find it) -- **Time travel** (replay a frame, fork a run, diff two runs): `bunx smithers-orchestrator replay|fork|diff|timeline` — see How It Works → Time travel. +- **Time travel** (replay a frame, fork a run, diff two runs): `bunx smthrs replay|fork|diff|timeline` — see How It Works → Time travel. - **Scorers** (attach evaluators to Tasks): see Recipes → Scoring tasks. - **Memory** (cross-run facts and message history): see llms-memory.txt. - **RAG**, **voice**, **OpenAPI tools**: opt-in fragments — see the index in llms.txt. @@ -999,7 +999,7 @@ Replay with `--restore-vcs` checks out the jj revision the snapshot was taken at Attach evaluators to a Task. They run **after** completion and never block. ```tsx -import { schemaAdherenceScorer, latencyScorer } from "smithers-orchestrator/scorers"; +import { schemaAdherenceScorer, latencyScorer } from "smthrs/scorers"; <Task id="analyze" @@ -1035,7 +1035,7 @@ Five built-in tools — `read`, `write`, `edit`, `grep`, `bash` — sandboxed to Least-privilege per task: ```tsx -import { AnthropicAgent } from "smithers-orchestrator"; +import { AnthropicAgent } from "smthrs"; const analyst = new AnthropicAgent({ model, instructions: "..." }); // no tools const reviewer = new AnthropicAgent({ model, instructions: "...", tools: { read, grep } }); const implementer = new AnthropicAgent({ model, instructions: "...", tools: { read, write, edit, bash } }); @@ -1236,26 +1236,26 @@ If you cannot see the run, you cannot operate it well. For local and development work, use the CLI surfaces yourself: ```bash -bunx smithers-orchestrator ps -bunx smithers-orchestrator inspect <run-id> --watch -bunx smithers-orchestrator events <run-id> --watch -bunx smithers-orchestrator node <run-id> <node-id> -bunx smithers-orchestrator scores <run-id> -bunx smithers-orchestrator why <run-id> +bunx smthrs ps +bunx smthrs inspect <run-id> --watch +bunx smthrs events <run-id> --watch +bunx smthrs node <run-id> <node-id> +bunx smthrs scores <run-id> +bunx smthrs why <run-id> ``` Use serve mode when you need HTTP status, SSE events, remote approvals, or Prometheus metrics: ```bash -bunx smithers-orchestrator up workflow.tsx --serve --metrics --port 7331 +bunx smthrs up workflow.tsx --serve --metrics --port 7331 ``` Use the observability stack when the work needs traces, metrics, dashboards, or a reviewer evidence bundle: ```bash -bunx smithers-orchestrator observability +bunx smthrs observability ``` Enable OpenTelemetry export when you need trace-level proof, then include the @@ -1280,8 +1280,8 @@ plan, gates, and evidence live." Do not phrase it as homework for the human. Use hot mode while authoring or tuning a workflow: ```bash -bunx smithers-orchestrator graph workflow.tsx -bunx smithers-orchestrator up workflow.tsx --hot true --input '{"prompt":"..."}' +bunx smthrs graph workflow.tsx +bunx smthrs up workflow.tsx --hot true --input '{"prompt":"..."}' ``` The graph command validates the rendered shape without executing the whole job. @@ -1402,12 +1402,12 @@ Workflows are JSX trees. Smithers renders the tree, extracts ready tasks, execut ## Setup -Most projects should use `bunx smithers-orchestrator init` — it scaffolds everything below. +Most projects should use `bunx smthrs init` — it scaffolds everything below. To embed into an existing codebase: ```bash -bun add smithers-orchestrator react react-dom zod +bun add smthrs react react-dom zod bun add -d typescript @types/react @types/react-dom @types/node ``` @@ -1420,7 +1420,7 @@ Minimal `tsconfig.json`: "module": "ESNext", "moduleResolution": "bundler", "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", + "jsxImportSource": "smthrs", "strict": true, "noEmit": true, "skipLibCheck": true @@ -1428,17 +1428,17 @@ Minimal `tsconfig.json`: } ``` -`jsxImportSource` is the only non-standard line — it routes JSX through `smithers-orchestrator/jsx-runtime` instead of React DOM. +`jsxImportSource` is the only non-standard line — it routes JSX through `smthrs/jsx-runtime` instead of React DOM. Optional MDX prompts: add `bun add -d @types/mdx` and a `preload.ts` that calls `mdxPlugin()`, register it in `bunfig.toml` as `preload = ["./preload.ts"]`. -Verify with `bunx tsc --noEmit` and `bunx smithers-orchestrator --help`. +Verify with `bunx tsc --noEmit` and `bunx smthrs --help`. ## A minimal workflow ```tsx -// @jsxImportSource smithers-orchestrator — only needed if not set in tsconfig.json -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +// @jsxImportSource smthrs — only needed if not set in tsconfig.json +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -1481,7 +1481,7 @@ The `report` Task doesn't exist in the plan until `analysis` completes. No place > Every Smithers CLI command in one structured catalog (TOON format). -Always invoke as `bunx smithers-orchestrator <command>` (see Installation for why). Use `--help` on any command for the canonical option list. +Always invoke as `bunx smthrs <command>` (see Installation for why). Use `--help` on any command for the canonical option list. ## Conventions @@ -2062,27 +2062,27 @@ commands[66]: **Set up** ```bash -bunx smithers-orchestrator init # scaffold .smithers/ -bunx smithers-orchestrator init --template idea-to-tickets # scaffold with guided template next steps -bunx smithers-orchestrator starters # browse template IDs +bunx smthrs init # scaffold .smithers/ +bunx smthrs init --template idea-to-tickets # scaffold with guided template next steps +bunx smthrs starters # browse template IDs ``` **Run** ```bash -bunx smithers-orchestrator workflow run implement --prompt "…" # launch a seeded workflow -bunx smithers-orchestrator up workflow.tsx --run-id <id> --resume true # resume a paused run +bunx smthrs workflow run implement --prompt "…" # launch a seeded workflow +bunx smthrs up workflow.tsx --run-id <id> --resume true # resume a paused run ``` **Observe & control** ```bash -bunx smithers-orchestrator ps # list runs -bunx smithers-orchestrator inspect <run-id> # structured run state -bunx smithers-orchestrator logs <run-id> --tail 20 --follow # stream events -bunx smithers-orchestrator why <run-id> # why is it paused? -bunx smithers-orchestrator approve <run-id> --node <id> --by <name> # approve a paused node -bunx smithers-orchestrator cancel <run-id> # cancel a run +bunx smthrs ps # list runs +bunx smthrs inspect <run-id> # structured run state +bunx smthrs logs <run-id> --tail 20 --follow # stream events +bunx smthrs why <run-id> # why is it paused? +bunx smthrs approve <run-id> --node <id> --by <name> # approve a paused node +bunx smthrs cancel <run-id> # cancel a run ``` See Tour for a full worked example. See CLI overview for the complete flag reference. @@ -2094,7 +2094,7 @@ See Tour for a full worked example. See CLI overview for the complete flag refer > Root container; sequences direct children, optionally caches for resume. ```ts -import { Workflow } from "smithers-orchestrator"; +import { Workflow } from "smthrs"; type WorkflowProps = { name: string; @@ -2104,7 +2104,7 @@ type WorkflowProps = { ``` ```tsx -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; import { z } from "zod"; @@ -2139,7 +2139,7 @@ export default smithers((ctx) => ( > Executable node; runs an agent, compute callback, or emits a static value. ```ts -import { Task } from "smithers-orchestrator"; +import { Task } from "smthrs"; type TaskProps = { id: string; @@ -2273,7 +2273,7 @@ const VERIFY = "verify" as const; > Run children in source order. ```ts -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; type SequenceProps = { key?: string; @@ -2317,7 +2317,7 @@ type SequenceProps = { > Run children concurrently with an optional concurrency cap. ```ts -import { Parallel } from "smithers-orchestrator"; +import { Parallel } from "smthrs"; type ParallelProps = { id?: string; @@ -2355,7 +2355,7 @@ type ParallelProps = { > Conditional fork; mounts `then` when `if` is true, otherwise `else`. ```ts -import { Branch } from "smithers-orchestrator"; +import { Branch } from "smthrs"; type BranchProps = { if: boolean; @@ -2400,7 +2400,7 @@ type BranchProps = { > Re-run children until `until` is true or `maxIterations` is hit. ```ts -import { Loop } from "smithers-orchestrator"; +import { Loop } from "smthrs"; type LoopProps = { id?: string; // auto-generated from tree position @@ -2450,7 +2450,7 @@ export default smithers((ctx) => { > Durable human approval; persists ApprovalDecision, selection, or ranking. ```ts -import { Approval, approvalDecisionSchema } from "smithers-orchestrator"; +import { Approval, approvalDecisionSchema } from "smthrs"; type ApprovalProps = { id: string; @@ -2485,7 +2485,7 @@ type ApprovalProps = { ``` ```tsx -import { Approval, Sequence, Task, Workflow, approvalDecisionSchema, createSmithers } from "smithers-orchestrator"; +import { Approval, Sequence, Task, Workflow, approvalDecisionSchema, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -2528,7 +2528,7 @@ export default smithers((ctx) => { > Conditional approval; pauses for human when `when` is true, else auto-approves. ```ts -import { ApprovalGate } from "smithers-orchestrator"; +import { ApprovalGate } from "smthrs"; type ApprovalGateProps = { id: string; @@ -2584,7 +2584,7 @@ const risk = ctx.output(outputs.riskScore, { nodeId: "risk" }); ```ts // Props -import { EscalationChain } from "smithers-orchestrator"; +import { EscalationChain } from "smthrs"; type EscalationChainProps = { id?: string; // default "escalation" @@ -2634,7 +2634,7 @@ type EscalationLevel = { ```ts // Props -import { DecisionTable } from "smithers-orchestrator"; +import { DecisionTable } from "smthrs"; type DecisionTableProps = { id?: string; @@ -2683,7 +2683,7 @@ type DecisionRule = { > Suspend until a human submits JSON matching the output schema. ```ts -import { HumanTask } from "smithers-orchestrator"; +import { HumanTask } from "smthrs"; type HumanTaskProps = { id: string; @@ -2704,7 +2704,7 @@ type HumanTaskProps = { ``` ```tsx -import { Workflow, Sequence, Task, HumanTask, createSmithers } from "smithers-orchestrator"; +import { Workflow, Sequence, Task, HumanTask, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -2752,7 +2752,7 @@ export default smithers((ctx) => { > Typed wrapper around <WaitForEvent>; signal name equals node id. ```ts -import { Signal } from "smithers-orchestrator"; +import { Signal } from "smthrs"; type SignalProps = { id: string; // signal name and node id @@ -2773,7 +2773,7 @@ type SignalProps = { ``` ```tsx -import { Signal, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { Signal, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -2806,7 +2806,7 @@ export default smithers(() => ( > Durably suspend until a correlated external event arrives, or time out. ```ts -import { WaitForEvent } from "smithers-orchestrator"; +import { WaitForEvent } from "smthrs"; type WaitForEventProps = { id: string; @@ -2858,7 +2858,7 @@ type WaitForEventProps = { > Durably suspend for a relative duration or until an absolute time. ```ts -import { Timer } from "smithers-orchestrator"; +import { Timer } from "smthrs"; type TimerProps = { id: string; @@ -2898,7 +2898,7 @@ type TimerProps = { > Forward steps with compensations run in reverse on failure. ```ts -import { Saga } from "smithers-orchestrator"; +import { Saga } from "smthrs"; type SagaStepDef = { id: string; @@ -2949,7 +2949,7 @@ type SagaProps = { > Workflow-scoped error boundary with catch handlers and guaranteed cleanup. ```ts -import { TryCatchFinally } from "smithers-orchestrator"; +import { TryCatchFinally } from "smthrs"; type TryCatchFinallyProps = { id?: string; @@ -2997,8 +2997,8 @@ type TryCatchFinallyProps = { `<Sandbox>` is a task boundary for work that should execute outside the parent task process. The public component is provider-first: pass an injectable provider object or a registered provider id. `runtime` remains only for the built-in legacy local transports. ```ts -import { Sandbox } from "smithers-orchestrator"; -import type { SandboxProvider } from "smithers-orchestrator/sandbox"; +import { Sandbox } from "smthrs"; +import type { SandboxProvider } from "smthrs/sandbox"; type SandboxProps = { id: string; @@ -3084,7 +3084,7 @@ type SandboxProvider = { Register reusable providers when a workflow should reference them by id: ```ts -import { registerSandboxProvider } from "smithers-orchestrator/sandbox"; +import { registerSandboxProvider } from "smthrs/sandbox"; const unregister = registerSandboxProvider(provider); @@ -3172,7 +3172,7 @@ Freestyle's current VM docs show the stable package as `freestyle`, VM creation > Invoke a child workflow with its own retry, cache, resume boundary. ```ts -import { Subflow } from "smithers-orchestrator"; +import { Subflow } from "smthrs"; type SubflowProps = { id: string; @@ -3228,7 +3228,7 @@ type SubflowProps = { > Close the current run; start a fresh one with optional carried state. ```ts -import { ContinueAsNew, continueAsNew } from "smithers-orchestrator"; +import { ContinueAsNew, continueAsNew } from "smthrs"; type ContinueAsNewProps = { state?: unknown; // JSON-serializable; arrives as ctx.input.__smithersContinuation.payload @@ -3277,7 +3277,7 @@ export default smithers((ctx) => { > Reads and modifies source code at runtime via a markdown strategy doc. ```ts -import { SuperSmithers } from "smithers-orchestrator"; +import { SuperSmithers } from "smthrs"; type SuperSmithersProps = { strategy: string | ReactElement; // markdown or MDX strategy document @@ -3320,7 +3320,7 @@ type SuperSmithersProps = { > Propagate token, latency, and cost budgets to descendant tasks. ```ts -import { Aspects } from "smithers-orchestrator"; +import { Aspects } from "smthrs"; type TokenBudgetConfig = { max: number; @@ -3380,7 +3380,7 @@ type AspectsProps = { > Run a subtree in an isolated worktree (git or jj) rooted at `path`. ```ts -import { Worktree } from "smithers-orchestrator"; +import { Worktree } from "smthrs"; type WorktreeProps = { key?: string; @@ -3420,7 +3420,7 @@ type WorktreeProps = { ```ts // Props -import { ReviewLoop } from "smithers-orchestrator"; +import { ReviewLoop } from "smthrs"; type ReviewLoopProps = { id?: string; // default "review-loop"; task ids derived as {id}-produce, {id}-review @@ -3464,7 +3464,7 @@ export default smithers(() => ( ```ts // Props -import { Optimizer } from "smithers-orchestrator"; +import { Optimizer } from "smthrs"; type OptimizerProps = { id?: string; // default "optimizer"; task ids {id}-generate, {id}-evaluate @@ -3510,7 +3510,7 @@ export default smithers(() => ( ```ts // Props -import { ContentPipeline } from "smithers-orchestrator"; +import { ContentPipeline } from "smthrs"; type ContentPipelineProps = { id?: string; @@ -3556,7 +3556,7 @@ export default smithers(() => ( ```ts // Props -import { DriftDetector } from "smithers-orchestrator"; +import { DriftDetector } from "smthrs"; type DriftDetectorProps = { id?: string; // default "drift"; ids {id}-capture, {id}-compare @@ -3602,7 +3602,7 @@ type DriftDetectorProps = { ```ts // Props -import { ScanFixVerify } from "smithers-orchestrator"; +import { ScanFixVerify } from "smthrs"; type ScanFixVerifyProps = { id?: string; // default "sfv" @@ -3651,7 +3651,7 @@ type ScanFixVerifyProps = { ```ts // Props -import { Poller } from "smithers-orchestrator"; +import { Poller } from "smthrs"; type PollerProps = { id?: string; // default "poll" @@ -3694,7 +3694,7 @@ type PollerProps = { ```ts // Props -import { Runbook } from "smithers-orchestrator"; +import { Runbook } from "smthrs"; type RunbookProps = { id?: string; // used as step-id prefix; defaults to "runbook" when omitted @@ -3747,7 +3747,7 @@ export default smithers(() => ( ```ts // Props -import { Supervisor } from "smithers-orchestrator"; +import { Supervisor } from "smthrs"; type SupervisorProps = { id?: string; // default: "supervisor" @@ -3798,7 +3798,7 @@ export default smithers(() => ( ```ts // Props -import { MergeQueue } from "smithers-orchestrator"; +import { MergeQueue } from "smthrs"; type MergeQueueProps = { id?: string; @@ -3829,7 +3829,7 @@ type MergeQueueProps = { ```ts // Props -import { CheckSuite } from "smithers-orchestrator"; +import { CheckSuite } from "smthrs"; type CheckConfig = { id: string; agent?: AgentLike; command?: string; label?: string }; @@ -3872,7 +3872,7 @@ type CheckSuiteProps = { ```ts // Props -import { ClassifyAndRoute } from "smithers-orchestrator"; +import { ClassifyAndRoute } from "smthrs"; type CategoryConfig = { agent: AgentLike; @@ -3925,7 +3925,7 @@ const classification = ctx.outputMaybe(outputs.classification, { ```ts // Props -import { GatherAndSynthesize } from "smithers-orchestrator"; +import { GatherAndSynthesize } from "smthrs"; type SourceDef = { agent: AgentLike; @@ -3978,7 +3978,7 @@ type GatherAndSynthesizeProps = { ```ts // Props -import { Panel } from "smithers-orchestrator"; +import { Panel } from "smthrs"; type PanelistConfig = { agent: AgentLike; role?: string; label?: string }; @@ -4027,7 +4027,7 @@ type PanelProps = { ```ts // Props -import { Debate } from "smithers-orchestrator"; +import { Debate } from "smthrs"; type DebateProps = { id?: string; // default: "debate" @@ -4070,7 +4070,7 @@ type DebateProps = { ```ts // Props -import { Kanban } from "smithers-orchestrator"; +import { Kanban } from "smthrs"; type ColumnDef = { name: string; @@ -4125,7 +4125,7 @@ const columns = [ Each recipe is a working snippet plus one line of context. They compose freely. -If you want a ready-to-run outcome before writing workflow code, start with Starters or run `bunx smithers-orchestrator starters`. +If you want a ready-to-run outcome before writing workflow code, start with Starters or run `bunx smthrs starters`. ## Implement → review loop @@ -4266,7 +4266,7 @@ One context boundary per logical operation, not per step. Splitting too finely l ## Per-agent least-privilege tools ```tsx -import { AnthropicAgent } from "smithers-orchestrator"; +import { AnthropicAgent } from "smthrs"; const analyst = new AnthropicAgent({ model, system: "Return JSON" }); // no tools const reviewer = new AnthropicAgent({ model, system: "...", tools: { read, grep } }); // read-only @@ -4280,7 +4280,7 @@ Match the tool surface to the role. External mutations must mark themselves and use the runtime idempotency key. ```tsx -import { defineTool } from "smithers-orchestrator/tools"; +import { defineTool } from "smthrs/tools"; const createTicket = defineTool({ name: "jira.create", @@ -4365,7 +4365,7 @@ Workflow logic factors out into hooks the same way React UI logic does. Smithers records a jj change ID (or git SHA) per attempt. Revert any attempt to its exact workspace state: ```bash -bunx smithers-orchestrator revert workflow.tsx --run-id <id> --node-id implement --attempt 1 +bunx smthrs revert workflow.tsx --run-id <id> --node-id implement --attempt 1 ``` Useful when an experiment leaves the worktree in a bad state. @@ -4373,10 +4373,10 @@ Useful when an experiment leaves the worktree in a bad state. ## Time travel: fork, replay, diff ```bash -bunx smithers-orchestrator timeline <run-id> --tree -bunx smithers-orchestrator diff <run-id> <node-id> -bunx smithers-orchestrator fork workflow.tsx --run-id <id> --frame 5 --reset-node analyze --label exp1 -bunx smithers-orchestrator replay workflow.tsx --run-id <id> --frame 5 --restore-vcs +bunx smthrs timeline <run-id> --tree +bunx smthrs diff <run-id> <node-id> +bunx smthrs fork workflow.tsx --run-id <id> --frame 5 --reset-node analyze --label exp1 +bunx smthrs replay workflow.tsx --run-id <id> --frame 5 --restore-vcs ``` Fork makes a child run without starting it (add `--run` to start immediately); replay also makes a child run but immediately resumes it. `--restore-vcs` checks out the original revision so re-execution sees the same source. @@ -4384,7 +4384,7 @@ Fork makes a child run without starting it (add `--run` to start immediately); r ## Scoring tasks ```tsx -import { schemaAdherenceScorer, latencyScorer, llmJudge } from "smithers-orchestrator/scorers"; +import { schemaAdherenceScorer, latencyScorer, llmJudge } from "smthrs/scorers"; <Task id="analyze" @@ -4413,7 +4413,7 @@ Scorers run after the task and never block. Sample expensive scorers with `ratio ``` ```bash -bunx smithers-orchestrator eval workflow.tsx --cases evals/smoke.jsonl --suite smoke --force +bunx smthrs eval workflow.tsx --cases evals/smoke.jsonl --suite smoke --force ``` Use eval suites when you need repeatable workflow-level checks. Assertions support `status`, `output` (exact match), and `outputContains` (partial match). Reports land in `.smithers/evals/<suite>.json`; the command exits non-zero on failures. @@ -4431,7 +4431,7 @@ Avoids unbounded SQLite growth in long-lived loops. ## Hot reload while authoring ```bash -bunx smithers-orchestrator up workflow.tsx --hot +bunx smthrs up workflow.tsx --hot ``` Edits to the workflow source apply on the next render frame without losing in-flight task state. Schema changes still require a fresh run. @@ -4467,9 +4467,9 @@ Every agent task produces a reusable session snapshot. `fork` starts a new task ## Types -> Public TypeScript surface for smithers-orchestrator. +> Public TypeScript surface for smthrs. -One source of truth: `tsc --emitDeclarationOnly` would produce something close to this. Import these types from `smithers-orchestrator` unless noted otherwise. +One source of truth: `tsc --emitDeclarationOnly` would produce something close to this. Import these types from `smthrs` unless noted otherwise. Major sections at a glance: - **Workflow / Context** — `SmithersWorkflow`, `SmithersCtx`, `RunOptions`, `RunResult` — the entry points for defining and running workflows. @@ -4477,7 +4477,7 @@ Major sections at a glance: - **Component props** — `WorkflowProps`, `ApprovalProps`, `SignalProps`, `LoopProps`, etc. — all JSX component interfaces. - **Errors** — `SmithersError`, `KnownSmithersErrorCode` — typed error codes; see Errors for descriptions. - **Server / Gateway** — `ServerOptions`, `GatewayOptions`, `GatewayAuthConfig` — self-hosting configuration. -- **Scorers / Memory / OpenAPI / Observability** — sub-path imports (`smithers-orchestrator/scorers`, `/memory`, `/openapi`, `/observability`). +- **Scorers / Memory / OpenAPI / Observability** — sub-path imports (`smthrs/scorers`, `/memory`, `/openapi`, `/observability`). ```ts // ============================================================================= @@ -5088,7 +5088,7 @@ type GatewayOptions = { }; // ============================================================================= -// Scorers (smithers-orchestrator/scorers) +// Scorers (smthrs/scorers) // ============================================================================= type ScoreResult = { score: number; reason?: string; meta?: Record<string, unknown> }; @@ -5113,7 +5113,7 @@ type CreateScorerConfig = { }; // ============================================================================= -// Memory (smithers-orchestrator/memory) +// Memory (smthrs/memory) // ============================================================================= type MemoryFact = { namespace: string; key: string; valueJson: string; schemaSig?: string | null; createdAtMs: number; updatedAtMs: number; ttlMs?: number | null }; @@ -5146,7 +5146,7 @@ type MemoryStore = { }; // ============================================================================= -// OpenAPI tools (smithers-orchestrator/openapi) +// OpenAPI tools (smthrs/openapi) // ============================================================================= type OpenApiAuth = @@ -5191,7 +5191,7 @@ type CreateSmithersApi<Schema = any> = { }; // ============================================================================= -// Observability (smithers-orchestrator/observability) +// Observability (smthrs/observability) // ============================================================================= type SmithersLogFormat = "json" | "pretty"; @@ -5200,7 +5200,7 @@ type SmithersObservabilityOptions = { service?: SmithersObservabilityService; lo type ResolvedSmithersObservabilityOptions = SmithersObservabilityOptions & { metricsPort?: number; metricsPath?: string }; ``` -For canonical, machine-checked types, install `smithers-orchestrator` and use editor go-to-definition. For runtime errors, see Errors. +For canonical, machine-checked types, install `smthrs` and use editor go-to-definition. For runtime errors, see Errors. --- @@ -5220,12 +5220,12 @@ import { isKnownSmithersErrorCode, isSmithersError, knownSmithersErrorCodes, -} from "smithers-orchestrator"; +} from "smthrs"; import type { KnownSmithersErrorCode, SmithersError, SmithersErrorCode, -} from "smithers-orchestrator"; +} from "smthrs"; ``` Every built-in `SmithersErrorInstance` carries three pieces of documentation metadata: @@ -5254,7 +5254,7 @@ Use `KnownSmithersErrorCode` for an exhaustive switch over built-in Smithers cod ```ts import { Effect } from "effect"; -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; try { await Effect.runPromise(runWorkflow(workflow, { input: {} })); @@ -5446,7 +5446,7 @@ JSON response codes, not `SmithersErrorInstance` objects. ## Package Configuration -> Reference for the smithers-orchestrator package exports, TypeScript configuration, and Bun preload setup. +> Reference for the smthrs package exports, TypeScript configuration, and Bun preload setup. This page covers: CLI binary usage, subpath export map, TypeScript compiler options, Bun preload and test config, and npm scripts. @@ -5460,88 +5460,88 @@ Use the subpath form to import only the surface you need. | Import path | Entry file | Purpose | |---|---|---| -| `smithers-orchestrator` | `./src/index.js` | Core API: `createSmithers`, components, `runWorkflow`, `renderMdx`, errors | -| `smithers-orchestrator/gateway` | `./src/gateway.js` | Gateway server primitives from `@smithers-orchestrator/server/gateway` | -| `smithers-orchestrator/gateway-client` | `./src/gateway-client.js` | Typed client helpers from `@smithers-orchestrator/gateway-client` | -| `smithers-orchestrator/gateway-react` | `./src/gateway-react.js` | React hooks and providers for gateway-backed UIs | -| `smithers-orchestrator/sandbox` | `./src/sandbox.js` | Sandbox provider contracts, bundles, and execution helpers | -| `smithers-orchestrator/jsx-runtime` | `./src/jsx-runtime.js` | JSX runtime (auto-resolved by `jsxImportSource`) | -| `smithers-orchestrator/jsx-dev-runtime` | `./src/jsx-runtime.js` | JSX dev runtime (auto-resolved in dev mode) | -| `smithers-orchestrator/tools` | `./src/tools.js` | Tool sandbox: `defineTool`, `read`, `grep`, `bash`, `edit`, `write` | -| `smithers-orchestrator/server` | `./src/server.js` | HTTP server for run management and event streaming | -| `smithers-orchestrator/observability` | `./src/observability.js` | OpenTelemetry traces, metrics, and Prometheus integration | -| `smithers-orchestrator/mdx-plugin` | `./src/mdx-plugin.js` | Bun preload plugin for `.mdx` imports | -| `smithers-orchestrator/dom/renderer` | `./src/dom/renderer.js` | Internal renderer (advanced use) | -| `smithers-orchestrator/serve` | `./src/serve.js` | Single-workflow HTTP server via `createServeApp` | -| `smithers-orchestrator/scorers` | `./src/scorers.js` | Eval scorers: `createScorer`, `llmJudge`, `aggregateScores` | -| `smithers-orchestrator/memory` | `./src/memory.js` | Cross-run facts, message history, processors, and metrics | -| `smithers-orchestrator/openapi` | `./src/openapi.js` | Generate AI SDK tools from OpenAPI specs | -| `smithers-orchestrator/control-plane` | `./src/control-plane.js` | Organization, project, billing, usage, secret-reference, and audit primitives | - -The PI plugin is published as the separate `@smithers-orchestrator/pi-plugin` package. The old `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extension` subpaths are no longer exported. +| `smthrs` | `./src/index.js` | Core API: `createSmithers`, components, `runWorkflow`, `renderMdx`, errors | +| `smthrs/gateway` | `./src/gateway.js` | Gateway server primitives from `@smthrs/server/gateway` | +| `smthrs/gateway-client` | `./src/gateway-client.js` | Typed client helpers from `@smthrs/gateway-client` | +| `smthrs/gateway-react` | `./src/gateway-react.js` | React hooks and providers for gateway-backed UIs | +| `smthrs/sandbox` | `./src/sandbox.js` | Sandbox provider contracts, bundles, and execution helpers | +| `smthrs/jsx-runtime` | `./src/jsx-runtime.js` | JSX runtime (auto-resolved by `jsxImportSource`) | +| `smthrs/jsx-dev-runtime` | `./src/jsx-runtime.js` | JSX dev runtime (auto-resolved in dev mode) | +| `smthrs/tools` | `./src/tools.js` | Tool sandbox: `defineTool`, `read`, `grep`, `bash`, `edit`, `write` | +| `smthrs/server` | `./src/server.js` | HTTP server for run management and event streaming | +| `smthrs/observability` | `./src/observability.js` | OpenTelemetry traces, metrics, and Prometheus integration | +| `smthrs/mdx-plugin` | `./src/mdx-plugin.js` | Bun preload plugin for `.mdx` imports | +| `smthrs/dom/renderer` | `./src/dom/renderer.js` | Internal renderer (advanced use) | +| `smthrs/serve` | `./src/serve.js` | Single-workflow HTTP server via `createServeApp` | +| `smthrs/scorers` | `./src/scorers.js` | Eval scorers: `createScorer`, `llmJudge`, `aggregateScores` | +| `smthrs/memory` | `./src/memory.js` | Cross-run facts, message history, processors, and metrics | +| `smthrs/openapi` | `./src/openapi.js` | Generate AI SDK tools from OpenAPI specs | +| `smthrs/control-plane` | `./src/control-plane.js` | Organization, project, billing, usage, secret-reference, and audit primitives | + +The PI plugin is published as the separate `@smthrs/pi-plugin` package. The old `smthrs/pi-plugin` and `smthrs/pi-extension` subpaths are no longer exported. ## Workspace Packages -Most applications should import from `smithers-orchestrator`. The scoped workspace packages below are published for advanced integrations, custom clients, and framework development. +Most applications should import from `smthrs`. The scoped workspace packages below are published for advanced integrations, custom clients, and framework development. | Package | Primary surface | Related docs | |---|---|---| -| `smithers-orchestrator` | Public facade for workflow authoring, components, agents, tools, server helpers, memory, OpenAPI tools, scorers, and JSX runtime setup | This page, Types | -| `@smithers-orchestrator/cli` | CLI entrypoint, MCP server, local workflow pack, account registry commands, DevTools commands, cron, alerts, and server commands | CLI Overview, MCP Server | -| `@smithers-orchestrator/accounts` | Subscription and API-key account registry helpers: `listAccounts`, `addAccount`, `removeAccount`, `getAccount`, `accountToProviderEnv` | CLI Agents | -| `@smithers-orchestrator/agents` | AI SDK and CLI agent adapters, CLI capability reports, agent contracts, and tool capability registry | CLI Agents, SDK Agents | -| `@smithers-orchestrator/components` | JSX workflow components such as `Task`, `Workflow`, `Approval`, `Sandbox`, `Timer`, `Signal`, and control-flow components | Components | -| `@smithers-orchestrator/control-plane` | Durable organization, project, team, billing, usage, secret-reference, and audit primitives for hosted deployments | Control Plane | -| `@smithers-orchestrator/db` | SQLite/Drizzle adapter, table setup, run-state derivation, schema helpers, and output tables | Data Model, Run State | -| `@smithers-orchestrator/devtools` | Snapshot, tree, diff, node lookup, task collection, and DevTools run-store helpers behind the CLI inspect commands | Debugging, CLI Overview | -| `@smithers-orchestrator/driver` | Runtime driver contracts: `RunOptions`, `RunResult`, `RunStatus`, `SmithersCtx`, outputs, task runtime, interop, and child process helpers | Run Workflow, Execution Model | -| `@smithers-orchestrator/engine` | Workflow rendering/execution API: `runWorkflow`, `renderFrame`, `workflow`, `Smithers`, `fragment`, signals, and Effect versioning | Render Frame, Run Workflow | -| `@smithers-orchestrator/errors` | Error definitions, known codes, JSON serialization, docs URLs, and type guards | Errors | -| `@smithers-orchestrator/gateway` | Stable Gateway RPC contracts, auth scopes, deployment metadata, and generated OpenAPI schema | Gateway, RPC | -| `@smithers-orchestrator/gateway-client` | Browser/client SDK for Gateway RPC requests and event streams | Gateway | -| `@smithers-orchestrator/gateway-react` | React hooks and root helpers for Gateway-backed UIs | Gateway | -| `@smithers-orchestrator/graph` | Framework-neutral workflow graph model, XML nodes, task descriptors, and graph snapshots | Planner Internals, Types | -| `@smithers-orchestrator/jj-darwin-arm64` | Vendored jj (Jujutsu) binary for darwin-arm64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | VCS Guide | -| `@smithers-orchestrator/jj-darwin-x64` | Vendored jj (Jujutsu) binary for darwin-x64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | VCS Guide | -| `@smithers-orchestrator/jj-linux-arm64` | Vendored jj (Jujutsu) binary for linux-arm64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | VCS Guide | -| `@smithers-orchestrator/jj-linux-x64` | Vendored jj (Jujutsu) binary for linux-x64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | VCS Guide | -| `@smithers-orchestrator/jj-win32-x64` | Vendored jj (Jujutsu) binary for win32-x64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | VCS Guide | -| `@smithers-orchestrator/memory` | Cross-run facts, message history, processors, namespaces, service layer, and metrics | Memory, Memory Quickstart | -| `@smithers-orchestrator/observability` | Event types, logging, tracing, metrics, Prometheus rendering, and runtime observability layers | Events, Event Types | -| `@smithers-orchestrator/openapi` | OpenAPI parsing, operation extraction, AI SDK tool generation, schema conversion, and metrics | OpenAPI Tools, OpenAPI Quickstart | -| `@smithers-orchestrator/pi-plugin` | PI extension runtime, views, API wrappers, and workflow inspection integration | PI Integration | -| `@smithers-orchestrator/protocol` | Shared contracts, small value types, and protocol-level errors for cross-package use | Types, Errors | -| `@smithers-orchestrator/react-reconciler` | Custom React reconciler, host context, DOM renderer, DevTools preload, driver, and JSX runtime internals | Why React, Render Frame | -| `@smithers-orchestrator/sandbox` | Sandbox bundle, execute, and transport primitives used by the `Sandbox` component | Sandbox | -| `@smithers-orchestrator/scheduler` | Pure workflow state machine: task state, scheduler decisions, retry/cache policies, wait reasons, and workflow session services | Workflow State, Suspend and Resume | -| `@smithers-orchestrator/scorers` | Scorer definitions, LLM judges, batch execution, aggregation, persistence schema, and metrics | Evals, Evals Quickstart | -| `@smithers-orchestrator/server` | HTTP, WebSocket, Gateway, cron, webhook, metrics, and single-workflow serving APIs | Server, Serve | -| `@smithers-orchestrator/smithers` | Cerebras chat PWA and workflow graph demo application | CLI Overview | -| `@smithers-orchestrator/smithers-demo` | Interactive Smithers workflow generator demo with React Flow visualization | CLI Overview | -| `@smithers-orchestrator/smithers-studio-2` | Next Smithers Studio UI shell for browsing and driving workflow runs | CLI Overview | -| `@smithers-orchestrator/smithers-tui-demo` | Private React TUI demo app for terminal workflow interaction experiments | CLI Overview | -| `@smithers-orchestrator/time-travel` | Snapshots, diffs, forks, replay, timelines, VCS tags, rewind locks/audits, and time-travel metrics | Time Travel, Time Travel Quickstart | -| `@smithers-orchestrator/tool-context` | AsyncLocalStorage tool-execution context (run/node/idempotency keys, durability snapshot hook) shared by the engine and `smithers-orchestrator` without a dependency cycle | Execution Model | -| `@smithers-orchestrator/usage` | Account quota and rate-limit usage reporting for Smithers providers | CLI Overview | -| `@smithers-orchestrator/vcs` | VCS discovery and jj workspace operations such as `runJj`, `workspaceAdd`, `workspaceList`, and pointer reverts | VCS Helpers, VCS Guide | +| `smthrs` | Public facade for workflow authoring, components, agents, tools, server helpers, memory, OpenAPI tools, scorers, and JSX runtime setup | This page, Types | +| `@smthrs/cli` | CLI entrypoint, MCP server, local workflow pack, account registry commands, DevTools commands, cron, alerts, and server commands | CLI Overview, MCP Server | +| `@smthrs/accounts` | Subscription and API-key account registry helpers: `listAccounts`, `addAccount`, `removeAccount`, `getAccount`, `accountToProviderEnv` | CLI Agents | +| `@smthrs/agents` | AI SDK and CLI agent adapters, CLI capability reports, agent contracts, and tool capability registry | CLI Agents, SDK Agents | +| `@smthrs/components` | JSX workflow components such as `Task`, `Workflow`, `Approval`, `Sandbox`, `Timer`, `Signal`, and control-flow components | Components | +| `@smthrs/control-plane` | Durable organization, project, team, billing, usage, secret-reference, and audit primitives for hosted deployments | Control Plane | +| `@smthrs/db` | SQLite/Drizzle adapter, table setup, run-state derivation, schema helpers, and output tables | Data Model, Run State | +| `@smthrs/devtools` | Snapshot, tree, diff, node lookup, task collection, and DevTools run-store helpers behind the CLI inspect commands | Debugging, CLI Overview | +| `@smthrs/driver` | Runtime driver contracts: `RunOptions`, `RunResult`, `RunStatus`, `SmithersCtx`, outputs, task runtime, interop, and child process helpers | Run Workflow, Execution Model | +| `@smthrs/engine` | Workflow rendering/execution API: `runWorkflow`, `renderFrame`, `workflow`, `Smithers`, `fragment`, signals, and Effect versioning | Render Frame, Run Workflow | +| `@smthrs/errors` | Error definitions, known codes, JSON serialization, docs URLs, and type guards | Errors | +| `@smthrs/gateway` | Stable Gateway RPC contracts, auth scopes, deployment metadata, and generated OpenAPI schema | Gateway, RPC | +| `@smthrs/gateway-client` | Browser/client SDK for Gateway RPC requests and event streams | Gateway | +| `@smthrs/gateway-react` | React hooks and root helpers for Gateway-backed UIs | Gateway | +| `@smthrs/graph` | Framework-neutral workflow graph model, XML nodes, task descriptors, and graph snapshots | Planner Internals, Types | +| `@smthrs/jj-darwin-arm64` | Vendored jj (Jujutsu) binary for darwin-arm64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | VCS Guide | +| `@smthrs/jj-darwin-x64` | Vendored jj (Jujutsu) binary for darwin-x64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | VCS Guide | +| `@smthrs/jj-linux-arm64` | Vendored jj (Jujutsu) binary for linux-arm64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | VCS Guide | +| `@smthrs/jj-linux-x64` | Vendored jj (Jujutsu) binary for linux-x64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | VCS Guide | +| `@smthrs/jj-win32-x64` | Vendored jj (Jujutsu) binary for win32-x64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | VCS Guide | +| `@smthrs/memory` | Cross-run facts, message history, processors, namespaces, service layer, and metrics | Memory, Memory Quickstart | +| `@smthrs/observability` | Event types, logging, tracing, metrics, Prometheus rendering, and runtime observability layers | Events, Event Types | +| `@smthrs/openapi` | OpenAPI parsing, operation extraction, AI SDK tool generation, schema conversion, and metrics | OpenAPI Tools, OpenAPI Quickstart | +| `@smthrs/pi-plugin` | PI extension runtime, views, API wrappers, and workflow inspection integration | PI Integration | +| `@smthrs/protocol` | Shared contracts, small value types, and protocol-level errors for cross-package use | Types, Errors | +| `@smthrs/react-reconciler` | Custom React reconciler, host context, DOM renderer, DevTools preload, driver, and JSX runtime internals | Why React, Render Frame | +| `@smthrs/sandbox` | Sandbox bundle, execute, and transport primitives used by the `Sandbox` component | Sandbox | +| `@smthrs/scheduler` | Pure workflow state machine: task state, scheduler decisions, retry/cache policies, wait reasons, and workflow session services | Workflow State, Suspend and Resume | +| `@smthrs/scorers` | Scorer definitions, LLM judges, batch execution, aggregation, persistence schema, and metrics | Evals, Evals Quickstart | +| `@smthrs/server` | HTTP, WebSocket, Gateway, cron, webhook, metrics, and single-workflow serving APIs | Server, Serve | +| `@smthrs/smithers` | Cerebras chat PWA and workflow graph demo application | CLI Overview | +| `@smthrs/smithers-demo` | Interactive Smithers workflow generator demo with React Flow visualization | CLI Overview | +| `@smthrs/smithers-studio-2` | Next Smithers Studio UI shell for browsing and driving workflow runs | CLI Overview | +| `@smthrs/smithers-tui-demo` | Private React TUI demo app for terminal workflow interaction experiments | CLI Overview | +| `@smthrs/time-travel` | Snapshots, diffs, forks, replay, timelines, VCS tags, rewind locks/audits, and time-travel metrics | Time Travel, Time Travel Quickstart | +| `@smthrs/tool-context` | AsyncLocalStorage tool-execution context (run/node/idempotency keys, durability snapshot hook) shared by the engine and `smthrs` without a dependency cycle | Execution Model | +| `@smthrs/usage` | Account quota and rate-limit usage reporting for Smithers providers | CLI Overview | +| `@smthrs/vcs` | VCS discovery and jj workspace operations such as `runJj`, `workspaceAdd`, `workspaceList`, and pointer reverts | VCS Helpers, VCS Guide | ### Usage ```ts // Core API -import { createSmithers, runWorkflow } from "smithers-orchestrator"; +import { createSmithers, runWorkflow } from "smthrs"; // Tools -import { defineTool, bash, read, write } from "smithers-orchestrator/tools"; +import { defineTool, bash, read, write } from "smthrs/tools"; // Scorers -import { createScorer, llmJudge } from "smithers-orchestrator/scorers"; +import { createScorer, llmJudge } from "smthrs/scorers"; // MDX plugin (in preload.ts) -import { mdxPlugin } from "smithers-orchestrator/mdx-plugin"; +import { mdxPlugin } from "smthrs/mdx-plugin"; // Control-plane primitives -import { ControlPlaneStore } from "smithers-orchestrator/control-plane"; +import { ControlPlaneStore } from "smthrs/control-plane"; ``` ## TypeScript Configuration @@ -5552,42 +5552,42 @@ import { ControlPlaneStore } from "smithers-orchestrator/control-plane"; { "compilerOptions": { "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator" + "jsxImportSource": "smthrs" } } ``` -This tells TypeScript to resolve JSX transforms from `smithers-orchestrator/jsx-runtime` instead of `react/jsx-runtime`. The Smithers JSX runtime re-exports React's runtime, so component behavior is identical. This setting enables proper type resolution for Smithers workflow components. +This tells TypeScript to resolve JSX transforms from `smthrs/jsx-runtime` instead of `react/jsx-runtime`. The Smithers JSX runtime re-exports React's runtime, so component behavior is identical. This setting enables proper type resolution for Smithers workflow components. See JSX Installation for the complete TypeScript setup. ### Path Aliases -When developing inside the `smithers-orchestrator` monorepo, the root `tsconfig.json` defines path aliases so source imports resolve without a build step: +When developing inside the `smthrs` monorepo, the root `tsconfig.json` defines path aliases so source imports resolve without a build step: ```jsonc "paths": { - "smithers-orchestrator": ["./packages/smithers/src/index.js"], - "smithers-orchestrator/jsx-runtime": ["./packages/smithers/src/jsx-runtime.js"], - "smithers-orchestrator/jsx-dev-runtime": ["./packages/smithers/src/jsx-runtime.js"], - "smithers-orchestrator/tools": ["./packages/smithers/src/tools.js"], - "smithers-orchestrator/*": [ + "smthrs": ["./packages/smithers/src/index.js"], + "smthrs/jsx-runtime": ["./packages/smithers/src/jsx-runtime.js"], + "smthrs/jsx-dev-runtime": ["./packages/smithers/src/jsx-runtime.js"], + "smthrs/tools": ["./packages/smithers/src/tools.js"], + "smthrs/*": [ "./packages/smithers/src/*.js", "./packages/smithers/src/*/index.js" ], - "smithers-orchestrator/scorers": ["./packages/scorers/src/index.js"], - "@smithers-orchestrator/agents": ["./packages/agents/src/index.js"], - "@smithers-orchestrator/gateway-client": ["./packages/gateway-client/src/index.ts"], - "@smithers-orchestrator/gateway-react": ["./packages/gateway-react/src/index.ts"], - "@smithers-orchestrator/pi-plugin": ["./packages/pi-plugin/src/index.ts"], - "@smithers-orchestrator/server": ["./packages/server/src/index.js"] + "smthrs/scorers": ["./packages/scorers/src/index.js"], + "@smthrs/agents": ["./packages/agents/src/index.js"], + "@smthrs/gateway-client": ["./packages/gateway-client/src/index.ts"], + "@smthrs/gateway-react": ["./packages/gateway-react/src/index.ts"], + "@smthrs/pi-plugin": ["./packages/pi-plugin/src/index.ts"], + "@smthrs/server": ["./packages/server/src/index.js"] // The root tsconfig includes the same style of alias for each workspace package. } ``` -The root package is a private `smithers-monorepo`; `smithers-orchestrator` resolves to `packages/smithers`. +The root package is a private `smithers-monorepo`; `smthrs` resolves to `packages/smithers`. -**End users do not need path aliases** — only framework developers do. Installing `smithers-orchestrator` as a dependency lets Node/Bun module resolution handle import paths automatically. +**End users do not need path aliases** — only framework developers do. Installing `smthrs` as a dependency lets Node/Bun module resolution handle import paths automatically. ### Local Type Root Shims @@ -5634,7 +5634,7 @@ Defined in the root `package.json` for development: | Script | Command | Purpose | |---|---|---| | `typecheck` | `tsc --noEmit` | Type-check the `src/` and `tests/` trees against `tsconfig.json` | -| `typecheck:examples` | `tsc -p examples/tsconfig.json --noEmit` | Type-check example files against a separate config that maps `smithers-orchestrator` to `examples-entry.js` | +| `typecheck:examples` | `tsc -p examples/tsconfig.json --noEmit` | Type-check example files against a separate config that maps `smthrs` to `examples-entry.js` | | `lint` | `oxlint ... packages/*/src packages/*/tests` | Lint package source and tests with oxlint | | `lint:fix` | `oxlint ... --fix --fix-suggestions packages/*/src packages/*/tests` | Apply supported oxlint fixes | | `cli` | `bun run apps/cli/src/index.js` | Run the local development CLI entrypoint | @@ -5663,7 +5663,7 @@ See Production Project Structure for a complete user-project `package.json` exam ## VCS Helper Reference -> Public JJ helper APIs exported by smithers-orchestrator for repo detection, snapshot inspection, and workspace management. +> Public JJ helper APIs exported by smthrs for repo detection, snapshot inspection, and workspace management. Smithers exports a small JJ helper surface for applications that inspect or manage Jujutsu state directly. @@ -5684,7 +5684,7 @@ import { workspaceAdd, workspaceList, workspaceClose, -} from "smithers-orchestrator"; +} from "smthrs"; ``` ## `runJj(args, opts?)` @@ -5842,10 +5842,10 @@ For workflow-level revert behavior, prefer the runtime and CLI docs: ## runWorkflow -> Programmatic entry point. Equivalent to `bunx smithers-orchestrator up`. +> Programmatic entry point. Equivalent to `bunx smthrs up`. ```ts -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; import { Effect } from "effect"; const result = await Effect.runPromise(runWorkflow(workflow, { @@ -5893,7 +5893,7 @@ All in-flight attempts are marked cancelled and `NodeCancelled` events are emitt ## Hijack handoff -If a CLI hijack happens mid-run (`bunx smithers-orchestrator hijack <id>`), the run ends `"cancelled"` and the latest attempt metadata stores `hijackHandoff`. On `resume: true`, Smithers waits for a safe handoff point and continues with the persisted CLI session id (see CLI Agents) or the persisted message history (SDK agents). +If a CLI hijack happens mid-run (`bunx smthrs hijack <id>`), the run ends `"cancelled"` and the latest attempt metadata stores `hijackHandoff`. On `resume: true`, Smithers waits for a safe handoff point and continues with the persisted CLI session id (see CLI Agents) or the persisted message history (SDK agents). ## `result.output` @@ -5920,8 +5920,8 @@ const rows = db.query("SELECT * FROM page WHERE run_id = ? ORDER BY iteration DE Use `renderFrame` to preview the task graph — for CI validation, graph-inspection UIs, or dry-run checks — without executing or persisting anything. `runId` and `iteration` are arbitrary strings used only for snapshot identity. ```ts -import { renderFrame } from "smithers-orchestrator"; -import { SmithersCtx } from "@smithers-orchestrator/driver"; +import { renderFrame } from "smthrs"; +import { SmithersCtx } from "@smthrs/driver"; import { Effect } from "effect"; const ctx = new SmithersCtx({ runId: "preview", iteration: 0, input: { task: "preview" }, outputs: {} }); @@ -5961,7 +5961,7 @@ bunx smithers graph workflow.tsx --input '{"task":"preview"}' Each successful task attempt captures the current [JJ](https://jj-vcs.github.io/jj/) change ID into `_smithers_attempts.jj_pointer`. `revert` restores the workspace to that state and discards any graph snapshots recorded after the attempt began, so the run's timeline rolls back to the point-in-time of that attempt. ```bash -bunx smithers-orchestrator revert workflow.tsx \ +bunx smthrs revert workflow.tsx \ --run-id <id> --node-id <node> [--attempt N=1] [--iteration N=0] ``` @@ -5976,7 +5976,7 @@ Revert restores files only — it doesn't alter JJ history; the restoration crea ## Programmatic ```ts -import { revertToAttempt } from "smithers-orchestrator"; +import { revertToAttempt } from "smthrs"; const result = await revertToAttempt(adapter, { runId: "abc123", @@ -6080,7 +6080,7 @@ Terminal states (`succeeded`, `failed`, `cancelled`) carry neither. ## computeRunState ```ts -import { computeRunState } from "@smithers-orchestrator/db/runState"; +import { computeRunState } from "@smthrs/db/runState"; const view = await computeRunState(adapter, runId); view.state; // "running" | ... @@ -6096,7 +6096,7 @@ not run heuristics. when you already have the rows in memory: ```ts -import { deriveRunState } from "@smithers-orchestrator/db/runState"; +import { deriveRunState } from "@smthrs/db/runState"; const view = deriveRunState({ run, @@ -6161,7 +6161,7 @@ Historical TUI product/design material is kept for reference, but it does not de Run `smithers optimize` to generate improved prompts for agent tasks via GEPA, verify the improvement against your eval suite, and save the result as a reusable artifact. ```bash -bunx smithers-orchestrator optimize workflow.tsx \ +bunx smthrs optimize workflow.tsx \ --cases evals/smoke.jsonl \ --suite smoke-gepa \ --provider cerebras \ @@ -6181,7 +6181,7 @@ The command writes the artifact only when the optimized score improves by at lea Apply the optimized prompts to future evals with `--optimization`: ```bash -bunx smithers-orchestrator eval workflow.tsx \ +bunx smthrs eval workflow.tsx \ --cases evals/smoke.jsonl \ --suite smoke-optimized \ --optimization .smithers/optimizations/smoke-gepa.json @@ -6194,7 +6194,7 @@ The artifact patches only agent-backed `<Task>` prompts by `nodeId`. Workflow st Example: the following run demonstrates a baseline failure corrected by a GEPA-generated patch. The baseline prompt did not include the required optimization token, so the eval failed. Cerebras GEPA generated a prompt patch that included the missing requirement, and the optimized eval passed. ```bash -CEREBRAS_API_KEY=... bunx smithers-orchestrator optimize workflow.tsx \ +CEREBRAS_API_KEY=... bunx smthrs optimize workflow.tsx \ --cases evals/opt.jsonl \ --suite cerebras-proof \ --provider cerebras \ @@ -6265,7 +6265,7 @@ Memory persists state **across runs**. Task outputs are per-run; memory is per-n ## Three layers ```ts -import { createMemoryStore } from "smithers-orchestrator/memory"; +import { createMemoryStore } from "smthrs/memory"; import { Database } from "bun:sqlite"; const store = createMemoryStore(new Database("smithers.db")); @@ -6310,7 +6310,7 @@ Pick the kind to match the lifetime: `workflow` is scoped to a workflow definiti Maintenance jobs you run periodically: ```ts -import { TtlGarbageCollector, TokenLimiter, Summarizer } from "smithers-orchestrator/memory"; +import { TtlGarbageCollector, TokenLimiter, Summarizer } from "smthrs/memory"; const gc = TtlGarbageCollector(); // expire facts past their TTL const limiter = TokenLimiter(4000); // keep history under token budget @@ -6324,7 +6324,7 @@ await summarizer.process(store); ## Inspect from the CLI ```bash -bunx smithers-orchestrator memory list workflow:code-review -w workflow.tsx +bunx smthrs memory list workflow:code-review -w workflow.tsx ``` The CLI currently exposes fact listing. Use the store API for writes, deletes, threads, messages, and TTL cleanup. @@ -6358,7 +6358,7 @@ This material is now in the opt-in `/llms-memory.txt` fragment. `createOpenApiTools` parses an OpenAPI 3.x spec and returns AI SDK tools — one per operation, with Zod schemas converted from the spec's JSON schemas. ```ts -import { createOpenApiTools } from "smithers-orchestrator/openapi"; +import { createOpenApiTools } from "smthrs/openapi"; const tools = await createOpenApiTools("./petstore.json", { baseUrl: "https://api.petstore.example.com", @@ -6403,7 +6403,7 @@ Pass the spec itself as the first argument to `createOpenApiTools(input, options ## CLI preview ```bash -bunx smithers-orchestrator openapi list ./api/openapi.yaml +bunx smthrs openapi list ./api/openapi.yaml ``` Lists every operationId, method, path, and summary — useful for auditing what an agent will be able to call before wiring it up. @@ -6429,7 +6429,7 @@ For each operation: ## Observability -Each tool call emits an `OpenApiToolCalled` event with `operationId`, `method`, `path`, `durationMs`, `status`. Visible via `bunx smithers-orchestrator events <run-id> --type openapi`. +Each tool call emits an `OpenApiToolCalled` event with `operationId`, `method`, `path`, `durationMs`, `status`. Visible via `bunx smthrs events <run-id> --type openapi`. ## Notes @@ -6462,7 +6462,7 @@ This material is now in the opt-in `/llms-openapi.txt` fragment. ## Quick start ```ts -import { startServer } from "smithers-orchestrator"; +import { startServer } from "smthrs"; import { drizzle } from "drizzle-orm/bun-sqlite"; const server = startServer({ @@ -6527,7 +6527,7 @@ Errors use the envelope `{ "error": { "code", "message", "details" } }`. Common Tools resolve relative to `rootDir`. The example below exposes a workflow that uses the built-in `bash` tool through the server; clients call it via `POST /v1/runs`. ```tsx -import { Task, Workflow, createSmithers, bash } from "smithers-orchestrator"; +import { Task, Workflow, createSmithers, bash } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -6572,7 +6572,7 @@ Serve mode starts a Hono-based HTTP server alongside a running workflow. Every r ## CLI ```bash -bunx smithers-orchestrator up workflow.tsx --serve --port 3000 --host 0.0.0.0 +bunx smthrs up workflow.tsx --serve --port 3000 --host 0.0.0.0 ``` | Flag | Default | Description | @@ -6588,13 +6588,13 @@ The process stays alive after the workflow completes so final state remains quer Detached mode: ```bash -bunx smithers-orchestrator up workflow.tsx --serve --port 8080 -d +bunx smthrs up workflow.tsx --serve --port 8080 -d ``` ## Programmatic ```ts -import { createServeApp } from "smithers-orchestrator/serve"; +import { createServeApp } from "smthrs/serve"; const app = createServeApp({ workflow, @@ -6755,7 +6755,7 @@ Unknown routes return `404` with code `NOT_FOUND`. ```bash # Start a workflow with serve mode -bunx smithers-orchestrator up workflow.tsx --serve --port 8080 --auth-token sk-secret +bunx smthrs up workflow.tsx --serve --port 8080 --auth-token sk-secret # Status curl http://localhost:8080/ -H "Authorization: Bearer sk-secret" @@ -6784,7 +6784,7 @@ curl http://localhost:8080/health ## Quick start ```tsx -import { Gateway, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { Gateway, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -6830,7 +6830,7 @@ ws.onopen = () => ws.send(JSON.stringify({ Programmatic clients — bots, schedulers, dashboards, third-party UIs — talk to the Gateway through the typed client SDK over the same RPC and WebSocket API. For the full custom-UI guide (declarative queries, pushed updates, stale guards, reconnect/resume, backpressure, optimistic mutations, auth, vanilla JS + React hooks) see Custom UIs. ```ts -import { SmithersGatewayClient } from "smithers-orchestrator/gateway-client"; +import { SmithersGatewayClient } from "smthrs/gateway-client"; const gateway = new SmithersGatewayClient(); const workflows = await gateway.listWorkflows(); @@ -6846,8 +6846,8 @@ Gateway client exports: | Package | Exports | |---|---| -| `smithers-orchestrator/gateway-client` | `SmithersGatewayClient`, `SmithersGatewayConnection`, `GatewayRpcError`, `gatewayBackoffDelay`, RPC frame/type-map types, `GatewayUiBootConfig`, `SmithersGatewayClientOptions` | -| `smithers-orchestrator/gateway-react` | `SmithersGatewayProvider`, `createGatewayReactRoot`, `useGatewayRun`, `useGatewayRuns`, `useGatewayWorkflows`, `useGatewayApprovals`, `useGatewayNodeOutput`, `useGatewayRunEvents`, `useGatewayActions`, `useGatewayRpc`, `useSmithersGateway` | +| `smthrs/gateway-client` | `SmithersGatewayClient`, `SmithersGatewayConnection`, `GatewayRpcError`, `gatewayBackoffDelay`, RPC frame/type-map types, `GatewayUiBootConfig`, `SmithersGatewayClientOptions` | +| `smthrs/gateway-react` | `SmithersGatewayProvider`, `createGatewayReactRoot`, `useGatewayRun`, `useGatewayRuns`, `useGatewayWorkflows`, `useGatewayApprovals`, `useGatewayNodeOutput`, `useGatewayRunEvents`, `useGatewayActions`, `useGatewayRpc`, `useSmithersGateway` | ## RPC methods (TOON) @@ -7207,20 +7207,20 @@ For clients that read JSON config directly: "mcpServers": { "smithers": { "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"] + "args": ["smthrs", "--mcp"] } } } ``` -Project-scoped install (e.g. a monorepo where Smithers is a dev dependency — ensure `smithers-orchestrator` is in the local `package.json`): +Project-scoped install (e.g. a monorepo where Smithers is a dev dependency — ensure `smthrs` is in the local `package.json`): ```json { "mcpServers": { "smithers": { "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"] + "args": ["smthrs", "--mcp"] } } } @@ -7934,7 +7934,7 @@ you need a React-free API for generated workflow definitions. ## Minimal workflow ```ts -import { Smithers } from "smithers-orchestrator"; +import { Smithers } from "smthrs"; import { Effect, Schema } from "effect"; const inputSchema = Schema.Struct({ @@ -8213,7 +8213,7 @@ const opsAgent = new Agent({ Use this when your CLI agent already supports external integrations and Smithers should only orchestrate the task. ```ts -import { PiAgent } from "smithers-orchestrator"; +import { PiAgent } from "smthrs"; const pi = new PiAgent({ provider: "openai", @@ -8267,7 +8267,7 @@ CLI-backed agent classes wrap external AI command-line tools and implement the [ ## Quick Start ```tsx -import { ClaudeCodeAgent, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { ClaudeCodeAgent, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -8310,7 +8310,7 @@ CLI binaries must be on `PATH`: `claude`, `codex`, `agy`, `pi`, `kimi`, `forge`, `CodexAgent` is the Smithers wrapper for OpenAI's `codex` CLI. It runs `codex exec` in non-interactive mode, sends the task prompt over stdin, forces `--json` so Smithers can stream structured progress, and captures the final assistant message via `--output-last-message`. ```tsx -import { CodexAgent, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { CodexAgent, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -8337,7 +8337,7 @@ export default smithers(() => ( - Subscription login: run `codex login` once. For isolated accounts, pass `configDir`; Smithers sets `CODEX_HOME` for that invocation. - API billing: pass `apiKey` or set `OPENAI_API_KEY`; Smithers forwards it to the spawned `codex` process. -- Account registry: `bunx smithers-orchestrator agents add --provider codex ...` registers a subscription config directory, while `--provider openai-api` registers API-key billing for Codex-compatible providers. +- Account registry: `bunx smthrs agents add --provider codex ...` registers a subscription config directory, while `--provider openai-api` registers API-key billing for Codex-compatible providers. ### Structured output @@ -8379,7 +8379,7 @@ await agent.generate({ `ClaudeCodeAgent` extends the base with Claude Code-specific session and permission flags. Key additions: `permissionMode`, `sessionId`, `mcpConfig`, `resume`. ```ts -import { ClaudeCodeAgent } from "smithers-orchestrator"; +import { ClaudeCodeAgent } from "smthrs"; new ClaudeCodeAgent({ permissionMode?: "acceptEdits" | "bypassPermissions" | "default" | "delegate" | "dontAsk" | "plan"; allowedTools?: string[]; disallowedTools?: string[]; disableSlashCommands?: boolean; @@ -8400,7 +8400,7 @@ new ClaudeCodeAgent({ `CodexAgent` extends the base with OpenAI Codex-specific flags. Key additions: `sandbox`, `config`, `outputSchema`. ```ts -import { CodexAgent } from "smithers-orchestrator"; +import { CodexAgent } from "smthrs"; new CodexAgent({ sandbox?: "read-only" | "workspace-write" | "danger-full-access"; fullAuto?: boolean; dangerouslyBypassApprovalsAndSandbox?: boolean; @@ -8417,7 +8417,7 @@ new CodexAgent({ `AntigravityAgent` wraps the Google `agy` CLI. Key additions: `allowedMcpServerNames`, `geminiDir`, `conversation`, `continue`, and `resume`. ```ts -import { AntigravityAgent } from "smithers-orchestrator"; +import { AntigravityAgent } from "smthrs"; new AntigravityAgent({ model?: string; sandbox?: boolean; yolo?: boolean; dangerouslySkipPermissions?: boolean; @@ -8454,7 +8454,7 @@ outside workflow launch through `agy plugin`. `PiAgent` wraps the Pi CLI and adds extension UI hook support. Key additions: `mode`, `onExtensionUiRequest`, `extension`, `thinking`. ```ts -import { PiAgent, type PiExtensionUiRequest, type PiExtensionUiResponse } from "smithers-orchestrator"; +import { PiAgent, type PiExtensionUiRequest, type PiExtensionUiResponse } from "smthrs"; new PiAgent({ provider?: string; apiKey?: string; appendSystemPrompt?: string; mode?: "text" | "json" | "rpc"; print?: boolean; continue?: boolean; resume?: boolean; session?: string; @@ -8472,7 +8472,7 @@ new PiAgent({ `KimiAgent` wraps the Moonshot Kimi CLI with automatic session isolation. Key additions: `thinking`, `agent`, `maxRalphIterations`. ```ts -import { KimiAgent } from "smithers-orchestrator"; +import { KimiAgent } from "smthrs"; new KimiAgent({ thinking?: boolean; outputFormat?: "text" | "stream-json"; finalMessageOnly?: boolean; quiet?: boolean; @@ -8487,7 +8487,7 @@ new KimiAgent({ `ForgeAgent` wraps the Forge CLI and supports 300+ models via provider/model strings. Key additions: `conversationId`, `provider`, `workflow`. ```ts -import { ForgeAgent } from "smithers-orchestrator"; +import { ForgeAgent } from "smthrs"; new ForgeAgent({ directory?: string; provider?: string; agent?: string; conversationId?: string; sandbox?: string; restricted?: boolean; @@ -8498,7 +8498,7 @@ new ForgeAgent({ `AmpAgent` wraps the Amp CLI in `--execute` headless mode. Key additions: `visibility`, `mcpConfig`, `dangerouslyAllowAll`. ```ts -import { AmpAgent } from "smithers-orchestrator"; +import { AmpAgent } from "smthrs"; new AmpAgent({ visibility?: "private" | "public" | "workspace" | "group"; mcpConfig?: string; settingsFile?: string; @@ -8510,7 +8510,7 @@ new AmpAgent({ `OpenCodeAgent` wraps the OpenCode CLI via `opencode run --format json`. Key additions: `agentName`, `continueSession`, `sessionId`. Note: native hijack support is not yet shipped. ```ts -import { OpenCodeAgent } from "smithers-orchestrator"; +import { OpenCodeAgent } from "smthrs"; new OpenCodeAgent({ model?: string; agentName?: string; attachFiles?: string[]; @@ -8521,7 +8521,7 @@ new OpenCodeAgent({ ## Hijack handoff -Most built-in CLI agents support `bunx smithers-orchestrator hijack <runId>`, which relaunches the agent in its native CLI session for interactive takeover. +Most built-in CLI agents support `bunx smthrs hijack <runId>`, which relaunches the agent in its native CLI session for interactive takeover. Smithers persists the native session or conversation id on each task event. On hijack, it waits for a safe boundary between blocking tool calls, then reopens the session via the vendor's resume flag: @@ -8560,7 +8560,7 @@ import { AnthropicAgent, OpenAIAgent, tools, -} from "smithers-orchestrator"; +} from "smthrs"; import { stepCountIs } from "ai"; ``` @@ -8651,7 +8651,7 @@ Use the `createOpenAI` path when you need provider-level configuration beyond `b [Hermes](https://github.com/NousResearch/hermes-agent) (Nous Research) exposes an OpenAI-compatible HTTP API, so `HermesAgent` is a convenience subclass of `OpenAIAgent` that points the provider at your Hermes server and disables native structured output by default (a local Hermes server may not honor JSON-schema response formats). ```ts -import { HermesAgent } from "smithers-orchestrator"; +import { HermesAgent } from "smthrs"; const hermes = new HermesAgent({ baseURL: "http://127.0.0.1:5123/v1", // or set HERMES_BASE_URL @@ -8714,7 +8714,7 @@ export const claude = useCli > Sandboxed file and shell tools for AI agent tasks, with exact input schemas, security policies, and usage examples. ```ts -import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadata } from "smithers-orchestrator"; +import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadata } from "smthrs"; ``` `tools` bundles all five tools keyed by name: @@ -8723,7 +8723,7 @@ import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadat const { read, write, edit, grep, bash } = tools; ``` -The `smithers-orchestrator/tools` subpath also exports lower-level helpers for advanced integrations: +The `smthrs/tools` subpath also exports lower-level helpers for advanced integrations: | Export | Purpose | |---|---| @@ -8769,7 +8769,7 @@ Every invocation is logged to `_smithers_tool_calls`: `defineTool()` wraps custom AI SDK tools with Smithers runtime context, deterministic idempotency keys, and durable tool-call logging. ```ts -import { defineTool } from "smithers-orchestrator"; +import { defineTool } from "smthrs"; import { z } from "zod"; const placeOrder = defineTool({ @@ -8870,7 +8870,7 @@ Returns file contents as UTF-8. Throws `"File too large"` if size exceeds `maxOu ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, grep } from "smithers-orchestrator"; +import { read, grep } from "smthrs"; const codeAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -8903,7 +8903,7 @@ Returns `"ok"`. Throws `"Content too large"` if content exceeds `maxOutputBytes` ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { write, read } from "smithers-orchestrator"; +import { write, read } from "smthrs"; const writerAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -8990,7 +8990,7 @@ Local git commands (`git status`, `git diff`, `git log`) are allowed. ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash } from "smithers-orchestrator"; +import { bash } from "smthrs"; const devAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -9014,7 +9014,7 @@ Pass tools to an AI SDK agent and assign the agent to a `<Task>`: ```tsx import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { createSmithers, read, write, edit, grep, bash, Task } from "smithers-orchestrator"; +import { createSmithers, read, write, edit, grep, bash, Task } from "smthrs"; import { z } from "zod"; const codeAgent = new Agent({ @@ -9041,7 +9041,7 @@ The full bundle works too: ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { tools } from "smithers-orchestrator"; +import { tools } from "smthrs"; const fullAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -9060,7 +9060,7 @@ const fullAgent = new Agent({ ```ts import { Effect } from "effect"; -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; const result = await Effect.runPromise(runWorkflow(workflow, { input: { file: "src/auth.ts" }, @@ -9188,7 +9188,7 @@ Smithers provides deterministic orchestration (workflow graph, approvals, retrie ### 1) PI as Workflow Agent ```tsx -import { PiAgent } from "smithers-orchestrator"; +import { PiAgent } from "smthrs"; const pi = new PiAgent({ provider: "openai", @@ -9208,13 +9208,13 @@ PI sessions are first-class hijack targets. `smithers hijack <runId> --target pi ### 2) PI Server Client -Drive Smithers server APIs from a PI extension or any Node process via `@smithers-orchestrator/pi-plugin`: +Drive Smithers server APIs from a PI extension or any Node process via `@smthrs/pi-plugin`: ```ts -import { runWorkflow, approve, streamEvents } from "@smithers-orchestrator/pi-plugin"; +import { runWorkflow, approve, streamEvents } from "@smthrs/pi-plugin"; ``` -The older `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extension` subpaths were removed; use the scoped package directly. +The older `smthrs/pi-plugin` and `smthrs/pi-extension` subpaths were removed; use the scoped package directly. ### 3) Hybrid: PI Extensibility + Smithers Orchestration @@ -9224,7 +9224,7 @@ The older `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extens Patterns: 1. PI skill-driven coding task inside a Smithers `<Task>`. -2. PI extension command that starts/resumes Smithers workflows via server API or `@smithers-orchestrator/pi-plugin`. +2. PI extension command that starts/resumes Smithers workflows via server API or `@smthrs/pi-plugin`. 3. Smithers workflow output persisted to SQLite and consumed by later PI-assisted tasks. ## Hijacking PI Sessions @@ -9247,7 +9247,7 @@ Session persistence: 1. Install PI CLI and add to `PATH`. 2. Configure PI credentials via env/config (prefer over CLI args for API keys). 3. Instantiate `PiAgent` with explicit options in workflows. -4. For server-driven workflows, use `@smithers-orchestrator/pi-plugin`. +4. For server-driven workflows, use `@smthrs/pi-plugin`. ```bash # Verify PI is installed @@ -9263,7 +9263,7 @@ pi --version ## Limitations -Smithers does not provide a chat interface for PI. Chat UI integration is the responsibility of the host application using `@smithers-orchestrator/pi-plugin`. +Smithers does not provide a chat interface for PI. Chat UI integration is the responsibility of the host application using `@smthrs/pi-plugin`. =============================================================================== @@ -9283,7 +9283,7 @@ Smithers does not provide a chat interface for PI. Chat UI integration is the re ## Subscribe via `onProgress` ```ts -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; import { Effect } from "effect"; import workflow from "./workflow"; @@ -9310,8 +9310,8 @@ jq -r .type .smithers/executions/<run-id>/logs/stream.ndjson | sort | uniq -c | Or with the CLI: ```bash -bunx smithers-orchestrator events <run-id> --json -bunx smithers-orchestrator events <run-id> --type tool-call --node analyze +bunx smthrs events <run-id> --json +bunx smthrs events <run-id> --type tool-call --node analyze ``` ## Common fields @@ -9326,7 +9326,7 @@ Every event includes `type`, `runId`, `timestampMs`. Node-scoped events add `nod ## Event categories -Used by `bunx smithers-orchestrator events --type <category>` and the metrics layer. +Used by `bunx smthrs events --type <category>` and the metrics layer. | Category | Events | |---|---| @@ -9359,7 +9359,7 @@ Used by `bunx smithers-orchestrator events --type <category>` and the metrics la | `ApprovalGranted` / `ApprovalDenied` | Approval counters | | `TokenUsageReported` | Token usage counters per model/agent | -`trackSmithersEvent` from `smithers-orchestrator/observability` exposes this mapping for custom integrations. See Observability for the full OTLP/Prometheus setup. +`trackSmithersEvent` from `smthrs/observability` exposes this mapping for custom integrations. See Observability for the full OTLP/Prometheus setup. --- diff --git a/docs/references/smithers/apps/cli/docs/llms.txt b/docs/references/smithers/apps/cli/docs/llms.txt index b2849b48f..af292c7c6 100644 --- a/docs/references/smithers/apps/cli/docs/llms.txt +++ b/docs/references/smithers/apps/cli/docs/llms.txt @@ -44,6 +44,6 @@ Examples: ## Pointers -- npm: smithers-orchestrator +- npm: smthrs - github: github.com/smithersai/smithers - changelogs: docs/changelogs/ on the site (not duplicated in llms files) diff --git a/docs/references/smithers/apps/cli/package.json b/docs/references/smithers/apps/cli/package.json index 468a05651..d6c49a9a0 100644 --- a/docs/references/smithers/apps/cli/package.json +++ b/docs/references/smithers/apps/cli/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/cli", + "name": "@smthrs/cli", "version": "0.23.0", "description": "Smithers command-line interface, MCP server, and local workflow tools", "type": "module", @@ -31,24 +31,24 @@ "@effect/workflow": "^0.18.0", "@clack/prompts": "^0.10.1", "@modelcontextprotocol/sdk": "^1.29.0", - "@smithers-orchestrator/accounts": "workspace:*", - "@smithers-orchestrator/agents": "workspace:*", - "@smithers-orchestrator/usage": "workspace:*", - "@smithers-orchestrator/components": "workspace:*", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/devtools": "workspace:*", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/engine": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/memory": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/openapi": "workspace:*", - "@smithers-orchestrator/protocol": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "@smithers-orchestrator/server": "workspace:*", - "@smithers-orchestrator/time-travel": "workspace:*", - "@smithers-orchestrator/vcs": "workspace:*", - "smithers-orchestrator": "workspace:*", + "@smthrs/accounts": "^0.33.0", + "@smthrs/agents": "^0.33.0", + "@smthrs/usage": "^0.33.0", + "@smthrs/components": "^0.33.0", + "@smthrs/db": "^0.33.0", + "@smthrs/devtools": "^0.33.0", + "@smthrs/driver": "^0.33.0", + "@smthrs/engine": "^0.33.0", + "@smthrs/errors": "^0.33.0", + "@smthrs/memory": "^0.33.0", + "@smthrs/observability": "^0.33.0", + "@smthrs/openapi": "^0.33.0", + "@smthrs/protocol": "^0.33.0", + "@smthrs/scheduler": "^0.33.0", + "@smthrs/server": "^0.33.0", + "@smthrs/time-travel": "^0.33.0", + "@smthrs/vcs": "^0.33.0", + "smthrs": "^0.33.0", "cron-parser": "^5.5.0", "drizzle-orm": "^0.45.2", "effect": "^3.21.1", diff --git a/docs/references/smithers/apps/cli/src/AskOptions.ts b/docs/references/smithers/apps/cli/src/AskOptions.ts index f289767f3..685d9d9fe 100644 --- a/docs/references/smithers/apps/cli/src/AskOptions.ts +++ b/docs/references/smithers/apps/cli/src/AskOptions.ts @@ -1,4 +1,4 @@ -import type { SmithersToolSurface } from "@smithers-orchestrator/agents/agent-contract"; +import type { SmithersToolSurface } from "@smthrs/agents/agent-contract"; export type AskAgentId = "claude" | "codex" | "kimi" | "antigravity" | "gemini" | "pi"; diff --git a/docs/references/smithers/apps/cli/src/RunDiffCommandInput.ts b/docs/references/smithers/apps/cli/src/RunDiffCommandInput.ts index 07a2a3b40..98a2317c2 100644 --- a/docs/references/smithers/apps/cli/src/RunDiffCommandInput.ts +++ b/docs/references/smithers/apps/cli/src/RunDiffCommandInput.ts @@ -1,4 +1,4 @@ -import type { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import type { SmithersDb } from "@smthrs/db/adapter"; export type RunDiffCommandInput = { adapter: SmithersDb; diff --git a/docs/references/smithers/apps/cli/src/RunOutputCommandInput.ts b/docs/references/smithers/apps/cli/src/RunOutputCommandInput.ts index 421c75eb0..ede31fd4c 100644 --- a/docs/references/smithers/apps/cli/src/RunOutputCommandInput.ts +++ b/docs/references/smithers/apps/cli/src/RunOutputCommandInput.ts @@ -1,4 +1,4 @@ -import type { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import type { SmithersDb } from "@smthrs/db/adapter"; export type RunOutputCommandInput = { adapter: SmithersDb; diff --git a/docs/references/smithers/apps/cli/src/RunRewindCommandInput.ts b/docs/references/smithers/apps/cli/src/RunRewindCommandInput.ts index 143efe2aa..ce987ff6d 100644 --- a/docs/references/smithers/apps/cli/src/RunRewindCommandInput.ts +++ b/docs/references/smithers/apps/cli/src/RunRewindCommandInput.ts @@ -1,4 +1,4 @@ -import type { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import type { SmithersDb } from "@smthrs/db/adapter"; export type RunRewindCommandInput = { adapter: SmithersDb; diff --git a/docs/references/smithers/apps/cli/src/RunTreeCommandInput.ts b/docs/references/smithers/apps/cli/src/RunTreeCommandInput.ts index c2b05adf8..dc6ec9789 100644 --- a/docs/references/smithers/apps/cli/src/RunTreeCommandInput.ts +++ b/docs/references/smithers/apps/cli/src/RunTreeCommandInput.ts @@ -1,4 +1,4 @@ -import type { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import type { SmithersDb } from "@smthrs/db/adapter"; export type RunTreeCommandInput = { adapter: SmithersDb; diff --git a/docs/references/smithers/apps/cli/src/SmithersEventType.ts b/docs/references/smithers/apps/cli/src/SmithersEventType.ts index aa6164023..ea5056b66 100644 --- a/docs/references/smithers/apps/cli/src/SmithersEventType.ts +++ b/docs/references/smithers/apps/cli/src/SmithersEventType.ts @@ -1,3 +1,3 @@ -import type { SmithersEvent } from "@smithers-orchestrator/observability/SmithersEvent"; +import type { SmithersEvent } from "@smthrs/observability/SmithersEvent"; export type SmithersEventType = SmithersEvent["type"]; diff --git a/docs/references/smithers/apps/cli/src/SupervisorOptions.ts b/docs/references/smithers/apps/cli/src/SupervisorOptions.ts index 647347339..359e2eead 100644 --- a/docs/references/smithers/apps/cli/src/SupervisorOptions.ts +++ b/docs/references/smithers/apps/cli/src/SupervisorOptions.ts @@ -1,4 +1,4 @@ -import type { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import type { SmithersDb } from "@smthrs/db/adapter"; export type SupervisorSpawnClaim = { claimOwnerId: string; diff --git a/docs/references/smithers/apps/cli/src/agent-commands/agentAddWizard.js b/docs/references/smithers/apps/cli/src/agent-commands/agentAddWizard.js index ea57ca4b7..e378dc31c 100644 --- a/docs/references/smithers/apps/cli/src/agent-commands/agentAddWizard.js +++ b/docs/references/smithers/apps/cli/src/agent-commands/agentAddWizard.js @@ -1,8 +1,8 @@ import { confirm, intro, isCancel, note, outro, password, select, spinner, text } from "@clack/prompts"; -import { defaultConfigDir } from "@smithers-orchestrator/accounts"; +import { defaultConfigDir } from "@smthrs/accounts"; import { runAgentAdd, pingAccount } from "./runAgentAdd.js"; -/** @typedef {import("@smithers-orchestrator/accounts").AccountProvider} AccountProvider */ +/** @typedef {import("@smthrs/accounts").AccountProvider} AccountProvider */ const PROVIDER_CHOICES = [ { value: "claude-code", label: "Claude Code (subscription)", hint: "Pro / Max plan via `claude` CLI" }, diff --git a/docs/references/smithers/apps/cli/src/agent-commands/runAgentAdd.js b/docs/references/smithers/apps/cli/src/agent-commands/runAgentAdd.js index 6d5aa6f6a..3905b8be1 100644 --- a/docs/references/smithers/apps/cli/src/agent-commands/runAgentAdd.js +++ b/docs/references/smithers/apps/cli/src/agent-commands/runAgentAdd.js @@ -1,9 +1,9 @@ import { mkdirSync, existsSync, readdirSync } from "node:fs"; import { spawnSync } from "node:child_process"; -import { addAccount, defaultConfigDir } from "@smithers-orchestrator/accounts"; +import { addAccount, defaultConfigDir } from "@smthrs/accounts"; import { regenerateAgentsTsIfPresent } from "./regenerateAgentsTsIfPresent.js"; -/** @typedef {import("@smithers-orchestrator/accounts").AccountProvider} AccountProvider */ +/** @typedef {import("@smthrs/accounts").AccountProvider} AccountProvider */ /** * Provider id → CLI binary name. For API-key providers this is null because diff --git a/docs/references/smithers/apps/cli/src/agent-detection.js b/docs/references/smithers/apps/cli/src/agent-detection.js index f67e1b236..f601eae2e 100644 --- a/docs/references/smithers/apps/cli/src/agent-detection.js +++ b/docs/references/smithers/apps/cli/src/agent-detection.js @@ -2,8 +2,8 @@ import { existsSync, readFileSync } from "node:fs"; import { homedir } from "node:os"; import { join, resolve, sep } from "node:path"; import { spawnSync } from "node:child_process"; -import { SmithersError } from "@smithers-orchestrator/errors"; -import { listAccounts } from "@smithers-orchestrator/accounts"; +import { SmithersError } from "@smthrs/errors"; +import { listAccounts } from "@smthrs/accounts"; /** @typedef {import("./AgentAvailability.ts").AgentAvailability} AgentAvailability */ /** @typedef {import("./AgentAvailabilityStatus.ts").AgentAvailabilityStatus} AgentAvailabilityStatus */ @@ -570,7 +570,7 @@ function pathLiteral(absPath, homeDir) { * `providers.<labelCamel>` entry is emitted per registered account; pools * group accounts by engine family. * - * @param {import("@smithers-orchestrator/accounts").Account[]} accounts + * @param {import("@smthrs/accounts").Account[]} accounts * @param {NodeJS.ProcessEnv} env * @returns {string} */ @@ -606,7 +606,7 @@ function generateAccountsAgentsTs(accounts, env) { "// Source of truth: ~/.smithers/accounts.json (managed via `smithers agent add|list|remove`)", 'import { homedir } from "node:os";', 'import path from "node:path";', - `import { ${smithersImportSpecifiers.join(", ")} } from "smithers-orchestrator";`, + `import { ${smithersImportSpecifiers.join(", ")} } from "smthrs";`, "", "export const providers = {", ...providerLines, @@ -623,7 +623,7 @@ function generateAccountsAgentsTs(accounts, env) { * Renders an account as `<labelCamel>: new SmithersFooAgent({ ... })` for * inclusion in the providers map. * - * @param {import("@smithers-orchestrator/accounts").Account} account + * @param {import("@smthrs/accounts").Account} account * @param {string} homeDir * @returns {string} */ @@ -786,7 +786,7 @@ export function generateAgentsTs(env = process.env, options = {}) { "// smithers-source: generated", ...(hasAccounts ? ["// Account providers (camelCase labels) come from ~/.smithers/accounts.json — managed via `smithers agent add|list|remove`."] : []), ...(hasAccounts ? ['import { homedir } from "node:os";', 'import path from "node:path";'] : []), - `import { ${smithersImportSpecifiers.join(", ")} } from "smithers-orchestrator";`, + `import { ${smithersImportSpecifiers.join(", ")} } from "smthrs";`, ...scaffoldImportLines, "", ...scaffoldExportLines, diff --git a/docs/references/smithers/apps/cli/src/agent-wiring/registerHermesMcp.js b/docs/references/smithers/apps/cli/src/agent-wiring/registerHermesMcp.js index f2503489c..79df2ce66 100644 --- a/docs/references/smithers/apps/cli/src/agent-wiring/registerHermesMcp.js +++ b/docs/references/smithers/apps/cli/src/agent-wiring/registerHermesMcp.js @@ -15,7 +15,7 @@ import { parse, stringify } from "yaml"; * @param {object} opts * @param {string} [opts.name] Server name (default `"smithers"`). * @param {string} opts.command Executable agents will run (e.g. `"bunx"`). - * @param {string[]} opts.args Arguments for the command (e.g. `["smithers-orchestrator", "--mcp"]`). + * @param {string[]} opts.args Arguments for the command (e.g. `["smthrs", "--mcp"]`). * @param {string} [opts.homeDir] Home directory override (for tests). * @returns {{ agent: "Hermes"; registered: boolean; path: string; reason?: string }} */ diff --git a/docs/references/smithers/apps/cli/src/agent-wiring/registerOpenClawMcp.js b/docs/references/smithers/apps/cli/src/agent-wiring/registerOpenClawMcp.js index 1fda19a3b..823e40da7 100644 --- a/docs/references/smithers/apps/cli/src/agent-wiring/registerOpenClawMcp.js +++ b/docs/references/smithers/apps/cli/src/agent-wiring/registerOpenClawMcp.js @@ -13,7 +13,7 @@ import { dirname, join } from "node:path"; * @param {object} opts * @param {string} [opts.name] Server name (default `"smithers"`). * @param {string} opts.command Executable agents will run (e.g. `"bunx"`). - * @param {string[]} opts.args Arguments for the command (e.g. `["smithers-orchestrator", "--mcp"]`). + * @param {string[]} opts.args Arguments for the command (e.g. `["smthrs", "--mcp"]`). * @param {string} [opts.homeDir] Home directory override (for tests). * @returns {{ agent: "OpenClaw"; registered: boolean; path: string; reason?: string }} */ diff --git a/docs/references/smithers/apps/cli/src/agent-wiring/wireExtraAgents.js b/docs/references/smithers/apps/cli/src/agent-wiring/wireExtraAgents.js index bd58ee3f6..c4dbcf646 100644 --- a/docs/references/smithers/apps/cli/src/agent-wiring/wireExtraAgents.js +++ b/docs/references/smithers/apps/cli/src/agent-wiring/wireExtraAgents.js @@ -33,7 +33,7 @@ function detectRunner() { * @param {"mcp" | "skills"} opts.kind Which install ran. * @param {string} [opts.name] MCP server name (default `"smithers"`). * @param {string} [opts.command] MCP launch executable (default: the detected runner — `npx`/`pnpx`/`bunx` — matching what incur registers for other agents). - * @param {string[]} [opts.args] MCP launch args (default `["smithers-orchestrator", "--mcp"]`). + * @param {string[]} [opts.args] MCP launch args (default `["smthrs", "--mcp"]`). * @param {boolean} [opts.global] Install globally (default `true`). * @param {string} [opts.cwd] Working directory for project-scoped installs. * @param {string[]} [opts.agents] Optional `--agent` filter; when set, only these ids are wired. @@ -44,7 +44,7 @@ export function wireExtraAgents({ kind, name = "smithers", command = detectRunner(), - args = ["smithers-orchestrator", "--mcp"], + args = ["smthrs", "--mcp"], global = true, cwd = process.cwd(), agents, diff --git a/docs/references/smithers/apps/cli/src/ask-human.js b/docs/references/smithers/apps/cli/src/ask-human.js index 4c23decf2..10e1ddef5 100644 --- a/docs/references/smithers/apps/cli/src/ask-human.js +++ b/docs/references/smithers/apps/cli/src/ask-human.js @@ -1,5 +1,5 @@ -import { SmithersError } from "@smithers-orchestrator/errors"; -import { DEFAULT_AGENT_ASK_NODE_ID } from "@smithers-orchestrator/engine/human-requests"; +import { SmithersError } from "@smthrs/errors"; +import { DEFAULT_AGENT_ASK_NODE_ID } from "@smthrs/engine/human-requests"; /** * Run statuses we treat as "in progress" for autodetecting which run an ad-hoc diff --git a/docs/references/smithers/apps/cli/src/ask.js b/docs/references/smithers/apps/cli/src/ask.js index 5ef202e6a..7a88d6128 100644 --- a/docs/references/smithers/apps/cli/src/ask.js +++ b/docs/references/smithers/apps/cli/src/ask.js @@ -4,14 +4,14 @@ import { dirname, join, resolve } from "node:path"; import { fileURLToPath } from "node:url"; import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"; -import { AntigravityAgent } from "@smithers-orchestrator/agents/AntigravityAgent"; -import { ClaudeCodeAgent } from "@smithers-orchestrator/agents/ClaudeCodeAgent"; -import { CodexAgent } from "@smithers-orchestrator/agents/CodexAgent"; -import { GeminiAgent } from "@smithers-orchestrator/agents/GeminiAgent"; -import { KimiAgent } from "@smithers-orchestrator/agents/KimiAgent"; -import { PiAgent } from "@smithers-orchestrator/agents/PiAgent"; -import { SmithersError } from "@smithers-orchestrator/errors"; -import { createSmithersAgentContract, renderSmithersAgentPromptGuidance, } from "@smithers-orchestrator/agents/agent-contract"; +import { AntigravityAgent } from "@smthrs/agents/AntigravityAgent"; +import { ClaudeCodeAgent } from "@smthrs/agents/ClaudeCodeAgent"; +import { CodexAgent } from "@smthrs/agents/CodexAgent"; +import { GeminiAgent } from "@smthrs/agents/GeminiAgent"; +import { KimiAgent } from "@smthrs/agents/KimiAgent"; +import { PiAgent } from "@smthrs/agents/PiAgent"; +import { SmithersError } from "@smthrs/errors"; +import { createSmithersAgentContract, renderSmithersAgentPromptGuidance, } from "@smthrs/agents/agent-contract"; import { describeUnavailableAgent, detectAvailableAgents, formatNoUsableAgentsMessage, } from "./agent-detection.js"; /** * @typedef {typeof ASK_AGENT_IDS[number]} AskAgentId @@ -19,7 +19,7 @@ import { describeUnavailableAgent, detectAvailableAgents, formatNoUsableAgentsMe /** * @typedef {{ agent?: AskAgentId; listAgents?: boolean; dumpPrompt?: boolean; toolSurface?: SmithersToolSurface; noMcp?: boolean; printBootstrap?: boolean; }} AskOptions */ -/** @typedef {import("@smithers-orchestrator/agents/agent-contract").SmithersToolSurface} SmithersToolSurface */ +/** @typedef {import("@smthrs/agents/agent-contract").SmithersToolSurface} SmithersToolSurface */ const ASK_AGENT_IDS = ["claude", "codex", "kimi", "antigravity", "gemini", "pi"]; const DEFAULT_SERVER_NAME = "smithers"; diff --git a/docs/references/smithers/apps/cli/src/diff.js b/docs/references/smithers/apps/cli/src/diff.js index 538fe7adf..755b62c62 100644 --- a/docs/references/smithers/apps/cli/src/diff.js +++ b/docs/references/smithers/apps/cli/src/diff.js @@ -5,7 +5,7 @@ // @smithers-type-exports-end import pc from "picocolors"; -import { getNodeDiffRoute } from "@smithers-orchestrator/server/gatewayRoutes/getNodeDiff"; +import { getNodeDiffRoute } from "@smthrs/server/gatewayRoutes/getNodeDiff"; import { EXIT_OK, EXIT_SERVER_ERROR } from "./util/exitCodes.js"; import { formatCliErrorForStderr, getCliErrorMapping } from "./util/errorMessage.js"; diff --git a/docs/references/smithers/apps/cli/src/eval-suite.js b/docs/references/smithers/apps/cli/src/eval-suite.js index 44cc0a47c..19a396d76 100644 --- a/docs/references/smithers/apps/cli/src/eval-suite.js +++ b/docs/references/smithers/apps/cli/src/eval-suite.js @@ -1,7 +1,7 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"; import { basename, dirname, extname, isAbsolute, join, resolve } from "node:path"; import crypto from "node:crypto"; -import { SmithersError } from "@smithers-orchestrator/errors"; +import { SmithersError } from "@smthrs/errors"; export const EVAL_CASE_STATUSES = [ "finished", diff --git a/docs/references/smithers/apps/cli/src/find-db.js b/docs/references/smithers/apps/cli/src/find-db.js index 1dfc6ba68..b3699af53 100644 --- a/docs/references/smithers/apps/cli/src/find-db.js +++ b/docs/references/smithers/apps/cli/src/find-db.js @@ -1,8 +1,8 @@ import { resolve, dirname } from "node:path"; import { existsSync } from "node:fs"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersError } from "@smithers-orchestrator/errors"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersError } from "@smthrs/errors"; /** @typedef {import("./FindDbWaitOptions.ts").FindDbWaitOptions} FindDbWaitOptions */ /** diff --git a/docs/references/smithers/apps/cli/src/hijack-session.js b/docs/references/smithers/apps/cli/src/hijack-session.js index d82403c06..1e209811b 100644 --- a/docs/references/smithers/apps/cli/src/hijack-session.js +++ b/docs/references/smithers/apps/cli/src/hijack-session.js @@ -2,14 +2,14 @@ import { createInterface } from "node:readline/promises"; import { stdin, stdout, stderr } from "node:process"; import { dirname, resolve } from "node:path"; import { pathToFileURL } from "node:url"; -import { SmithersCtx } from "@smithers-orchestrator/driver"; -import { loadInput, loadOutputs } from "@smithers-orchestrator/db/snapshot"; -import { renderFrame, resolveSchema } from "@smithers-orchestrator/engine"; +import { SmithersCtx } from "@smthrs/driver"; +import { loadInput, loadOutputs } from "@smthrs/db/snapshot"; +import { renderFrame, resolveSchema } from "@smthrs/engine"; import { mdxPlugin } from "./mdx-plugin.js"; -import { SmithersError } from "@smithers-orchestrator/errors"; +import { SmithersError } from "@smthrs/errors"; import { Effect } from "effect"; /** @typedef {import("./HijackCandidate.ts").HijackCandidate} HijackCandidate */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * @template T diff --git a/docs/references/smithers/apps/cli/src/hijack.js b/docs/references/smithers/apps/cli/src/hijack.js index 070ca8bfa..f034bc21b 100644 --- a/docs/references/smithers/apps/cli/src/hijack.js +++ b/docs/references/smithers/apps/cli/src/hijack.js @@ -1,9 +1,9 @@ import { spawn } from "node:child_process"; -import { SmithersError } from "@smithers-orchestrator/errors"; +import { SmithersError } from "@smthrs/errors"; /** @typedef {import("./HijackCandidate.ts").HijackCandidate} HijackCandidate */ /** @typedef {import("./HijackLaunchSpec.ts").HijackLaunchSpec} HijackLaunchSpec */ /** @typedef {import("./NativeHijackEngine.ts").NativeHijackEngine} NativeHijackEngine */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * @param {string | null} [metaJson] diff --git a/docs/references/smithers/apps/cli/src/index.js b/docs/references/smithers/apps/cli/src/index.js index 37eadbf24..5c7f923c3 100755 --- a/docs/references/smithers/apps/cli/src/index.js +++ b/docs/references/smithers/apps/cli/src/index.js @@ -8,27 +8,27 @@ import { readFileSync, existsSync, openSync, statSync, writeSync } from "node:fs import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { Effect, Fiber } from "effect"; import { Cli, Mcp as IncurMcp, z } from "incur"; -import { isRunHeartbeatFresh, runWorkflow, renderFrame, resolveSchema } from "@smithers-orchestrator/engine"; +import { isRunHeartbeatFresh, runWorkflow, renderFrame, resolveSchema } from "@smthrs/engine"; import { mdxPlugin } from "./mdx-plugin.js"; -import { approveNode, denyNode } from "@smithers-orchestrator/engine/approvals"; -import { signalRun } from "@smithers-orchestrator/engine/signals"; -import { loadInput, loadOutputs } from "@smithers-orchestrator/db/snapshot"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { computeRunStateFromRow } from "@smithers-orchestrator/db/runState"; -import { SmithersCtx } from "@smithers-orchestrator/driver"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { approveNode, denyNode } from "@smthrs/engine/approvals"; +import { signalRun } from "@smthrs/engine/signals"; +import { loadInput, loadOutputs } from "@smthrs/db/snapshot"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { computeRunStateFromRow } from "@smthrs/db/runState"; +import { SmithersCtx } from "@smthrs/driver"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { runFork, runPromise } from "./smithersRuntime.js"; -import { trackEvent } from "@smithers-orchestrator/observability/metrics"; -import { vcsToolingStatus } from "@smithers-orchestrator/vcs/vcsToolingStatus"; -import { revertToAttempt } from "@smithers-orchestrator/time-travel/revert"; -import { retryTask } from "@smithers-orchestrator/time-travel/retry-task"; -import { timeTravel } from "@smithers-orchestrator/time-travel/timetravel"; +import { trackEvent } from "@smthrs/observability/metrics"; +import { vcsToolingStatus } from "@smthrs/vcs/vcsToolingStatus"; +import { revertToAttempt } from "@smthrs/time-travel/revert"; +import { retryTask } from "@smthrs/time-travel/retry-task"; +import { timeTravel } from "@smthrs/time-travel/timetravel"; import { runSync } from "./smithersRuntime.js"; import { spawn } from "node:child_process"; -import { buildAgentAskRequestRow, isHumanRequestPastTimeout, validateHumanRequestValue, waitForHumanAnswer, } from "@smithers-orchestrator/engine/human-requests"; -import { SmithersError } from "@smithers-orchestrator/errors"; -import { assertMaxBytes, assertMaxStringLength } from "@smithers-orchestrator/db/input-bounds"; +import { buildAgentAskRequestRow, isHumanRequestPastTimeout, validateHumanRequestValue, waitForHumanAnswer, } from "@smthrs/engine/human-requests"; +import { SmithersError } from "@smthrs/errors"; +import { assertMaxBytes, assertMaxStringLength } from "@smthrs/db/input-bounds"; import { findAndOpenDb } from "./find-db.js"; import { buildAskKindFields, buildAskPromptText, buildAskUniqueToken, formatAskHumanResolveHelp, parseChoices, resolveAskHumanContext, } from "./ask-human.js"; import { chatAttemptKey, formatChatAttemptHeader, formatChatBlock, parseAgentEvent, parseChatAttemptMeta, parseNodeOutputEvent, selectChatAttempts, } from "./chat.js"; @@ -41,8 +41,8 @@ import { EVENT_CATEGORY_VALUES, eventTypesForCategory, normalizeEventCategory, } import { aggregateNodeDetailEffect, renderNodeDetailHuman, } from "./node-detail.js"; import { diagnoseRunEffect, diagnosisCtaCommands, renderWhyDiagnosisHuman, } from "./why-diagnosis.js"; import { detectAvailableAgents } from "./agent-detection.js"; -import { listAccounts, removeAccount } from "@smithers-orchestrator/accounts"; -import { getUsageForAccounts, formatUsageReports } from "@smithers-orchestrator/usage"; +import { listAccounts, removeAccount } from "@smthrs/accounts"; +import { getUsageForAccounts, formatUsageReports } from "@smthrs/usage"; import { runAgentAdd, pingAccount } from "./agent-commands/runAgentAdd.js"; import { agentAddWizard } from "./agent-commands/agentAddWizard.js"; import { getWorkflowFollowUpCtas } from "./workflow-pack.js"; @@ -64,7 +64,7 @@ import { optimizeOptions, runOptimizeCommand, withOptimizationArtifactEnv } from import { ask } from "./ask.js"; import { runScheduler } from "./scheduler.js"; import { resumeRunDetached } from "./resume-detached.js"; -import { formatCliAgentCapabilityDoctorReport, getCliAgentCapabilityDoctorReport, getCliAgentCapabilityReport, } from "@smithers-orchestrator/agents/cli-capabilities"; +import { formatCliAgentCapabilityDoctorReport, getCliAgentCapabilityDoctorReport, getCliAgentCapabilityReport, } from "@smthrs/agents/cli-capabilities"; import { parseDurationMs, supervisorLoopEffect, } from "./supervisor.js"; import { WATCH_MIN_INTERVAL_MS, runWatchLoop, watchIntervalSecondsToMs, } from "./watch.js"; import { createSemanticMcpServer } from "./mcp/semantic-server.js"; @@ -1066,7 +1066,7 @@ async function buildPsRows(adapter, limit, status) { * Older consumers (and the dashboard CTA logic) still key off `status`, so a row * whose owner is dead must surface as something other than "running". * - * @param {import("@smithers-orchestrator/db/runState").RunStateView["state"]} state + * @param {import("@smthrs/db/runState").RunStateView["state"]} state * @returns {string} */ function derivedStateToStatus(state) { @@ -1780,7 +1780,7 @@ async function executeUpCommand(c, workflowPath, options, fail) { }); } } - const { createServeApp } = await import("@smithers-orchestrator/server/serve"); + const { createServeApp } = await import("@smthrs/server/serve"); const effectiveRunId = runId ?? `run-${Date.now()}`; const serveApp = createServeApp({ workflow: workflow, @@ -2047,7 +2047,7 @@ const workflowCli = Cli.create({ if (!vcs.ok && c.format !== "json") { process.stderr.write( `${pc.yellow("⚠ No jj or git found.")} Smithers needs one to snapshot and isolate agent work.\n` + - ` Smithers bundles jj via the optional @smithers-orchestrator/jj-<platform> package; if it could not\n` + + ` Smithers bundles jj via the optional @smthrs/jj-<platform> package; if it could not\n` + ` install for your platform, install jj (https://github.com/jj-vcs/jj) or git, or set SMITHERS_JJ_PATH.\n`, ); } @@ -2092,8 +2092,8 @@ const memoryCli = Cli.create({ alias: { workflow: "w" }, async run(c) { try { - const { createMemoryStore } = await import("@smithers-orchestrator/memory/store"); - const { parseNamespace } = await import("@smithers-orchestrator/memory/types"); + const { createMemoryStore } = await import("@smthrs/memory/store"); + const { parseNamespace } = await import("@smthrs/memory/types"); const workflow = await loadWorkflowAsync(c.options.workflow); ensureSmithersTables(workflow.db); setupSqliteCleanup(workflow); @@ -2346,7 +2346,7 @@ const openapiCli = Cli.create({ args: openapiListArgs, async run(c) { try { - const { listOperations } = await import("@smithers-orchestrator/openapi/tool-factory"); + const { listOperations } = await import("@smthrs/openapi/tool-factory"); const ops = listOperations(c.args.specPath); if (ops.length === 0) { console.log(" No operations found in spec."); @@ -4913,7 +4913,7 @@ const cli = Cli.create({ if (!existsSync(composeFile)) { return fail({ code: "COMPOSE_NOT_FOUND", - message: `Docker Compose file not found at ${composeFile}. Ensure the smithers-orchestrator package includes the observability/ directory.`, + message: `Docker Compose file not found at ${composeFile}. Ensure the smthrs package includes the observability/ directory.`, exitCode: 1, }); } @@ -5030,7 +5030,7 @@ const cli = Cli.create({ return c.error(opts); }; try { - const { replayFromCheckpoint } = await import("@smithers-orchestrator/time-travel/replay"); + const { replayFromCheckpoint } = await import("@smthrs/time-travel/replay"); const { adapter, cleanup } = await loadWorkflowDb(c.args.workflow); try { const inputOverrides = parseJsonInput(c.options.input, "input", fail); @@ -5052,7 +5052,7 @@ const cli = Cli.create({ const workflow = await loadWorkflow(c.args.workflow); const onProgress = buildProgressReporter(); const abort = setupAbortSignal(); - const engine = await import("@smithers-orchestrator/engine"); + const engine = await import("@smthrs/engine"); const runResult = await Effect.runPromise(engine.runWorkflow(workflow, { input: {}, runId: result.runId, @@ -5286,7 +5286,7 @@ const cli = Cli.create({ return c.error(opts); }; try { - const { forkRun } = await import("@smithers-orchestrator/time-travel/fork"); + const { forkRun } = await import("@smthrs/time-travel/fork"); const { adapter, cleanup } = await loadWorkflowDb(c.args.workflow); try { const inputOverrides = parseJsonInput(c.options.input, "input", fail); @@ -5304,7 +5304,7 @@ const cli = Cli.create({ const workflow = await loadWorkflow(c.args.workflow); const onProgress = buildProgressReporter(); const abort = setupAbortSignal(); - const engine = await import("@smithers-orchestrator/engine"); + const engine = await import("@smthrs/engine"); const runResult = await Effect.runPromise(engine.runWorkflow(workflow, { input: {}, runId: result.runId, @@ -5355,7 +5355,7 @@ const cli = Cli.create({ return c.error(opts); }; try { - const { buildTimeline, buildTimelineTree, formatTimelineForTui, formatTimelineAsJson } = await import("@smithers-orchestrator/time-travel/timeline"); + const { buildTimeline, buildTimelineTree, formatTimelineForTui, formatTimelineAsJson } = await import("@smthrs/time-travel/timeline"); const { adapter, cleanup } = await findAndOpenDb(); try { if (c.options.tree) { @@ -5846,14 +5846,14 @@ const CHAT_CREATE_PROMPT = [ async function createChatAgent(agentId, cwd) { switch (agentId) { case "claude-code": { - const { ClaudeCodeAgent } = await import("@smithers-orchestrator/agents/ClaudeCodeAgent"); + const { ClaudeCodeAgent } = await import("@smthrs/agents/ClaudeCodeAgent"); return new ClaudeCodeAgent({ cwd, model: "claude-opus-4-7", }); } case "codex": { - const { CodexAgent } = await import("@smithers-orchestrator/agents/CodexAgent"); + const { CodexAgent } = await import("@smthrs/agents/CodexAgent"); return new CodexAgent({ cwd, model: "gpt-5.3-codex", @@ -5861,13 +5861,13 @@ async function createChatAgent(agentId, cwd) { }); } case "antigravity": { - const { AntigravityAgent } = await import("@smithers-orchestrator/agents/AntigravityAgent"); + const { AntigravityAgent } = await import("@smthrs/agents/AntigravityAgent"); return new AntigravityAgent({ cwd, }); } case "gemini": { - const { GeminiAgent } = await import("@smithers-orchestrator/agents/GeminiAgent"); + const { GeminiAgent } = await import("@smthrs/agents/GeminiAgent"); return new GeminiAgent({ cwd, model: "gemini-3.1-pro-preview", @@ -5878,7 +5878,7 @@ async function createChatAgent(agentId, cwd) { /** * @param {"claude-code" | "codex" | "antigravity" | "gemini"} agentId * @param {string} cwd - * @returns {Promise<import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow<any>>} + * @returns {Promise<import("@smthrs/components/SmithersWorkflow").SmithersWorkflow<any>>} */ async function buildInlineChatWorkflow(agentId, cwd) { const [ @@ -5894,10 +5894,10 @@ async function buildInlineChatWorkflow(agentId, cwd) { import("bun:sqlite"), import("drizzle-orm/bun-sqlite"), import("drizzle-orm/sqlite-core"), - import("@smithers-orchestrator/components"), - import("@smithers-orchestrator/db/zodToTable"), - import("@smithers-orchestrator/db/zodToCreateTableSQL"), - import("@smithers-orchestrator/db/utils/camelToSnake"), + import("@smthrs/components"), + import("@smthrs/db/zodToTable"), + import("@smthrs/db/zodToCreateTableSQL"), + import("@smthrs/db/utils/camelToSnake"), import("zod"), ]); const agent = await createChatAgent(agentId, cwd); diff --git a/docs/references/smithers/apps/cli/src/init-command.js b/docs/references/smithers/apps/cli/src/init-command.js index 186d2ba57..c471f6d7c 100644 --- a/docs/references/smithers/apps/cli/src/init-command.js +++ b/docs/references/smithers/apps/cli/src/init-command.js @@ -1,5 +1,5 @@ import { z } from "incur"; -import { SmithersError } from "@smithers-orchestrator/errors"; +import { SmithersError } from "@smthrs/errors"; import { agentAddWizard } from "./agent-commands/agentAddWizard.js"; import { runInitCeremony } from "./initCeremony.js"; import { renderInitNextSteps } from "./renderInitNextSteps.js"; @@ -48,7 +48,7 @@ function buildInitCta(templateResult) { description: "Next steps", commands: templateResult ? [ - { command: templateResult.command.replace(/^bunx smithers-orchestrator\s+/, ""), description: `Run ${templateResult.id}` }, + { command: templateResult.command.replace(/^bunx smthrs\s+/, ""), description: `Run ${templateResult.id}` }, { command: "starters", description: "Browse the other templates" }, { command: "workflow list", description: "View all available workflows" }, ] diff --git a/docs/references/smithers/apps/cli/src/json-args.js b/docs/references/smithers/apps/cli/src/json-args.js index f5c48ccd2..c2048aad7 100644 --- a/docs/references/smithers/apps/cli/src/json-args.js +++ b/docs/references/smithers/apps/cli/src/json-args.js @@ -1,6 +1,6 @@ import { readFileSync } from "node:fs"; -import { assertMaxBytes } from "@smithers-orchestrator/db/input-bounds"; -import { SmithersError } from "@smithers-orchestrator/errors"; +import { assertMaxBytes } from "@smthrs/db/input-bounds"; +import { SmithersError } from "@smthrs/errors"; export const CLI_JSON_ARGUMENT_MAX_BYTES = 1024 * 1024; diff --git a/docs/references/smithers/apps/cli/src/mcp/semantic-tools.js b/docs/references/smithers/apps/cli/src/mcp/semantic-tools.js index 87a2a3e63..6a4de2646 100644 --- a/docs/references/smithers/apps/cli/src/mcp/semantic-tools.js +++ b/docs/references/smithers/apps/cli/src/mcp/semantic-tools.js @@ -2,8 +2,8 @@ import { basename, extname, resolve } from "node:path"; import { pathToFileURL } from "node:url"; import { Effect } from "effect"; import { z } from "zod"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { findAndOpenDb } from "../find-db.js"; import { aggregateNodeDetailEffect, } from "../node-detail.js"; import { diagnoseRunEffect, } from "../why-diagnosis.js"; @@ -11,14 +11,14 @@ import { chatAttemptKey, parseChatAttemptMeta, parseNodeOutputEvent, selectChatA import { WATCH_MIN_INTERVAL_MS } from "../watch.js"; import { discoverWorkflows, resolveWorkflow } from "../workflows.js"; import { mdxPlugin } from "../mdx-plugin.js"; -import { approveNode, denyNode } from "@smithers-orchestrator/engine/approvals"; -import { buildAgentAskRequestRow, waitForHumanAnswer, } from "@smithers-orchestrator/engine/human-requests"; +import { approveNode, denyNode } from "@smthrs/engine/approvals"; +import { buildAgentAskRequestRow, waitForHumanAnswer, } from "@smthrs/engine/human-requests"; import { buildAskKindFields, buildAskPromptText, buildAskUniqueToken, resolveAskHumanContext, } from "../ask-human.js"; -import { runWorkflow } from "@smithers-orchestrator/engine"; -import { revertToAttempt } from "@smithers-orchestrator/time-travel/revert"; +import { runWorkflow } from "@smthrs/engine"; +import { revertToAttempt } from "@smthrs/time-travel/revert"; import { runPromise } from "../smithersRuntime.js"; -import { SmithersError } from "@smithers-orchestrator/errors"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { SmithersError } from "@smthrs/errors"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; /** * @typedef {{ content: Array<{ type: "text"; text: string; }>; structuredContent: { ok: boolean; data?: unknown; error?: z.infer<typeof toolErrorSchema>; }; isError?: boolean; }} SemanticToolCallResult */ diff --git a/docs/references/smithers/apps/cli/src/node-detail.js b/docs/references/smithers/apps/cli/src/node-detail.js index f0d630a69..c7600f33b 100644 --- a/docs/references/smithers/apps/cli/src/node-detail.js +++ b/docs/references/smithers/apps/cli/src/node-detail.js @@ -1,5 +1,5 @@ import { Effect } from "effect"; -import { SmithersError } from "@smithers-orchestrator/errors"; +import { SmithersError } from "@smthrs/errors"; /** @typedef {import("./AggregateNodeDetailParams.ts").AggregateNodeDetailParams} AggregateNodeDetailParams */ /** * @typedef {{ total: number; failed: number; cancelled: number; succeeded: number; waiting: number; }} AttemptSummary @@ -9,7 +9,7 @@ import { SmithersError } from "@smithers-orchestrator/errors"; /** @typedef {import("./NodeDetailTokenUsage.ts").NodeDetailTokenUsage} NodeDetailTokenUsage */ /** @typedef {import("./NodeDetailToolCall.ts").NodeDetailToolCall} NodeDetailToolCall */ /** @typedef {import("./RenderNodeDetailOptions.ts").RenderNodeDetailOptions} RenderNodeDetailOptions */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ const MAX_TOOL_PAYLOAD_BYTES_HUMAN = 1024; const MAX_VALIDATED_OUTPUT_BYTES_HUMAN = 10 * 1024; diff --git a/docs/references/smithers/apps/cli/src/optimize-command.js b/docs/references/smithers/apps/cli/src/optimize-command.js index fbf2c986a..06cbc68a0 100644 --- a/docs/references/smithers/apps/cli/src/optimize-command.js +++ b/docs/references/smithers/apps/cli/src/optimize-command.js @@ -2,12 +2,12 @@ import { basename, dirname, extname, join, resolve } from "node:path"; import crypto from "node:crypto"; import { Effect } from "effect"; import { z } from "incur"; -import { OPTIMIZATION_ARTIFACT_ENV, renderFrame, resolveSchema, runWorkflow } from "@smithers-orchestrator/engine"; -import { loadOutputs } from "@smithers-orchestrator/db/snapshot"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { SmithersCtx } from "@smithers-orchestrator/driver"; -import { SmithersError } from "@smithers-orchestrator/errors"; +import { OPTIMIZATION_ARTIFACT_ENV, renderFrame, resolveSchema, runWorkflow } from "@smthrs/engine"; +import { loadOutputs } from "@smthrs/db/snapshot"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { SmithersCtx } from "@smthrs/driver"; +import { SmithersError } from "@smthrs/errors"; import { assertEvalRunIdsAvailable, buildEvalPlan, @@ -97,7 +97,7 @@ async function runWithLimit(items, limit, worker) { /** * @param {{ - * workflow: import("@smithers-orchestrator/components").SmithersWorkflow<any>; + * workflow: import("@smthrs/components").SmithersWorkflow<any>; * workflowPath: string; * plan: ReturnType<typeof buildEvalPlan>; * options: Record<string, any>; @@ -191,7 +191,7 @@ async function executeEvalPlan(input) { /** * @param {{ - * workflow: import("@smithers-orchestrator/components").SmithersWorkflow<any>; + * workflow: import("@smthrs/components").SmithersWorkflow<any>; * workflowPath: string; * cases: Array<Record<string, any>>; * }} input @@ -238,10 +238,10 @@ async function discoverOptimizablePromptTasksForCases(input) { * @param {{ * defaultEvalRunLabel: () => string; * formatRequestedJsonOutput: () => boolean; - * loadWorkflow: (path: string) => Promise<import("@smithers-orchestrator/components").SmithersWorkflow<any>>; + * loadWorkflow: (path: string) => Promise<import("@smthrs/components").SmithersWorkflow<any>>; * resolveWorkflowPathForEval: (workflowInput: string) => string; * setupAbortSignal: () => AbortController; - * setupSqliteCleanup: (workflow: import("@smithers-orchestrator/components").SmithersWorkflow<any>) => void; + * setupSqliteCleanup: (workflow: import("@smthrs/components").SmithersWorkflow<any>) => void; * setCommandExitOverride: (exitCode: number) => void; * }} deps */ diff --git a/docs/references/smithers/apps/cli/src/optimize-suite.js b/docs/references/smithers/apps/cli/src/optimize-suite.js index 5f04da016..ac916fb8d 100644 --- a/docs/references/smithers/apps/cli/src/optimize-suite.js +++ b/docs/references/smithers/apps/cli/src/optimize-suite.js @@ -1,7 +1,7 @@ import { existsSync, mkdirSync, writeFileSync } from "node:fs"; import { basename, dirname, extname, isAbsolute, join, resolve } from "node:path"; import crypto from "node:crypto"; -import { SmithersError } from "@smithers-orchestrator/errors"; +import { SmithersError } from "@smthrs/errors"; const ARTIFACT_SCHEMA_VERSION = 1; export const OPTIMIZER_PROVIDER_IDS = [ diff --git a/docs/references/smithers/apps/cli/src/output.js b/docs/references/smithers/apps/cli/src/output.js index 48e392ea0..e1747baad 100644 --- a/docs/references/smithers/apps/cli/src/output.js +++ b/docs/references/smithers/apps/cli/src/output.js @@ -3,8 +3,8 @@ /** @typedef {import("./RunOutputCommandResult.ts").RunOutputCommandResult} RunOutputCommandResult */ // @smithers-type-exports-end -import { getNodeOutputRoute } from "@smithers-orchestrator/server/gatewayRoutes/getNodeOutput"; -import { NodeOutputRouteError } from "@smithers-orchestrator/server/gatewayRoutes/NodeOutputRouteError"; +import { getNodeOutputRoute } from "@smthrs/server/gatewayRoutes/getNodeOutput"; +import { NodeOutputRouteError } from "@smthrs/server/gatewayRoutes/NodeOutputRouteError"; import { EXIT_OK } from "./util/exitCodes.js"; import { formatCliErrorForStderr, getCliErrorMapping } from "./util/errorMessage.js"; @@ -54,7 +54,7 @@ function formatValue(value) { } /** - * @param {import("@smithers-orchestrator/db/adapter").SmithersDb} adapter + * @param {import("@smthrs/db/adapter").SmithersDb} adapter * @param {string} runId * @param {string} nodeId * @returns {Promise<number | null>} diff --git a/docs/references/smithers/apps/cli/src/restore.js b/docs/references/smithers/apps/cli/src/restore.js index b11c6f54c..4c8ed2843 100644 --- a/docs/references/smithers/apps/cli/src/restore.js +++ b/docs/references/smithers/apps/cli/src/restore.js @@ -3,7 +3,7 @@ // the vcs revert (jj restore --from <commit_id>). DI seam on `revert` for tests. import { spawnSync } from "node:child_process"; -import { resolveJjBinary } from "@smithers-orchestrator/vcs/resolveJjBinary"; +import { resolveJjBinary } from "@smthrs/vcs/resolveJjBinary"; /** @param {unknown} id */ function short(id) { diff --git a/docs/references/smithers/apps/cli/src/rewind.js b/docs/references/smithers/apps/cli/src/rewind.js index ab7855f95..a820c6040 100644 --- a/docs/references/smithers/apps/cli/src/rewind.js +++ b/docs/references/smithers/apps/cli/src/rewind.js @@ -4,8 +4,8 @@ // @smithers-type-exports-end import readline from "node:readline"; -import { jumpToFrameRoute } from "@smithers-orchestrator/server/gatewayRoutes/jumpToFrame"; -import { JumpToFrameError } from "@smithers-orchestrator/time-travel/jumpToFrame"; +import { jumpToFrameRoute } from "@smthrs/server/gatewayRoutes/jumpToFrame"; +import { JumpToFrameError } from "@smthrs/time-travel/jumpToFrame"; import { EXIT_OK, EXIT_USER_ERROR, diff --git a/docs/references/smithers/apps/cli/src/scheduler.js b/docs/references/smithers/apps/cli/src/scheduler.js index 2a6341ceb..d18c4b0e7 100644 --- a/docs/references/smithers/apps/cli/src/scheduler.js +++ b/docs/references/smithers/apps/cli/src/scheduler.js @@ -1,7 +1,7 @@ import { spawn } from "node:child_process"; import { CronExpressionParser } from "cron-parser"; import { Effect, Schedule } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { runPromise } from "./smithersRuntime.js"; import { findAndOpenDb } from "./find-db.js"; /** diff --git a/docs/references/smithers/apps/cli/src/seeded-workflow-pack.generated.js b/docs/references/smithers/apps/cli/src/seeded-workflow-pack.generated.js index c878250c5..2f3818380 100644 --- a/docs/references/smithers/apps/cli/src/seeded-workflow-pack.generated.js +++ b/docs/references/smithers/apps/cli/src/seeded-workflow-pack.generated.js @@ -9,7 +9,7 @@ export const GENERATED_SEEDED_FILES = [ { "path": ".smithers/workflows/create-workflow.tsx", - "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Create Workflow\n// smithers-description: Build a new Smithers workflow from a plain-English ask — clarify, provision docs & skills, design, scaffold, verify, and document.\n// smithers-tags: authoring, workflow-pack, scaffolding\n/** @jsxImportSource smithers-orchestrator */\nimport { $ } from \"bun\";\nimport { createSmithers } from \"smithers-orchestrator\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport ClarifyPrompt from \"../prompts/create-workflow-clarify.mdx\";\nimport ProvisionPrompt from \"../prompts/create-workflow-provision.mdx\";\nimport DesignPrompt from \"../prompts/create-workflow-design.mdx\";\nimport ScaffoldPrompt from \"../prompts/create-workflow-scaffold.mdx\";\nimport FixPrompt from \"../prompts/create-workflow-fix.mdx\";\nimport DocumentPrompt from \"../prompts/create-workflow-document.mdx\";\n\nconst WORKFLOWS_DIR = \".smithers/workflows\";\nconst PROMPTS_DIR = \".smithers/prompts\";\nconst SKILLS_DIR = \".smithers/skills\";\n\nconst inputSchema = z.object({\n prompt: z\n .string()\n .default(\"Describe the workflow you want to build, in plain English.\")\n .describe(\"Plain-English description of the workflow you want Smithers to build.\"),\n name: z\n .string()\n .nullable()\n .default(null)\n .describe(\"Desired kebab-case workflow id. Null lets the clarify/design steps choose one.\"),\n review: z\n .boolean()\n .default(true)\n .describe(\"Pause for human approval of the design before any files are written.\"),\n});\n\n// 1. The freeform ask, turned into a structured, buildable spec.\nconst clarifiedSpecSchema = z.looseObject({\n name: z.string().describe(\"Proposed kebab-case workflow id.\"),\n goal: z.string().describe(\"One sentence: what the finished workflow accomplishes.\"),\n trigger: z\n .string()\n .describe(\"How it starts: manual | push | schedule | issue | landing-request | workflow-run | webhook.\"),\n inputs: z\n .array(z.object({ name: z.string(), type: z.string(), purpose: z.string() }))\n .default([]),\n stages: z.array(z.string()).default([]).describe(\"Ordered high-level steps the workflow performs.\"),\n loops: z.array(z.string()).default([]).describe(\"Where it should iterate until a condition holds.\"),\n humanGates: z.array(z.string()).default([]).describe(\"Where a human approval / question belongs.\"),\n successCriteria: z.array(z.string()).default([]),\n openQuestions: z.array(z.string()).default([]).describe(\"Anything ambiguous the author should resolve.\"),\n});\n\n// 2. THE docs & skills step — what the new workflow (and the authoring agents)\n// need installed/available before it can be designed and built.\nconst provisioningSchema = z.looseObject({\n docsFragments: z\n .array(z.object({ name: z.string(), reason: z.string() }))\n .default([])\n .describe(\"smithers.sh llms-*.txt fragments pulled into context.\"),\n examples: z\n .array(z.object({ name: z.string(), reason: z.string() }))\n .default([])\n .describe(\"Closest examples/ workflows to copy as a starting template.\"),\n components: z\n .array(z.object({ name: z.string(), reason: z.string() }))\n .default([])\n .describe(\"Built-in or local components the new workflow should compose.\"),\n skills: z\n .array(\n z.object({\n name: z.string(),\n action: z.enum([\"installed\", \"recommended\", \"present\"]).default(\"recommended\"),\n reason: z.string(),\n }),\n )\n .default([])\n .describe(\"Agent skills the workflow's workers need; installed ones were actually synced.\"),\n agents: z.array(z.string()).default([]).describe(\"Named agent pools / providers the workflow will use.\"),\n notes: z.string().default(\"\"),\n});\n\n// 3. The concrete design the scaffolder will turn into real files.\nconst designSchema = z.looseObject({\n workflowName: z.string(),\n summary: z.string(),\n inputs: z\n .array(z.object({ name: z.string(), type: z.string(), default: z.string().nullable().default(null) }))\n .default([]),\n tasks: z\n .array(\n z.object({\n id: z.string(),\n purpose: z.string(),\n agent: z.string().describe(\"agents.smart | agents.smartTool | agents.cheapFast | (none) for a function task.\"),\n outputs: z.array(z.string()).default([]),\n }),\n )\n .default([]),\n graphShape: z\n .string()\n .describe(\"How the JSX tree nests: Sequence/Parallel/Branch/Loop/Ralph/ReviewLoop, with gates and loops.\"),\n components: z.array(z.string()).default([]),\n prompts: z.array(z.string()).default([]).describe(\".mdx prompt files to author alongside the workflow.\"),\n triggers: z.array(z.string()).default([]),\n humanGates: z.array(z.string()).default([]),\n rationale: z.string().default(\"\"),\n});\n\n// Durable human approval decision (matches the Approval component's output shape).\nconst approvalSchema = z.object({\n approved: z.boolean(),\n note: z.string().nullable(),\n decidedBy: z.string().nullable(),\n decidedAt: z.string().nullable(),\n});\n\n// 5 & 6. Files written by the scaffold / fix agents.\nconst scaffoldSchema = z.looseObject({\n summary: z.string(),\n workflowName: z.string(),\n filesWritten: z\n .array(\n z.object({\n path: z.string(),\n kind: z.enum([\"workflow\", \"prompt\", \"component\", \"agents\", \"skill\", \"other\"]).default(\"other\"),\n }),\n )\n .default([]),\n});\n\n// 6. Result of rendering the new workflow's graph without executing it.\nconst verifySchema = z.looseObject({\n passed: z.boolean(),\n command: z.string(),\n errors: z.array(z.string()).default([]),\n notes: z.string().default(\"\"),\n});\n\n// 7. Agent-facing skill doc so future agents know how to run the new workflow.\nconst documentSchema = z.looseObject({\n summary: z.string(),\n skillPath: z.string().nullable().default(null),\n});\n\nconst { Workflow, Task, Sequence, Branch, Loop, Approval, smithers, outputs } = createSmithers({\n input: inputSchema,\n clarify: clarifiedSpecSchema,\n provision: provisioningSchema,\n design: designSchema,\n approval: approvalSchema,\n scaffold: scaffoldSchema,\n verify: verifySchema,\n document: documentSchema,\n});\n\nexport default smithers((ctx) => {\n const review = ctx.input.review;\n\n const clarify = ctx.outputMaybe(\"clarify\", { nodeId: \"clarify\" });\n const provision = ctx.outputMaybe(\"provision\", { nodeId: \"provision\" });\n const design = ctx.outputMaybe(\"design\", { nodeId: \"design\" });\n const approval = ctx.outputMaybe(\"approval\", { nodeId: \"approve-design\" });\n const scaffold = ctx.outputMaybe(\"scaffold\", { nodeId: \"scaffold\" });\n\n const designed = design !== undefined;\n const approved = !review || approval?.approved === true;\n const proceed = designed && approved;\n\n // The name we scaffold + verify against, resolved as soon as it is known.\n const workflowName =\n scaffold?.workflowName ?? design?.workflowName ?? clarify?.name ?? ctx.input.name ?? \"new-workflow\";\n const workflowFile = `${WORKFLOWS_DIR}/${workflowName}.tsx`;\n\n // Verify-loop bookkeeping: re-render `until` against the latest verify output.\n const verifyOutputs = ctx.outputs.verify ?? [];\n const lastVerify = verifyOutputs.at(-1);\n const verifyPassed = lastVerify?.passed === true;\n const verifyFailed = lastVerify !== undefined && lastVerify.passed === false;\n\n return (\n <Workflow name=\"create-workflow\">\n <Sequence>\n {/* 1 — Turn the freeform ask into a structured, buildable spec. */}\n <Task id=\"clarify\" output={outputs.clarify} agent={agents.smart}>\n <ClarifyPrompt request={ctx.input.prompt} name={ctx.input.name} />\n </Task>\n\n {/* 2 — Docs & skills: decide and ACTUALLY install/gather what the new\n workflow and its worker agents need before we design anything. */}\n {clarify ? (\n <Task\n id=\"provision\"\n output={outputs.provision}\n agent={agents.smartTool}\n heartbeatTimeoutMs={600_000}\n >\n <ProvisionPrompt spec={clarify} skillsDir={SKILLS_DIR} workflowsDir={WORKFLOWS_DIR} />\n </Task>\n ) : null}\n\n {/* 3 — Design the concrete workflow graph from spec + provisioning. */}\n {provision ? (\n <Task id=\"design\" output={outputs.design} agent={agents.smart}>\n <DesignPrompt\n spec={clarify}\n provisioning={provision}\n workflowsDir={WORKFLOWS_DIR}\n promptsDir={PROMPTS_DIR}\n />\n </Task>\n ) : null}\n\n {/* 4 — Optional durable human approval of the design before writing files. */}\n <Branch\n if={review && designed}\n then={\n <Approval\n id=\"approve-design\"\n output={outputs.approval}\n request={{\n title: `Approve design for \"${workflowName}\"`,\n summary: design?.summary ?? \"Review the proposed workflow design before scaffolding.\",\n }}\n />\n }\n else={null}\n />\n\n {/* 5 — Scaffold the real files (workflow .tsx + prompts). */}\n {proceed ? (\n <Task\n id=\"scaffold\"\n output={outputs.scaffold}\n agent={agents.smartTool}\n heartbeatTimeoutMs={900_000}\n >\n <ScaffoldPrompt\n design={design}\n provisioning={provision}\n workflowsDir={WORKFLOWS_DIR}\n promptsDir={PROMPTS_DIR}\n />\n </Task>\n ) : null}\n\n {/* 6 — Verify the graph renders; fix-and-retry until it compiles cleanly. */}\n {proceed && scaffold ? (\n <Loop id=\"verify:loop\" until={verifyPassed} maxIterations={3} onMaxReached=\"return-last\">\n <Sequence>\n <Task id=\"verify\" output={outputs.verify}>\n {async () => {\n const command = `bunx smithers-orchestrator graph ${workflowFile}`;\n const res = await $`bunx smithers-orchestrator graph ${workflowFile}`.nothrow().quiet();\n const passed = res.exitCode === 0;\n const errText = `${res.stderr?.toString() ?? \"\"}\\n${res.stdout?.toString() ?? \"\"}`.trim();\n return {\n passed,\n command,\n errors: passed ? [] : [errText.slice(0, 6000)],\n notes: passed\n ? `${workflowName} loads and its graph renders without executing.`\n : `graph render failed for ${workflowName} — see errors.`,\n };\n }}\n </Task>\n\n <Branch\n if={verifyFailed}\n then={\n <Task\n id=\"fix\"\n output={outputs.scaffold}\n agent={agents.smartTool}\n heartbeatTimeoutMs={900_000}\n >\n <FixPrompt\n workflowName={workflowName}\n workflowFile={workflowFile}\n errors={lastVerify?.errors ?? []}\n design={design}\n workflowsDir={WORKFLOWS_DIR}\n promptsDir={PROMPTS_DIR}\n />\n </Task>\n }\n else={null}\n />\n </Sequence>\n </Loop>\n ) : null}\n\n {/* 7 — Document the new workflow so future agents know how to run it. */}\n {proceed && verifyPassed ? (\n <Task id=\"document\" output={outputs.document} agent={agents.cheapFast}>\n <DocumentPrompt workflowName={workflowName} design={design} skillsDir={SKILLS_DIR} />\n </Task>\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" + "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Create Workflow\n// smithers-description: Build a new Smithers workflow from a plain-English ask — clarify, provision docs & skills, design, scaffold, verify, and document.\n// smithers-tags: authoring, workflow-pack, scaffolding\n/** @jsxImportSource smthrs */\nimport { $ } from \"bun\";\nimport { createSmithers } from \"smthrs\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport ClarifyPrompt from \"../prompts/create-workflow-clarify.mdx\";\nimport ProvisionPrompt from \"../prompts/create-workflow-provision.mdx\";\nimport DesignPrompt from \"../prompts/create-workflow-design.mdx\";\nimport ScaffoldPrompt from \"../prompts/create-workflow-scaffold.mdx\";\nimport FixPrompt from \"../prompts/create-workflow-fix.mdx\";\nimport DocumentPrompt from \"../prompts/create-workflow-document.mdx\";\n\nconst WORKFLOWS_DIR = \".smithers/workflows\";\nconst PROMPTS_DIR = \".smithers/prompts\";\nconst SKILLS_DIR = \".smithers/skills\";\n\nconst inputSchema = z.object({\n prompt: z\n .string()\n .default(\"Describe the workflow you want to build, in plain English.\")\n .describe(\"Plain-English description of the workflow you want Smithers to build.\"),\n name: z\n .string()\n .nullable()\n .default(null)\n .describe(\"Desired kebab-case workflow id. Null lets the clarify/design steps choose one.\"),\n review: z\n .boolean()\n .default(true)\n .describe(\"Pause for human approval of the design before any files are written.\"),\n});\n\n// 1. The freeform ask, turned into a structured, buildable spec.\nconst clarifiedSpecSchema = z.looseObject({\n name: z.string().describe(\"Proposed kebab-case workflow id.\"),\n goal: z.string().describe(\"One sentence: what the finished workflow accomplishes.\"),\n trigger: z\n .string()\n .describe(\"How it starts: manual | push | schedule | issue | landing-request | workflow-run | webhook.\"),\n inputs: z\n .array(z.object({ name: z.string(), type: z.string(), purpose: z.string() }))\n .default([]),\n stages: z.array(z.string()).default([]).describe(\"Ordered high-level steps the workflow performs.\"),\n loops: z.array(z.string()).default([]).describe(\"Where it should iterate until a condition holds.\"),\n humanGates: z.array(z.string()).default([]).describe(\"Where a human approval / question belongs.\"),\n successCriteria: z.array(z.string()).default([]),\n openQuestions: z.array(z.string()).default([]).describe(\"Anything ambiguous the author should resolve.\"),\n});\n\n// 2. THE docs & skills step — what the new workflow (and the authoring agents)\n// need installed/available before it can be designed and built.\nconst provisioningSchema = z.looseObject({\n docsFragments: z\n .array(z.object({ name: z.string(), reason: z.string() }))\n .default([])\n .describe(\"smithers.sh llms-*.txt fragments pulled into context.\"),\n examples: z\n .array(z.object({ name: z.string(), reason: z.string() }))\n .default([])\n .describe(\"Closest examples/ workflows to copy as a starting template.\"),\n components: z\n .array(z.object({ name: z.string(), reason: z.string() }))\n .default([])\n .describe(\"Built-in or local components the new workflow should compose.\"),\n skills: z\n .array(\n z.object({\n name: z.string(),\n action: z.enum([\"installed\", \"recommended\", \"present\"]).default(\"recommended\"),\n reason: z.string(),\n }),\n )\n .default([])\n .describe(\"Agent skills the workflow's workers need; installed ones were actually synced.\"),\n agents: z.array(z.string()).default([]).describe(\"Named agent pools / providers the workflow will use.\"),\n notes: z.string().default(\"\"),\n});\n\n// 3. The concrete design the scaffolder will turn into real files.\nconst designSchema = z.looseObject({\n workflowName: z.string(),\n summary: z.string(),\n inputs: z\n .array(z.object({ name: z.string(), type: z.string(), default: z.string().nullable().default(null) }))\n .default([]),\n tasks: z\n .array(\n z.object({\n id: z.string(),\n purpose: z.string(),\n agent: z.string().describe(\"agents.smart | agents.smartTool | agents.cheapFast | (none) for a function task.\"),\n outputs: z.array(z.string()).default([]),\n }),\n )\n .default([]),\n graphShape: z\n .string()\n .describe(\"How the JSX tree nests: Sequence/Parallel/Branch/Loop/Ralph/ReviewLoop, with gates and loops.\"),\n components: z.array(z.string()).default([]),\n prompts: z.array(z.string()).default([]).describe(\".mdx prompt files to author alongside the workflow.\"),\n triggers: z.array(z.string()).default([]),\n humanGates: z.array(z.string()).default([]),\n rationale: z.string().default(\"\"),\n});\n\n// Durable human approval decision (matches the Approval component's output shape).\nconst approvalSchema = z.object({\n approved: z.boolean(),\n note: z.string().nullable(),\n decidedBy: z.string().nullable(),\n decidedAt: z.string().nullable(),\n});\n\n// 5 & 6. Files written by the scaffold / fix agents.\nconst scaffoldSchema = z.looseObject({\n summary: z.string(),\n workflowName: z.string(),\n filesWritten: z\n .array(\n z.object({\n path: z.string(),\n kind: z.enum([\"workflow\", \"prompt\", \"component\", \"agents\", \"skill\", \"other\"]).default(\"other\"),\n }),\n )\n .default([]),\n});\n\n// 6. Result of rendering the new workflow's graph without executing it.\nconst verifySchema = z.looseObject({\n passed: z.boolean(),\n command: z.string(),\n errors: z.array(z.string()).default([]),\n notes: z.string().default(\"\"),\n});\n\n// 7. Agent-facing skill doc so future agents know how to run the new workflow.\nconst documentSchema = z.looseObject({\n summary: z.string(),\n skillPath: z.string().nullable().default(null),\n});\n\nconst { Workflow, Task, Sequence, Branch, Loop, Approval, smithers, outputs } = createSmithers({\n input: inputSchema,\n clarify: clarifiedSpecSchema,\n provision: provisioningSchema,\n design: designSchema,\n approval: approvalSchema,\n scaffold: scaffoldSchema,\n verify: verifySchema,\n document: documentSchema,\n});\n\nexport default smithers((ctx) => {\n const review = ctx.input.review;\n\n const clarify = ctx.outputMaybe(\"clarify\", { nodeId: \"clarify\" });\n const provision = ctx.outputMaybe(\"provision\", { nodeId: \"provision\" });\n const design = ctx.outputMaybe(\"design\", { nodeId: \"design\" });\n const approval = ctx.outputMaybe(\"approval\", { nodeId: \"approve-design\" });\n const scaffold = ctx.outputMaybe(\"scaffold\", { nodeId: \"scaffold\" });\n\n const designed = design !== undefined;\n const approved = !review || approval?.approved === true;\n const proceed = designed && approved;\n\n // The name we scaffold + verify against, resolved as soon as it is known.\n const workflowName =\n scaffold?.workflowName ?? design?.workflowName ?? clarify?.name ?? ctx.input.name ?? \"new-workflow\";\n const workflowFile = `${WORKFLOWS_DIR}/${workflowName}.tsx`;\n\n // Verify-loop bookkeeping: re-render `until` against the latest verify output.\n const verifyOutputs = ctx.outputs.verify ?? [];\n const lastVerify = verifyOutputs.at(-1);\n const verifyPassed = lastVerify?.passed === true;\n const verifyFailed = lastVerify !== undefined && lastVerify.passed === false;\n\n return (\n <Workflow name=\"create-workflow\">\n <Sequence>\n {/* 1 — Turn the freeform ask into a structured, buildable spec. */}\n <Task id=\"clarify\" output={outputs.clarify} agent={agents.smart}>\n <ClarifyPrompt request={ctx.input.prompt} name={ctx.input.name} />\n </Task>\n\n {/* 2 — Docs & skills: decide and ACTUALLY install/gather what the new\n workflow and its worker agents need before we design anything. */}\n {clarify ? (\n <Task\n id=\"provision\"\n output={outputs.provision}\n agent={agents.smartTool}\n heartbeatTimeoutMs={600_000}\n >\n <ProvisionPrompt spec={clarify} skillsDir={SKILLS_DIR} workflowsDir={WORKFLOWS_DIR} />\n </Task>\n ) : null}\n\n {/* 3 — Design the concrete workflow graph from spec + provisioning. */}\n {provision ? (\n <Task id=\"design\" output={outputs.design} agent={agents.smart}>\n <DesignPrompt\n spec={clarify}\n provisioning={provision}\n workflowsDir={WORKFLOWS_DIR}\n promptsDir={PROMPTS_DIR}\n />\n </Task>\n ) : null}\n\n {/* 4 — Optional durable human approval of the design before writing files. */}\n <Branch\n if={review && designed}\n then={\n <Approval\n id=\"approve-design\"\n output={outputs.approval}\n request={{\n title: `Approve design for \"${workflowName}\"`,\n summary: design?.summary ?? \"Review the proposed workflow design before scaffolding.\",\n }}\n />\n }\n else={null}\n />\n\n {/* 5 — Scaffold the real files (workflow .tsx + prompts). */}\n {proceed ? (\n <Task\n id=\"scaffold\"\n output={outputs.scaffold}\n agent={agents.smartTool}\n heartbeatTimeoutMs={900_000}\n >\n <ScaffoldPrompt\n design={design}\n provisioning={provision}\n workflowsDir={WORKFLOWS_DIR}\n promptsDir={PROMPTS_DIR}\n />\n </Task>\n ) : null}\n\n {/* 6 — Verify the graph renders; fix-and-retry until it compiles cleanly. */}\n {proceed && scaffold ? (\n <Loop id=\"verify:loop\" until={verifyPassed} maxIterations={3} onMaxReached=\"return-last\">\n <Sequence>\n <Task id=\"verify\" output={outputs.verify}>\n {async () => {\n const command = `bunx smthrs graph ${workflowFile}`;\n const res = await $`bunx smthrs graph ${workflowFile}`.nothrow().quiet();\n const passed = res.exitCode === 0;\n const errText = `${res.stderr?.toString() ?? \"\"}\\n${res.stdout?.toString() ?? \"\"}`.trim();\n return {\n passed,\n command,\n errors: passed ? [] : [errText.slice(0, 6000)],\n notes: passed\n ? `${workflowName} loads and its graph renders without executing.`\n : `graph render failed for ${workflowName} — see errors.`,\n };\n }}\n </Task>\n\n <Branch\n if={verifyFailed}\n then={\n <Task\n id=\"fix\"\n output={outputs.scaffold}\n agent={agents.smartTool}\n heartbeatTimeoutMs={900_000}\n >\n <FixPrompt\n workflowName={workflowName}\n workflowFile={workflowFile}\n errors={lastVerify?.errors ?? []}\n design={design}\n workflowsDir={WORKFLOWS_DIR}\n promptsDir={PROMPTS_DIR}\n />\n </Task>\n }\n else={null}\n />\n </Sequence>\n </Loop>\n ) : null}\n\n {/* 7 — Document the new workflow so future agents know how to run it. */}\n {proceed && verifyPassed ? (\n <Task id=\"document\" output={outputs.document} agent={agents.cheapFast}>\n <DocumentPrompt workflowName={workflowName} design={design} skillsDir={SKILLS_DIR} />\n </Task>\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" }, { "path": ".smithers/prompts/create-workflow-clarify.mdx", @@ -17,7 +17,7 @@ export const GENERATED_SEEDED_FILES = [ }, { "path": ".smithers/prompts/create-workflow-provision.mdx", - "contents": "# Provision docs & skills for the new workflow\n\nYou are the **docs & skills** step of the \"build me a Smithers workflow\"\npipeline. Before anyone designs or writes the workflow, your job is to make sure\nthe right knowledge and capabilities are actually available — both for the\nauthoring agents (so the design is grounded in the real API, not guessed) and\nfor the worker agents the finished workflow will dispatch.\n\nYou have shell + file tools. **Actually run the commands and install what's\nmissing** — do not just recommend. Then report what you did.\n\n## Target workflow spec\n\n{JSON.stringify(props.spec, null, 2)}\n\nLocal skills directory: {props.skillsDir}\nLocal workflows directory: {props.workflowsDir}\n\n## Do this\n\n### 1. Pull the relevant Smithers docs into context\n\nThe docs are progressively disclosed as `llms-*.txt` fragments — load only what\nthis workflow needs, not the whole bundle.\n\n- `bunx smithers-orchestrator docs` — the concise `llms.txt` index.\n- Then pull the fragments that match this workflow's shape, e.g.\n `llms-core.txt` (runtime, JSX surface, CLI, components, recipes) is almost\n always relevant; add `llms-memory.txt`, `llms-openapi.txt`,\n `llms-observability.txt` (HTTP/gateway/MCP/OTel), `llms-integrations.txt`\n (agent runtimes, tools), or `llms-events.txt` only if the spec calls for them.\n- `bunx smithers-orchestrator ask \"<focused question>\"` for anything specific\n (e.g. \"how do I add a human approval gate?\", \"how does Ralph decide to stop?\").\n\nRecord each fragment you pulled and why in `docsFragments`.\n\n### 2. Find the closest example to copy\n\nBrowse `examples/` (and `{props.workflowsDir}`) for the workflow(s) nearest to\nthis spec — they are the fastest correct starting point. `ls examples`, then read\n1–3 candidates. Note them in `examples` with the reason each is a good template.\n\n### 3. Pick the components to compose — don't hand-roll loops\n\nPatterns seen twice in the field already ship as components. Identify which the\nnew workflow should reuse instead of re-implementing: `<ReviewLoop>`,\n`<Optimizer>`, `<ScanFixVerify>`, `<Panel>`, `<Debate>`, `<Supervisor>`,\n`<Saga>`, `<Kanban>`, `<MergeQueue>`, `<EscalationChain>`,\n`<ClassifyAndRoute>`, `<GatherAndSynthesize>`, plus the local\n`.smithers/components/*` (e.g. `ValidationLoop`, `Review`, `ForEachFeature`).\nRecord them in `components`.\n\n### 4. Install the skills the worker agents will need\n\nThe finished workflow dispatches real agents (Claude Code, Codex, …) to do the\nwork. Those agents are far more capable when the right **skills** are synced into\ntheir agent dirs.\n\n- Inventory what already exists: list `{props.skillsDir}` and note relevant\n existing skills as `present`.\n- Decide which skills this workflow's tasks need given its domain (e.g. a deploy\n workflow → infra/k8s skills; a docs workflow → a docs skill; almost any\n authoring/orchestration workflow benefits from the `smithers` skill itself).\n- Install the missing ones with `bunx smithers-orchestrator skills add <name>`\n (this syncs them into the agent skill dirs). Mark those `installed`.\n- If a needed skill genuinely does not exist yet, mark it `recommended` and say\n what it should cover — the design step can note it as a follow-up.\n\nRecord every skill in `skills` with its `action` (installed | present |\nrecommended) and the reason.\n\n### 5. Choose the agent pools\n\nFrom `.smithers/agents.ts`, pick which named pools the workflow's tasks should\nuse — `agents.smart` (deep reasoning), `agents.smartTool` (reasoning + file/shell\ntools, for steps that edit or run things), `agents.cheapFast` (cheap validation /\nclassification). List them in `agents`.\n\n## Output\n\nReturn the provisioning manifest. `notes` should call out anything the design\nstep must know (a missing skill, an API gotcha you found in the docs, a template\nto start from). Do not design or write the workflow here.\n\nREQUIRED OUTPUT:\n{props.schema}\n" + "contents": "# Provision docs & skills for the new workflow\n\nYou are the **docs & skills** step of the \"build me a Smithers workflow\"\npipeline. Before anyone designs or writes the workflow, your job is to make sure\nthe right knowledge and capabilities are actually available — both for the\nauthoring agents (so the design is grounded in the real API, not guessed) and\nfor the worker agents the finished workflow will dispatch.\n\nYou have shell + file tools. **Actually run the commands and install what's\nmissing** — do not just recommend. Then report what you did.\n\n## Target workflow spec\n\n{JSON.stringify(props.spec, null, 2)}\n\nLocal skills directory: {props.skillsDir}\nLocal workflows directory: {props.workflowsDir}\n\n## Do this\n\n### 1. Pull the relevant Smithers docs into context\n\nThe docs are progressively disclosed as `llms-*.txt` fragments — load only what\nthis workflow needs, not the whole bundle.\n\n- `bunx smthrs docs` — the concise `llms.txt` index.\n- Then pull the fragments that match this workflow's shape, e.g.\n `llms-core.txt` (runtime, JSX surface, CLI, components, recipes) is almost\n always relevant; add `llms-memory.txt`, `llms-openapi.txt`,\n `llms-observability.txt` (HTTP/gateway/MCP/OTel), `llms-integrations.txt`\n (agent runtimes, tools), or `llms-events.txt` only if the spec calls for them.\n- `bunx smthrs ask \"<focused question>\"` for anything specific\n (e.g. \"how do I add a human approval gate?\", \"how does Ralph decide to stop?\").\n\nRecord each fragment you pulled and why in `docsFragments`.\n\n### 2. Find the closest example to copy\n\nBrowse `examples/` (and `{props.workflowsDir}`) for the workflow(s) nearest to\nthis spec — they are the fastest correct starting point. `ls examples`, then read\n1–3 candidates. Note them in `examples` with the reason each is a good template.\n\n### 3. Pick the components to compose — don't hand-roll loops\n\nPatterns seen twice in the field already ship as components. Identify which the\nnew workflow should reuse instead of re-implementing: `<ReviewLoop>`,\n`<Optimizer>`, `<ScanFixVerify>`, `<Panel>`, `<Debate>`, `<Supervisor>`,\n`<Saga>`, `<Kanban>`, `<MergeQueue>`, `<EscalationChain>`,\n`<ClassifyAndRoute>`, `<GatherAndSynthesize>`, plus the local\n`.smithers/components/*` (e.g. `ValidationLoop`, `Review`, `ForEachFeature`).\nRecord them in `components`.\n\n### 4. Install the skills the worker agents will need\n\nThe finished workflow dispatches real agents (Claude Code, Codex, …) to do the\nwork. Those agents are far more capable when the right **skills** are synced into\ntheir agent dirs.\n\n- Inventory what already exists: list `{props.skillsDir}` and note relevant\n existing skills as `present`.\n- Decide which skills this workflow's tasks need given its domain (e.g. a deploy\n workflow → infra/k8s skills; a docs workflow → a docs skill; almost any\n authoring/orchestration workflow benefits from the `smithers` skill itself).\n- Install the missing ones with `bunx smthrs skills add <name>`\n (this syncs them into the agent skill dirs). Mark those `installed`.\n- If a needed skill genuinely does not exist yet, mark it `recommended` and say\n what it should cover — the design step can note it as a follow-up.\n\nRecord every skill in `skills` with its `action` (installed | present |\nrecommended) and the reason.\n\n### 5. Choose the agent pools\n\nFrom `.smithers/agents.ts`, pick which named pools the workflow's tasks should\nuse — `agents.smart` (deep reasoning), `agents.smartTool` (reasoning + file/shell\ntools, for steps that edit or run things), `agents.cheapFast` (cheap validation /\nclassification). List them in `agents`.\n\n## Output\n\nReturn the provisioning manifest. `notes` should call out anything the design\nstep must know (a missing skill, an API gotcha you found in the docs, a template\nto start from). Do not design or write the workflow here.\n\nREQUIRED OUTPUT:\n{props.schema}\n" }, { "path": ".smithers/prompts/create-workflow-design.mdx", @@ -25,19 +25,19 @@ export const GENERATED_SEEDED_FILES = [ }, { "path": ".smithers/prompts/create-workflow-scaffold.mdx", - "contents": "# Scaffold the workflow files\n\nYou are the scaffolder. Turn the approved design into real, runnable Smithers\nfiles. You have file + shell tools — **write the files to disk**, then report\nexactly what you wrote.\n\n## Design\n\n{JSON.stringify(props.design, null, 2)}\n\n## Provisioning (templates, components, skills, agents available)\n\n{JSON.stringify(props.provisioning, null, 2)}\n\nWrite the workflow to {props.workflowsDir} as a `NAME.tsx` file (NAME = the\ndesign's kebab-case workflowName). Write each prompt to {props.promptsDir} as its\nown `.mdx` file, one per prompt named in the design.\n\n## How to write it\n\n1. **Start from the closest example** named in the provisioning manifest — copy\n its structure, then adapt. Don't invent API; if unsure, re-read the example or\n `bunx smithers-orchestrator docs`.\n2. **Workflow file header** — begin with the two seed comments and the JSX pragma,\n exactly like the other workflows in `{props.workflowsDir}`:\n ```\n // smithers-source: seeded\n // smithers-display-name: <Title Case Name>\n /** @jsxImportSource smithers-orchestrator */\n ```\n3. **Imports** — `import { createSmithers } from \"smithers-orchestrator\"`,\n `import { z } from \"zod/v4\"`, `import { agents } from \"../agents\"`, any\n components from `../components`, and each prompt from `../prompts/<name>.mdx`.\n4. **Schemas** — define the Zod input schema and one schema per task output.\n Call `createSmithers({ input: inputSchema, <table>: <schema>, ... })` and\n destructure only the components you use (`Workflow`, `Task`, `Sequence`,\n `Branch`, `Loop`, `Approval`, `smithers`, `outputs`).\n5. **Graph** — `export default smithers((ctx) => ( <Workflow name=\"<id>\"> … ))`,\n matching the design's `graphShape`. Gate later stages on earlier outputs with\n `ctx.outputMaybe(\"table\", { nodeId })`, exactly like the existing workflows.\n6. **Prompts** — author each `.mdx` from the design's `prompts` list. Pass props\n from the task and end every prompt with:\n ```\n REQUIRED OUTPUT:\n {props.schema}\n ```\n7. **Agents** — only add a new provider/pool to `../agents.ts` if the design\n truly needs one that doesn't exist; otherwise reuse the existing pools.\n8. **Skills** — if the design relies on a worker skill the provisioning step\n marked `recommended` (not yet installed), create a concise skill file under\n the local skills dir so the workflow's agents have it.\n\nKeep it idiomatic and minimal — match the style of the neighbouring files. Do not\nadd dead code, placeholders, or \"TODO\" stubs. The next step renders the graph to\nverify it compiles, so make it actually load.\n\n## Output\n\nReturn a `workflowName` and the full list of `filesWritten` (path + kind).\n\nREQUIRED OUTPUT:\n{props.schema}\n" + "contents": "# Scaffold the workflow files\n\nYou are the scaffolder. Turn the approved design into real, runnable Smithers\nfiles. You have file + shell tools — **write the files to disk**, then report\nexactly what you wrote.\n\n## Design\n\n{JSON.stringify(props.design, null, 2)}\n\n## Provisioning (templates, components, skills, agents available)\n\n{JSON.stringify(props.provisioning, null, 2)}\n\nWrite the workflow to {props.workflowsDir} as a `NAME.tsx` file (NAME = the\ndesign's kebab-case workflowName). Write each prompt to {props.promptsDir} as its\nown `.mdx` file, one per prompt named in the design.\n\n## How to write it\n\n1. **Start from the closest example** named in the provisioning manifest — copy\n its structure, then adapt. Don't invent API; if unsure, re-read the example or\n `bunx smthrs docs`.\n2. **Workflow file header** — begin with the two seed comments and the JSX pragma,\n exactly like the other workflows in `{props.workflowsDir}`:\n ```\n // smithers-source: seeded\n // smithers-display-name: <Title Case Name>\n /** @jsxImportSource smthrs */\n ```\n3. **Imports** — `import { createSmithers } from \"smthrs\"`,\n `import { z } from \"zod/v4\"`, `import { agents } from \"../agents\"`, any\n components from `../components`, and each prompt from `../prompts/<name>.mdx`.\n4. **Schemas** — define the Zod input schema and one schema per task output.\n Call `createSmithers({ input: inputSchema, <table>: <schema>, ... })` and\n destructure only the components you use (`Workflow`, `Task`, `Sequence`,\n `Branch`, `Loop`, `Approval`, `smithers`, `outputs`).\n5. **Graph** — `export default smithers((ctx) => ( <Workflow name=\"<id>\"> … ))`,\n matching the design's `graphShape`. Gate later stages on earlier outputs with\n `ctx.outputMaybe(\"table\", { nodeId })`, exactly like the existing workflows.\n6. **Prompts** — author each `.mdx` from the design's `prompts` list. Pass props\n from the task and end every prompt with:\n ```\n REQUIRED OUTPUT:\n {props.schema}\n ```\n7. **Agents** — only add a new provider/pool to `../agents.ts` if the design\n truly needs one that doesn't exist; otherwise reuse the existing pools.\n8. **Skills** — if the design relies on a worker skill the provisioning step\n marked `recommended` (not yet installed), create a concise skill file under\n the local skills dir so the workflow's agents have it.\n\nKeep it idiomatic and minimal — match the style of the neighbouring files. Do not\nadd dead code, placeholders, or \"TODO\" stubs. The next step renders the graph to\nverify it compiles, so make it actually load.\n\n## Output\n\nReturn a `workflowName` and the full list of `filesWritten` (path + kind).\n\nREQUIRED OUTPUT:\n{props.schema}\n" }, { "path": ".smithers/prompts/create-workflow-fix.mdx", - "contents": "# Fix the workflow until its graph renders\n\nThe new workflow failed to render its graph. `smithers graph` loads the module\n(catching TypeScript / import / JSX errors) and renders one frame without\nexecuting it (catching structural errors). Read the error, fix the files, and\nmake it load. You have file + shell tools.\n\n## Workflow\n\n- Name: {props.workflowName}\n- Entry file: {props.workflowFile}\n\n## Verify command that failed\n\n`bunx smithers-orchestrator graph {props.workflowFile}`\n\n## Errors\n\n{JSON.stringify(props.errors, null, 2)}\n\n## Intended design (the source of truth for behaviour)\n\n{JSON.stringify(props.design, null, 2)}\n\n## How to fix\n\n1. Read the entry file and any prompt/component files it imports.\n2. Map the error to a cause. Common ones:\n - **Import / module not found** — a prompt or component path is wrong, or a\n named export doesn't exist. Check `{props.promptsDir}` and `../components`.\n - **Type / schema error** — a `<Task output={outputs.x}>` doesn't match its\n Zod schema, or a destructured component (`Branch`, `Loop`, `Approval`) was\n never pulled out of `createSmithers(...)`.\n - **JSX / structural** — a conditional renders the wrong child type, a node id\n is duplicated, or a control-flow component is missing a required prop\n (`Loop` needs `until`; `Approval` needs `request`).\n3. Make the smallest change that fixes the error without abandoning the design.\n If the docs would help, run `bunx smithers-orchestrator docs` or\n `bunx smithers-orchestrator ask \"<question>\"`.\n4. Re-run `bunx smithers-orchestrator graph {props.workflowFile}` yourself to\n confirm it now exits 0 before you finish.\n\nDo not delete the workflow or stub it out to \"pass\" — fix the real problem.\n\n## Output\n\nReturn the files you changed as `filesWritten` (path + kind) and a one-line\n`summary` of the fix.\n\nREQUIRED OUTPUT:\n{props.schema}\n" + "contents": "# Fix the workflow until its graph renders\n\nThe new workflow failed to render its graph. `smithers graph` loads the module\n(catching TypeScript / import / JSX errors) and renders one frame without\nexecuting it (catching structural errors). Read the error, fix the files, and\nmake it load. You have file + shell tools.\n\n## Workflow\n\n- Name: {props.workflowName}\n- Entry file: {props.workflowFile}\n\n## Verify command that failed\n\n`bunx smthrs graph {props.workflowFile}`\n\n## Errors\n\n{JSON.stringify(props.errors, null, 2)}\n\n## Intended design (the source of truth for behaviour)\n\n{JSON.stringify(props.design, null, 2)}\n\n## How to fix\n\n1. Read the entry file and any prompt/component files it imports.\n2. Map the error to a cause. Common ones:\n - **Import / module not found** — a prompt or component path is wrong, or a\n named export doesn't exist. Check `{props.promptsDir}` and `../components`.\n - **Type / schema error** — a `<Task output={outputs.x}>` doesn't match its\n Zod schema, or a destructured component (`Branch`, `Loop`, `Approval`) was\n never pulled out of `createSmithers(...)`.\n - **JSX / structural** — a conditional renders the wrong child type, a node id\n is duplicated, or a control-flow component is missing a required prop\n (`Loop` needs `until`; `Approval` needs `request`).\n3. Make the smallest change that fixes the error without abandoning the design.\n If the docs would help, run `bunx smthrs docs` or\n `bunx smthrs ask \"<question>\"`.\n4. Re-run `bunx smthrs graph {props.workflowFile}` yourself to\n confirm it now exits 0 before you finish.\n\nDo not delete the workflow or stub it out to \"pass\" — fix the real problem.\n\n## Output\n\nReturn the files you changed as `filesWritten` (path + kind) and a one-line\n`summary` of the fix.\n\nREQUIRED OUTPUT:\n{props.schema}\n" }, { "path": ".smithers/prompts/create-workflow-document.mdx", - "contents": "# Document the new workflow\n\nThe new workflow renders cleanly. Write a short, agent-facing skill file so that\nfuture agents (and the human) know it exists and how to run it. You have file\ntools — write the file, then report its path.\n\n## Workflow\n\n- Name: {props.workflowName}\n\n## Design\n\n{JSON.stringify(props.design, null, 2)}\n\n## Write the skill\n\nCreate `{props.skillsDir}/{props.workflowName}.md` (create the directory if\nneeded). Use YAML frontmatter then a concise body:\n\n```\n---\nname: {props.workflowName}\ndescription: <one line — what it does and when to reach for it>\nworkflow: {props.workflowName}\n---\n```\n\nThe body must tell an agent:\n\n1. What the workflow does and when to use it (1–2 sentences).\n2. Its inputs — especially `prompt` and any typed knobs from the design.\n3. How to start it:\n `bunx smithers-orchestrator workflow run {props.workflowName} --prompt \"…\"`\n (or `--input '{…}'` for structured inputs).\n4. How to run it detached and watch it: `-d` to detach, then\n `smithers ps`, `smithers logs <runId> -f`, `smithers inspect <runId>`.\n5. How to handle blocked states: `smithers approve <runId>` for approval gates,\n `smithers why <runId>` for signal waits, `smithers cancel <runId>` to stop.\n\nKeep it practical and short — no marketing copy. Match the style of any existing\nfiles in `{props.skillsDir}` and update rather than duplicate if one already\ncovers this workflow.\n\n## Output\n\nReturn a one-line `summary` and the `skillPath` you wrote.\n\nREQUIRED OUTPUT:\n{props.schema}\n" + "contents": "# Document the new workflow\n\nThe new workflow renders cleanly. Write a short, agent-facing skill file so that\nfuture agents (and the human) know it exists and how to run it. You have file\ntools — write the file, then report its path.\n\n## Workflow\n\n- Name: {props.workflowName}\n\n## Design\n\n{JSON.stringify(props.design, null, 2)}\n\n## Write the skill\n\nCreate `{props.skillsDir}/{props.workflowName}.md` (create the directory if\nneeded). Use YAML frontmatter then a concise body:\n\n```\n---\nname: {props.workflowName}\ndescription: <one line — what it does and when to reach for it>\nworkflow: {props.workflowName}\n---\n```\n\nThe body must tell an agent:\n\n1. What the workflow does and when to use it (1–2 sentences).\n2. Its inputs — especially `prompt` and any typed knobs from the design.\n3. How to start it:\n `bunx smthrs workflow run {props.workflowName} --prompt \"…\"`\n (or `--input '{…}'` for structured inputs).\n4. How to run it detached and watch it: `-d` to detach, then\n `smithers ps`, `smithers logs <runId> -f`, `smithers inspect <runId>`.\n5. How to handle blocked states: `smithers approve <runId>` for approval gates,\n `smithers why <runId>` for signal waits, `smithers cancel <runId>` to stop.\n\nKeep it practical and short — no marketing copy. Match the style of any existing\nfiles in `{props.skillsDir}` and update rather than duplicate if one already\ncovers this workflow.\n\n## Output\n\nReturn a one-line `summary` and the `skillPath` you wrote.\n\nREQUIRED OUTPUT:\n{props.schema}\n" }, { "path": ".smithers/workflows/context-engineer.tsx", - "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Context Engineer\n// smithers-description: Turn a vague user script into a context contract, route it to skills/workflows, add backpressure, execute, and report — the concierge proxy.\n// smithers-tags: concierge, context-engineering, planning\n/** @jsxImportSource smithers-orchestrator */\nimport { createSmithers } from \"smithers-orchestrator\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport { GrillMe, grillOutputSchema } from \"../components/GrillMe\";\nimport ClassifyPrompt from \"../prompts/context-engineer-classify.mdx\";\nimport InventoryPrompt from \"../prompts/context-engineer-inventory.mdx\";\nimport RoutePrompt from \"../prompts/context-engineer-route.mdx\";\nimport BackpressurePrompt from \"../prompts/context-engineer-backpressure.mdx\";\nimport ExecutePrompt from \"../prompts/context-engineer-execute.mdx\";\nimport ReportPrompt from \"../prompts/context-engineer-report.mdx\";\n\nconst SKILLS_DIR = \".smithers/skills\";\nconst WORKFLOWS_DIR = \".smithers/workflows\";\n\n// The durable, seeded workflows the concierge can route the script to. Keep this\n// loosely in sync with the workflows actually present in .smithers/workflows/.\nconst SEEDED_WORKFLOWS = [\n \"implement\",\n \"research-plan-implement\",\n \"review\",\n \"plan\",\n \"research\",\n \"grill-me\",\n \"ralph\",\n \"debug\",\n \"audit\",\n \"create-workflow\",\n \"create-skill\",\n \"context-doctor\",\n \"backpressure-plan\",\n \"route-task\",\n \"report-slideshow\",\n \"monitor-smithers\",\n] as const;\n\nconst inputSchema = z.object({\n prompt: z\n .string()\n .default(\"Describe what you want Smithers to do, in plain English.\")\n .describe(\"The vague user script the concierge turns into a context contract and then executes.\"),\n review: z\n .boolean()\n .default(true)\n .describe(\"Pause for human approval of the context contract before any work is executed.\"),\n});\n\n// 1. The classifier's read on the script: which modes it touches, and whether it\n// earns the overhead of a durable workflow.\nconst classifySchema = z.looseObject({\n modes: z\n .array(z.string())\n .default([])\n .describe(\"The task modes the script maps onto (e.g. research, planning, implementation, debugging, report).\"),\n durable: z\n .boolean()\n .describe(\"True when the work needs ordering, crash-recovery, approvals, or loops — i.e. a real workflow.\"),\n reason: z.string().default(\"\").describe(\"One or two sentences justifying the modes + durable call.\"),\n});\n\n// 2. The context contract draft — the heart of the proxy. The inventory step\n// inspects the repo, tools, and .smithers/skills to fill this in.\nconst contractSchema = z.looseObject({\n goal: z.string().describe(\"One sentence: the outcome the script is really after.\"),\n nonGoals: z.array(z.string()).default([]).describe(\"Explicitly out of scope, to stop drift.\"),\n assumptions: z.array(z.string()).default([]).describe(\"Reasonable assumptions made to fill gaps in the script.\"),\n inputs: z\n .array(z.looseObject({ name: z.string(), source: z.string().default(\"\"), value: z.string().default(\"\") }))\n .default([])\n .describe(\"Inputs the work needs and where each comes from.\"),\n missingInputs: z.array(z.string()).default([]).describe(\"Inputs the script is missing — candidates for grilling.\"),\n availableTools: z.array(z.string()).default([]).describe(\"Tools/commands available to do the work.\"),\n availableSkills: z.array(z.string()).default([]).describe(\"Relevant skills found under .smithers/skills.\"),\n constraints: z.array(z.string()).default([]).describe(\"Hard constraints the work must respect.\"),\n risks: z.array(z.string()).default([]).describe(\"Risks or side effects to guard against.\"),\n desiredArtifacts: z.array(z.string()).default([]).describe(\"Concrete artifacts a successful run should produce.\"),\n successCriteria: z.array(z.string()).default([]).describe(\"How we know the work is done.\"),\n verificationSignals: z\n .array(z.string())\n .default([])\n .describe(\"Observable signals (tests, traces, reviews) that prove each success criterion.\"),\n});\n\n// 3. The grill output — reuses GrillMe's schema so the component can write to it.\n// Used to resolve blocking ambiguity, one question at a time.\n\n// 4. The router's decision: how to actually carry out the contracted work.\nconst routeSchema = z.looseObject({\n selectedRoute: z\n .enum([\"single_task\", \"skills\", \"workflow\", \"manual\"])\n .describe(\"How the work is carried out: a one-shot task, a set of skills, a durable workflow, or hand to a human.\"),\n selectedSkills: z.array(z.string()).default([]).describe(\"Skills the executor should load, best-first.\"),\n selectedWorkflow: z\n .string()\n .nullable()\n .default(null)\n .describe(\"If routed to a durable workflow, the single best-fit seeded workflow id; otherwise null.\"),\n durableRequired: z.boolean().default(false).describe(\"True when the route genuinely needs durable execution.\"),\n humanApprovalRequired: z.boolean().default(false).describe(\"True when a human gate is needed before side effects.\"),\n reason: z.string().default(\"\").describe(\"Why this route fits the contract and classification.\"),\n});\n\n// 5. The backpressure gate matrix — every success criterion mapped to how it is\n// verified and enforced, so the executor cannot just try-its-best and move on.\nconst backpressureSchema = z.looseObject({\n gates: z\n .array(\n z.looseObject({\n criterion: z.string().describe(\"The success criterion this gate enforces.\"),\n verificationMethod: z\n .enum([\n \"schema\",\n \"unit_test\",\n \"integration_test\",\n \"eval\",\n \"review\",\n \"approval\",\n \"trace\",\n \"manual_check\",\n ])\n .describe(\"How the criterion is checked.\"),\n gateType: z\n .enum([\"blocking\", \"warning\", \"informational\"])\n .describe(\"blocking stops the run; warning flags; informational only records.\"),\n failureAction: z.string().describe(\"What happens when this gate fails.\"),\n evidenceRequired: z\n .array(z.string())\n .default([])\n .describe(\"Concrete artifacts that prove the gate passed (logs, diffs, reports, traces).\"),\n }),\n )\n .default([])\n .describe(\"One gate per success criterion; every blocking criterion names a verification method.\"),\n summary: z.string().default(\"\").describe(\"2-3 sentence overview of the backpressure plan.\"),\n});\n\n// Durable human approval decision (matches the Approval component's output shape).\nconst approvalSchema = z.object({\n approved: z.boolean(),\n note: z.string().nullable(),\n decidedBy: z.string().nullable(),\n decidedAt: z.string().nullable(),\n});\n\n// 7. The execution step's report of what it did or dispatched.\nconst executeSchema = z.looseObject({\n summary: z.string().describe(\"What was done or dispatched this iteration.\"),\n done: z.boolean().describe(\"True when the contracted work is fully carried out.\"),\n artifacts: z.array(z.string()).default([]).describe(\"Files written, outputs produced, or workflows dispatched.\"),\n});\n\n// 8. The final HTML slideshow-style report of the whole concierge run.\nconst reportSchema = z.looseObject({\n html: z.string().describe(\"A complete, self-contained HTML slideshow report (inline CSS, no external deps).\"),\n summary: z.string().default(\"\").describe(\"One-line summary of the run for the CLI.\"),\n});\n\nconst { Workflow, Task, Sequence, Branch, Ralph, Approval, smithers, outputs } = createSmithers({\n input: inputSchema,\n classify: classifySchema,\n inventory: contractSchema,\n grill: grillOutputSchema,\n route: routeSchema,\n backpressure: backpressureSchema,\n approval: approvalSchema,\n execute: executeSchema,\n report: reportSchema,\n});\n\nexport default smithers((ctx) => {\n const review = ctx.input.review;\n\n const classify = ctx.outputMaybe(\"classify\", { nodeId: \"classify-script\" });\n const contract = ctx.outputMaybe(\"inventory\", { nodeId: \"inventory-context\" });\n const route = ctx.outputMaybe(\"route\", { nodeId: \"route\" });\n const backpressure = ctx.outputMaybe(\"backpressure\", { nodeId: \"build-backpressure\" });\n const approval = ctx.outputMaybe(\"approval\", { nodeId: \"approve-contract\" });\n\n // Grill bookkeeping: the latest answer from the one-question-at-a-time loop.\n const grills = ctx.outputs.grill ?? [];\n const lastGrill = grills.at(-1);\n const grillResolved = lastGrill?.resolved === true;\n\n // The contract is \"designed\" once it has been drafted and grilling has settled.\n const designed = contract !== undefined && backpressure !== undefined;\n const approved = !review || approval?.approved === true;\n const proceed = designed && approved;\n\n // Execute-loop bookkeeping: re-render the `until` against the latest execute output.\n const executeOutputs = ctx.outputs.execute ?? [];\n const lastExecute = executeOutputs.at(-1);\n const executed = lastExecute?.done === true;\n\n return (\n <Workflow name=\"context-engineer\">\n <Sequence>\n {/* 1 — Classify the vague script into modes + a durability call. */}\n <Task id=\"classify-script\" output={outputs.classify} agent={agents.cheapFast}>\n <ClassifyPrompt prompt={ctx.input.prompt} workflows={SEEDED_WORKFLOWS} />\n </Task>\n\n {/* 2 — Inventory the repo/tools/skills into a context contract draft. */}\n {classify ? (\n <Task\n id=\"inventory-context\"\n output={outputs.inventory}\n agent={agents.smartTool}\n heartbeatTimeoutMs={600_000}\n >\n <InventoryPrompt\n prompt={ctx.input.prompt}\n classification={classify}\n skillsDir={SKILLS_DIR}\n workflowsDir={WORKFLOWS_DIR}\n />\n </Task>\n ) : null}\n\n {/* 3 — Resolve blocking ambiguity by grilling, one question at a time,\n with a recommended answer each time. Reuses the GrillMe component. */}\n {contract ? (\n <GrillMe\n idPrefix=\"context-engineer\"\n context={`We are turning a vague user script into a context contract before executing it. Grill me only on the BLOCKING ambiguities that would change the work — prefer the contract's missingInputs and openest assumptions. Ask one question at a time with a recommended answer, and mark resolved: true once the remaining ambiguity no longer changes the plan.\\n\\n## Original script\\n${ctx.input.prompt}\\n\\n## Context contract draft\\n\\`\\`\\`json\\n${JSON.stringify(contract, null, 2)}\\n\\`\\`\\``}\n currentDraft={lastGrill ?? null}\n agent={agents.smart}\n output={outputs.grill}\n maxIterations={5}\n until={grillResolved}\n />\n ) : null}\n\n {/* 4 — Route the contracted work: single task, skills, durable workflow, or human. */}\n {contract ? (\n <Task id=\"route\" output={outputs.route} agent={agents.smart}>\n <RoutePrompt\n prompt={ctx.input.prompt}\n classification={classify}\n contract={contract}\n sharedUnderstanding={lastGrill?.sharedUnderstanding ?? null}\n workflows={SEEDED_WORKFLOWS}\n />\n </Task>\n ) : null}\n\n {/* 5 — Turn the success criteria into a backpressure gate matrix. */}\n {route ? (\n <Task id=\"build-backpressure\" output={outputs.backpressure} agent={agents.smart}>\n <BackpressurePrompt prompt={ctx.input.prompt} contract={contract} route={route} />\n </Task>\n ) : null}\n\n {/* 6 — Optional durable human approval of the whole contract before executing. */}\n <Branch\n if={review && designed}\n then={\n <Approval\n id=\"approve-contract\"\n output={outputs.approval}\n request={{\n title: `Approve context contract: ${contract?.goal ?? ctx.input.prompt}`.slice(0, 120),\n summary:\n backpressure?.summary ??\n \"Review the context contract, route, and backpressure gates before any work is executed.\",\n }}\n />\n }\n else={null}\n />\n\n {/* 7 — Execute (or dispatch) the contracted work, looping until done. */}\n {proceed ? (\n <Ralph id=\"execute:loop\" until={executed} maxIterations={3} onMaxReached=\"return-last\">\n <Task\n id=\"execute\"\n output={outputs.execute}\n agent={agents.smartTool}\n heartbeatTimeoutMs={900_000}\n >\n <ExecutePrompt\n prompt={ctx.input.prompt}\n contract={contract}\n route={route}\n backpressure={backpressure}\n previous={lastExecute ?? null}\n />\n </Task>\n </Ralph>\n ) : null}\n\n {/* 8 — Report the whole concierge run as a self-contained HTML slideshow. */}\n {proceed && executed ? (\n <Task id=\"report\" output={outputs.report} agent={agents.smart}>\n <ReportPrompt\n prompt={ctx.input.prompt}\n classification={classify}\n contract={contract}\n route={route}\n backpressure={backpressure}\n approval={approval ?? null}\n execution={lastExecute ?? null}\n sharedUnderstanding={lastGrill?.sharedUnderstanding ?? null}\n />\n </Task>\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" + "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Context Engineer\n// smithers-description: Turn a vague user script into a context contract, route it to skills/workflows, add backpressure, execute, and report — the concierge proxy.\n// smithers-tags: concierge, context-engineering, planning\n/** @jsxImportSource smthrs */\nimport { createSmithers } from \"smthrs\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport { GrillMe, grillOutputSchema } from \"../components/GrillMe\";\nimport ClassifyPrompt from \"../prompts/context-engineer-classify.mdx\";\nimport InventoryPrompt from \"../prompts/context-engineer-inventory.mdx\";\nimport RoutePrompt from \"../prompts/context-engineer-route.mdx\";\nimport BackpressurePrompt from \"../prompts/context-engineer-backpressure.mdx\";\nimport ExecutePrompt from \"../prompts/context-engineer-execute.mdx\";\nimport ReportPrompt from \"../prompts/context-engineer-report.mdx\";\n\nconst SKILLS_DIR = \".smithers/skills\";\nconst WORKFLOWS_DIR = \".smithers/workflows\";\n\n// The durable, seeded workflows the concierge can route the script to. Keep this\n// loosely in sync with the workflows actually present in .smithers/workflows/.\nconst SEEDED_WORKFLOWS = [\n \"implement\",\n \"research-plan-implement\",\n \"review\",\n \"plan\",\n \"research\",\n \"grill-me\",\n \"ralph\",\n \"debug\",\n \"audit\",\n \"create-workflow\",\n \"create-skill\",\n \"context-doctor\",\n \"backpressure-plan\",\n \"route-task\",\n \"report-slideshow\",\n \"monitor-smithers\",\n] as const;\n\nconst inputSchema = z.object({\n prompt: z\n .string()\n .default(\"Describe what you want Smithers to do, in plain English.\")\n .describe(\"The vague user script the concierge turns into a context contract and then executes.\"),\n review: z\n .boolean()\n .default(true)\n .describe(\"Pause for human approval of the context contract before any work is executed.\"),\n});\n\n// 1. The classifier's read on the script: which modes it touches, and whether it\n// earns the overhead of a durable workflow.\nconst classifySchema = z.looseObject({\n modes: z\n .array(z.string())\n .default([])\n .describe(\"The task modes the script maps onto (e.g. research, planning, implementation, debugging, report).\"),\n durable: z\n .boolean()\n .describe(\"True when the work needs ordering, crash-recovery, approvals, or loops — i.e. a real workflow.\"),\n reason: z.string().default(\"\").describe(\"One or two sentences justifying the modes + durable call.\"),\n});\n\n// 2. The context contract draft — the heart of the proxy. The inventory step\n// inspects the repo, tools, and .smithers/skills to fill this in.\nconst contractSchema = z.looseObject({\n goal: z.string().describe(\"One sentence: the outcome the script is really after.\"),\n nonGoals: z.array(z.string()).default([]).describe(\"Explicitly out of scope, to stop drift.\"),\n assumptions: z.array(z.string()).default([]).describe(\"Reasonable assumptions made to fill gaps in the script.\"),\n inputs: z\n .array(z.looseObject({ name: z.string(), source: z.string().default(\"\"), value: z.string().default(\"\") }))\n .default([])\n .describe(\"Inputs the work needs and where each comes from.\"),\n missingInputs: z.array(z.string()).default([]).describe(\"Inputs the script is missing — candidates for grilling.\"),\n availableTools: z.array(z.string()).default([]).describe(\"Tools/commands available to do the work.\"),\n availableSkills: z.array(z.string()).default([]).describe(\"Relevant skills found under .smithers/skills.\"),\n constraints: z.array(z.string()).default([]).describe(\"Hard constraints the work must respect.\"),\n risks: z.array(z.string()).default([]).describe(\"Risks or side effects to guard against.\"),\n desiredArtifacts: z.array(z.string()).default([]).describe(\"Concrete artifacts a successful run should produce.\"),\n successCriteria: z.array(z.string()).default([]).describe(\"How we know the work is done.\"),\n verificationSignals: z\n .array(z.string())\n .default([])\n .describe(\"Observable signals (tests, traces, reviews) that prove each success criterion.\"),\n});\n\n// 3. The grill output — reuses GrillMe's schema so the component can write to it.\n// Used to resolve blocking ambiguity, one question at a time.\n\n// 4. The router's decision: how to actually carry out the contracted work.\nconst routeSchema = z.looseObject({\n selectedRoute: z\n .enum([\"single_task\", \"skills\", \"workflow\", \"manual\"])\n .describe(\"How the work is carried out: a one-shot task, a set of skills, a durable workflow, or hand to a human.\"),\n selectedSkills: z.array(z.string()).default([]).describe(\"Skills the executor should load, best-first.\"),\n selectedWorkflow: z\n .string()\n .nullable()\n .default(null)\n .describe(\"If routed to a durable workflow, the single best-fit seeded workflow id; otherwise null.\"),\n durableRequired: z.boolean().default(false).describe(\"True when the route genuinely needs durable execution.\"),\n humanApprovalRequired: z.boolean().default(false).describe(\"True when a human gate is needed before side effects.\"),\n reason: z.string().default(\"\").describe(\"Why this route fits the contract and classification.\"),\n});\n\n// 5. The backpressure gate matrix — every success criterion mapped to how it is\n// verified and enforced, so the executor cannot just try-its-best and move on.\nconst backpressureSchema = z.looseObject({\n gates: z\n .array(\n z.looseObject({\n criterion: z.string().describe(\"The success criterion this gate enforces.\"),\n verificationMethod: z\n .enum([\n \"schema\",\n \"unit_test\",\n \"integration_test\",\n \"eval\",\n \"review\",\n \"approval\",\n \"trace\",\n \"manual_check\",\n ])\n .describe(\"How the criterion is checked.\"),\n gateType: z\n .enum([\"blocking\", \"warning\", \"informational\"])\n .describe(\"blocking stops the run; warning flags; informational only records.\"),\n failureAction: z.string().describe(\"What happens when this gate fails.\"),\n evidenceRequired: z\n .array(z.string())\n .default([])\n .describe(\"Concrete artifacts that prove the gate passed (logs, diffs, reports, traces).\"),\n }),\n )\n .default([])\n .describe(\"One gate per success criterion; every blocking criterion names a verification method.\"),\n summary: z.string().default(\"\").describe(\"2-3 sentence overview of the backpressure plan.\"),\n});\n\n// Durable human approval decision (matches the Approval component's output shape).\nconst approvalSchema = z.object({\n approved: z.boolean(),\n note: z.string().nullable(),\n decidedBy: z.string().nullable(),\n decidedAt: z.string().nullable(),\n});\n\n// 7. The execution step's report of what it did or dispatched.\nconst executeSchema = z.looseObject({\n summary: z.string().describe(\"What was done or dispatched this iteration.\"),\n done: z.boolean().describe(\"True when the contracted work is fully carried out.\"),\n artifacts: z.array(z.string()).default([]).describe(\"Files written, outputs produced, or workflows dispatched.\"),\n});\n\n// 8. The final HTML slideshow-style report of the whole concierge run.\nconst reportSchema = z.looseObject({\n html: z.string().describe(\"A complete, self-contained HTML slideshow report (inline CSS, no external deps).\"),\n summary: z.string().default(\"\").describe(\"One-line summary of the run for the CLI.\"),\n});\n\nconst { Workflow, Task, Sequence, Branch, Ralph, Approval, smithers, outputs } = createSmithers({\n input: inputSchema,\n classify: classifySchema,\n inventory: contractSchema,\n grill: grillOutputSchema,\n route: routeSchema,\n backpressure: backpressureSchema,\n approval: approvalSchema,\n execute: executeSchema,\n report: reportSchema,\n});\n\nexport default smithers((ctx) => {\n const review = ctx.input.review;\n\n const classify = ctx.outputMaybe(\"classify\", { nodeId: \"classify-script\" });\n const contract = ctx.outputMaybe(\"inventory\", { nodeId: \"inventory-context\" });\n const route = ctx.outputMaybe(\"route\", { nodeId: \"route\" });\n const backpressure = ctx.outputMaybe(\"backpressure\", { nodeId: \"build-backpressure\" });\n const approval = ctx.outputMaybe(\"approval\", { nodeId: \"approve-contract\" });\n\n // Grill bookkeeping: the latest answer from the one-question-at-a-time loop.\n const grills = ctx.outputs.grill ?? [];\n const lastGrill = grills.at(-1);\n const grillResolved = lastGrill?.resolved === true;\n\n // The contract is \"designed\" once it has been drafted and grilling has settled.\n const designed = contract !== undefined && backpressure !== undefined;\n const approved = !review || approval?.approved === true;\n const proceed = designed && approved;\n\n // Execute-loop bookkeeping: re-render the `until` against the latest execute output.\n const executeOutputs = ctx.outputs.execute ?? [];\n const lastExecute = executeOutputs.at(-1);\n const executed = lastExecute?.done === true;\n\n return (\n <Workflow name=\"context-engineer\">\n <Sequence>\n {/* 1 — Classify the vague script into modes + a durability call. */}\n <Task id=\"classify-script\" output={outputs.classify} agent={agents.cheapFast}>\n <ClassifyPrompt prompt={ctx.input.prompt} workflows={SEEDED_WORKFLOWS} />\n </Task>\n\n {/* 2 — Inventory the repo/tools/skills into a context contract draft. */}\n {classify ? (\n <Task\n id=\"inventory-context\"\n output={outputs.inventory}\n agent={agents.smartTool}\n heartbeatTimeoutMs={600_000}\n >\n <InventoryPrompt\n prompt={ctx.input.prompt}\n classification={classify}\n skillsDir={SKILLS_DIR}\n workflowsDir={WORKFLOWS_DIR}\n />\n </Task>\n ) : null}\n\n {/* 3 — Resolve blocking ambiguity by grilling, one question at a time,\n with a recommended answer each time. Reuses the GrillMe component. */}\n {contract ? (\n <GrillMe\n idPrefix=\"context-engineer\"\n context={`We are turning a vague user script into a context contract before executing it. Grill me only on the BLOCKING ambiguities that would change the work — prefer the contract's missingInputs and openest assumptions. Ask one question at a time with a recommended answer, and mark resolved: true once the remaining ambiguity no longer changes the plan.\\n\\n## Original script\\n${ctx.input.prompt}\\n\\n## Context contract draft\\n\\`\\`\\`json\\n${JSON.stringify(contract, null, 2)}\\n\\`\\`\\``}\n currentDraft={lastGrill ?? null}\n agent={agents.smart}\n output={outputs.grill}\n maxIterations={5}\n until={grillResolved}\n />\n ) : null}\n\n {/* 4 — Route the contracted work: single task, skills, durable workflow, or human. */}\n {contract ? (\n <Task id=\"route\" output={outputs.route} agent={agents.smart}>\n <RoutePrompt\n prompt={ctx.input.prompt}\n classification={classify}\n contract={contract}\n sharedUnderstanding={lastGrill?.sharedUnderstanding ?? null}\n workflows={SEEDED_WORKFLOWS}\n />\n </Task>\n ) : null}\n\n {/* 5 — Turn the success criteria into a backpressure gate matrix. */}\n {route ? (\n <Task id=\"build-backpressure\" output={outputs.backpressure} agent={agents.smart}>\n <BackpressurePrompt prompt={ctx.input.prompt} contract={contract} route={route} />\n </Task>\n ) : null}\n\n {/* 6 — Optional durable human approval of the whole contract before executing. */}\n <Branch\n if={review && designed}\n then={\n <Approval\n id=\"approve-contract\"\n output={outputs.approval}\n request={{\n title: `Approve context contract: ${contract?.goal ?? ctx.input.prompt}`.slice(0, 120),\n summary:\n backpressure?.summary ??\n \"Review the context contract, route, and backpressure gates before any work is executed.\",\n }}\n />\n }\n else={null}\n />\n\n {/* 7 — Execute (or dispatch) the contracted work, looping until done. */}\n {proceed ? (\n <Ralph id=\"execute:loop\" until={executed} maxIterations={3} onMaxReached=\"return-last\">\n <Task\n id=\"execute\"\n output={outputs.execute}\n agent={agents.smartTool}\n heartbeatTimeoutMs={900_000}\n >\n <ExecutePrompt\n prompt={ctx.input.prompt}\n contract={contract}\n route={route}\n backpressure={backpressure}\n previous={lastExecute ?? null}\n />\n </Task>\n </Ralph>\n ) : null}\n\n {/* 8 — Report the whole concierge run as a self-contained HTML slideshow. */}\n {proceed && executed ? (\n <Task id=\"report\" output={outputs.report} agent={agents.smart}>\n <ReportPrompt\n prompt={ctx.input.prompt}\n classification={classify}\n contract={contract}\n route={route}\n backpressure={backpressure}\n approval={approval ?? null}\n execution={lastExecute ?? null}\n sharedUnderstanding={lastGrill?.sharedUnderstanding ?? null}\n />\n </Task>\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" }, { "path": ".smithers/prompts/context-engineer-classify.mdx", @@ -45,7 +45,7 @@ export const GENERATED_SEEDED_FILES = [ }, { "path": ".smithers/prompts/context-engineer-inventory.mdx", - "contents": "# Inventory the context into a contract\n\nYou are the **context contract** step of the Context Engineer. A vague user\nscript just arrived. Before anyone routes or executes it, your job is to turn it\ninto an explicit, grounded **context contract** — the shared understanding of\nwhat is really being asked, what is available to do it, and how we will know it\nworked.\n\nYou have shell + file tools. **Actually inspect the environment** to ground the\ncontract in reality, not guesses. Then report the contract.\n\n## The script\n\n{props.prompt}\n\n## Classification (from the intake step)\n\n```json\n{JSON.stringify(props.classification, null, 2)}\n```\n\nLocal skills directory: {props.skillsDir}\nLocal workflows directory: {props.workflowsDir}\n\n## Inspect before you fill in the contract\n\n- Look at the repo: read `README`/`CLAUDE.md`/top-level layout to learn what this\n project is and what conventions apply.\n- Inventory tools: which commands and capabilities are actually available to do\n this work (build/test runners, CLIs, `bunx smithers-orchestrator ...`).\n- Inventory skills: list `{props.skillsDir}` and note the skills relevant to this\n script in `availableSkills`.\n- Inventory workflows: glance at `{props.workflowsDir}` for durable workflows the\n router might reuse.\n\nUse real findings — a `goal` and `availableSkills` you confirmed beat ones you\nimagined.\n\n## Fill in the contract\n\nProduce a context contract with these fields:\n\n- `goal` — one sentence: the outcome the script is really after.\n- `nonGoals` — explicitly out of scope, to stop drift.\n- `assumptions` — reasonable assumptions you made to fill gaps in the script.\n- `inputs` — inputs the work needs, each with a `name`, a `source` (where it comes\n from), and a `value` if already known.\n- `missingInputs` — inputs the script is missing. Be honest: these become the\n questions a later grilling step asks the user.\n- `availableTools` — tools/commands you confirmed are available.\n- `availableSkills` — relevant skills found under `{props.skillsDir}`.\n- `constraints` — hard constraints the work must respect (style rules, \"only jj\",\n \"don't modify file X\", etc.).\n- `risks` — risks or side effects to guard against.\n- `desiredArtifacts` — concrete artifacts a successful run should produce.\n- `successCriteria` — how we know the work is done.\n- `verificationSignals` — observable signals (tests, traces, reviews, manual\n checks) that prove each success criterion.\n\nBe concrete and minimal. Do NOT execute the user's actual task here — only build\nthe contract that describes it.\n\nREQUIRED OUTPUT:\n{props.schema}\n" + "contents": "# Inventory the context into a contract\n\nYou are the **context contract** step of the Context Engineer. A vague user\nscript just arrived. Before anyone routes or executes it, your job is to turn it\ninto an explicit, grounded **context contract** — the shared understanding of\nwhat is really being asked, what is available to do it, and how we will know it\nworked.\n\nYou have shell + file tools. **Actually inspect the environment** to ground the\ncontract in reality, not guesses. Then report the contract.\n\n## The script\n\n{props.prompt}\n\n## Classification (from the intake step)\n\n```json\n{JSON.stringify(props.classification, null, 2)}\n```\n\nLocal skills directory: {props.skillsDir}\nLocal workflows directory: {props.workflowsDir}\n\n## Inspect before you fill in the contract\n\n- Look at the repo: read `README`/`CLAUDE.md`/top-level layout to learn what this\n project is and what conventions apply.\n- Inventory tools: which commands and capabilities are actually available to do\n this work (build/test runners, CLIs, `bunx smthrs ...`).\n- Inventory skills: list `{props.skillsDir}` and note the skills relevant to this\n script in `availableSkills`.\n- Inventory workflows: glance at `{props.workflowsDir}` for durable workflows the\n router might reuse.\n\nUse real findings — a `goal` and `availableSkills` you confirmed beat ones you\nimagined.\n\n## Fill in the contract\n\nProduce a context contract with these fields:\n\n- `goal` — one sentence: the outcome the script is really after.\n- `nonGoals` — explicitly out of scope, to stop drift.\n- `assumptions` — reasonable assumptions you made to fill gaps in the script.\n- `inputs` — inputs the work needs, each with a `name`, a `source` (where it comes\n from), and a `value` if already known.\n- `missingInputs` — inputs the script is missing. Be honest: these become the\n questions a later grilling step asks the user.\n- `availableTools` — tools/commands you confirmed are available.\n- `availableSkills` — relevant skills found under `{props.skillsDir}`.\n- `constraints` — hard constraints the work must respect (style rules, \"only jj\",\n \"don't modify file X\", etc.).\n- `risks` — risks or side effects to guard against.\n- `desiredArtifacts` — concrete artifacts a successful run should produce.\n- `successCriteria` — how we know the work is done.\n- `verificationSignals` — observable signals (tests, traces, reviews, manual\n checks) that prove each success criterion.\n\nBe concrete and minimal. Do NOT execute the user's actual task here — only build\nthe contract that describes it.\n\nREQUIRED OUTPUT:\n{props.schema}\n" }, { "path": ".smithers/prompts/context-engineer-route.mdx", @@ -57,7 +57,7 @@ export const GENERATED_SEEDED_FILES = [ }, { "path": ".smithers/prompts/context-engineer-execute.mdx", - "contents": "# Execute the contracted work\n\nYou are the **executor** of the Context Engineer. The context contract is\napproved, the route is chosen, and the backpressure gates are defined. Carry out\nthe work — or dispatch it along the chosen route — honoring every gate. You have\nshell + file tools.\n\n## The script\n\n{props.prompt}\n\n## Context contract\n\n```json\n{JSON.stringify(props.contract, null, 2)}\n```\n\n## Chosen route\n\n```json\n{JSON.stringify(props.route, null, 2)}\n```\n\n## Backpressure gates you must satisfy\n\n```json\n{JSON.stringify(props.backpressure, null, 2)}\n```\n\n## Previous iteration (may be null)\n\nThis task runs in a loop until `done` is true. If a prior iteration ran, here is\nwhat it reported — continue from there rather than restarting.\n\n{props.previous ? \"```json\\n\" + JSON.stringify(props.previous, null, 2) + \"\\n```\" : \"(this is the first execution iteration)\"}\n\n## Do the work along the route\n\n- If the route is `single_task` or `skills`: do the work directly with your\n tools, loading the route's `selectedSkills` where helpful.\n- If the route is `workflow`: dispatch the chosen `selectedWorkflow` (e.g.\n `bunx smithers-orchestrator workflow run <id> --input '{...}'`) and report what\n you dispatched and how to watch it.\n- If the route is `manual`: do not force the work — summarize exactly what a human\n must do and mark the relevant gate's evidence as pending.\n\nFor every `blocking` gate, produce the `evidenceRequired` and run the\n`verificationMethod` (run the tests, capture the trace, etc.). Do not claim\n`done: true` until every blocking gate is satisfied with real evidence.\n\n## Output\n\n- `summary` — what you did or dispatched this iteration.\n- `done` — true only when the contracted work is fully carried out and every\n blocking gate is satisfied; false to run another iteration.\n- `artifacts` — files written, outputs produced, or workflows dispatched.\n\nREQUIRED OUTPUT:\n{props.schema}\n" + "contents": "# Execute the contracted work\n\nYou are the **executor** of the Context Engineer. The context contract is\napproved, the route is chosen, and the backpressure gates are defined. Carry out\nthe work — or dispatch it along the chosen route — honoring every gate. You have\nshell + file tools.\n\n## The script\n\n{props.prompt}\n\n## Context contract\n\n```json\n{JSON.stringify(props.contract, null, 2)}\n```\n\n## Chosen route\n\n```json\n{JSON.stringify(props.route, null, 2)}\n```\n\n## Backpressure gates you must satisfy\n\n```json\n{JSON.stringify(props.backpressure, null, 2)}\n```\n\n## Previous iteration (may be null)\n\nThis task runs in a loop until `done` is true. If a prior iteration ran, here is\nwhat it reported — continue from there rather than restarting.\n\n{props.previous ? \"```json\\n\" + JSON.stringify(props.previous, null, 2) + \"\\n```\" : \"(this is the first execution iteration)\"}\n\n## Do the work along the route\n\n- If the route is `single_task` or `skills`: do the work directly with your\n tools, loading the route's `selectedSkills` where helpful.\n- If the route is `workflow`: dispatch the chosen `selectedWorkflow` (e.g.\n `bunx smthrs workflow run <id> --input '{...}'`) and report what\n you dispatched and how to watch it.\n- If the route is `manual`: do not force the work — summarize exactly what a human\n must do and mark the relevant gate's evidence as pending.\n\nFor every `blocking` gate, produce the `evidenceRequired` and run the\n`verificationMethod` (run the tests, capture the trace, etc.). Do not claim\n`done: true` until every blocking gate is satisfied with real evidence.\n\n## Output\n\n- `summary` — what you did or dispatched this iteration.\n- `done` — true only when the contracted work is fully carried out and every\n blocking gate is satisfied; false to run another iteration.\n- `artifacts` — files written, outputs produced, or workflows dispatched.\n\nREQUIRED OUTPUT:\n{props.schema}\n" }, { "path": ".smithers/prompts/context-engineer-report.mdx", @@ -65,7 +65,7 @@ export const GENERATED_SEEDED_FILES = [ }, { "path": ".smithers/workflows/route-task.tsx", - "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Route Task\n// smithers-description: Classify a plain-English script and either run it as a single task or recommend the right durable workflow.\n// smithers-tags: concierge, routing\n/** @jsxImportSource smithers-orchestrator */\nimport { createSmithers } from \"smithers-orchestrator\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport ClassifyPrompt from \"../prompts/route-task-classify.mdx\";\nimport ExecutePrompt from \"../prompts/route-task-execute.mdx\";\nimport RecommendPrompt from \"../prompts/route-task-recommend.mdx\";\n\n// The seeded, durable workflows the concierge can hand off to. Keep this in sync\n// with the workflows actually present in .smithers/workflows/.\nconst SEEDED_WORKFLOWS = [\n \"implement\",\n \"research-plan-implement\",\n \"review\",\n \"plan\",\n \"research\",\n \"grill-me\",\n \"ralph\",\n \"debug\",\n \"audit\",\n \"create-workflow\",\n \"context-doctor\",\n \"monitor-smithers\",\n] as const;\n\nconst inputSchema = z.object({\n prompt: z\n .string()\n .default(\"Describe the task you want Smithers to handle, in plain English.\")\n .describe(\"Plain-English description of the task to route — run directly or hand to a durable workflow.\"),\n});\n\n// 1. The classifier's verdict: what kind of task this is, and whether it needs a\n// durable workflow (ordering, crash-recovery, approvals, loops) or can run as\n// a single one-shot task.\nconst classifySchema = z.looseObject({\n mode: z\n .enum([\n \"single_task\",\n \"research\",\n \"planning\",\n \"implementation\",\n \"debugging\",\n \"report\",\n \"data_extraction\",\n \"multi_step\",\n ])\n .describe(\"The task mode the script maps onto.\"),\n durable: z\n .boolean()\n .describe(\"True when the task needs ordering, crash-recovery, approvals, or loops — i.e. a real workflow.\"),\n recommendedWorkflow: z\n .string()\n .nullable()\n .default(null)\n .describe(\"If durable, the best-fit seeded workflow id; otherwise null.\"),\n reason: z.string().describe(\"One or two sentences justifying the mode + durable call.\"),\n});\n\n// 2a. Non-durable path: the work was actually done in a single task.\nconst executeSchema = z.looseObject({\n summary: z.string().describe(\"What was done, in a sentence or two.\"),\n done: z.boolean().describe(\"True when the task was fully completed in this single step.\"),\n});\n\n// 2b. Durable path: a pointer at the right seeded workflow to run instead.\nconst recommendSchema = z.looseObject({\n recommendedWorkflow: z.string().describe(\"The single best-fit seeded workflow id to run.\"),\n why: z.string().describe(\"Why this workflow fits the task — what durable behaviour it provides.\"),\n alternativeWorkflows: z\n .array(z.string())\n .default([])\n .describe(\"Other seeded workflows that could also fit, best-first.\"),\n});\n\nconst { Workflow, Task, Sequence, Branch, smithers, outputs } = createSmithers({\n input: inputSchema,\n classify: classifySchema,\n execute: executeSchema,\n recommend: recommendSchema,\n});\n\nexport default smithers((ctx) => {\n const classify = ctx.outputMaybe(\"classify\", { nodeId: \"classify\" });\n\n // Gate the two paths on the classifier's verdict. Only one branch runs.\n const classified = classify !== undefined;\n const durable = classify?.durable === true;\n\n return (\n <Workflow name=\"route-task\">\n <Sequence>\n {/* 1 — Classify the script into a mode and decide whether it needs a durable workflow. */}\n <Task id=\"classify\" output={outputs.classify} agent={agents.cheapFast}>\n <ClassifyPrompt prompt={ctx.input.prompt} workflows={SEEDED_WORKFLOWS} />\n </Task>\n\n {/* 2 — Branch: run it directly (non-durable) or recommend a durable workflow. */}\n {classified ? (\n <Branch\n if={durable}\n then={\n <Task id=\"recommend\" output={outputs.recommend} agent={agents.smart}>\n <RecommendPrompt\n prompt={ctx.input.prompt}\n classification={classify}\n workflows={SEEDED_WORKFLOWS}\n />\n </Task>\n }\n else={\n <Task id=\"execute\" output={outputs.execute} agent={agents.smartTool}>\n <ExecutePrompt prompt={ctx.input.prompt} classification={classify} />\n </Task>\n }\n />\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" + "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Route Task\n// smithers-description: Classify a plain-English script and either run it as a single task or recommend the right durable workflow.\n// smithers-tags: concierge, routing\n/** @jsxImportSource smthrs */\nimport { createSmithers } from \"smthrs\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport ClassifyPrompt from \"../prompts/route-task-classify.mdx\";\nimport ExecutePrompt from \"../prompts/route-task-execute.mdx\";\nimport RecommendPrompt from \"../prompts/route-task-recommend.mdx\";\n\n// The seeded, durable workflows the concierge can hand off to. Keep this in sync\n// with the workflows actually present in .smithers/workflows/.\nconst SEEDED_WORKFLOWS = [\n \"implement\",\n \"research-plan-implement\",\n \"review\",\n \"plan\",\n \"research\",\n \"grill-me\",\n \"ralph\",\n \"debug\",\n \"audit\",\n \"create-workflow\",\n \"context-doctor\",\n \"monitor-smithers\",\n] as const;\n\nconst inputSchema = z.object({\n prompt: z\n .string()\n .default(\"Describe the task you want Smithers to handle, in plain English.\")\n .describe(\"Plain-English description of the task to route — run directly or hand to a durable workflow.\"),\n});\n\n// 1. The classifier's verdict: what kind of task this is, and whether it needs a\n// durable workflow (ordering, crash-recovery, approvals, loops) or can run as\n// a single one-shot task.\nconst classifySchema = z.looseObject({\n mode: z\n .enum([\n \"single_task\",\n \"research\",\n \"planning\",\n \"implementation\",\n \"debugging\",\n \"report\",\n \"data_extraction\",\n \"multi_step\",\n ])\n .describe(\"The task mode the script maps onto.\"),\n durable: z\n .boolean()\n .describe(\"True when the task needs ordering, crash-recovery, approvals, or loops — i.e. a real workflow.\"),\n recommendedWorkflow: z\n .string()\n .nullable()\n .default(null)\n .describe(\"If durable, the best-fit seeded workflow id; otherwise null.\"),\n reason: z.string().describe(\"One or two sentences justifying the mode + durable call.\"),\n});\n\n// 2a. Non-durable path: the work was actually done in a single task.\nconst executeSchema = z.looseObject({\n summary: z.string().describe(\"What was done, in a sentence or two.\"),\n done: z.boolean().describe(\"True when the task was fully completed in this single step.\"),\n});\n\n// 2b. Durable path: a pointer at the right seeded workflow to run instead.\nconst recommendSchema = z.looseObject({\n recommendedWorkflow: z.string().describe(\"The single best-fit seeded workflow id to run.\"),\n why: z.string().describe(\"Why this workflow fits the task — what durable behaviour it provides.\"),\n alternativeWorkflows: z\n .array(z.string())\n .default([])\n .describe(\"Other seeded workflows that could also fit, best-first.\"),\n});\n\nconst { Workflow, Task, Sequence, Branch, smithers, outputs } = createSmithers({\n input: inputSchema,\n classify: classifySchema,\n execute: executeSchema,\n recommend: recommendSchema,\n});\n\nexport default smithers((ctx) => {\n const classify = ctx.outputMaybe(\"classify\", { nodeId: \"classify\" });\n\n // Gate the two paths on the classifier's verdict. Only one branch runs.\n const classified = classify !== undefined;\n const durable = classify?.durable === true;\n\n return (\n <Workflow name=\"route-task\">\n <Sequence>\n {/* 1 — Classify the script into a mode and decide whether it needs a durable workflow. */}\n <Task id=\"classify\" output={outputs.classify} agent={agents.cheapFast}>\n <ClassifyPrompt prompt={ctx.input.prompt} workflows={SEEDED_WORKFLOWS} />\n </Task>\n\n {/* 2 — Branch: run it directly (non-durable) or recommend a durable workflow. */}\n {classified ? (\n <Branch\n if={durable}\n then={\n <Task id=\"recommend\" output={outputs.recommend} agent={agents.smart}>\n <RecommendPrompt\n prompt={ctx.input.prompt}\n classification={classify}\n workflows={SEEDED_WORKFLOWS}\n />\n </Task>\n }\n else={\n <Task id=\"execute\" output={outputs.execute} agent={agents.smartTool}>\n <ExecutePrompt prompt={ctx.input.prompt} classification={classify} />\n </Task>\n }\n />\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" }, { "path": ".smithers/prompts/route-task-classify.mdx", @@ -81,7 +81,7 @@ export const GENERATED_SEEDED_FILES = [ }, { "path": ".smithers/workflows/create-skill.tsx", - "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Create Skill\n// smithers-description: Author a new agent skill (SKILL.md + supporting files) from a plain-English ask.\n// smithers-tags: authoring, skills\n/** @jsxImportSource smithers-orchestrator */\nimport { createSmithers } from \"smithers-orchestrator\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport ClarifyPrompt from \"../prompts/create-skill-clarify.mdx\";\nimport DesignPrompt from \"../prompts/create-skill-design.mdx\";\nimport ScaffoldPrompt from \"../prompts/create-skill-scaffold.mdx\";\nimport DocumentPrompt from \"../prompts/create-skill-document.mdx\";\n\nconst SKILLS_DIR = \".smithers/skills\";\n\nconst inputSchema = z.object({\n prompt: z\n .string()\n .default(\"Describe the agent skill you want to create, in plain English.\")\n .describe(\"Plain-English description of the agent skill you want Smithers to author.\"),\n name: z\n .string()\n .nullable()\n .default(null)\n .describe(\"Desired kebab-case skill id. Null lets the clarify/design steps choose one.\"),\n review: z\n .boolean()\n .default(true)\n .describe(\"Pause for human approval of the design before any files are written.\"),\n});\n\n// 1. The freeform ask, turned into a structured skill spec.\nconst skillSpecSchema = z.looseObject({\n name: z.string().describe(\"Proposed kebab-case skill id.\"),\n purpose: z.string().describe(\"One sentence: what the skill equips an agent to do.\"),\n whenToUse: z\n .string()\n .describe(\"Trigger phrasing — when an agent should reach for this skill.\"),\n capabilities: z\n .array(z.string())\n .default([])\n .describe(\"The concrete things an agent can do once this skill is in context.\"),\n inputs: z\n .array(z.object({ name: z.string(), type: z.string(), purpose: z.string() }))\n .default([])\n .describe(\"Parameters / context the skill expects when invoked.\"),\n openQuestions: z\n .array(z.string())\n .default([])\n .describe(\"Anything ambiguous the author should resolve.\"),\n});\n\n// 2. The concrete design the scaffolder turns into a real SKILL.md.\nconst designSchema = z.looseObject({\n skillName: z.string().describe(\"Final kebab-case skill id.\"),\n frontmatter: z\n .object({\n name: z.string(),\n description: z\n .string()\n .describe(\"One line: what it does and when to use it — goes in YAML frontmatter.\"),\n })\n .describe(\"YAML frontmatter for the SKILL.md file.\"),\n sections: z\n .array(z.object({ heading: z.string(), purpose: z.string() }))\n .default([])\n .describe(\"Ordered body sections the SKILL.md should contain.\"),\n supportingFiles: z\n .array(z.object({ path: z.string(), purpose: z.string() }))\n .default([])\n .describe(\"Optional extra files (scripts, references) the skill ships alongside SKILL.md.\"),\n rationale: z.string().default(\"\"),\n});\n\n// Durable human approval decision (matches the Approval component's output shape).\nconst approvalSchema = z.object({\n approved: z.boolean(),\n note: z.string().nullable(),\n decidedBy: z.string().nullable(),\n decidedAt: z.string().nullable(),\n});\n\n// 3. Files written by the scaffold agent.\nconst scaffoldSchema = z.looseObject({\n summary: z.string(),\n skillName: z.string(),\n filesWritten: z\n .array(\n z.object({\n path: z.string(),\n kind: z.enum([\"skill\", \"supporting\", \"other\"]).default(\"skill\"),\n }),\n )\n .default([]),\n});\n\n// 4. Agent-facing summary of what was created.\nconst documentSchema = z.looseObject({\n summary: z.string(),\n skillPath: z.string().nullable().default(null),\n});\n\nconst { Workflow, Task, Sequence, Branch, Approval, smithers, outputs } = createSmithers({\n input: inputSchema,\n clarify: skillSpecSchema,\n design: designSchema,\n approval: approvalSchema,\n scaffold: scaffoldSchema,\n document: documentSchema,\n});\n\nexport default smithers((ctx) => {\n const review = ctx.input.review;\n\n const clarify = ctx.outputMaybe(\"clarify\", { nodeId: \"clarify\" });\n const design = ctx.outputMaybe(\"design\", { nodeId: \"design\" });\n const approval = ctx.outputMaybe(\"approval\", { nodeId: \"approve-design\" });\n const scaffold = ctx.outputMaybe(\"scaffold\", { nodeId: \"scaffold\" });\n\n const designed = design !== undefined;\n const approved = !review || approval?.approved === true;\n const proceed = designed && approved;\n\n // The name we scaffold against, resolved as soon as it is known.\n const skillName =\n scaffold?.skillName ?? design?.skillName ?? clarify?.name ?? ctx.input.name ?? \"new-skill\";\n\n return (\n <Workflow name=\"create-skill\">\n <Sequence>\n {/* 1 — Turn the freeform ask into a structured skill spec. */}\n <Task id=\"clarify\" output={outputs.clarify} agent={agents.smart}>\n <ClarifyPrompt request={ctx.input.prompt} name={ctx.input.name} />\n </Task>\n\n {/* 2 — Design the concrete SKILL.md from the spec. */}\n {clarify ? (\n <Task id=\"design\" output={outputs.design} agent={agents.smart}>\n <DesignPrompt spec={clarify} skillsDir={SKILLS_DIR} />\n </Task>\n ) : null}\n\n {/* 3 — Optional durable human approval of the design before writing files. */}\n <Branch\n if={review && designed}\n then={\n <Approval\n id=\"approve-design\"\n output={outputs.approval}\n request={{\n title: `Approve design for skill \"${skillName}\"`,\n summary:\n design?.frontmatter?.description ??\n \"Review the proposed skill design before scaffolding.\",\n }}\n />\n }\n else={null}\n />\n\n {/* 4 — Scaffold the real SKILL.md (and any supporting files). */}\n {proceed ? (\n <Task\n id=\"scaffold\"\n output={outputs.scaffold}\n agent={agents.smartTool}\n heartbeatTimeoutMs={900_000}\n >\n <ScaffoldPrompt design={design} skillsDir={SKILLS_DIR} />\n </Task>\n ) : null}\n\n {/* 5 — Document what was created so the human knows how to use it. */}\n {proceed && scaffold ? (\n <Task id=\"document\" output={outputs.document} agent={agents.cheapFast}>\n <DocumentPrompt skillName={skillName} design={design} scaffold={scaffold} />\n </Task>\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" + "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Create Skill\n// smithers-description: Author a new agent skill (SKILL.md + supporting files) from a plain-English ask.\n// smithers-tags: authoring, skills\n/** @jsxImportSource smthrs */\nimport { createSmithers } from \"smthrs\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport ClarifyPrompt from \"../prompts/create-skill-clarify.mdx\";\nimport DesignPrompt from \"../prompts/create-skill-design.mdx\";\nimport ScaffoldPrompt from \"../prompts/create-skill-scaffold.mdx\";\nimport DocumentPrompt from \"../prompts/create-skill-document.mdx\";\n\nconst SKILLS_DIR = \".smithers/skills\";\n\nconst inputSchema = z.object({\n prompt: z\n .string()\n .default(\"Describe the agent skill you want to create, in plain English.\")\n .describe(\"Plain-English description of the agent skill you want Smithers to author.\"),\n name: z\n .string()\n .nullable()\n .default(null)\n .describe(\"Desired kebab-case skill id. Null lets the clarify/design steps choose one.\"),\n review: z\n .boolean()\n .default(true)\n .describe(\"Pause for human approval of the design before any files are written.\"),\n});\n\n// 1. The freeform ask, turned into a structured skill spec.\nconst skillSpecSchema = z.looseObject({\n name: z.string().describe(\"Proposed kebab-case skill id.\"),\n purpose: z.string().describe(\"One sentence: what the skill equips an agent to do.\"),\n whenToUse: z\n .string()\n .describe(\"Trigger phrasing — when an agent should reach for this skill.\"),\n capabilities: z\n .array(z.string())\n .default([])\n .describe(\"The concrete things an agent can do once this skill is in context.\"),\n inputs: z\n .array(z.object({ name: z.string(), type: z.string(), purpose: z.string() }))\n .default([])\n .describe(\"Parameters / context the skill expects when invoked.\"),\n openQuestions: z\n .array(z.string())\n .default([])\n .describe(\"Anything ambiguous the author should resolve.\"),\n});\n\n// 2. The concrete design the scaffolder turns into a real SKILL.md.\nconst designSchema = z.looseObject({\n skillName: z.string().describe(\"Final kebab-case skill id.\"),\n frontmatter: z\n .object({\n name: z.string(),\n description: z\n .string()\n .describe(\"One line: what it does and when to use it — goes in YAML frontmatter.\"),\n })\n .describe(\"YAML frontmatter for the SKILL.md file.\"),\n sections: z\n .array(z.object({ heading: z.string(), purpose: z.string() }))\n .default([])\n .describe(\"Ordered body sections the SKILL.md should contain.\"),\n supportingFiles: z\n .array(z.object({ path: z.string(), purpose: z.string() }))\n .default([])\n .describe(\"Optional extra files (scripts, references) the skill ships alongside SKILL.md.\"),\n rationale: z.string().default(\"\"),\n});\n\n// Durable human approval decision (matches the Approval component's output shape).\nconst approvalSchema = z.object({\n approved: z.boolean(),\n note: z.string().nullable(),\n decidedBy: z.string().nullable(),\n decidedAt: z.string().nullable(),\n});\n\n// 3. Files written by the scaffold agent.\nconst scaffoldSchema = z.looseObject({\n summary: z.string(),\n skillName: z.string(),\n filesWritten: z\n .array(\n z.object({\n path: z.string(),\n kind: z.enum([\"skill\", \"supporting\", \"other\"]).default(\"skill\"),\n }),\n )\n .default([]),\n});\n\n// 4. Agent-facing summary of what was created.\nconst documentSchema = z.looseObject({\n summary: z.string(),\n skillPath: z.string().nullable().default(null),\n});\n\nconst { Workflow, Task, Sequence, Branch, Approval, smithers, outputs } = createSmithers({\n input: inputSchema,\n clarify: skillSpecSchema,\n design: designSchema,\n approval: approvalSchema,\n scaffold: scaffoldSchema,\n document: documentSchema,\n});\n\nexport default smithers((ctx) => {\n const review = ctx.input.review;\n\n const clarify = ctx.outputMaybe(\"clarify\", { nodeId: \"clarify\" });\n const design = ctx.outputMaybe(\"design\", { nodeId: \"design\" });\n const approval = ctx.outputMaybe(\"approval\", { nodeId: \"approve-design\" });\n const scaffold = ctx.outputMaybe(\"scaffold\", { nodeId: \"scaffold\" });\n\n const designed = design !== undefined;\n const approved = !review || approval?.approved === true;\n const proceed = designed && approved;\n\n // The name we scaffold against, resolved as soon as it is known.\n const skillName =\n scaffold?.skillName ?? design?.skillName ?? clarify?.name ?? ctx.input.name ?? \"new-skill\";\n\n return (\n <Workflow name=\"create-skill\">\n <Sequence>\n {/* 1 — Turn the freeform ask into a structured skill spec. */}\n <Task id=\"clarify\" output={outputs.clarify} agent={agents.smart}>\n <ClarifyPrompt request={ctx.input.prompt} name={ctx.input.name} />\n </Task>\n\n {/* 2 — Design the concrete SKILL.md from the spec. */}\n {clarify ? (\n <Task id=\"design\" output={outputs.design} agent={agents.smart}>\n <DesignPrompt spec={clarify} skillsDir={SKILLS_DIR} />\n </Task>\n ) : null}\n\n {/* 3 — Optional durable human approval of the design before writing files. */}\n <Branch\n if={review && designed}\n then={\n <Approval\n id=\"approve-design\"\n output={outputs.approval}\n request={{\n title: `Approve design for skill \"${skillName}\"`,\n summary:\n design?.frontmatter?.description ??\n \"Review the proposed skill design before scaffolding.\",\n }}\n />\n }\n else={null}\n />\n\n {/* 4 — Scaffold the real SKILL.md (and any supporting files). */}\n {proceed ? (\n <Task\n id=\"scaffold\"\n output={outputs.scaffold}\n agent={agents.smartTool}\n heartbeatTimeoutMs={900_000}\n >\n <ScaffoldPrompt design={design} skillsDir={SKILLS_DIR} />\n </Task>\n ) : null}\n\n {/* 5 — Document what was created so the human knows how to use it. */}\n {proceed && scaffold ? (\n <Task id=\"document\" output={outputs.document} agent={agents.cheapFast}>\n <DocumentPrompt skillName={skillName} design={design} scaffold={scaffold} />\n </Task>\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" }, { "path": ".smithers/prompts/create-skill-clarify.mdx", @@ -101,11 +101,11 @@ export const GENERATED_SEEDED_FILES = [ }, { "path": ".smithers/workflows/extract-skill.tsx", - "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Extract Skill\n// smithers-description: After a run, harvest a reusable skill or workflow and durable memory from the pattern.\n// smithers-tags: reuse, skills, memory\n/** @jsxImportSource smithers-orchestrator */\nimport { createSmithers } from \"smithers-orchestrator\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport AnalyzePrompt from \"../prompts/extract-skill-analyze.mdx\";\nimport ProposePrompt from \"../prompts/extract-skill-propose.mdx\";\nimport ScaffoldSkillPrompt from \"../prompts/extract-skill-scaffold-skill.mdx\";\n\nconst SKILLS_DIR = \".smithers/skills\";\n\nconst inputSchema = z.object({\n runId: z\n .string()\n .nullable()\n .default(null)\n .describe(\"Run to harvest from. Null analyses the prompt/context alone, with no run state.\"),\n prompt: z\n .string()\n .default(\"Describe the pattern or run you want to harvest into a reusable skill, workflow, or memory.\")\n .describe(\"What to harvest, plus any context the analysis should ground itself in.\"),\n});\n\n// 1. Read the run/pattern and decide what is worth keeping.\nconst analyzeSchema = z.looseObject({\n repeatedPattern: z\n .string()\n .describe(\"One paragraph: the durable, repeatable pattern observed in the run/context.\"),\n reusableAsSkill: z\n .boolean()\n .describe(\"True when the pattern is best captured as an agent skill doc the workers can reuse.\"),\n reusableAsWorkflow: z\n .boolean()\n .describe(\"True when the pattern is better captured as a whole new Smithers workflow.\"),\n memoryFacts: z\n .array(z.string())\n .default([])\n .describe(\"Durable, run-independent facts worth remembering across future runs.\"),\n});\n\n// 2. Turn the analysis into concrete proposals.\nconst proposeSchema = z.looseObject({\n proposedSkill: z\n .object({\n name: z.string().describe(\"kebab-case skill id, used as the file name.\"),\n description: z.string().describe(\"One line: what it does and when to reach for it.\"),\n body: z.string().describe(\"Markdown body of the skill doc, ready to write to disk.\"),\n })\n .nullable()\n .default(null),\n proposedWorkflow: z\n .object({\n id: z.string().describe(\"kebab-case workflow id.\"),\n sketch: z.string().describe(\"A short prose sketch of the workflow graph and its stages.\"),\n })\n .nullable()\n .default(null),\n memoryToPersist: z\n .array(z.string())\n .default([])\n .describe(\"Final, polished memory facts to persist.\"),\n});\n\n// 3. The skill file actually written to disk when the pattern is reusable as a skill.\nconst scaffoldSkillSchema = z.looseObject({\n summary: z.string(),\n skillPath: z.string().nullable().default(null),\n});\n\nconst { Workflow, Task, Sequence, Branch, smithers, outputs } = createSmithers({\n input: inputSchema,\n analyze: analyzeSchema,\n propose: proposeSchema,\n scaffoldSkill: scaffoldSkillSchema,\n});\n\nexport default smithers((ctx) => {\n const analyze = ctx.outputMaybe(\"analyze\", { nodeId: \"analyze\" });\n const propose = ctx.outputMaybe(\"propose\", { nodeId: \"propose\" });\n\n // Only scaffold a skill file when the analysis says the pattern is skill-shaped\n // and the proposal actually produced a skill to write.\n const reusableAsSkill = analyze?.reusableAsSkill === true;\n const hasProposedSkill = propose?.proposedSkill != null;\n\n return (\n <Workflow name=\"extract-skill\">\n <Sequence>\n {/* 1 — Read the run (if given) and decide what is worth harvesting. */}\n <Task\n id=\"analyze\"\n output={outputs.analyze}\n agent={agents.smartTool}\n heartbeatTimeoutMs={600_000}\n >\n <AnalyzePrompt prompt={ctx.input.prompt} runId={ctx.input.runId} skillsDir={SKILLS_DIR} />\n </Task>\n\n {/* 2 — Turn the analysis into a concrete skill/workflow proposal + memory. */}\n {analyze ? (\n <Task id=\"propose\" output={outputs.propose} agent={agents.smart}>\n <ProposePrompt analysis={analyze} prompt={ctx.input.prompt} skillsDir={SKILLS_DIR} />\n </Task>\n ) : null}\n\n {/* 3 — If the pattern is reusable as a skill, write the skill file to disk. */}\n {propose ? (\n <Branch\n if={reusableAsSkill && hasProposedSkill}\n then={\n <Task\n id=\"scaffold-skill\"\n output={outputs.scaffoldSkill}\n agent={agents.smartTool}\n heartbeatTimeoutMs={600_000}\n >\n <ScaffoldSkillPrompt skill={propose?.proposedSkill} skillsDir={SKILLS_DIR} />\n </Task>\n }\n else={null}\n />\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" + "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Extract Skill\n// smithers-description: After a run, harvest a reusable skill or workflow and durable memory from the pattern.\n// smithers-tags: reuse, skills, memory\n/** @jsxImportSource smthrs */\nimport { createSmithers } from \"smthrs\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport AnalyzePrompt from \"../prompts/extract-skill-analyze.mdx\";\nimport ProposePrompt from \"../prompts/extract-skill-propose.mdx\";\nimport ScaffoldSkillPrompt from \"../prompts/extract-skill-scaffold-skill.mdx\";\n\nconst SKILLS_DIR = \".smithers/skills\";\n\nconst inputSchema = z.object({\n runId: z\n .string()\n .nullable()\n .default(null)\n .describe(\"Run to harvest from. Null analyses the prompt/context alone, with no run state.\"),\n prompt: z\n .string()\n .default(\"Describe the pattern or run you want to harvest into a reusable skill, workflow, or memory.\")\n .describe(\"What to harvest, plus any context the analysis should ground itself in.\"),\n});\n\n// 1. Read the run/pattern and decide what is worth keeping.\nconst analyzeSchema = z.looseObject({\n repeatedPattern: z\n .string()\n .describe(\"One paragraph: the durable, repeatable pattern observed in the run/context.\"),\n reusableAsSkill: z\n .boolean()\n .describe(\"True when the pattern is best captured as an agent skill doc the workers can reuse.\"),\n reusableAsWorkflow: z\n .boolean()\n .describe(\"True when the pattern is better captured as a whole new Smithers workflow.\"),\n memoryFacts: z\n .array(z.string())\n .default([])\n .describe(\"Durable, run-independent facts worth remembering across future runs.\"),\n});\n\n// 2. Turn the analysis into concrete proposals.\nconst proposeSchema = z.looseObject({\n proposedSkill: z\n .object({\n name: z.string().describe(\"kebab-case skill id, used as the file name.\"),\n description: z.string().describe(\"One line: what it does and when to reach for it.\"),\n body: z.string().describe(\"Markdown body of the skill doc, ready to write to disk.\"),\n })\n .nullable()\n .default(null),\n proposedWorkflow: z\n .object({\n id: z.string().describe(\"kebab-case workflow id.\"),\n sketch: z.string().describe(\"A short prose sketch of the workflow graph and its stages.\"),\n })\n .nullable()\n .default(null),\n memoryToPersist: z\n .array(z.string())\n .default([])\n .describe(\"Final, polished memory facts to persist.\"),\n});\n\n// 3. The skill file actually written to disk when the pattern is reusable as a skill.\nconst scaffoldSkillSchema = z.looseObject({\n summary: z.string(),\n skillPath: z.string().nullable().default(null),\n});\n\nconst { Workflow, Task, Sequence, Branch, smithers, outputs } = createSmithers({\n input: inputSchema,\n analyze: analyzeSchema,\n propose: proposeSchema,\n scaffoldSkill: scaffoldSkillSchema,\n});\n\nexport default smithers((ctx) => {\n const analyze = ctx.outputMaybe(\"analyze\", { nodeId: \"analyze\" });\n const propose = ctx.outputMaybe(\"propose\", { nodeId: \"propose\" });\n\n // Only scaffold a skill file when the analysis says the pattern is skill-shaped\n // and the proposal actually produced a skill to write.\n const reusableAsSkill = analyze?.reusableAsSkill === true;\n const hasProposedSkill = propose?.proposedSkill != null;\n\n return (\n <Workflow name=\"extract-skill\">\n <Sequence>\n {/* 1 — Read the run (if given) and decide what is worth harvesting. */}\n <Task\n id=\"analyze\"\n output={outputs.analyze}\n agent={agents.smartTool}\n heartbeatTimeoutMs={600_000}\n >\n <AnalyzePrompt prompt={ctx.input.prompt} runId={ctx.input.runId} skillsDir={SKILLS_DIR} />\n </Task>\n\n {/* 2 — Turn the analysis into a concrete skill/workflow proposal + memory. */}\n {analyze ? (\n <Task id=\"propose\" output={outputs.propose} agent={agents.smart}>\n <ProposePrompt analysis={analyze} prompt={ctx.input.prompt} skillsDir={SKILLS_DIR} />\n </Task>\n ) : null}\n\n {/* 3 — If the pattern is reusable as a skill, write the skill file to disk. */}\n {propose ? (\n <Branch\n if={reusableAsSkill && hasProposedSkill}\n then={\n <Task\n id=\"scaffold-skill\"\n output={outputs.scaffoldSkill}\n agent={agents.smartTool}\n heartbeatTimeoutMs={600_000}\n >\n <ScaffoldSkillPrompt skill={propose?.proposedSkill} skillsDir={SKILLS_DIR} />\n </Task>\n }\n else={null}\n />\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" }, { "path": ".smithers/prompts/extract-skill-analyze.mdx", - "contents": "# Analyze the pattern to harvest\n\nYou are the analysis step of an \"extract a reusable skill\" pipeline. A run (or a\ndescribed pattern) just happened, and we want to harvest whatever is durable and\nreusable from it. Do NOT write any files yet — only produce the structured\nanalysis.\n\n## What to harvest\n\n{props.prompt}\n\n## Run to read\n\nRun id: {props.runId ?? \"(none given — analyse the prompt/context above on its own)\"}\n\nIf a run id is given (the `Run id` above), you have file and shell tools — inspect\nthe real run state before deciding, substituting that id for `RUN_ID` below. Read\nit, do not guess:\n\n- `bunx smithers-orchestrator inspect RUN_ID` for the full run state (steps, agents, outputs).\n- `bunx smithers-orchestrator events RUN_ID --limit 200` for the event history.\n- `bunx smithers-orchestrator node NODE_ID --run-id RUN_ID` for a specific node's tool calls and output.\n\nThese are read-only. Do NOT start, cancel, fork, or graph any run — another step\nowns that. If no run id is given, work purely from the prompt and context above.\n\n## What to decide\n\nA harvest can land in three places, and they are not mutually exclusive:\n\n1. **A skill** — a short agent-facing markdown doc under `{props.skillsDir}` that\n future worker agents read. Best when the pattern is \"here is how to do X well\".\n2. **A whole workflow** — a new Smithers `.tsx` graph. Best when the pattern is a\n multi-step, repeatable process worth running end-to-end (clarify, loop, gate).\n3. **Memory** — durable, run-independent facts worth remembering across future\n runs (a convention, a gotcha, a decision). Avoid run-specific trivia.\n\nProduce:\n\n- **repeatedPattern** — one paragraph naming the durable, repeatable pattern.\n- **reusableAsSkill** — `true` when a skill doc is the right home for it.\n- **reusableAsWorkflow** — `true` when a new workflow is the right home for it.\n- **memoryFacts** — the durable facts worth persisting (may be empty).\n\nBe decisive and conservative: only mark something reusable when you can name the\nconcrete, repeatable shape. The next step turns this into proposals.\n\nREQUIRED OUTPUT:\n{props.schema}\n" + "contents": "# Analyze the pattern to harvest\n\nYou are the analysis step of an \"extract a reusable skill\" pipeline. A run (or a\ndescribed pattern) just happened, and we want to harvest whatever is durable and\nreusable from it. Do NOT write any files yet — only produce the structured\nanalysis.\n\n## What to harvest\n\n{props.prompt}\n\n## Run to read\n\nRun id: {props.runId ?? \"(none given — analyse the prompt/context above on its own)\"}\n\nIf a run id is given (the `Run id` above), you have file and shell tools — inspect\nthe real run state before deciding, substituting that id for `RUN_ID` below. Read\nit, do not guess:\n\n- `bunx smthrs inspect RUN_ID` for the full run state (steps, agents, outputs).\n- `bunx smthrs events RUN_ID --limit 200` for the event history.\n- `bunx smthrs node NODE_ID --run-id RUN_ID` for a specific node's tool calls and output.\n\nThese are read-only. Do NOT start, cancel, fork, or graph any run — another step\nowns that. If no run id is given, work purely from the prompt and context above.\n\n## What to decide\n\nA harvest can land in three places, and they are not mutually exclusive:\n\n1. **A skill** — a short agent-facing markdown doc under `{props.skillsDir}` that\n future worker agents read. Best when the pattern is \"here is how to do X well\".\n2. **A whole workflow** — a new Smithers `.tsx` graph. Best when the pattern is a\n multi-step, repeatable process worth running end-to-end (clarify, loop, gate).\n3. **Memory** — durable, run-independent facts worth remembering across future\n runs (a convention, a gotcha, a decision). Avoid run-specific trivia.\n\nProduce:\n\n- **repeatedPattern** — one paragraph naming the durable, repeatable pattern.\n- **reusableAsSkill** — `true` when a skill doc is the right home for it.\n- **reusableAsWorkflow** — `true` when a new workflow is the right home for it.\n- **memoryFacts** — the durable facts worth persisting (may be empty).\n\nBe decisive and conservative: only mark something reusable when you can name the\nconcrete, repeatable shape. The next step turns this into proposals.\n\nREQUIRED OUTPUT:\n{props.schema}\n" }, { "path": ".smithers/prompts/extract-skill-propose.mdx", @@ -117,7 +117,7 @@ export const GENERATED_SEEDED_FILES = [ }, { "path": ".smithers/workflows/monitor-smithers.tsx", - "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Monitor Smithers\n// smithers-description: Watchdog over Smithers runs: detect stuck, blocked, failed, or over-budget runs and escalate.\n// smithers-tags: ops, monitoring\n/** @jsxImportSource smithers-orchestrator */\nimport { $ } from \"bun\";\nimport { createSmithers } from \"smithers-orchestrator\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport ClassifyPrompt from \"../prompts/monitor-smithers-classify.mdx\";\nimport TriagePrompt from \"../prompts/monitor-smithers-triage.mdx\";\n\nconst inputSchema = z.object({\n staleMinutes: z\n .number()\n .default(15)\n .describe(\"A run with no recent activity past this many minutes is treated as stale/stuck.\"),\n});\n\n// 1. The raw snapshot of currently-known runs, gathered by shelling out to `ps`.\nconst runSchema = z.looseObject({\n runId: z.string(),\n status: z.string(),\n ageMinutes: z.number().default(0),\n lastEvent: z.string().nullable().default(null),\n});\n\nconst pollSchema = z.looseObject({\n runs: z.array(runSchema).default([]),\n summary: z.string(),\n});\n\n// 2. The same runs, sorted into health buckets by a cheap/fast agent.\nconst classifySchema = z.looseObject({\n buckets: z.looseObject({\n healthy: z.array(z.string()).default([]),\n stuck: z.array(z.string()).default([]),\n blocked: z.array(z.string()).default([]),\n failed: z.array(z.string()).default([]),\n overBudget: z.array(z.string()).default([]),\n }),\n summary: z.string(),\n});\n\n// 3. Concrete escalation actions for every non-healthy run.\nconst triageSchema = z.looseObject({\n actions: z\n .array(\n z.object({\n runId: z.string(),\n problem: z.string(),\n recommendedAction: z.string(),\n }),\n )\n .default([]),\n digest: z.string(),\n});\n\nconst { Workflow, Task, Sequence, Branch, smithers, outputs } = createSmithers({\n input: inputSchema,\n poll: pollSchema,\n classify: classifySchema,\n triage: triageSchema,\n});\n\n// Pull the live run table from the CLI. Deterministic, no agent: shell out, parse\n// JSON, and normalise into the watchdog's run shape. Any failure (CLI missing,\n// non-zero exit, bad JSON) degrades to an empty list rather than throwing.\nasync function pollRuns(staleMinutes: number) {\n const res = await $`bunx smithers-orchestrator ps --format json --all`.nothrow().quiet();\n if (res.exitCode !== 0) {\n return { runs: [], summary: \"Could not read runs from `smithers ps` (non-zero exit).\" };\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(res.stdout.toString());\n } catch {\n return { runs: [], summary: \"Could not parse `smithers ps --format json` output.\" };\n }\n\n const rawList = Array.isArray(parsed)\n ? parsed\n : Array.isArray((parsed as { runs?: unknown }).runs)\n ? (parsed as { runs: unknown[] }).runs\n : [];\n\n const runs = rawList.map((row) => {\n const r = row as Record<string, unknown>;\n const runId = String(r.id ?? r.runId ?? \"unknown\");\n const status = String(r.status ?? r.dbStatus ?? r.state ?? \"unknown\");\n const startedRaw = r.started ?? r.startedAt;\n const ageMatch = typeof startedRaw === \"string\" ? startedRaw.match(/(\\d+)\\s*([smhd])/) : null;\n let ageMinutes = 0;\n if (ageMatch) {\n const n = Number(ageMatch[1]);\n const unit = ageMatch[2];\n ageMinutes = unit === \"m\" ? n : unit === \"h\" ? n * 60 : unit === \"d\" ? n * 1440 : Math.round(n / 60);\n }\n const step = r.step ?? r.lastEvent;\n const lastEvent = step != null && String(step) !== \"—\" ? String(step) : null;\n return { runId, status, ageMinutes, lastEvent };\n });\n\n const staleCount = runs.filter((run) => run.ageMinutes >= staleMinutes).length;\n return {\n runs,\n summary: `${runs.length} run(s) seen; ${staleCount} past the ${staleMinutes}m stale threshold.`,\n };\n}\n\n/**\n * A watchdog over Smithers itself. It polls the live run table, has a cheap agent\n * sort runs into health buckets, and — only when something is wrong — has a smart\n * agent produce concrete escalation actions (which gate to clear, which run to\n * triage). Healthy fleets short-circuit before the expensive triage step.\n */\nexport default smithers((ctx) => {\n const staleMinutes = ctx.input.staleMinutes ?? 15;\n\n const poll = ctx.outputMaybe(\"poll\", { nodeId: \"poll\" });\n const classify = ctx.outputMaybe(\"classify\", { nodeId: \"classify\" });\n\n // Anything not in the `healthy` bucket needs escalation.\n const buckets = classify?.buckets;\n const unhealthy = buckets\n ? [...buckets.stuck, ...buckets.blocked, ...buckets.failed, ...buckets.overBudget]\n : [];\n const hasProblems = unhealthy.length > 0;\n\n return (\n <Workflow name=\"monitor-smithers\">\n <Sequence>\n {/* 1 — Deterministically read the live run table from the CLI. */}\n <Task id=\"poll\" output={outputs.poll}>\n {async () => await pollRuns(staleMinutes)}\n </Task>\n\n {/* 2 — Sort the runs into health buckets. Cheap/fast: pure classification. */}\n {poll ? (\n <Task id=\"classify\" output={outputs.classify} agent={agents.cheapFast}>\n <ClassifyPrompt runs={poll.runs} summary={poll.summary} staleMinutes={staleMinutes} />\n </Task>\n ) : null}\n\n {/* 3 — Only escalate when something is actually wrong. */}\n <Branch\n if={classify !== undefined && hasProblems}\n then={\n <Task id=\"triage\" output={outputs.triage} agent={agents.smart}>\n <TriagePrompt buckets={classify?.buckets} runs={poll?.runs ?? []} summary={classify?.summary} />\n </Task>\n }\n else={null}\n />\n </Sequence>\n </Workflow>\n );\n});\n" + "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Monitor Smithers\n// smithers-description: Watchdog over Smithers runs: detect stuck, blocked, failed, or over-budget runs and escalate.\n// smithers-tags: ops, monitoring\n/** @jsxImportSource smthrs */\nimport { $ } from \"bun\";\nimport { createSmithers } from \"smthrs\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport ClassifyPrompt from \"../prompts/monitor-smithers-classify.mdx\";\nimport TriagePrompt from \"../prompts/monitor-smithers-triage.mdx\";\n\nconst inputSchema = z.object({\n staleMinutes: z\n .number()\n .default(15)\n .describe(\"A run with no recent activity past this many minutes is treated as stale/stuck.\"),\n});\n\n// 1. The raw snapshot of currently-known runs, gathered by shelling out to `ps`.\nconst runSchema = z.looseObject({\n runId: z.string(),\n status: z.string(),\n ageMinutes: z.number().default(0),\n lastEvent: z.string().nullable().default(null),\n});\n\nconst pollSchema = z.looseObject({\n runs: z.array(runSchema).default([]),\n summary: z.string(),\n});\n\n// 2. The same runs, sorted into health buckets by a cheap/fast agent.\nconst classifySchema = z.looseObject({\n buckets: z.looseObject({\n healthy: z.array(z.string()).default([]),\n stuck: z.array(z.string()).default([]),\n blocked: z.array(z.string()).default([]),\n failed: z.array(z.string()).default([]),\n overBudget: z.array(z.string()).default([]),\n }),\n summary: z.string(),\n});\n\n// 3. Concrete escalation actions for every non-healthy run.\nconst triageSchema = z.looseObject({\n actions: z\n .array(\n z.object({\n runId: z.string(),\n problem: z.string(),\n recommendedAction: z.string(),\n }),\n )\n .default([]),\n digest: z.string(),\n});\n\nconst { Workflow, Task, Sequence, Branch, smithers, outputs } = createSmithers({\n input: inputSchema,\n poll: pollSchema,\n classify: classifySchema,\n triage: triageSchema,\n});\n\n// Pull the live run table from the CLI. Deterministic, no agent: shell out, parse\n// JSON, and normalise into the watchdog's run shape. Any failure (CLI missing,\n// non-zero exit, bad JSON) degrades to an empty list rather than throwing.\nasync function pollRuns(staleMinutes: number) {\n const res = await $`bunx smthrs ps --format json --all`.nothrow().quiet();\n if (res.exitCode !== 0) {\n return { runs: [], summary: \"Could not read runs from `smithers ps` (non-zero exit).\" };\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(res.stdout.toString());\n } catch {\n return { runs: [], summary: \"Could not parse `smithers ps --format json` output.\" };\n }\n\n const rawList = Array.isArray(parsed)\n ? parsed\n : Array.isArray((parsed as { runs?: unknown }).runs)\n ? (parsed as { runs: unknown[] }).runs\n : [];\n\n const runs = rawList.map((row) => {\n const r = row as Record<string, unknown>;\n const runId = String(r.id ?? r.runId ?? \"unknown\");\n const status = String(r.status ?? r.dbStatus ?? r.state ?? \"unknown\");\n const startedRaw = r.started ?? r.startedAt;\n const ageMatch = typeof startedRaw === \"string\" ? startedRaw.match(/(\\d+)\\s*([smhd])/) : null;\n let ageMinutes = 0;\n if (ageMatch) {\n const n = Number(ageMatch[1]);\n const unit = ageMatch[2];\n ageMinutes = unit === \"m\" ? n : unit === \"h\" ? n * 60 : unit === \"d\" ? n * 1440 : Math.round(n / 60);\n }\n const step = r.step ?? r.lastEvent;\n const lastEvent = step != null && String(step) !== \"—\" ? String(step) : null;\n return { runId, status, ageMinutes, lastEvent };\n });\n\n const staleCount = runs.filter((run) => run.ageMinutes >= staleMinutes).length;\n return {\n runs,\n summary: `${runs.length} run(s) seen; ${staleCount} past the ${staleMinutes}m stale threshold.`,\n };\n}\n\n/**\n * A watchdog over Smithers itself. It polls the live run table, has a cheap agent\n * sort runs into health buckets, and — only when something is wrong — has a smart\n * agent produce concrete escalation actions (which gate to clear, which run to\n * triage). Healthy fleets short-circuit before the expensive triage step.\n */\nexport default smithers((ctx) => {\n const staleMinutes = ctx.input.staleMinutes ?? 15;\n\n const poll = ctx.outputMaybe(\"poll\", { nodeId: \"poll\" });\n const classify = ctx.outputMaybe(\"classify\", { nodeId: \"classify\" });\n\n // Anything not in the `healthy` bucket needs escalation.\n const buckets = classify?.buckets;\n const unhealthy = buckets\n ? [...buckets.stuck, ...buckets.blocked, ...buckets.failed, ...buckets.overBudget]\n : [];\n const hasProblems = unhealthy.length > 0;\n\n return (\n <Workflow name=\"monitor-smithers\">\n <Sequence>\n {/* 1 — Deterministically read the live run table from the CLI. */}\n <Task id=\"poll\" output={outputs.poll}>\n {async () => await pollRuns(staleMinutes)}\n </Task>\n\n {/* 2 — Sort the runs into health buckets. Cheap/fast: pure classification. */}\n {poll ? (\n <Task id=\"classify\" output={outputs.classify} agent={agents.cheapFast}>\n <ClassifyPrompt runs={poll.runs} summary={poll.summary} staleMinutes={staleMinutes} />\n </Task>\n ) : null}\n\n {/* 3 — Only escalate when something is actually wrong. */}\n <Branch\n if={classify !== undefined && hasProblems}\n then={\n <Task id=\"triage\" output={outputs.triage} agent={agents.smart}>\n <TriagePrompt buckets={classify?.buckets} runs={poll?.runs ?? []} summary={classify?.summary} />\n </Task>\n }\n else={null}\n />\n </Sequence>\n </Workflow>\n );\n});\n" }, { "path": ".smithers/prompts/monitor-smithers-classify.mdx", @@ -129,7 +129,7 @@ export const GENERATED_SEEDED_FILES = [ }, { "path": ".smithers/workflows/triage-run.tsx", - "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Triage Run\n// smithers-description: Diagnose one failed or stuck Smithers run: pull events/logs, find the root cause, propose a fix/rewind/retry.\n// smithers-tags: ops, debugging\n/** @jsxImportSource smithers-orchestrator */\nimport { $ } from \"bun\";\nimport { createSmithers } from \"smithers-orchestrator\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport DiagnosePrompt from \"../prompts/triage-run-diagnose.mdx\";\nimport RecommendPrompt from \"../prompts/triage-run-recommend.mdx\";\n\nconst inputSchema = z.object({\n runId: z\n .string()\n .describe(\"The id of the failed or stuck Smithers run to triage.\"),\n});\n\n// 1. Deterministic evidence pulled straight from the run's state + event log.\nconst gatherSchema = z.looseObject({\n state: z\n .string()\n .describe(\"The run's overall status (running | paused | failed | completed | unknown).\"),\n failingNodes: z\n .array(z.object({ id: z.string(), reason: z.string().default(\"\") }))\n .default([])\n .describe(\"Nodes that errored, are stuck, or are blocking progress.\"),\n lastEvents: z\n .array(z.string())\n .default([])\n .describe(\"The tail of the run's event log, most recent last.\"),\n summary: z\n .string()\n .describe(\"One line describing what the run state + events show.\"),\n});\n\n// 2. The agent's root-cause read of the gathered evidence.\nconst diagnoseSchema = z.looseObject({\n rootCauseHypothesis: z\n .string()\n .describe(\"The single most likely reason the run failed or stalled.\"),\n evidence: z\n .array(z.string())\n .default([])\n .describe(\"Concrete observations from state/events that support the hypothesis.\"),\n confidence: z\n .enum([\"low\", \"medium\", \"high\"])\n .default(\"medium\")\n .describe(\"How strongly the evidence supports the hypothesis.\"),\n});\n\n// 3. The recommended next move, with the exact command to run.\nconst recommendSchema = z.looseObject({\n recommendedAction: z\n .enum([\"fix\", \"rewind\", \"retry\", \"escalate\"])\n .describe(\"fix code, rewind to an earlier frame, retry the failing task, or escalate to a human.\"),\n command: z\n .string()\n .describe(\"The exact CLI command to run next (e.g. a smithers rewind / retry-task invocation).\"),\n rationale: z\n .string()\n .describe(\"Why this action over the alternatives, grounded in the diagnosis.\"),\n});\n\nconst { Workflow, Task, Sequence, smithers, outputs } = createSmithers({\n input: inputSchema,\n gather: gatherSchema,\n diagnose: diagnoseSchema,\n recommend: recommendSchema,\n});\n\nconst MAX_EVENT_LINES = 60;\n\nfunction tailLines(text: string, max: number): string[] {\n return text\n .split(\"\\n\")\n .map((line) => line.trimEnd())\n .filter((line) => line.length > 0)\n .slice(-max);\n}\n\nexport default smithers((ctx) => {\n const runId = ctx.input.runId;\n\n // Gate each AI stage on the previous one's persisted output so a resumed run\n // re-renders from exactly where it left off.\n const gather = ctx.outputMaybe(\"gather\", { nodeId: \"gather\" });\n const diagnose = ctx.outputMaybe(\"diagnose\", { nodeId: \"diagnose\" });\n\n return (\n <Workflow name=\"triage-run\">\n <Sequence>\n {/* 1 — Deterministically pull run state + the recent event log. */}\n <Task id=\"gather\" output={outputs.gather}>\n {async () => {\n const inspectRes = await $`bunx smithers-orchestrator inspect ${runId} --json`\n .nothrow()\n .quiet();\n const eventsRes = await $`bunx smithers-orchestrator events ${runId}`\n .nothrow()\n .quiet();\n\n const inspectText = inspectRes.stdout?.toString() ?? \"\";\n const eventsText = `${eventsRes.stdout?.toString() ?? \"\"}\\n${eventsRes.stderr?.toString() ?? \"\"}`;\n\n let state = \"unknown\";\n const failingNodes: Array<{ id: string; reason: string }> = [];\n\n try {\n const parsed = JSON.parse(inspectText) as Record<string, unknown>;\n const rawState = parsed.state ?? parsed.status;\n if (typeof rawState === \"string\") state = rawState;\n\n const nodes = parsed.nodes ?? parsed.steps;\n if (Array.isArray(nodes)) {\n for (const node of nodes) {\n if (node && typeof node === \"object\") {\n const n = node as Record<string, unknown>;\n const nodeState = typeof n.state === \"string\" ? n.state : typeof n.status === \"string\" ? n.status : \"\";\n if (nodeState === \"failed\" || nodeState === \"error\" || nodeState === \"stuck\") {\n const id = typeof n.id === \"string\" ? n.id : typeof n.nodeId === \"string\" ? n.nodeId : \"(unknown)\";\n const reason = typeof n.error === \"string\" ? n.error : typeof n.reason === \"string\" ? n.reason : nodeState;\n failingNodes.push({ id, reason });\n }\n }\n }\n }\n } catch {\n // inspect did not return parseable JSON; leave defaults and rely on events.\n }\n\n const lastEvents = tailLines(eventsText, MAX_EVENT_LINES);\n const inspectOk = inspectRes.exitCode === 0 && state !== \"unknown\";\n\n const summary = inspectOk\n ? `Run ${runId} is \"${state}\" with ${failingNodes.length} failing/stuck node(s) and ${lastEvents.length} recent event line(s).`\n : `Could not read full state for run ${runId}; triaging from ${lastEvents.length} recent event line(s).`;\n\n return { state, failingNodes, lastEvents, summary };\n }}\n </Task>\n\n {/* 2 — Agent reads the evidence and names the most likely root cause. */}\n {gather ? (\n <Task id=\"diagnose\" output={outputs.diagnose} agent={agents.smart}>\n <DiagnosePrompt runId={runId} evidence={gather} />\n </Task>\n ) : null}\n\n {/* 3 — Agent proposes the concrete next action + the exact command. */}\n {gather && diagnose ? (\n <Task id=\"recommend\" output={outputs.recommend} agent={agents.smart}>\n <RecommendPrompt runId={runId} evidence={gather} diagnosis={diagnose} />\n </Task>\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" + "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Triage Run\n// smithers-description: Diagnose one failed or stuck Smithers run: pull events/logs, find the root cause, propose a fix/rewind/retry.\n// smithers-tags: ops, debugging\n/** @jsxImportSource smthrs */\nimport { $ } from \"bun\";\nimport { createSmithers } from \"smthrs\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport DiagnosePrompt from \"../prompts/triage-run-diagnose.mdx\";\nimport RecommendPrompt from \"../prompts/triage-run-recommend.mdx\";\n\nconst inputSchema = z.object({\n runId: z\n .string()\n .describe(\"The id of the failed or stuck Smithers run to triage.\"),\n});\n\n// 1. Deterministic evidence pulled straight from the run's state + event log.\nconst gatherSchema = z.looseObject({\n state: z\n .string()\n .describe(\"The run's overall status (running | paused | failed | completed | unknown).\"),\n failingNodes: z\n .array(z.object({ id: z.string(), reason: z.string().default(\"\") }))\n .default([])\n .describe(\"Nodes that errored, are stuck, or are blocking progress.\"),\n lastEvents: z\n .array(z.string())\n .default([])\n .describe(\"The tail of the run's event log, most recent last.\"),\n summary: z\n .string()\n .describe(\"One line describing what the run state + events show.\"),\n});\n\n// 2. The agent's root-cause read of the gathered evidence.\nconst diagnoseSchema = z.looseObject({\n rootCauseHypothesis: z\n .string()\n .describe(\"The single most likely reason the run failed or stalled.\"),\n evidence: z\n .array(z.string())\n .default([])\n .describe(\"Concrete observations from state/events that support the hypothesis.\"),\n confidence: z\n .enum([\"low\", \"medium\", \"high\"])\n .default(\"medium\")\n .describe(\"How strongly the evidence supports the hypothesis.\"),\n});\n\n// 3. The recommended next move, with the exact command to run.\nconst recommendSchema = z.looseObject({\n recommendedAction: z\n .enum([\"fix\", \"rewind\", \"retry\", \"escalate\"])\n .describe(\"fix code, rewind to an earlier frame, retry the failing task, or escalate to a human.\"),\n command: z\n .string()\n .describe(\"The exact CLI command to run next (e.g. a smithers rewind / retry-task invocation).\"),\n rationale: z\n .string()\n .describe(\"Why this action over the alternatives, grounded in the diagnosis.\"),\n});\n\nconst { Workflow, Task, Sequence, smithers, outputs } = createSmithers({\n input: inputSchema,\n gather: gatherSchema,\n diagnose: diagnoseSchema,\n recommend: recommendSchema,\n});\n\nconst MAX_EVENT_LINES = 60;\n\nfunction tailLines(text: string, max: number): string[] {\n return text\n .split(\"\\n\")\n .map((line) => line.trimEnd())\n .filter((line) => line.length > 0)\n .slice(-max);\n}\n\nexport default smithers((ctx) => {\n const runId = ctx.input.runId;\n\n // Gate each AI stage on the previous one's persisted output so a resumed run\n // re-renders from exactly where it left off.\n const gather = ctx.outputMaybe(\"gather\", { nodeId: \"gather\" });\n const diagnose = ctx.outputMaybe(\"diagnose\", { nodeId: \"diagnose\" });\n\n return (\n <Workflow name=\"triage-run\">\n <Sequence>\n {/* 1 — Deterministically pull run state + the recent event log. */}\n <Task id=\"gather\" output={outputs.gather}>\n {async () => {\n const inspectRes = await $`bunx smthrs inspect ${runId} --json`\n .nothrow()\n .quiet();\n const eventsRes = await $`bunx smthrs events ${runId}`\n .nothrow()\n .quiet();\n\n const inspectText = inspectRes.stdout?.toString() ?? \"\";\n const eventsText = `${eventsRes.stdout?.toString() ?? \"\"}\\n${eventsRes.stderr?.toString() ?? \"\"}`;\n\n let state = \"unknown\";\n const failingNodes: Array<{ id: string; reason: string }> = [];\n\n try {\n const parsed = JSON.parse(inspectText) as Record<string, unknown>;\n const rawState = parsed.state ?? parsed.status;\n if (typeof rawState === \"string\") state = rawState;\n\n const nodes = parsed.nodes ?? parsed.steps;\n if (Array.isArray(nodes)) {\n for (const node of nodes) {\n if (node && typeof node === \"object\") {\n const n = node as Record<string, unknown>;\n const nodeState = typeof n.state === \"string\" ? n.state : typeof n.status === \"string\" ? n.status : \"\";\n if (nodeState === \"failed\" || nodeState === \"error\" || nodeState === \"stuck\") {\n const id = typeof n.id === \"string\" ? n.id : typeof n.nodeId === \"string\" ? n.nodeId : \"(unknown)\";\n const reason = typeof n.error === \"string\" ? n.error : typeof n.reason === \"string\" ? n.reason : nodeState;\n failingNodes.push({ id, reason });\n }\n }\n }\n }\n } catch {\n // inspect did not return parseable JSON; leave defaults and rely on events.\n }\n\n const lastEvents = tailLines(eventsText, MAX_EVENT_LINES);\n const inspectOk = inspectRes.exitCode === 0 && state !== \"unknown\";\n\n const summary = inspectOk\n ? `Run ${runId} is \"${state}\" with ${failingNodes.length} failing/stuck node(s) and ${lastEvents.length} recent event line(s).`\n : `Could not read full state for run ${runId}; triaging from ${lastEvents.length} recent event line(s).`;\n\n return { state, failingNodes, lastEvents, summary };\n }}\n </Task>\n\n {/* 2 — Agent reads the evidence and names the most likely root cause. */}\n {gather ? (\n <Task id=\"diagnose\" output={outputs.diagnose} agent={agents.smart}>\n <DiagnosePrompt runId={runId} evidence={gather} />\n </Task>\n ) : null}\n\n {/* 3 — Agent proposes the concrete next action + the exact command. */}\n {gather && diagnose ? (\n <Task id=\"recommend\" output={outputs.recommend} agent={agents.smart}>\n <RecommendPrompt runId={runId} evidence={gather} diagnosis={diagnose} />\n </Task>\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" }, { "path": ".smithers/prompts/triage-run-diagnose.mdx", @@ -137,11 +137,11 @@ export const GENERATED_SEEDED_FILES = [ }, { "path": ".smithers/prompts/triage-run-recommend.mdx", - "contents": "# Recommend the next move\n\nYou are the final step of the \"triage one Smithers run\" pipeline. You have the\ndeterministic evidence and a diagnosis of the most likely root cause. Decide the\nsingle best next action for this run and give the exact command to run. Plan\nonly — do not execute anything.\n\n## Run under triage\n\nRun id: {props.runId}\n\n## Evidence (run state + event tail)\n\n{JSON.stringify(props.evidence, null, 2)}\n\n## Diagnosis\n\n{JSON.stringify(props.diagnosis, null, 2)}\n\n## Choose ONE action\n\n- **fix** — the run failed because of a real bug in the code or the workflow\n (a task errored, a command exited non-zero, an output failed validation). The\n underlying defect must be changed before the run can succeed. The `command`\n should point at the follow-up (for example a `bunx smithers-orchestrator node\n <runId> <nodeId>` to inspect the failing node, then an edit-and-`retry-task`).\n- **rewind** — earlier frames were fine but the run went off the rails after a\n specific point; roll back to a known-good frame with\n `bunx smithers-orchestrator rewind <runId>` (target the frame just before the\n failure).\n- **retry** — the failure looks transient (a flaky agent, a heartbeat timeout, a\n rate limit) and re-running the failing node should clear it:\n `bunx smithers-orchestrator retry-task <runId> --node <nodeId>`.\n- **escalate** — the run is *stuck* waiting on a human (an `Approval` or\n `HumanTask`), or the right call is genuinely a judgement a person must make.\n The `command` should clear or surface the gate (for example\n `bunx smithers-orchestrator approve <runId> --node <nodeId>` or\n `bunx smithers-orchestrator human inbox`).\n\n## Produce\n\n1. **recommendedAction** — exactly one of `fix`, `rewind`, `retry`, `escalate`.\n2. **command** — the exact CLI command to run next. Fill in the real `<runId>`\n and the specific failing/blocking `<nodeId>` from the evidence; do not leave\n placeholders if the evidence names the node.\n3. **rationale** — why this action over the alternatives, tied back to the\n diagnosis and confidence. If confidence was `low`, prefer `escalate` or a\n read-only inspect command over a destructive `rewind`.\n\nPick the safest action that actually moves the run forward. When in doubt,\ninspect before you mutate.\n\nREQUIRED OUTPUT:\n{props.schema}\n" + "contents": "# Recommend the next move\n\nYou are the final step of the \"triage one Smithers run\" pipeline. You have the\ndeterministic evidence and a diagnosis of the most likely root cause. Decide the\nsingle best next action for this run and give the exact command to run. Plan\nonly — do not execute anything.\n\n## Run under triage\n\nRun id: {props.runId}\n\n## Evidence (run state + event tail)\n\n{JSON.stringify(props.evidence, null, 2)}\n\n## Diagnosis\n\n{JSON.stringify(props.diagnosis, null, 2)}\n\n## Choose ONE action\n\n- **fix** — the run failed because of a real bug in the code or the workflow\n (a task errored, a command exited non-zero, an output failed validation). The\n underlying defect must be changed before the run can succeed. The `command`\n should point at the follow-up (for example a `bunx smthrs node\n <runId> <nodeId>` to inspect the failing node, then an edit-and-`retry-task`).\n- **rewind** — earlier frames were fine but the run went off the rails after a\n specific point; roll back to a known-good frame with\n `bunx smthrs rewind <runId>` (target the frame just before the\n failure).\n- **retry** — the failure looks transient (a flaky agent, a heartbeat timeout, a\n rate limit) and re-running the failing node should clear it:\n `bunx smthrs retry-task <runId> --node <nodeId>`.\n- **escalate** — the run is *stuck* waiting on a human (an `Approval` or\n `HumanTask`), or the right call is genuinely a judgement a person must make.\n The `command` should clear or surface the gate (for example\n `bunx smthrs approve <runId> --node <nodeId>` or\n `bunx smthrs human inbox`).\n\n## Produce\n\n1. **recommendedAction** — exactly one of `fix`, `rewind`, `retry`, `escalate`.\n2. **command** — the exact CLI command to run next. Fill in the real `<runId>`\n and the specific failing/blocking `<nodeId>` from the evidence; do not leave\n placeholders if the evidence names the node.\n3. **rationale** — why this action over the alternatives, tied back to the\n diagnosis and confidence. If confidence was `low`, prefer `escalate` or a\n read-only inspect command over a destructive `rewind`.\n\nPick the safest action that actually moves the run forward. When in doubt,\ninspect before you mutate.\n\nREQUIRED OUTPUT:\n{props.schema}\n" }, { "path": ".smithers/workflows/context-doctor.tsx", - "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Context Doctor\n// smithers-description: Run deterministic checks over a context contract and report missing goals, inputs, verification, approvals, and report specs.\n// smithers-tags: quality, context-engineering\n/** @jsxImportSource smithers-orchestrator */\nimport { createSmithers } from \"smithers-orchestrator\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport AdvisePrompt from \"../prompts/context-doctor-advise.mdx\";\n\nconst inputSchema = z.object({\n contract: z\n .string()\n .default(\"{}\")\n .describe(\"JSON string of a context contract to diagnose.\"),\n});\n\n// Severity ranking used by the deterministic checks below.\nconst severitySchema = z.enum([\"ok\", \"warning\", \"error\", \"info\"]);\n\nconst issueSchema = z.object({\n check: z.string().describe(\"Stable id of the check that produced this issue.\"),\n severity: severitySchema,\n message: z.string().describe(\"Human-readable explanation of the finding.\"),\n});\n\n// 1. Deterministic diagnosis of the contract (pure JS, no agent).\nconst checkSchema = z.looseObject({\n issues: z.array(issueSchema).default([]),\n summary: z.string(),\n score: z.number().describe(\"0–100 health score; 100 means every check passed.\"),\n});\n\n// 2. Agent advice on how to resolve each non-ok finding.\nconst adviseSchema = z.looseObject({\n fixes: z.array(z.string()).default([]).describe(\"Concrete suggestions, one per non-ok issue.\"),\n summary: z.string(),\n});\n\nconst { Workflow, Task, Sequence, smithers, outputs } = createSmithers({\n input: inputSchema,\n check: checkSchema,\n advise: adviseSchema,\n});\n\n// --- Deterministic contract checks: the hardcoded path, no agent involved. ---\n\ntype Severity = z.infer<typeof severitySchema>;\ntype Issue = z.infer<typeof issueSchema>;\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isNonEmptyString(value: unknown): boolean {\n return typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction asArray(value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\n}\n\nfunction ok(check: string, message: string): Issue {\n return { check, severity: \"ok\", message };\n}\n\nfunction fail(check: string, severity: Severity, message: string): Issue {\n return { check, severity, message };\n}\n\nfunction diagnose(raw: string): z.infer<typeof checkSchema> {\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch (err) {\n const reason = err instanceof Error ? err.message : String(err);\n return {\n issues: [fail(\"parse\", \"error\", \"Contract is not valid JSON: \" + reason)],\n summary: \"Could not parse the contract as JSON.\",\n score: 0,\n };\n }\n\n if (!isObject(parsed)) {\n return {\n issues: [fail(\"parse\", \"error\", \"Contract must be a JSON object at the top level.\")],\n summary: \"Contract is valid JSON but not an object.\",\n score: 0,\n };\n }\n\n const contract = parsed;\n const issues: Issue[] = [];\n\n // hasGoal — a non-empty goal statement exists.\n if (isNonEmptyString(contract.goal)) {\n issues.push(ok(\"hasGoal\", \"Contract declares a goal.\"));\n } else {\n issues.push(fail(\"hasGoal\", \"error\", \"Missing a non-empty `goal` describing the intended outcome.\"));\n }\n\n // hasOutputSpec — the contract says what artifact/output it produces.\n const outputSpec = contract.outputSpec ?? contract.output;\n if (isNonEmptyString(outputSpec) || isObject(outputSpec)) {\n issues.push(ok(\"hasOutputSpec\", \"Contract declares an output spec.\"));\n } else {\n issues.push(fail(\"hasOutputSpec\", \"error\", \"Missing an `outputSpec` describing the produced artifact.\"));\n }\n\n // hasAcceptanceCriteria — at least one acceptance criterion is listed.\n const acceptanceCriteria = asArray(contract.acceptanceCriteria ?? contract.acceptance_criteria);\n if (acceptanceCriteria.length > 0) {\n issues.push(ok(\"hasAcceptanceCriteria\", acceptanceCriteria.length + \" acceptance criteria declared.\"));\n } else {\n issues.push(fail(\"hasAcceptanceCriteria\", \"error\", \"Missing `acceptanceCriteria`; no way to know when the work is done.\"));\n }\n\n // allBlockingCriteriaHaveVerification — every blocking criterion names a verification.\n const blocking = acceptanceCriteria.filter((c) => isObject(c) && c.blocking === true);\n if (blocking.length === 0) {\n issues.push(ok(\"allBlockingCriteriaHaveVerification\", \"No blocking acceptance criteria to verify.\"));\n } else {\n const unverified = blocking.filter(\n (c) => isObject(c) && !isNonEmptyString(c.verification) && !isNonEmptyString(c.verify),\n );\n if (unverified.length === 0) {\n issues.push(ok(\"allBlockingCriteriaHaveVerification\", \"Every blocking criterion names a verification.\"));\n } else {\n issues.push(\n fail(\n \"allBlockingCriteriaHaveVerification\",\n \"error\",\n unverified.length + \" blocking criterion/criteria lack a `verification` step.\",\n ),\n );\n }\n }\n\n // allRequiredInputsHaveSource — every required input declares where it comes from.\n const inputs = asArray(contract.inputs);\n const requiredInputs = inputs.filter((i) => isObject(i) && i.required === true);\n if (requiredInputs.length === 0) {\n issues.push(ok(\"allRequiredInputsHaveSource\", \"No required inputs to source.\"));\n } else {\n const sourceless = requiredInputs.filter((i) => isObject(i) && !isNonEmptyString(i.source));\n if (sourceless.length === 0) {\n issues.push(ok(\"allRequiredInputsHaveSource\", \"Every required input declares a `source`.\"));\n } else {\n issues.push(\n fail(\n \"allRequiredInputsHaveSource\",\n \"error\",\n sourceless.length + \" required input(s) are missing a `source`.\",\n ),\n );\n }\n }\n\n // allSideEffectsHaveApproval — every side effect declares an approval gate.\n const sideEffects = asArray(contract.sideEffects ?? contract.side_effects);\n if (sideEffects.length === 0) {\n issues.push(ok(\"allSideEffectsHaveApproval\", \"No declared side effects.\"));\n } else {\n const unguarded = sideEffects.filter(\n (s) => isObject(s) && s.approval !== true && !isNonEmptyString(s.approval),\n );\n if (unguarded.length === 0) {\n issues.push(ok(\"allSideEffectsHaveApproval\", \"Every side effect is gated by an approval.\"));\n } else {\n issues.push(\n fail(\n \"allSideEffectsHaveApproval\",\n \"warning\",\n unguarded.length + \" side effect(s) have no `approval` gate.\",\n ),\n );\n }\n }\n\n // reportSpecExists — the contract says how to report results.\n const reportSpec = contract.reportSpec ?? contract.report ?? contract.report_spec;\n if (isNonEmptyString(reportSpec) || isObject(reportSpec)) {\n issues.push(ok(\"reportSpecExists\", \"Contract declares a report spec.\"));\n } else {\n issues.push(fail(\"reportSpecExists\", \"info\", \"No `reportSpec`; results have no declared reporting format.\"));\n }\n\n const total = issues.length;\n const passed = issues.filter((i) => i.severity === \"ok\").length;\n const errors = issues.filter((i) => i.severity === \"error\").length;\n const warnings = issues.filter((i) => i.severity === \"warning\").length;\n const score = total === 0 ? 100 : Math.round((passed / total) * 100);\n\n const summary =\n errors > 0\n ? errors + \" error(s) and \" + warnings + \" warning(s) — contract is incomplete (score \" + score + \"/100).\"\n : warnings > 0\n ? warnings + \" warning(s) — contract is usable but could be tightened (score \" + score + \"/100).\"\n : \"Contract passes every check (score \" + score + \"/100).\";\n\n return { issues, summary, score };\n}\n\n/**\n * Context Doctor. A deterministic `check` task parses the contract and runs the\n * seven structural checks; an agent `advise` task then suggests concrete fixes\n * for each non-ok finding.\n */\nexport default smithers((ctx) => {\n const check = ctx.outputMaybe(\"check\", { nodeId: \"check\" });\n\n return (\n <Workflow name=\"context-doctor\">\n <Sequence>\n {/* 1 — Deterministic diagnosis of the contract (pure JS, no agent). */}\n <Task id=\"check\" output={outputs.check}>\n {() => diagnose(ctx.input.contract)}\n </Task>\n\n {/* 2 — Agent advice for resolving every non-ok finding. */}\n {check ? (\n <Task id=\"advise\" output={outputs.advise} agent={agents.cheapFast}>\n <AdvisePrompt\n summary={check.summary}\n score={check.score}\n issues={check.issues}\n />\n </Task>\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" + "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Context Doctor\n// smithers-description: Run deterministic checks over a context contract and report missing goals, inputs, verification, approvals, and report specs.\n// smithers-tags: quality, context-engineering\n/** @jsxImportSource smthrs */\nimport { createSmithers } from \"smthrs\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport AdvisePrompt from \"../prompts/context-doctor-advise.mdx\";\n\nconst inputSchema = z.object({\n contract: z\n .string()\n .default(\"{}\")\n .describe(\"JSON string of a context contract to diagnose.\"),\n});\n\n// Severity ranking used by the deterministic checks below.\nconst severitySchema = z.enum([\"ok\", \"warning\", \"error\", \"info\"]);\n\nconst issueSchema = z.object({\n check: z.string().describe(\"Stable id of the check that produced this issue.\"),\n severity: severitySchema,\n message: z.string().describe(\"Human-readable explanation of the finding.\"),\n});\n\n// 1. Deterministic diagnosis of the contract (pure JS, no agent).\nconst checkSchema = z.looseObject({\n issues: z.array(issueSchema).default([]),\n summary: z.string(),\n score: z.number().describe(\"0–100 health score; 100 means every check passed.\"),\n});\n\n// 2. Agent advice on how to resolve each non-ok finding.\nconst adviseSchema = z.looseObject({\n fixes: z.array(z.string()).default([]).describe(\"Concrete suggestions, one per non-ok issue.\"),\n summary: z.string(),\n});\n\nconst { Workflow, Task, Sequence, smithers, outputs } = createSmithers({\n input: inputSchema,\n check: checkSchema,\n advise: adviseSchema,\n});\n\n// --- Deterministic contract checks: the hardcoded path, no agent involved. ---\n\ntype Severity = z.infer<typeof severitySchema>;\ntype Issue = z.infer<typeof issueSchema>;\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isNonEmptyString(value: unknown): boolean {\n return typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction asArray(value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\n}\n\nfunction ok(check: string, message: string): Issue {\n return { check, severity: \"ok\", message };\n}\n\nfunction fail(check: string, severity: Severity, message: string): Issue {\n return { check, severity, message };\n}\n\nfunction diagnose(raw: string): z.infer<typeof checkSchema> {\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch (err) {\n const reason = err instanceof Error ? err.message : String(err);\n return {\n issues: [fail(\"parse\", \"error\", \"Contract is not valid JSON: \" + reason)],\n summary: \"Could not parse the contract as JSON.\",\n score: 0,\n };\n }\n\n if (!isObject(parsed)) {\n return {\n issues: [fail(\"parse\", \"error\", \"Contract must be a JSON object at the top level.\")],\n summary: \"Contract is valid JSON but not an object.\",\n score: 0,\n };\n }\n\n const contract = parsed;\n const issues: Issue[] = [];\n\n // hasGoal — a non-empty goal statement exists.\n if (isNonEmptyString(contract.goal)) {\n issues.push(ok(\"hasGoal\", \"Contract declares a goal.\"));\n } else {\n issues.push(fail(\"hasGoal\", \"error\", \"Missing a non-empty `goal` describing the intended outcome.\"));\n }\n\n // hasOutputSpec — the contract says what artifact/output it produces.\n const outputSpec = contract.outputSpec ?? contract.output;\n if (isNonEmptyString(outputSpec) || isObject(outputSpec)) {\n issues.push(ok(\"hasOutputSpec\", \"Contract declares an output spec.\"));\n } else {\n issues.push(fail(\"hasOutputSpec\", \"error\", \"Missing an `outputSpec` describing the produced artifact.\"));\n }\n\n // hasAcceptanceCriteria — at least one acceptance criterion is listed.\n const acceptanceCriteria = asArray(contract.acceptanceCriteria ?? contract.acceptance_criteria);\n if (acceptanceCriteria.length > 0) {\n issues.push(ok(\"hasAcceptanceCriteria\", acceptanceCriteria.length + \" acceptance criteria declared.\"));\n } else {\n issues.push(fail(\"hasAcceptanceCriteria\", \"error\", \"Missing `acceptanceCriteria`; no way to know when the work is done.\"));\n }\n\n // allBlockingCriteriaHaveVerification — every blocking criterion names a verification.\n const blocking = acceptanceCriteria.filter((c) => isObject(c) && c.blocking === true);\n if (blocking.length === 0) {\n issues.push(ok(\"allBlockingCriteriaHaveVerification\", \"No blocking acceptance criteria to verify.\"));\n } else {\n const unverified = blocking.filter(\n (c) => isObject(c) && !isNonEmptyString(c.verification) && !isNonEmptyString(c.verify),\n );\n if (unverified.length === 0) {\n issues.push(ok(\"allBlockingCriteriaHaveVerification\", \"Every blocking criterion names a verification.\"));\n } else {\n issues.push(\n fail(\n \"allBlockingCriteriaHaveVerification\",\n \"error\",\n unverified.length + \" blocking criterion/criteria lack a `verification` step.\",\n ),\n );\n }\n }\n\n // allRequiredInputsHaveSource — every required input declares where it comes from.\n const inputs = asArray(contract.inputs);\n const requiredInputs = inputs.filter((i) => isObject(i) && i.required === true);\n if (requiredInputs.length === 0) {\n issues.push(ok(\"allRequiredInputsHaveSource\", \"No required inputs to source.\"));\n } else {\n const sourceless = requiredInputs.filter((i) => isObject(i) && !isNonEmptyString(i.source));\n if (sourceless.length === 0) {\n issues.push(ok(\"allRequiredInputsHaveSource\", \"Every required input declares a `source`.\"));\n } else {\n issues.push(\n fail(\n \"allRequiredInputsHaveSource\",\n \"error\",\n sourceless.length + \" required input(s) are missing a `source`.\",\n ),\n );\n }\n }\n\n // allSideEffectsHaveApproval — every side effect declares an approval gate.\n const sideEffects = asArray(contract.sideEffects ?? contract.side_effects);\n if (sideEffects.length === 0) {\n issues.push(ok(\"allSideEffectsHaveApproval\", \"No declared side effects.\"));\n } else {\n const unguarded = sideEffects.filter(\n (s) => isObject(s) && s.approval !== true && !isNonEmptyString(s.approval),\n );\n if (unguarded.length === 0) {\n issues.push(ok(\"allSideEffectsHaveApproval\", \"Every side effect is gated by an approval.\"));\n } else {\n issues.push(\n fail(\n \"allSideEffectsHaveApproval\",\n \"warning\",\n unguarded.length + \" side effect(s) have no `approval` gate.\",\n ),\n );\n }\n }\n\n // reportSpecExists — the contract says how to report results.\n const reportSpec = contract.reportSpec ?? contract.report ?? contract.report_spec;\n if (isNonEmptyString(reportSpec) || isObject(reportSpec)) {\n issues.push(ok(\"reportSpecExists\", \"Contract declares a report spec.\"));\n } else {\n issues.push(fail(\"reportSpecExists\", \"info\", \"No `reportSpec`; results have no declared reporting format.\"));\n }\n\n const total = issues.length;\n const passed = issues.filter((i) => i.severity === \"ok\").length;\n const errors = issues.filter((i) => i.severity === \"error\").length;\n const warnings = issues.filter((i) => i.severity === \"warning\").length;\n const score = total === 0 ? 100 : Math.round((passed / total) * 100);\n\n const summary =\n errors > 0\n ? errors + \" error(s) and \" + warnings + \" warning(s) — contract is incomplete (score \" + score + \"/100).\"\n : warnings > 0\n ? warnings + \" warning(s) — contract is usable but could be tightened (score \" + score + \"/100).\"\n : \"Contract passes every check (score \" + score + \"/100).\";\n\n return { issues, summary, score };\n}\n\n/**\n * Context Doctor. A deterministic `check` task parses the contract and runs the\n * seven structural checks; an agent `advise` task then suggests concrete fixes\n * for each non-ok finding.\n */\nexport default smithers((ctx) => {\n const check = ctx.outputMaybe(\"check\", { nodeId: \"check\" });\n\n return (\n <Workflow name=\"context-doctor\">\n <Sequence>\n {/* 1 — Deterministic diagnosis of the contract (pure JS, no agent). */}\n <Task id=\"check\" output={outputs.check}>\n {() => diagnose(ctx.input.contract)}\n </Task>\n\n {/* 2 — Agent advice for resolving every non-ok finding. */}\n {check ? (\n <Task id=\"advise\" output={outputs.advise} agent={agents.cheapFast}>\n <AdvisePrompt\n summary={check.summary}\n score={check.score}\n issues={check.issues}\n />\n </Task>\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" }, { "path": ".smithers/prompts/context-doctor-advise.mdx", @@ -149,7 +149,7 @@ export const GENERATED_SEEDED_FILES = [ }, { "path": ".smithers/workflows/backpressure-plan.tsx", - "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Backpressure Plan\n// smithers-description: Turn acceptance criteria into a gate matrix (schema/test/eval/review/approval/trace) so a workflow cannot just try-its-best and move on.\n// smithers-tags: quality, backpressure\n/** @jsxImportSource smithers-orchestrator */\nimport { createSmithers } from \"smithers-orchestrator\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport ExtractCriteriaPrompt from \"../prompts/backpressure-plan-extract-criteria.mdx\";\nimport PlanGatesPrompt from \"../prompts/backpressure-plan-plan-gates.mdx\";\n\nconst inputSchema = z.object({\n prompt: z\n .string()\n .default(\"Describe the goal and its acceptance criteria in plain English.\")\n .describe(\"The goal / acceptance criteria to turn into a backpressure gate matrix.\"),\n});\n\n// 1. The flat list of testable acceptance criteria pulled out of the prompt.\nconst criteriaSchema = z.looseObject({\n criteria: z\n .array(z.string())\n .default([])\n .describe(\"One atomic, verifiable acceptance criterion per entry.\"),\n});\n\n// 2. The gate matrix: every criterion mapped to how it is verified and enforced.\nconst gatesSchema = z.looseObject({\n gates: z\n .array(\n z.object({\n criterion: z.string().describe(\"The acceptance criterion this gate enforces.\"),\n verificationMethod: z\n .enum([\n \"schema\",\n \"unit_test\",\n \"integration_test\",\n \"eval\",\n \"review\",\n \"approval\",\n \"trace\",\n \"manual_check\",\n ])\n .describe(\"How the criterion is checked.\"),\n gateType: z\n .enum([\"blocking\", \"warning\", \"informational\"])\n .describe(\"blocking stops the run; warning flags; informational only records.\"),\n checkedBy: z.string().describe(\"Who/what runs the check (a task id, scorer, human role, or tool).\"),\n failureAction: z.string().describe(\"What happens when this gate fails.\"),\n evidenceRequired: z\n .array(z.string())\n .default([])\n .describe(\"Concrete artifacts that prove the gate passed (logs, diffs, reports, traces).\"),\n humanApprovalRequired: z\n .boolean()\n .default(false)\n .describe(\"True if a durable human approval gate is needed for this criterion.\"),\n }),\n )\n .default([])\n .describe(\"One gate per criterion; every blocking criterion maps to a verification method.\"),\n summary: z.string().default(\"\").describe(\"2-3 sentence overview of the backpressure plan.\"),\n});\n\nconst { Workflow, Task, Sequence, smithers, outputs } = createSmithers({\n input: inputSchema,\n extractCriteria: criteriaSchema,\n planGates: gatesSchema,\n});\n\nexport default smithers((ctx) => {\n // Gate the plan-gates stage on the extracted criteria being available.\n const criteria = ctx.outputMaybe(\"extractCriteria\", { nodeId: \"extract-criteria\" });\n\n return (\n <Workflow name=\"backpressure-plan\">\n <Sequence>\n {/* 1 — Pull the prompt apart into atomic, verifiable acceptance criteria. */}\n <Task id=\"extract-criteria\" output={outputs.extractCriteria} agent={agents.smart}>\n <ExtractCriteriaPrompt prompt={ctx.input.prompt} />\n </Task>\n\n {/* 2 — Map each criterion to a verification method + enforcement gate. */}\n {criteria ? (\n <Task id=\"plan-gates\" output={outputs.planGates} agent={agents.smart}>\n <PlanGatesPrompt criteria={criteria.criteria} prompt={ctx.input.prompt} />\n </Task>\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" + "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Backpressure Plan\n// smithers-description: Turn acceptance criteria into a gate matrix (schema/test/eval/review/approval/trace) so a workflow cannot just try-its-best and move on.\n// smithers-tags: quality, backpressure\n/** @jsxImportSource smthrs */\nimport { createSmithers } from \"smthrs\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport ExtractCriteriaPrompt from \"../prompts/backpressure-plan-extract-criteria.mdx\";\nimport PlanGatesPrompt from \"../prompts/backpressure-plan-plan-gates.mdx\";\n\nconst inputSchema = z.object({\n prompt: z\n .string()\n .default(\"Describe the goal and its acceptance criteria in plain English.\")\n .describe(\"The goal / acceptance criteria to turn into a backpressure gate matrix.\"),\n});\n\n// 1. The flat list of testable acceptance criteria pulled out of the prompt.\nconst criteriaSchema = z.looseObject({\n criteria: z\n .array(z.string())\n .default([])\n .describe(\"One atomic, verifiable acceptance criterion per entry.\"),\n});\n\n// 2. The gate matrix: every criterion mapped to how it is verified and enforced.\nconst gatesSchema = z.looseObject({\n gates: z\n .array(\n z.object({\n criterion: z.string().describe(\"The acceptance criterion this gate enforces.\"),\n verificationMethod: z\n .enum([\n \"schema\",\n \"unit_test\",\n \"integration_test\",\n \"eval\",\n \"review\",\n \"approval\",\n \"trace\",\n \"manual_check\",\n ])\n .describe(\"How the criterion is checked.\"),\n gateType: z\n .enum([\"blocking\", \"warning\", \"informational\"])\n .describe(\"blocking stops the run; warning flags; informational only records.\"),\n checkedBy: z.string().describe(\"Who/what runs the check (a task id, scorer, human role, or tool).\"),\n failureAction: z.string().describe(\"What happens when this gate fails.\"),\n evidenceRequired: z\n .array(z.string())\n .default([])\n .describe(\"Concrete artifacts that prove the gate passed (logs, diffs, reports, traces).\"),\n humanApprovalRequired: z\n .boolean()\n .default(false)\n .describe(\"True if a durable human approval gate is needed for this criterion.\"),\n }),\n )\n .default([])\n .describe(\"One gate per criterion; every blocking criterion maps to a verification method.\"),\n summary: z.string().default(\"\").describe(\"2-3 sentence overview of the backpressure plan.\"),\n});\n\nconst { Workflow, Task, Sequence, smithers, outputs } = createSmithers({\n input: inputSchema,\n extractCriteria: criteriaSchema,\n planGates: gatesSchema,\n});\n\nexport default smithers((ctx) => {\n // Gate the plan-gates stage on the extracted criteria being available.\n const criteria = ctx.outputMaybe(\"extractCriteria\", { nodeId: \"extract-criteria\" });\n\n return (\n <Workflow name=\"backpressure-plan\">\n <Sequence>\n {/* 1 — Pull the prompt apart into atomic, verifiable acceptance criteria. */}\n <Task id=\"extract-criteria\" output={outputs.extractCriteria} agent={agents.smart}>\n <ExtractCriteriaPrompt prompt={ctx.input.prompt} />\n </Task>\n\n {/* 2 — Map each criterion to a verification method + enforcement gate. */}\n {criteria ? (\n <Task id=\"plan-gates\" output={outputs.planGates} agent={agents.smart}>\n <PlanGatesPrompt criteria={criteria.criteria} prompt={ctx.input.prompt} />\n </Task>\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" }, { "path": ".smithers/prompts/backpressure-plan-extract-criteria.mdx", @@ -161,7 +161,7 @@ export const GENERATED_SEEDED_FILES = [ }, { "path": ".smithers/workflows/eval-author.tsx", - "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Eval Author\n// smithers-description: Turn acceptance criteria into eval fixtures (JSONL cases + rubric) wired to smithers eval.\n// smithers-tags: quality, evals\n/** @jsxImportSource smithers-orchestrator */\nimport { createSmithers } from \"smithers-orchestrator\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport DerivePrompt from \"../prompts/eval-author-derive.mdx\";\nimport WritePrompt from \"../prompts/eval-author-write.mdx\";\n\nconst EVALS_DIR = \".smithers/evals\";\n\nconst inputSchema = z.object({\n prompt: z\n .string()\n .default(\"Describe the acceptance criteria / goal to turn into eval cases.\")\n .describe(\"Acceptance criteria or goal to convert into eval fixtures.\"),\n workflow: z\n .string()\n .nullable()\n .default(null)\n .describe(\"Path or id of the workflow the eval suite targets. Null leaves a placeholder in the run command.\"),\n});\n\n// 1. The criteria, turned into a structured eval suite: a name plus a list of\n// cases the suite should cover. Each case pairs an input with the expected\n// assertion shape (status / output / outputContains) and a plain-text rubric.\nconst evalCaseSchema = z.looseObject({\n id: z.string().describe(\"Stable kebab-case id for this case.\"),\n input: z.looseObject({}).describe(\"The workflow input object this case runs with.\"),\n expected: z\n .looseObject({})\n .describe(\"Assertion object: status, output (exact), and/or outputContains (partial).\"),\n rubric: z.string().describe(\"Plain-English pass/fail criteria for a human or judge reviewing this case.\"),\n});\n\nconst derivedSuiteSchema = z.looseObject({\n suiteName: z.string().describe(\"Proposed kebab-case suite id (also the fixture filename stem).\"),\n cases: z.array(evalCaseSchema).default([]).describe(\"Ordered eval cases covering the acceptance criteria.\"),\n});\n\n// 2. The fixture actually written to disk, plus the command to run it.\nconst writtenSuiteSchema = z.looseObject({\n path: z.string().describe(\"Path to the written .jsonl fixture.\"),\n caseCount: z.number().describe(\"Number of cases written to the fixture.\"),\n runCommand: z.string().describe(\"The smithers eval command to run the suite.\"),\n});\n\nconst { Workflow, Task, Sequence, smithers, outputs } = createSmithers({\n input: inputSchema,\n derive: derivedSuiteSchema,\n write: writtenSuiteSchema,\n});\n\nexport default smithers((ctx) => {\n const derive = ctx.outputMaybe(\"derive\", { nodeId: \"derive\" });\n\n return (\n <Workflow name=\"eval-author\">\n <Sequence>\n {/* 1 — Turn the acceptance criteria into a structured eval suite. */}\n <Task id=\"derive\" output={outputs.derive} agent={agents.smart}>\n <DerivePrompt criteria={ctx.input.prompt} workflow={ctx.input.workflow} evalsDir={EVALS_DIR} />\n </Task>\n\n {/* 2 — Write the JSONL fixture to disk and report the run command. */}\n {derive ? (\n <Task id=\"write\" output={outputs.write} agent={agents.smartTool} heartbeatTimeoutMs={600_000}>\n <WritePrompt suite={derive} workflow={ctx.input.workflow} evalsDir={EVALS_DIR} />\n </Task>\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" + "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Eval Author\n// smithers-description: Turn acceptance criteria into eval fixtures (JSONL cases + rubric) wired to smithers eval.\n// smithers-tags: quality, evals\n/** @jsxImportSource smthrs */\nimport { createSmithers } from \"smthrs\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport DerivePrompt from \"../prompts/eval-author-derive.mdx\";\nimport WritePrompt from \"../prompts/eval-author-write.mdx\";\n\nconst EVALS_DIR = \".smithers/evals\";\n\nconst inputSchema = z.object({\n prompt: z\n .string()\n .default(\"Describe the acceptance criteria / goal to turn into eval cases.\")\n .describe(\"Acceptance criteria or goal to convert into eval fixtures.\"),\n workflow: z\n .string()\n .nullable()\n .default(null)\n .describe(\"Path or id of the workflow the eval suite targets. Null leaves a placeholder in the run command.\"),\n});\n\n// 1. The criteria, turned into a structured eval suite: a name plus a list of\n// cases the suite should cover. Each case pairs an input with the expected\n// assertion shape (status / output / outputContains) and a plain-text rubric.\nconst evalCaseSchema = z.looseObject({\n id: z.string().describe(\"Stable kebab-case id for this case.\"),\n input: z.looseObject({}).describe(\"The workflow input object this case runs with.\"),\n expected: z\n .looseObject({})\n .describe(\"Assertion object: status, output (exact), and/or outputContains (partial).\"),\n rubric: z.string().describe(\"Plain-English pass/fail criteria for a human or judge reviewing this case.\"),\n});\n\nconst derivedSuiteSchema = z.looseObject({\n suiteName: z.string().describe(\"Proposed kebab-case suite id (also the fixture filename stem).\"),\n cases: z.array(evalCaseSchema).default([]).describe(\"Ordered eval cases covering the acceptance criteria.\"),\n});\n\n// 2. The fixture actually written to disk, plus the command to run it.\nconst writtenSuiteSchema = z.looseObject({\n path: z.string().describe(\"Path to the written .jsonl fixture.\"),\n caseCount: z.number().describe(\"Number of cases written to the fixture.\"),\n runCommand: z.string().describe(\"The smithers eval command to run the suite.\"),\n});\n\nconst { Workflow, Task, Sequence, smithers, outputs } = createSmithers({\n input: inputSchema,\n derive: derivedSuiteSchema,\n write: writtenSuiteSchema,\n});\n\nexport default smithers((ctx) => {\n const derive = ctx.outputMaybe(\"derive\", { nodeId: \"derive\" });\n\n return (\n <Workflow name=\"eval-author\">\n <Sequence>\n {/* 1 — Turn the acceptance criteria into a structured eval suite. */}\n <Task id=\"derive\" output={outputs.derive} agent={agents.smart}>\n <DerivePrompt criteria={ctx.input.prompt} workflow={ctx.input.workflow} evalsDir={EVALS_DIR} />\n </Task>\n\n {/* 2 — Write the JSONL fixture to disk and report the run command. */}\n {derive ? (\n <Task id=\"write\" output={outputs.write} agent={agents.smartTool} heartbeatTimeoutMs={600_000}>\n <WritePrompt suite={derive} workflow={ctx.input.workflow} evalsDir={EVALS_DIR} />\n </Task>\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" }, { "path": ".smithers/prompts/eval-author-derive.mdx", @@ -173,7 +173,7 @@ export const GENERATED_SEEDED_FILES = [ }, { "path": ".smithers/workflows/report-slideshow.tsx", - "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Report Slideshow\n// smithers-description: Generate a concise HTML slideshow report from a Smithers run state and artifacts.\n// smithers-tags: ops, reporting\n/** @jsxImportSource smithers-orchestrator */\nimport { $ } from \"bun\";\nimport { createSmithers } from \"smithers-orchestrator\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport RenderPrompt from \"../prompts/report-slideshow-render.mdx\";\n\nconst inputSchema = z.object({\n runId: z\n .string()\n .describe(\"The Smithers run id to build a slideshow report from.\"),\n title: z\n .string()\n .nullable()\n .default(null)\n .describe(\"Optional report title. Null lets the render step derive one from the run.\"),\n});\n\n// 1. Deterministic capture of the run's persisted state, nodes, and a summary.\nconst gatherSchema = z.looseObject({\n ok: z.boolean().describe(\"Whether `smithers inspect` returned usable JSON.\"),\n state: z.string().default(\"unknown\").describe(\"Run status: running | completed | failed | unknown.\"),\n nodes: z\n .array(\n z.looseObject({\n id: z.string().default(\"\"),\n type: z.string().default(\"\"),\n status: z.string().default(\"\"),\n summary: z.string().default(\"\"),\n }),\n )\n .default([])\n .describe(\"One row per workflow node, flattened for the renderer.\"),\n summary: z.string().default(\"\").describe(\"A short human summary of what the run did and where it ended.\"),\n raw: z.string().default(\"\").describe(\"The raw inspect JSON (truncated) for the renderer to mine for detail.\"),\n});\n\n// 2. The self-contained HTML slideshow the render agent produces.\nconst renderSchema = z.looseObject({\n title: z.string().describe(\"The report title used in the slideshow.\"),\n html: z.string().describe(\"A complete, self-contained HTML document (inline CSS, no external deps).\"),\n slideCount: z.number().default(0).describe(\"How many slide sections the report contains.\"),\n});\n\nconst { Workflow, Task, Sequence, smithers, outputs } = createSmithers({\n input: inputSchema,\n gather: gatherSchema,\n render: renderSchema,\n});\n\n// --- Deterministic helpers for the gather step (no agent). ---\nconst MAX_RAW = 60_000;\n\nfunction asString(value: unknown): string {\n if (typeof value === \"string\") return value;\n if (value === null || value === undefined) return \"\";\n return String(value);\n}\n\nfunction pickArray(value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\n}\n\n/**\n * Flatten whatever the inspect payload calls its node list into the minimal\n * { id, type, status, summary } rows the renderer consumes. The shape of\n * `inspect --format json` varies by version, so probe a few likely keys and\n * fall back to an empty list rather than throwing.\n */\nfunction flattenNodes(parsed: Record<string, unknown>): Array<{ id: string; type: string; status: string; summary: string }> {\n const candidates = [parsed.nodes, parsed.steps, parsed.tasks];\n const list = candidates.find((c) => Array.isArray(c) && c.length > 0);\n return pickArray(list).map((n) => {\n const node = (n ?? {}) as Record<string, unknown>;\n return {\n id: asString(node.id ?? node.nodeId ?? node.name),\n type: asString(node.type ?? node.kind ?? node.component),\n status: asString(node.status ?? node.state ?? node.phase),\n summary: asString(node.summary ?? node.title ?? node.label).slice(0, 400),\n };\n });\n}\n\nexport default smithers((ctx) => {\n const runId = ctx.input.runId;\n\n // Gate the render step on the gather output being present.\n const gather = ctx.outputMaybe(\"gather\", { nodeId: \"gather\" });\n\n const fallbackTitle = ctx.input.title ?? `Smithers run ${runId}`;\n\n return (\n <Workflow name=\"report-slideshow\">\n <Sequence>\n {/* 1 — Deterministically capture the run state, nodes, and a summary. */}\n <Task id=\"gather\" output={outputs.gather}>\n {async () => {\n const res = await $`bunx smithers-orchestrator inspect ${runId} --format json --full-output`\n .nothrow()\n .quiet();\n const stdout = res.stdout?.toString() ?? \"\";\n const stderr = res.stderr?.toString() ?? \"\";\n\n let parsed: Record<string, unknown> = {};\n let ok = false;\n if (res.exitCode === 0 && stdout.trim().length > 0) {\n try {\n parsed = JSON.parse(stdout) as Record<string, unknown>;\n ok = true;\n } catch {\n ok = false;\n }\n }\n\n const nodes = ok ? flattenNodes(parsed) : [];\n const state = ok\n ? asString(parsed.status ?? parsed.state ?? \"unknown\") || \"unknown\"\n : \"unknown\";\n const summary = ok\n ? `Run ${runId} is \"${state}\" with ${nodes.length} node(s).`\n : `Could not inspect run ${runId}: ${(stderr || stdout || \"no output\").slice(0, 300)}`;\n\n return {\n ok,\n state,\n nodes,\n summary,\n raw: (ok ? stdout : `${stdout}\\n${stderr}`).slice(0, MAX_RAW),\n };\n }}\n </Task>\n\n {/* 2 — Render a self-contained HTML slideshow from the captured state. */}\n {gather ? (\n <Task id=\"render\" output={outputs.render} agent={agents.smart}>\n <RenderPrompt\n runId={runId}\n title={fallbackTitle}\n gather={gather}\n />\n </Task>\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" + "contents": "// smithers-source: seeded\n// smithers-metadata-version: 1\n// smithers-display-name: Report Slideshow\n// smithers-description: Generate a concise HTML slideshow report from a Smithers run state and artifacts.\n// smithers-tags: ops, reporting\n/** @jsxImportSource smthrs */\nimport { $ } from \"bun\";\nimport { createSmithers } from \"smthrs\";\nimport { z } from \"zod/v4\";\nimport { agents } from \"../agents\";\nimport RenderPrompt from \"../prompts/report-slideshow-render.mdx\";\n\nconst inputSchema = z.object({\n runId: z\n .string()\n .describe(\"The Smithers run id to build a slideshow report from.\"),\n title: z\n .string()\n .nullable()\n .default(null)\n .describe(\"Optional report title. Null lets the render step derive one from the run.\"),\n});\n\n// 1. Deterministic capture of the run's persisted state, nodes, and a summary.\nconst gatherSchema = z.looseObject({\n ok: z.boolean().describe(\"Whether `smithers inspect` returned usable JSON.\"),\n state: z.string().default(\"unknown\").describe(\"Run status: running | completed | failed | unknown.\"),\n nodes: z\n .array(\n z.looseObject({\n id: z.string().default(\"\"),\n type: z.string().default(\"\"),\n status: z.string().default(\"\"),\n summary: z.string().default(\"\"),\n }),\n )\n .default([])\n .describe(\"One row per workflow node, flattened for the renderer.\"),\n summary: z.string().default(\"\").describe(\"A short human summary of what the run did and where it ended.\"),\n raw: z.string().default(\"\").describe(\"The raw inspect JSON (truncated) for the renderer to mine for detail.\"),\n});\n\n// 2. The self-contained HTML slideshow the render agent produces.\nconst renderSchema = z.looseObject({\n title: z.string().describe(\"The report title used in the slideshow.\"),\n html: z.string().describe(\"A complete, self-contained HTML document (inline CSS, no external deps).\"),\n slideCount: z.number().default(0).describe(\"How many slide sections the report contains.\"),\n});\n\nconst { Workflow, Task, Sequence, smithers, outputs } = createSmithers({\n input: inputSchema,\n gather: gatherSchema,\n render: renderSchema,\n});\n\n// --- Deterministic helpers for the gather step (no agent). ---\nconst MAX_RAW = 60_000;\n\nfunction asString(value: unknown): string {\n if (typeof value === \"string\") return value;\n if (value === null || value === undefined) return \"\";\n return String(value);\n}\n\nfunction pickArray(value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\n}\n\n/**\n * Flatten whatever the inspect payload calls its node list into the minimal\n * { id, type, status, summary } rows the renderer consumes. The shape of\n * `inspect --format json` varies by version, so probe a few likely keys and\n * fall back to an empty list rather than throwing.\n */\nfunction flattenNodes(parsed: Record<string, unknown>): Array<{ id: string; type: string; status: string; summary: string }> {\n const candidates = [parsed.nodes, parsed.steps, parsed.tasks];\n const list = candidates.find((c) => Array.isArray(c) && c.length > 0);\n return pickArray(list).map((n) => {\n const node = (n ?? {}) as Record<string, unknown>;\n return {\n id: asString(node.id ?? node.nodeId ?? node.name),\n type: asString(node.type ?? node.kind ?? node.component),\n status: asString(node.status ?? node.state ?? node.phase),\n summary: asString(node.summary ?? node.title ?? node.label).slice(0, 400),\n };\n });\n}\n\nexport default smithers((ctx) => {\n const runId = ctx.input.runId;\n\n // Gate the render step on the gather output being present.\n const gather = ctx.outputMaybe(\"gather\", { nodeId: \"gather\" });\n\n const fallbackTitle = ctx.input.title ?? `Smithers run ${runId}`;\n\n return (\n <Workflow name=\"report-slideshow\">\n <Sequence>\n {/* 1 — Deterministically capture the run state, nodes, and a summary. */}\n <Task id=\"gather\" output={outputs.gather}>\n {async () => {\n const res = await $`bunx smthrs inspect ${runId} --format json --full-output`\n .nothrow()\n .quiet();\n const stdout = res.stdout?.toString() ?? \"\";\n const stderr = res.stderr?.toString() ?? \"\";\n\n let parsed: Record<string, unknown> = {};\n let ok = false;\n if (res.exitCode === 0 && stdout.trim().length > 0) {\n try {\n parsed = JSON.parse(stdout) as Record<string, unknown>;\n ok = true;\n } catch {\n ok = false;\n }\n }\n\n const nodes = ok ? flattenNodes(parsed) : [];\n const state = ok\n ? asString(parsed.status ?? parsed.state ?? \"unknown\") || \"unknown\"\n : \"unknown\";\n const summary = ok\n ? `Run ${runId} is \"${state}\" with ${nodes.length} node(s).`\n : `Could not inspect run ${runId}: ${(stderr || stdout || \"no output\").slice(0, 300)}`;\n\n return {\n ok,\n state,\n nodes,\n summary,\n raw: (ok ? stdout : `${stdout}\\n${stderr}`).slice(0, MAX_RAW),\n };\n }}\n </Task>\n\n {/* 2 — Render a self-contained HTML slideshow from the captured state. */}\n {gather ? (\n <Task id=\"render\" output={outputs.render} agent={agents.smart}>\n <RenderPrompt\n runId={runId}\n title={fallbackTitle}\n gather={gather}\n />\n </Task>\n ) : null}\n </Sequence>\n </Workflow>\n );\n});\n" }, { "path": ".smithers/prompts/report-slideshow-render.mdx", diff --git a/docs/references/smithers/apps/cli/src/smithersRuntime.js b/docs/references/smithers/apps/cli/src/smithersRuntime.js index 0dc783f49..98584d972 100644 --- a/docs/references/smithers/apps/cli/src/smithersRuntime.js +++ b/docs/references/smithers/apps/cli/src/smithersRuntime.js @@ -1,8 +1,8 @@ import * as WorkflowEngine from "@effect/workflow/WorkflowEngine"; import { Cause, Effect, Exit, Layer, ManagedRuntime } from "effect"; -import { SchedulerLive, WorkflowSessionLive } from "@smithers-orchestrator/scheduler"; -import { CorrelationContextLive, MetricsServiceLive, TracingServiceLive, createSmithersRuntimeLayer, getCurrentSmithersTraceAnnotations, getCurrentSmithersTraceSpan, } from "@smithers-orchestrator/observability"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { SchedulerLive, WorkflowSessionLive } from "@smthrs/scheduler"; +import { CorrelationContextLive, MetricsServiceLive, TracingServiceLive, createSmithersRuntimeLayer, getCurrentSmithersTraceAnnotations, getCurrentSmithersTraceSpan, } from "@smthrs/observability"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { SmithersLoggerLayer } from "./util/logger.ts"; const ObservabilityLayer = Layer.mergeAll(CorrelationContextLive, MetricsServiceLive, TracingServiceLive); const SmithersCoreLayer = Layer.mergeAll(ObservabilityLayer, SchedulerLive.pipe(Layer.provide(ObservabilityLayer)), WorkflowSessionLive); diff --git a/docs/references/smithers/apps/cli/src/snapshot-hook.js b/docs/references/smithers/apps/cli/src/snapshot-hook.js index 15dc2539e..8b6cfaba0 100644 --- a/docs/references/smithers/apps/cli/src/snapshot-hook.js +++ b/docs/references/smithers/apps/cli/src/snapshot-hook.js @@ -6,7 +6,7 @@ // is visible. import * as net from "node:net"; -import { appendGap, defaultGapSpoolPath } from "@smithers-orchestrator/engine/durabilityGapSpool"; +import { appendGap, defaultGapSpoolPath } from "@smthrs/engine/durabilityGapSpool"; /** Read a whole stream to a string. */ function readAll(stream) { diff --git a/docs/references/smithers/apps/cli/src/starter-gallery-command.js b/docs/references/smithers/apps/cli/src/starter-gallery-command.js index 16744a659..23615c8d0 100644 --- a/docs/references/smithers/apps/cli/src/starter-gallery-command.js +++ b/docs/references/smithers/apps/cli/src/starter-gallery-command.js @@ -20,7 +20,7 @@ export function runStartersCommand(c, fail) { if (c.args.id && !findStarterRecipe(c.args.id)) { return fail({ code: "STARTER_NOT_FOUND", - message: `Starter not found: ${c.args.id}. Run "bunx smithers-orchestrator starters" to list available starters.`, + message: `Starter not found: ${c.args.id}. Run "bunx smthrs starters" to list available starters.`, details: { availableStarters: buildStarterGallery().starters.map((starter) => starter.id), }, diff --git a/docs/references/smithers/apps/cli/src/starter-gallery.js b/docs/references/smithers/apps/cli/src/starter-gallery.js index 5b36fbebe..4c66c7c98 100644 --- a/docs/references/smithers/apps/cli/src/starter-gallery.js +++ b/docs/references/smithers/apps/cli/src/starter-gallery.js @@ -1,4 +1,4 @@ -const CLI_COMMAND = "bunx smithers-orchestrator"; +const CLI_COMMAND = "bunx smthrs"; const INSTALL_COMMAND = `${CLI_COMMAND} init --add-agents`; /** diff --git a/docs/references/smithers/apps/cli/src/supervisor.js b/docs/references/smithers/apps/cli/src/supervisor.js index 75fc7553a..98f15ddf3 100644 --- a/docs/references/smithers/apps/cli/src/supervisor.js +++ b/docs/references/smithers/apps/cli/src/supervisor.js @@ -2,13 +2,13 @@ import { randomUUID } from "node:crypto"; import { existsSync } from "node:fs"; import { isAbsolute, resolve } from "node:path"; import { Effect, Schedule } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; -import { trackEvent } from "@smithers-orchestrator/observability/metrics"; -import { isPidAlive, parseRuntimeOwnerPid } from "@smithers-orchestrator/engine/runtime-owner"; -import { SmithersError } from "@smithers-orchestrator/errors"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; +import { trackEvent } from "@smthrs/observability/metrics"; +import { isPidAlive, parseRuntimeOwnerPid } from "@smthrs/engine/runtime-owner"; +import { SmithersError } from "@smthrs/errors"; import { resumeRunDetached } from "./resume-detached.js"; /** @typedef {import("./RunAutoResumeSkipReason.ts").RunAutoResumeSkipReason} RunAutoResumeSkipReason */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** @typedef {import("./SupervisorOptions.ts").SupervisorOptions} SupervisorOptions */ /** @typedef {import("./SupervisorPollSummary.ts").SupervisorPollSummary} SupervisorPollSummary */ @@ -43,7 +43,7 @@ export function parseDurationMs(raw, fieldName) { } return ms; } -export { isPidAlive, parseRuntimeOwnerPid } from "@smithers-orchestrator/engine/runtime-owner"; +export { isPidAlive, parseRuntimeOwnerPid } from "@smthrs/engine/runtime-owner"; /** * @param {SupervisorOptions} options * @returns {NormalizedSupervisorOptions} diff --git a/docs/references/smithers/apps/cli/src/tree.js b/docs/references/smithers/apps/cli/src/tree.js index 740665768..37e23aeaa 100644 --- a/docs/references/smithers/apps/cli/src/tree.js +++ b/docs/references/smithers/apps/cli/src/tree.js @@ -5,9 +5,9 @@ // @smithers-type-exports-end import pc from "picocolors"; -import { getDevToolsSnapshotRoute, DevToolsRouteError } from "@smithers-orchestrator/server/gatewayRoutes/getDevToolsSnapshot"; -import { streamDevToolsRoute } from "@smithers-orchestrator/server/gatewayRoutes/streamDevTools"; -import { applyDelta } from "@smithers-orchestrator/devtools"; +import { getDevToolsSnapshotRoute, DevToolsRouteError } from "@smthrs/server/gatewayRoutes/getDevToolsSnapshot"; +import { streamDevToolsRoute } from "@smthrs/server/gatewayRoutes/streamDevTools"; +import { applyDelta } from "@smthrs/devtools"; import { EXIT_OK, EXIT_USER_ERROR, EXIT_SERVER_ERROR, EXIT_SIGINT } from "./util/exitCodes.js"; import { formatCliErrorForStderr, getCliErrorMapping } from "./util/errorMessage.js"; @@ -34,7 +34,7 @@ function renderAttr(value) { } /** - * @param {import("@smithers-orchestrator/protocol/devtools").DevToolsNode} node + * @param {import("@smthrs/protocol/devtools").DevToolsNode} node * @param {boolean} useColor */ function renderOpenTag(node, useColor) { @@ -65,13 +65,13 @@ function renderOpenTag(node, useColor) { return parts.join(""); } -/** @param {import("@smithers-orchestrator/protocol/devtools").DevToolsNode} node @param {boolean} useColor */ +/** @param {import("@smthrs/protocol/devtools").DevToolsNode} node @param {boolean} useColor */ function renderCloseTag(node, useColor) { const c = colors(useColor); return c.cyan(`</${node.type}>`); } -/** @param {import("@smithers-orchestrator/protocol/devtools").DevToolsNode} node @param {string} id */ +/** @param {import("@smthrs/protocol/devtools").DevToolsNode} node @param {string} id */ function findNode(node, id) { if (node.task?.nodeId === id) return node; if (typeof node.name === "string" && node.name === id) return node; @@ -83,16 +83,16 @@ function findNode(node, id) { } /** - * @param {import("@smithers-orchestrator/protocol/devtools").DevToolsNode} root + * @param {import("@smthrs/protocol/devtools").DevToolsNode} root * @param {string} nodeId - * @returns {import("@smithers-orchestrator/protocol/devtools").DevToolsNode | null} + * @returns {import("@smthrs/protocol/devtools").DevToolsNode | null} */ export function selectSubtree(root, nodeId) { return findNode(root, nodeId); } /** - * @param {import("@smithers-orchestrator/protocol/devtools").DevToolsSnapshot} snapshot + * @param {import("@smthrs/protocol/devtools").DevToolsSnapshot} snapshot * @param {TreeRenderOptions} [options] * @returns {string} */ @@ -106,7 +106,7 @@ export function renderDevToolsTree(snapshot, options) { /** @type {string[]} */ const lines = []; /** - * @param {import("@smithers-orchestrator/protocol/devtools").DevToolsNode} node + * @param {import("@smthrs/protocol/devtools").DevToolsNode} node * @param {number} indent */ const walk = (node, indent) => { @@ -195,11 +195,11 @@ export async function runTreeWatch(input) { nodeId: input.node, color: input.color, }; - /** @type {import("@smithers-orchestrator/protocol/devtools").DevToolsSnapshot | null} */ + /** @type {import("@smthrs/protocol/devtools").DevToolsSnapshot | null} */ let snapshot = null; /** @type {number | undefined} */ let lastDeliveredSeq; - /** @param {import("@smithers-orchestrator/protocol/devtools").DevToolsSnapshot} snap */ + /** @param {import("@smthrs/protocol/devtools").DevToolsSnapshot} snap */ const emit = (snap) => { lastDeliveredSeq = snap.seq; if (input.json) { diff --git a/docs/references/smithers/apps/cli/src/why-diagnosis.js b/docs/references/smithers/apps/cli/src/why-diagnosis.js index 8f907e59e..a465cc470 100644 --- a/docs/references/smithers/apps/cli/src/why-diagnosis.js +++ b/docs/references/smithers/apps/cli/src/why-diagnosis.js @@ -3,11 +3,11 @@ // @smithers-type-exports-end import { Effect } from "effect"; -import { isRunHeartbeatFresh } from "@smithers-orchestrator/engine"; -import { computeRetryDelayMs } from "@smithers-orchestrator/scheduler/computeRetryDelayMs"; -import { SmithersError } from "@smithers-orchestrator/errors"; +import { isRunHeartbeatFresh } from "@smthrs/engine"; +import { computeRetryDelayMs } from "@smthrs/scheduler/computeRetryDelayMs"; +import { SmithersError } from "@smthrs/errors"; import { formatAge } from "./format.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** @typedef {import("./WhyBlocker.ts").WhyBlocker} WhyBlocker */ /** @typedef {import("./WhyDiagnosis.ts").WhyDiagnosis} WhyDiagnosis */ diff --git a/docs/references/smithers/apps/cli/src/workflow-pack.js b/docs/references/smithers/apps/cli/src/workflow-pack.js index b0bb0cad3..87a0def3b 100644 --- a/docs/references/smithers/apps/cli/src/workflow-pack.js +++ b/docs/references/smithers/apps/cli/src/workflow-pack.js @@ -3,7 +3,7 @@ import { createRequire } from "node:module"; import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"; import { dirname, resolve } from "node:path"; import { fileURLToPath } from "node:url"; -import { accountsRoot } from "@smithers-orchestrator/accounts"; +import { accountsRoot } from "@smthrs/accounts"; import { generateAgentsTs } from "./agent-detection.js"; import { WORKFLOW_UI_SOURCES } from "./workflowUiSources.js"; // Seeded workflows authored as canonical files in .smithers/ and emitted by @@ -91,7 +91,7 @@ function readOwnPackageVersion() { } /** * Pins shipped with this release for devDep-only specs that won't be in the - * user's `node_modules` after `bunx smithers-orchestrator@latest init`. Bump + * user's `node_modules` after `bunx smthrs@latest init`. Bump * these when updating the monorepo's root devDependencies. */ const BUNDLED_VERSION_PINS = { @@ -143,7 +143,7 @@ function renderPackageJson(versions) { dependencies: { react: versions.reactVersion, "react-dom": versions.reactDomVersion, - "smithers-orchestrator": smithersSpec, + "smthrs": smithersSpec, zod: versions.zodVersion, }, devDependencies: { @@ -163,7 +163,7 @@ function renderTsconfig() { module: "ESNext", moduleDetection: "force", jsx: "react-jsx", - jsxImportSource: "smithers-orchestrator", + jsxImportSource: "smthrs", moduleResolution: "bundler", allowImportingTsExtensions: true, verbatimModuleSyntax: true, @@ -188,7 +188,7 @@ function renderAgentScaffoldFiles() { path: ".smithers/agents/claude-code.ts", preserveExisting: true, contents: [ - 'import { ClaudeCodeAgent as SmithersClaudeCodeAgent } from "smithers-orchestrator";', + 'import { ClaudeCodeAgent as SmithersClaudeCodeAgent } from "smthrs";', "", '// Built-in Claude Code CLI agent (cliEngine: "claude-code").', "// Tweak `model`, `cwd`, or uncomment extra options below to match your setup.", @@ -206,7 +206,7 @@ function renderAgentScaffoldFiles() { path: ".smithers/agents/codex.ts", preserveExisting: true, contents: [ - 'import { CodexAgent as SmithersCodexAgent } from "smithers-orchestrator";', + 'import { CodexAgent as SmithersCodexAgent } from "smthrs";', "", '// Built-in Codex CLI agent (cliEngine: "codex").', "// Tweak `model`, `cwd`, or uncomment extra options below to match your setup.", @@ -225,7 +225,7 @@ function renderAgentScaffoldFiles() { path: ".smithers/agents/opencode.ts", preserveExisting: true, contents: [ - 'import { OpenCodeAgent as SmithersOpenCodeAgent } from "smithers-orchestrator";', + 'import { OpenCodeAgent as SmithersOpenCodeAgent } from "smthrs";', "", '// Built-in OpenCode CLI agent (cliEngine: "opencode").', "// Tweak `model`, `cwd`, or uncomment extra options below to match your setup.", @@ -243,7 +243,7 @@ function renderAgentScaffoldFiles() { path: ".smithers/agents/antigravity.ts", preserveExisting: true, contents: [ - 'import { AntigravityAgent as SmithersAntigravityAgent } from "smithers-orchestrator";', + 'import { AntigravityAgent as SmithersAntigravityAgent } from "smthrs";', "", '// Built-in Antigravity CLI agent (cliEngine: "antigravity").', "// Tweak `model`, `cwd`, or uncomment extra options below to match your setup.", @@ -1052,8 +1052,8 @@ function renderComponents() { path: ".smithers/components/Review.tsx", contents: [ "// smithers-source: seeded", - "/** @jsxImportSource smithers-orchestrator */", - 'import { Parallel, Task, type AgentLike } from "smithers-orchestrator";', + "/** @jsxImportSource smthrs */", + 'import { Parallel, Task, type AgentLike } from "smthrs";', 'import { z } from "zod/v4";', 'import ReviewPrompt from "../prompts/review.mdx";', "", @@ -1102,8 +1102,8 @@ function renderComponents() { path: ".smithers/components/ValidationLoop.tsx", contents: [ "// smithers-source: seeded", - "/** @jsxImportSource smithers-orchestrator */", - 'import { Sequence, Loop, Task, type AgentLike } from "smithers-orchestrator";', + "/** @jsxImportSource smthrs */", + 'import { Sequence, Loop, Task, type AgentLike } from "smthrs";', 'import { z } from "zod/v4";', 'import { Review } from "~/components/Review";', 'import ImplementPrompt from "~/prompts/implement.mdx";', @@ -1167,8 +1167,8 @@ function renderComponents() { path: ".smithers/components/CommandProbe.tsx", contents: [ "// smithers-source: seeded", - "/** @jsxImportSource smithers-orchestrator */", - 'import { Task } from "smithers-orchestrator";', + "/** @jsxImportSource smthrs */", + 'import { Task } from "smthrs";', 'import { z } from "zod/v4";', "", "export const commandProbeOutputSchema = z.looseObject({", @@ -1189,8 +1189,8 @@ function renderComponents() { { path: ".smithers/components/GrillMe.tsx", contents: [ - "/** @jsxImportSource smithers-orchestrator */", - 'import { Loop, Sequence, Task, type AgentLike, type OutputTarget } from "smithers-orchestrator";', + "/** @jsxImportSource smthrs */", + 'import { Loop, Sequence, Task, type AgentLike, type OutputTarget } from "smthrs";', 'import { z } from "zod/v4";', 'import GrillMeSkill from "../prompts/grill-me.mdx";', 'import AskUserInstructions from "../prompts/ask-user-instructions.mdx";', @@ -1255,8 +1255,8 @@ function renderComponents() { path: ".smithers/components/ForEachFeature.tsx", contents: [ "// smithers-source: seeded", - "/** @jsxImportSource smithers-orchestrator */", - 'import { Parallel, Sequence, Task, type AgentLike } from "smithers-orchestrator";', + "/** @jsxImportSource smthrs */", + 'import { Parallel, Sequence, Task, type AgentLike } from "smthrs";', 'import { z } from "zod/v4";', 'import FeatureTaskPrompt from "~/prompts/feature-task.mdx";', "", @@ -1408,8 +1408,8 @@ function renderComponents() { path: ".smithers/components/FeatureEnum.tsx", contents: [ "// smithers-source: seeded", - "/** @jsxImportSource smithers-orchestrator */", - 'import { Sequence, Task, type AgentLike } from "smithers-orchestrator";', + "/** @jsxImportSource smthrs */", + 'import { Sequence, Task, type AgentLike } from "smthrs";', 'import { z } from "zod/v4";', 'import FeatureEnumScanPrompt from "../prompts/feature-enum-scan.mdx";', 'import FeatureEnumRefinePrompt from "../prompts/feature-enum-refine.mdx";', @@ -1634,7 +1634,7 @@ function renderWorkflowFile(id, displayName, body, metadata = {}) { ...(resolvedMetadata.description ? [`// smithers-description: ${resolvedMetadata.description}`] : []), ...(resolvedMetadata.tags?.length ? [`// smithers-tags: ${resolvedMetadata.tags.join(", ")}`] : []), ...(resolvedMetadata.aliases?.length ? [`// smithers-aliases: ${resolvedMetadata.aliases.join(", ")}`] : []), - "/** @jsxImportSource smithers-orchestrator */", + "/** @jsxImportSource smthrs */", ...body, "", ].join("\n"), @@ -1694,7 +1694,7 @@ function renderGatewayFile() { return { path: ".smithers/gateway.ts", contents: [ - 'import { Gateway, mdxPlugin } from "smithers-orchestrator";', + 'import { Gateway, mdxPlugin } from "smthrs";', 'import { dirname, resolve } from "node:path";', 'import { fileURLToPath } from "node:url";', "", @@ -1748,7 +1748,7 @@ function renderKanbanUiFile() { " useGatewayNodeOutput,", " useGatewayRunEvents,", " useGatewayRuns,", - '} from "smithers-orchestrator/gateway-react";', + '} from "smthrs/gateway-react";', "", 'const WORKFLOW_KEY = "kanban";', "", @@ -2172,7 +2172,7 @@ function renderPlanUiFile() { " useGatewayNodeOutput,", " useGatewayRunEvents,", " useGatewayRuns,", - '} from "smithers-orchestrator/gateway-react";', + '} from "smthrs/gateway-react";', ].join("\n"); return { path: ".smithers/ui/plan.tsx", @@ -2394,7 +2394,7 @@ function renderVcsUiFile() { " useGatewayNodeOutput,", " useGatewayRunEvents,", " useGatewayRuns,", - "} from \"smithers-orchestrator/gateway-react\";", + "} from \"smthrs/gateway-react\";", "", "const WORKFLOW_KEY = \"vcs\";", "const ACTIONS = [\"status\", \"log\", \"commit\", \"rebase-plan\"] as const;", @@ -2726,13 +2726,13 @@ function renderVcsUiFile() { } function renderWorkflows() { const sharedImports = [ - 'import { createSmithers } from "smithers-orchestrator";', + 'import { createSmithers } from "smthrs";', 'import { z } from "zod/v4";', 'import { agents } from "../agents";', ]; return [ renderWorkflowFile("vcs", "VCS", [ - "import { createSmithers, Task, Sequence } from 'smithers-orchestrator';", + "import { createSmithers, Task, Sequence } from 'smthrs';", "import { execFileSync } from 'node:child_process';", "import { z } from 'zod/v4';", "import { agents } from '../agents';", @@ -3943,8 +3943,8 @@ function renderWorkflows() { "// smithers-display-name: Kanban", "// smithers-description: Implement ticket files from `.smithers/tickets/` in worktree branches with a Kanban UI.", "// smithers-tags: tickets, ui, worktrees", - "/** @jsxImportSource smithers-orchestrator */", - 'import { createSmithers, Sequence, Parallel, Worktree } from "smithers-orchestrator";', + "/** @jsxImportSource smthrs */", + 'import { createSmithers, Sequence, Parallel, Worktree } from "smthrs";', 'import { readdirSync, readFileSync } from "node:fs";', 'import { resolve } from "node:path";', 'import { z } from "zod/v4";', @@ -4200,7 +4200,7 @@ function renderTemplateFiles(versions, env, projectRoot) { }, { path: ".smithers/preload.ts", - contents: ['import { mdxPlugin } from "smithers-orchestrator";', "", "mdxPlugin();", ""].join("\n"), + contents: ['import { mdxPlugin } from "smthrs";', "", "mdxPlugin();", ""].join("\n"), }, renderGatewayFile(), ...renderAgentScaffoldFiles(), diff --git a/docs/references/smithers/apps/cli/src/workflowUiSources.js b/docs/references/smithers/apps/cli/src/workflowUiSources.js index 9de19d705..c40342104 100644 --- a/docs/references/smithers/apps/cli/src/workflowUiSources.js +++ b/docs/references/smithers/apps/cli/src/workflowUiSources.js @@ -2,18 +2,18 @@ // full source of a .smithers/ui/<key>.tsx standalone React app, served by the // Gateway at /workflows/<key>. Regenerate via the build swarm + integration. export const WORKFLOW_UI_SOURCES = { - "implement": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smithers-orchestrator/gateway-react\";\n\nconst WORKFLOW_KEY = \"implement\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asBool(value: unknown): boolean | undefined {\n return typeof value === \"boolean\" ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\nfunction unwrapRow(value: unknown): Record<string, unknown> | null {\n const response = isRecord(value) ? value : {};\n const data = isRecord(response.data) ? response.data : response;\n const row = isRecord(data.row) ? data.row : isRecord(data) ? data : null;\n return row;\n}\n\ntype ImplementOutput = {\n summary: string;\n filesChanged: string[];\n allTestsPassing: boolean | undefined;\n};\nfunction extractImplement(value: unknown): ImplementOutput | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const filesChanged = Array.isArray(row.filesChanged)\n ? row.filesChanged.filter((f): f is string => typeof f === \"string\")\n : [];\n return { summary, filesChanged, allTestsPassing: asBool(row.allTestsPassing) };\n}\n\ntype ValidateOutput = {\n summary: string;\n allPassed: boolean | undefined;\n failingSummary: string | null;\n};\nfunction extractValidate(value: unknown): ValidateOutput | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const failingSummary = asString(row.failingSummary) ?? null;\n return { summary, allPassed: asBool(row.allPassed), failingSummary };\n}\n\ntype ReviewIssue = { severity: string; title: string; file: string | null; description: string };\ntype ReviewOutput = {\n reviewer: string;\n approved: boolean | undefined;\n feedback: string;\n issues: ReviewIssue[];\n};\nfunction extractReview(value: unknown): ReviewOutput | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const reviewer = asString(row.reviewer);\n const feedback = asString(row.feedback);\n if (reviewer === undefined && feedback === undefined) return null;\n const issues = Array.isArray(row.issues)\n ? row.issues\n .map((raw): ReviewIssue | null => {\n if (!isRecord(raw)) return null;\n const title = asString(raw.title);\n if (title === undefined) return null;\n return {\n severity: asString(raw.severity) ?? \"nit\",\n title,\n file: asString(raw.file) ?? null,\n description: asString(raw.description) ?? \"\",\n };\n })\n .filter((i): i is ReviewIssue => i !== null)\n : [];\n return {\n reviewer: reviewer ?? \"reviewer\",\n approved: asBool(row.approved),\n feedback: feedback ?? \"\",\n issues,\n };\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:420px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:1fr 280px; flex:1; overflow:hidden; }\",\n \".content { padding:20px; overflow:auto; }\",\n \".status-row { display:flex; align-items:center; gap:10px; margin-bottom:16px; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".banner { display:flex; align-items:center; gap:12px; padding:14px 18px; border-radius:10px; margin-bottom:18px; border:1px solid var(--border); font-weight:600; }\",\n \".banner.done { background:rgba(74,222,128,0.08); border-color:var(--ok); color:var(--ok); }\",\n \".banner.blocked { background:rgba(248,113,113,0.08); border-color:var(--err); color:var(--err); }\",\n \".banner.progress { background:rgba(94,106,210,0.1); border-color:var(--primary); color:#aab2f0; }\",\n \".banner-icon { font-size:18px; }\",\n \".banner-sub { font-weight:400; color:var(--muted); font-size:12px; }\",\n \".iteration { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".phase { background:var(--card); border:1px solid var(--border); border-radius:10px; margin-bottom:14px; overflow:hidden; }\",\n \".phase-head { display:flex; align-items:center; gap:10px; padding:14px 18px; cursor:pointer; user-select:none; }\",\n \".phase-head:hover { background:var(--panel); }\",\n \".phase-dot { flex:0 0 10px; width:10px; height:10px; border-radius:50%; background:var(--muted); }\",\n \".phase-dot.ok { background:var(--ok); }\",\n \".phase-dot.err { background:var(--err); }\",\n \".phase-dot.pending { background:var(--border); }\",\n \".phase-title { font-weight:600; font-size:13px; }\",\n \".phase-meta { margin-left:auto; font-size:11px; color:var(--muted); }\",\n \".phase-body { padding:0 18px 16px; }\",\n \".phase-empty { color:var(--muted); padding:0 18px 16px; font-size:12px; }\",\n \".kv { font-size:12px; color:var(--muted); text-transform:uppercase; letter-spacing:0.04em; margin:10px 0 6px; }\",\n \".summary-text { font-size:14px; line-height:1.55; }\",\n \".chips { display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; }\",\n \".chip { font-family:ui-monospace,monospace; font-size:11px; background:var(--panel); border:1px solid var(--border); border-radius:5px; padding:3px 8px; }\",\n \".reviewers { display:grid; grid-template-columns:1fr 1fr; gap:12px; }\",\n \".reviewer-card { background:var(--panel); border:1px solid var(--border); border-radius:8px; padding:14px; }\",\n \".reviewer-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px; }\",\n \".reviewer-name { font-weight:600; font-size:12px; }\",\n \".verdict { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".verdict.approved { color:var(--ok); border-color:var(--ok); }\",\n \".verdict.rejected { color:var(--err); border-color:var(--err); }\",\n \".reviewer-feedback { font-size:12px; color:var(--text); line-height:1.5; }\",\n \".issues { list-style:none; margin:10px 0 0; padding:0; }\",\n \".issue { display:flex; gap:8px; align-items:flex-start; padding:6px 0; border-top:1px solid var(--border); }\",\n \".sev { flex:0 0 auto; font-size:10px; font-weight:700; text-transform:uppercase; padding:2px 6px; border-radius:4px; }\",\n \".sev.critical { background:rgba(248,113,113,0.15); color:var(--err); }\",\n \".sev.major { background:rgba(251,146,60,0.15); color:#fb923c; }\",\n \".sev.minor { background:rgba(251,191,36,0.15); color:var(--warn); }\",\n \".sev.nit { background:var(--card); color:var(--muted); }\",\n \".issue-body { font-size:12px; }\",\n \".issue-title { font-weight:600; }\",\n \".issue-file { font-family:ui-monospace,monospace; font-size:11px; color:var(--muted); }\",\n \".feedback-block { background:#0e0e10; border:1px solid var(--err); border-radius:10px; padding:14px 16px; margin-bottom:14px; }\",\n \".feedback-block h2 { margin:0 0 8px; font-size:12px; text-transform:uppercase; letter-spacing:0.04em; color:var(--err); }\",\n \".feedback-pre { margin:0; white-space:pre-wrap; font-family:ui-monospace,monospace; font-size:11px; color:#ddd; max-height:260px; overflow:auto; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".empty-lead { max-width:420px; margin:0 auto 8px; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n].join(\"\\n\");\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\ntype PhaseCardProps = {\n testId: string;\n title: string;\n dot: string;\n meta: string;\n children: React.ReactNode;\n emptyText: string;\n hasContent: boolean;\n};\nfunction PhaseCard(props: PhaseCardProps) {\n const [open, setOpen] = useState(true);\n return (\n <section className=\"phase\" data-testid={props.testId}>\n <div className=\"phase-head\" onClick={() => setOpen((v) => !v)}>\n <span className={\"phase-dot \" + props.dot} />\n <span className=\"phase-title\">{props.title}</span>\n <span className=\"phase-meta\">{props.meta}</span>\n <span className=\"phase-meta\">{open ? \"collapse\" : \"expand\"}</span>\n </div>\n {open\n ? props.hasContent\n ? <div className=\"phase-body\">{props.children}</div>\n : <div className=\"phase-empty\">{props.emptyText}</div>\n : null}\n </section>\n );\n}\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Implement the requested change.\");\n const [busy, setBusy] = useState(false);\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const implementRuns = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? implementRuns[0]?.runId;\n const activeRun = implementRuns.find((r) => r.runId === activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n\n const implementOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"impl:implement\", iteration: 0 });\n const validateOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"impl:validate\", iteration: 0 });\n const review0Out = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"impl:review:0\", iteration: 0 });\n const review1Out = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"impl:review:1\", iteration: 0 });\n\n const implement = useMemo(() => extractImplement(implementOut.data), [implementOut.data]);\n const validate = useMemo(() => extractValidate(validateOut.data), [validateOut.data]);\n const review0 = useMemo(() => extractReview(review0Out.data), [review0Out.data]);\n const review1 = useMemo(() => extractReview(review1Out.data), [review1Out.data]);\n const reviews = useMemo(\n () => [review0, review1].filter((r): r is ReviewOutput => r !== null),\n [review0, review1],\n );\n\n const eventCount = (stream.events ?? []).length;\n\n const validationPassed = validate !== null && validate.allPassed !== false;\n const anyApproved = reviews.length > 0 && reviews.some((r) => r.approved === true);\n const anyRejected = reviews.some((r) => r.approved === false);\n const done = validationPassed && anyApproved;\n const blocked = (validate !== null && validate.allPassed === false) || (reviews.length > 0 && anyRejected && !anyApproved);\n\n const feedbackParts: string[] = [];\n if (validate && validate.allPassed === false && validate.failingSummary) {\n feedbackParts.push(\"VALIDATION FAILED:\\n\" + validate.failingSummary);\n }\n for (const review of reviews) {\n if (review.approved === false) {\n feedbackParts.push(\"REVIEWER REJECTED (\" + review.reviewer + \"):\\n\" + review.feedback);\n for (const issue of review.issues) {\n feedbackParts.push(\n \" [\" + issue.severity + \"] \" + issue.title + \": \" + issue.description + (issue.file ? \" (\" + issue.file + \")\" : \"\"),\n );\n }\n }\n }\n const feedback = feedbackParts.length > 0 ? feedbackParts.join(\"\\n\\n\") : null;\n\n const hasAnyOutput = implement !== null || validate !== null || reviews.length > 0;\n\n async function refresh() {\n await Promise.all([\n runsQuery.refetch(),\n implementOut.refetch(),\n validateOut.refetch(),\n review0Out.refetch(),\n review1Out.refetch(),\n ]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n const bannerClass = done ? \"done\" : blocked ? \"blocked\" : \"progress\";\n const bannerIcon = done ? \"✓\" : blocked ? \"✕\" : \"○\";\n const bannerLabel = done ? \"DONE\" : blocked ? \"BLOCKED\" : \"IN PROGRESS\";\n const bannerSub = done\n ? \"Validation passed and at least one reviewer approved.\"\n : blocked\n ? \"Validation failed or reviewers rejected this attempt.\"\n : \"Iterating: implement, validate, then review.\";\n\n const implDot = implement ? (implement.allTestsPassing === false ? \"err\" : \"ok\") : \"pending\";\n const valDot = validate ? (validate.allPassed === false ? \"err\" : \"ok\") : \"pending\";\n const revDot = reviews.length === 0 ? \"pending\" : anyApproved ? \"ok\" : \"err\";\n\n return (\n <main className=\"shell\" data-testid=\"implement-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Implement</h1>\n <span className=\"pill\" data-testid=\"implement-runid\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n {activeRun ? (\n <span className={\"badge \" + statusClass(activeRun.status)} data-testid=\"implement-status\">{activeRun.status ?? \"idle\"}</span>\n ) : null}\n <span className=\"iteration\" data-testid=\"implement-iteration\">Loop · up to 3 iterations</span>\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"implement-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What should we implement?\"\n />\n <button className=\"button\" data-testid=\"implement-refresh\" onClick={() => void refresh()} disabled={busy}>Refresh</button>\n {activeRun && statusClass(activeRun.status) === \"running\" ? (\n <button className=\"button danger\" data-testid=\"implement-cancel\" onClick={() => void cancel()} disabled={busy}>Cancel</button>\n ) : null}\n <button className=\"button primary\" data-testid=\"implement-launch\" onClick={() => void launch()} disabled={busy}>Implement</button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"content\">\n {hasAnyOutput ? (\n <>\n <div className={\"banner \" + bannerClass} data-testid=\"implement-completion\">\n <span className=\"banner-icon\">{bannerIcon}</span>\n <span>\n {bannerLabel}\n <div className=\"banner-sub\">{bannerSub}</div>\n </span>\n </div>\n\n <PhaseCard\n testId=\"implement-phase-implement\"\n title=\"Implementation\"\n dot={implDot}\n meta={implement ? (implement.allTestsPassing === false ? \"tests failing\" : \"tests passing\") : \"pending\"}\n emptyText=\"Waiting for the implement task to produce output.\"\n hasContent={implement !== null}\n >\n {implement ? (\n <>\n <div className=\"kv\">Summary</div>\n <div className=\"summary-text\">{implement.summary}</div>\n <div className=\"kv\">Files changed</div>\n {implement.filesChanged.length > 0 ? (\n <div className=\"chips\">\n {implement.filesChanged.map((f, i) => (\n <span className=\"chip\" key={i}>{f}</span>\n ))}\n </div>\n ) : (\n <div className=\"phase-empty\" style={{ padding: 0 }}>No files reported as changed.</div>\n )}\n </>\n ) : null}\n </PhaseCard>\n\n <PhaseCard\n testId=\"implement-phase-validate\"\n title=\"Validation\"\n dot={valDot}\n meta={validate ? (validate.allPassed === false ? \"fail\" : \"pass\") : \"pending\"}\n emptyText=\"Waiting for the validate task to produce output.\"\n hasContent={validate !== null}\n >\n {validate ? (\n <>\n <div className=\"kv\">Summary</div>\n <div className=\"summary-text\">{validate.summary}</div>\n {validate.allPassed === false && validate.failingSummary ? (\n <>\n <div className=\"kv\">Failing summary</div>\n <pre className=\"feedback-pre\">{validate.failingSummary}</pre>\n </>\n ) : null}\n </>\n ) : null}\n </PhaseCard>\n\n <PhaseCard\n testId=\"implement-phase-review\"\n title=\"Review\"\n dot={revDot}\n meta={reviews.length > 0 ? reviews.length + \" reviewer(s)\" : \"pending\"}\n emptyText=\"Waiting for reviewers to produce verdicts.\"\n hasContent={reviews.length > 0}\n >\n <div className=\"reviewers\">\n {reviews.map((r, i) => (\n <div className=\"reviewer-card\" key={i} data-testid={\"implement-reviewer-\" + i}>\n <div className=\"reviewer-head\">\n <span className=\"reviewer-name\">{r.reviewer}</span>\n <span className={\"verdict \" + (r.approved ? \"approved\" : \"rejected\")}>\n {r.approved ? \"Approved\" : \"Rejected\"}\n </span>\n </div>\n <div className=\"reviewer-feedback\">{r.feedback || \"No feedback text.\"}</div>\n {r.issues.length > 0 ? (\n <ul className=\"issues\">\n {r.issues.map((issue, j) => (\n <li className=\"issue\" key={j}>\n <span className={\"sev \" + issue.severity}>{issue.severity}</span>\n <span className=\"issue-body\">\n <span className=\"issue-title\">{issue.title}</span>\n {issue.file ? <span className=\"issue-file\"> · {issue.file}</span> : null}\n <div>{issue.description}</div>\n </span>\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"phase-empty\" style={{ padding: \"8px 0 0\" }}>No issues raised.</div>\n )}\n </div>\n ))}\n </div>\n </PhaseCard>\n\n {feedback ? (\n <div className=\"feedback-block\" data-testid=\"implement-feedback\">\n <h2>Blocking feedback</h2>\n <pre className=\"feedback-pre\">{feedback}</pre>\n </div>\n ) : null}\n\n <div className=\"status-row\" style={{ marginTop: 16, color: \"var(--muted)\" }}>\n <span>{eventCount} events</span>\n {implementOut.loading || validateOut.loading ? <span>· refreshing…</span> : null}\n </div>\n </>\n ) : (\n <div className=\"empty\" data-testid=\"implement-empty\">\n <div className=\"empty-lead\">\n Implement a code change with automated validation and code review. The workflow will iterate up to 3 times\n if validation or reviews fail, incorporating feedback each round.\n </div>\n <div>{activeRunId ? \"Waiting for the first task to run…\" : \"No run yet.\"}</div>\n <button className=\"button primary\" data-testid=\"implement-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Implement\n </button>\n </div>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent runs</div>\n {implementRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"implement-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {implementRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", - "research-plan-implement": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smithers-orchestrator/gateway-react\";\n\nconst WORKFLOW_KEY = \"research-plan-implement\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asBool(value: unknown): boolean | undefined {\n return typeof value === \"boolean\" ? value : undefined;\n}\nfunction asStringArray(value: unknown): string[] {\n return Array.isArray(value) ? value.filter((v): v is string => typeof v === \"string\") : [];\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\nfunction rowOf(value: unknown): Record<string, unknown> {\n const response = isRecord(value) ? value : {};\n const data = isRecord(response.data) ? response.data : response;\n const row = isRecord(data.row) ? data.row : isRecord(data) ? data : {};\n return row;\n}\n\ntype ResearchOutput = { summary: string; keyFindings: string[] };\nfunction extractResearch(value: unknown): ResearchOutput | null {\n const row = rowOf(value);\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n return { summary, keyFindings: asStringArray(row.keyFindings) };\n}\n\ntype PlanOutput = { summary: string; steps: string[] };\nfunction extractPlan(value: unknown): PlanOutput | null {\n const row = rowOf(value);\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n return { summary, steps: asStringArray(row.steps) };\n}\n\ntype ImplementOutput = { summary: string; filesChanged: string[]; allTestsPassing: boolean };\nfunction extractImplement(value: unknown): ImplementOutput | null {\n const row = rowOf(value);\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n return {\n summary,\n filesChanged: asStringArray(row.filesChanged),\n allTestsPassing: asBool(row.allTestsPassing) ?? true,\n };\n}\n\ntype ValidateOutput = { summary: string; allPassed: boolean; failingSummary: string | null };\nfunction extractValidate(value: unknown): ValidateOutput | null {\n const row = rowOf(value);\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n return {\n summary,\n allPassed: asBool(row.allPassed) ?? true,\n failingSummary: asString(row.failingSummary) ?? null,\n };\n}\n\ntype ReviewIssue = { severity: string; title: string; file: string | null; description: string };\ntype ReviewOutput = { reviewer: string; approved: boolean; feedback: string; issues: ReviewIssue[] };\nfunction extractReview(value: unknown): ReviewOutput | null {\n const row = rowOf(value);\n const reviewer = asString(row.reviewer);\n const approved = asBool(row.approved);\n if (reviewer === undefined && approved === undefined) return null;\n const rawIssues = Array.isArray(row.issues) ? row.issues : [];\n const issues: ReviewIssue[] = rawIssues\n .filter(isRecord)\n .map((i) => ({\n severity: asString(i.severity) ?? \"nit\",\n title: asString(i.title) ?? \"Issue\",\n file: asString(i.file) ?? null,\n description: asString(i.description) ?? \"\",\n }));\n return {\n reviewer: reviewer ?? \"reviewer\",\n approved: approved ?? false,\n feedback: asString(row.feedback) ?? \"\",\n issues,\n };\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); flex-wrap:wrap; }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; flex-wrap:wrap; }\",\n \".prompt { flex:1; min-width:200px; max-width:420px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".check { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); cursor:pointer; user-select:none; }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:1fr 280px; flex:1; overflow:hidden; }\",\n \".content { padding:20px; overflow:auto; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".badge.ok { color:var(--ok); border-color:var(--ok); }\",\n \".badge.err { color:var(--err); border-color:var(--err); }\",\n \".badge.warn { color:var(--warn); border-color:var(--warn); }\",\n \".badge.tdd { color:var(--primary); border-color:var(--primary); }\",\n \".stage { margin-bottom:24px; }\",\n \".stage-label { font-size:11px; text-transform:uppercase; letter-spacing:0.08em; color:var(--muted); margin:0 0 10px; display:flex; align-items:center; gap:8px; }\",\n \".panel { background:var(--card); border:1px solid var(--border); border-radius:10px; margin-bottom:14px; overflow:hidden; }\",\n \".panel-head { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:12px 16px; cursor:pointer; }\",\n \".panel-head h2 { margin:0; font-size:12px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".panel-head .left { display:flex; align-items:center; gap:8px; min-width:0; }\",\n \".panel-body { padding:0 16px 16px; }\",\n \".summary-text { font-size:14px; line-height:1.55; }\",\n \".findings { list-style:none; margin:8px 0 0; padding:0; }\",\n \".findings li { display:flex; gap:8px; padding:6px 0; border-bottom:1px solid var(--border); }\",\n \".findings li:last-child { border-bottom:0; }\",\n \".dot { flex:0 0 6px; height:6px; margin-top:7px; border-radius:50%; background:var(--primary); }\",\n \".steps { list-style:none; margin:8px 0 0; padding:0; }\",\n \".steps li { display:flex; gap:12px; padding:10px 0; border-bottom:1px solid var(--border); }\",\n \".steps li:last-child { border-bottom:0; }\",\n \".step-num { flex:0 0 24px; height:24px; border-radius:50%; background:var(--panel); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--muted); }\",\n \".sweep { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }\",\n \".kv { display:flex; gap:8px; font-size:12px; color:var(--muted); margin-top:6px; }\",\n \".files { list-style:none; margin:8px 0 0; padding:0; }\",\n \".files li { font-family:ui-monospace,monospace; font-size:12px; padding:5px 0; border-bottom:1px solid var(--border); }\",\n \".files li:last-child { border-bottom:0; }\",\n \".reviewer-card { background:var(--panel); border:1px solid var(--border); border-radius:8px; padding:12px; margin-bottom:10px; }\",\n \".reviewer-head { display:flex; align-items:center; justify-content:space-between; gap:8px; }\",\n \".sev-row { display:flex; gap:6px; margin-top:8px; flex-wrap:wrap; }\",\n \".sev { font-size:10px; font-weight:600; text-transform:uppercase; padding:2px 6px; border-radius:4px; border:1px solid var(--border); color:var(--muted); }\",\n \".sev.critical { color:var(--err); border-color:var(--err); }\",\n \".sev.major { color:var(--warn); border-color:var(--warn); }\",\n \".sev.minor { color:var(--primary); border-color:var(--primary); }\",\n \".feedback { font-size:12px; color:var(--muted); margin-top:8px; }\",\n \".feedback-banner { background:rgba(248,113,113,0.08); border:1px solid var(--err); border-radius:8px; padding:12px 16px; margin-bottom:14px; }\",\n \".feedback-banner h3 { margin:0 0 6px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--err); }\",\n \".feedback-banner pre { margin:0; white-space:pre-wrap; font-family:ui-monospace,monospace; font-size:12px; color:var(--text); }\",\n \".gate { display:flex; align-items:center; gap:10px; padding:14px 16px; border:1px solid var(--border); border-radius:10px; background:var(--card); }\",\n \".muted { color:var(--muted); }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".launch-form { max-width:520px; margin:48px auto; background:var(--card); border:1px solid var(--border); border-radius:12px; padding:24px; }\",\n \".launch-form h2 { margin:0 0 4px; font-size:16px; }\",\n \".launch-form p { margin:0 0 18px; color:var(--muted); }\",\n \".launch-form .prompt { width:100%; max-width:none; height:36px; margin-bottom:14px; }\",\n \".launch-form .row { display:flex; align-items:center; justify-content:space-between; gap:12px; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n \"@media (max-width:860px){ .main { grid-template-columns:1fr; } .sidebar { display:none; } .sweep { grid-template-columns:1fr; } }\",\n].join(\"\\n\");\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nfunction Panel(props: {\n title: string;\n testId: string;\n badge?: { text: string; cls: string } | null;\n pending: boolean;\n pendingText: string;\n children?: any;\n}) {\n const [open, setOpen] = useState(true);\n return (\n <div className=\"panel\" data-testid={props.testId}>\n <div className=\"panel-head\" onClick={() => setOpen((o) => !o)}>\n <div className=\"left\">\n <h2>{props.title}</h2>\n {props.badge ? <span className={\"badge \" + props.badge.cls}>{props.badge.text}</span> : null}\n </div>\n <span className=\"muted\">{open ? \"collapse\" : \"expand\"}</span>\n </div>\n {open ? (\n <div className=\"panel-body\">\n {props.pending ? <div className=\"muted\">{props.pendingText}</div> : props.children}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Implement the requested change.\");\n const [tdd, setTdd] = useState(false);\n const [busy, setBusy] = useState(false);\n\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const runs = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? runs[0]?.runId;\n const activeRun = runs.find((r) => r.runId === activeRunId);\n\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const researchOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"research\", iteration: 0 });\n const planOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"plan\", iteration: 0 });\n const implementOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"impl:implement\", iteration: 0 });\n const validateOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"impl:validate\", iteration: 0 });\n const reviewOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"impl:review:0\", iteration: 0 });\n\n const research = useMemo(() => extractResearch(researchOut.data), [researchOut.data]);\n const plan = useMemo(() => extractPlan(planOut.data), [planOut.data]);\n const implement = useMemo(() => extractImplement(implementOut.data), [implementOut.data]);\n const validate = useMemo(() => extractValidate(validateOut.data), [validateOut.data]);\n const review = useMemo(() => extractReview(reviewOut.data), [reviewOut.data]);\n\n const eventCount = (stream.events ?? []).length;\n const running = statusClass(activeRun?.status) === \"running\";\n\n async function refresh() {\n await Promise.all([\n runsQuery.refetch(),\n researchOut.refetch(),\n planOut.refetch(),\n implementOut.refetch(),\n validateOut.refetch(),\n reviewOut.refetch(),\n ]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt, tdd } });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function rewind() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.rewindRun({ runId: activeRunId, frameNo: 0, confirm: true });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n const validationFailed = validate !== null && validate.allPassed === false;\n const reviewerApproved = review !== null && review.approved === true;\n const blockingFeedback = validationFailed\n ? validate.failingSummary\n : review !== null && review.approved === false\n ? review.feedback\n : null;\n\n function sevCount(sev: string) {\n return review ? review.issues.filter((i) => i.severity === sev).length : 0;\n }\n\n return (\n <main className=\"shell\" data-testid=\"research-plan-implement-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Research → Plan → Implement</h1>\n <span className=\"pill\" data-testid=\"research-plan-implement-runid\">\n {activeRunId ? shortRunId(activeRunId) : \"No run\"}\n </span>\n {activeRun ? <span className={\"badge \" + statusClass(activeRun.status)}>{activeRun.status ?? \"idle\"}</span> : null}\n {tdd ? <span className=\"badge tdd\">TDD</span> : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"research-plan-implement-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What should we build?\"\n />\n <label className=\"check\">\n <input type=\"checkbox\" checked={tdd} onChange={(e) => setTdd(e.currentTarget.checked)} /> TDD\n </label>\n <button className=\"button\" data-testid=\"research-plan-implement-refresh\" onClick={() => void refresh()} disabled={busy}>\n Refresh\n </button>\n {running ? (\n <button className=\"button danger\" data-testid=\"research-plan-implement-cancel\" onClick={() => void cancel()} disabled={busy}>\n Cancel\n </button>\n ) : null}\n {activeRunId && !running ? (\n <button className=\"button\" data-testid=\"research-plan-implement-rewind\" onClick={() => void rewind()} disabled={busy}>\n Rewind\n </button>\n ) : null}\n <button className=\"button primary\" data-testid=\"research-plan-implement-launch\" onClick={() => void launch()} disabled={busy}>\n Launch\n </button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"content\">\n {!activeRunId ? (\n <div className=\"launch-form\" data-testid=\"research-plan-implement-empty\">\n <h2>Launch a workflow</h2>\n <p>Describe the change. Research informs the plan, then an implement → validate → review loop runs until reviewers approve.</p>\n <input\n className=\"prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What should we build?\"\n />\n <div className=\"row\">\n <label className=\"check\">\n <input type=\"checkbox\" checked={tdd} onChange={(e) => setTdd(e.currentTarget.checked)} /> Test-driven (write tests first)\n </label>\n <button className=\"button primary\" data-testid=\"research-plan-implement-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Launch Workflow\n </button>\n </div>\n </div>\n ) : (\n <>\n <div className=\"stage\">\n <p className=\"stage-label\">Stage 1 · Research & Plan</p>\n\n <div data-testid=\"research-plan-implement-research\">\n <Panel\n title=\"Research\"\n testId=\"research-panel\"\n badge={research ? { text: \"ready\", cls: \"ok\" } : null}\n pending={research === null}\n pendingText=\"Gathering context...\"\n >\n {research ? (\n <>\n <div className=\"summary-text\">{research.summary}</div>\n {research.keyFindings.length > 0 ? (\n <ul className=\"findings\">\n {research.keyFindings.map((f, i) => (\n <li key={i}>\n <span className=\"dot\" />\n <span>{f}</span>\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"kv\">No key findings recorded.</div>\n )}\n </>\n ) : null}\n </Panel>\n </div>\n\n <div data-testid=\"research-plan-implement-plan\">\n <Panel\n title=\"Plan\"\n testId=\"plan-panel\"\n badge={tdd ? { text: \"test-first\", cls: \"tdd\" } : plan ? { text: \"ready\", cls: \"ok\" } : null}\n pending={plan === null}\n pendingText=\"Creating plan...\"\n >\n {plan ? (\n <>\n <div className=\"summary-text\">{plan.summary}</div>\n {plan.steps.length > 0 ? (\n <ol className=\"steps\">\n {plan.steps.map((s, i) => (\n <li key={i}>\n <span className=\"step-num\">{i + 1}</span>\n <span>{s}</span>\n </li>\n ))}\n </ol>\n ) : (\n <div className=\"kv\">No steps in this plan.</div>\n )}\n </>\n ) : null}\n </Panel>\n </div>\n </div>\n\n <div className=\"stage\">\n <p className=\"stage-label\">\n Stage 2 · Implementation Loop\n <span className=\"badge warn\">impl:loop · max 3</span>\n </p>\n {blockingFeedback ? (\n <div className=\"feedback-banner\" data-testid=\"research-plan-implement-feedback\">\n <h3>Feedback fed back to implement</h3>\n <pre>{blockingFeedback}</pre>\n </div>\n ) : null}\n <div className=\"sweep\">\n <div data-testid=\"research-plan-implement-implement\">\n <Panel\n title=\"Implement\"\n testId=\"implement-panel\"\n badge={\n implement\n ? implement.allTestsPassing\n ? { text: \"tests pass\", cls: \"ok\" }\n : { text: \"tests fail\", cls: \"err\" }\n : null\n }\n pending={implement === null}\n pendingText=\"Implementing...\"\n >\n {implement ? (\n <>\n <div className=\"summary-text\">{implement.summary}</div>\n {implement.filesChanged.length > 0 ? (\n <ul className=\"files\">\n {implement.filesChanged.map((f, i) => (\n <li key={i}>{f}</li>\n ))}\n </ul>\n ) : (\n <div className=\"kv\">No files changed yet.</div>\n )}\n </>\n ) : null}\n </Panel>\n </div>\n\n <div data-testid=\"research-plan-implement-validate\">\n <Panel\n title=\"Validate\"\n testId=\"validate-panel\"\n badge={\n validate\n ? validate.allPassed\n ? { text: \"passed\", cls: \"ok\" }\n : { text: \"failed\", cls: \"err\" }\n : null\n }\n pending={validate === null}\n pendingText=\"Validating...\"\n >\n {validate ? (\n <>\n <div className=\"summary-text\">{validate.summary}</div>\n {validate.failingSummary ? (\n <div className=\"feedback\">{validate.failingSummary}</div>\n ) : (\n <div className=\"kv\">No failures.</div>\n )}\n </>\n ) : null}\n </Panel>\n </div>\n\n <div data-testid=\"research-plan-implement-review\">\n <Panel\n title=\"Review\"\n testId=\"review-panel\"\n badge={\n review\n ? review.approved\n ? { text: \"approved\", cls: \"ok\" }\n : { text: \"rejected\", cls: \"err\" }\n : null\n }\n pending={review === null}\n pendingText=\"Awaiting reviewer...\"\n >\n {review ? (\n <div className=\"reviewer-card\">\n <div className=\"reviewer-head\">\n <strong>{review.reviewer}</strong>\n <span className={\"badge \" + (review.approved ? \"ok\" : \"err\")}>\n {review.approved ? \"approved\" : \"rejected\"}\n </span>\n </div>\n {review.feedback ? <div className=\"feedback\">{review.feedback}</div> : null}\n {review.issues.length > 0 ? (\n <div className=\"sev-row\">\n <span className=\"sev critical\">critical {sevCount(\"critical\")}</span>\n <span className=\"sev major\">major {sevCount(\"major\")}</span>\n <span className=\"sev minor\">minor {sevCount(\"minor\")}</span>\n <span className=\"sev\">nit {sevCount(\"nit\")}</span>\n </div>\n ) : (\n <div className=\"kv\">No issues raised.</div>\n )}\n </div>\n ) : null}\n </Panel>\n </div>\n </div>\n </div>\n\n <div className=\"stage\">\n <p className=\"stage-label\">Stage 3 · Completion Gate</p>\n <div className=\"gate\" data-testid=\"research-plan-implement-gate\">\n {reviewerApproved && validate && validate.allPassed ? (\n <>\n <span className=\"badge ok\">complete</span>\n <span>Validation passed and reviewers approved.</span>\n </>\n ) : (\n <>\n <span className=\"badge warn\">awaiting reviewer approvals</span>\n <span className=\"muted\">\n Multi-reviewer approval is the final gate before completion.\n </span>\n </>\n )}\n <span className=\"muted\" style={{ marginLeft: \"auto\" }}>{eventCount} events</span>\n </div>\n </div>\n </>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent runs</div>\n {runs.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"research-plan-implement-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {runs.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", - "review": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smithers-orchestrator/gateway-react\";\n\nconst WORKFLOW_KEY = \"review\";\nconst MAX_REVIEWERS = 6;\nconst SEVERITIES = [\"critical\", \"major\", \"minor\", \"nit\"] as const;\ntype Severity = (typeof SEVERITIES)[number];\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\ntype ReviewIssue = { severity: Severity; title: string; file: string | null; description: string };\ntype ReviewRow = {\n index: number;\n reviewer: string;\n approved: boolean;\n feedback: string;\n issues: ReviewIssue[];\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\nfunction asSeverity(value: unknown): Severity {\n return value === \"critical\" || value === \"major\" || value === \"minor\" || value === \"nit\" ? value : \"nit\";\n}\n\nfunction extractReview(index: number, value: unknown): ReviewRow | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : {};\n const reviewer = asString(row.reviewer);\n if (reviewer === undefined && typeof row.approved !== \"boolean\") return null;\n const rawIssues = Array.isArray(row.issues) ? row.issues : [];\n const issues: ReviewIssue[] = rawIssues.filter(isRecord).map((it) => ({\n severity: asSeverity(it.severity),\n title: asString(it.title) ?? \"Untitled issue\",\n file: asString(it.file) ?? null,\n description: asString(it.description) ?? \"\",\n }));\n return {\n index,\n reviewer: reviewer ?? \"reviewer-\" + (index + 1),\n approved: row.approved === true,\n feedback: asString(row.feedback) ?? \"\",\n issues,\n };\n}\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; --crit:#f87171; --major:#fb923c; --minor:#fbbf24; --nit:#8a8a8e; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:420px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:1fr 280px; flex:1; overflow:hidden; }\",\n \".content { padding:20px; overflow:auto; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".verdict { display:flex; align-items:center; gap:18px; background:var(--card); border:1px solid var(--border); border-radius:12px; padding:18px 22px; margin-bottom:18px; }\",\n \".verdict.approved { box-shadow:inset 4px 0 0 var(--ok); }\",\n \".verdict.blocked { box-shadow:inset 4px 0 0 var(--err); }\",\n \".verdict-mark { font-size:34px; line-height:1; }\",\n \".verdict.approved .verdict-mark { color:var(--ok); }\",\n \".verdict.blocked .verdict-mark { color:var(--err); }\",\n \".verdict-body { flex:1; }\",\n \".verdict-headline { font-size:16px; font-weight:600; margin-bottom:4px; }\",\n \".verdict-sub { color:var(--muted); font-size:12px; }\",\n \".approval-bar { height:8px; border-radius:4px; background:var(--panel); overflow:hidden; margin-top:8px; width:220px; }\",\n \".approval-bar > span { display:block; height:100%; background:var(--ok); }\",\n \".sev-summary { display:flex; gap:8px; margin-left:auto; }\",\n \".section-head { font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); margin:22px 0 10px; }\",\n \".lanes { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:12px; }\",\n \".lane { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:14px; cursor:pointer; }\",\n \".lane.approved { box-shadow:inset 3px 0 0 var(--ok); }\",\n \".lane.blocked { box-shadow:inset 3px 0 0 var(--err); }\",\n \".lane-top { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px; }\",\n \".lane-name { font-weight:600; }\",\n \".lane-feedback { color:var(--muted); font-size:12px; max-height:60px; overflow:hidden; }\",\n \".lane.open .lane-feedback { max-height:none; }\",\n \".lane-badges { display:flex; gap:6px; flex-wrap:wrap; margin-top:10px; }\",\n \".sev { font-size:10px; font-weight:700; text-transform:uppercase; padding:2px 7px; border-radius:99px; border:1px solid var(--border); }\",\n \".sev.critical { color:var(--crit); border-color:var(--crit); }\",\n \".sev.major { color:var(--major); border-color:var(--major); }\",\n \".sev.minor { color:var(--minor); border-color:var(--minor); }\",\n \".sev.nit { color:var(--nit); border-color:var(--nit); }\",\n \".sev.active { background:var(--card); }\",\n \".filters { display:flex; gap:8px; align-items:center; margin-bottom:12px; flex-wrap:wrap; }\",\n \".filter-btn { cursor:pointer; }\",\n \".issue { background:var(--card); border:1px solid var(--border); border-radius:8px; padding:12px 14px; margin-bottom:8px; }\",\n \".issue-top { display:flex; align-items:center; gap:10px; }\",\n \".issue-title { font-weight:600; }\",\n \".issue-file { font-family:ui-monospace,monospace; font-size:11px; color:var(--muted); }\",\n \".issue-desc { color:var(--muted); font-size:12px; margin-top:6px; }\",\n \".issue-from { font-size:11px; color:var(--muted); margin-top:6px; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".empty .desc { max-width:420px; margin:8px auto 0; font-size:12px; line-height:1.6; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; flex-direction:column; gap:4px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .row-line { display:flex; justify-content:space-between; gap:8px; align-items:center; }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n \".run-row .approve-count { font-size:11px; color:var(--muted); }\",\n].join(\"\\n\");\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Review the current repository changes.\");\n const [busy, setBusy] = useState(false);\n const [openLanes, setOpenLanes] = useState<Record<number, boolean>>({});\n const [sevFilter, setSevFilter] = useState<Severity | \"all\">(\"all\");\n\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const reviewRuns = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? reviewRuns[0]?.runId;\n const activeRun = reviewRuns.find((r) => r.runId === activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const eventCount = (stream.events ?? []).length;\n\n // Probe a fixed set of reviewer lanes (Parallel node ids review:0 .. review:N).\n const n0 = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"review:0\", iteration: 0 });\n const n1 = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"review:1\", iteration: 0 });\n const n2 = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"review:2\", iteration: 0 });\n const n3 = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"review:3\", iteration: 0 });\n const n4 = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"review:4\", iteration: 0 });\n const n5 = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"review:5\", iteration: 0 });\n const nodeQueries = [n0, n1, n2, n3, n4, n5];\n\n const reviews = useMemo(() => {\n const out: ReviewRow[] = [];\n for (let i = 0; i < MAX_REVIEWERS; i++) {\n const parsed = extractReview(i, nodeQueries[i].data);\n if (parsed) out.push(parsed);\n }\n return out;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [n0.data, n1.data, n2.data, n3.data, n4.data, n5.data]);\n\n const approvedCount = reviews.filter((r) => r.approved).length;\n const allApproved = reviews.length > 0 && approvedCount === reviews.length;\n const allIssues = reviews.flatMap((r) => r.issues.map((it) => ({ ...it, reviewer: r.reviewer })));\n const sevCounts = SEVERITIES.reduce((acc, s) => {\n acc[s] = allIssues.filter((it) => it.severity === s).length;\n return acc;\n }, {} as Record<Severity, number>);\n const visibleIssues = sevFilter === \"all\" ? allIssues : allIssues.filter((it) => it.severity === sevFilter);\n\n async function refresh() {\n await Promise.all([runsQuery.refetch(), ...nodeQueries.map((q) => q.refetch())]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n return (\n <main className=\"shell\" data-testid=\"review-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Review</h1>\n <span className=\"pill\" data-testid=\"review-runid\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n {activeRun ? (\n <span className={\"badge \" + statusClass(activeRun.status)} data-testid=\"review-status\">{activeRun.status ?? \"idle\"}</span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"review-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What should be reviewed?\"\n />\n <button className=\"button\" data-testid=\"review-refresh\" onClick={() => void refresh()} disabled={busy}>Refresh</button>\n {activeRun && statusClass(activeRun.status) === \"running\" ? (\n <button className=\"button danger\" data-testid=\"review-cancel\" onClick={() => void cancel()} disabled={busy}>Cancel</button>\n ) : null}\n <button className=\"button primary\" data-testid=\"review-launch\" onClick={() => void launch()} disabled={busy}>Launch Review</button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"content\">\n {reviews.length > 0 ? (\n <>\n <div className={\"verdict \" + (allApproved ? \"approved\" : \"blocked\")} data-testid=\"review-verdict\">\n <span className=\"verdict-mark\">{allApproved ? \"✓\" : \"✗\"}</span>\n <div className=\"verdict-body\">\n <div className=\"verdict-headline\">\n {allApproved ? \"Approved by all reviewers\" : \"Blocked — not all reviewers approved\"}\n </div>\n <div className=\"verdict-sub\">{approvedCount} of {reviews.length} reviewers approved</div>\n <div className=\"approval-bar\">\n <span style={{ width: (reviews.length ? (approvedCount / reviews.length) * 100 : 0) + \"%\" }} />\n </div>\n </div>\n <div className=\"sev-summary\">\n {SEVERITIES.map((s) => (\n <span key={s} className={\"sev \" + s}>{s} {sevCounts[s]}</span>\n ))}\n </div>\n </div>\n\n <div className=\"section-head\">Reviewers ({reviews.length})</div>\n <div className=\"lanes\" data-testid=\"review-reviewers\">\n {reviews.map((r) => (\n <div\n key={r.index}\n className={\"lane \" + (r.approved ? \"approved\" : \"blocked\") + (openLanes[r.index] ? \" open\" : \"\")}\n data-testid={\"review-reviewer-\" + r.index}\n onClick={() => setOpenLanes((prev) => ({ ...prev, [r.index]: !prev[r.index] }))}\n >\n <div className=\"lane-top\">\n <span className=\"lane-name\">{r.reviewer}</span>\n <span className={\"badge \" + (r.approved ? \"finished\" : \"failed\")}>{r.approved ? \"approved\" : \"denied\"}</span>\n </div>\n <div className=\"lane-feedback\">{r.feedback || \"No feedback provided.\"}</div>\n <div className=\"lane-badges\">\n {SEVERITIES.map((s) => {\n const c = r.issues.filter((it) => it.severity === s).length;\n return c > 0 ? <span key={s} className={\"sev \" + s}>{s} {c}</span> : null;\n })}\n {r.issues.length === 0 ? <span className=\"sev nit\">no issues</span> : null}\n </div>\n </div>\n ))}\n </div>\n\n <div className=\"section-head\">Issues</div>\n <div className=\"filters\">\n <button\n className={\"sev nit filter-btn\" + (sevFilter === \"all\" ? \" active\" : \"\")}\n data-testid=\"review-filter-all\"\n onClick={() => setSevFilter(\"all\")}\n >\n all {allIssues.length}\n </button>\n {SEVERITIES.map((s) => (\n <button\n key={s}\n className={\"sev \" + s + \" filter-btn\" + (sevFilter === s ? \" active\" : \"\")}\n data-testid={\"review-filter-\" + s}\n onClick={() => setSevFilter(s)}\n >\n {s} {sevCounts[s]}\n </button>\n ))}\n </div>\n <div data-testid=\"review-issues\">\n {visibleIssues.map((it, i) => (\n <div className=\"issue\" key={i} data-testid=\"review-issue\">\n <div className=\"issue-top\">\n <span className={\"sev \" + it.severity}>{it.severity}</span>\n <span className=\"issue-title\">{it.title}</span>\n {it.file ? <span className=\"issue-file\">{it.file}</span> : null}\n </div>\n {it.description ? <div className=\"issue-desc\">{it.description}</div> : null}\n <div className=\"issue-from\">flagged by {it.reviewer}</div>\n </div>\n ))}\n {visibleIssues.length === 0 ? (\n <div className=\"empty\" data-testid=\"review-issues-empty\">\n {allIssues.length === 0\n ? \"No issues raised — the reviewers found nothing to flag.\"\n : \"No \" + sevFilter + \" issues.\"}\n </div>\n ) : null}\n </div>\n\n <div className=\"section-head\" style={{ color: \"var(--muted)\" }}>\n {eventCount} events{nodeQueries.some((q) => q.loading) ? \" · refreshing…\" : \"\"}\n </div>\n </>\n ) : (\n <div className=\"empty\" data-testid=\"review-empty\">\n <div>{activeRunId ? \"Waiting for reviewers…\" : \"No review runs yet.\"}</div>\n <div className=\"desc\">\n Launch a review to have the code changes examined by reviewers in parallel. Each reviewer reports\n an approve/deny verdict, written feedback, and a list of issues by severity. The verdict above\n turns green only when every reviewer approves.\n </div>\n <button className=\"button primary\" data-testid=\"review-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Launch Review\n </button>\n </div>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent reviews</div>\n {reviewRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"review-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <div className=\"row-line\">\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </div>\n {r.runId === activeRunId && reviews.length > 0 ? (\n <span className=\"approve-count\">{approvedCount}/{reviews.length} approved</span>\n ) : null}\n </button>\n ))}\n {reviewRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", - "research": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRun,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smithers-orchestrator/gateway-react\";\n\nconst WORKFLOW_KEY = \"research\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asNumber(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\ntype ResearchOutput = { summary: string; keyFindings: string[] };\nfunction extractResearch(value: unknown): ResearchOutput | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : {};\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const keyFindings = Array.isArray(row.keyFindings)\n ? row.keyFindings.filter((f): f is string => typeof f === \"string\")\n : [];\n return { summary, keyFindings };\n}\n\nfunction extractPrompt(runData: unknown): string | undefined {\n if (!isRecord(runData)) return undefined;\n const direct = asString(runData.prompt);\n if (direct !== undefined) return direct;\n const input = isRecord(runData.input) ? runData.input : undefined;\n if (input) {\n const fromInput = asString(input.prompt);\n if (fromInput !== undefined) return fromInput;\n }\n return undefined;\n}\n\nfunction extractTimes(runData: unknown, fallbackCreated: number | undefined) {\n const r = isRecord(runData) ? runData : {};\n const started =\n asNumber(r.startedAt) ?? asNumber(r.startedAtMs) ?? asNumber(r.createdAtMs) ?? asNumber(r.createdAt) ?? fallbackCreated;\n const finished = asNumber(r.finishedAt) ?? asNumber(r.finishedAtMs);\n return { started, finished };\n}\n\nfunction formatClock(ms: number | undefined) {\n if (ms === undefined) return \"--\";\n try {\n return new Date(ms).toLocaleTimeString();\n } catch {\n return \"--\";\n }\n}\nfunction formatElapsed(started: number | undefined, finished: number | undefined) {\n if (started === undefined) return \"--\";\n const end = finished ?? Date.now();\n const secs = Math.max(0, Math.round((end - started) / 1000));\n if (secs < 60) return secs + \"s\";\n const mins = Math.floor(secs / 60);\n const rem = secs % 60;\n return mins + \"m \" + rem + \"s\";\n}\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n if (status === \"waiting-approval\" || status === \"waiting-timer\") return \"running\";\n return \"\";\n}\nfunction isRunning(status: string | undefined) {\n return statusClass(status) === \"running\";\n}\nfunction isFinished(status: string | undefined) {\n return status === \"finished\";\n}\n\nfunction eventLabel(ev: unknown): { text: string; kind: string } {\n if (!isRecord(ev)) return { text: String(ev), kind: \"\" };\n const type = asString(ev.type) ?? asString(ev.kind) ?? \"event\";\n const node = asString(ev.nodeId) ?? asString(ev.taskId);\n const message = asString(ev.message) ?? asString(ev.text) ?? asString(ev.chunk);\n const parts = [type];\n if (node) parts.push(node);\n const head = parts.join(\" · \");\n return { text: message ? head + \" — \" + message : head, kind: type };\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; --accent:#7dd3fc; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; display:flex; align-items:center; gap:8px; }\",\n \".glyph { color:var(--accent); }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); font-family:ui-monospace,monospace; }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:460px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button.ghost { background:transparent; }\",\n \".button.tiny { height:22px; padding:0 8px; font-size:11px; border-radius:5px; }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:1fr 260px; flex:1; overflow:hidden; }\",\n \".content { padding:18px 20px; overflow:auto; display:flex; flex-direction:column; gap:16px; }\",\n \".statusbar { display:flex; align-items:center; gap:18px; background:var(--card); border:1px solid var(--border); border-radius:10px; padding:12px 16px; flex-wrap:wrap; }\",\n \".stat { display:flex; flex-direction:column; gap:2px; }\",\n \".stat .k { font-size:10px; text-transform:uppercase; letter-spacing:0.05em; color:var(--muted); }\",\n \".stat .v { font-size:13px; font-weight:600; }\",\n \".statusbar .spacer { flex:1; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px 18px; }\",\n \".card h2 { margin:0 0 10px; font-size:11px; text-transform:uppercase; letter-spacing:0.05em; color:var(--muted); display:flex; align-items:center; justify-content:space-between; }\",\n \".query-text { font-size:14px; line-height:1.55; white-space:pre-wrap; word-break:break-word; }\",\n \".error-text { color:var(--err); font-size:13px; white-space:pre-wrap; }\",\n \".stream { background:#0a0a0c; border:1px solid var(--border); border-radius:10px; display:flex; flex-direction:column; min-height:140px; max-height:300px; overflow:hidden; }\",\n \".stream-head { padding:10px 14px; font-size:11px; text-transform:uppercase; letter-spacing:0.05em; color:var(--muted); border-bottom:1px solid var(--border); display:flex; justify-content:space-between; }\",\n \".stream-body { overflow:auto; padding:8px 0; font-family:ui-monospace,monospace; font-size:11.5px; }\",\n \".stream-line { padding:3px 14px; color:var(--muted); white-space:pre-wrap; word-break:break-word; border-left:2px solid transparent; }\",\n \".stream-line.task { color:var(--accent); border-left-color:var(--accent); }\",\n \".stream-empty { padding:24px 14px; color:var(--muted); text-align:center; }\",\n \".summary-text { font-size:15px; line-height:1.6; white-space:pre-wrap; word-break:break-word; }\",\n \".findings { list-style:none; margin:10px 0 0; padding:0; }\",\n \".findings li { display:flex; gap:10px; align-items:flex-start; padding:10px 0; border-bottom:1px solid var(--border); }\",\n \".findings li:last-child { border-bottom:0; }\",\n \".find-dot { flex:0 0 8px; width:8px; height:8px; margin-top:6px; border-radius:50%; background:var(--accent); }\",\n \".find-text { flex:1; line-height:1.5; }\",\n \".find-copy { flex:0 0 auto; opacity:0.6; }\",\n \".find-copy:hover { opacity:1; }\",\n \".findings-empty { color:var(--muted); padding:10px 0; font-style:italic; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .launch-form { display:flex; gap:8px; max-width:520px; margin:16px auto 0; }\",\n \".empty .launch-form input { flex:1; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.05em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; align-items:center; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n].join(\"\\n\");\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Research the given topic.\");\n const [busy, setBusy] = useState(false);\n const [copied, setCopied] = useState<string | undefined>(undefined);\n\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const researchRuns = useMemo(\n () =>\n ((runsQuery.data ?? []) as RunSummary[]).filter(\n (r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY,\n ),\n [runsQuery.data],\n );\n\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? researchRuns[0]?.runId;\n const activeSummary = researchRuns.find((r) => r.runId === activeRunId);\n\n const runQuery = useGatewayRun(activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const researchOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"research\", iteration: 0 });\n const research = useMemo(() => extractResearch(researchOutput.data), [researchOutput.data]);\n\n const runData = runQuery.data;\n const status = asString(isRecord(runData) ? runData.status : undefined) ?? activeSummary?.status;\n const errorMsg = asString(isRecord(runData) ? runData.error : undefined);\n const queryPrompt = extractPrompt(runData);\n const { started, finished } = extractTimes(runData, activeSummary?.createdAtMs);\n const events = stream.events ?? [];\n\n async function refresh() {\n await Promise.all([runsQuery.refetch(), runQuery.refetch?.(), researchOutput.refetch()]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function rewind() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n if (typeof actions.rewindRun === \"function\") {\n await actions.rewindRun({ runId: activeRunId, frameNo: 0, confirm: true });\n } else {\n await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt: queryPrompt ?? prompt } });\n }\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n function copy(text: string, tag: string) {\n try {\n if (typeof navigator !== \"undefined\" && navigator.clipboard) {\n void navigator.clipboard.writeText(text);\n }\n } catch {\n /* ignore */\n }\n setCopied(tag);\n }\n\n const hasActiveRun = Boolean(activeRunId);\n\n return (\n <main className=\"shell\" data-testid=\"research-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>\n <span className=\"glyph\">◎</span> Research\n </h1>\n <span className=\"pill\" data-testid=\"research-runid\">\n {activeRunId ? shortRunId(activeRunId) : \"No run\"}\n </span>\n {status ? (\n <span className={\"badge \" + statusClass(status)} data-testid=\"research-status\">\n {status}\n </span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"research-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What should we research?\"\n />\n <button className=\"button\" data-testid=\"research-refresh\" onClick={() => void refresh()} disabled={busy}>\n Refresh\n </button>\n <button\n className=\"button primary\"\n data-testid=\"research-launch\"\n onClick={() => void launch()}\n disabled={busy}\n >\n New Research\n </button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"content\">\n {hasActiveRun ? (\n <>\n <section className=\"statusbar\" data-testid=\"research-statusbar\">\n <div className=\"stat\">\n <span className=\"k\">Status</span>\n <span className={\"badge \" + statusClass(status)}>{status ?? \"idle\"}</span>\n </div>\n <div className=\"stat\">\n <span className=\"k\">Started</span>\n <span className=\"v\">{formatClock(started)}</span>\n </div>\n <div className=\"stat\">\n <span className=\"k\">Elapsed</span>\n <span className=\"v\">{formatElapsed(started, finished)}</span>\n </div>\n <div className=\"stat\">\n <span className=\"k\">Events</span>\n <span className=\"v\">{events.length}</span>\n </div>\n <div className=\"spacer\" />\n {isRunning(status) ? (\n <button\n className=\"button danger\"\n data-testid=\"research-cancel\"\n onClick={() => void cancel()}\n disabled={busy}\n >\n Cancel\n </button>\n ) : null}\n {isFinished(status) ? (\n <button\n className=\"button ghost\"\n data-testid=\"research-rewind\"\n onClick={() => void rewind()}\n disabled={busy}\n >\n Rewind\n </button>\n ) : null}\n </section>\n\n <section className=\"card\" data-testid=\"research-query\">\n <h2>Research query</h2>\n <div className=\"query-text\">{queryPrompt ?? \"(no prompt recorded for this run)\"}</div>\n {errorMsg ? <div className=\"error-text\" style={{ marginTop: 10 }}>{errorMsg}</div> : null}\n </section>\n\n <section className=\"stream\" data-testid=\"research-stream\">\n <div className=\"stream-head\">\n <span>Progress stream</span>\n <span>{events.length} events</span>\n </div>\n <div className=\"stream-body\">\n {events.length === 0 ? (\n <div className=\"stream-empty\">\n {isRunning(status) ? \"Waiting for the agent to report progress…\" : \"No progress events recorded.\"}\n </div>\n ) : (\n events.map((ev, i) => {\n const { text, kind } = eventLabel(ev);\n const isTask = kind.toLowerCase().indexOf(\"task\") >= 0;\n return (\n <div key={i} className={\"stream-line\" + (isTask ? \" task\" : \"\")}>\n {text}\n </div>\n );\n })\n )}\n </div>\n </section>\n\n <section className=\"card\" data-testid=\"research-summary\">\n <h2>\n <span>Findings</span>\n {research ? (\n <button\n className=\"button ghost tiny\"\n data-testid=\"research-copy-summary\"\n onClick={() => copy(research.summary, \"summary\")}\n >\n {copied === \"summary\" ? \"Copied\" : \"Copy summary\"}\n </button>\n ) : null}\n </h2>\n {research ? (\n <>\n <div className=\"summary-text\" data-testid=\"research-summary-text\">\n {research.summary}\n </div>\n {research.keyFindings.length > 0 ? (\n <ul className=\"findings\" data-testid=\"research-findings\">\n {research.keyFindings.map((f, i) => (\n <li key={i} data-testid=\"research-finding\">\n <span className=\"find-dot\" />\n <span className=\"find-text\">{f}</span>\n <button\n className=\"button ghost tiny find-copy\"\n onClick={() => copy(f, \"finding-\" + i)}\n >\n {copied === \"finding-\" + i ? \"Copied\" : \"Copy\"}\n </button>\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"findings-empty\" data-testid=\"research-findings-empty\">\n No discrete key findings were extracted for this run.\n </div>\n )}\n </>\n ) : (\n <div className=\"findings-empty\" data-testid=\"research-summary-pending\">\n {isRunning(status)\n ? \"Research in progress — findings will appear here when the agent finishes.\"\n : \"No research output is available for this run yet.\"}\n </div>\n )}\n </section>\n </>\n ) : (\n <div className=\"empty\" data-testid=\"research-empty\">\n <div>Select a research run from the history, or launch a new research run by entering a prompt.</div>\n <div className=\"launch-form\">\n <input\n className=\"prompt\"\n data-testid=\"research-empty-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What should we research?\"\n />\n <button\n className=\"button primary\"\n data-testid=\"research-launch-empty\"\n onClick={() => void launch()}\n disabled={busy}\n >\n Start Research\n </button>\n </div>\n </div>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Research history</div>\n {researchRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"research-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {researchRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", - "ticket-create": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smithers-orchestrator/gateway-react\";\n\nconst WORKFLOW_KEY = \"ticket-create\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number; input?: unknown };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\ntype Ticket = { title: string; description: string; acceptanceCriteria: string[] };\nfunction extractTicket(value: unknown): Ticket | null {\n const response = isRecord(value) ? value : {};\n const data = isRecord(response.data) ? response.data : response;\n const row = isRecord(data.row) ? data.row : isRecord(data) ? data : {};\n const title = asString(row.title);\n const description = asString(row.description);\n if (title === undefined && description === undefined) return null;\n const acceptanceCriteria = Array.isArray(row.acceptanceCriteria)\n ? row.acceptanceCriteria.filter((c): c is string => typeof c === \"string\")\n : [];\n return { title: title ?? \"\", description: description ?? \"\", acceptanceCriteria };\n}\n\nfunction inputPrompt(run: RunSummary | undefined): string | undefined {\n if (!run) return undefined;\n const input = isRecord(run.input) ? run.input : undefined;\n return input ? asString(input.prompt) : undefined;\n}\n\nfunction ticketMarkdown(ticket: Ticket): string {\n const lines = [\"# \" + ticket.title, \"\", ticket.description, \"\"];\n if (ticket.acceptanceCriteria.length > 0) {\n lines.push(\"## Acceptance Criteria\", \"\");\n for (const c of ticket.acceptanceCriteria) lines.push(\"- [ ] \" + c);\n }\n return lines.join(\"\\n\");\n}\n\nfunction copyText(text: string) {\n if (typeof navigator !== \"undefined\" && navigator.clipboard) {\n void navigator.clipboard.writeText(text);\n }\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); font-family:ui-monospace,monospace; }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:420px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".button.tiny { height:24px; padding:0 8px; font-size:11px; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".main { display:grid; grid-template-columns:1fr 280px; flex:1; overflow:hidden; }\",\n \".content { padding:24px; overflow:auto; display:flex; flex-direction:column; align-items:center; }\",\n \".col { width:100%; max-width:680px; }\",\n \".request { background:var(--panel); border:1px solid var(--border); border-radius:8px; padding:10px 14px; margin-bottom:16px; }\",\n \".request .label { font-size:10px; text-transform:uppercase; letter-spacing:0.06em; color:var(--muted); margin-bottom:4px; }\",\n \".request .text { font-size:13px; }\",\n \".status-row { display:flex; align-items:center; gap:10px; margin-bottom:18px; }\",\n \".status-msg { color:var(--muted); font-size:12px; }\",\n \".ticket-card { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:24px 26px; margin-bottom:18px; }\",\n \".ticket-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:14px; }\",\n \".ticket-title { margin:0; font-size:20px; font-weight:650; line-height:1.3; }\",\n \".ticket-section { margin-top:18px; }\",\n \".ticket-section h3 { margin:0 0 8px; font-size:11px; text-transform:uppercase; letter-spacing:0.06em; color:var(--muted); display:flex; align-items:center; justify-content:space-between; }\",\n \".ticket-desc { font-size:14px; line-height:1.6; white-space:pre-wrap; }\",\n \".ac-list { list-style:none; margin:0; padding:0; }\",\n \".ac-list li { display:flex; gap:10px; padding:9px 0; border-bottom:1px solid var(--border); align-items:flex-start; }\",\n \".ac-list li:last-child { border-bottom:0; }\",\n \".ac-check { flex:0 0 auto; width:18px; height:18px; border-radius:5px; border:1px solid var(--border); background:var(--panel); cursor:pointer; display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--ok); padding:0; }\",\n \".ac-check.done { border-color:var(--ok); }\",\n \".ac-text { flex:1; }\",\n \".ac-text.done { color:var(--muted); text-decoration:line-through; }\",\n \".ac-empty { color:var(--muted); font-size:13px; padding:6px 0; }\",\n \".actions-footer { display:flex; gap:8px; flex-wrap:wrap; padding-top:4px; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty h2 { color:var(--text); font-size:16px; margin:0 0 6px; }\",\n \".empty .form { display:flex; flex-direction:column; gap:10px; max-width:420px; margin:18px auto 0; }\",\n \".empty textarea { min-height:84px; padding:10px 12px; border:1px solid var(--border); border-radius:8px; background:var(--panel); color:var(--text); resize:vertical; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n].join(\"\\n\");\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Create a ticket for the requested work.\");\n const [busy, setBusy] = useState(false);\n const [done, setDone] = useState<Record<string, boolean>>({});\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const ticketRuns = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? ticketRuns[0]?.runId;\n const activeRun = ticketRuns.find((r) => r.runId === activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const ticketOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"ticket\", iteration: 0 });\n const ticket = useMemo(() => extractTicket(ticketOutput.data), [ticketOutput.data]);\n const requestText = inputPrompt(activeRun);\n const eventCount = (stream.events ?? []).length;\n const running = statusClass(activeRun?.status) === \"running\";\n const failed = statusClass(activeRun?.status) === \"failed\";\n\n async function refresh() {\n await Promise.all([runsQuery.refetch(), ticketOutput.refetch()]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n setDone({});\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n function toggleDone(key: string) {\n setDone((prev) => ({ ...prev, [key]: !prev[key] }));\n }\n\n return (\n <main className=\"shell\" data-testid=\"ticket-create-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Ticket Create</h1>\n <span className=\"pill\" data-testid=\"ticket-create-runid\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n {activeRun ? (\n <span className={\"badge \" + statusClass(activeRun.status)} data-testid=\"ticket-create-status\">{activeRun.status ?? \"idle\"}</span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"ticket-create-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"Describe the work to ticket…\"\n />\n <button className=\"button\" data-testid=\"ticket-create-refresh\" onClick={() => void refresh()} disabled={busy}>Refresh</button>\n {running ? (\n <button className=\"button danger\" data-testid=\"ticket-create-cancel\" onClick={() => void cancel()} disabled={busy}>Cancel</button>\n ) : null}\n <button className=\"button primary\" data-testid=\"ticket-create-launch\" onClick={() => void launch()} disabled={busy}>Generate Ticket</button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"content\">\n <div className=\"col\">\n {requestText ? (\n <div className=\"request\" data-testid=\"ticket-create-request\">\n <div className=\"label\">Request</div>\n <div className=\"text\">{requestText}</div>\n </div>\n ) : null}\n\n <div className=\"status-row\" data-testid=\"ticket-create-generation-status\">\n {running ? <span className=\"badge running\">Generating…</span> : null}\n {!running && ticket ? <span className=\"badge finished\">Ready</span> : null}\n {failed ? <span className=\"badge failed\">Failed</span> : null}\n <span className=\"status-msg\">{eventCount} events{ticketOutput.loading ? \" · refreshing…\" : \"\"}</span>\n </div>\n\n {ticket ? (\n <div className=\"ticket-card\" data-testid=\"ticket-create-card\">\n <div className=\"ticket-head\">\n <h2 className=\"ticket-title\" data-testid=\"ticket-create-title\">{ticket.title || \"Untitled ticket\"}</h2>\n <button className=\"button tiny\" onClick={() => copyText(ticketMarkdown(ticket))}>Copy all</button>\n </div>\n\n <div className=\"ticket-section\">\n <h3>\n Description\n <button className=\"button tiny\" onClick={() => copyText(ticket.description)}>Copy</button>\n </h3>\n <div className=\"ticket-desc\" data-testid=\"ticket-create-description\">\n {ticket.description || \"No description provided.\"}\n </div>\n </div>\n\n <div className=\"ticket-section\" data-testid=\"ticket-create-acceptance\">\n <h3>Acceptance Criteria</h3>\n {ticket.acceptanceCriteria.length > 0 ? (\n <ul className=\"ac-list\">\n {ticket.acceptanceCriteria.map((c, i) => {\n const key = String(i);\n const checked = !!done[key];\n return (\n <li key={i} data-testid=\"ticket-create-criterion\">\n <button\n className={\"ac-check\" + (checked ? \" done\" : \"\")}\n aria-label=\"toggle done\"\n onClick={() => toggleDone(key)}\n >\n {checked ? \"✓\" : \"\"}\n </button>\n <span className={\"ac-text\" + (checked ? \" done\" : \"\")}>{c}</span>\n </li>\n );\n })}\n </ul>\n ) : (\n <div className=\"ac-empty\">No acceptance criteria were generated for this ticket.</div>\n )}\n </div>\n\n <div className=\"ticket-section actions-footer\">\n <button className=\"button\" onClick={() => void launch()} disabled={busy}>Regenerate</button>\n <button className=\"button\" onClick={() => copyText(ticketMarkdown(ticket))}>Copy Markdown</button>\n {running ? <button className=\"button danger\" onClick={() => void cancel()} disabled={busy}>Cancel</button> : null}\n </div>\n </div>\n ) : (\n <div className=\"empty\" data-testid=\"ticket-create-empty\">\n {failed ? (\n <>\n <h2>Generation failed</h2>\n <div>Something went wrong producing this ticket.</div>\n <button className=\"button primary\" style={{ marginTop: 14 }} onClick={() => void launch()} disabled={busy}>Try Again</button>\n </>\n ) : running || activeRunId ? (\n <>\n <h2>{running ? \"Generating ticket…\" : \"Waiting for the ticket…\"}</h2>\n <div>The agent is turning the request into a structured ticket.</div>\n </>\n ) : (\n <>\n <h2>No ticket yet</h2>\n <div>Describe the work you want captured and generate a ticket.</div>\n <div className=\"form\">\n <textarea\n data-testid=\"ticket-create-empty-input\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"e.g. Add rate limiting to the login endpoint…\"\n />\n <button className=\"button primary\" data-testid=\"ticket-create-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Generate Ticket\n </button>\n </div>\n </>\n )}\n </div>\n )}\n </div>\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent tickets</div>\n {ticketRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"ticket-create-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {ticketRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", - "tickets-create": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smithers-orchestrator/gateway-react\";\n\nconst WORKFLOW_KEY = \"tickets-create\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\ntype Ticket = { title: string; description: string; acceptanceCriteria: string[] };\ntype TicketsOutput = { summary: string; tickets: Ticket[] };\n\nfunction extractTickets(value: unknown): TicketsOutput | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : {};\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const rawTickets = Array.isArray(row.tickets) ? row.tickets : [];\n const tickets: Ticket[] = rawTickets\n .filter((t): t is Record<string, unknown> => isRecord(t))\n .map((t) => ({\n title: asString(t.title) ?? \"Untitled ticket\",\n description: asString(t.description) ?? \"\",\n acceptanceCriteria: Array.isArray(t.acceptanceCriteria)\n ? t.acceptanceCriteria.filter((c): c is string => typeof c === \"string\")\n : [],\n }));\n return { summary, tickets };\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:420px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:1fr 280px; flex:1; overflow:hidden; }\",\n \".content { padding:20px; overflow:auto; }\",\n \".status-row { display:flex; align-items:center; gap:10px; margin-bottom:16px; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".summary-card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:18px 20px; margin-bottom:18px; }\",\n \".summary-card h2 { margin:0 0 6px; font-size:12px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".summary-text { font-size:15px; line-height:1.55; }\",\n \".section-head { display:flex; align-items:center; justify-content:space-between; margin:0 0 12px; }\",\n \".section-head h2 { margin:0; font-size:12px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".count-chip { font-size:11px; color:var(--muted); background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:2px 9px; }\",\n \".tickets { display:flex; flex-direction:column; gap:14px; }\",\n \".ticket-card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px 18px; }\",\n \".ticket-top { display:flex; align-items:flex-start; gap:10px; }\",\n \".ticket-idx { flex:0 0 26px; height:26px; border-radius:7px; background:var(--panel); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--muted); }\",\n \".ticket-title { font-size:14px; font-weight:600; flex:1; }\",\n \".ticket-desc { margin:10px 0 0; color:var(--text); }\",\n \".ac-label { margin:14px 0 6px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".ac-list { list-style:none; margin:0; padding:0; }\",\n \".ac-list li { display:flex; gap:8px; padding:5px 0; color:var(--text); }\",\n \".ac-list li::before { content:'\\\\2713'; color:var(--ok); flex:0 0 auto; }\",\n \".ac-empty { color:var(--muted); font-style:italic; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; display:flex; flex-direction:column; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n \".events { border-top:1px solid var(--border); margin-top:auto; }\",\n \".events-head { width:100%; text-align:left; padding:10px 16px; border:0; background:transparent; color:var(--muted); cursor:pointer; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; display:flex; justify-content:space-between; }\",\n \".events-body { max-height:160px; overflow:auto; padding:0 16px 10px; }\",\n \".event-line { font-family:ui-monospace,monospace; font-size:11px; color:var(--muted); padding:3px 0; border-bottom:1px solid var(--border); }\",\n \".event-line:last-child { border-bottom:0; }\",\n].join(\"\\n\");\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Break this work into tickets.\");\n const [busy, setBusy] = useState(false);\n const [eventsOpen, setEventsOpen] = useState(true);\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const ticketRuns = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? ticketRuns[0]?.runId;\n const activeRun = ticketRuns.find((r) => r.runId === activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const ticketsOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"tickets\", iteration: 0 });\n const result = useMemo(() => extractTickets(ticketsOutput.data), [ticketsOutput.data]);\n const events = stream.events ?? [];\n const running = statusClass(activeRun?.status) === \"running\";\n\n async function refresh() {\n await Promise.all([runsQuery.refetch(), ticketsOutput.refetch()]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n return (\n <main className=\"shell\" data-testid=\"tickets-create-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Tickets Create</h1>\n <span className=\"pill\" data-testid=\"tickets-create-runid\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n {activeRun ? (\n <span className={\"badge \" + statusClass(activeRun.status)} data-testid=\"tickets-create-status\">{activeRun.status ?? \"idle\"}</span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"tickets-create-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What work should we break into tickets?\"\n />\n <button className=\"button\" data-testid=\"tickets-create-refresh\" onClick={() => void refresh()} disabled={busy}>Refresh</button>\n {running ? (\n <button className=\"button danger\" data-testid=\"tickets-create-cancel\" onClick={() => void cancel()} disabled={busy}>Cancel</button>\n ) : null}\n <button className=\"button primary\" data-testid=\"tickets-create-launch\" onClick={() => void launch()} disabled={busy}>Generate Tickets</button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"content\">\n {result ? (\n <>\n <div className=\"summary-card\" data-testid=\"tickets-create-summary-panel\">\n <h2>Breakdown summary</h2>\n <div className=\"summary-text\" data-testid=\"tickets-create-summary\">{result.summary}</div>\n </div>\n\n <div className=\"section-head\">\n <h2>Tickets</h2>\n <span className=\"count-chip\" data-testid=\"tickets-create-count\">{result.tickets.length}</span>\n </div>\n\n {result.tickets.length > 0 ? (\n <div className=\"tickets\" data-testid=\"tickets-create-tickets\">\n {result.tickets.map((ticket, i) => (\n <article className=\"ticket-card\" data-testid=\"tickets-create-ticket\" key={i}>\n <div className=\"ticket-top\">\n <span className=\"ticket-idx\">{i + 1}</span>\n <span className=\"ticket-title\">{ticket.title}</span>\n </div>\n {ticket.description ? <p className=\"ticket-desc\">{ticket.description}</p> : null}\n <div className=\"ac-label\">Acceptance criteria</div>\n {ticket.acceptanceCriteria.length > 0 ? (\n <ul className=\"ac-list\">\n {ticket.acceptanceCriteria.map((c, j) => (\n <li key={j}>{c}</li>\n ))}\n </ul>\n ) : (\n <div className=\"ac-empty\">No acceptance criteria specified.</div>\n )}\n </article>\n ))}\n </div>\n ) : (\n <div className=\"empty\" data-testid=\"tickets-create-tickets-empty\">\n <div>No tickets were generated for this run.</div>\n <div style={{ marginTop: 6, fontSize: 12 }}>The summary is shown above; try a more specific request.</div>\n </div>\n )}\n </>\n ) : (\n <div className=\"empty\" data-testid=\"tickets-create-empty\">\n <div>{activeRunId ? (running ? \"Generating tickets…\" : \"Waiting for ticket output…\") : \"No tickets yet.\"}</div>\n <button className=\"button primary\" data-testid=\"tickets-create-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Generate Tickets\n </button>\n </div>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent runs</div>\n {ticketRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"tickets-create-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {ticketRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n\n <div className=\"events\" data-testid=\"tickets-create-events\">\n <button className=\"events-head\" onClick={() => setEventsOpen((v) => !v)}>\n <span>Live events ({events.length})</span>\n <span>{eventsOpen ? \"Hide\" : \"Show\"}</span>\n </button>\n {eventsOpen ? (\n <div className=\"events-body\">\n {events.length > 0 ? (\n events.slice(-30).map((ev, i) => (\n <div className=\"event-line\" key={i}>{asString((ev as Record<string, unknown>).type) ?? \"event\"}</div>\n ))\n ) : (\n <div className=\"event-line\">No events yet.</div>\n )}\n </div>\n ) : null}\n </div>\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", - "ralph": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smithers-orchestrator/gateway-react\";\n\nconst WORKFLOW_KEY = \"ralph\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\nfunction extractSummary(value: unknown): string | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : {};\n return asString(row.summary) ?? null;\n}\n\ntype IterationEvent = { seq: number; iteration: number; label: string; tsMs?: number };\n\nfunction extractIterations(events: unknown[]): IterationEvent[] {\n const out: IterationEvent[] = [];\n for (const raw of events) {\n if (!isRecord(raw)) continue;\n const nodeId = asString(raw.nodeId) ?? asString(raw.node);\n if (nodeId !== \"ralph\") continue;\n const kind = asString(raw.type) ?? asString(raw.kind) ?? \"\";\n if (kind.indexOf(\"complete\") === -1 && kind.indexOf(\"finish\") === -1 && kind.indexOf(\"output\") === -1) continue;\n const iterRaw = raw.iteration ?? raw.iter;\n const iteration = typeof iterRaw === \"number\" ? iterRaw : out.length;\n const seq = typeof raw.seq === \"number\" ? raw.seq : out.length;\n const tsMs = typeof raw.tsMs === \"number\" ? raw.tsMs : typeof raw.timestampMs === \"number\" ? raw.timestampMs : undefined;\n out.push({ seq, iteration, label: kind, tsMs });\n }\n return out;\n}\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nfunction fmtTime(ms: number | undefined) {\n if (!ms) return \"\";\n try {\n return new Date(ms).toLocaleTimeString();\n } catch (_e) {\n return \"\";\n }\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input,textarea { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".sub { font-size:11px; color:var(--muted); }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); font-family:ui-monospace,monospace; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); color:var(--muted); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".main { display:grid; grid-template-columns:1fr 280px; flex:1; overflow:hidden; }\",\n \".center { display:flex; flex-direction:column; overflow:hidden; }\",\n \".launch { padding:16px 20px; border-bottom:1px solid var(--border); background:var(--panel); }\",\n \".launch-row { display:flex; gap:10px; align-items:flex-end; }\",\n \".launch-field { flex:1; display:flex; flex-direction:column; gap:6px; }\",\n \".launch-field label { font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".prompt { width:100%; min-height:54px; resize:vertical; padding:8px 10px; border:1px solid var(--border); border-radius:6px; background:var(--bg); color:var(--text); }\",\n \".meta { display:flex; gap:16px; margin-top:10px; align-items:center; }\",\n \".meta .stat { display:flex; flex-direction:column; }\",\n \".meta .stat .k { font-size:10px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".meta .stat .v { font-size:14px; font-weight:600; }\",\n \".actions { display:flex; gap:8px; }\",\n \".button { height:34px; padding:0 14px; border:1px solid var(--border); border-radius:6px; background:var(--bg); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".timeline { flex:1; overflow:auto; padding:20px; }\",\n \".timeline-head { font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); margin-bottom:14px; }\",\n \".iter-card { position:relative; background:var(--card); border:1px solid var(--border); border-radius:10px; padding:14px 16px 14px 18px; margin-bottom:14px; }\",\n \".iter-card::before { content:''; position:absolute; left:0; top:0; bottom:0; width:3px; border-radius:3px 0 0 3px; background:var(--primary); }\",\n \".iter-card .row { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:8px; }\",\n \".iter-tag { font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:0.04em; color:var(--primary); }\",\n \".iter-ts { font-size:11px; color:var(--muted); font-family:ui-monospace,monospace; }\",\n \".iter-summary { font-size:14px; line-height:1.55; white-space:pre-wrap; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:16px; }\",\n \".empty h3 { color:var(--text); margin:0 0 8px; font-size:15px; }\",\n \".empty p { max-width:420px; margin:0 auto; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; align-items:center; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n].join(\"\\n\");\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Continue working on the current task.\");\n const [busy, setBusy] = useState(false);\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const ralphRuns = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? ralphRuns[0]?.runId;\n const activeRun = ralphRuns.find((r) => r.runId === activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const ralphOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"ralph\", iteration: 0 });\n\n const events = stream.events ?? [];\n const iterations = useMemo(() => extractIterations(events), [events]);\n const latestSummary = useMemo(() => extractSummary(ralphOutput.data), [ralphOutput.data]);\n const iterationCount = iterations.length > 0 ? iterations.length : latestSummary ? 1 : 0;\n const isRunning = statusClass(activeRun?.status) === \"running\";\n\n async function refresh() {\n await Promise.all([runsQuery.refetch(), ralphOutput.refetch()]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function resume() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.resumeRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n return (\n <main className=\"shell\" data-testid=\"ralph-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Ralph</h1>\n <span className=\"sub\">Continuous maintenance loop</span>\n <span className=\"pill\" data-testid=\"ralph-runid\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n {activeRun ? (\n <span className={\"badge \" + statusClass(activeRun.status)} data-testid=\"ralph-status\">{activeRun.status ?? \"idle\"}</span>\n ) : null}\n </div>\n <div className=\"actions\">\n <button className=\"button\" data-testid=\"ralph-refresh\" onClick={() => void refresh()} disabled={busy}>Refresh</button>\n {isRunning ? (\n <button className=\"button danger\" data-testid=\"ralph-cancel\" onClick={() => void cancel()} disabled={busy}>Cancel loop</button>\n ) : null}\n {activeRun && statusClass(activeRun.status) === \"failed\" ? (\n <button className=\"button\" data-testid=\"ralph-resume\" onClick={() => void resume()} disabled={busy}>Resume</button>\n ) : null}\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"center\">\n <div className=\"launch\" data-testid=\"ralph-launch\">\n <div className=\"launch-row\">\n <div className=\"launch-field\">\n <label htmlFor=\"ralph-prompt-input\">Loop prompt</label>\n <textarea\n id=\"ralph-prompt-input\"\n className=\"prompt\"\n data-testid=\"ralph-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"Continue working on the current task.\"\n />\n </div>\n <button className=\"button primary\" data-testid=\"ralph-launch-button\" onClick={() => void launch()} disabled={busy}>\n Start loop\n </button>\n </div>\n <div className=\"meta\">\n <div className=\"stat\">\n <span className=\"k\">Status</span>\n <span className=\"v\">{activeRun?.status ?? \"idle\"}</span>\n </div>\n <div className=\"stat\">\n <span className=\"k\">Iterations</span>\n <span className=\"v\" data-testid=\"ralph-iteration-count\">{iterationCount}</span>\n </div>\n <div className=\"stat\">\n <span className=\"k\">Events</span>\n <span className=\"v\">{events.length}</span>\n </div>\n </div>\n </div>\n\n <div className=\"timeline\" data-testid=\"ralph-timeline\">\n <div className=\"timeline-head\">Iteration timeline (newest first)</div>\n {latestSummary ? (\n <div className=\"iter-card\" data-testid=\"ralph-latest-iteration\">\n <div className=\"row\">\n <span className=\"iter-tag\">Latest iteration</span>\n <span className=\"iter-ts\">{fmtTime(activeRun?.createdAtMs)}</span>\n </div>\n <div className=\"iter-summary\" data-testid=\"ralph-summary\">{latestSummary}</div>\n </div>\n ) : null}\n {iterations\n .slice()\n .reverse()\n .map((it) => (\n <div className=\"iter-card\" key={it.seq} data-testid=\"ralph-iteration-event\">\n <div className=\"row\">\n <span className=\"iter-tag\">Iteration {it.iteration + 1}</span>\n <span className=\"iter-ts\">{fmtTime(it.tsMs)}</span>\n </div>\n <div className=\"iter-summary\">{it.label}</div>\n </div>\n ))}\n {!latestSummary && iterations.length === 0 ? (\n <div className=\"empty\" data-testid=\"ralph-empty\">\n <h3>{activeRunId ? \"Waiting for the first iteration…\" : \"No loop running\"}</h3>\n <p>\n Ralph runs a single task in an infinite loop, posting a fresh summary after every iteration. Enter a\n prompt and start the loop to watch each iteration land here. Cancel whenever the work is done.\n </p>\n <button className=\"button primary\" data-testid=\"ralph-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Start loop\n </button>\n </div>\n ) : null}\n </div>\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Run history</div>\n {ralphRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"ralph-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {ralphRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", - "improve-test-coverage": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smithers-orchestrator/gateway-react\";\n\nconst WORKFLOW_KEY = \"improve-test-coverage\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\ntype ReviewIssue = { severity?: string; title?: string; file?: string | null; description?: string };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asBool(value: unknown): boolean | undefined {\n return typeof value === \"boolean\" ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\nfunction unwrapRow(value: unknown): Record<string, unknown> | null {\n const response = isRecord(value) ? value : {};\n if (isRecord(response.row)) return response.row;\n if (isRecord(response)) return response;\n return null;\n}\n\ntype ImplementOutput = { summary: string; filesChanged: string[]; allTestsPassing?: boolean };\nfunction extractImplement(value: unknown): ImplementOutput | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const filesChanged = Array.isArray(row.filesChanged)\n ? row.filesChanged.filter((f): f is string => typeof f === \"string\")\n : [];\n return { summary, filesChanged, allTestsPassing: asBool(row.allTestsPassing) };\n}\n\ntype ValidateOutput = { summary: string; allPassed?: boolean; failingSummary: string | null };\nfunction extractValidate(value: unknown): ValidateOutput | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n return {\n summary,\n allPassed: asBool(row.allPassed),\n failingSummary: asString(row.failingSummary) ?? null,\n };\n}\n\ntype ReviewOutput = { reviewer?: string; approved?: boolean; feedback?: string; issues: ReviewIssue[] };\nfunction extractReview(value: unknown): ReviewOutput | null {\n const row = unwrapRow(value);\n if (!row) return null;\n if (row.feedback === undefined && row.approved === undefined && row.reviewer === undefined) return null;\n const issues = Array.isArray(row.issues)\n ? row.issues.filter(isRecord).map((i) => ({\n severity: asString(i.severity),\n title: asString(i.title),\n file: asString(i.file) ?? null,\n description: asString(i.description),\n }))\n : [];\n return {\n reviewer: asString(row.reviewer),\n approved: asBool(row.approved),\n feedback: asString(row.feedback),\n issues,\n };\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".pill .mono { font-family:ui-monospace,monospace; }\",\n \".iter-pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:600; color:var(--primary); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--primary); }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:420px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:1fr 280px; flex:1; overflow:hidden; }\",\n \".content { padding:20px; overflow:auto; }\",\n \".timeline { display:flex; align-items:center; gap:0; margin-bottom:20px; overflow-x:auto; padding-bottom:4px; }\",\n \".stage { display:flex; align-items:center; gap:8px; flex:0 0 auto; }\",\n \".stage-dot { width:26px; height:26px; border-radius:50%; background:var(--panel); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--muted); }\",\n \".stage.done .stage-dot { background:var(--ok); border-color:var(--ok); color:#0c0c0e; }\",\n \".stage.active .stage-dot { border-color:var(--primary); color:var(--primary); box-shadow:0 0 0 3px rgba(94,106,210,0.18); }\",\n \".stage-label { font-size:12px; color:var(--muted); }\",\n \".stage.done .stage-label,.stage.active .stage-label { color:var(--text); }\",\n \".stage-line { width:42px; height:1px; background:var(--border); margin:0 6px; }\",\n \".stage-line.done { background:var(--ok); }\",\n \".panel-grid { display:grid; grid-template-columns:1fr; gap:16px; }\",\n \"@media (min-width:980px) { .panel-grid.split { grid-template-columns:1fr 1fr; } }\",\n \".card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px 18px; }\",\n \".card h2 { margin:0 0 10px; font-size:12px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); display:flex; align-items:center; gap:8px; }\",\n \".card.full { margin-bottom:16px; }\",\n \".summary-text { font-size:14px; line-height:1.55; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".badge.ok { color:var(--ok); border-color:var(--ok); }\",\n \".badge.err { color:var(--err); border-color:var(--err); }\",\n \".files { list-style:none; margin:10px 0 0; padding:0; }\",\n \".files li { display:flex; align-items:center; gap:8px; padding:7px 0; border-bottom:1px solid var(--border); font-family:ui-monospace,monospace; font-size:12px; }\",\n \".files li:last-child { border-bottom:0; }\",\n \".files .file-dot { width:6px; height:6px; border-radius:50%; background:var(--primary); flex:0 0 auto; }\",\n \".inline-empty { color:var(--muted); font-size:12px; margin-top:8px; }\",\n \".fail-box { margin-top:10px; background:var(--panel); border:1px solid var(--err); border-radius:6px; padding:10px 12px; font-family:ui-monospace,monospace; font-size:12px; color:var(--err); white-space:pre-wrap; }\",\n \".reviewer { border:1px solid var(--border); border-radius:8px; padding:12px 14px; margin-top:10px; }\",\n \".reviewer:first-of-type { margin-top:0; }\",\n \".reviewer-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px; }\",\n \".reviewer-name { font-weight:600; font-size:13px; }\",\n \".issue-row { display:flex; gap:10px; padding:8px 0; border-top:1px solid var(--border); }\",\n \".sev { font-size:10px; font-weight:700; text-transform:uppercase; padding:2px 6px; border-radius:4px; flex:0 0 auto; height:fit-content; border:1px solid var(--border); }\",\n \".sev.critical { color:var(--err); border-color:var(--err); }\",\n \".sev.major { color:var(--warn); border-color:var(--warn); }\",\n \".sev.minor { color:var(--primary); border-color:var(--primary); }\",\n \".sev.nit { color:var(--muted); }\",\n \".issue-body { min-width:0; }\",\n \".issue-title { font-weight:600; }\",\n \".issue-desc { color:var(--muted); font-size:12px; }\",\n \".issue-file { font-family:ui-monospace,monospace; font-size:11px; color:var(--muted); }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".hero { max-width:480px; margin:48px auto; text-align:center; }\",\n \".hero h2 { font-size:18px; margin:0 0 8px; color:var(--text); text-transform:none; letter-spacing:0; justify-content:center; }\",\n \".hero p { color:var(--muted); margin:0 0 18px; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n \".meta-row { display:flex; align-items:center; gap:10px; margin-top:16px; color:var(--muted); font-size:12px; }\",\n].join(\"\\n\");\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Improve the test coverage for the current repository.\");\n const [busy, setBusy] = useState(false);\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const runs = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? runs[0]?.runId;\n const activeRun = runs.find((r) => r.runId === activeRunId);\n const runStatusClass = statusClass(activeRun?.status);\n\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const implementOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"improve-test-coverage:implement\", iteration: 0 });\n const validateOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"improve-test-coverage:validate\", iteration: 0 });\n const reviewOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"improve-test-coverage:review:0\", iteration: 0 });\n\n const implement = useMemo(() => extractImplement(implementOut.data), [implementOut.data]);\n const validate = useMemo(() => extractValidate(validateOut.data), [validateOut.data]);\n const review = useMemo(() => extractReview(reviewOut.data), [reviewOut.data]);\n const eventCount = (stream.events ?? []).length;\n\n const implementDone = implement !== null;\n const validateDone = validate !== null;\n const reviewDone = review !== null;\n let activeStage: \"implement\" | \"validate\" | \"review\" | \"none\" = \"none\";\n if (activeRunId && runStatusClass === \"running\") {\n if (!implementDone) activeStage = \"implement\";\n else if (!validateDone) activeStage = \"validate\";\n else if (!reviewDone) activeStage = \"review\";\n }\n\n async function refresh() {\n await Promise.all([\n runsQuery.refetch(),\n implementOut.refetch(),\n validateOut.refetch(),\n reviewOut.refetch(),\n ]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n const hasAnyOutput = implementDone || validateDone || reviewDone;\n\n function stageEl(key: \"implement\" | \"validate\" | \"review\", label: string, done: boolean) {\n const cls = \"stage\" + (done ? \" done\" : \"\") + (activeStage === key ? \" active\" : \"\");\n return (\n <div className={cls} data-testid={\"improve-test-coverage-stage-\" + key}>\n <span className=\"stage-dot\">{done ? \"✓\" : \"\"}</span>\n <span className=\"stage-label\">{label}</span>\n </div>\n );\n }\n\n return (\n <main className=\"shell\" data-testid=\"improve-test-coverage-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Improve Test Coverage</h1>\n <span className=\"pill\" data-testid=\"improve-test-coverage-runid\">\n <span className=\"mono\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n </span>\n {activeRun ? (\n <span className={\"badge \" + runStatusClass} data-testid=\"improve-test-coverage-status\">{activeRun.status ?? \"idle\"}</span>\n ) : null}\n {activeRunId ? (\n <span className=\"iter-pill\" data-testid=\"improve-test-coverage-iteration\">\n {runStatusClass === \"finished\" ? \"complete\" : runStatusClass === \"running\" ? \"running (max 3)\" : \"iteration / 3\"}\n </span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"improve-test-coverage-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What coverage should we improve?\"\n />\n <button className=\"button\" data-testid=\"improve-test-coverage-refresh\" onClick={() => void refresh()} disabled={busy}>Refresh</button>\n {activeRun && runStatusClass === \"running\" ? (\n <button className=\"button danger\" data-testid=\"improve-test-coverage-cancel\" onClick={() => void cancel()} disabled={busy}>Cancel</button>\n ) : null}\n {activeRun && (runStatusClass === \"finished\" || runStatusClass === \"failed\") ? (\n <button className=\"button\" data-testid=\"improve-test-coverage-resume\" onClick={() => void launch()} disabled={busy}>Retry</button>\n ) : null}\n <button className=\"button primary\" data-testid=\"improve-test-coverage-launch\" onClick={() => void launch()} disabled={busy}>Launch</button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"content\">\n {activeRunId ? (\n <div className=\"timeline\" data-testid=\"improve-test-coverage-timeline\">\n {stageEl(\"implement\", \"Implement\", implementDone)}\n <span className={\"stage-line\" + (implementDone ? \" done\" : \"\")} />\n {stageEl(\"validate\", \"Validate\", validateDone)}\n <span className={\"stage-line\" + (validateDone ? \" done\" : \"\")} />\n {stageEl(\"review\", \"Review\", reviewDone)}\n </div>\n ) : null}\n\n {hasAnyOutput ? (\n <>\n <div className=\"card full\" data-testid=\"improve-test-coverage-implement\">\n <h2>\n Implementation\n {implement && implement.allTestsPassing !== undefined ? (\n <span className={\"badge \" + (implement.allTestsPassing ? \"ok\" : \"err\")}>\n {implement.allTestsPassing ? \"Tests passing\" : \"Tests failing\"}\n </span>\n ) : null}\n </h2>\n {implement ? (\n <>\n <div className=\"summary-text\">{implement.summary}</div>\n {implement.filesChanged.length > 0 ? (\n <ul className=\"files\" data-testid=\"improve-test-coverage-files\">\n {implement.filesChanged.map((f, i) => (\n <li key={i} data-testid=\"improve-test-coverage-file\">\n <span className=\"file-dot\" />\n <span>{f}</span>\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"inline-empty\" data-testid=\"improve-test-coverage-files-empty\">No files changed reported yet.</div>\n )}\n </>\n ) : (\n <div className=\"inline-empty\">Waiting for the implement stage…</div>\n )}\n </div>\n\n <div className=\"panel-grid split\">\n <div className=\"card\" data-testid=\"improve-test-coverage-validate\">\n <h2>\n Validation\n {validate && validate.allPassed !== undefined ? (\n <span className={\"badge \" + (validate.allPassed ? \"ok\" : \"err\")}>\n {validate.allPassed ? \"All passed\" : \"Failed\"}\n </span>\n ) : null}\n </h2>\n {validate ? (\n <>\n <div className=\"summary-text\">{validate.summary}</div>\n {validate.failingSummary ? (\n <div className=\"fail-box\" data-testid=\"improve-test-coverage-failing\">{validate.failingSummary}</div>\n ) : null}\n </>\n ) : (\n <div className=\"inline-empty\">Waiting for validation…</div>\n )}\n </div>\n\n <div className=\"card\" data-testid=\"improve-test-coverage-review\">\n <h2>Reviewer Issues</h2>\n {review ? (\n <div className=\"reviewer\">\n <div className=\"reviewer-head\">\n <span className=\"reviewer-name\">{review.reviewer ?? \"reviewer-1\"}</span>\n {review.approved !== undefined ? (\n <span className={\"badge \" + (review.approved ? \"ok\" : \"err\")}>\n {review.approved ? \"Approved\" : \"Changes requested\"}\n </span>\n ) : null}\n </div>\n {review.feedback ? <div className=\"summary-text\">{review.feedback}</div> : null}\n {review.issues.length > 0 ? (\n review.issues.map((issue, i) => (\n <div className=\"issue-row\" key={i} data-testid=\"improve-test-coverage-issue\">\n <span className={\"sev \" + (issue.severity ?? \"nit\")}>{issue.severity ?? \"nit\"}</span>\n <div className=\"issue-body\">\n <div className=\"issue-title\">{issue.title ?? \"Issue\"}</div>\n {issue.description ? <div className=\"issue-desc\">{issue.description}</div> : null}\n {issue.file ? <div className=\"issue-file\">{issue.file}</div> : null}\n </div>\n </div>\n ))\n ) : (\n <div className=\"inline-empty\" data-testid=\"improve-test-coverage-issues-empty\">No issues raised by this reviewer.</div>\n )}\n </div>\n ) : (\n <div className=\"inline-empty\">Waiting for review…</div>\n )}\n </div>\n </div>\n\n <div className=\"meta-row\" data-testid=\"improve-test-coverage-meta\">\n <span>{eventCount} events</span>\n {implementOut.loading || validateOut.loading || reviewOut.loading ? <span>· refreshing…</span> : null}\n </div>\n </>\n ) : activeRunId ? (\n <div className=\"empty\" data-testid=\"improve-test-coverage-waiting\">\n <div>Running iteration 1/3 — finding and adding missing tests…</div>\n </div>\n ) : (\n <div className=\"hero\" data-testid=\"improve-test-coverage-empty\">\n <h2>Improve Test Coverage</h2>\n <p>Add high-impact missing tests for this repository. Start a run to find the gaps and verify the new tests pass.</p>\n <button className=\"button primary\" data-testid=\"improve-test-coverage-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Launch run\n </button>\n </div>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent runs</div>\n {runs.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"improve-test-coverage-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {runs.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", - "debug": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smithers-orchestrator/gateway-react\";\n\nconst WORKFLOW_KEY = \"debug\";\nconst MAX_ITERATIONS = 3;\nconst REVIEWER_SLOTS = [0, 1, 2];\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asBool(value: unknown): boolean | undefined {\n return typeof value === \"boolean\" ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\nfunction rowOf(value: unknown): Record<string, unknown> | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : null;\n return row;\n}\n\ntype ImplementOutput = { summary: string; filesChanged: string[]; allTestsPassing: boolean };\nfunction extractImplement(value: unknown): ImplementOutput | null {\n const row = rowOf(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const filesChanged = Array.isArray(row.filesChanged)\n ? row.filesChanged.filter((f): f is string => typeof f === \"string\")\n : [];\n return { summary, filesChanged, allTestsPassing: asBool(row.allTestsPassing) ?? true };\n}\n\ntype ValidateOutput = { summary: string; allPassed: boolean; failingSummary: string | null };\nfunction extractValidate(value: unknown): ValidateOutput | null {\n const row = rowOf(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n return {\n summary,\n allPassed: asBool(row.allPassed) ?? true,\n failingSummary: asString(row.failingSummary) ?? null,\n };\n}\n\ntype ReviewIssue = { severity: string; title: string; file: string | null; description: string };\ntype ReviewOutput = { reviewer: string; approved: boolean; feedback: string; issues: ReviewIssue[] };\nfunction extractReview(value: unknown): ReviewOutput | null {\n const row = rowOf(value);\n if (!row) return null;\n const reviewer = asString(row.reviewer);\n if (reviewer === undefined) return null;\n const issues = Array.isArray(row.issues)\n ? row.issues\n .filter(isRecord)\n .map((i) => ({\n severity: asString(i.severity) ?? \"nit\",\n title: asString(i.title) ?? \"\",\n file: asString(i.file) ?? null,\n description: asString(i.description) ?? \"\",\n }))\n : [];\n return {\n reviewer,\n approved: asBool(row.approved) ?? false,\n feedback: asString(row.feedback) ?? \"\",\n issues,\n };\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:420px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:1fr 280px; flex:1; overflow:hidden; }\",\n \".content { padding:20px; overflow:auto; }\",\n \".status-row { display:flex; align-items:center; gap:10px; margin-bottom:16px; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".badge.ok { color:var(--ok); border-color:var(--ok); }\",\n \".badge.err { color:var(--err); border-color:var(--err); }\",\n \".bug-card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px 18px; margin-bottom:18px; }\",\n \".bug-card h2 { margin:0 0 6px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".bug-text { font-size:14px; line-height:1.55; }\",\n \".timeline { display:flex; gap:10px; margin-bottom:18px; flex-wrap:wrap; }\",\n \".iter-tab { display:flex; flex-direction:column; gap:6px; min-width:120px; padding:10px 12px; border:1px solid var(--border); border-radius:9px; background:var(--panel); color:var(--text); cursor:pointer; text-align:left; }\",\n \".iter-tab:hover { background:var(--card); }\",\n \".iter-tab.active { border-color:var(--primary); box-shadow:inset 0 0 0 1px var(--primary); }\",\n \".iter-tab .iter-label { font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".iter-dots { display:flex; gap:6px; align-items:center; }\",\n \".dot { width:9px; height:9px; border-radius:50%; background:var(--border); }\",\n \".dot.ok { background:var(--ok); }\",\n \".dot.err { background:var(--err); }\",\n \".dot.pending { background:var(--muted); opacity:0.5; }\",\n \".phase-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }\",\n \".phase-grid.review-row { grid-template-columns:1fr; }\",\n \".panel { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px 18px; margin-bottom:16px; }\",\n \".panel-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px; }\",\n \".panel-head h3 { margin:0; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".panel-summary { font-size:14px; line-height:1.5; }\",\n \".files { list-style:none; margin:10px 0 0; padding:0; }\",\n \".files li { font-family:ui-monospace,monospace; font-size:12px; padding:5px 0; border-bottom:1px solid var(--border); color:var(--text); }\",\n \".files li:last-child { border-bottom:0; }\",\n \".fail-box { margin-top:10px; padding:10px 12px; border:1px solid var(--err); border-radius:8px; background:rgba(248,113,113,0.08); color:var(--err); font-size:12px; white-space:pre-wrap; }\",\n \".reviewers { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:14px; }\",\n \".reviewer-card { border:1px solid var(--border); border-radius:9px; padding:12px 14px; background:var(--panel); }\",\n \".reviewer-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px; }\",\n \".reviewer-name { font-weight:600; font-size:13px; }\",\n \".reviewer-feedback { font-size:13px; color:var(--text); line-height:1.5; }\",\n \".issues { list-style:none; margin:10px 0 0; padding:0; display:flex; flex-direction:column; gap:6px; }\",\n \".issue { font-size:12px; padding:6px 8px; border-radius:6px; border:1px solid var(--border); }\",\n \".issue.critical { border-color:var(--err); color:var(--err); }\",\n \".issue.major { border-color:#fb923c; color:#fb923c; }\",\n \".issue.minor { border-color:var(--warn); color:var(--warn); }\",\n \".issue.nit { border-color:var(--border); color:var(--muted); }\",\n \".sub-empty { color:var(--muted); font-size:12px; margin-top:8px; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n].join(\"\\n\");\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nfunction IterationPanels(props: { runId: string; iteration: number }) {\n const { runId, iteration } = props;\n const implementOut = useGatewayNodeOutput({ runId, nodeId: \"debug:implement\", iteration });\n const validateOut = useGatewayNodeOutput({ runId, nodeId: \"debug:validate\", iteration });\n const review0 = useGatewayNodeOutput({ runId, nodeId: \"debug:review:0\", iteration });\n const review1 = useGatewayNodeOutput({ runId, nodeId: \"debug:review:1\", iteration });\n const review2 = useGatewayNodeOutput({ runId, nodeId: \"debug:review:2\", iteration });\n\n const implement = useMemo(() => extractImplement(implementOut.data), [implementOut.data]);\n const validate = useMemo(() => extractValidate(validateOut.data), [validateOut.data]);\n const reviewData = [review0.data, review1.data, review2.data];\n const reviews = useMemo(\n () => REVIEWER_SLOTS.map((i) => extractReview(reviewData[i])).filter((r): r is ReviewOutput => r !== null),\n [review0.data, review1.data, review2.data],\n );\n\n return (\n <>\n <div className=\"phase-grid\">\n <div className=\"panel\" data-testid=\"debug-implement-panel\">\n <div className=\"panel-head\">\n <h3>Implement · attempt {iteration + 1}</h3>\n {implement ? (\n <span className={\"badge \" + (implement.allTestsPassing ? \"ok\" : \"err\")}>\n {implement.allTestsPassing ? \"tests pass\" : \"tests fail\"}\n </span>\n ) : null}\n </div>\n {implement ? (\n <>\n <div className=\"panel-summary\" data-testid=\"debug-implement-summary\">{implement.summary}</div>\n {implement.filesChanged.length > 0 ? (\n <ul className=\"files\" data-testid=\"debug-implement-files\">\n {implement.filesChanged.map((f, i) => (\n <li key={i}>{f}</li>\n ))}\n </ul>\n ) : (\n <div className=\"sub-empty\" data-testid=\"debug-implement-files-empty\">No files changed in this attempt.</div>\n )}\n </>\n ) : (\n <div className=\"sub-empty\">Waiting for the fix attempt…</div>\n )}\n </div>\n\n <div className=\"panel\" data-testid=\"debug-validate-panel\">\n <div className=\"panel-head\">\n <h3>Validate · attempt {iteration + 1}</h3>\n {validate ? (\n <span className={\"badge \" + (validate.allPassed ? \"ok\" : \"err\")}>\n {validate.allPassed ? \"all passed\" : \"failing\"}\n </span>\n ) : null}\n </div>\n {validate ? (\n <>\n <div className=\"panel-summary\" data-testid=\"debug-validate-summary\">{validate.summary}</div>\n {validate.failingSummary ? (\n <div className=\"fail-box\" data-testid=\"debug-validate-failing\">{validate.failingSummary}</div>\n ) : (\n <div className=\"sub-empty\">No failing tests reported.</div>\n )}\n </>\n ) : (\n <div className=\"sub-empty\">Waiting for validation…</div>\n )}\n </div>\n </div>\n\n <div className=\"panel\" data-testid=\"debug-review-panel\">\n <div className=\"panel-head\">\n <h3>Reviewers · attempt {iteration + 1}</h3>\n <span className=\"pill\">{reviews.length} reviewer{reviews.length === 1 ? \"\" : \"s\"}</span>\n </div>\n {reviews.length > 0 ? (\n <div className=\"reviewers\">\n {reviews.map((r, i) => (\n <div className=\"reviewer-card\" key={i} data-testid=\"debug-reviewer-card\">\n <div className=\"reviewer-head\">\n <span className=\"reviewer-name\" data-testid=\"debug-reviewer-name\">{r.reviewer}</span>\n <span className={\"badge \" + (r.approved ? \"ok\" : \"err\")}>{r.approved ? \"approved\" : \"rejected\"}</span>\n </div>\n <div className=\"reviewer-feedback\" data-testid=\"debug-reviewer-feedback\">{r.feedback}</div>\n {r.issues.length > 0 ? (\n <ul className=\"issues\" data-testid=\"debug-reviewer-issues\">\n {r.issues.map((issue, j) => (\n <li className={\"issue \" + issue.severity} key={j}>\n <strong>[{issue.severity}]</strong> {issue.title}\n {issue.file ? \" · \" + issue.file : \"\"}\n {issue.description ? \" — \" + issue.description : \"\"}\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"sub-empty\" data-testid=\"debug-reviewer-issues-empty\">No issues raised.</div>\n )}\n </div>\n ))}\n </div>\n ) : (\n <div className=\"sub-empty\" data-testid=\"debug-review-empty\">Waiting for reviewers on this attempt…</div>\n )}\n </div>\n </>\n );\n}\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Reproduce and fix the reported bug.\");\n const [iteration, setIteration] = useState(0);\n const [busy, setBusy] = useState(false);\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const debugRuns = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? debugRuns[0]?.runId;\n const activeRun = debugRuns.find((r) => r.runId === activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const eventCount = (stream.events ?? []).length;\n\n async function refresh() {\n await runsQuery.refetch();\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n setIteration(0);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n return (\n <main className=\"shell\" data-testid=\"debug-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Debug</h1>\n <span className=\"pill\" data-testid=\"debug-runid\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n {activeRun ? (\n <span className={\"badge \" + statusClass(activeRun.status)} data-testid=\"debug-status\">{activeRun.status ?? \"idle\"}</span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"debug-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"Describe the bug to reproduce and fix…\"\n />\n <button className=\"button\" data-testid=\"debug-refresh\" onClick={() => void refresh()} disabled={busy}>Refresh</button>\n {activeRun && statusClass(activeRun.status) === \"running\" ? (\n <button className=\"button danger\" data-testid=\"debug-cancel\" onClick={() => void cancel()} disabled={busy}>Cancel</button>\n ) : null}\n <button className=\"button primary\" data-testid=\"debug-launch\" onClick={() => void launch()} disabled={busy}>Start Debug</button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"content\">\n {activeRunId ? (\n <>\n <div className=\"bug-card\" data-testid=\"debug-bug-report\">\n <h2>Bug report</h2>\n <div className=\"bug-text\">{prompt}</div>\n </div>\n\n <div className=\"timeline\" data-testid=\"debug-timeline\">\n {Array.from({ length: MAX_ITERATIONS }, (_, i) => i).map((i) => (\n <button\n key={i}\n className={\"iter-tab\" + (i === iteration ? \" active\" : \"\")}\n data-testid={\"debug-iter-\" + i}\n onClick={() => setIteration(i)}\n >\n <span className=\"iter-label\">Attempt {i + 1}</span>\n <span className=\"iter-dots\">\n <span className=\"dot pending\" title=\"implement\" />\n <span className=\"dot pending\" title=\"validate\" />\n <span className=\"dot pending\" title=\"review\" />\n </span>\n </button>\n ))}\n </div>\n\n <IterationPanels runId={activeRunId} iteration={iteration} />\n\n <div className=\"status-row\" style={{ marginTop: 8, color: \"var(--muted)\" }}>\n <span>{eventCount} events</span>\n <span>· max {MAX_ITERATIONS} attempts</span>\n </div>\n </>\n ) : (\n <div className=\"empty\" data-testid=\"debug-empty\">\n <div>No debug run yet. Describe the bug above and start a run.</div>\n <button className=\"button primary\" data-testid=\"debug-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Start Debug\n </button>\n </div>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent debug runs</div>\n {debugRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"debug-run-\" + r.runId}\n onClick={() => {\n setSelectedRunId(r.runId);\n setIteration(0);\n }}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {debugRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", - "grill-me": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRun,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smithers-orchestrator/gateway-react\";\n\nconst WORKFLOW_KEY = \"grill-me\";\nconst GRILL_NODE_ID = \"grill-me:grill\";\nconst MAX_TRACKED_ITERATIONS = 8;\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\ntype GrillRow = {\n iteration: number;\n question: string;\n recommendedAnswer: string | null;\n branch: string | null;\n resolved: boolean;\n questionsAsked: number;\n sharedUnderstanding: string | null;\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asNullableString(value: unknown): string | null {\n return typeof value === \"string\" ? value : null;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\nfunction extractRow(value: unknown, iteration: number): GrillRow | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : {};\n const question = asString(row.question);\n if (question === undefined) return null;\n return {\n iteration,\n question,\n recommendedAnswer: asNullableString(row.recommendedAnswer),\n branch: asNullableString(row.branch),\n resolved: row.resolved === true,\n questionsAsked: typeof row.questionsAsked === \"number\" ? row.questionsAsked : 0,\n sharedUnderstanding: asNullableString(row.sharedUnderstanding),\n };\n}\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n if (status === \"paused\" || status === \"waiting\") return \"paused\";\n return \"\";\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); flex-wrap:wrap; }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; flex-wrap:wrap; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".pill .mono { font-family:ui-monospace,monospace; }\",\n \".metrics { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }\",\n \".metric { font-size:11px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".metric b { color:var(--text); font-weight:600; }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; flex-wrap:wrap; }\",\n \".prompt { flex:1; max-width:360px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".badge.paused { color:var(--primary); border-color:var(--primary); }\",\n \".main { display:grid; grid-template-columns:1fr 360px; flex:1; overflow:hidden; }\",\n \".history { padding:20px; overflow:auto; border-right:1px solid var(--border); }\",\n \".history-head { font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); margin:0 0 14px; }\",\n \".qa { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:14px 16px; margin-bottom:12px; position:relative; }\",\n \".qa.resolved { border-color:var(--ok); }\",\n \".qa-meta { display:flex; align-items:center; gap:8px; margin-bottom:8px; }\",\n \".iter-chip { font-size:11px; font-weight:600; color:var(--muted); background:var(--panel); border:1px solid var(--border); border-radius:5px; padding:2px 8px; }\",\n \".branch-chip { font-size:11px; color:var(--primary); border:1px solid var(--primary); border-radius:5px; padding:2px 8px; }\",\n \".qa-question { font-size:14px; line-height:1.5; margin-bottom:8px; }\",\n \".qa-hint { font-size:12px; color:var(--muted); border-left:2px solid var(--border); padding-left:10px; }\",\n \".qa-hint b { color:var(--ok); font-weight:600; }\",\n \".rail { background:var(--panel); display:flex; flex-direction:column; overflow:auto; }\",\n \".rail-section { padding:16px; border-bottom:1px solid var(--border); }\",\n \".rail-section h2 { margin:0 0 10px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".current-q { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px; }\",\n \".current-q .q { font-size:16px; line-height:1.5; margin-bottom:10px; }\",\n \".current-q .hint { font-size:12px; color:var(--muted); }\",\n \".current-q .hint b { color:var(--ok); }\",\n \".understanding { font-size:13px; line-height:1.6; color:var(--text); white-space:pre-wrap; }\",\n \".resolved-banner { background:rgba(74,222,128,0.08); border:1px solid var(--ok); border-radius:10px; padding:14px 16px; color:var(--ok); }\",\n \".resolved-banner b { display:block; margin-bottom:6px; }\",\n \".resolved-banner span { color:var(--text); }\",\n \".actions { display:flex; gap:8px; flex-wrap:wrap; }\",\n \".empty { color:var(--muted); text-align:center; padding:32px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".spinner { width:18px; height:18px; border-radius:50%; border:2px solid var(--border); border-top-color:var(--primary); display:inline-block; animation:spin 0.8s linear infinite; vertical-align:middle; margin-right:8px; }\",\n \"@keyframes spin { to { transform:rotate(360deg); } }\",\n \".runs { padding:6px 0; }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n \"@media (max-width:880px) { .main { grid-template-columns:1fr; } .history { border-right:0; border-bottom:1px solid var(--border); } }\",\n].join(\"\\n\");\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Describe what you want to get grilled on.\");\n const [busy, setBusy] = useState(false);\n\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const grillRuns = useMemo(\n () =>\n ((runsQuery.data ?? []) as RunSummary[]).filter(\n (r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY,\n ),\n [runsQuery.data],\n );\n\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? grillRuns[0]?.runId;\n const activeRun = grillRuns.find((r) => r.runId === activeRunId);\n const runDetail = useGatewayRun(activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n\n // Hooks cannot run in a loop, so fetch a fixed window of iterations.\n // Iteration 0 is the primary output region per the deep-link contract.\n const iter0 = useGatewayNodeOutput({ runId: activeRunId, nodeId: GRILL_NODE_ID, iteration: 0 });\n const iter1 = useGatewayNodeOutput({ runId: activeRunId, nodeId: GRILL_NODE_ID, iteration: 1 });\n const iter2 = useGatewayNodeOutput({ runId: activeRunId, nodeId: GRILL_NODE_ID, iteration: 2 });\n const iter3 = useGatewayNodeOutput({ runId: activeRunId, nodeId: GRILL_NODE_ID, iteration: 3 });\n const iter4 = useGatewayNodeOutput({ runId: activeRunId, nodeId: GRILL_NODE_ID, iteration: 4 });\n const iter5 = useGatewayNodeOutput({ runId: activeRunId, nodeId: GRILL_NODE_ID, iteration: 5 });\n const iter6 = useGatewayNodeOutput({ runId: activeRunId, nodeId: GRILL_NODE_ID, iteration: 6 });\n const iter7 = useGatewayNodeOutput({ runId: activeRunId, nodeId: GRILL_NODE_ID, iteration: 7 });\n const iterQueries = [iter0, iter1, iter2, iter3, iter4, iter5, iter6, iter7];\n\n const rows = useMemo(() => {\n const out: GrillRow[] = [];\n for (let i = 0; i < MAX_TRACKED_ITERATIONS; i += 1) {\n const row = extractRow(iterQueries[i].data, i);\n if (row) out.push(row);\n }\n return out;\n }, [iter0.data, iter1.data, iter2.data, iter3.data, iter4.data, iter5.data, iter6.data, iter7.data]);\n\n const latest = rows.length > 0 ? rows[rows.length - 1] : null;\n const totalQuestionsAsked = latest ? latest.questionsAsked : rows.length;\n const resolved = latest ? latest.resolved : false;\n const sharedUnderstanding = useMemo(() => {\n for (let i = rows.length - 1; i >= 0; i -= 1) {\n if (rows[i].sharedUnderstanding) return rows[i].sharedUnderstanding;\n }\n return null;\n }, [rows]);\n\n const runStatus =\n (isRecord(runDetail.data) ? asString(runDetail.data.status) : undefined) ?? activeRun?.status;\n const eventCount = (stream.events ?? []).length;\n const isRunning = statusClass(runStatus) === \"running\";\n const isPaused = statusClass(runStatus) === \"paused\";\n\n async function refresh() {\n await Promise.all([\n runsQuery.refetch(),\n runDetail.refetch(),\n ...iterQueries.map((q) => q.refetch()),\n ]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function resume() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.resumeRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n const hasRun = Boolean(activeRunId);\n const awaitingFirst = hasRun && rows.length === 0;\n\n return (\n <main className=\"shell\" data-testid=\"grill-me-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Grill Me</h1>\n <span className=\"pill\" data-testid=\"grill-me-runid\">\n <span className=\"mono\">{hasRun ? shortRunId(activeRunId) : \"No run\"}</span>\n </span>\n {hasRun ? (\n <span className={\"badge \" + statusClass(runStatus)} data-testid=\"grill-me-status\">\n {resolved ? \"resolved\" : (runStatus ?? \"idle\")}\n </span>\n ) : null}\n <div className=\"metrics\">\n <span className=\"metric\">\n iterations <b>{rows.length}</b>\n </span>\n <span className=\"metric\">\n questions <b>{totalQuestionsAsked}</b>\n </span>\n <span className=\"metric\">\n events <b>{eventCount}</b>\n </span>\n </div>\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"grill-me-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What should we grill you on?\"\n />\n <button className=\"button\" data-testid=\"grill-me-refresh\" onClick={() => void refresh()} disabled={busy}>\n Refresh\n </button>\n <button className=\"button primary\" data-testid=\"grill-me-launch\" onClick={() => void launch()} disabled={busy}>\n Start Grilling\n </button>\n </div>\n </header>\n\n <div className=\"main\">\n <section className=\"history\" data-testid=\"grill-me-history\">\n <h2 className=\"history-head\">Conversation history</h2>\n {rows.length > 0 ? (\n rows.map((row) => (\n <article\n key={row.iteration}\n className={\"qa\" + (row.resolved ? \" resolved\" : \"\")}\n data-testid=\"grill-me-qa\"\n >\n <div className=\"qa-meta\">\n <span className=\"iter-chip\">Q{row.iteration + 1}</span>\n {row.branch ? <span className=\"branch-chip\">{row.branch}</span> : null}\n {row.resolved ? <span className=\"badge finished\">resolved</span> : null}\n </div>\n <div className=\"qa-question\">{row.question}</div>\n {row.recommendedAnswer ? (\n <div className=\"qa-hint\">\n <b>Suggested:</b> {row.recommendedAnswer}\n </div>\n ) : null}\n </article>\n ))\n ) : awaitingFirst ? (\n <div className=\"empty\" data-testid=\"grill-me-loading\">\n <span className=\"spinner\" />\n Agent is forming the first question...\n </div>\n ) : (\n <div className=\"empty\" data-testid=\"grill-me-empty\">\n <div>No active run.</div>\n <div>Launch a grill-me workflow from the Smithers CLI or dashboard.</div>\n <button className=\"button primary\" data-testid=\"grill-me-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Start Grilling\n </button>\n </div>\n )}\n </section>\n\n <aside className=\"rail\">\n <div className=\"rail-section\">\n <h2>Current question</h2>\n {latest ? (\n <div className=\"current-q\" data-testid=\"grill-me-current\">\n <div className=\"q\">{latest.question}</div>\n {latest.recommendedAnswer ? (\n <div className=\"hint\">\n <b>Recommended answer:</b> {latest.recommendedAnswer}\n </div>\n ) : (\n <div className=\"hint\">No recommended answer yet.</div>\n )}\n </div>\n ) : (\n <div className=\"empty\">Waiting for the first question...</div>\n )}\n </div>\n\n <div className=\"rail-section\">\n <h2>Shared understanding</h2>\n {sharedUnderstanding ? (\n <div className=\"understanding\" data-testid=\"grill-me-understanding\">\n {sharedUnderstanding}\n </div>\n ) : (\n <div className=\"empty\" data-testid=\"grill-me-understanding-empty\">\n Not captured yet — the agent updates this as understanding builds.\n </div>\n )}\n </div>\n\n {resolved ? (\n <div className=\"rail-section\">\n <div className=\"resolved-banner\" data-testid=\"grill-me-resolved\">\n <b>Grilling complete — shared understanding reached</b>\n <span>{sharedUnderstanding ?? \"The agent is satisfied with the requirements.\"}</span>\n </div>\n </div>\n ) : null}\n\n <div className=\"rail-section\">\n <h2>Actions</h2>\n <div className=\"actions\">\n <button\n className=\"button danger\"\n data-testid=\"grill-me-cancel\"\n onClick={() => void cancel()}\n disabled={busy || !hasRun || !isRunning}\n >\n Cancel\n </button>\n {isPaused ? (\n <button\n className=\"button primary\"\n data-testid=\"grill-me-resume\"\n onClick={() => void resume()}\n disabled={busy}\n >\n Resume\n </button>\n ) : null}\n </div>\n </div>\n\n <div className=\"rail-section\">\n <h2>Recent grills</h2>\n <div className=\"runs\">\n {grillRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"grill-me-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {grillRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </div>\n </div>\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", - "feature-enum": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smithers-orchestrator/gateway-react\";\n\nconst WORKFLOW_KEY = \"feature-enum\";\n\ntype RunSummary = {\n runId: string;\n workflowKey?: string;\n status?: string;\n createdAtMs?: number;\n input?: unknown;\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asNumber(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction shortHash(hash: string | undefined | null) {\n if (!hash) return \"--\";\n return hash.length > 10 ? hash.slice(0, 10) : hash;\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\ntype FeatureGroup = { name: string; features: string[] };\ntype FeatureInventory = {\n groups: FeatureGroup[];\n totalFeatures: number;\n lastCommitHash: string | null;\n markdownBody: string;\n};\n\nfunction extractInventory(value: unknown): FeatureInventory | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : {};\n const rawGroups = isRecord(row.featureGroups) ? row.featureGroups : {};\n const groups: FeatureGroup[] = Object.keys(rawGroups).map((name) => {\n const list = rawGroups[name];\n const features = Array.isArray(list) ? list.filter((f): f is string => typeof f === \"string\") : [];\n return { name, features };\n });\n const markdownBody = asString(row.markdownBody) ?? \"\";\n const hasContent = groups.length > 0 || markdownBody.length > 0 || asNumber(row.totalFeatures) !== undefined;\n if (!hasContent) return null;\n const counted = groups.reduce((sum, g) => sum + g.features.length, 0);\n const totalFeatures = asNumber(row.totalFeatures) ?? counted;\n const lastCommitHash = asString(row.lastCommitHash) ?? null;\n return { groups, totalFeatures, lastCommitHash, markdownBody };\n}\n\nfunction refineInputCount(input: unknown): number | undefined {\n if (!isRecord(input)) return undefined;\n return asNumber(input.refineIterations);\n}\nfunction isRefiningExisting(input: unknown): boolean {\n if (!isRecord(input)) return false;\n return input.existingFeatures != null && !Array.isArray(input.existingFeatures);\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".pill .mono { font-family:ui-monospace,monospace; }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { width:64px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".search { flex:1; max-width:280px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".field { display:flex; align-items:center; gap:6px; color:var(--muted); font-size:12px; }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:260px 1fr 300px; flex:1; overflow:hidden; }\",\n \".rail { border-right:1px solid var(--border); background:var(--panel); overflow:auto; padding:16px; }\",\n \".content { padding:20px; overflow:auto; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".section-head { font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); margin:0 0 10px; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".count-badge { font-size:11px; font-weight:700; padding:3px 9px; border-radius:999px; background:var(--primary); color:#fff; }\",\n \".meta { display:flex; flex-direction:column; gap:8px; margin-bottom:20px; }\",\n \".meta-row { display:flex; justify-content:space-between; gap:10px; font-size:12px; }\",\n \".meta-row .k { color:var(--muted); }\",\n \".meta-row .mono { font-family:ui-monospace,monospace; }\",\n \".timeline { list-style:none; margin:0; padding:0; }\",\n \".timeline li { display:flex; gap:10px; align-items:flex-start; padding:8px 0; position:relative; }\",\n \".stage-dot { flex:0 0 12px; width:12px; height:12px; border-radius:50%; margin-top:4px; border:2px solid var(--border); background:var(--bg); }\",\n \".stage-dot.done { background:var(--ok); border-color:var(--ok); }\",\n \".stage-dot.running { background:var(--warn); border-color:var(--warn); }\",\n \".stage-dot.pending { background:var(--bg); border-color:var(--border); }\",\n \".stage-name { font-size:12px; }\",\n \".stage-sub { font-size:11px; color:var(--muted); }\",\n \".inv-head { display:flex; align-items:center; gap:12px; margin-bottom:16px; }\",\n \".inv-head h2 { margin:0; font-size:13px; font-weight:600; }\",\n \".group { border:1px solid var(--border); border-radius:10px; margin-bottom:12px; overflow:hidden; background:var(--card); }\",\n \".group-head { width:100%; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:12px 14px; background:transparent; border:0; color:var(--text); cursor:pointer; text-align:left; }\",\n \".group-head:hover { background:var(--panel); }\",\n \".group-name { font-family:ui-monospace,monospace; font-size:12px; font-weight:600; letter-spacing:0.02em; }\",\n \".group-meta { display:flex; align-items:center; gap:8px; }\",\n \".chevron { color:var(--muted); font-size:11px; width:12px; display:inline-block; }\",\n \".group-count { font-size:11px; color:var(--muted); }\",\n \".feature-list { list-style:none; margin:0; padding:0 0 6px; border-top:1px solid var(--border); }\",\n \".feature-list li { padding:8px 14px 8px 28px; border-bottom:1px solid var(--border); font-size:12px; }\",\n \".feature-list li:last-child { border-bottom:0; }\",\n \".notes { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:14px 16px; }\",\n \".notes pre { margin:0; white-space:pre-wrap; word-break:break-word; font-family:ui-monospace,monospace; font-size:12px; color:var(--text); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; flex-direction:column; gap:4px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .top { display:flex; justify-content:space-between; gap:8px; align-items:center; }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n \".run-row .sub { font-size:11px; color:var(--muted); }\",\n \".empty { color:var(--muted); text-align:center; padding:40px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".empty .hint { font-size:12px; margin-top:8px; max-width:360px; margin-left:auto; margin-right:auto; }\",\n \".progress-track { height:6px; border-radius:999px; background:var(--border); overflow:hidden; margin-top:14px; }\",\n \".progress-fill { height:100%; background:var(--primary); transition:width 0.3s ease; }\",\n].join(\"\\n\");\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\ntype StageState = \"done\" | \"running\" | \"pending\";\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [refineIterations, setRefineIterations] = useState(\"3\");\n const [query, setQuery] = useState(\"\");\n const [collapsed, setCollapsed] = useState<Record<string, boolean>>({});\n const [busy, setBusy] = useState(false);\n\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const featureRuns = useMemo(\n () =>\n ((runsQuery.data ?? []) as RunSummary[]).filter(\n (r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY,\n ),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? featureRuns[0]?.runId;\n const activeRun = featureRuns.find((r) => r.runId === activeRunId);\n\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const events = stream.events ?? [];\n const eventNames = useMemo(() => events.map((e) => e.event), [events]);\n\n const resultOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"feature-enum:result\", iteration: 0 });\n const scanOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"feature-enum:scan\", iteration: 0 });\n\n const inventory = useMemo(\n () => extractInventory(resultOutput.data) ?? extractInventory(scanOutput.data),\n [resultOutput.data, scanOutput.data],\n );\n\n const requestedRefines = refineInputCount(activeRun?.input) ?? 3;\n const refiningExisting = isRefiningExisting(activeRun?.input);\n\n // Build the Scan -> Refine N -> Result timeline. Stage completion is inferred from\n // run status plus how many task-completion events have streamed in.\n const stages = useMemo(() => {\n const labels: { id: string; name: string; sub: string }[] = [];\n if (!refiningExisting) labels.push({ id: \"feature-enum:scan\", name: \"Scan\", sub: \"Initial codebase sweep\" });\n const refineN = Math.max(1, requestedRefines);\n for (let i = 1; i <= refineN; i += 1) {\n labels.push({ id: \"feature-enum:refine:\" + i, name: \"Refine \" + i, sub: \"Add, decompose, prune\" });\n }\n labels.push({ id: \"feature-enum:result\", name: \"Result\", sub: \"Final inventory\" });\n\n const completedTasks = eventNames.filter((n) => n === \"task.finished\" || n === \"node.completed\" || n === \"task.completed\").length;\n const runStatus = activeRun?.status;\n const runDone = runStatus === \"finished\";\n const runActive = runStatus === \"running\" || runStatus === \"continued\";\n\n return labels.map((label, index): { id: string; name: string; sub: string; state: StageState } => {\n let state: StageState = \"pending\";\n if (runDone) {\n state = \"done\";\n } else if (index < completedTasks) {\n state = \"done\";\n } else if (index === completedTasks && runActive) {\n state = \"running\";\n }\n return { ...label, state };\n });\n }, [refiningExisting, requestedRefines, eventNames, activeRun?.status]);\n\n const doneStages = stages.filter((s) => s.state === \"done\").length;\n const progressPct = stages.length > 0 ? Math.round((doneStages / stages.length) * 100) : 0;\n\n const visibleGroups = useMemo(() => {\n if (!inventory) return [];\n const q = query.trim().toLowerCase();\n if (!q) return inventory.groups;\n return inventory.groups\n .map((g) => {\n const groupMatch = g.name.toLowerCase().includes(q);\n const features = groupMatch ? g.features : g.features.filter((f) => f.toLowerCase().includes(q));\n return groupMatch ? g : { name: g.name, features };\n })\n .filter((g) => g.features.length > 0 || g.name.toLowerCase().includes(q));\n }, [inventory, query]);\n\n async function refresh() {\n await Promise.all([runsQuery.refetch(), resultOutput.refetch(), scanOutput.refetch()]);\n }\n async function launch() {\n setBusy(true);\n try {\n const parsed = Number.parseInt(refineIterations, 10);\n const refines = Number.isFinite(parsed) && parsed > 0 ? parsed : 1;\n const run = await actions.launchRun({\n workflow: WORKFLOW_KEY,\n input: { refineIterations: refines },\n });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n function toggleGroup(name: string) {\n setCollapsed((prev) => ({ ...prev, [name]: !prev[name] }));\n }\n\n const running = statusClass(activeRun?.status) === \"running\";\n\n return (\n <main className=\"shell\" data-testid=\"feature-enum-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Feature Enum</h1>\n <span className=\"pill\" data-testid=\"feature-enum-runid\">\n <span className=\"mono\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n </span>\n {activeRun ? (\n <span className={\"badge \" + statusClass(activeRun.status)} data-testid=\"feature-enum-status\">\n {activeRun.status ?? \"idle\"}\n </span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"search\"\n data-testid=\"feature-enum-search\"\n value={query}\n onChange={(e) => setQuery(e.currentTarget.value)}\n placeholder=\"Filter groups or features\"\n />\n <span className=\"field\">\n refine\n <input\n className=\"prompt\"\n data-testid=\"feature-enum-refine-input\"\n value={refineIterations}\n onChange={(e) => setRefineIterations(e.currentTarget.value)}\n inputMode=\"numeric\"\n />\n </span>\n <button className=\"button\" data-testid=\"feature-enum-refresh\" onClick={() => void refresh()} disabled={busy}>\n Refresh\n </button>\n {running ? (\n <button className=\"button danger\" data-testid=\"feature-enum-cancel\" onClick={() => void cancel()} disabled={busy}>\n Cancel\n </button>\n ) : null}\n <button className=\"button primary\" data-testid=\"feature-enum-launch\" onClick={() => void launch()} disabled={busy}>\n Launch Scan\n </button>\n </div>\n </header>\n\n <div className=\"main\">\n <aside className=\"rail\" data-testid=\"feature-enum-runsummary\">\n <h3 className=\"section-head\">Run Summary</h3>\n <div className=\"meta\">\n <div className=\"meta-row\">\n <span className=\"k\">Status</span>\n <span>{activeRun?.status ?? \"no run\"}</span>\n </div>\n <div className=\"meta-row\">\n <span className=\"k\">Mode</span>\n <span>{refiningExisting ? \"refine existing\" : \"fresh scan\"}</span>\n </div>\n <div className=\"meta-row\">\n <span className=\"k\">Refine iters</span>\n <span>{Math.max(1, requestedRefines)}</span>\n </div>\n <div className=\"meta-row\">\n <span className=\"k\">Commit</span>\n <span className=\"mono\">{shortHash(inventory?.lastCommitHash)}</span>\n </div>\n <div className=\"meta-row\">\n <span className=\"k\">Events</span>\n <span>{events.length}</span>\n </div>\n </div>\n\n <h3 className=\"section-head\">Progress Timeline</h3>\n <ul className=\"timeline\" data-testid=\"feature-enum-timeline\">\n {stages.map((stage) => (\n <li key={stage.id}>\n <span className={\"stage-dot \" + stage.state} />\n <span>\n <div className=\"stage-name\">{stage.name}</div>\n <div className=\"stage-sub\">{stage.state === \"running\" ? \"running…\" : stage.state === \"done\" ? \"done\" : stage.sub}</div>\n </span>\n </li>\n ))}\n </ul>\n <div className=\"progress-track\">\n <div className=\"progress-fill\" style={{ width: progressPct + \"%\" }} />\n </div>\n </aside>\n\n <div className=\"content\">\n {inventory && inventory.groups.length > 0 ? (\n <>\n <div className=\"inv-head\">\n <h2>Feature Inventory</h2>\n <span className=\"count-badge\" data-testid=\"feature-enum-total\">{inventory.totalFeatures} features</span>\n <span className=\"group-count\">{inventory.groups.length} groups · {shortHash(inventory.lastCommitHash)}</span>\n </div>\n <div data-testid=\"feature-enum-inventory\">\n {visibleGroups.map((group) => {\n const isCollapsed = Boolean(collapsed[group.name]);\n return (\n <div className=\"group\" key={group.name}>\n <button className=\"group-head\" onClick={() => toggleGroup(group.name)}>\n <span>\n <span className=\"chevron\">{isCollapsed ? \"▶\" : \"▼\"}</span>\n <span className=\"group-name\">{group.name}</span>\n </span>\n <span className=\"group-meta\">\n <span className=\"group-count\">{group.features.length}</span>\n </span>\n </button>\n {!isCollapsed ? (\n <ul className=\"feature-list\">\n {group.features.map((feature, i) => (\n <li key={group.name + \":\" + i}>{feature}</li>\n ))}\n {group.features.length === 0 ? <li>No features in this group.</li> : null}\n </ul>\n ) : null}\n </div>\n );\n })}\n {visibleGroups.length === 0 ? (\n <div className=\"empty\">No groups match \"{query}\".</div>\n ) : null}\n </div>\n </>\n ) : (\n <div className=\"empty\" data-testid=\"feature-enum-inventory-empty\">\n <div>\n {activeRunId\n ? running\n ? \"Scanning codebase…\"\n : \"No feature inventory in this run yet.\"\n : \"No feature inventory yet.\"}\n </div>\n <div className=\"hint\">\n Create or refine a feature inventory. Set a refine iteration count and click Launch Scan to enumerate\n features grouped by domain.\n </div>\n <button className=\"button primary\" data-testid=\"feature-enum-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Launch Scan\n </button>\n </div>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div style={{ padding: \"16px 16px 0\" }}>\n <h3 className=\"section-head\">Scan Notes</h3>\n </div>\n <div style={{ padding: \"0 16px 16px\" }} data-testid=\"feature-enum-notes\">\n {inventory && inventory.markdownBody ? (\n <div className=\"notes\">\n <pre>{inventory.markdownBody}</pre>\n </div>\n ) : (\n <div className=\"empty\" style={{ padding: \"20px 0\" }}>No scan notes yet.</div>\n )}\n </div>\n\n <div className=\"section-head\" style={{ padding: \"0 16px\", marginBottom: 0 }}>Refine History</div>\n <div data-testid=\"feature-enum-history\">\n {featureRuns.map((r) => {\n const count = refineInputCount(r.input);\n return (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"feature-enum-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"top\">\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </span>\n <span className=\"sub\">\n {isRefiningExisting(r.input) ? \"refine existing\" : \"fresh\"}\n {count !== undefined ? \" · \" + count + \" iters\" : \"\"}\n </span>\n </button>\n );\n })}\n {featureRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </div>\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", - "audit": "/** @jsxImportSource react */\nimport { useEffect, useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRun,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smithers-orchestrator/gateway-react\";\n\nconst WORKFLOW_KEY = \"audit\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asNumber(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\nfunction asStringArray(value: unknown): string[] {\n return Array.isArray(value) ? value.filter((v): v is string => typeof v === \"string\") : [];\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\n// Mirror of ForEachFeature's slugify so we can reconstruct dynamic group node ids\n// purely from the run input (features record) without depending on event internals.\nfunction slugifyFeatureToken(value: string) {\n const normalized = value\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n return normalized.length > 0 ? normalized : \"item\";\n}\n\ntype FeatureGroup = { index: number; groupName: string; features: string[]; nodeId: string };\n\nfunction deriveGroups(runData: unknown): FeatureGroup[] {\n const run = isRecord(runData) ? runData : {};\n const input = isRecord(run.input) ? run.input : isRecord(run.inputs) ? run.inputs : {};\n const features = isRecord(input.features) ? input.features : {};\n const entries = Object.entries(features).filter(\n ([, groupFeatures]) => Array.isArray(groupFeatures) && groupFeatures.length > 0,\n );\n return entries.map(([groupName, groupFeatures], index) => ({\n index,\n groupName,\n features: asStringArray(groupFeatures),\n nodeId: \"audit:group:\" + slugifyFeatureToken(groupName) + \":\" + index,\n }));\n}\n\nfunction deriveFocus(runData: unknown): string | undefined {\n const run = isRecord(runData) ? runData : {};\n const input = isRecord(run.input) ? run.input : isRecord(run.inputs) ? run.inputs : {};\n return asString(input.focus);\n}\n\ntype GroupResult = {\n groupName?: string;\n result?: string;\n featuresCovered: string[];\n score?: number;\n};\nfunction extractGroupResult(value: unknown): GroupResult | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : {};\n if (Object.keys(row).length === 0) return null;\n const groupName = asString(row.groupName);\n const result = asString(row.result);\n if (groupName === undefined && result === undefined) return null;\n return {\n groupName,\n result,\n featuresCovered: asStringArray(row.featuresCovered),\n score: asNumber(row.score),\n };\n}\n\ntype MergeResult = {\n totalGroups?: number;\n summary?: string;\n mergedResult?: string;\n markdownBody?: string;\n};\nfunction extractMerge(value: unknown): MergeResult | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : {};\n const summary = asString(row.summary);\n const markdownBody = asString(row.markdownBody);\n if (summary === undefined && markdownBody === undefined) return null;\n return {\n totalGroups: asNumber(row.totalGroups),\n summary,\n mergedResult: asString(row.mergedResult),\n markdownBody,\n };\n}\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nfunction scoreClass(score: number | undefined) {\n if (score === undefined) return \"\";\n if (score >= 80) return \"ok\";\n if (score >= 50) return \"warn\";\n return \"err\";\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; flex-wrap:wrap; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".pill.focus { color:var(--primary); }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:360px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".phases { display:flex; align-items:center; gap:8px; padding:10px 20px; border-bottom:1px solid var(--border); background:var(--panel); font-size:11px; }\",\n \".phase { display:flex; align-items:center; gap:6px; color:var(--muted); }\",\n \".phase .dot { width:8px; height:8px; border-radius:50%; background:var(--border); }\",\n \".phase.active { color:var(--text); }\",\n \".phase.active .dot { background:var(--primary); }\",\n \".phase.done .dot { background:var(--ok); }\",\n \".phase-sep { flex:0 0 28px; height:1px; background:var(--border); }\",\n \".progress { flex:1; max-width:200px; height:6px; border-radius:3px; background:var(--card); overflow:hidden; }\",\n \".progress > span { display:block; height:100%; background:var(--primary); }\",\n \".main { display:grid; grid-template-columns:260px 1fr; flex:1; overflow:hidden; }\",\n \".sidebar { border-right:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); display:flex; justify-content:space-between; }\",\n \".group-row { width:100%; text-align:left; padding:11px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; flex-direction:column; gap:5px; }\",\n \".group-row:hover { background:var(--card); }\",\n \".group-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".group-row .name { font-weight:600; display:flex; align-items:center; gap:7px; }\",\n \".group-row .meta { font-size:11px; color:var(--muted); display:flex; justify-content:space-between; gap:8px; }\",\n \".sdot { width:8px; height:8px; border-radius:50%; flex:0 0 8px; background:var(--border); }\",\n \".sdot.running { background:var(--warn); }\",\n \".sdot.done { background:var(--ok); }\",\n \".score { font-family:ui-monospace,monospace; font-weight:600; }\",\n \".score.ok { color:var(--ok); }\",\n \".score.warn { color:var(--warn); }\",\n \".score.err { color:var(--err); }\",\n \".content { padding:20px; overflow:auto; }\",\n \".tabs { display:flex; gap:6px; margin-bottom:18px; }\",\n \".tab { height:28px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--muted); cursor:pointer; }\",\n \".tab.active { background:var(--card); color:var(--text); border-color:var(--primary); }\",\n \".card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:18px 20px; margin-bottom:18px; }\",\n \".card h2 { margin:0 0 6px; font-size:12px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".detail-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:10px; }\",\n \".detail-head h2 { margin:0; font-size:16px; text-transform:none; letter-spacing:0; color:var(--text); }\",\n \".chips { display:flex; flex-wrap:wrap; gap:6px; margin:8px 0 0; }\",\n \".chip { font-size:11px; color:var(--muted); background:var(--panel); border:1px solid var(--border); border-radius:5px; padding:3px 8px; }\",\n \".findings { white-space:pre-wrap; font-size:13px; line-height:1.6; margin:0; }\",\n \".report-body { white-space:pre-wrap; font-family:ui-monospace,monospace; font-size:12px; line-height:1.6; margin:0; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".meta-row { display:flex; gap:16px; color:var(--muted); font-size:12px; margin-top:6px; }\",\n].join(\"\\n\");\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [selectedGroupIdx, setSelectedGroupIdx] = useState<number | undefined>(undefined);\n const [tab, setTab] = useState<\"group\" | \"report\">(\"group\");\n const [prompt, setPrompt] = useState(\"code review\");\n const [busy, setBusy] = useState(false);\n const [copied, setCopied] = useState(false);\n\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const auditRuns = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? auditRuns[0]?.runId;\n const activeRun = auditRuns.find((r) => r.runId === activeRunId);\n\n const runQuery = useGatewayRun(activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const mergeOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"audit:merge\", iteration: 0 });\n\n const groups = useMemo(() => deriveGroups(runQuery.data), [runQuery.data]);\n const focus = deriveFocus(runQuery.data);\n const merge = useMemo(() => extractMerge(mergeOutput.data), [mergeOutput.data]);\n const events = stream.events ?? [];\n const eventCount = events.length;\n const mergeStarted = events.some(\n (e) => isRecord(e.payload) && typeof e.payload.event === \"string\" && /merge/.test(JSON.stringify(e.payload)),\n ) || merge !== null;\n\n const activeGroupId = selectedGroupIdx !== undefined ? selectedGroupIdx : groups[0]?.index;\n const activeGroup = groups.find((g) => g.index === activeGroupId);\n\n // When the merge finishes, surface the consolidated report automatically.\n useEffect(() => {\n if (merge) setTab(\"report\");\n }, [merge !== null]);\n\n async function refresh() {\n await Promise.all([runsQuery.refetch(), runQuery.refetch?.(), mergeOutput.refetch()]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { focus: prompt } });\n setSelectedRunId(run.runId);\n setSelectedGroupIdx(undefined);\n setTab(\"group\");\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function copyReport() {\n const text = merge?.markdownBody ?? merge?.mergedResult ?? merge?.summary ?? \"\";\n try {\n if (typeof navigator !== \"undefined\" && navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n }\n } catch {\n /* clipboard unavailable */\n }\n }\n\n const groupCount = groups.length;\n const parallelDone = merge !== null;\n const parallelActive = !parallelDone && groupCount > 0 && statusClass(activeRun?.status) === \"running\";\n\n return (\n <main className=\"shell\" data-testid=\"audit-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Audit</h1>\n <span className=\"pill\" data-testid=\"audit-runid\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n {focus ? <span className=\"pill focus\" data-testid=\"audit-focus\">focus: {focus}</span> : null}\n <span className=\"pill\" data-testid=\"audit-groupcount\">{groupCount} groups</span>\n {activeRun ? (\n <span className={\"badge \" + statusClass(activeRun.status)} data-testid=\"audit-status\">{activeRun.status ?? \"idle\"}</span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"audit-focus-input\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"Audit focus (e.g. code review)\"\n />\n <button className=\"button\" data-testid=\"audit-refresh\" onClick={() => void refresh()} disabled={busy}>Refresh</button>\n {activeRun && statusClass(activeRun.status) === \"running\" ? (\n <button className=\"button danger\" data-testid=\"audit-cancel\" onClick={() => void cancel()} disabled={busy}>Cancel</button>\n ) : null}\n <button className=\"button primary\" data-testid=\"audit-launch\" onClick={() => void launch()} disabled={busy}>Start Audit</button>\n </div>\n </header>\n\n <div className=\"phases\" data-testid=\"audit-timeline\">\n <div className={\"phase \" + (parallelDone ? \"done\" : parallelActive ? \"active\" : \"\")}>\n <span className=\"dot\" />\n <span>Parallel audit ({groupCount} groups)</span>\n </div>\n <div className=\"progress\"><span style={{ width: parallelDone ? \"100%\" : parallelActive ? \"55%\" : \"0%\" }} /></div>\n <div className=\"phase-sep\" />\n <div className={\"phase \" + (parallelDone ? (statusClass(activeRun?.status) === \"finished\" ? \"done\" : \"active\") : \"\")}>\n <span className=\"dot\" />\n <span>Merge & synthesize</span>\n </div>\n <div className=\"phase\" style={{ marginLeft: \"auto\" }}>\n <span>{eventCount} events</span>\n {stream.streaming ? <span>· live</span> : null}\n </div>\n </div>\n\n <div className=\"main\">\n <aside className=\"sidebar\">\n <div className=\"side-head\"><span>Feature groups</span><span>{groupCount}</span></div>\n {groups.map((g) => (\n <GroupRow\n key={g.nodeId}\n group={g}\n runId={activeRunId}\n active={g.index === activeGroupId && tab === \"group\"}\n onSelect={() => {\n setSelectedGroupIdx(g.index);\n setTab(\"group\");\n }}\n />\n ))}\n {groupCount === 0 ? <div className=\"empty\" style={{ padding: \"28px 16px\" }}>No feature groups yet.</div> : null}\n </aside>\n\n <div className=\"content\">\n <div className=\"tabs\">\n <button className={\"tab\" + (tab === \"group\" ? \" active\" : \"\")} data-testid=\"audit-tab-group\" onClick={() => setTab(\"group\")}>\n Group findings\n </button>\n <button className={\"tab\" + (tab === \"report\" ? \" active\" : \"\")} data-testid=\"audit-tab-report\" onClick={() => setTab(\"report\")}>\n Consolidated report\n </button>\n </div>\n\n {tab === \"group\" ? (\n <section data-testid=\"audit-group-detail\">\n {activeGroup ? (\n <GroupDetail group={activeGroup} runId={activeRunId} />\n ) : (\n <div className=\"empty\" data-testid=\"audit-group-empty\">\n <div>{activeRunId ? \"No feature groups in this run.\" : \"No audit run selected.\"}</div>\n {!activeRunId ? (\n <button className=\"button primary\" onClick={() => void launch()} disabled={busy}>Start Audit</button>\n ) : null}\n </div>\n )}\n </section>\n ) : (\n <section data-testid=\"audit-report\">\n {merge ? (\n <>\n <div className=\"card\">\n <div className=\"detail-head\">\n <h2>Consolidated audit report</h2>\n <button className=\"button\" data-testid=\"audit-copy\" onClick={() => void copyReport()}>\n {copied ? \"Copied\" : \"Copy\"}\n </button>\n </div>\n <div data-testid=\"audit-report-summary\">{merge.summary ?? \"(no summary)\"}</div>\n <div className=\"meta-row\">\n <span>{merge.totalGroups ?? groupCount} groups audited</span>\n </div>\n </div>\n <div className=\"card\">\n <h2>Report body</h2>\n <pre className=\"report-body\" data-testid=\"audit-report-body\">{merge.markdownBody ?? merge.mergedResult ?? \"\"}</pre>\n </div>\n </>\n ) : (\n <div className=\"empty\" data-testid=\"audit-report-empty\">\n <div>{mergeStarted ? \"Synthesizing consolidated report…\" : \"The consolidated report appears once all groups are audited and merged.\"}</div>\n </div>\n )}\n </section>\n )}\n </div>\n </div>\n </main>\n );\n}\n\nfunction GroupRow(props: {\n group: FeatureGroup;\n runId: string | undefined;\n active: boolean;\n onSelect: () => void;\n}) {\n const out = useGatewayNodeOutput({ runId: props.runId, nodeId: props.group.nodeId, iteration: 0 });\n const result = extractGroupResult(out.data);\n const done = result !== null;\n return (\n <button\n className={\"group-row\" + (props.active ? \" active\" : \"\")}\n data-testid={\"audit-group-\" + props.group.nodeId}\n onClick={props.onSelect}\n >\n <span className=\"name\">\n <span className={\"sdot \" + (done ? \"done\" : \"\")} />\n {props.group.groupName}\n </span>\n <span className=\"meta\">\n <span>{(result?.featuresCovered.length ?? props.group.features.length)} features</span>\n {result?.score !== undefined ? (\n <span className={\"score \" + scoreClass(result.score)}>{result.score}</span>\n ) : (\n <span>{done ? \"done\" : \"pending\"}</span>\n )}\n </span>\n </button>\n );\n}\n\nfunction GroupDetail(props: { group: FeatureGroup; runId: string | undefined }) {\n const out = useGatewayNodeOutput({ runId: props.runId, nodeId: props.group.nodeId, iteration: 0 });\n const result = extractGroupResult(out.data);\n const features = result?.featuresCovered.length ? result.featuresCovered : props.group.features;\n return (\n <div className=\"card\" data-testid=\"audit-group-card\">\n <div className=\"detail-head\">\n <h2 data-testid=\"audit-group-name\">{result?.groupName ?? props.group.groupName}</h2>\n {result?.score !== undefined ? (\n <span className={\"score \" + scoreClass(result.score)} style={{ fontSize: 18 }} data-testid=\"audit-group-score\">{result.score}</span>\n ) : (\n <span className=\"badge\">{result ? \"done\" : \"pending\"}</span>\n )}\n </div>\n <div className=\"chips\" data-testid=\"audit-group-features\">\n {features.length > 0 ? (\n features.map((f, i) => <span className=\"chip\" key={i}>{f}</span>)\n ) : (\n <span className=\"chip\">no features listed</span>\n )}\n </div>\n {result?.result ? (\n <pre className=\"findings\" style={{ marginTop: 14 }} data-testid=\"audit-group-findings\">{result.result}</pre>\n ) : (\n <div className=\"empty\" style={{ padding: \"32px 8px\" }}>\n {props.runId ? \"Waiting for this group's audit findings…\" : \"No run selected.\"}\n </div>\n )}\n </div>\n );\n}\n\ncreateGatewayReactRoot(<App />);", - "mission": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayApprovals,\n useGatewayNodeOutput,\n useGatewayRun,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smithers-orchestrator/gateway-react\";\n\nconst WORKFLOW_KEY = \"mission\";\nconst MAX_MILESTONES = 6;\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\ntype ApprovalSummary = {\n runId: string;\n nodeId: string;\n iteration: number;\n requestTitle?: string;\n requestSummary?: string;\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asArray(value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\n}\nfunction asStringArray(value: unknown): string[] {\n return asArray(value).filter((v): v is string => typeof v === \"string\");\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\n// Every node output is delivered under value.data.row; this UI receives value already\n// being the hook's .data, so unwrap a possible .row wrapper here.\nfunction unwrapRow(value: unknown): Record<string, unknown> | null {\n if (!isRecord(value)) return null;\n if (isRecord(value.row)) return value.row;\n return value;\n}\n\ntype Milestone = { id: string; title: string; objective: string; featureCount: number };\ntype MissionPlan = {\n goal: string;\n summary: string;\n milestones: Milestone[];\n assumptions: string[];\n risks: string[];\n outOfScope: string[];\n};\nfunction extractPlan(value: unknown): MissionPlan | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const milestones = asArray(row.milestones).map((m, i) => {\n const rec = isRecord(m) ? m : {};\n return {\n id: asString(rec.id) ?? \"milestone-\" + (i + 1),\n title: asString(rec.title) ?? \"Milestone \" + (i + 1),\n objective: asString(rec.objective) ?? \"\",\n featureCount: asArray(rec.features).length,\n };\n });\n return {\n goal: asString(row.goal) ?? \"\",\n summary,\n milestones,\n assumptions: asStringArray(row.assumptions),\n risks: asStringArray(row.risks),\n outOfScope: asStringArray(row.outOfScope),\n };\n}\n\ntype MissionApproval = { approved: boolean; note: string | null; decidedBy: string | null };\nfunction extractApproval(value: unknown): MissionApproval | null {\n const row = unwrapRow(value);\n if (!row || typeof row.approved !== \"boolean\") return null;\n return {\n approved: row.approved,\n note: asString(row.note) ?? null,\n decidedBy: asString(row.decidedBy) ?? null,\n };\n}\n\ntype Integration = {\n status: string;\n summary: string;\n mergedBranches: string[];\n conflictedBranches: string[];\n filesChanged: string[];\n};\nfunction extractIntegration(value: unknown): Integration | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n return {\n status: asString(row.status) ?? \"integrated\",\n summary,\n mergedBranches: asStringArray(row.mergedBranches),\n conflictedBranches: asStringArray(row.conflictedBranches),\n filesChanged: asStringArray(row.filesChanged),\n };\n}\n\ntype ValidationCheck = { name: string; status: string; details: string | null };\ntype Validation = {\n passed: boolean;\n summary: string;\n checks: ValidationCheck[];\n regressions: string[];\n followUps: string[];\n};\nfunction extractValidation(value: unknown): Validation | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const checks = asArray(row.checks).map((c) => {\n const rec = isRecord(c) ? c : {};\n return {\n name: asString(rec.name) ?? \"check\",\n status: asString(rec.status) ?? \"skipped\",\n details: asString(rec.details) ?? null,\n };\n });\n return {\n passed: row.passed !== false,\n summary,\n checks,\n regressions: asStringArray(row.regressions),\n followUps: asStringArray(row.followUps),\n };\n}\n\ntype MissionFinal = {\n status: string;\n summary: string;\n completedMilestones: number;\n totalMilestones: number;\n validationPassed: boolean;\n remainingRisks: string[];\n nextActions: string[];\n markdownBody: string;\n};\nfunction extractFinal(value: unknown): MissionFinal | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n return {\n status: asString(row.status) ?? \"completed\",\n summary,\n completedMilestones: typeof row.completedMilestones === \"number\" ? row.completedMilestones : 0,\n totalMilestones: typeof row.totalMilestones === \"number\" ? row.totalMilestones : 0,\n validationPassed: row.validationPassed !== false,\n remainingRisks: asStringArray(row.remainingRisks),\n nextActions: asStringArray(row.nextActions),\n markdownBody: asString(row.markdownBody) ?? \"\",\n };\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input,textarea { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".pill .mono { font-family:ui-monospace,monospace; }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; flex-wrap:wrap; }\",\n \".prompt { flex:1; min-width:200px; max-width:420px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.ok { background:var(--ok); color:#04210f; border-color:var(--ok); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".main { display:grid; grid-template-columns:1.4fr 1fr 240px; flex:1; overflow:hidden; }\",\n \"@media (max-width:1000px) { .main { grid-template-columns:1fr; overflow:auto; } .sidebar { border-left:0; border-top:1px solid var(--border); } }\",\n \".col { padding:18px 20px; overflow:auto; }\",\n \".col.left { }\",\n \".col.mid { border-left:1px solid var(--border); }\",\n \".section-head { margin:0 0 10px; font-size:11px; text-transform:uppercase; letter-spacing:0.05em; color:var(--muted); }\",\n \".card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px 18px; margin-bottom:16px; }\",\n \".card h3 { margin:0 0 6px; font-size:14px; }\",\n \".goal { font-size:15px; font-weight:600; margin-bottom:8px; }\",\n \".muted { color:var(--muted); }\",\n \".chips { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }\",\n \".chip { font-size:11px; padding:3px 8px; border-radius:999px; background:var(--panel); border:1px solid var(--border); color:var(--muted); }\",\n \".list { list-style:none; margin:8px 0 0; padding:0; }\",\n \".list li { padding:4px 0; border-bottom:1px solid var(--border); }\",\n \".list li:last-child { border-bottom:0; }\",\n \".approval { border-color:var(--warn); }\",\n \".approval-actions { display:flex; gap:8px; margin-top:12px; }\",\n \".note-input { width:100%; height:30px; padding:0 10px; margin-top:8px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".timeline { list-style:none; margin:0; padding:0; }\",\n \".ms-row { display:flex; gap:12px; padding:12px 0; border-bottom:1px solid var(--border); align-items:flex-start; }\",\n \".ms-row:last-child { border-bottom:0; }\",\n \".ms-dot { flex:0 0 26px; height:26px; border-radius:50%; background:var(--panel); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--muted); }\",\n \".ms-dot.active { border-color:var(--warn); color:var(--warn); }\",\n \".ms-dot.done { border-color:var(--ok); color:var(--ok); }\",\n \".ms-body { flex:1; min-width:0; }\",\n \".ms-title { font-weight:600; }\",\n \".ms-meta { font-size:11px; color:var(--muted); margin-top:2px; }\",\n \".feature-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:8px; }\",\n \"@media (max-width:560px) { .feature-grid { grid-template-columns:1fr; } }\",\n \".feature { background:var(--panel); border:1px solid var(--border); border-radius:8px; padding:10px 12px; }\",\n \".feature .ftitle { font-weight:600; font-size:12px; }\",\n \".check { display:flex; gap:8px; padding:5px 0; align-items:baseline; }\",\n \".check .cstatus { font-size:11px; font-weight:600; }\",\n \".cstatus.passed { color:var(--ok); }\",\n \".cstatus.failed { color:var(--err); }\",\n \".cstatus.skipped { color:var(--muted); }\",\n \".empty { color:var(--muted); text-align:center; padding:40px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".launch-form { max-width:520px; margin:24px auto; }\",\n \".launch-form textarea { width:100%; min-height:90px; padding:10px; border:1px solid var(--border); border-radius:8px; background:var(--panel); color:var(--text); resize:vertical; }\",\n \".field { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:8px 0; border-bottom:1px solid var(--border); }\",\n \".field label { color:var(--muted); }\",\n \".field input[type=number] { width:64px; height:28px; padding:0 8px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; align-items:center; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n \".report pre { white-space:pre-wrap; word-break:break-word; background:var(--panel); border:1px solid var(--border); border-radius:8px; padding:12px; font-size:12px; }\",\n \".final-stats { display:flex; gap:16px; margin:8px 0; }\",\n \".final-stats .stat { font-size:20px; font-weight:700; }\",\n \".final-stats .stat small { display:block; font-size:10px; font-weight:500; color:var(--muted); text-transform:uppercase; }\",\n].join(\"\\n\");\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nfunction MilestoneDetail(props: { runId: string | undefined; index: number; milestone: Milestone }) {\n const { runId, index, milestone } = props;\n const integrate = useGatewayNodeOutput({\n runId,\n nodeId: \"mission:milestone:\" + (index + 1) + \":integrate\",\n iteration: 0,\n });\n const validate = useGatewayNodeOutput({\n runId,\n nodeId: \"mission:milestone:\" + (index + 1) + \":validate\",\n iteration: 0,\n });\n const integration = useMemo(() => extractIntegration(integrate.data), [integrate.data]);\n const validation = useMemo(() => extractValidation(validate.data), [validate.data]);\n\n return (\n <div className=\"card\" data-testid=\"mission-active-milestone\">\n <h3>{milestone.title}</h3>\n <div className=\"muted\">{milestone.objective}</div>\n\n <div style={{ marginTop: 12 }}>\n <p className=\"section-head\">Integration</p>\n {integration ? (\n <div className=\"feature\">\n <div className=\"ftitle\">{integration.status}</div>\n <div className=\"muted\">{integration.summary}</div>\n {integration.mergedBranches.length > 0 ? (\n <div className=\"chips\">\n {integration.mergedBranches.map((b, i) => (\n <span className=\"chip\" key={i}>{b}</span>\n ))}\n </div>\n ) : null}\n {integration.conflictedBranches.length > 0 ? (\n <div className=\"chips\">\n {integration.conflictedBranches.map((b, i) => (\n <span className=\"chip\" key={i} style={{ color: \"var(--err)\" }}>{b}</span>\n ))}\n </div>\n ) : null}\n {integration.filesChanged.length === 0 ? (\n <div className=\"muted\" style={{ marginTop: 6 }}>No files changed.</div>\n ) : null}\n </div>\n ) : (\n <div className=\"muted\">Awaiting integration.</div>\n )}\n </div>\n\n <div style={{ marginTop: 12 }}>\n <p className=\"section-head\">Validation</p>\n {validation ? (\n <div className=\"feature\" data-testid=\"mission-validation\">\n <div className=\"ftitle\">\n <span className={\"cstatus \" + (validation.passed ? \"passed\" : \"failed\")}>\n {validation.passed ? \"PASSED\" : \"FAILED\"}\n </span>{\" \"}\n {validation.summary}\n </div>\n {validation.checks.length > 0 ? (\n <div style={{ marginTop: 6 }}>\n {validation.checks.map((c, i) => (\n <div className=\"check\" key={i}>\n <span className={\"cstatus \" + c.status}>{c.status}</span>\n <span>{c.name}{c.details ? \" — \" + c.details : \"\"}</span>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"muted\" style={{ marginTop: 6 }}>No individual checks reported.</div>\n )}\n {validation.followUps.length > 0 ? (\n <ul className=\"list\">\n {validation.followUps.map((f, i) => (\n <li key={i}>Follow-up: {f}</li>\n ))}\n </ul>\n ) : null}\n </div>\n ) : (\n <div className=\"muted\">Awaiting validation.</div>\n )}\n </div>\n </div>\n );\n}\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Describe the mission goal.\");\n const [requireApproval, setRequireApproval] = useState(true);\n const [maxMilestones, setMaxMilestones] = useState(6);\n const [maxConcurrency, setMaxConcurrency] = useState(3);\n const [note, setNote] = useState(\"\");\n const [busy, setBusy] = useState(false);\n\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const missionRuns = useMemo(\n () =>\n ((runsQuery.data ?? []) as RunSummary[]).filter(\n (r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY,\n ),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? missionRuns[0]?.runId;\n const activeRun = missionRuns.find((r) => r.runId === activeRunId);\n\n const runDetail = useGatewayRun(activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const approvalsQuery = useGatewayApprovals(\n activeRunId ? { filter: { runId: activeRunId } } : {},\n );\n\n const planOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"mission:plan\", iteration: 0 });\n const approvalOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"mission:approve-plan\", iteration: 0 });\n const finalOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"mission:final\", iteration: 0 });\n\n const plan = useMemo(() => extractPlan(planOutput.data), [planOutput.data]);\n const approval = useMemo(() => extractApproval(approvalOutput.data), [approvalOutput.data]);\n const final = useMemo(() => extractFinal(finalOutput.data), [finalOutput.data]);\n\n const pendingApproval = useMemo(() => {\n const list = (approvalsQuery.data ?? []) as ApprovalSummary[];\n return list.find((a) => a.runId === activeRunId && a.nodeId === \"mission:approve-plan\");\n }, [approvalsQuery.data, activeRunId]);\n\n const runStatus = (runDetail.data as RunSummary | undefined)?.status ?? activeRun?.status;\n const eventCount = (stream.events ?? []).length;\n\n // Determine which milestone is active from completed validate events.\n const activeIndex = useMemo(() => {\n const events = stream.events ?? [];\n let highestPassed = -1;\n for (const ev of events) {\n const rec: Record<string, unknown> = isRecord(ev) ? ev : {};\n const nodeId = asString(rec.nodeId) ?? \"\";\n const match = nodeId.match(/^mission:milestone:(\\d+):(validate|revalidate)$/);\n if (match && (asString(rec.type) ?? \"\").includes(\"complete\")) {\n const idx = Number(match[1]) - 1;\n if (idx > highestPassed) highestPassed = idx;\n }\n }\n return highestPassed + 1;\n }, [stream.events]);\n\n async function refresh() {\n await Promise.all([\n runsQuery.refetch(),\n runDetail.refetch(),\n planOutput.refetch(),\n approvalOutput.refetch(),\n finalOutput.refetch(),\n approvalsQuery.refetch(),\n ]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({\n workflow: WORKFLOW_KEY,\n input: {\n prompt,\n requirePlanApproval: requireApproval,\n maxMilestones,\n maxConcurrency,\n },\n });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function decide(approved: boolean) {\n if (!pendingApproval) return;\n setBusy(true);\n try {\n await actions.submitApproval({\n runId: pendingApproval.runId,\n nodeId: pendingApproval.nodeId,\n iteration: pendingApproval.iteration,\n decision: { approved, note: note || undefined },\n });\n setNote(\"\");\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n const hasAnyRun = Boolean(activeRunId);\n const timelineMilestones = plan?.milestones ?? [];\n\n return (\n <main className=\"shell\" data-testid=\"mission-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Mission</h1>\n <span className=\"pill\" data-testid=\"mission-runid\">\n <span className=\"mono\">{hasAnyRun ? shortRunId(activeRunId) : \"No run\"}</span>\n </span>\n {hasAnyRun ? (\n <span className={\"badge \" + statusClass(runStatus)} data-testid=\"mission-status\">\n {runStatus ?? \"idle\"}\n </span>\n ) : null}\n {hasAnyRun ? <span className=\"pill\">{eventCount} events</span> : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"mission-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What is the mission?\"\n />\n <button className=\"button\" data-testid=\"mission-refresh\" onClick={() => void refresh()} disabled={busy}>\n Refresh\n </button>\n {statusClass(runStatus) === \"running\" ? (\n <button className=\"button danger\" data-testid=\"mission-cancel\" onClick={() => void cancel()} disabled={busy}>\n Cancel\n </button>\n ) : null}\n <button className=\"button primary\" data-testid=\"mission-launch\" onClick={() => void launch()} disabled={busy}>\n Launch Mission\n </button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"col left\">\n {!hasAnyRun ? (\n <div className=\"launch-form\" data-testid=\"mission-empty\">\n <p className=\"section-head\">Launch a mission</p>\n <textarea\n data-testid=\"mission-launch-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"Describe the mission goal.\"\n />\n <div className=\"field\">\n <label htmlFor=\"m-approval\">Require plan approval</label>\n <input\n id=\"m-approval\"\n type=\"checkbox\"\n checked={requireApproval}\n onChange={(e) => setRequireApproval(e.currentTarget.checked)}\n />\n </div>\n <div className=\"field\">\n <label htmlFor=\"m-milestones\">Max milestones</label>\n <input\n id=\"m-milestones\"\n type=\"number\"\n min={1}\n max={MAX_MILESTONES * 3}\n value={maxMilestones}\n onChange={(e) => setMaxMilestones(Number(e.currentTarget.value) || 1)}\n />\n </div>\n <div className=\"field\">\n <label htmlFor=\"m-concurrency\">Max concurrency</label>\n <input\n id=\"m-concurrency\"\n type=\"number\"\n min={1}\n max={10}\n value={maxConcurrency}\n onChange={(e) => setMaxConcurrency(Number(e.currentTarget.value) || 1)}\n />\n </div>\n <button\n className=\"button primary\"\n data-testid=\"mission-launch-empty\"\n onClick={() => void launch()}\n disabled={busy}\n style={{ marginTop: 14 }}\n >\n Launch Mission\n </button>\n </div>\n ) : (\n <div data-testid=\"mission-plan-panel\">\n <p className=\"section-head\">Mission plan</p>\n {plan ? (\n <div className=\"card\">\n <div className=\"goal\" data-testid=\"mission-goal\">{plan.goal || \"Mission goal\"}</div>\n <div className=\"muted\" data-testid=\"mission-summary\">{plan.summary}</div>\n {plan.assumptions.length > 0 ? (\n <>\n <p className=\"section-head\" style={{ marginTop: 12 }}>Assumptions</p>\n <ul className=\"list\">\n {plan.assumptions.map((a, i) => <li key={i}>{a}</li>)}\n </ul>\n </>\n ) : null}\n {plan.risks.length > 0 ? (\n <>\n <p className=\"section-head\" style={{ marginTop: 12 }}>Risks</p>\n <ul className=\"list\">\n {plan.risks.map((r, i) => <li key={i}>{r}</li>)}\n </ul>\n </>\n ) : null}\n {plan.outOfScope.length > 0 ? (\n <div className=\"chips\">\n {plan.outOfScope.map((o, i) => <span className=\"chip\" key={i}>out: {o}</span>)}\n </div>\n ) : null}\n </div>\n ) : (\n <div className=\"card muted\">Waiting for the plan to be generated…</div>\n )}\n\n {pendingApproval ? (\n <div className=\"card approval\" data-testid=\"mission-approval\">\n <h3>{pendingApproval.requestTitle ?? \"Approve mission plan?\"}</h3>\n <div className=\"muted\">{pendingApproval.requestSummary ?? \"Review the scoped plan before workers begin.\"}</div>\n <input\n className=\"note-input\"\n data-testid=\"mission-approval-note\"\n value={note}\n onChange={(e) => setNote(e.currentTarget.value)}\n placeholder=\"Optional note\"\n />\n <div className=\"approval-actions\">\n <button className=\"button ok\" data-testid=\"mission-approve\" onClick={() => void decide(true)} disabled={busy}>\n Approve\n </button>\n <button className=\"button danger\" data-testid=\"mission-deny\" onClick={() => void decide(false)} disabled={busy}>\n Deny\n </button>\n </div>\n </div>\n ) : approval ? (\n <div className=\"card\" data-testid=\"mission-approval-result\">\n <h3>\n Plan{\" \"}\n <span className={\"badge \" + (approval.approved ? \"finished\" : \"failed\")}>\n {approval.approved ? \"approved\" : \"denied\"}\n </span>\n </h3>\n {approval.note ? <div className=\"muted\">{approval.note}</div> : null}\n {approval.decidedBy ? <div className=\"muted\">by {approval.decidedBy}</div> : null}\n </div>\n ) : null}\n\n <p className=\"section-head\" style={{ marginTop: 8 }}>Milestone timeline</p>\n {timelineMilestones.length > 0 ? (\n <ul className=\"timeline\" data-testid=\"mission-timeline\">\n {timelineMilestones.map((m, i) => {\n const done = i < activeIndex;\n const active = i === activeIndex && statusClass(runStatus) === \"running\";\n return (\n <li className=\"ms-row\" key={m.id} data-testid={\"mission-milestone-\" + m.id}>\n <span className={\"ms-dot\" + (done ? \" done\" : active ? \" active\" : \"\")}>\n {done ? \"✓\" : i + 1}\n </span>\n <span className=\"ms-body\">\n <span className=\"ms-title\">{m.title}</span>\n <span className=\"ms-meta\">\n {m.featureCount} feature{m.featureCount === 1 ? \"\" : \"s\"}\n {done ? \" · done\" : active ? \" · in progress\" : \" · pending\"}\n </span>\n </span>\n </li>\n );\n })}\n </ul>\n ) : (\n <div className=\"muted\">No milestones planned yet.</div>\n )}\n </div>\n )}\n </div>\n\n <div className=\"col mid\">\n {final ? (\n <div className=\"report\" data-testid=\"mission-final\">\n <p className=\"section-head\">Mission report</p>\n <div className=\"card\">\n <h3>\n <span className={\"badge \" + (final.status === \"completed\" ? \"finished\" : final.status === \"cancelled\" ? \"failed\" : \"running\")}>\n {final.status}\n </span>\n </h3>\n <div className=\"muted\" data-testid=\"mission-final-summary\">{final.summary}</div>\n <div className=\"final-stats\">\n <span className=\"stat\">\n {final.completedMilestones}/{final.totalMilestones}\n <small>milestones</small>\n </span>\n <span className=\"stat\">\n {final.validationPassed ? \"PASS\" : \"FAIL\"}\n <small>validation</small>\n </span>\n </div>\n {final.nextActions.length > 0 ? (\n <>\n <p className=\"section-head\" style={{ marginTop: 12 }}>Next actions</p>\n <ul className=\"list\">\n {final.nextActions.map((a, i) => <li key={i}>{a}</li>)}\n </ul>\n </>\n ) : null}\n {final.remainingRisks.length > 0 ? (\n <>\n <p className=\"section-head\" style={{ marginTop: 12 }}>Remaining risks</p>\n <ul className=\"list\">\n {final.remainingRisks.map((r, i) => <li key={i}>{r}</li>)}\n </ul>\n </>\n ) : null}\n </div>\n {final.markdownBody ? (\n <div className=\"card\">\n <p className=\"section-head\">Full report</p>\n <pre>{final.markdownBody}</pre>\n </div>\n ) : null}\n </div>\n ) : hasAnyRun && plan && timelineMilestones.length > 0 && activeIndex < timelineMilestones.length ? (\n <>\n <p className=\"section-head\">Active milestone</p>\n <MilestoneDetail runId={activeRunId} index={activeIndex} milestone={timelineMilestones[activeIndex]} />\n </>\n ) : (\n <div className=\"empty\" data-testid=\"mission-detail-empty\">\n {hasAnyRun ? \"Milestone work and the final report will appear here.\" : \"Launch a mission to see milestone progress.\"}\n </div>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent missions</div>\n {missionRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"mission-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {missionRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", - "workflow-skill": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smithers-orchestrator/gateway-react\";\n\nconst WORKFLOW_KEY = \"workflow-skill\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\nfunction unwrapRow(value: unknown): Record<string, unknown> {\n const response = isRecord(value) ? value : {};\n if (isRecord(response.row)) return response.row;\n return response;\n}\n\ntype WorkflowSource = {\n id: string;\n displayName: string;\n sourceType: string;\n entryFile: string;\n};\ntype ExistingSkill = { path: string };\ntype CollectOutput = {\n workflowTarget: string;\n output: string | null;\n outputRule: string;\n defaultSkillDir: string;\n prompt: string;\n workflows: WorkflowSource[];\n existingSkills: ExistingSkill[];\n};\nfunction extractCollect(value: unknown): CollectOutput | null {\n const row = unwrapRow(value);\n const workflowTarget = asString(row.workflowTarget);\n if (workflowTarget === undefined) return null;\n const workflows = Array.isArray(row.workflows)\n ? row.workflows\n .filter(isRecord)\n .map((w) => ({\n id: asString(w.id) ?? \"\",\n displayName: asString(w.displayName) ?? asString(w.id) ?? \"\",\n sourceType: asString(w.sourceType) ?? \"user\",\n entryFile: asString(w.entryFile) ?? \"\",\n }))\n : [];\n const existingSkills = Array.isArray(row.existingSkills)\n ? row.existingSkills\n .filter(isRecord)\n .map((s) => ({ path: asString(s.path) ?? \"\" }))\n : [];\n return {\n workflowTarget,\n output: asString(row.output) ?? null,\n outputRule: asString(row.outputRule) ?? \"\",\n defaultSkillDir: asString(row.defaultSkillDir) ?? \"\",\n prompt: asString(row.prompt) ?? \"\",\n workflows,\n existingSkills,\n };\n}\n\ntype WrittenSkill = {\n workflow: string;\n path: string;\n skillName: string;\n action: string;\n};\ntype WriteResult = { summary: string; written: WrittenSkill[] };\nfunction extractWriteResult(value: unknown): WriteResult | null {\n const row = unwrapRow(value);\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const written = Array.isArray(row.written)\n ? row.written\n .filter(isRecord)\n .map((w) => ({\n workflow: asString(w.workflow) ?? \"\",\n path: asString(w.path) ?? \"\",\n skillName: asString(w.skillName) ?? \"\",\n action: asString(w.action) ?? \"updated\",\n }))\n : [];\n return { summary, written };\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); font-family:ui-monospace,monospace; }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:360px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".target { width:120px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:240px 1fr; flex:1; overflow:hidden; }\",\n \".sidebar { border-right:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; align-items:center; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n \".content { padding:20px; overflow:auto; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".inputbar { display:flex; flex-wrap:wrap; gap:10px; background:var(--card); border:1px solid var(--border); border-radius:10px; padding:14px 18px; margin-bottom:18px; }\",\n \".inputbar .field { display:flex; flex-direction:column; gap:3px; }\",\n \".inputbar .label { font-size:10px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".inputbar .value { font-size:13px; font-family:ui-monospace,monospace; }\",\n \".timeline { display:flex; align-items:stretch; gap:0; margin-bottom:18px; }\",\n \".tl-node { flex:1; background:var(--card); border:1px solid var(--border); border-radius:10px; padding:14px 16px; display:flex; flex-direction:column; gap:6px; }\",\n \".tl-conn { display:flex; align-items:center; padding:0 10px; color:var(--muted); }\",\n \".tl-name { font-size:13px; font-weight:600; display:flex; align-items:center; gap:8px; }\",\n \".tl-sub { font-size:11px; color:var(--muted); }\",\n \".dot { width:9px; height:9px; border-radius:50%; background:var(--border); display:inline-block; }\",\n \".dot.running { background:var(--warn); }\",\n \".dot.done { background:var(--ok); }\",\n \".dot.failed { background:var(--err); }\",\n \".section { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px 18px; margin-bottom:18px; }\",\n \".section h2 { margin:0 0 10px; font-size:12px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".section .summary-text { font-size:15px; line-height:1.55; margin-bottom:12px; }\",\n \".collapse-head { cursor:pointer; user-select:none; display:flex; align-items:center; gap:8px; }\",\n \".list { list-style:none; margin:0; padding:0; }\",\n \".list li { display:flex; justify-content:space-between; gap:12px; padding:8px 0; border-bottom:1px solid var(--border); }\",\n \".list li:last-child { border-bottom:0; }\",\n \".list .mono { font-family:ui-monospace,monospace; font-size:12px; color:var(--muted); }\",\n \".list .name { font-weight:500; }\",\n \".action-badge { font-size:10px; font-weight:600; text-transform:uppercase; padding:2px 7px; border-radius:4px; border:1px solid var(--border); }\",\n \".action-badge.created { color:var(--ok); border-color:var(--ok); }\",\n \".action-badge.updated { color:var(--warn); border-color:var(--warn); }\",\n \".count { font-size:11px; color:var(--muted); margin-left:auto; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".empty-inline { color:var(--muted); padding:10px 0; font-size:12px; }\",\n \".footer { display:flex; align-items:center; gap:10px; color:var(--muted); font-size:12px; margin-top:8px; }\",\n].join(\"\\n\");\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nfunction nodeState(\n finished: boolean,\n active: boolean,\n done: boolean,\n failed: boolean,\n) {\n if (done) return \"done\";\n if (failed) return \"failed\";\n if (active && !finished) return \"running\";\n return \"pending\";\n}\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [workflow, setWorkflow] = useState(\"all\");\n const [prompt, setPrompt] = useState(\"\");\n const [collectOpen, setCollectOpen] = useState(true);\n const [busy, setBusy] = useState(false);\n\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const skillRuns = useMemo(\n () =>\n ((runsQuery.data ?? []) as RunSummary[]).filter(\n (r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY,\n ),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? skillRuns[0]?.runId;\n const activeRun = skillRuns.find((r) => r.runId === activeRunId);\n\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const collectQuery = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"collect\", iteration: 0 });\n const writeQuery = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"write-skills\", iteration: 0 });\n\n const collect = useMemo(() => extractCollect(collectQuery.data), [collectQuery.data]);\n const result = useMemo(() => extractWriteResult(writeQuery.data), [writeQuery.data]);\n\n const events = stream.events ?? [];\n const runStatus = statusClass(activeRun?.status);\n const runFailed = runStatus === \"failed\";\n const collectDone = collect !== null;\n const writeDone = result !== null;\n\n const createdCount = result ? result.written.filter((w) => w.action === \"created\").length : 0;\n const updatedCount = result ? result.written.filter((w) => w.action === \"updated\").length : 0;\n const successCount = skillRuns.filter((r) => statusClass(r.status) === \"finished\").length;\n\n async function refresh() {\n await Promise.all([\n runsQuery.refetch(),\n collectQuery.refetch(),\n writeQuery.refetch(),\n ]);\n }\n async function launch() {\n setBusy(true);\n try {\n const input: Record<string, unknown> = { workflow: workflow.trim() || \"all\" };\n if (prompt.trim()) input.prompt = prompt.trim();\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function resume() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.resumeRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n return (\n <main className=\"shell\" data-testid=\"workflow-skill-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Workflow Skill</h1>\n <span className=\"pill\" data-testid=\"workflow-skill-runid\">\n {activeRunId ? shortRunId(activeRunId) : \"No run\"}\n </span>\n {activeRun ? (\n <span className={\"badge \" + runStatus} data-testid=\"workflow-skill-status\">\n {activeRun.status ?? \"idle\"}\n </span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"target\"\n data-testid=\"workflow-skill-target\"\n value={workflow}\n onChange={(e) => setWorkflow(e.currentTarget.value)}\n placeholder=\"workflow (all)\"\n />\n <input\n className=\"prompt\"\n data-testid=\"workflow-skill-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"Extra instructions (optional)\"\n />\n <button\n className=\"button\"\n data-testid=\"workflow-skill-refresh\"\n onClick={() => void refresh()}\n disabled={busy}\n >\n Refresh\n </button>\n {runStatus === \"running\" ? (\n <button\n className=\"button danger\"\n data-testid=\"workflow-skill-cancel\"\n onClick={() => void cancel()}\n disabled={busy}\n >\n Cancel\n </button>\n ) : null}\n {runFailed ? (\n <button\n className=\"button\"\n data-testid=\"workflow-skill-resume\"\n onClick={() => void resume()}\n disabled={busy}\n >\n Resume\n </button>\n ) : null}\n <button\n className=\"button primary\"\n data-testid=\"workflow-skill-launch\"\n onClick={() => void launch()}\n disabled={busy}\n >\n Generate Skills\n </button>\n </div>\n </header>\n\n <div className=\"main\">\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent runs</div>\n {skillRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"workflow-skill-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {skillRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n\n <div className=\"content\">\n {activeRunId ? (\n <>\n <div className=\"inputbar\" data-testid=\"workflow-skill-input\">\n <div className=\"field\">\n <span className=\"label\">Workflow target</span>\n <span className=\"value\">{collect?.workflowTarget ?? workflow ?? \"all\"}</span>\n </div>\n <div className=\"field\">\n <span className=\"label\">Output</span>\n <span className=\"value\">{collect?.output ?? collect?.defaultSkillDir ?? \"default\"}</span>\n </div>\n <div className=\"field\">\n <span className=\"label\">Extra prompt</span>\n <span className=\"value\">{collect?.prompt && collect.prompt.length > 0 ? collect.prompt : \"none\"}</span>\n </div>\n </div>\n\n <div className=\"timeline\" data-testid=\"workflow-skill-timeline\">\n <div className=\"tl-node\">\n <div className=\"tl-name\">\n <span className={\"dot \" + nodeState(collectDone, true, collectDone, runFailed && !collectDone)} />\n collect\n </div>\n <div className=\"tl-sub\">\n {collect\n ? collect.workflows.length + \" workflows discovered\"\n : \"discovering workflows\"}\n </div>\n </div>\n <div className=\"tl-conn\">→</div>\n <div className=\"tl-node\">\n <div className=\"tl-name\">\n <span className={\"dot \" + nodeState(writeDone, collectDone, writeDone, runFailed && collectDone)} />\n write-skills\n </div>\n <div className=\"tl-sub\">\n {result\n ? result.written.length + \" skills written\"\n : collectDone\n ? \"writing skill docs\"\n : \"waiting on collect\"}\n </div>\n </div>\n </div>\n\n <div className=\"section\" data-testid=\"workflow-skill-collect\">\n <div className=\"collapse-head\" onClick={() => setCollectOpen((v) => !v)}>\n <h2 style={{ margin: 0 }}>Collection details</h2>\n <span className=\"count\">{collectOpen ? \"hide\" : \"show\"}</span>\n </div>\n {collectOpen ? (\n collect ? (\n <div style={{ marginTop: 12 }}>\n <div className=\"label\" style={{ marginBottom: 6 }}>\n Workflows to document\n </div>\n <ul className=\"list\" data-testid=\"workflow-skill-workflows\">\n {collect.workflows.map((w) => (\n <li key={w.id}>\n <span className=\"name\">{w.displayName}</span>\n <span className=\"mono\">{w.id}</span>\n </li>\n ))}\n {collect.workflows.length === 0 ? (\n <li className=\"empty-inline\">No workflows discovered.</li>\n ) : null}\n </ul>\n <div className=\"label\" style={{ margin: \"14px 0 6px\" }}>\n Existing skills on disk\n </div>\n <ul className=\"list\" data-testid=\"workflow-skill-existing\">\n {collect.existingSkills.map((s) => (\n <li key={s.path}>\n <span className=\"mono\">{s.path}</span>\n </li>\n ))}\n {collect.existingSkills.length === 0 ? (\n <li className=\"empty-inline\">No existing skill files yet.</li>\n ) : null}\n </ul>\n </div>\n ) : (\n <div className=\"empty-inline\" data-testid=\"workflow-skill-collect-pending\">\n Waiting for the collect task to finish discovery…\n </div>\n )\n ) : null}\n </div>\n\n <div className=\"section\" data-testid=\"workflow-skill-results\">\n <div className=\"collapse-head\">\n <h2 style={{ margin: 0 }}>Generated skills</h2>\n {result ? (\n <span className=\"count\">\n {createdCount} created · {updatedCount} updated\n </span>\n ) : null}\n </div>\n {result ? (\n <div style={{ marginTop: 12 }}>\n <div className=\"summary-text\" data-testid=\"workflow-skill-summary\">\n {result.summary}\n </div>\n <ul className=\"list\" data-testid=\"workflow-skill-written\">\n {result.written.map((w, i) => (\n <li key={w.path + \":\" + i}>\n <span className=\"name\">{w.skillName || w.workflow}</span>\n <span className=\"mono\">{w.path}</span>\n <span className={\"action-badge \" + w.action}>{w.action}</span>\n </li>\n ))}\n {result.written.length === 0 ? (\n <li className=\"empty-inline\" data-testid=\"workflow-skill-written-empty\">\n No skill files were written in this run.\n </li>\n ) : null}\n </ul>\n </div>\n ) : (\n <div className=\"empty-inline\" data-testid=\"workflow-skill-results-pending\">\n {collectDone\n ? \"Generating skill documentation…\"\n : \"Results appear once write-skills completes.\"}\n </div>\n )}\n </div>\n\n <div className=\"footer\">\n <span>{events.length} events</span>\n <span>·</span>\n <span>\n {successCount} of {skillRuns.length} runs successful\n </span>\n {collectQuery.loading || writeQuery.loading ? <span>· refreshing…</span> : null}\n </div>\n </>\n ) : (\n <div className=\"empty\" data-testid=\"workflow-skill-empty\">\n <div>\n Select a run from the sidebar, or launch a new one to generate skill documentation.\n No run selected.\n </div>\n <button\n className=\"button primary\"\n data-testid=\"workflow-skill-launch-empty\"\n onClick={() => void launch()}\n disabled={busy}\n >\n Generate Skills\n </button>\n </div>\n )}\n </div>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", + "implement": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smthrs/gateway-react\";\n\nconst WORKFLOW_KEY = \"implement\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asBool(value: unknown): boolean | undefined {\n return typeof value === \"boolean\" ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\nfunction unwrapRow(value: unknown): Record<string, unknown> | null {\n const response = isRecord(value) ? value : {};\n const data = isRecord(response.data) ? response.data : response;\n const row = isRecord(data.row) ? data.row : isRecord(data) ? data : null;\n return row;\n}\n\ntype ImplementOutput = {\n summary: string;\n filesChanged: string[];\n allTestsPassing: boolean | undefined;\n};\nfunction extractImplement(value: unknown): ImplementOutput | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const filesChanged = Array.isArray(row.filesChanged)\n ? row.filesChanged.filter((f): f is string => typeof f === \"string\")\n : [];\n return { summary, filesChanged, allTestsPassing: asBool(row.allTestsPassing) };\n}\n\ntype ValidateOutput = {\n summary: string;\n allPassed: boolean | undefined;\n failingSummary: string | null;\n};\nfunction extractValidate(value: unknown): ValidateOutput | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const failingSummary = asString(row.failingSummary) ?? null;\n return { summary, allPassed: asBool(row.allPassed), failingSummary };\n}\n\ntype ReviewIssue = { severity: string; title: string; file: string | null; description: string };\ntype ReviewOutput = {\n reviewer: string;\n approved: boolean | undefined;\n feedback: string;\n issues: ReviewIssue[];\n};\nfunction extractReview(value: unknown): ReviewOutput | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const reviewer = asString(row.reviewer);\n const feedback = asString(row.feedback);\n if (reviewer === undefined && feedback === undefined) return null;\n const issues = Array.isArray(row.issues)\n ? row.issues\n .map((raw): ReviewIssue | null => {\n if (!isRecord(raw)) return null;\n const title = asString(raw.title);\n if (title === undefined) return null;\n return {\n severity: asString(raw.severity) ?? \"nit\",\n title,\n file: asString(raw.file) ?? null,\n description: asString(raw.description) ?? \"\",\n };\n })\n .filter((i): i is ReviewIssue => i !== null)\n : [];\n return {\n reviewer: reviewer ?? \"reviewer\",\n approved: asBool(row.approved),\n feedback: feedback ?? \"\",\n issues,\n };\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:420px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:1fr 280px; flex:1; overflow:hidden; }\",\n \".content { padding:20px; overflow:auto; }\",\n \".status-row { display:flex; align-items:center; gap:10px; margin-bottom:16px; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".banner { display:flex; align-items:center; gap:12px; padding:14px 18px; border-radius:10px; margin-bottom:18px; border:1px solid var(--border); font-weight:600; }\",\n \".banner.done { background:rgba(74,222,128,0.08); border-color:var(--ok); color:var(--ok); }\",\n \".banner.blocked { background:rgba(248,113,113,0.08); border-color:var(--err); color:var(--err); }\",\n \".banner.progress { background:rgba(94,106,210,0.1); border-color:var(--primary); color:#aab2f0; }\",\n \".banner-icon { font-size:18px; }\",\n \".banner-sub { font-weight:400; color:var(--muted); font-size:12px; }\",\n \".iteration { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".phase { background:var(--card); border:1px solid var(--border); border-radius:10px; margin-bottom:14px; overflow:hidden; }\",\n \".phase-head { display:flex; align-items:center; gap:10px; padding:14px 18px; cursor:pointer; user-select:none; }\",\n \".phase-head:hover { background:var(--panel); }\",\n \".phase-dot { flex:0 0 10px; width:10px; height:10px; border-radius:50%; background:var(--muted); }\",\n \".phase-dot.ok { background:var(--ok); }\",\n \".phase-dot.err { background:var(--err); }\",\n \".phase-dot.pending { background:var(--border); }\",\n \".phase-title { font-weight:600; font-size:13px; }\",\n \".phase-meta { margin-left:auto; font-size:11px; color:var(--muted); }\",\n \".phase-body { padding:0 18px 16px; }\",\n \".phase-empty { color:var(--muted); padding:0 18px 16px; font-size:12px; }\",\n \".kv { font-size:12px; color:var(--muted); text-transform:uppercase; letter-spacing:0.04em; margin:10px 0 6px; }\",\n \".summary-text { font-size:14px; line-height:1.55; }\",\n \".chips { display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; }\",\n \".chip { font-family:ui-monospace,monospace; font-size:11px; background:var(--panel); border:1px solid var(--border); border-radius:5px; padding:3px 8px; }\",\n \".reviewers { display:grid; grid-template-columns:1fr 1fr; gap:12px; }\",\n \".reviewer-card { background:var(--panel); border:1px solid var(--border); border-radius:8px; padding:14px; }\",\n \".reviewer-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px; }\",\n \".reviewer-name { font-weight:600; font-size:12px; }\",\n \".verdict { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".verdict.approved { color:var(--ok); border-color:var(--ok); }\",\n \".verdict.rejected { color:var(--err); border-color:var(--err); }\",\n \".reviewer-feedback { font-size:12px; color:var(--text); line-height:1.5; }\",\n \".issues { list-style:none; margin:10px 0 0; padding:0; }\",\n \".issue { display:flex; gap:8px; align-items:flex-start; padding:6px 0; border-top:1px solid var(--border); }\",\n \".sev { flex:0 0 auto; font-size:10px; font-weight:700; text-transform:uppercase; padding:2px 6px; border-radius:4px; }\",\n \".sev.critical { background:rgba(248,113,113,0.15); color:var(--err); }\",\n \".sev.major { background:rgba(251,146,60,0.15); color:#fb923c; }\",\n \".sev.minor { background:rgba(251,191,36,0.15); color:var(--warn); }\",\n \".sev.nit { background:var(--card); color:var(--muted); }\",\n \".issue-body { font-size:12px; }\",\n \".issue-title { font-weight:600; }\",\n \".issue-file { font-family:ui-monospace,monospace; font-size:11px; color:var(--muted); }\",\n \".feedback-block { background:#0e0e10; border:1px solid var(--err); border-radius:10px; padding:14px 16px; margin-bottom:14px; }\",\n \".feedback-block h2 { margin:0 0 8px; font-size:12px; text-transform:uppercase; letter-spacing:0.04em; color:var(--err); }\",\n \".feedback-pre { margin:0; white-space:pre-wrap; font-family:ui-monospace,monospace; font-size:11px; color:#ddd; max-height:260px; overflow:auto; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".empty-lead { max-width:420px; margin:0 auto 8px; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n].join(\"\\n\");\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\ntype PhaseCardProps = {\n testId: string;\n title: string;\n dot: string;\n meta: string;\n children: React.ReactNode;\n emptyText: string;\n hasContent: boolean;\n};\nfunction PhaseCard(props: PhaseCardProps) {\n const [open, setOpen] = useState(true);\n return (\n <section className=\"phase\" data-testid={props.testId}>\n <div className=\"phase-head\" onClick={() => setOpen((v) => !v)}>\n <span className={\"phase-dot \" + props.dot} />\n <span className=\"phase-title\">{props.title}</span>\n <span className=\"phase-meta\">{props.meta}</span>\n <span className=\"phase-meta\">{open ? \"collapse\" : \"expand\"}</span>\n </div>\n {open\n ? props.hasContent\n ? <div className=\"phase-body\">{props.children}</div>\n : <div className=\"phase-empty\">{props.emptyText}</div>\n : null}\n </section>\n );\n}\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Implement the requested change.\");\n const [busy, setBusy] = useState(false);\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const implementRuns = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? implementRuns[0]?.runId;\n const activeRun = implementRuns.find((r) => r.runId === activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n\n const implementOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"impl:implement\", iteration: 0 });\n const validateOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"impl:validate\", iteration: 0 });\n const review0Out = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"impl:review:0\", iteration: 0 });\n const review1Out = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"impl:review:1\", iteration: 0 });\n\n const implement = useMemo(() => extractImplement(implementOut.data), [implementOut.data]);\n const validate = useMemo(() => extractValidate(validateOut.data), [validateOut.data]);\n const review0 = useMemo(() => extractReview(review0Out.data), [review0Out.data]);\n const review1 = useMemo(() => extractReview(review1Out.data), [review1Out.data]);\n const reviews = useMemo(\n () => [review0, review1].filter((r): r is ReviewOutput => r !== null),\n [review0, review1],\n );\n\n const eventCount = (stream.events ?? []).length;\n\n const validationPassed = validate !== null && validate.allPassed !== false;\n const anyApproved = reviews.length > 0 && reviews.some((r) => r.approved === true);\n const anyRejected = reviews.some((r) => r.approved === false);\n const done = validationPassed && anyApproved;\n const blocked = (validate !== null && validate.allPassed === false) || (reviews.length > 0 && anyRejected && !anyApproved);\n\n const feedbackParts: string[] = [];\n if (validate && validate.allPassed === false && validate.failingSummary) {\n feedbackParts.push(\"VALIDATION FAILED:\\n\" + validate.failingSummary);\n }\n for (const review of reviews) {\n if (review.approved === false) {\n feedbackParts.push(\"REVIEWER REJECTED (\" + review.reviewer + \"):\\n\" + review.feedback);\n for (const issue of review.issues) {\n feedbackParts.push(\n \" [\" + issue.severity + \"] \" + issue.title + \": \" + issue.description + (issue.file ? \" (\" + issue.file + \")\" : \"\"),\n );\n }\n }\n }\n const feedback = feedbackParts.length > 0 ? feedbackParts.join(\"\\n\\n\") : null;\n\n const hasAnyOutput = implement !== null || validate !== null || reviews.length > 0;\n\n async function refresh() {\n await Promise.all([\n runsQuery.refetch(),\n implementOut.refetch(),\n validateOut.refetch(),\n review0Out.refetch(),\n review1Out.refetch(),\n ]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n const bannerClass = done ? \"done\" : blocked ? \"blocked\" : \"progress\";\n const bannerIcon = done ? \"✓\" : blocked ? \"✕\" : \"○\";\n const bannerLabel = done ? \"DONE\" : blocked ? \"BLOCKED\" : \"IN PROGRESS\";\n const bannerSub = done\n ? \"Validation passed and at least one reviewer approved.\"\n : blocked\n ? \"Validation failed or reviewers rejected this attempt.\"\n : \"Iterating: implement, validate, then review.\";\n\n const implDot = implement ? (implement.allTestsPassing === false ? \"err\" : \"ok\") : \"pending\";\n const valDot = validate ? (validate.allPassed === false ? \"err\" : \"ok\") : \"pending\";\n const revDot = reviews.length === 0 ? \"pending\" : anyApproved ? \"ok\" : \"err\";\n\n return (\n <main className=\"shell\" data-testid=\"implement-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Implement</h1>\n <span className=\"pill\" data-testid=\"implement-runid\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n {activeRun ? (\n <span className={\"badge \" + statusClass(activeRun.status)} data-testid=\"implement-status\">{activeRun.status ?? \"idle\"}</span>\n ) : null}\n <span className=\"iteration\" data-testid=\"implement-iteration\">Loop · up to 3 iterations</span>\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"implement-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What should we implement?\"\n />\n <button className=\"button\" data-testid=\"implement-refresh\" onClick={() => void refresh()} disabled={busy}>Refresh</button>\n {activeRun && statusClass(activeRun.status) === \"running\" ? (\n <button className=\"button danger\" data-testid=\"implement-cancel\" onClick={() => void cancel()} disabled={busy}>Cancel</button>\n ) : null}\n <button className=\"button primary\" data-testid=\"implement-launch\" onClick={() => void launch()} disabled={busy}>Implement</button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"content\">\n {hasAnyOutput ? (\n <>\n <div className={\"banner \" + bannerClass} data-testid=\"implement-completion\">\n <span className=\"banner-icon\">{bannerIcon}</span>\n <span>\n {bannerLabel}\n <div className=\"banner-sub\">{bannerSub}</div>\n </span>\n </div>\n\n <PhaseCard\n testId=\"implement-phase-implement\"\n title=\"Implementation\"\n dot={implDot}\n meta={implement ? (implement.allTestsPassing === false ? \"tests failing\" : \"tests passing\") : \"pending\"}\n emptyText=\"Waiting for the implement task to produce output.\"\n hasContent={implement !== null}\n >\n {implement ? (\n <>\n <div className=\"kv\">Summary</div>\n <div className=\"summary-text\">{implement.summary}</div>\n <div className=\"kv\">Files changed</div>\n {implement.filesChanged.length > 0 ? (\n <div className=\"chips\">\n {implement.filesChanged.map((f, i) => (\n <span className=\"chip\" key={i}>{f}</span>\n ))}\n </div>\n ) : (\n <div className=\"phase-empty\" style={{ padding: 0 }}>No files reported as changed.</div>\n )}\n </>\n ) : null}\n </PhaseCard>\n\n <PhaseCard\n testId=\"implement-phase-validate\"\n title=\"Validation\"\n dot={valDot}\n meta={validate ? (validate.allPassed === false ? \"fail\" : \"pass\") : \"pending\"}\n emptyText=\"Waiting for the validate task to produce output.\"\n hasContent={validate !== null}\n >\n {validate ? (\n <>\n <div className=\"kv\">Summary</div>\n <div className=\"summary-text\">{validate.summary}</div>\n {validate.allPassed === false && validate.failingSummary ? (\n <>\n <div className=\"kv\">Failing summary</div>\n <pre className=\"feedback-pre\">{validate.failingSummary}</pre>\n </>\n ) : null}\n </>\n ) : null}\n </PhaseCard>\n\n <PhaseCard\n testId=\"implement-phase-review\"\n title=\"Review\"\n dot={revDot}\n meta={reviews.length > 0 ? reviews.length + \" reviewer(s)\" : \"pending\"}\n emptyText=\"Waiting for reviewers to produce verdicts.\"\n hasContent={reviews.length > 0}\n >\n <div className=\"reviewers\">\n {reviews.map((r, i) => (\n <div className=\"reviewer-card\" key={i} data-testid={\"implement-reviewer-\" + i}>\n <div className=\"reviewer-head\">\n <span className=\"reviewer-name\">{r.reviewer}</span>\n <span className={\"verdict \" + (r.approved ? \"approved\" : \"rejected\")}>\n {r.approved ? \"Approved\" : \"Rejected\"}\n </span>\n </div>\n <div className=\"reviewer-feedback\">{r.feedback || \"No feedback text.\"}</div>\n {r.issues.length > 0 ? (\n <ul className=\"issues\">\n {r.issues.map((issue, j) => (\n <li className=\"issue\" key={j}>\n <span className={\"sev \" + issue.severity}>{issue.severity}</span>\n <span className=\"issue-body\">\n <span className=\"issue-title\">{issue.title}</span>\n {issue.file ? <span className=\"issue-file\"> · {issue.file}</span> : null}\n <div>{issue.description}</div>\n </span>\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"phase-empty\" style={{ padding: \"8px 0 0\" }}>No issues raised.</div>\n )}\n </div>\n ))}\n </div>\n </PhaseCard>\n\n {feedback ? (\n <div className=\"feedback-block\" data-testid=\"implement-feedback\">\n <h2>Blocking feedback</h2>\n <pre className=\"feedback-pre\">{feedback}</pre>\n </div>\n ) : null}\n\n <div className=\"status-row\" style={{ marginTop: 16, color: \"var(--muted)\" }}>\n <span>{eventCount} events</span>\n {implementOut.loading || validateOut.loading ? <span>· refreshing…</span> : null}\n </div>\n </>\n ) : (\n <div className=\"empty\" data-testid=\"implement-empty\">\n <div className=\"empty-lead\">\n Implement a code change with automated validation and code review. The workflow will iterate up to 3 times\n if validation or reviews fail, incorporating feedback each round.\n </div>\n <div>{activeRunId ? \"Waiting for the first task to run…\" : \"No run yet.\"}</div>\n <button className=\"button primary\" data-testid=\"implement-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Implement\n </button>\n </div>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent runs</div>\n {implementRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"implement-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {implementRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", + "research-plan-implement": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smthrs/gateway-react\";\n\nconst WORKFLOW_KEY = \"research-plan-implement\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asBool(value: unknown): boolean | undefined {\n return typeof value === \"boolean\" ? value : undefined;\n}\nfunction asStringArray(value: unknown): string[] {\n return Array.isArray(value) ? value.filter((v): v is string => typeof v === \"string\") : [];\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\nfunction rowOf(value: unknown): Record<string, unknown> {\n const response = isRecord(value) ? value : {};\n const data = isRecord(response.data) ? response.data : response;\n const row = isRecord(data.row) ? data.row : isRecord(data) ? data : {};\n return row;\n}\n\ntype ResearchOutput = { summary: string; keyFindings: string[] };\nfunction extractResearch(value: unknown): ResearchOutput | null {\n const row = rowOf(value);\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n return { summary, keyFindings: asStringArray(row.keyFindings) };\n}\n\ntype PlanOutput = { summary: string; steps: string[] };\nfunction extractPlan(value: unknown): PlanOutput | null {\n const row = rowOf(value);\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n return { summary, steps: asStringArray(row.steps) };\n}\n\ntype ImplementOutput = { summary: string; filesChanged: string[]; allTestsPassing: boolean };\nfunction extractImplement(value: unknown): ImplementOutput | null {\n const row = rowOf(value);\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n return {\n summary,\n filesChanged: asStringArray(row.filesChanged),\n allTestsPassing: asBool(row.allTestsPassing) ?? true,\n };\n}\n\ntype ValidateOutput = { summary: string; allPassed: boolean; failingSummary: string | null };\nfunction extractValidate(value: unknown): ValidateOutput | null {\n const row = rowOf(value);\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n return {\n summary,\n allPassed: asBool(row.allPassed) ?? true,\n failingSummary: asString(row.failingSummary) ?? null,\n };\n}\n\ntype ReviewIssue = { severity: string; title: string; file: string | null; description: string };\ntype ReviewOutput = { reviewer: string; approved: boolean; feedback: string; issues: ReviewIssue[] };\nfunction extractReview(value: unknown): ReviewOutput | null {\n const row = rowOf(value);\n const reviewer = asString(row.reviewer);\n const approved = asBool(row.approved);\n if (reviewer === undefined && approved === undefined) return null;\n const rawIssues = Array.isArray(row.issues) ? row.issues : [];\n const issues: ReviewIssue[] = rawIssues\n .filter(isRecord)\n .map((i) => ({\n severity: asString(i.severity) ?? \"nit\",\n title: asString(i.title) ?? \"Issue\",\n file: asString(i.file) ?? null,\n description: asString(i.description) ?? \"\",\n }));\n return {\n reviewer: reviewer ?? \"reviewer\",\n approved: approved ?? false,\n feedback: asString(row.feedback) ?? \"\",\n issues,\n };\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); flex-wrap:wrap; }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; flex-wrap:wrap; }\",\n \".prompt { flex:1; min-width:200px; max-width:420px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".check { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); cursor:pointer; user-select:none; }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:1fr 280px; flex:1; overflow:hidden; }\",\n \".content { padding:20px; overflow:auto; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".badge.ok { color:var(--ok); border-color:var(--ok); }\",\n \".badge.err { color:var(--err); border-color:var(--err); }\",\n \".badge.warn { color:var(--warn); border-color:var(--warn); }\",\n \".badge.tdd { color:var(--primary); border-color:var(--primary); }\",\n \".stage { margin-bottom:24px; }\",\n \".stage-label { font-size:11px; text-transform:uppercase; letter-spacing:0.08em; color:var(--muted); margin:0 0 10px; display:flex; align-items:center; gap:8px; }\",\n \".panel { background:var(--card); border:1px solid var(--border); border-radius:10px; margin-bottom:14px; overflow:hidden; }\",\n \".panel-head { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:12px 16px; cursor:pointer; }\",\n \".panel-head h2 { margin:0; font-size:12px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".panel-head .left { display:flex; align-items:center; gap:8px; min-width:0; }\",\n \".panel-body { padding:0 16px 16px; }\",\n \".summary-text { font-size:14px; line-height:1.55; }\",\n \".findings { list-style:none; margin:8px 0 0; padding:0; }\",\n \".findings li { display:flex; gap:8px; padding:6px 0; border-bottom:1px solid var(--border); }\",\n \".findings li:last-child { border-bottom:0; }\",\n \".dot { flex:0 0 6px; height:6px; margin-top:7px; border-radius:50%; background:var(--primary); }\",\n \".steps { list-style:none; margin:8px 0 0; padding:0; }\",\n \".steps li { display:flex; gap:12px; padding:10px 0; border-bottom:1px solid var(--border); }\",\n \".steps li:last-child { border-bottom:0; }\",\n \".step-num { flex:0 0 24px; height:24px; border-radius:50%; background:var(--panel); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--muted); }\",\n \".sweep { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }\",\n \".kv { display:flex; gap:8px; font-size:12px; color:var(--muted); margin-top:6px; }\",\n \".files { list-style:none; margin:8px 0 0; padding:0; }\",\n \".files li { font-family:ui-monospace,monospace; font-size:12px; padding:5px 0; border-bottom:1px solid var(--border); }\",\n \".files li:last-child { border-bottom:0; }\",\n \".reviewer-card { background:var(--panel); border:1px solid var(--border); border-radius:8px; padding:12px; margin-bottom:10px; }\",\n \".reviewer-head { display:flex; align-items:center; justify-content:space-between; gap:8px; }\",\n \".sev-row { display:flex; gap:6px; margin-top:8px; flex-wrap:wrap; }\",\n \".sev { font-size:10px; font-weight:600; text-transform:uppercase; padding:2px 6px; border-radius:4px; border:1px solid var(--border); color:var(--muted); }\",\n \".sev.critical { color:var(--err); border-color:var(--err); }\",\n \".sev.major { color:var(--warn); border-color:var(--warn); }\",\n \".sev.minor { color:var(--primary); border-color:var(--primary); }\",\n \".feedback { font-size:12px; color:var(--muted); margin-top:8px; }\",\n \".feedback-banner { background:rgba(248,113,113,0.08); border:1px solid var(--err); border-radius:8px; padding:12px 16px; margin-bottom:14px; }\",\n \".feedback-banner h3 { margin:0 0 6px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--err); }\",\n \".feedback-banner pre { margin:0; white-space:pre-wrap; font-family:ui-monospace,monospace; font-size:12px; color:var(--text); }\",\n \".gate { display:flex; align-items:center; gap:10px; padding:14px 16px; border:1px solid var(--border); border-radius:10px; background:var(--card); }\",\n \".muted { color:var(--muted); }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".launch-form { max-width:520px; margin:48px auto; background:var(--card); border:1px solid var(--border); border-radius:12px; padding:24px; }\",\n \".launch-form h2 { margin:0 0 4px; font-size:16px; }\",\n \".launch-form p { margin:0 0 18px; color:var(--muted); }\",\n \".launch-form .prompt { width:100%; max-width:none; height:36px; margin-bottom:14px; }\",\n \".launch-form .row { display:flex; align-items:center; justify-content:space-between; gap:12px; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n \"@media (max-width:860px){ .main { grid-template-columns:1fr; } .sidebar { display:none; } .sweep { grid-template-columns:1fr; } }\",\n].join(\"\\n\");\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nfunction Panel(props: {\n title: string;\n testId: string;\n badge?: { text: string; cls: string } | null;\n pending: boolean;\n pendingText: string;\n children?: any;\n}) {\n const [open, setOpen] = useState(true);\n return (\n <div className=\"panel\" data-testid={props.testId}>\n <div className=\"panel-head\" onClick={() => setOpen((o) => !o)}>\n <div className=\"left\">\n <h2>{props.title}</h2>\n {props.badge ? <span className={\"badge \" + props.badge.cls}>{props.badge.text}</span> : null}\n </div>\n <span className=\"muted\">{open ? \"collapse\" : \"expand\"}</span>\n </div>\n {open ? (\n <div className=\"panel-body\">\n {props.pending ? <div className=\"muted\">{props.pendingText}</div> : props.children}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Implement the requested change.\");\n const [tdd, setTdd] = useState(false);\n const [busy, setBusy] = useState(false);\n\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const runs = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? runs[0]?.runId;\n const activeRun = runs.find((r) => r.runId === activeRunId);\n\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const researchOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"research\", iteration: 0 });\n const planOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"plan\", iteration: 0 });\n const implementOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"impl:implement\", iteration: 0 });\n const validateOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"impl:validate\", iteration: 0 });\n const reviewOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"impl:review:0\", iteration: 0 });\n\n const research = useMemo(() => extractResearch(researchOut.data), [researchOut.data]);\n const plan = useMemo(() => extractPlan(planOut.data), [planOut.data]);\n const implement = useMemo(() => extractImplement(implementOut.data), [implementOut.data]);\n const validate = useMemo(() => extractValidate(validateOut.data), [validateOut.data]);\n const review = useMemo(() => extractReview(reviewOut.data), [reviewOut.data]);\n\n const eventCount = (stream.events ?? []).length;\n const running = statusClass(activeRun?.status) === \"running\";\n\n async function refresh() {\n await Promise.all([\n runsQuery.refetch(),\n researchOut.refetch(),\n planOut.refetch(),\n implementOut.refetch(),\n validateOut.refetch(),\n reviewOut.refetch(),\n ]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt, tdd } });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function rewind() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.rewindRun({ runId: activeRunId, frameNo: 0, confirm: true });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n const validationFailed = validate !== null && validate.allPassed === false;\n const reviewerApproved = review !== null && review.approved === true;\n const blockingFeedback = validationFailed\n ? validate.failingSummary\n : review !== null && review.approved === false\n ? review.feedback\n : null;\n\n function sevCount(sev: string) {\n return review ? review.issues.filter((i) => i.severity === sev).length : 0;\n }\n\n return (\n <main className=\"shell\" data-testid=\"research-plan-implement-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Research → Plan → Implement</h1>\n <span className=\"pill\" data-testid=\"research-plan-implement-runid\">\n {activeRunId ? shortRunId(activeRunId) : \"No run\"}\n </span>\n {activeRun ? <span className={\"badge \" + statusClass(activeRun.status)}>{activeRun.status ?? \"idle\"}</span> : null}\n {tdd ? <span className=\"badge tdd\">TDD</span> : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"research-plan-implement-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What should we build?\"\n />\n <label className=\"check\">\n <input type=\"checkbox\" checked={tdd} onChange={(e) => setTdd(e.currentTarget.checked)} /> TDD\n </label>\n <button className=\"button\" data-testid=\"research-plan-implement-refresh\" onClick={() => void refresh()} disabled={busy}>\n Refresh\n </button>\n {running ? (\n <button className=\"button danger\" data-testid=\"research-plan-implement-cancel\" onClick={() => void cancel()} disabled={busy}>\n Cancel\n </button>\n ) : null}\n {activeRunId && !running ? (\n <button className=\"button\" data-testid=\"research-plan-implement-rewind\" onClick={() => void rewind()} disabled={busy}>\n Rewind\n </button>\n ) : null}\n <button className=\"button primary\" data-testid=\"research-plan-implement-launch\" onClick={() => void launch()} disabled={busy}>\n Launch\n </button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"content\">\n {!activeRunId ? (\n <div className=\"launch-form\" data-testid=\"research-plan-implement-empty\">\n <h2>Launch a workflow</h2>\n <p>Describe the change. Research informs the plan, then an implement → validate → review loop runs until reviewers approve.</p>\n <input\n className=\"prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What should we build?\"\n />\n <div className=\"row\">\n <label className=\"check\">\n <input type=\"checkbox\" checked={tdd} onChange={(e) => setTdd(e.currentTarget.checked)} /> Test-driven (write tests first)\n </label>\n <button className=\"button primary\" data-testid=\"research-plan-implement-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Launch Workflow\n </button>\n </div>\n </div>\n ) : (\n <>\n <div className=\"stage\">\n <p className=\"stage-label\">Stage 1 · Research & Plan</p>\n\n <div data-testid=\"research-plan-implement-research\">\n <Panel\n title=\"Research\"\n testId=\"research-panel\"\n badge={research ? { text: \"ready\", cls: \"ok\" } : null}\n pending={research === null}\n pendingText=\"Gathering context...\"\n >\n {research ? (\n <>\n <div className=\"summary-text\">{research.summary}</div>\n {research.keyFindings.length > 0 ? (\n <ul className=\"findings\">\n {research.keyFindings.map((f, i) => (\n <li key={i}>\n <span className=\"dot\" />\n <span>{f}</span>\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"kv\">No key findings recorded.</div>\n )}\n </>\n ) : null}\n </Panel>\n </div>\n\n <div data-testid=\"research-plan-implement-plan\">\n <Panel\n title=\"Plan\"\n testId=\"plan-panel\"\n badge={tdd ? { text: \"test-first\", cls: \"tdd\" } : plan ? { text: \"ready\", cls: \"ok\" } : null}\n pending={plan === null}\n pendingText=\"Creating plan...\"\n >\n {plan ? (\n <>\n <div className=\"summary-text\">{plan.summary}</div>\n {plan.steps.length > 0 ? (\n <ol className=\"steps\">\n {plan.steps.map((s, i) => (\n <li key={i}>\n <span className=\"step-num\">{i + 1}</span>\n <span>{s}</span>\n </li>\n ))}\n </ol>\n ) : (\n <div className=\"kv\">No steps in this plan.</div>\n )}\n </>\n ) : null}\n </Panel>\n </div>\n </div>\n\n <div className=\"stage\">\n <p className=\"stage-label\">\n Stage 2 · Implementation Loop\n <span className=\"badge warn\">impl:loop · max 3</span>\n </p>\n {blockingFeedback ? (\n <div className=\"feedback-banner\" data-testid=\"research-plan-implement-feedback\">\n <h3>Feedback fed back to implement</h3>\n <pre>{blockingFeedback}</pre>\n </div>\n ) : null}\n <div className=\"sweep\">\n <div data-testid=\"research-plan-implement-implement\">\n <Panel\n title=\"Implement\"\n testId=\"implement-panel\"\n badge={\n implement\n ? implement.allTestsPassing\n ? { text: \"tests pass\", cls: \"ok\" }\n : { text: \"tests fail\", cls: \"err\" }\n : null\n }\n pending={implement === null}\n pendingText=\"Implementing...\"\n >\n {implement ? (\n <>\n <div className=\"summary-text\">{implement.summary}</div>\n {implement.filesChanged.length > 0 ? (\n <ul className=\"files\">\n {implement.filesChanged.map((f, i) => (\n <li key={i}>{f}</li>\n ))}\n </ul>\n ) : (\n <div className=\"kv\">No files changed yet.</div>\n )}\n </>\n ) : null}\n </Panel>\n </div>\n\n <div data-testid=\"research-plan-implement-validate\">\n <Panel\n title=\"Validate\"\n testId=\"validate-panel\"\n badge={\n validate\n ? validate.allPassed\n ? { text: \"passed\", cls: \"ok\" }\n : { text: \"failed\", cls: \"err\" }\n : null\n }\n pending={validate === null}\n pendingText=\"Validating...\"\n >\n {validate ? (\n <>\n <div className=\"summary-text\">{validate.summary}</div>\n {validate.failingSummary ? (\n <div className=\"feedback\">{validate.failingSummary}</div>\n ) : (\n <div className=\"kv\">No failures.</div>\n )}\n </>\n ) : null}\n </Panel>\n </div>\n\n <div data-testid=\"research-plan-implement-review\">\n <Panel\n title=\"Review\"\n testId=\"review-panel\"\n badge={\n review\n ? review.approved\n ? { text: \"approved\", cls: \"ok\" }\n : { text: \"rejected\", cls: \"err\" }\n : null\n }\n pending={review === null}\n pendingText=\"Awaiting reviewer...\"\n >\n {review ? (\n <div className=\"reviewer-card\">\n <div className=\"reviewer-head\">\n <strong>{review.reviewer}</strong>\n <span className={\"badge \" + (review.approved ? \"ok\" : \"err\")}>\n {review.approved ? \"approved\" : \"rejected\"}\n </span>\n </div>\n {review.feedback ? <div className=\"feedback\">{review.feedback}</div> : null}\n {review.issues.length > 0 ? (\n <div className=\"sev-row\">\n <span className=\"sev critical\">critical {sevCount(\"critical\")}</span>\n <span className=\"sev major\">major {sevCount(\"major\")}</span>\n <span className=\"sev minor\">minor {sevCount(\"minor\")}</span>\n <span className=\"sev\">nit {sevCount(\"nit\")}</span>\n </div>\n ) : (\n <div className=\"kv\">No issues raised.</div>\n )}\n </div>\n ) : null}\n </Panel>\n </div>\n </div>\n </div>\n\n <div className=\"stage\">\n <p className=\"stage-label\">Stage 3 · Completion Gate</p>\n <div className=\"gate\" data-testid=\"research-plan-implement-gate\">\n {reviewerApproved && validate && validate.allPassed ? (\n <>\n <span className=\"badge ok\">complete</span>\n <span>Validation passed and reviewers approved.</span>\n </>\n ) : (\n <>\n <span className=\"badge warn\">awaiting reviewer approvals</span>\n <span className=\"muted\">\n Multi-reviewer approval is the final gate before completion.\n </span>\n </>\n )}\n <span className=\"muted\" style={{ marginLeft: \"auto\" }}>{eventCount} events</span>\n </div>\n </div>\n </>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent runs</div>\n {runs.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"research-plan-implement-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {runs.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", + "review": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smthrs/gateway-react\";\n\nconst WORKFLOW_KEY = \"review\";\nconst MAX_REVIEWERS = 6;\nconst SEVERITIES = [\"critical\", \"major\", \"minor\", \"nit\"] as const;\ntype Severity = (typeof SEVERITIES)[number];\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\ntype ReviewIssue = { severity: Severity; title: string; file: string | null; description: string };\ntype ReviewRow = {\n index: number;\n reviewer: string;\n approved: boolean;\n feedback: string;\n issues: ReviewIssue[];\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\nfunction asSeverity(value: unknown): Severity {\n return value === \"critical\" || value === \"major\" || value === \"minor\" || value === \"nit\" ? value : \"nit\";\n}\n\nfunction extractReview(index: number, value: unknown): ReviewRow | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : {};\n const reviewer = asString(row.reviewer);\n if (reviewer === undefined && typeof row.approved !== \"boolean\") return null;\n const rawIssues = Array.isArray(row.issues) ? row.issues : [];\n const issues: ReviewIssue[] = rawIssues.filter(isRecord).map((it) => ({\n severity: asSeverity(it.severity),\n title: asString(it.title) ?? \"Untitled issue\",\n file: asString(it.file) ?? null,\n description: asString(it.description) ?? \"\",\n }));\n return {\n index,\n reviewer: reviewer ?? \"reviewer-\" + (index + 1),\n approved: row.approved === true,\n feedback: asString(row.feedback) ?? \"\",\n issues,\n };\n}\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; --crit:#f87171; --major:#fb923c; --minor:#fbbf24; --nit:#8a8a8e; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:420px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:1fr 280px; flex:1; overflow:hidden; }\",\n \".content { padding:20px; overflow:auto; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".verdict { display:flex; align-items:center; gap:18px; background:var(--card); border:1px solid var(--border); border-radius:12px; padding:18px 22px; margin-bottom:18px; }\",\n \".verdict.approved { box-shadow:inset 4px 0 0 var(--ok); }\",\n \".verdict.blocked { box-shadow:inset 4px 0 0 var(--err); }\",\n \".verdict-mark { font-size:34px; line-height:1; }\",\n \".verdict.approved .verdict-mark { color:var(--ok); }\",\n \".verdict.blocked .verdict-mark { color:var(--err); }\",\n \".verdict-body { flex:1; }\",\n \".verdict-headline { font-size:16px; font-weight:600; margin-bottom:4px; }\",\n \".verdict-sub { color:var(--muted); font-size:12px; }\",\n \".approval-bar { height:8px; border-radius:4px; background:var(--panel); overflow:hidden; margin-top:8px; width:220px; }\",\n \".approval-bar > span { display:block; height:100%; background:var(--ok); }\",\n \".sev-summary { display:flex; gap:8px; margin-left:auto; }\",\n \".section-head { font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); margin:22px 0 10px; }\",\n \".lanes { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:12px; }\",\n \".lane { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:14px; cursor:pointer; }\",\n \".lane.approved { box-shadow:inset 3px 0 0 var(--ok); }\",\n \".lane.blocked { box-shadow:inset 3px 0 0 var(--err); }\",\n \".lane-top { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px; }\",\n \".lane-name { font-weight:600; }\",\n \".lane-feedback { color:var(--muted); font-size:12px; max-height:60px; overflow:hidden; }\",\n \".lane.open .lane-feedback { max-height:none; }\",\n \".lane-badges { display:flex; gap:6px; flex-wrap:wrap; margin-top:10px; }\",\n \".sev { font-size:10px; font-weight:700; text-transform:uppercase; padding:2px 7px; border-radius:99px; border:1px solid var(--border); }\",\n \".sev.critical { color:var(--crit); border-color:var(--crit); }\",\n \".sev.major { color:var(--major); border-color:var(--major); }\",\n \".sev.minor { color:var(--minor); border-color:var(--minor); }\",\n \".sev.nit { color:var(--nit); border-color:var(--nit); }\",\n \".sev.active { background:var(--card); }\",\n \".filters { display:flex; gap:8px; align-items:center; margin-bottom:12px; flex-wrap:wrap; }\",\n \".filter-btn { cursor:pointer; }\",\n \".issue { background:var(--card); border:1px solid var(--border); border-radius:8px; padding:12px 14px; margin-bottom:8px; }\",\n \".issue-top { display:flex; align-items:center; gap:10px; }\",\n \".issue-title { font-weight:600; }\",\n \".issue-file { font-family:ui-monospace,monospace; font-size:11px; color:var(--muted); }\",\n \".issue-desc { color:var(--muted); font-size:12px; margin-top:6px; }\",\n \".issue-from { font-size:11px; color:var(--muted); margin-top:6px; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".empty .desc { max-width:420px; margin:8px auto 0; font-size:12px; line-height:1.6; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; flex-direction:column; gap:4px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .row-line { display:flex; justify-content:space-between; gap:8px; align-items:center; }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n \".run-row .approve-count { font-size:11px; color:var(--muted); }\",\n].join(\"\\n\");\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Review the current repository changes.\");\n const [busy, setBusy] = useState(false);\n const [openLanes, setOpenLanes] = useState<Record<number, boolean>>({});\n const [sevFilter, setSevFilter] = useState<Severity | \"all\">(\"all\");\n\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const reviewRuns = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? reviewRuns[0]?.runId;\n const activeRun = reviewRuns.find((r) => r.runId === activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const eventCount = (stream.events ?? []).length;\n\n // Probe a fixed set of reviewer lanes (Parallel node ids review:0 .. review:N).\n const n0 = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"review:0\", iteration: 0 });\n const n1 = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"review:1\", iteration: 0 });\n const n2 = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"review:2\", iteration: 0 });\n const n3 = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"review:3\", iteration: 0 });\n const n4 = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"review:4\", iteration: 0 });\n const n5 = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"review:5\", iteration: 0 });\n const nodeQueries = [n0, n1, n2, n3, n4, n5];\n\n const reviews = useMemo(() => {\n const out: ReviewRow[] = [];\n for (let i = 0; i < MAX_REVIEWERS; i++) {\n const parsed = extractReview(i, nodeQueries[i].data);\n if (parsed) out.push(parsed);\n }\n return out;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [n0.data, n1.data, n2.data, n3.data, n4.data, n5.data]);\n\n const approvedCount = reviews.filter((r) => r.approved).length;\n const allApproved = reviews.length > 0 && approvedCount === reviews.length;\n const allIssues = reviews.flatMap((r) => r.issues.map((it) => ({ ...it, reviewer: r.reviewer })));\n const sevCounts = SEVERITIES.reduce((acc, s) => {\n acc[s] = allIssues.filter((it) => it.severity === s).length;\n return acc;\n }, {} as Record<Severity, number>);\n const visibleIssues = sevFilter === \"all\" ? allIssues : allIssues.filter((it) => it.severity === sevFilter);\n\n async function refresh() {\n await Promise.all([runsQuery.refetch(), ...nodeQueries.map((q) => q.refetch())]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n return (\n <main className=\"shell\" data-testid=\"review-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Review</h1>\n <span className=\"pill\" data-testid=\"review-runid\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n {activeRun ? (\n <span className={\"badge \" + statusClass(activeRun.status)} data-testid=\"review-status\">{activeRun.status ?? \"idle\"}</span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"review-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What should be reviewed?\"\n />\n <button className=\"button\" data-testid=\"review-refresh\" onClick={() => void refresh()} disabled={busy}>Refresh</button>\n {activeRun && statusClass(activeRun.status) === \"running\" ? (\n <button className=\"button danger\" data-testid=\"review-cancel\" onClick={() => void cancel()} disabled={busy}>Cancel</button>\n ) : null}\n <button className=\"button primary\" data-testid=\"review-launch\" onClick={() => void launch()} disabled={busy}>Launch Review</button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"content\">\n {reviews.length > 0 ? (\n <>\n <div className={\"verdict \" + (allApproved ? \"approved\" : \"blocked\")} data-testid=\"review-verdict\">\n <span className=\"verdict-mark\">{allApproved ? \"✓\" : \"✗\"}</span>\n <div className=\"verdict-body\">\n <div className=\"verdict-headline\">\n {allApproved ? \"Approved by all reviewers\" : \"Blocked — not all reviewers approved\"}\n </div>\n <div className=\"verdict-sub\">{approvedCount} of {reviews.length} reviewers approved</div>\n <div className=\"approval-bar\">\n <span style={{ width: (reviews.length ? (approvedCount / reviews.length) * 100 : 0) + \"%\" }} />\n </div>\n </div>\n <div className=\"sev-summary\">\n {SEVERITIES.map((s) => (\n <span key={s} className={\"sev \" + s}>{s} {sevCounts[s]}</span>\n ))}\n </div>\n </div>\n\n <div className=\"section-head\">Reviewers ({reviews.length})</div>\n <div className=\"lanes\" data-testid=\"review-reviewers\">\n {reviews.map((r) => (\n <div\n key={r.index}\n className={\"lane \" + (r.approved ? \"approved\" : \"blocked\") + (openLanes[r.index] ? \" open\" : \"\")}\n data-testid={\"review-reviewer-\" + r.index}\n onClick={() => setOpenLanes((prev) => ({ ...prev, [r.index]: !prev[r.index] }))}\n >\n <div className=\"lane-top\">\n <span className=\"lane-name\">{r.reviewer}</span>\n <span className={\"badge \" + (r.approved ? \"finished\" : \"failed\")}>{r.approved ? \"approved\" : \"denied\"}</span>\n </div>\n <div className=\"lane-feedback\">{r.feedback || \"No feedback provided.\"}</div>\n <div className=\"lane-badges\">\n {SEVERITIES.map((s) => {\n const c = r.issues.filter((it) => it.severity === s).length;\n return c > 0 ? <span key={s} className={\"sev \" + s}>{s} {c}</span> : null;\n })}\n {r.issues.length === 0 ? <span className=\"sev nit\">no issues</span> : null}\n </div>\n </div>\n ))}\n </div>\n\n <div className=\"section-head\">Issues</div>\n <div className=\"filters\">\n <button\n className={\"sev nit filter-btn\" + (sevFilter === \"all\" ? \" active\" : \"\")}\n data-testid=\"review-filter-all\"\n onClick={() => setSevFilter(\"all\")}\n >\n all {allIssues.length}\n </button>\n {SEVERITIES.map((s) => (\n <button\n key={s}\n className={\"sev \" + s + \" filter-btn\" + (sevFilter === s ? \" active\" : \"\")}\n data-testid={\"review-filter-\" + s}\n onClick={() => setSevFilter(s)}\n >\n {s} {sevCounts[s]}\n </button>\n ))}\n </div>\n <div data-testid=\"review-issues\">\n {visibleIssues.map((it, i) => (\n <div className=\"issue\" key={i} data-testid=\"review-issue\">\n <div className=\"issue-top\">\n <span className={\"sev \" + it.severity}>{it.severity}</span>\n <span className=\"issue-title\">{it.title}</span>\n {it.file ? <span className=\"issue-file\">{it.file}</span> : null}\n </div>\n {it.description ? <div className=\"issue-desc\">{it.description}</div> : null}\n <div className=\"issue-from\">flagged by {it.reviewer}</div>\n </div>\n ))}\n {visibleIssues.length === 0 ? (\n <div className=\"empty\" data-testid=\"review-issues-empty\">\n {allIssues.length === 0\n ? \"No issues raised — the reviewers found nothing to flag.\"\n : \"No \" + sevFilter + \" issues.\"}\n </div>\n ) : null}\n </div>\n\n <div className=\"section-head\" style={{ color: \"var(--muted)\" }}>\n {eventCount} events{nodeQueries.some((q) => q.loading) ? \" · refreshing…\" : \"\"}\n </div>\n </>\n ) : (\n <div className=\"empty\" data-testid=\"review-empty\">\n <div>{activeRunId ? \"Waiting for reviewers…\" : \"No review runs yet.\"}</div>\n <div className=\"desc\">\n Launch a review to have the code changes examined by reviewers in parallel. Each reviewer reports\n an approve/deny verdict, written feedback, and a list of issues by severity. The verdict above\n turns green only when every reviewer approves.\n </div>\n <button className=\"button primary\" data-testid=\"review-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Launch Review\n </button>\n </div>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent reviews</div>\n {reviewRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"review-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <div className=\"row-line\">\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </div>\n {r.runId === activeRunId && reviews.length > 0 ? (\n <span className=\"approve-count\">{approvedCount}/{reviews.length} approved</span>\n ) : null}\n </button>\n ))}\n {reviewRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", + "research": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRun,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smthrs/gateway-react\";\n\nconst WORKFLOW_KEY = \"research\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asNumber(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\ntype ResearchOutput = { summary: string; keyFindings: string[] };\nfunction extractResearch(value: unknown): ResearchOutput | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : {};\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const keyFindings = Array.isArray(row.keyFindings)\n ? row.keyFindings.filter((f): f is string => typeof f === \"string\")\n : [];\n return { summary, keyFindings };\n}\n\nfunction extractPrompt(runData: unknown): string | undefined {\n if (!isRecord(runData)) return undefined;\n const direct = asString(runData.prompt);\n if (direct !== undefined) return direct;\n const input = isRecord(runData.input) ? runData.input : undefined;\n if (input) {\n const fromInput = asString(input.prompt);\n if (fromInput !== undefined) return fromInput;\n }\n return undefined;\n}\n\nfunction extractTimes(runData: unknown, fallbackCreated: number | undefined) {\n const r = isRecord(runData) ? runData : {};\n const started =\n asNumber(r.startedAt) ?? asNumber(r.startedAtMs) ?? asNumber(r.createdAtMs) ?? asNumber(r.createdAt) ?? fallbackCreated;\n const finished = asNumber(r.finishedAt) ?? asNumber(r.finishedAtMs);\n return { started, finished };\n}\n\nfunction formatClock(ms: number | undefined) {\n if (ms === undefined) return \"--\";\n try {\n return new Date(ms).toLocaleTimeString();\n } catch {\n return \"--\";\n }\n}\nfunction formatElapsed(started: number | undefined, finished: number | undefined) {\n if (started === undefined) return \"--\";\n const end = finished ?? Date.now();\n const secs = Math.max(0, Math.round((end - started) / 1000));\n if (secs < 60) return secs + \"s\";\n const mins = Math.floor(secs / 60);\n const rem = secs % 60;\n return mins + \"m \" + rem + \"s\";\n}\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n if (status === \"waiting-approval\" || status === \"waiting-timer\") return \"running\";\n return \"\";\n}\nfunction isRunning(status: string | undefined) {\n return statusClass(status) === \"running\";\n}\nfunction isFinished(status: string | undefined) {\n return status === \"finished\";\n}\n\nfunction eventLabel(ev: unknown): { text: string; kind: string } {\n if (!isRecord(ev)) return { text: String(ev), kind: \"\" };\n const type = asString(ev.type) ?? asString(ev.kind) ?? \"event\";\n const node = asString(ev.nodeId) ?? asString(ev.taskId);\n const message = asString(ev.message) ?? asString(ev.text) ?? asString(ev.chunk);\n const parts = [type];\n if (node) parts.push(node);\n const head = parts.join(\" · \");\n return { text: message ? head + \" — \" + message : head, kind: type };\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; --accent:#7dd3fc; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; display:flex; align-items:center; gap:8px; }\",\n \".glyph { color:var(--accent); }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); font-family:ui-monospace,monospace; }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:460px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button.ghost { background:transparent; }\",\n \".button.tiny { height:22px; padding:0 8px; font-size:11px; border-radius:5px; }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:1fr 260px; flex:1; overflow:hidden; }\",\n \".content { padding:18px 20px; overflow:auto; display:flex; flex-direction:column; gap:16px; }\",\n \".statusbar { display:flex; align-items:center; gap:18px; background:var(--card); border:1px solid var(--border); border-radius:10px; padding:12px 16px; flex-wrap:wrap; }\",\n \".stat { display:flex; flex-direction:column; gap:2px; }\",\n \".stat .k { font-size:10px; text-transform:uppercase; letter-spacing:0.05em; color:var(--muted); }\",\n \".stat .v { font-size:13px; font-weight:600; }\",\n \".statusbar .spacer { flex:1; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px 18px; }\",\n \".card h2 { margin:0 0 10px; font-size:11px; text-transform:uppercase; letter-spacing:0.05em; color:var(--muted); display:flex; align-items:center; justify-content:space-between; }\",\n \".query-text { font-size:14px; line-height:1.55; white-space:pre-wrap; word-break:break-word; }\",\n \".error-text { color:var(--err); font-size:13px; white-space:pre-wrap; }\",\n \".stream { background:#0a0a0c; border:1px solid var(--border); border-radius:10px; display:flex; flex-direction:column; min-height:140px; max-height:300px; overflow:hidden; }\",\n \".stream-head { padding:10px 14px; font-size:11px; text-transform:uppercase; letter-spacing:0.05em; color:var(--muted); border-bottom:1px solid var(--border); display:flex; justify-content:space-between; }\",\n \".stream-body { overflow:auto; padding:8px 0; font-family:ui-monospace,monospace; font-size:11.5px; }\",\n \".stream-line { padding:3px 14px; color:var(--muted); white-space:pre-wrap; word-break:break-word; border-left:2px solid transparent; }\",\n \".stream-line.task { color:var(--accent); border-left-color:var(--accent); }\",\n \".stream-empty { padding:24px 14px; color:var(--muted); text-align:center; }\",\n \".summary-text { font-size:15px; line-height:1.6; white-space:pre-wrap; word-break:break-word; }\",\n \".findings { list-style:none; margin:10px 0 0; padding:0; }\",\n \".findings li { display:flex; gap:10px; align-items:flex-start; padding:10px 0; border-bottom:1px solid var(--border); }\",\n \".findings li:last-child { border-bottom:0; }\",\n \".find-dot { flex:0 0 8px; width:8px; height:8px; margin-top:6px; border-radius:50%; background:var(--accent); }\",\n \".find-text { flex:1; line-height:1.5; }\",\n \".find-copy { flex:0 0 auto; opacity:0.6; }\",\n \".find-copy:hover { opacity:1; }\",\n \".findings-empty { color:var(--muted); padding:10px 0; font-style:italic; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .launch-form { display:flex; gap:8px; max-width:520px; margin:16px auto 0; }\",\n \".empty .launch-form input { flex:1; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.05em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; align-items:center; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n].join(\"\\n\");\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Research the given topic.\");\n const [busy, setBusy] = useState(false);\n const [copied, setCopied] = useState<string | undefined>(undefined);\n\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const researchRuns = useMemo(\n () =>\n ((runsQuery.data ?? []) as RunSummary[]).filter(\n (r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY,\n ),\n [runsQuery.data],\n );\n\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? researchRuns[0]?.runId;\n const activeSummary = researchRuns.find((r) => r.runId === activeRunId);\n\n const runQuery = useGatewayRun(activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const researchOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"research\", iteration: 0 });\n const research = useMemo(() => extractResearch(researchOutput.data), [researchOutput.data]);\n\n const runData = runQuery.data;\n const status = asString(isRecord(runData) ? runData.status : undefined) ?? activeSummary?.status;\n const errorMsg = asString(isRecord(runData) ? runData.error : undefined);\n const queryPrompt = extractPrompt(runData);\n const { started, finished } = extractTimes(runData, activeSummary?.createdAtMs);\n const events = stream.events ?? [];\n\n async function refresh() {\n await Promise.all([runsQuery.refetch(), runQuery.refetch?.(), researchOutput.refetch()]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function rewind() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n if (typeof actions.rewindRun === \"function\") {\n await actions.rewindRun({ runId: activeRunId, frameNo: 0, confirm: true });\n } else {\n await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt: queryPrompt ?? prompt } });\n }\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n function copy(text: string, tag: string) {\n try {\n if (typeof navigator !== \"undefined\" && navigator.clipboard) {\n void navigator.clipboard.writeText(text);\n }\n } catch {\n /* ignore */\n }\n setCopied(tag);\n }\n\n const hasActiveRun = Boolean(activeRunId);\n\n return (\n <main className=\"shell\" data-testid=\"research-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>\n <span className=\"glyph\">◎</span> Research\n </h1>\n <span className=\"pill\" data-testid=\"research-runid\">\n {activeRunId ? shortRunId(activeRunId) : \"No run\"}\n </span>\n {status ? (\n <span className={\"badge \" + statusClass(status)} data-testid=\"research-status\">\n {status}\n </span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"research-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What should we research?\"\n />\n <button className=\"button\" data-testid=\"research-refresh\" onClick={() => void refresh()} disabled={busy}>\n Refresh\n </button>\n <button\n className=\"button primary\"\n data-testid=\"research-launch\"\n onClick={() => void launch()}\n disabled={busy}\n >\n New Research\n </button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"content\">\n {hasActiveRun ? (\n <>\n <section className=\"statusbar\" data-testid=\"research-statusbar\">\n <div className=\"stat\">\n <span className=\"k\">Status</span>\n <span className={\"badge \" + statusClass(status)}>{status ?? \"idle\"}</span>\n </div>\n <div className=\"stat\">\n <span className=\"k\">Started</span>\n <span className=\"v\">{formatClock(started)}</span>\n </div>\n <div className=\"stat\">\n <span className=\"k\">Elapsed</span>\n <span className=\"v\">{formatElapsed(started, finished)}</span>\n </div>\n <div className=\"stat\">\n <span className=\"k\">Events</span>\n <span className=\"v\">{events.length}</span>\n </div>\n <div className=\"spacer\" />\n {isRunning(status) ? (\n <button\n className=\"button danger\"\n data-testid=\"research-cancel\"\n onClick={() => void cancel()}\n disabled={busy}\n >\n Cancel\n </button>\n ) : null}\n {isFinished(status) ? (\n <button\n className=\"button ghost\"\n data-testid=\"research-rewind\"\n onClick={() => void rewind()}\n disabled={busy}\n >\n Rewind\n </button>\n ) : null}\n </section>\n\n <section className=\"card\" data-testid=\"research-query\">\n <h2>Research query</h2>\n <div className=\"query-text\">{queryPrompt ?? \"(no prompt recorded for this run)\"}</div>\n {errorMsg ? <div className=\"error-text\" style={{ marginTop: 10 }}>{errorMsg}</div> : null}\n </section>\n\n <section className=\"stream\" data-testid=\"research-stream\">\n <div className=\"stream-head\">\n <span>Progress stream</span>\n <span>{events.length} events</span>\n </div>\n <div className=\"stream-body\">\n {events.length === 0 ? (\n <div className=\"stream-empty\">\n {isRunning(status) ? \"Waiting for the agent to report progress…\" : \"No progress events recorded.\"}\n </div>\n ) : (\n events.map((ev, i) => {\n const { text, kind } = eventLabel(ev);\n const isTask = kind.toLowerCase().indexOf(\"task\") >= 0;\n return (\n <div key={i} className={\"stream-line\" + (isTask ? \" task\" : \"\")}>\n {text}\n </div>\n );\n })\n )}\n </div>\n </section>\n\n <section className=\"card\" data-testid=\"research-summary\">\n <h2>\n <span>Findings</span>\n {research ? (\n <button\n className=\"button ghost tiny\"\n data-testid=\"research-copy-summary\"\n onClick={() => copy(research.summary, \"summary\")}\n >\n {copied === \"summary\" ? \"Copied\" : \"Copy summary\"}\n </button>\n ) : null}\n </h2>\n {research ? (\n <>\n <div className=\"summary-text\" data-testid=\"research-summary-text\">\n {research.summary}\n </div>\n {research.keyFindings.length > 0 ? (\n <ul className=\"findings\" data-testid=\"research-findings\">\n {research.keyFindings.map((f, i) => (\n <li key={i} data-testid=\"research-finding\">\n <span className=\"find-dot\" />\n <span className=\"find-text\">{f}</span>\n <button\n className=\"button ghost tiny find-copy\"\n onClick={() => copy(f, \"finding-\" + i)}\n >\n {copied === \"finding-\" + i ? \"Copied\" : \"Copy\"}\n </button>\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"findings-empty\" data-testid=\"research-findings-empty\">\n No discrete key findings were extracted for this run.\n </div>\n )}\n </>\n ) : (\n <div className=\"findings-empty\" data-testid=\"research-summary-pending\">\n {isRunning(status)\n ? \"Research in progress — findings will appear here when the agent finishes.\"\n : \"No research output is available for this run yet.\"}\n </div>\n )}\n </section>\n </>\n ) : (\n <div className=\"empty\" data-testid=\"research-empty\">\n <div>Select a research run from the history, or launch a new research run by entering a prompt.</div>\n <div className=\"launch-form\">\n <input\n className=\"prompt\"\n data-testid=\"research-empty-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What should we research?\"\n />\n <button\n className=\"button primary\"\n data-testid=\"research-launch-empty\"\n onClick={() => void launch()}\n disabled={busy}\n >\n Start Research\n </button>\n </div>\n </div>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Research history</div>\n {researchRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"research-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {researchRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", + "ticket-create": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smthrs/gateway-react\";\n\nconst WORKFLOW_KEY = \"ticket-create\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number; input?: unknown };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\ntype Ticket = { title: string; description: string; acceptanceCriteria: string[] };\nfunction extractTicket(value: unknown): Ticket | null {\n const response = isRecord(value) ? value : {};\n const data = isRecord(response.data) ? response.data : response;\n const row = isRecord(data.row) ? data.row : isRecord(data) ? data : {};\n const title = asString(row.title);\n const description = asString(row.description);\n if (title === undefined && description === undefined) return null;\n const acceptanceCriteria = Array.isArray(row.acceptanceCriteria)\n ? row.acceptanceCriteria.filter((c): c is string => typeof c === \"string\")\n : [];\n return { title: title ?? \"\", description: description ?? \"\", acceptanceCriteria };\n}\n\nfunction inputPrompt(run: RunSummary | undefined): string | undefined {\n if (!run) return undefined;\n const input = isRecord(run.input) ? run.input : undefined;\n return input ? asString(input.prompt) : undefined;\n}\n\nfunction ticketMarkdown(ticket: Ticket): string {\n const lines = [\"# \" + ticket.title, \"\", ticket.description, \"\"];\n if (ticket.acceptanceCriteria.length > 0) {\n lines.push(\"## Acceptance Criteria\", \"\");\n for (const c of ticket.acceptanceCriteria) lines.push(\"- [ ] \" + c);\n }\n return lines.join(\"\\n\");\n}\n\nfunction copyText(text: string) {\n if (typeof navigator !== \"undefined\" && navigator.clipboard) {\n void navigator.clipboard.writeText(text);\n }\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); font-family:ui-monospace,monospace; }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:420px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".button.tiny { height:24px; padding:0 8px; font-size:11px; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".main { display:grid; grid-template-columns:1fr 280px; flex:1; overflow:hidden; }\",\n \".content { padding:24px; overflow:auto; display:flex; flex-direction:column; align-items:center; }\",\n \".col { width:100%; max-width:680px; }\",\n \".request { background:var(--panel); border:1px solid var(--border); border-radius:8px; padding:10px 14px; margin-bottom:16px; }\",\n \".request .label { font-size:10px; text-transform:uppercase; letter-spacing:0.06em; color:var(--muted); margin-bottom:4px; }\",\n \".request .text { font-size:13px; }\",\n \".status-row { display:flex; align-items:center; gap:10px; margin-bottom:18px; }\",\n \".status-msg { color:var(--muted); font-size:12px; }\",\n \".ticket-card { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:24px 26px; margin-bottom:18px; }\",\n \".ticket-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:14px; }\",\n \".ticket-title { margin:0; font-size:20px; font-weight:650; line-height:1.3; }\",\n \".ticket-section { margin-top:18px; }\",\n \".ticket-section h3 { margin:0 0 8px; font-size:11px; text-transform:uppercase; letter-spacing:0.06em; color:var(--muted); display:flex; align-items:center; justify-content:space-between; }\",\n \".ticket-desc { font-size:14px; line-height:1.6; white-space:pre-wrap; }\",\n \".ac-list { list-style:none; margin:0; padding:0; }\",\n \".ac-list li { display:flex; gap:10px; padding:9px 0; border-bottom:1px solid var(--border); align-items:flex-start; }\",\n \".ac-list li:last-child { border-bottom:0; }\",\n \".ac-check { flex:0 0 auto; width:18px; height:18px; border-radius:5px; border:1px solid var(--border); background:var(--panel); cursor:pointer; display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--ok); padding:0; }\",\n \".ac-check.done { border-color:var(--ok); }\",\n \".ac-text { flex:1; }\",\n \".ac-text.done { color:var(--muted); text-decoration:line-through; }\",\n \".ac-empty { color:var(--muted); font-size:13px; padding:6px 0; }\",\n \".actions-footer { display:flex; gap:8px; flex-wrap:wrap; padding-top:4px; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty h2 { color:var(--text); font-size:16px; margin:0 0 6px; }\",\n \".empty .form { display:flex; flex-direction:column; gap:10px; max-width:420px; margin:18px auto 0; }\",\n \".empty textarea { min-height:84px; padding:10px 12px; border:1px solid var(--border); border-radius:8px; background:var(--panel); color:var(--text); resize:vertical; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n].join(\"\\n\");\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Create a ticket for the requested work.\");\n const [busy, setBusy] = useState(false);\n const [done, setDone] = useState<Record<string, boolean>>({});\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const ticketRuns = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? ticketRuns[0]?.runId;\n const activeRun = ticketRuns.find((r) => r.runId === activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const ticketOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"ticket\", iteration: 0 });\n const ticket = useMemo(() => extractTicket(ticketOutput.data), [ticketOutput.data]);\n const requestText = inputPrompt(activeRun);\n const eventCount = (stream.events ?? []).length;\n const running = statusClass(activeRun?.status) === \"running\";\n const failed = statusClass(activeRun?.status) === \"failed\";\n\n async function refresh() {\n await Promise.all([runsQuery.refetch(), ticketOutput.refetch()]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n setDone({});\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n function toggleDone(key: string) {\n setDone((prev) => ({ ...prev, [key]: !prev[key] }));\n }\n\n return (\n <main className=\"shell\" data-testid=\"ticket-create-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Ticket Create</h1>\n <span className=\"pill\" data-testid=\"ticket-create-runid\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n {activeRun ? (\n <span className={\"badge \" + statusClass(activeRun.status)} data-testid=\"ticket-create-status\">{activeRun.status ?? \"idle\"}</span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"ticket-create-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"Describe the work to ticket…\"\n />\n <button className=\"button\" data-testid=\"ticket-create-refresh\" onClick={() => void refresh()} disabled={busy}>Refresh</button>\n {running ? (\n <button className=\"button danger\" data-testid=\"ticket-create-cancel\" onClick={() => void cancel()} disabled={busy}>Cancel</button>\n ) : null}\n <button className=\"button primary\" data-testid=\"ticket-create-launch\" onClick={() => void launch()} disabled={busy}>Generate Ticket</button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"content\">\n <div className=\"col\">\n {requestText ? (\n <div className=\"request\" data-testid=\"ticket-create-request\">\n <div className=\"label\">Request</div>\n <div className=\"text\">{requestText}</div>\n </div>\n ) : null}\n\n <div className=\"status-row\" data-testid=\"ticket-create-generation-status\">\n {running ? <span className=\"badge running\">Generating…</span> : null}\n {!running && ticket ? <span className=\"badge finished\">Ready</span> : null}\n {failed ? <span className=\"badge failed\">Failed</span> : null}\n <span className=\"status-msg\">{eventCount} events{ticketOutput.loading ? \" · refreshing…\" : \"\"}</span>\n </div>\n\n {ticket ? (\n <div className=\"ticket-card\" data-testid=\"ticket-create-card\">\n <div className=\"ticket-head\">\n <h2 className=\"ticket-title\" data-testid=\"ticket-create-title\">{ticket.title || \"Untitled ticket\"}</h2>\n <button className=\"button tiny\" onClick={() => copyText(ticketMarkdown(ticket))}>Copy all</button>\n </div>\n\n <div className=\"ticket-section\">\n <h3>\n Description\n <button className=\"button tiny\" onClick={() => copyText(ticket.description)}>Copy</button>\n </h3>\n <div className=\"ticket-desc\" data-testid=\"ticket-create-description\">\n {ticket.description || \"No description provided.\"}\n </div>\n </div>\n\n <div className=\"ticket-section\" data-testid=\"ticket-create-acceptance\">\n <h3>Acceptance Criteria</h3>\n {ticket.acceptanceCriteria.length > 0 ? (\n <ul className=\"ac-list\">\n {ticket.acceptanceCriteria.map((c, i) => {\n const key = String(i);\n const checked = !!done[key];\n return (\n <li key={i} data-testid=\"ticket-create-criterion\">\n <button\n className={\"ac-check\" + (checked ? \" done\" : \"\")}\n aria-label=\"toggle done\"\n onClick={() => toggleDone(key)}\n >\n {checked ? \"✓\" : \"\"}\n </button>\n <span className={\"ac-text\" + (checked ? \" done\" : \"\")}>{c}</span>\n </li>\n );\n })}\n </ul>\n ) : (\n <div className=\"ac-empty\">No acceptance criteria were generated for this ticket.</div>\n )}\n </div>\n\n <div className=\"ticket-section actions-footer\">\n <button className=\"button\" onClick={() => void launch()} disabled={busy}>Regenerate</button>\n <button className=\"button\" onClick={() => copyText(ticketMarkdown(ticket))}>Copy Markdown</button>\n {running ? <button className=\"button danger\" onClick={() => void cancel()} disabled={busy}>Cancel</button> : null}\n </div>\n </div>\n ) : (\n <div className=\"empty\" data-testid=\"ticket-create-empty\">\n {failed ? (\n <>\n <h2>Generation failed</h2>\n <div>Something went wrong producing this ticket.</div>\n <button className=\"button primary\" style={{ marginTop: 14 }} onClick={() => void launch()} disabled={busy}>Try Again</button>\n </>\n ) : running || activeRunId ? (\n <>\n <h2>{running ? \"Generating ticket…\" : \"Waiting for the ticket…\"}</h2>\n <div>The agent is turning the request into a structured ticket.</div>\n </>\n ) : (\n <>\n <h2>No ticket yet</h2>\n <div>Describe the work you want captured and generate a ticket.</div>\n <div className=\"form\">\n <textarea\n data-testid=\"ticket-create-empty-input\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"e.g. Add rate limiting to the login endpoint…\"\n />\n <button className=\"button primary\" data-testid=\"ticket-create-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Generate Ticket\n </button>\n </div>\n </>\n )}\n </div>\n )}\n </div>\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent tickets</div>\n {ticketRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"ticket-create-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {ticketRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", + "tickets-create": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smthrs/gateway-react\";\n\nconst WORKFLOW_KEY = \"tickets-create\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\ntype Ticket = { title: string; description: string; acceptanceCriteria: string[] };\ntype TicketsOutput = { summary: string; tickets: Ticket[] };\n\nfunction extractTickets(value: unknown): TicketsOutput | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : {};\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const rawTickets = Array.isArray(row.tickets) ? row.tickets : [];\n const tickets: Ticket[] = rawTickets\n .filter((t): t is Record<string, unknown> => isRecord(t))\n .map((t) => ({\n title: asString(t.title) ?? \"Untitled ticket\",\n description: asString(t.description) ?? \"\",\n acceptanceCriteria: Array.isArray(t.acceptanceCriteria)\n ? t.acceptanceCriteria.filter((c): c is string => typeof c === \"string\")\n : [],\n }));\n return { summary, tickets };\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:420px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:1fr 280px; flex:1; overflow:hidden; }\",\n \".content { padding:20px; overflow:auto; }\",\n \".status-row { display:flex; align-items:center; gap:10px; margin-bottom:16px; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".summary-card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:18px 20px; margin-bottom:18px; }\",\n \".summary-card h2 { margin:0 0 6px; font-size:12px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".summary-text { font-size:15px; line-height:1.55; }\",\n \".section-head { display:flex; align-items:center; justify-content:space-between; margin:0 0 12px; }\",\n \".section-head h2 { margin:0; font-size:12px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".count-chip { font-size:11px; color:var(--muted); background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:2px 9px; }\",\n \".tickets { display:flex; flex-direction:column; gap:14px; }\",\n \".ticket-card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px 18px; }\",\n \".ticket-top { display:flex; align-items:flex-start; gap:10px; }\",\n \".ticket-idx { flex:0 0 26px; height:26px; border-radius:7px; background:var(--panel); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--muted); }\",\n \".ticket-title { font-size:14px; font-weight:600; flex:1; }\",\n \".ticket-desc { margin:10px 0 0; color:var(--text); }\",\n \".ac-label { margin:14px 0 6px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".ac-list { list-style:none; margin:0; padding:0; }\",\n \".ac-list li { display:flex; gap:8px; padding:5px 0; color:var(--text); }\",\n \".ac-list li::before { content:'\\\\2713'; color:var(--ok); flex:0 0 auto; }\",\n \".ac-empty { color:var(--muted); font-style:italic; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; display:flex; flex-direction:column; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n \".events { border-top:1px solid var(--border); margin-top:auto; }\",\n \".events-head { width:100%; text-align:left; padding:10px 16px; border:0; background:transparent; color:var(--muted); cursor:pointer; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; display:flex; justify-content:space-between; }\",\n \".events-body { max-height:160px; overflow:auto; padding:0 16px 10px; }\",\n \".event-line { font-family:ui-monospace,monospace; font-size:11px; color:var(--muted); padding:3px 0; border-bottom:1px solid var(--border); }\",\n \".event-line:last-child { border-bottom:0; }\",\n].join(\"\\n\");\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Break this work into tickets.\");\n const [busy, setBusy] = useState(false);\n const [eventsOpen, setEventsOpen] = useState(true);\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const ticketRuns = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? ticketRuns[0]?.runId;\n const activeRun = ticketRuns.find((r) => r.runId === activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const ticketsOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"tickets\", iteration: 0 });\n const result = useMemo(() => extractTickets(ticketsOutput.data), [ticketsOutput.data]);\n const events = stream.events ?? [];\n const running = statusClass(activeRun?.status) === \"running\";\n\n async function refresh() {\n await Promise.all([runsQuery.refetch(), ticketsOutput.refetch()]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n return (\n <main className=\"shell\" data-testid=\"tickets-create-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Tickets Create</h1>\n <span className=\"pill\" data-testid=\"tickets-create-runid\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n {activeRun ? (\n <span className={\"badge \" + statusClass(activeRun.status)} data-testid=\"tickets-create-status\">{activeRun.status ?? \"idle\"}</span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"tickets-create-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What work should we break into tickets?\"\n />\n <button className=\"button\" data-testid=\"tickets-create-refresh\" onClick={() => void refresh()} disabled={busy}>Refresh</button>\n {running ? (\n <button className=\"button danger\" data-testid=\"tickets-create-cancel\" onClick={() => void cancel()} disabled={busy}>Cancel</button>\n ) : null}\n <button className=\"button primary\" data-testid=\"tickets-create-launch\" onClick={() => void launch()} disabled={busy}>Generate Tickets</button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"content\">\n {result ? (\n <>\n <div className=\"summary-card\" data-testid=\"tickets-create-summary-panel\">\n <h2>Breakdown summary</h2>\n <div className=\"summary-text\" data-testid=\"tickets-create-summary\">{result.summary}</div>\n </div>\n\n <div className=\"section-head\">\n <h2>Tickets</h2>\n <span className=\"count-chip\" data-testid=\"tickets-create-count\">{result.tickets.length}</span>\n </div>\n\n {result.tickets.length > 0 ? (\n <div className=\"tickets\" data-testid=\"tickets-create-tickets\">\n {result.tickets.map((ticket, i) => (\n <article className=\"ticket-card\" data-testid=\"tickets-create-ticket\" key={i}>\n <div className=\"ticket-top\">\n <span className=\"ticket-idx\">{i + 1}</span>\n <span className=\"ticket-title\">{ticket.title}</span>\n </div>\n {ticket.description ? <p className=\"ticket-desc\">{ticket.description}</p> : null}\n <div className=\"ac-label\">Acceptance criteria</div>\n {ticket.acceptanceCriteria.length > 0 ? (\n <ul className=\"ac-list\">\n {ticket.acceptanceCriteria.map((c, j) => (\n <li key={j}>{c}</li>\n ))}\n </ul>\n ) : (\n <div className=\"ac-empty\">No acceptance criteria specified.</div>\n )}\n </article>\n ))}\n </div>\n ) : (\n <div className=\"empty\" data-testid=\"tickets-create-tickets-empty\">\n <div>No tickets were generated for this run.</div>\n <div style={{ marginTop: 6, fontSize: 12 }}>The summary is shown above; try a more specific request.</div>\n </div>\n )}\n </>\n ) : (\n <div className=\"empty\" data-testid=\"tickets-create-empty\">\n <div>{activeRunId ? (running ? \"Generating tickets…\" : \"Waiting for ticket output…\") : \"No tickets yet.\"}</div>\n <button className=\"button primary\" data-testid=\"tickets-create-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Generate Tickets\n </button>\n </div>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent runs</div>\n {ticketRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"tickets-create-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {ticketRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n\n <div className=\"events\" data-testid=\"tickets-create-events\">\n <button className=\"events-head\" onClick={() => setEventsOpen((v) => !v)}>\n <span>Live events ({events.length})</span>\n <span>{eventsOpen ? \"Hide\" : \"Show\"}</span>\n </button>\n {eventsOpen ? (\n <div className=\"events-body\">\n {events.length > 0 ? (\n events.slice(-30).map((ev, i) => (\n <div className=\"event-line\" key={i}>{asString((ev as Record<string, unknown>).type) ?? \"event\"}</div>\n ))\n ) : (\n <div className=\"event-line\">No events yet.</div>\n )}\n </div>\n ) : null}\n </div>\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", + "ralph": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smthrs/gateway-react\";\n\nconst WORKFLOW_KEY = \"ralph\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\nfunction extractSummary(value: unknown): string | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : {};\n return asString(row.summary) ?? null;\n}\n\ntype IterationEvent = { seq: number; iteration: number; label: string; tsMs?: number };\n\nfunction extractIterations(events: unknown[]): IterationEvent[] {\n const out: IterationEvent[] = [];\n for (const raw of events) {\n if (!isRecord(raw)) continue;\n const nodeId = asString(raw.nodeId) ?? asString(raw.node);\n if (nodeId !== \"ralph\") continue;\n const kind = asString(raw.type) ?? asString(raw.kind) ?? \"\";\n if (kind.indexOf(\"complete\") === -1 && kind.indexOf(\"finish\") === -1 && kind.indexOf(\"output\") === -1) continue;\n const iterRaw = raw.iteration ?? raw.iter;\n const iteration = typeof iterRaw === \"number\" ? iterRaw : out.length;\n const seq = typeof raw.seq === \"number\" ? raw.seq : out.length;\n const tsMs = typeof raw.tsMs === \"number\" ? raw.tsMs : typeof raw.timestampMs === \"number\" ? raw.timestampMs : undefined;\n out.push({ seq, iteration, label: kind, tsMs });\n }\n return out;\n}\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nfunction fmtTime(ms: number | undefined) {\n if (!ms) return \"\";\n try {\n return new Date(ms).toLocaleTimeString();\n } catch (_e) {\n return \"\";\n }\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input,textarea { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".sub { font-size:11px; color:var(--muted); }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); font-family:ui-monospace,monospace; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); color:var(--muted); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".main { display:grid; grid-template-columns:1fr 280px; flex:1; overflow:hidden; }\",\n \".center { display:flex; flex-direction:column; overflow:hidden; }\",\n \".launch { padding:16px 20px; border-bottom:1px solid var(--border); background:var(--panel); }\",\n \".launch-row { display:flex; gap:10px; align-items:flex-end; }\",\n \".launch-field { flex:1; display:flex; flex-direction:column; gap:6px; }\",\n \".launch-field label { font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".prompt { width:100%; min-height:54px; resize:vertical; padding:8px 10px; border:1px solid var(--border); border-radius:6px; background:var(--bg); color:var(--text); }\",\n \".meta { display:flex; gap:16px; margin-top:10px; align-items:center; }\",\n \".meta .stat { display:flex; flex-direction:column; }\",\n \".meta .stat .k { font-size:10px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".meta .stat .v { font-size:14px; font-weight:600; }\",\n \".actions { display:flex; gap:8px; }\",\n \".button { height:34px; padding:0 14px; border:1px solid var(--border); border-radius:6px; background:var(--bg); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".timeline { flex:1; overflow:auto; padding:20px; }\",\n \".timeline-head { font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); margin-bottom:14px; }\",\n \".iter-card { position:relative; background:var(--card); border:1px solid var(--border); border-radius:10px; padding:14px 16px 14px 18px; margin-bottom:14px; }\",\n \".iter-card::before { content:''; position:absolute; left:0; top:0; bottom:0; width:3px; border-radius:3px 0 0 3px; background:var(--primary); }\",\n \".iter-card .row { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:8px; }\",\n \".iter-tag { font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:0.04em; color:var(--primary); }\",\n \".iter-ts { font-size:11px; color:var(--muted); font-family:ui-monospace,monospace; }\",\n \".iter-summary { font-size:14px; line-height:1.55; white-space:pre-wrap; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:16px; }\",\n \".empty h3 { color:var(--text); margin:0 0 8px; font-size:15px; }\",\n \".empty p { max-width:420px; margin:0 auto; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; align-items:center; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n].join(\"\\n\");\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Continue working on the current task.\");\n const [busy, setBusy] = useState(false);\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const ralphRuns = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? ralphRuns[0]?.runId;\n const activeRun = ralphRuns.find((r) => r.runId === activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const ralphOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"ralph\", iteration: 0 });\n\n const events = stream.events ?? [];\n const iterations = useMemo(() => extractIterations(events), [events]);\n const latestSummary = useMemo(() => extractSummary(ralphOutput.data), [ralphOutput.data]);\n const iterationCount = iterations.length > 0 ? iterations.length : latestSummary ? 1 : 0;\n const isRunning = statusClass(activeRun?.status) === \"running\";\n\n async function refresh() {\n await Promise.all([runsQuery.refetch(), ralphOutput.refetch()]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function resume() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.resumeRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n return (\n <main className=\"shell\" data-testid=\"ralph-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Ralph</h1>\n <span className=\"sub\">Continuous maintenance loop</span>\n <span className=\"pill\" data-testid=\"ralph-runid\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n {activeRun ? (\n <span className={\"badge \" + statusClass(activeRun.status)} data-testid=\"ralph-status\">{activeRun.status ?? \"idle\"}</span>\n ) : null}\n </div>\n <div className=\"actions\">\n <button className=\"button\" data-testid=\"ralph-refresh\" onClick={() => void refresh()} disabled={busy}>Refresh</button>\n {isRunning ? (\n <button className=\"button danger\" data-testid=\"ralph-cancel\" onClick={() => void cancel()} disabled={busy}>Cancel loop</button>\n ) : null}\n {activeRun && statusClass(activeRun.status) === \"failed\" ? (\n <button className=\"button\" data-testid=\"ralph-resume\" onClick={() => void resume()} disabled={busy}>Resume</button>\n ) : null}\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"center\">\n <div className=\"launch\" data-testid=\"ralph-launch\">\n <div className=\"launch-row\">\n <div className=\"launch-field\">\n <label htmlFor=\"ralph-prompt-input\">Loop prompt</label>\n <textarea\n id=\"ralph-prompt-input\"\n className=\"prompt\"\n data-testid=\"ralph-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"Continue working on the current task.\"\n />\n </div>\n <button className=\"button primary\" data-testid=\"ralph-launch-button\" onClick={() => void launch()} disabled={busy}>\n Start loop\n </button>\n </div>\n <div className=\"meta\">\n <div className=\"stat\">\n <span className=\"k\">Status</span>\n <span className=\"v\">{activeRun?.status ?? \"idle\"}</span>\n </div>\n <div className=\"stat\">\n <span className=\"k\">Iterations</span>\n <span className=\"v\" data-testid=\"ralph-iteration-count\">{iterationCount}</span>\n </div>\n <div className=\"stat\">\n <span className=\"k\">Events</span>\n <span className=\"v\">{events.length}</span>\n </div>\n </div>\n </div>\n\n <div className=\"timeline\" data-testid=\"ralph-timeline\">\n <div className=\"timeline-head\">Iteration timeline (newest first)</div>\n {latestSummary ? (\n <div className=\"iter-card\" data-testid=\"ralph-latest-iteration\">\n <div className=\"row\">\n <span className=\"iter-tag\">Latest iteration</span>\n <span className=\"iter-ts\">{fmtTime(activeRun?.createdAtMs)}</span>\n </div>\n <div className=\"iter-summary\" data-testid=\"ralph-summary\">{latestSummary}</div>\n </div>\n ) : null}\n {iterations\n .slice()\n .reverse()\n .map((it) => (\n <div className=\"iter-card\" key={it.seq} data-testid=\"ralph-iteration-event\">\n <div className=\"row\">\n <span className=\"iter-tag\">Iteration {it.iteration + 1}</span>\n <span className=\"iter-ts\">{fmtTime(it.tsMs)}</span>\n </div>\n <div className=\"iter-summary\">{it.label}</div>\n </div>\n ))}\n {!latestSummary && iterations.length === 0 ? (\n <div className=\"empty\" data-testid=\"ralph-empty\">\n <h3>{activeRunId ? \"Waiting for the first iteration…\" : \"No loop running\"}</h3>\n <p>\n Ralph runs a single task in an infinite loop, posting a fresh summary after every iteration. Enter a\n prompt and start the loop to watch each iteration land here. Cancel whenever the work is done.\n </p>\n <button className=\"button primary\" data-testid=\"ralph-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Start loop\n </button>\n </div>\n ) : null}\n </div>\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Run history</div>\n {ralphRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"ralph-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {ralphRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", + "improve-test-coverage": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smthrs/gateway-react\";\n\nconst WORKFLOW_KEY = \"improve-test-coverage\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\ntype ReviewIssue = { severity?: string; title?: string; file?: string | null; description?: string };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asBool(value: unknown): boolean | undefined {\n return typeof value === \"boolean\" ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\nfunction unwrapRow(value: unknown): Record<string, unknown> | null {\n const response = isRecord(value) ? value : {};\n if (isRecord(response.row)) return response.row;\n if (isRecord(response)) return response;\n return null;\n}\n\ntype ImplementOutput = { summary: string; filesChanged: string[]; allTestsPassing?: boolean };\nfunction extractImplement(value: unknown): ImplementOutput | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const filesChanged = Array.isArray(row.filesChanged)\n ? row.filesChanged.filter((f): f is string => typeof f === \"string\")\n : [];\n return { summary, filesChanged, allTestsPassing: asBool(row.allTestsPassing) };\n}\n\ntype ValidateOutput = { summary: string; allPassed?: boolean; failingSummary: string | null };\nfunction extractValidate(value: unknown): ValidateOutput | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n return {\n summary,\n allPassed: asBool(row.allPassed),\n failingSummary: asString(row.failingSummary) ?? null,\n };\n}\n\ntype ReviewOutput = { reviewer?: string; approved?: boolean; feedback?: string; issues: ReviewIssue[] };\nfunction extractReview(value: unknown): ReviewOutput | null {\n const row = unwrapRow(value);\n if (!row) return null;\n if (row.feedback === undefined && row.approved === undefined && row.reviewer === undefined) return null;\n const issues = Array.isArray(row.issues)\n ? row.issues.filter(isRecord).map((i) => ({\n severity: asString(i.severity),\n title: asString(i.title),\n file: asString(i.file) ?? null,\n description: asString(i.description),\n }))\n : [];\n return {\n reviewer: asString(row.reviewer),\n approved: asBool(row.approved),\n feedback: asString(row.feedback),\n issues,\n };\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".pill .mono { font-family:ui-monospace,monospace; }\",\n \".iter-pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:600; color:var(--primary); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--primary); }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:420px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:1fr 280px; flex:1; overflow:hidden; }\",\n \".content { padding:20px; overflow:auto; }\",\n \".timeline { display:flex; align-items:center; gap:0; margin-bottom:20px; overflow-x:auto; padding-bottom:4px; }\",\n \".stage { display:flex; align-items:center; gap:8px; flex:0 0 auto; }\",\n \".stage-dot { width:26px; height:26px; border-radius:50%; background:var(--panel); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--muted); }\",\n \".stage.done .stage-dot { background:var(--ok); border-color:var(--ok); color:#0c0c0e; }\",\n \".stage.active .stage-dot { border-color:var(--primary); color:var(--primary); box-shadow:0 0 0 3px rgba(94,106,210,0.18); }\",\n \".stage-label { font-size:12px; color:var(--muted); }\",\n \".stage.done .stage-label,.stage.active .stage-label { color:var(--text); }\",\n \".stage-line { width:42px; height:1px; background:var(--border); margin:0 6px; }\",\n \".stage-line.done { background:var(--ok); }\",\n \".panel-grid { display:grid; grid-template-columns:1fr; gap:16px; }\",\n \"@media (min-width:980px) { .panel-grid.split { grid-template-columns:1fr 1fr; } }\",\n \".card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px 18px; }\",\n \".card h2 { margin:0 0 10px; font-size:12px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); display:flex; align-items:center; gap:8px; }\",\n \".card.full { margin-bottom:16px; }\",\n \".summary-text { font-size:14px; line-height:1.55; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".badge.ok { color:var(--ok); border-color:var(--ok); }\",\n \".badge.err { color:var(--err); border-color:var(--err); }\",\n \".files { list-style:none; margin:10px 0 0; padding:0; }\",\n \".files li { display:flex; align-items:center; gap:8px; padding:7px 0; border-bottom:1px solid var(--border); font-family:ui-monospace,monospace; font-size:12px; }\",\n \".files li:last-child { border-bottom:0; }\",\n \".files .file-dot { width:6px; height:6px; border-radius:50%; background:var(--primary); flex:0 0 auto; }\",\n \".inline-empty { color:var(--muted); font-size:12px; margin-top:8px; }\",\n \".fail-box { margin-top:10px; background:var(--panel); border:1px solid var(--err); border-radius:6px; padding:10px 12px; font-family:ui-monospace,monospace; font-size:12px; color:var(--err); white-space:pre-wrap; }\",\n \".reviewer { border:1px solid var(--border); border-radius:8px; padding:12px 14px; margin-top:10px; }\",\n \".reviewer:first-of-type { margin-top:0; }\",\n \".reviewer-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px; }\",\n \".reviewer-name { font-weight:600; font-size:13px; }\",\n \".issue-row { display:flex; gap:10px; padding:8px 0; border-top:1px solid var(--border); }\",\n \".sev { font-size:10px; font-weight:700; text-transform:uppercase; padding:2px 6px; border-radius:4px; flex:0 0 auto; height:fit-content; border:1px solid var(--border); }\",\n \".sev.critical { color:var(--err); border-color:var(--err); }\",\n \".sev.major { color:var(--warn); border-color:var(--warn); }\",\n \".sev.minor { color:var(--primary); border-color:var(--primary); }\",\n \".sev.nit { color:var(--muted); }\",\n \".issue-body { min-width:0; }\",\n \".issue-title { font-weight:600; }\",\n \".issue-desc { color:var(--muted); font-size:12px; }\",\n \".issue-file { font-family:ui-monospace,monospace; font-size:11px; color:var(--muted); }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".hero { max-width:480px; margin:48px auto; text-align:center; }\",\n \".hero h2 { font-size:18px; margin:0 0 8px; color:var(--text); text-transform:none; letter-spacing:0; justify-content:center; }\",\n \".hero p { color:var(--muted); margin:0 0 18px; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n \".meta-row { display:flex; align-items:center; gap:10px; margin-top:16px; color:var(--muted); font-size:12px; }\",\n].join(\"\\n\");\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Improve the test coverage for the current repository.\");\n const [busy, setBusy] = useState(false);\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const runs = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? runs[0]?.runId;\n const activeRun = runs.find((r) => r.runId === activeRunId);\n const runStatusClass = statusClass(activeRun?.status);\n\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const implementOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"improve-test-coverage:implement\", iteration: 0 });\n const validateOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"improve-test-coverage:validate\", iteration: 0 });\n const reviewOut = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"improve-test-coverage:review:0\", iteration: 0 });\n\n const implement = useMemo(() => extractImplement(implementOut.data), [implementOut.data]);\n const validate = useMemo(() => extractValidate(validateOut.data), [validateOut.data]);\n const review = useMemo(() => extractReview(reviewOut.data), [reviewOut.data]);\n const eventCount = (stream.events ?? []).length;\n\n const implementDone = implement !== null;\n const validateDone = validate !== null;\n const reviewDone = review !== null;\n let activeStage: \"implement\" | \"validate\" | \"review\" | \"none\" = \"none\";\n if (activeRunId && runStatusClass === \"running\") {\n if (!implementDone) activeStage = \"implement\";\n else if (!validateDone) activeStage = \"validate\";\n else if (!reviewDone) activeStage = \"review\";\n }\n\n async function refresh() {\n await Promise.all([\n runsQuery.refetch(),\n implementOut.refetch(),\n validateOut.refetch(),\n reviewOut.refetch(),\n ]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n const hasAnyOutput = implementDone || validateDone || reviewDone;\n\n function stageEl(key: \"implement\" | \"validate\" | \"review\", label: string, done: boolean) {\n const cls = \"stage\" + (done ? \" done\" : \"\") + (activeStage === key ? \" active\" : \"\");\n return (\n <div className={cls} data-testid={\"improve-test-coverage-stage-\" + key}>\n <span className=\"stage-dot\">{done ? \"✓\" : \"\"}</span>\n <span className=\"stage-label\">{label}</span>\n </div>\n );\n }\n\n return (\n <main className=\"shell\" data-testid=\"improve-test-coverage-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Improve Test Coverage</h1>\n <span className=\"pill\" data-testid=\"improve-test-coverage-runid\">\n <span className=\"mono\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n </span>\n {activeRun ? (\n <span className={\"badge \" + runStatusClass} data-testid=\"improve-test-coverage-status\">{activeRun.status ?? \"idle\"}</span>\n ) : null}\n {activeRunId ? (\n <span className=\"iter-pill\" data-testid=\"improve-test-coverage-iteration\">\n {runStatusClass === \"finished\" ? \"complete\" : runStatusClass === \"running\" ? \"running (max 3)\" : \"iteration / 3\"}\n </span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"improve-test-coverage-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What coverage should we improve?\"\n />\n <button className=\"button\" data-testid=\"improve-test-coverage-refresh\" onClick={() => void refresh()} disabled={busy}>Refresh</button>\n {activeRun && runStatusClass === \"running\" ? (\n <button className=\"button danger\" data-testid=\"improve-test-coverage-cancel\" onClick={() => void cancel()} disabled={busy}>Cancel</button>\n ) : null}\n {activeRun && (runStatusClass === \"finished\" || runStatusClass === \"failed\") ? (\n <button className=\"button\" data-testid=\"improve-test-coverage-resume\" onClick={() => void launch()} disabled={busy}>Retry</button>\n ) : null}\n <button className=\"button primary\" data-testid=\"improve-test-coverage-launch\" onClick={() => void launch()} disabled={busy}>Launch</button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"content\">\n {activeRunId ? (\n <div className=\"timeline\" data-testid=\"improve-test-coverage-timeline\">\n {stageEl(\"implement\", \"Implement\", implementDone)}\n <span className={\"stage-line\" + (implementDone ? \" done\" : \"\")} />\n {stageEl(\"validate\", \"Validate\", validateDone)}\n <span className={\"stage-line\" + (validateDone ? \" done\" : \"\")} />\n {stageEl(\"review\", \"Review\", reviewDone)}\n </div>\n ) : null}\n\n {hasAnyOutput ? (\n <>\n <div className=\"card full\" data-testid=\"improve-test-coverage-implement\">\n <h2>\n Implementation\n {implement && implement.allTestsPassing !== undefined ? (\n <span className={\"badge \" + (implement.allTestsPassing ? \"ok\" : \"err\")}>\n {implement.allTestsPassing ? \"Tests passing\" : \"Tests failing\"}\n </span>\n ) : null}\n </h2>\n {implement ? (\n <>\n <div className=\"summary-text\">{implement.summary}</div>\n {implement.filesChanged.length > 0 ? (\n <ul className=\"files\" data-testid=\"improve-test-coverage-files\">\n {implement.filesChanged.map((f, i) => (\n <li key={i} data-testid=\"improve-test-coverage-file\">\n <span className=\"file-dot\" />\n <span>{f}</span>\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"inline-empty\" data-testid=\"improve-test-coverage-files-empty\">No files changed reported yet.</div>\n )}\n </>\n ) : (\n <div className=\"inline-empty\">Waiting for the implement stage…</div>\n )}\n </div>\n\n <div className=\"panel-grid split\">\n <div className=\"card\" data-testid=\"improve-test-coverage-validate\">\n <h2>\n Validation\n {validate && validate.allPassed !== undefined ? (\n <span className={\"badge \" + (validate.allPassed ? \"ok\" : \"err\")}>\n {validate.allPassed ? \"All passed\" : \"Failed\"}\n </span>\n ) : null}\n </h2>\n {validate ? (\n <>\n <div className=\"summary-text\">{validate.summary}</div>\n {validate.failingSummary ? (\n <div className=\"fail-box\" data-testid=\"improve-test-coverage-failing\">{validate.failingSummary}</div>\n ) : null}\n </>\n ) : (\n <div className=\"inline-empty\">Waiting for validation…</div>\n )}\n </div>\n\n <div className=\"card\" data-testid=\"improve-test-coverage-review\">\n <h2>Reviewer Issues</h2>\n {review ? (\n <div className=\"reviewer\">\n <div className=\"reviewer-head\">\n <span className=\"reviewer-name\">{review.reviewer ?? \"reviewer-1\"}</span>\n {review.approved !== undefined ? (\n <span className={\"badge \" + (review.approved ? \"ok\" : \"err\")}>\n {review.approved ? \"Approved\" : \"Changes requested\"}\n </span>\n ) : null}\n </div>\n {review.feedback ? <div className=\"summary-text\">{review.feedback}</div> : null}\n {review.issues.length > 0 ? (\n review.issues.map((issue, i) => (\n <div className=\"issue-row\" key={i} data-testid=\"improve-test-coverage-issue\">\n <span className={\"sev \" + (issue.severity ?? \"nit\")}>{issue.severity ?? \"nit\"}</span>\n <div className=\"issue-body\">\n <div className=\"issue-title\">{issue.title ?? \"Issue\"}</div>\n {issue.description ? <div className=\"issue-desc\">{issue.description}</div> : null}\n {issue.file ? <div className=\"issue-file\">{issue.file}</div> : null}\n </div>\n </div>\n ))\n ) : (\n <div className=\"inline-empty\" data-testid=\"improve-test-coverage-issues-empty\">No issues raised by this reviewer.</div>\n )}\n </div>\n ) : (\n <div className=\"inline-empty\">Waiting for review…</div>\n )}\n </div>\n </div>\n\n <div className=\"meta-row\" data-testid=\"improve-test-coverage-meta\">\n <span>{eventCount} events</span>\n {implementOut.loading || validateOut.loading || reviewOut.loading ? <span>· refreshing…</span> : null}\n </div>\n </>\n ) : activeRunId ? (\n <div className=\"empty\" data-testid=\"improve-test-coverage-waiting\">\n <div>Running iteration 1/3 — finding and adding missing tests…</div>\n </div>\n ) : (\n <div className=\"hero\" data-testid=\"improve-test-coverage-empty\">\n <h2>Improve Test Coverage</h2>\n <p>Add high-impact missing tests for this repository. Start a run to find the gaps and verify the new tests pass.</p>\n <button className=\"button primary\" data-testid=\"improve-test-coverage-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Launch run\n </button>\n </div>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent runs</div>\n {runs.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"improve-test-coverage-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {runs.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", + "debug": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smthrs/gateway-react\";\n\nconst WORKFLOW_KEY = \"debug\";\nconst MAX_ITERATIONS = 3;\nconst REVIEWER_SLOTS = [0, 1, 2];\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asBool(value: unknown): boolean | undefined {\n return typeof value === \"boolean\" ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\nfunction rowOf(value: unknown): Record<string, unknown> | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : null;\n return row;\n}\n\ntype ImplementOutput = { summary: string; filesChanged: string[]; allTestsPassing: boolean };\nfunction extractImplement(value: unknown): ImplementOutput | null {\n const row = rowOf(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const filesChanged = Array.isArray(row.filesChanged)\n ? row.filesChanged.filter((f): f is string => typeof f === \"string\")\n : [];\n return { summary, filesChanged, allTestsPassing: asBool(row.allTestsPassing) ?? true };\n}\n\ntype ValidateOutput = { summary: string; allPassed: boolean; failingSummary: string | null };\nfunction extractValidate(value: unknown): ValidateOutput | null {\n const row = rowOf(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n return {\n summary,\n allPassed: asBool(row.allPassed) ?? true,\n failingSummary: asString(row.failingSummary) ?? null,\n };\n}\n\ntype ReviewIssue = { severity: string; title: string; file: string | null; description: string };\ntype ReviewOutput = { reviewer: string; approved: boolean; feedback: string; issues: ReviewIssue[] };\nfunction extractReview(value: unknown): ReviewOutput | null {\n const row = rowOf(value);\n if (!row) return null;\n const reviewer = asString(row.reviewer);\n if (reviewer === undefined) return null;\n const issues = Array.isArray(row.issues)\n ? row.issues\n .filter(isRecord)\n .map((i) => ({\n severity: asString(i.severity) ?? \"nit\",\n title: asString(i.title) ?? \"\",\n file: asString(i.file) ?? null,\n description: asString(i.description) ?? \"\",\n }))\n : [];\n return {\n reviewer,\n approved: asBool(row.approved) ?? false,\n feedback: asString(row.feedback) ?? \"\",\n issues,\n };\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:420px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:1fr 280px; flex:1; overflow:hidden; }\",\n \".content { padding:20px; overflow:auto; }\",\n \".status-row { display:flex; align-items:center; gap:10px; margin-bottom:16px; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".badge.ok { color:var(--ok); border-color:var(--ok); }\",\n \".badge.err { color:var(--err); border-color:var(--err); }\",\n \".bug-card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px 18px; margin-bottom:18px; }\",\n \".bug-card h2 { margin:0 0 6px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".bug-text { font-size:14px; line-height:1.55; }\",\n \".timeline { display:flex; gap:10px; margin-bottom:18px; flex-wrap:wrap; }\",\n \".iter-tab { display:flex; flex-direction:column; gap:6px; min-width:120px; padding:10px 12px; border:1px solid var(--border); border-radius:9px; background:var(--panel); color:var(--text); cursor:pointer; text-align:left; }\",\n \".iter-tab:hover { background:var(--card); }\",\n \".iter-tab.active { border-color:var(--primary); box-shadow:inset 0 0 0 1px var(--primary); }\",\n \".iter-tab .iter-label { font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".iter-dots { display:flex; gap:6px; align-items:center; }\",\n \".dot { width:9px; height:9px; border-radius:50%; background:var(--border); }\",\n \".dot.ok { background:var(--ok); }\",\n \".dot.err { background:var(--err); }\",\n \".dot.pending { background:var(--muted); opacity:0.5; }\",\n \".phase-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }\",\n \".phase-grid.review-row { grid-template-columns:1fr; }\",\n \".panel { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px 18px; margin-bottom:16px; }\",\n \".panel-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px; }\",\n \".panel-head h3 { margin:0; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".panel-summary { font-size:14px; line-height:1.5; }\",\n \".files { list-style:none; margin:10px 0 0; padding:0; }\",\n \".files li { font-family:ui-monospace,monospace; font-size:12px; padding:5px 0; border-bottom:1px solid var(--border); color:var(--text); }\",\n \".files li:last-child { border-bottom:0; }\",\n \".fail-box { margin-top:10px; padding:10px 12px; border:1px solid var(--err); border-radius:8px; background:rgba(248,113,113,0.08); color:var(--err); font-size:12px; white-space:pre-wrap; }\",\n \".reviewers { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:14px; }\",\n \".reviewer-card { border:1px solid var(--border); border-radius:9px; padding:12px 14px; background:var(--panel); }\",\n \".reviewer-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px; }\",\n \".reviewer-name { font-weight:600; font-size:13px; }\",\n \".reviewer-feedback { font-size:13px; color:var(--text); line-height:1.5; }\",\n \".issues { list-style:none; margin:10px 0 0; padding:0; display:flex; flex-direction:column; gap:6px; }\",\n \".issue { font-size:12px; padding:6px 8px; border-radius:6px; border:1px solid var(--border); }\",\n \".issue.critical { border-color:var(--err); color:var(--err); }\",\n \".issue.major { border-color:#fb923c; color:#fb923c; }\",\n \".issue.minor { border-color:var(--warn); color:var(--warn); }\",\n \".issue.nit { border-color:var(--border); color:var(--muted); }\",\n \".sub-empty { color:var(--muted); font-size:12px; margin-top:8px; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n].join(\"\\n\");\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nfunction IterationPanels(props: { runId: string; iteration: number }) {\n const { runId, iteration } = props;\n const implementOut = useGatewayNodeOutput({ runId, nodeId: \"debug:implement\", iteration });\n const validateOut = useGatewayNodeOutput({ runId, nodeId: \"debug:validate\", iteration });\n const review0 = useGatewayNodeOutput({ runId, nodeId: \"debug:review:0\", iteration });\n const review1 = useGatewayNodeOutput({ runId, nodeId: \"debug:review:1\", iteration });\n const review2 = useGatewayNodeOutput({ runId, nodeId: \"debug:review:2\", iteration });\n\n const implement = useMemo(() => extractImplement(implementOut.data), [implementOut.data]);\n const validate = useMemo(() => extractValidate(validateOut.data), [validateOut.data]);\n const reviewData = [review0.data, review1.data, review2.data];\n const reviews = useMemo(\n () => REVIEWER_SLOTS.map((i) => extractReview(reviewData[i])).filter((r): r is ReviewOutput => r !== null),\n [review0.data, review1.data, review2.data],\n );\n\n return (\n <>\n <div className=\"phase-grid\">\n <div className=\"panel\" data-testid=\"debug-implement-panel\">\n <div className=\"panel-head\">\n <h3>Implement · attempt {iteration + 1}</h3>\n {implement ? (\n <span className={\"badge \" + (implement.allTestsPassing ? \"ok\" : \"err\")}>\n {implement.allTestsPassing ? \"tests pass\" : \"tests fail\"}\n </span>\n ) : null}\n </div>\n {implement ? (\n <>\n <div className=\"panel-summary\" data-testid=\"debug-implement-summary\">{implement.summary}</div>\n {implement.filesChanged.length > 0 ? (\n <ul className=\"files\" data-testid=\"debug-implement-files\">\n {implement.filesChanged.map((f, i) => (\n <li key={i}>{f}</li>\n ))}\n </ul>\n ) : (\n <div className=\"sub-empty\" data-testid=\"debug-implement-files-empty\">No files changed in this attempt.</div>\n )}\n </>\n ) : (\n <div className=\"sub-empty\">Waiting for the fix attempt…</div>\n )}\n </div>\n\n <div className=\"panel\" data-testid=\"debug-validate-panel\">\n <div className=\"panel-head\">\n <h3>Validate · attempt {iteration + 1}</h3>\n {validate ? (\n <span className={\"badge \" + (validate.allPassed ? \"ok\" : \"err\")}>\n {validate.allPassed ? \"all passed\" : \"failing\"}\n </span>\n ) : null}\n </div>\n {validate ? (\n <>\n <div className=\"panel-summary\" data-testid=\"debug-validate-summary\">{validate.summary}</div>\n {validate.failingSummary ? (\n <div className=\"fail-box\" data-testid=\"debug-validate-failing\">{validate.failingSummary}</div>\n ) : (\n <div className=\"sub-empty\">No failing tests reported.</div>\n )}\n </>\n ) : (\n <div className=\"sub-empty\">Waiting for validation…</div>\n )}\n </div>\n </div>\n\n <div className=\"panel\" data-testid=\"debug-review-panel\">\n <div className=\"panel-head\">\n <h3>Reviewers · attempt {iteration + 1}</h3>\n <span className=\"pill\">{reviews.length} reviewer{reviews.length === 1 ? \"\" : \"s\"}</span>\n </div>\n {reviews.length > 0 ? (\n <div className=\"reviewers\">\n {reviews.map((r, i) => (\n <div className=\"reviewer-card\" key={i} data-testid=\"debug-reviewer-card\">\n <div className=\"reviewer-head\">\n <span className=\"reviewer-name\" data-testid=\"debug-reviewer-name\">{r.reviewer}</span>\n <span className={\"badge \" + (r.approved ? \"ok\" : \"err\")}>{r.approved ? \"approved\" : \"rejected\"}</span>\n </div>\n <div className=\"reviewer-feedback\" data-testid=\"debug-reviewer-feedback\">{r.feedback}</div>\n {r.issues.length > 0 ? (\n <ul className=\"issues\" data-testid=\"debug-reviewer-issues\">\n {r.issues.map((issue, j) => (\n <li className={\"issue \" + issue.severity} key={j}>\n <strong>[{issue.severity}]</strong> {issue.title}\n {issue.file ? \" · \" + issue.file : \"\"}\n {issue.description ? \" — \" + issue.description : \"\"}\n </li>\n ))}\n </ul>\n ) : (\n <div className=\"sub-empty\" data-testid=\"debug-reviewer-issues-empty\">No issues raised.</div>\n )}\n </div>\n ))}\n </div>\n ) : (\n <div className=\"sub-empty\" data-testid=\"debug-review-empty\">Waiting for reviewers on this attempt…</div>\n )}\n </div>\n </>\n );\n}\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Reproduce and fix the reported bug.\");\n const [iteration, setIteration] = useState(0);\n const [busy, setBusy] = useState(false);\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const debugRuns = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? debugRuns[0]?.runId;\n const activeRun = debugRuns.find((r) => r.runId === activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const eventCount = (stream.events ?? []).length;\n\n async function refresh() {\n await runsQuery.refetch();\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n setIteration(0);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n return (\n <main className=\"shell\" data-testid=\"debug-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Debug</h1>\n <span className=\"pill\" data-testid=\"debug-runid\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n {activeRun ? (\n <span className={\"badge \" + statusClass(activeRun.status)} data-testid=\"debug-status\">{activeRun.status ?? \"idle\"}</span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"debug-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"Describe the bug to reproduce and fix…\"\n />\n <button className=\"button\" data-testid=\"debug-refresh\" onClick={() => void refresh()} disabled={busy}>Refresh</button>\n {activeRun && statusClass(activeRun.status) === \"running\" ? (\n <button className=\"button danger\" data-testid=\"debug-cancel\" onClick={() => void cancel()} disabled={busy}>Cancel</button>\n ) : null}\n <button className=\"button primary\" data-testid=\"debug-launch\" onClick={() => void launch()} disabled={busy}>Start Debug</button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"content\">\n {activeRunId ? (\n <>\n <div className=\"bug-card\" data-testid=\"debug-bug-report\">\n <h2>Bug report</h2>\n <div className=\"bug-text\">{prompt}</div>\n </div>\n\n <div className=\"timeline\" data-testid=\"debug-timeline\">\n {Array.from({ length: MAX_ITERATIONS }, (_, i) => i).map((i) => (\n <button\n key={i}\n className={\"iter-tab\" + (i === iteration ? \" active\" : \"\")}\n data-testid={\"debug-iter-\" + i}\n onClick={() => setIteration(i)}\n >\n <span className=\"iter-label\">Attempt {i + 1}</span>\n <span className=\"iter-dots\">\n <span className=\"dot pending\" title=\"implement\" />\n <span className=\"dot pending\" title=\"validate\" />\n <span className=\"dot pending\" title=\"review\" />\n </span>\n </button>\n ))}\n </div>\n\n <IterationPanels runId={activeRunId} iteration={iteration} />\n\n <div className=\"status-row\" style={{ marginTop: 8, color: \"var(--muted)\" }}>\n <span>{eventCount} events</span>\n <span>· max {MAX_ITERATIONS} attempts</span>\n </div>\n </>\n ) : (\n <div className=\"empty\" data-testid=\"debug-empty\">\n <div>No debug run yet. Describe the bug above and start a run.</div>\n <button className=\"button primary\" data-testid=\"debug-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Start Debug\n </button>\n </div>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent debug runs</div>\n {debugRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"debug-run-\" + r.runId}\n onClick={() => {\n setSelectedRunId(r.runId);\n setIteration(0);\n }}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {debugRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", + "grill-me": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRun,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smthrs/gateway-react\";\n\nconst WORKFLOW_KEY = \"grill-me\";\nconst GRILL_NODE_ID = \"grill-me:grill\";\nconst MAX_TRACKED_ITERATIONS = 8;\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\ntype GrillRow = {\n iteration: number;\n question: string;\n recommendedAnswer: string | null;\n branch: string | null;\n resolved: boolean;\n questionsAsked: number;\n sharedUnderstanding: string | null;\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asNullableString(value: unknown): string | null {\n return typeof value === \"string\" ? value : null;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\nfunction extractRow(value: unknown, iteration: number): GrillRow | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : {};\n const question = asString(row.question);\n if (question === undefined) return null;\n return {\n iteration,\n question,\n recommendedAnswer: asNullableString(row.recommendedAnswer),\n branch: asNullableString(row.branch),\n resolved: row.resolved === true,\n questionsAsked: typeof row.questionsAsked === \"number\" ? row.questionsAsked : 0,\n sharedUnderstanding: asNullableString(row.sharedUnderstanding),\n };\n}\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n if (status === \"paused\" || status === \"waiting\") return \"paused\";\n return \"\";\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); flex-wrap:wrap; }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; flex-wrap:wrap; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".pill .mono { font-family:ui-monospace,monospace; }\",\n \".metrics { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }\",\n \".metric { font-size:11px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".metric b { color:var(--text); font-weight:600; }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; flex-wrap:wrap; }\",\n \".prompt { flex:1; max-width:360px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".badge.paused { color:var(--primary); border-color:var(--primary); }\",\n \".main { display:grid; grid-template-columns:1fr 360px; flex:1; overflow:hidden; }\",\n \".history { padding:20px; overflow:auto; border-right:1px solid var(--border); }\",\n \".history-head { font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); margin:0 0 14px; }\",\n \".qa { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:14px 16px; margin-bottom:12px; position:relative; }\",\n \".qa.resolved { border-color:var(--ok); }\",\n \".qa-meta { display:flex; align-items:center; gap:8px; margin-bottom:8px; }\",\n \".iter-chip { font-size:11px; font-weight:600; color:var(--muted); background:var(--panel); border:1px solid var(--border); border-radius:5px; padding:2px 8px; }\",\n \".branch-chip { font-size:11px; color:var(--primary); border:1px solid var(--primary); border-radius:5px; padding:2px 8px; }\",\n \".qa-question { font-size:14px; line-height:1.5; margin-bottom:8px; }\",\n \".qa-hint { font-size:12px; color:var(--muted); border-left:2px solid var(--border); padding-left:10px; }\",\n \".qa-hint b { color:var(--ok); font-weight:600; }\",\n \".rail { background:var(--panel); display:flex; flex-direction:column; overflow:auto; }\",\n \".rail-section { padding:16px; border-bottom:1px solid var(--border); }\",\n \".rail-section h2 { margin:0 0 10px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".current-q { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px; }\",\n \".current-q .q { font-size:16px; line-height:1.5; margin-bottom:10px; }\",\n \".current-q .hint { font-size:12px; color:var(--muted); }\",\n \".current-q .hint b { color:var(--ok); }\",\n \".understanding { font-size:13px; line-height:1.6; color:var(--text); white-space:pre-wrap; }\",\n \".resolved-banner { background:rgba(74,222,128,0.08); border:1px solid var(--ok); border-radius:10px; padding:14px 16px; color:var(--ok); }\",\n \".resolved-banner b { display:block; margin-bottom:6px; }\",\n \".resolved-banner span { color:var(--text); }\",\n \".actions { display:flex; gap:8px; flex-wrap:wrap; }\",\n \".empty { color:var(--muted); text-align:center; padding:32px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".spinner { width:18px; height:18px; border-radius:50%; border:2px solid var(--border); border-top-color:var(--primary); display:inline-block; animation:spin 0.8s linear infinite; vertical-align:middle; margin-right:8px; }\",\n \"@keyframes spin { to { transform:rotate(360deg); } }\",\n \".runs { padding:6px 0; }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n \"@media (max-width:880px) { .main { grid-template-columns:1fr; } .history { border-right:0; border-bottom:1px solid var(--border); } }\",\n].join(\"\\n\");\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Describe what you want to get grilled on.\");\n const [busy, setBusy] = useState(false);\n\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const grillRuns = useMemo(\n () =>\n ((runsQuery.data ?? []) as RunSummary[]).filter(\n (r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY,\n ),\n [runsQuery.data],\n );\n\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? grillRuns[0]?.runId;\n const activeRun = grillRuns.find((r) => r.runId === activeRunId);\n const runDetail = useGatewayRun(activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n\n // Hooks cannot run in a loop, so fetch a fixed window of iterations.\n // Iteration 0 is the primary output region per the deep-link contract.\n const iter0 = useGatewayNodeOutput({ runId: activeRunId, nodeId: GRILL_NODE_ID, iteration: 0 });\n const iter1 = useGatewayNodeOutput({ runId: activeRunId, nodeId: GRILL_NODE_ID, iteration: 1 });\n const iter2 = useGatewayNodeOutput({ runId: activeRunId, nodeId: GRILL_NODE_ID, iteration: 2 });\n const iter3 = useGatewayNodeOutput({ runId: activeRunId, nodeId: GRILL_NODE_ID, iteration: 3 });\n const iter4 = useGatewayNodeOutput({ runId: activeRunId, nodeId: GRILL_NODE_ID, iteration: 4 });\n const iter5 = useGatewayNodeOutput({ runId: activeRunId, nodeId: GRILL_NODE_ID, iteration: 5 });\n const iter6 = useGatewayNodeOutput({ runId: activeRunId, nodeId: GRILL_NODE_ID, iteration: 6 });\n const iter7 = useGatewayNodeOutput({ runId: activeRunId, nodeId: GRILL_NODE_ID, iteration: 7 });\n const iterQueries = [iter0, iter1, iter2, iter3, iter4, iter5, iter6, iter7];\n\n const rows = useMemo(() => {\n const out: GrillRow[] = [];\n for (let i = 0; i < MAX_TRACKED_ITERATIONS; i += 1) {\n const row = extractRow(iterQueries[i].data, i);\n if (row) out.push(row);\n }\n return out;\n }, [iter0.data, iter1.data, iter2.data, iter3.data, iter4.data, iter5.data, iter6.data, iter7.data]);\n\n const latest = rows.length > 0 ? rows[rows.length - 1] : null;\n const totalQuestionsAsked = latest ? latest.questionsAsked : rows.length;\n const resolved = latest ? latest.resolved : false;\n const sharedUnderstanding = useMemo(() => {\n for (let i = rows.length - 1; i >= 0; i -= 1) {\n if (rows[i].sharedUnderstanding) return rows[i].sharedUnderstanding;\n }\n return null;\n }, [rows]);\n\n const runStatus =\n (isRecord(runDetail.data) ? asString(runDetail.data.status) : undefined) ?? activeRun?.status;\n const eventCount = (stream.events ?? []).length;\n const isRunning = statusClass(runStatus) === \"running\";\n const isPaused = statusClass(runStatus) === \"paused\";\n\n async function refresh() {\n await Promise.all([\n runsQuery.refetch(),\n runDetail.refetch(),\n ...iterQueries.map((q) => q.refetch()),\n ]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { prompt } });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function resume() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.resumeRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n const hasRun = Boolean(activeRunId);\n const awaitingFirst = hasRun && rows.length === 0;\n\n return (\n <main className=\"shell\" data-testid=\"grill-me-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Grill Me</h1>\n <span className=\"pill\" data-testid=\"grill-me-runid\">\n <span className=\"mono\">{hasRun ? shortRunId(activeRunId) : \"No run\"}</span>\n </span>\n {hasRun ? (\n <span className={\"badge \" + statusClass(runStatus)} data-testid=\"grill-me-status\">\n {resolved ? \"resolved\" : (runStatus ?? \"idle\")}\n </span>\n ) : null}\n <div className=\"metrics\">\n <span className=\"metric\">\n iterations <b>{rows.length}</b>\n </span>\n <span className=\"metric\">\n questions <b>{totalQuestionsAsked}</b>\n </span>\n <span className=\"metric\">\n events <b>{eventCount}</b>\n </span>\n </div>\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"grill-me-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What should we grill you on?\"\n />\n <button className=\"button\" data-testid=\"grill-me-refresh\" onClick={() => void refresh()} disabled={busy}>\n Refresh\n </button>\n <button className=\"button primary\" data-testid=\"grill-me-launch\" onClick={() => void launch()} disabled={busy}>\n Start Grilling\n </button>\n </div>\n </header>\n\n <div className=\"main\">\n <section className=\"history\" data-testid=\"grill-me-history\">\n <h2 className=\"history-head\">Conversation history</h2>\n {rows.length > 0 ? (\n rows.map((row) => (\n <article\n key={row.iteration}\n className={\"qa\" + (row.resolved ? \" resolved\" : \"\")}\n data-testid=\"grill-me-qa\"\n >\n <div className=\"qa-meta\">\n <span className=\"iter-chip\">Q{row.iteration + 1}</span>\n {row.branch ? <span className=\"branch-chip\">{row.branch}</span> : null}\n {row.resolved ? <span className=\"badge finished\">resolved</span> : null}\n </div>\n <div className=\"qa-question\">{row.question}</div>\n {row.recommendedAnswer ? (\n <div className=\"qa-hint\">\n <b>Suggested:</b> {row.recommendedAnswer}\n </div>\n ) : null}\n </article>\n ))\n ) : awaitingFirst ? (\n <div className=\"empty\" data-testid=\"grill-me-loading\">\n <span className=\"spinner\" />\n Agent is forming the first question...\n </div>\n ) : (\n <div className=\"empty\" data-testid=\"grill-me-empty\">\n <div>No active run.</div>\n <div>Launch a grill-me workflow from the Smithers CLI or dashboard.</div>\n <button className=\"button primary\" data-testid=\"grill-me-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Start Grilling\n </button>\n </div>\n )}\n </section>\n\n <aside className=\"rail\">\n <div className=\"rail-section\">\n <h2>Current question</h2>\n {latest ? (\n <div className=\"current-q\" data-testid=\"grill-me-current\">\n <div className=\"q\">{latest.question}</div>\n {latest.recommendedAnswer ? (\n <div className=\"hint\">\n <b>Recommended answer:</b> {latest.recommendedAnswer}\n </div>\n ) : (\n <div className=\"hint\">No recommended answer yet.</div>\n )}\n </div>\n ) : (\n <div className=\"empty\">Waiting for the first question...</div>\n )}\n </div>\n\n <div className=\"rail-section\">\n <h2>Shared understanding</h2>\n {sharedUnderstanding ? (\n <div className=\"understanding\" data-testid=\"grill-me-understanding\">\n {sharedUnderstanding}\n </div>\n ) : (\n <div className=\"empty\" data-testid=\"grill-me-understanding-empty\">\n Not captured yet — the agent updates this as understanding builds.\n </div>\n )}\n </div>\n\n {resolved ? (\n <div className=\"rail-section\">\n <div className=\"resolved-banner\" data-testid=\"grill-me-resolved\">\n <b>Grilling complete — shared understanding reached</b>\n <span>{sharedUnderstanding ?? \"The agent is satisfied with the requirements.\"}</span>\n </div>\n </div>\n ) : null}\n\n <div className=\"rail-section\">\n <h2>Actions</h2>\n <div className=\"actions\">\n <button\n className=\"button danger\"\n data-testid=\"grill-me-cancel\"\n onClick={() => void cancel()}\n disabled={busy || !hasRun || !isRunning}\n >\n Cancel\n </button>\n {isPaused ? (\n <button\n className=\"button primary\"\n data-testid=\"grill-me-resume\"\n onClick={() => void resume()}\n disabled={busy}\n >\n Resume\n </button>\n ) : null}\n </div>\n </div>\n\n <div className=\"rail-section\">\n <h2>Recent grills</h2>\n <div className=\"runs\">\n {grillRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"grill-me-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {grillRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </div>\n </div>\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", + "feature-enum": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smthrs/gateway-react\";\n\nconst WORKFLOW_KEY = \"feature-enum\";\n\ntype RunSummary = {\n runId: string;\n workflowKey?: string;\n status?: string;\n createdAtMs?: number;\n input?: unknown;\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asNumber(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction shortHash(hash: string | undefined | null) {\n if (!hash) return \"--\";\n return hash.length > 10 ? hash.slice(0, 10) : hash;\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\ntype FeatureGroup = { name: string; features: string[] };\ntype FeatureInventory = {\n groups: FeatureGroup[];\n totalFeatures: number;\n lastCommitHash: string | null;\n markdownBody: string;\n};\n\nfunction extractInventory(value: unknown): FeatureInventory | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : {};\n const rawGroups = isRecord(row.featureGroups) ? row.featureGroups : {};\n const groups: FeatureGroup[] = Object.keys(rawGroups).map((name) => {\n const list = rawGroups[name];\n const features = Array.isArray(list) ? list.filter((f): f is string => typeof f === \"string\") : [];\n return { name, features };\n });\n const markdownBody = asString(row.markdownBody) ?? \"\";\n const hasContent = groups.length > 0 || markdownBody.length > 0 || asNumber(row.totalFeatures) !== undefined;\n if (!hasContent) return null;\n const counted = groups.reduce((sum, g) => sum + g.features.length, 0);\n const totalFeatures = asNumber(row.totalFeatures) ?? counted;\n const lastCommitHash = asString(row.lastCommitHash) ?? null;\n return { groups, totalFeatures, lastCommitHash, markdownBody };\n}\n\nfunction refineInputCount(input: unknown): number | undefined {\n if (!isRecord(input)) return undefined;\n return asNumber(input.refineIterations);\n}\nfunction isRefiningExisting(input: unknown): boolean {\n if (!isRecord(input)) return false;\n return input.existingFeatures != null && !Array.isArray(input.existingFeatures);\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".pill .mono { font-family:ui-monospace,monospace; }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { width:64px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".search { flex:1; max-width:280px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".field { display:flex; align-items:center; gap:6px; color:var(--muted); font-size:12px; }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:260px 1fr 300px; flex:1; overflow:hidden; }\",\n \".rail { border-right:1px solid var(--border); background:var(--panel); overflow:auto; padding:16px; }\",\n \".content { padding:20px; overflow:auto; }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".section-head { font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); margin:0 0 10px; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".count-badge { font-size:11px; font-weight:700; padding:3px 9px; border-radius:999px; background:var(--primary); color:#fff; }\",\n \".meta { display:flex; flex-direction:column; gap:8px; margin-bottom:20px; }\",\n \".meta-row { display:flex; justify-content:space-between; gap:10px; font-size:12px; }\",\n \".meta-row .k { color:var(--muted); }\",\n \".meta-row .mono { font-family:ui-monospace,monospace; }\",\n \".timeline { list-style:none; margin:0; padding:0; }\",\n \".timeline li { display:flex; gap:10px; align-items:flex-start; padding:8px 0; position:relative; }\",\n \".stage-dot { flex:0 0 12px; width:12px; height:12px; border-radius:50%; margin-top:4px; border:2px solid var(--border); background:var(--bg); }\",\n \".stage-dot.done { background:var(--ok); border-color:var(--ok); }\",\n \".stage-dot.running { background:var(--warn); border-color:var(--warn); }\",\n \".stage-dot.pending { background:var(--bg); border-color:var(--border); }\",\n \".stage-name { font-size:12px; }\",\n \".stage-sub { font-size:11px; color:var(--muted); }\",\n \".inv-head { display:flex; align-items:center; gap:12px; margin-bottom:16px; }\",\n \".inv-head h2 { margin:0; font-size:13px; font-weight:600; }\",\n \".group { border:1px solid var(--border); border-radius:10px; margin-bottom:12px; overflow:hidden; background:var(--card); }\",\n \".group-head { width:100%; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:12px 14px; background:transparent; border:0; color:var(--text); cursor:pointer; text-align:left; }\",\n \".group-head:hover { background:var(--panel); }\",\n \".group-name { font-family:ui-monospace,monospace; font-size:12px; font-weight:600; letter-spacing:0.02em; }\",\n \".group-meta { display:flex; align-items:center; gap:8px; }\",\n \".chevron { color:var(--muted); font-size:11px; width:12px; display:inline-block; }\",\n \".group-count { font-size:11px; color:var(--muted); }\",\n \".feature-list { list-style:none; margin:0; padding:0 0 6px; border-top:1px solid var(--border); }\",\n \".feature-list li { padding:8px 14px 8px 28px; border-bottom:1px solid var(--border); font-size:12px; }\",\n \".feature-list li:last-child { border-bottom:0; }\",\n \".notes { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:14px 16px; }\",\n \".notes pre { margin:0; white-space:pre-wrap; word-break:break-word; font-family:ui-monospace,monospace; font-size:12px; color:var(--text); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; flex-direction:column; gap:4px; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .top { display:flex; justify-content:space-between; gap:8px; align-items:center; }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n \".run-row .sub { font-size:11px; color:var(--muted); }\",\n \".empty { color:var(--muted); text-align:center; padding:40px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".empty .hint { font-size:12px; margin-top:8px; max-width:360px; margin-left:auto; margin-right:auto; }\",\n \".progress-track { height:6px; border-radius:999px; background:var(--border); overflow:hidden; margin-top:14px; }\",\n \".progress-fill { height:100%; background:var(--primary); transition:width 0.3s ease; }\",\n].join(\"\\n\");\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\ntype StageState = \"done\" | \"running\" | \"pending\";\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [refineIterations, setRefineIterations] = useState(\"3\");\n const [query, setQuery] = useState(\"\");\n const [collapsed, setCollapsed] = useState<Record<string, boolean>>({});\n const [busy, setBusy] = useState(false);\n\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const featureRuns = useMemo(\n () =>\n ((runsQuery.data ?? []) as RunSummary[]).filter(\n (r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY,\n ),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? featureRuns[0]?.runId;\n const activeRun = featureRuns.find((r) => r.runId === activeRunId);\n\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const events = stream.events ?? [];\n const eventNames = useMemo(() => events.map((e) => e.event), [events]);\n\n const resultOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"feature-enum:result\", iteration: 0 });\n const scanOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"feature-enum:scan\", iteration: 0 });\n\n const inventory = useMemo(\n () => extractInventory(resultOutput.data) ?? extractInventory(scanOutput.data),\n [resultOutput.data, scanOutput.data],\n );\n\n const requestedRefines = refineInputCount(activeRun?.input) ?? 3;\n const refiningExisting = isRefiningExisting(activeRun?.input);\n\n // Build the Scan -> Refine N -> Result timeline. Stage completion is inferred from\n // run status plus how many task-completion events have streamed in.\n const stages = useMemo(() => {\n const labels: { id: string; name: string; sub: string }[] = [];\n if (!refiningExisting) labels.push({ id: \"feature-enum:scan\", name: \"Scan\", sub: \"Initial codebase sweep\" });\n const refineN = Math.max(1, requestedRefines);\n for (let i = 1; i <= refineN; i += 1) {\n labels.push({ id: \"feature-enum:refine:\" + i, name: \"Refine \" + i, sub: \"Add, decompose, prune\" });\n }\n labels.push({ id: \"feature-enum:result\", name: \"Result\", sub: \"Final inventory\" });\n\n const completedTasks = eventNames.filter((n) => n === \"task.finished\" || n === \"node.completed\" || n === \"task.completed\").length;\n const runStatus = activeRun?.status;\n const runDone = runStatus === \"finished\";\n const runActive = runStatus === \"running\" || runStatus === \"continued\";\n\n return labels.map((label, index): { id: string; name: string; sub: string; state: StageState } => {\n let state: StageState = \"pending\";\n if (runDone) {\n state = \"done\";\n } else if (index < completedTasks) {\n state = \"done\";\n } else if (index === completedTasks && runActive) {\n state = \"running\";\n }\n return { ...label, state };\n });\n }, [refiningExisting, requestedRefines, eventNames, activeRun?.status]);\n\n const doneStages = stages.filter((s) => s.state === \"done\").length;\n const progressPct = stages.length > 0 ? Math.round((doneStages / stages.length) * 100) : 0;\n\n const visibleGroups = useMemo(() => {\n if (!inventory) return [];\n const q = query.trim().toLowerCase();\n if (!q) return inventory.groups;\n return inventory.groups\n .map((g) => {\n const groupMatch = g.name.toLowerCase().includes(q);\n const features = groupMatch ? g.features : g.features.filter((f) => f.toLowerCase().includes(q));\n return groupMatch ? g : { name: g.name, features };\n })\n .filter((g) => g.features.length > 0 || g.name.toLowerCase().includes(q));\n }, [inventory, query]);\n\n async function refresh() {\n await Promise.all([runsQuery.refetch(), resultOutput.refetch(), scanOutput.refetch()]);\n }\n async function launch() {\n setBusy(true);\n try {\n const parsed = Number.parseInt(refineIterations, 10);\n const refines = Number.isFinite(parsed) && parsed > 0 ? parsed : 1;\n const run = await actions.launchRun({\n workflow: WORKFLOW_KEY,\n input: { refineIterations: refines },\n });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n function toggleGroup(name: string) {\n setCollapsed((prev) => ({ ...prev, [name]: !prev[name] }));\n }\n\n const running = statusClass(activeRun?.status) === \"running\";\n\n return (\n <main className=\"shell\" data-testid=\"feature-enum-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Feature Enum</h1>\n <span className=\"pill\" data-testid=\"feature-enum-runid\">\n <span className=\"mono\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n </span>\n {activeRun ? (\n <span className={\"badge \" + statusClass(activeRun.status)} data-testid=\"feature-enum-status\">\n {activeRun.status ?? \"idle\"}\n </span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"search\"\n data-testid=\"feature-enum-search\"\n value={query}\n onChange={(e) => setQuery(e.currentTarget.value)}\n placeholder=\"Filter groups or features\"\n />\n <span className=\"field\">\n refine\n <input\n className=\"prompt\"\n data-testid=\"feature-enum-refine-input\"\n value={refineIterations}\n onChange={(e) => setRefineIterations(e.currentTarget.value)}\n inputMode=\"numeric\"\n />\n </span>\n <button className=\"button\" data-testid=\"feature-enum-refresh\" onClick={() => void refresh()} disabled={busy}>\n Refresh\n </button>\n {running ? (\n <button className=\"button danger\" data-testid=\"feature-enum-cancel\" onClick={() => void cancel()} disabled={busy}>\n Cancel\n </button>\n ) : null}\n <button className=\"button primary\" data-testid=\"feature-enum-launch\" onClick={() => void launch()} disabled={busy}>\n Launch Scan\n </button>\n </div>\n </header>\n\n <div className=\"main\">\n <aside className=\"rail\" data-testid=\"feature-enum-runsummary\">\n <h3 className=\"section-head\">Run Summary</h3>\n <div className=\"meta\">\n <div className=\"meta-row\">\n <span className=\"k\">Status</span>\n <span>{activeRun?.status ?? \"no run\"}</span>\n </div>\n <div className=\"meta-row\">\n <span className=\"k\">Mode</span>\n <span>{refiningExisting ? \"refine existing\" : \"fresh scan\"}</span>\n </div>\n <div className=\"meta-row\">\n <span className=\"k\">Refine iters</span>\n <span>{Math.max(1, requestedRefines)}</span>\n </div>\n <div className=\"meta-row\">\n <span className=\"k\">Commit</span>\n <span className=\"mono\">{shortHash(inventory?.lastCommitHash)}</span>\n </div>\n <div className=\"meta-row\">\n <span className=\"k\">Events</span>\n <span>{events.length}</span>\n </div>\n </div>\n\n <h3 className=\"section-head\">Progress Timeline</h3>\n <ul className=\"timeline\" data-testid=\"feature-enum-timeline\">\n {stages.map((stage) => (\n <li key={stage.id}>\n <span className={\"stage-dot \" + stage.state} />\n <span>\n <div className=\"stage-name\">{stage.name}</div>\n <div className=\"stage-sub\">{stage.state === \"running\" ? \"running…\" : stage.state === \"done\" ? \"done\" : stage.sub}</div>\n </span>\n </li>\n ))}\n </ul>\n <div className=\"progress-track\">\n <div className=\"progress-fill\" style={{ width: progressPct + \"%\" }} />\n </div>\n </aside>\n\n <div className=\"content\">\n {inventory && inventory.groups.length > 0 ? (\n <>\n <div className=\"inv-head\">\n <h2>Feature Inventory</h2>\n <span className=\"count-badge\" data-testid=\"feature-enum-total\">{inventory.totalFeatures} features</span>\n <span className=\"group-count\">{inventory.groups.length} groups · {shortHash(inventory.lastCommitHash)}</span>\n </div>\n <div data-testid=\"feature-enum-inventory\">\n {visibleGroups.map((group) => {\n const isCollapsed = Boolean(collapsed[group.name]);\n return (\n <div className=\"group\" key={group.name}>\n <button className=\"group-head\" onClick={() => toggleGroup(group.name)}>\n <span>\n <span className=\"chevron\">{isCollapsed ? \"▶\" : \"▼\"}</span>\n <span className=\"group-name\">{group.name}</span>\n </span>\n <span className=\"group-meta\">\n <span className=\"group-count\">{group.features.length}</span>\n </span>\n </button>\n {!isCollapsed ? (\n <ul className=\"feature-list\">\n {group.features.map((feature, i) => (\n <li key={group.name + \":\" + i}>{feature}</li>\n ))}\n {group.features.length === 0 ? <li>No features in this group.</li> : null}\n </ul>\n ) : null}\n </div>\n );\n })}\n {visibleGroups.length === 0 ? (\n <div className=\"empty\">No groups match \"{query}\".</div>\n ) : null}\n </div>\n </>\n ) : (\n <div className=\"empty\" data-testid=\"feature-enum-inventory-empty\">\n <div>\n {activeRunId\n ? running\n ? \"Scanning codebase…\"\n : \"No feature inventory in this run yet.\"\n : \"No feature inventory yet.\"}\n </div>\n <div className=\"hint\">\n Create or refine a feature inventory. Set a refine iteration count and click Launch Scan to enumerate\n features grouped by domain.\n </div>\n <button className=\"button primary\" data-testid=\"feature-enum-launch-empty\" onClick={() => void launch()} disabled={busy}>\n Launch Scan\n </button>\n </div>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div style={{ padding: \"16px 16px 0\" }}>\n <h3 className=\"section-head\">Scan Notes</h3>\n </div>\n <div style={{ padding: \"0 16px 16px\" }} data-testid=\"feature-enum-notes\">\n {inventory && inventory.markdownBody ? (\n <div className=\"notes\">\n <pre>{inventory.markdownBody}</pre>\n </div>\n ) : (\n <div className=\"empty\" style={{ padding: \"20px 0\" }}>No scan notes yet.</div>\n )}\n </div>\n\n <div className=\"section-head\" style={{ padding: \"0 16px\", marginBottom: 0 }}>Refine History</div>\n <div data-testid=\"feature-enum-history\">\n {featureRuns.map((r) => {\n const count = refineInputCount(r.input);\n return (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"feature-enum-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"top\">\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </span>\n <span className=\"sub\">\n {isRefiningExisting(r.input) ? \"refine existing\" : \"fresh\"}\n {count !== undefined ? \" · \" + count + \" iters\" : \"\"}\n </span>\n </button>\n );\n })}\n {featureRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </div>\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", + "audit": "/** @jsxImportSource react */\nimport { useEffect, useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRun,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smthrs/gateway-react\";\n\nconst WORKFLOW_KEY = \"audit\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asNumber(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\nfunction asStringArray(value: unknown): string[] {\n return Array.isArray(value) ? value.filter((v): v is string => typeof v === \"string\") : [];\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\n// Mirror of ForEachFeature's slugify so we can reconstruct dynamic group node ids\n// purely from the run input (features record) without depending on event internals.\nfunction slugifyFeatureToken(value: string) {\n const normalized = value\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n return normalized.length > 0 ? normalized : \"item\";\n}\n\ntype FeatureGroup = { index: number; groupName: string; features: string[]; nodeId: string };\n\nfunction deriveGroups(runData: unknown): FeatureGroup[] {\n const run = isRecord(runData) ? runData : {};\n const input = isRecord(run.input) ? run.input : isRecord(run.inputs) ? run.inputs : {};\n const features = isRecord(input.features) ? input.features : {};\n const entries = Object.entries(features).filter(\n ([, groupFeatures]) => Array.isArray(groupFeatures) && groupFeatures.length > 0,\n );\n return entries.map(([groupName, groupFeatures], index) => ({\n index,\n groupName,\n features: asStringArray(groupFeatures),\n nodeId: \"audit:group:\" + slugifyFeatureToken(groupName) + \":\" + index,\n }));\n}\n\nfunction deriveFocus(runData: unknown): string | undefined {\n const run = isRecord(runData) ? runData : {};\n const input = isRecord(run.input) ? run.input : isRecord(run.inputs) ? run.inputs : {};\n return asString(input.focus);\n}\n\ntype GroupResult = {\n groupName?: string;\n result?: string;\n featuresCovered: string[];\n score?: number;\n};\nfunction extractGroupResult(value: unknown): GroupResult | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : {};\n if (Object.keys(row).length === 0) return null;\n const groupName = asString(row.groupName);\n const result = asString(row.result);\n if (groupName === undefined && result === undefined) return null;\n return {\n groupName,\n result,\n featuresCovered: asStringArray(row.featuresCovered),\n score: asNumber(row.score),\n };\n}\n\ntype MergeResult = {\n totalGroups?: number;\n summary?: string;\n mergedResult?: string;\n markdownBody?: string;\n};\nfunction extractMerge(value: unknown): MergeResult | null {\n const response = isRecord(value) ? value : {};\n const row = isRecord(response.row) ? response.row : isRecord(response) ? response : {};\n const summary = asString(row.summary);\n const markdownBody = asString(row.markdownBody);\n if (summary === undefined && markdownBody === undefined) return null;\n return {\n totalGroups: asNumber(row.totalGroups),\n summary,\n mergedResult: asString(row.mergedResult),\n markdownBody,\n };\n}\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nfunction scoreClass(score: number | undefined) {\n if (score === undefined) return \"\";\n if (score >= 80) return \"ok\";\n if (score >= 50) return \"warn\";\n return \"err\";\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; flex-wrap:wrap; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".pill.focus { color:var(--primary); }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:360px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".phases { display:flex; align-items:center; gap:8px; padding:10px 20px; border-bottom:1px solid var(--border); background:var(--panel); font-size:11px; }\",\n \".phase { display:flex; align-items:center; gap:6px; color:var(--muted); }\",\n \".phase .dot { width:8px; height:8px; border-radius:50%; background:var(--border); }\",\n \".phase.active { color:var(--text); }\",\n \".phase.active .dot { background:var(--primary); }\",\n \".phase.done .dot { background:var(--ok); }\",\n \".phase-sep { flex:0 0 28px; height:1px; background:var(--border); }\",\n \".progress { flex:1; max-width:200px; height:6px; border-radius:3px; background:var(--card); overflow:hidden; }\",\n \".progress > span { display:block; height:100%; background:var(--primary); }\",\n \".main { display:grid; grid-template-columns:260px 1fr; flex:1; overflow:hidden; }\",\n \".sidebar { border-right:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); display:flex; justify-content:space-between; }\",\n \".group-row { width:100%; text-align:left; padding:11px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; flex-direction:column; gap:5px; }\",\n \".group-row:hover { background:var(--card); }\",\n \".group-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".group-row .name { font-weight:600; display:flex; align-items:center; gap:7px; }\",\n \".group-row .meta { font-size:11px; color:var(--muted); display:flex; justify-content:space-between; gap:8px; }\",\n \".sdot { width:8px; height:8px; border-radius:50%; flex:0 0 8px; background:var(--border); }\",\n \".sdot.running { background:var(--warn); }\",\n \".sdot.done { background:var(--ok); }\",\n \".score { font-family:ui-monospace,monospace; font-weight:600; }\",\n \".score.ok { color:var(--ok); }\",\n \".score.warn { color:var(--warn); }\",\n \".score.err { color:var(--err); }\",\n \".content { padding:20px; overflow:auto; }\",\n \".tabs { display:flex; gap:6px; margin-bottom:18px; }\",\n \".tab { height:28px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--muted); cursor:pointer; }\",\n \".tab.active { background:var(--card); color:var(--text); border-color:var(--primary); }\",\n \".card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:18px 20px; margin-bottom:18px; }\",\n \".card h2 { margin:0 0 6px; font-size:12px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".detail-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:10px; }\",\n \".detail-head h2 { margin:0; font-size:16px; text-transform:none; letter-spacing:0; color:var(--text); }\",\n \".chips { display:flex; flex-wrap:wrap; gap:6px; margin:8px 0 0; }\",\n \".chip { font-size:11px; color:var(--muted); background:var(--panel); border:1px solid var(--border); border-radius:5px; padding:3px 8px; }\",\n \".findings { white-space:pre-wrap; font-size:13px; line-height:1.6; margin:0; }\",\n \".report-body { white-space:pre-wrap; font-family:ui-monospace,monospace; font-size:12px; line-height:1.6; margin:0; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".meta-row { display:flex; gap:16px; color:var(--muted); font-size:12px; margin-top:6px; }\",\n].join(\"\\n\");\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [selectedGroupIdx, setSelectedGroupIdx] = useState<number | undefined>(undefined);\n const [tab, setTab] = useState<\"group\" | \"report\">(\"group\");\n const [prompt, setPrompt] = useState(\"code review\");\n const [busy, setBusy] = useState(false);\n const [copied, setCopied] = useState(false);\n\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const auditRuns = useMemo(\n () => ((runsQuery.data ?? []) as RunSummary[]).filter((r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? auditRuns[0]?.runId;\n const activeRun = auditRuns.find((r) => r.runId === activeRunId);\n\n const runQuery = useGatewayRun(activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const mergeOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"audit:merge\", iteration: 0 });\n\n const groups = useMemo(() => deriveGroups(runQuery.data), [runQuery.data]);\n const focus = deriveFocus(runQuery.data);\n const merge = useMemo(() => extractMerge(mergeOutput.data), [mergeOutput.data]);\n const events = stream.events ?? [];\n const eventCount = events.length;\n const mergeStarted = events.some(\n (e) => isRecord(e.payload) && typeof e.payload.event === \"string\" && /merge/.test(JSON.stringify(e.payload)),\n ) || merge !== null;\n\n const activeGroupId = selectedGroupIdx !== undefined ? selectedGroupIdx : groups[0]?.index;\n const activeGroup = groups.find((g) => g.index === activeGroupId);\n\n // When the merge finishes, surface the consolidated report automatically.\n useEffect(() => {\n if (merge) setTab(\"report\");\n }, [merge !== null]);\n\n async function refresh() {\n await Promise.all([runsQuery.refetch(), runQuery.refetch?.(), mergeOutput.refetch()]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input: { focus: prompt } });\n setSelectedRunId(run.runId);\n setSelectedGroupIdx(undefined);\n setTab(\"group\");\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function copyReport() {\n const text = merge?.markdownBody ?? merge?.mergedResult ?? merge?.summary ?? \"\";\n try {\n if (typeof navigator !== \"undefined\" && navigator.clipboard) {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n }\n } catch {\n /* clipboard unavailable */\n }\n }\n\n const groupCount = groups.length;\n const parallelDone = merge !== null;\n const parallelActive = !parallelDone && groupCount > 0 && statusClass(activeRun?.status) === \"running\";\n\n return (\n <main className=\"shell\" data-testid=\"audit-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Audit</h1>\n <span className=\"pill\" data-testid=\"audit-runid\">{activeRunId ? shortRunId(activeRunId) : \"No run\"}</span>\n {focus ? <span className=\"pill focus\" data-testid=\"audit-focus\">focus: {focus}</span> : null}\n <span className=\"pill\" data-testid=\"audit-groupcount\">{groupCount} groups</span>\n {activeRun ? (\n <span className={\"badge \" + statusClass(activeRun.status)} data-testid=\"audit-status\">{activeRun.status ?? \"idle\"}</span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"audit-focus-input\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"Audit focus (e.g. code review)\"\n />\n <button className=\"button\" data-testid=\"audit-refresh\" onClick={() => void refresh()} disabled={busy}>Refresh</button>\n {activeRun && statusClass(activeRun.status) === \"running\" ? (\n <button className=\"button danger\" data-testid=\"audit-cancel\" onClick={() => void cancel()} disabled={busy}>Cancel</button>\n ) : null}\n <button className=\"button primary\" data-testid=\"audit-launch\" onClick={() => void launch()} disabled={busy}>Start Audit</button>\n </div>\n </header>\n\n <div className=\"phases\" data-testid=\"audit-timeline\">\n <div className={\"phase \" + (parallelDone ? \"done\" : parallelActive ? \"active\" : \"\")}>\n <span className=\"dot\" />\n <span>Parallel audit ({groupCount} groups)</span>\n </div>\n <div className=\"progress\"><span style={{ width: parallelDone ? \"100%\" : parallelActive ? \"55%\" : \"0%\" }} /></div>\n <div className=\"phase-sep\" />\n <div className={\"phase \" + (parallelDone ? (statusClass(activeRun?.status) === \"finished\" ? \"done\" : \"active\") : \"\")}>\n <span className=\"dot\" />\n <span>Merge & synthesize</span>\n </div>\n <div className=\"phase\" style={{ marginLeft: \"auto\" }}>\n <span>{eventCount} events</span>\n {stream.streaming ? <span>· live</span> : null}\n </div>\n </div>\n\n <div className=\"main\">\n <aside className=\"sidebar\">\n <div className=\"side-head\"><span>Feature groups</span><span>{groupCount}</span></div>\n {groups.map((g) => (\n <GroupRow\n key={g.nodeId}\n group={g}\n runId={activeRunId}\n active={g.index === activeGroupId && tab === \"group\"}\n onSelect={() => {\n setSelectedGroupIdx(g.index);\n setTab(\"group\");\n }}\n />\n ))}\n {groupCount === 0 ? <div className=\"empty\" style={{ padding: \"28px 16px\" }}>No feature groups yet.</div> : null}\n </aside>\n\n <div className=\"content\">\n <div className=\"tabs\">\n <button className={\"tab\" + (tab === \"group\" ? \" active\" : \"\")} data-testid=\"audit-tab-group\" onClick={() => setTab(\"group\")}>\n Group findings\n </button>\n <button className={\"tab\" + (tab === \"report\" ? \" active\" : \"\")} data-testid=\"audit-tab-report\" onClick={() => setTab(\"report\")}>\n Consolidated report\n </button>\n </div>\n\n {tab === \"group\" ? (\n <section data-testid=\"audit-group-detail\">\n {activeGroup ? (\n <GroupDetail group={activeGroup} runId={activeRunId} />\n ) : (\n <div className=\"empty\" data-testid=\"audit-group-empty\">\n <div>{activeRunId ? \"No feature groups in this run.\" : \"No audit run selected.\"}</div>\n {!activeRunId ? (\n <button className=\"button primary\" onClick={() => void launch()} disabled={busy}>Start Audit</button>\n ) : null}\n </div>\n )}\n </section>\n ) : (\n <section data-testid=\"audit-report\">\n {merge ? (\n <>\n <div className=\"card\">\n <div className=\"detail-head\">\n <h2>Consolidated audit report</h2>\n <button className=\"button\" data-testid=\"audit-copy\" onClick={() => void copyReport()}>\n {copied ? \"Copied\" : \"Copy\"}\n </button>\n </div>\n <div data-testid=\"audit-report-summary\">{merge.summary ?? \"(no summary)\"}</div>\n <div className=\"meta-row\">\n <span>{merge.totalGroups ?? groupCount} groups audited</span>\n </div>\n </div>\n <div className=\"card\">\n <h2>Report body</h2>\n <pre className=\"report-body\" data-testid=\"audit-report-body\">{merge.markdownBody ?? merge.mergedResult ?? \"\"}</pre>\n </div>\n </>\n ) : (\n <div className=\"empty\" data-testid=\"audit-report-empty\">\n <div>{mergeStarted ? \"Synthesizing consolidated report…\" : \"The consolidated report appears once all groups are audited and merged.\"}</div>\n </div>\n )}\n </section>\n )}\n </div>\n </div>\n </main>\n );\n}\n\nfunction GroupRow(props: {\n group: FeatureGroup;\n runId: string | undefined;\n active: boolean;\n onSelect: () => void;\n}) {\n const out = useGatewayNodeOutput({ runId: props.runId, nodeId: props.group.nodeId, iteration: 0 });\n const result = extractGroupResult(out.data);\n const done = result !== null;\n return (\n <button\n className={\"group-row\" + (props.active ? \" active\" : \"\")}\n data-testid={\"audit-group-\" + props.group.nodeId}\n onClick={props.onSelect}\n >\n <span className=\"name\">\n <span className={\"sdot \" + (done ? \"done\" : \"\")} />\n {props.group.groupName}\n </span>\n <span className=\"meta\">\n <span>{(result?.featuresCovered.length ?? props.group.features.length)} features</span>\n {result?.score !== undefined ? (\n <span className={\"score \" + scoreClass(result.score)}>{result.score}</span>\n ) : (\n <span>{done ? \"done\" : \"pending\"}</span>\n )}\n </span>\n </button>\n );\n}\n\nfunction GroupDetail(props: { group: FeatureGroup; runId: string | undefined }) {\n const out = useGatewayNodeOutput({ runId: props.runId, nodeId: props.group.nodeId, iteration: 0 });\n const result = extractGroupResult(out.data);\n const features = result?.featuresCovered.length ? result.featuresCovered : props.group.features;\n return (\n <div className=\"card\" data-testid=\"audit-group-card\">\n <div className=\"detail-head\">\n <h2 data-testid=\"audit-group-name\">{result?.groupName ?? props.group.groupName}</h2>\n {result?.score !== undefined ? (\n <span className={\"score \" + scoreClass(result.score)} style={{ fontSize: 18 }} data-testid=\"audit-group-score\">{result.score}</span>\n ) : (\n <span className=\"badge\">{result ? \"done\" : \"pending\"}</span>\n )}\n </div>\n <div className=\"chips\" data-testid=\"audit-group-features\">\n {features.length > 0 ? (\n features.map((f, i) => <span className=\"chip\" key={i}>{f}</span>)\n ) : (\n <span className=\"chip\">no features listed</span>\n )}\n </div>\n {result?.result ? (\n <pre className=\"findings\" style={{ marginTop: 14 }} data-testid=\"audit-group-findings\">{result.result}</pre>\n ) : (\n <div className=\"empty\" style={{ padding: \"32px 8px\" }}>\n {props.runId ? \"Waiting for this group's audit findings…\" : \"No run selected.\"}\n </div>\n )}\n </div>\n );\n}\n\ncreateGatewayReactRoot(<App />);", + "mission": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayApprovals,\n useGatewayNodeOutput,\n useGatewayRun,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smthrs/gateway-react\";\n\nconst WORKFLOW_KEY = \"mission\";\nconst MAX_MILESTONES = 6;\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\ntype ApprovalSummary = {\n runId: string;\n nodeId: string;\n iteration: number;\n requestTitle?: string;\n requestSummary?: string;\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction asArray(value: unknown): unknown[] {\n return Array.isArray(value) ? value : [];\n}\nfunction asStringArray(value: unknown): string[] {\n return asArray(value).filter((v): v is string => typeof v === \"string\");\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\n\n// Every node output is delivered under value.data.row; this UI receives value already\n// being the hook's .data, so unwrap a possible .row wrapper here.\nfunction unwrapRow(value: unknown): Record<string, unknown> | null {\n if (!isRecord(value)) return null;\n if (isRecord(value.row)) return value.row;\n return value;\n}\n\ntype Milestone = { id: string; title: string; objective: string; featureCount: number };\ntype MissionPlan = {\n goal: string;\n summary: string;\n milestones: Milestone[];\n assumptions: string[];\n risks: string[];\n outOfScope: string[];\n};\nfunction extractPlan(value: unknown): MissionPlan | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const milestones = asArray(row.milestones).map((m, i) => {\n const rec = isRecord(m) ? m : {};\n return {\n id: asString(rec.id) ?? \"milestone-\" + (i + 1),\n title: asString(rec.title) ?? \"Milestone \" + (i + 1),\n objective: asString(rec.objective) ?? \"\",\n featureCount: asArray(rec.features).length,\n };\n });\n return {\n goal: asString(row.goal) ?? \"\",\n summary,\n milestones,\n assumptions: asStringArray(row.assumptions),\n risks: asStringArray(row.risks),\n outOfScope: asStringArray(row.outOfScope),\n };\n}\n\ntype MissionApproval = { approved: boolean; note: string | null; decidedBy: string | null };\nfunction extractApproval(value: unknown): MissionApproval | null {\n const row = unwrapRow(value);\n if (!row || typeof row.approved !== \"boolean\") return null;\n return {\n approved: row.approved,\n note: asString(row.note) ?? null,\n decidedBy: asString(row.decidedBy) ?? null,\n };\n}\n\ntype Integration = {\n status: string;\n summary: string;\n mergedBranches: string[];\n conflictedBranches: string[];\n filesChanged: string[];\n};\nfunction extractIntegration(value: unknown): Integration | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n return {\n status: asString(row.status) ?? \"integrated\",\n summary,\n mergedBranches: asStringArray(row.mergedBranches),\n conflictedBranches: asStringArray(row.conflictedBranches),\n filesChanged: asStringArray(row.filesChanged),\n };\n}\n\ntype ValidationCheck = { name: string; status: string; details: string | null };\ntype Validation = {\n passed: boolean;\n summary: string;\n checks: ValidationCheck[];\n regressions: string[];\n followUps: string[];\n};\nfunction extractValidation(value: unknown): Validation | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const checks = asArray(row.checks).map((c) => {\n const rec = isRecord(c) ? c : {};\n return {\n name: asString(rec.name) ?? \"check\",\n status: asString(rec.status) ?? \"skipped\",\n details: asString(rec.details) ?? null,\n };\n });\n return {\n passed: row.passed !== false,\n summary,\n checks,\n regressions: asStringArray(row.regressions),\n followUps: asStringArray(row.followUps),\n };\n}\n\ntype MissionFinal = {\n status: string;\n summary: string;\n completedMilestones: number;\n totalMilestones: number;\n validationPassed: boolean;\n remainingRisks: string[];\n nextActions: string[];\n markdownBody: string;\n};\nfunction extractFinal(value: unknown): MissionFinal | null {\n const row = unwrapRow(value);\n if (!row) return null;\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n return {\n status: asString(row.status) ?? \"completed\",\n summary,\n completedMilestones: typeof row.completedMilestones === \"number\" ? row.completedMilestones : 0,\n totalMilestones: typeof row.totalMilestones === \"number\" ? row.totalMilestones : 0,\n validationPassed: row.validationPassed !== false,\n remainingRisks: asStringArray(row.remainingRisks),\n nextActions: asStringArray(row.nextActions),\n markdownBody: asString(row.markdownBody) ?? \"\",\n };\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input,textarea { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); }\",\n \".pill .mono { font-family:ui-monospace,monospace; }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; flex-wrap:wrap; }\",\n \".prompt { flex:1; min-width:200px; max-width:420px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.ok { background:var(--ok); color:#04210f; border-color:var(--ok); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".main { display:grid; grid-template-columns:1.4fr 1fr 240px; flex:1; overflow:hidden; }\",\n \"@media (max-width:1000px) { .main { grid-template-columns:1fr; overflow:auto; } .sidebar { border-left:0; border-top:1px solid var(--border); } }\",\n \".col { padding:18px 20px; overflow:auto; }\",\n \".col.left { }\",\n \".col.mid { border-left:1px solid var(--border); }\",\n \".section-head { margin:0 0 10px; font-size:11px; text-transform:uppercase; letter-spacing:0.05em; color:var(--muted); }\",\n \".card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px 18px; margin-bottom:16px; }\",\n \".card h3 { margin:0 0 6px; font-size:14px; }\",\n \".goal { font-size:15px; font-weight:600; margin-bottom:8px; }\",\n \".muted { color:var(--muted); }\",\n \".chips { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }\",\n \".chip { font-size:11px; padding:3px 8px; border-radius:999px; background:var(--panel); border:1px solid var(--border); color:var(--muted); }\",\n \".list { list-style:none; margin:8px 0 0; padding:0; }\",\n \".list li { padding:4px 0; border-bottom:1px solid var(--border); }\",\n \".list li:last-child { border-bottom:0; }\",\n \".approval { border-color:var(--warn); }\",\n \".approval-actions { display:flex; gap:8px; margin-top:12px; }\",\n \".note-input { width:100%; height:30px; padding:0 10px; margin-top:8px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".timeline { list-style:none; margin:0; padding:0; }\",\n \".ms-row { display:flex; gap:12px; padding:12px 0; border-bottom:1px solid var(--border); align-items:flex-start; }\",\n \".ms-row:last-child { border-bottom:0; }\",\n \".ms-dot { flex:0 0 26px; height:26px; border-radius:50%; background:var(--panel); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--muted); }\",\n \".ms-dot.active { border-color:var(--warn); color:var(--warn); }\",\n \".ms-dot.done { border-color:var(--ok); color:var(--ok); }\",\n \".ms-body { flex:1; min-width:0; }\",\n \".ms-title { font-weight:600; }\",\n \".ms-meta { font-size:11px; color:var(--muted); margin-top:2px; }\",\n \".feature-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:8px; }\",\n \"@media (max-width:560px) { .feature-grid { grid-template-columns:1fr; } }\",\n \".feature { background:var(--panel); border:1px solid var(--border); border-radius:8px; padding:10px 12px; }\",\n \".feature .ftitle { font-weight:600; font-size:12px; }\",\n \".check { display:flex; gap:8px; padding:5px 0; align-items:baseline; }\",\n \".check .cstatus { font-size:11px; font-weight:600; }\",\n \".cstatus.passed { color:var(--ok); }\",\n \".cstatus.failed { color:var(--err); }\",\n \".cstatus.skipped { color:var(--muted); }\",\n \".empty { color:var(--muted); text-align:center; padding:40px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".launch-form { max-width:520px; margin:24px auto; }\",\n \".launch-form textarea { width:100%; min-height:90px; padding:10px; border:1px solid var(--border); border-radius:8px; background:var(--panel); color:var(--text); resize:vertical; }\",\n \".field { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:8px 0; border-bottom:1px solid var(--border); }\",\n \".field label { color:var(--muted); }\",\n \".field input[type=number] { width:64px; height:28px; padding:0 8px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".sidebar { border-left:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; align-items:center; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n \".report pre { white-space:pre-wrap; word-break:break-word; background:var(--panel); border:1px solid var(--border); border-radius:8px; padding:12px; font-size:12px; }\",\n \".final-stats { display:flex; gap:16px; margin:8px 0; }\",\n \".final-stats .stat { font-size:20px; font-weight:700; }\",\n \".final-stats .stat small { display:block; font-size:10px; font-weight:500; color:var(--muted); text-transform:uppercase; }\",\n].join(\"\\n\");\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nfunction MilestoneDetail(props: { runId: string | undefined; index: number; milestone: Milestone }) {\n const { runId, index, milestone } = props;\n const integrate = useGatewayNodeOutput({\n runId,\n nodeId: \"mission:milestone:\" + (index + 1) + \":integrate\",\n iteration: 0,\n });\n const validate = useGatewayNodeOutput({\n runId,\n nodeId: \"mission:milestone:\" + (index + 1) + \":validate\",\n iteration: 0,\n });\n const integration = useMemo(() => extractIntegration(integrate.data), [integrate.data]);\n const validation = useMemo(() => extractValidation(validate.data), [validate.data]);\n\n return (\n <div className=\"card\" data-testid=\"mission-active-milestone\">\n <h3>{milestone.title}</h3>\n <div className=\"muted\">{milestone.objective}</div>\n\n <div style={{ marginTop: 12 }}>\n <p className=\"section-head\">Integration</p>\n {integration ? (\n <div className=\"feature\">\n <div className=\"ftitle\">{integration.status}</div>\n <div className=\"muted\">{integration.summary}</div>\n {integration.mergedBranches.length > 0 ? (\n <div className=\"chips\">\n {integration.mergedBranches.map((b, i) => (\n <span className=\"chip\" key={i}>{b}</span>\n ))}\n </div>\n ) : null}\n {integration.conflictedBranches.length > 0 ? (\n <div className=\"chips\">\n {integration.conflictedBranches.map((b, i) => (\n <span className=\"chip\" key={i} style={{ color: \"var(--err)\" }}>{b}</span>\n ))}\n </div>\n ) : null}\n {integration.filesChanged.length === 0 ? (\n <div className=\"muted\" style={{ marginTop: 6 }}>No files changed.</div>\n ) : null}\n </div>\n ) : (\n <div className=\"muted\">Awaiting integration.</div>\n )}\n </div>\n\n <div style={{ marginTop: 12 }}>\n <p className=\"section-head\">Validation</p>\n {validation ? (\n <div className=\"feature\" data-testid=\"mission-validation\">\n <div className=\"ftitle\">\n <span className={\"cstatus \" + (validation.passed ? \"passed\" : \"failed\")}>\n {validation.passed ? \"PASSED\" : \"FAILED\"}\n </span>{\" \"}\n {validation.summary}\n </div>\n {validation.checks.length > 0 ? (\n <div style={{ marginTop: 6 }}>\n {validation.checks.map((c, i) => (\n <div className=\"check\" key={i}>\n <span className={\"cstatus \" + c.status}>{c.status}</span>\n <span>{c.name}{c.details ? \" — \" + c.details : \"\"}</span>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"muted\" style={{ marginTop: 6 }}>No individual checks reported.</div>\n )}\n {validation.followUps.length > 0 ? (\n <ul className=\"list\">\n {validation.followUps.map((f, i) => (\n <li key={i}>Follow-up: {f}</li>\n ))}\n </ul>\n ) : null}\n </div>\n ) : (\n <div className=\"muted\">Awaiting validation.</div>\n )}\n </div>\n </div>\n );\n}\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [prompt, setPrompt] = useState(\"Describe the mission goal.\");\n const [requireApproval, setRequireApproval] = useState(true);\n const [maxMilestones, setMaxMilestones] = useState(6);\n const [maxConcurrency, setMaxConcurrency] = useState(3);\n const [note, setNote] = useState(\"\");\n const [busy, setBusy] = useState(false);\n\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const missionRuns = useMemo(\n () =>\n ((runsQuery.data ?? []) as RunSummary[]).filter(\n (r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY,\n ),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? missionRuns[0]?.runId;\n const activeRun = missionRuns.find((r) => r.runId === activeRunId);\n\n const runDetail = useGatewayRun(activeRunId);\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const approvalsQuery = useGatewayApprovals(\n activeRunId ? { filter: { runId: activeRunId } } : {},\n );\n\n const planOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"mission:plan\", iteration: 0 });\n const approvalOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"mission:approve-plan\", iteration: 0 });\n const finalOutput = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"mission:final\", iteration: 0 });\n\n const plan = useMemo(() => extractPlan(planOutput.data), [planOutput.data]);\n const approval = useMemo(() => extractApproval(approvalOutput.data), [approvalOutput.data]);\n const final = useMemo(() => extractFinal(finalOutput.data), [finalOutput.data]);\n\n const pendingApproval = useMemo(() => {\n const list = (approvalsQuery.data ?? []) as ApprovalSummary[];\n return list.find((a) => a.runId === activeRunId && a.nodeId === \"mission:approve-plan\");\n }, [approvalsQuery.data, activeRunId]);\n\n const runStatus = (runDetail.data as RunSummary | undefined)?.status ?? activeRun?.status;\n const eventCount = (stream.events ?? []).length;\n\n // Determine which milestone is active from completed validate events.\n const activeIndex = useMemo(() => {\n const events = stream.events ?? [];\n let highestPassed = -1;\n for (const ev of events) {\n const rec: Record<string, unknown> = isRecord(ev) ? ev : {};\n const nodeId = asString(rec.nodeId) ?? \"\";\n const match = nodeId.match(/^mission:milestone:(\\d+):(validate|revalidate)$/);\n if (match && (asString(rec.type) ?? \"\").includes(\"complete\")) {\n const idx = Number(match[1]) - 1;\n if (idx > highestPassed) highestPassed = idx;\n }\n }\n return highestPassed + 1;\n }, [stream.events]);\n\n async function refresh() {\n await Promise.all([\n runsQuery.refetch(),\n runDetail.refetch(),\n planOutput.refetch(),\n approvalOutput.refetch(),\n finalOutput.refetch(),\n approvalsQuery.refetch(),\n ]);\n }\n async function launch() {\n setBusy(true);\n try {\n const run = await actions.launchRun({\n workflow: WORKFLOW_KEY,\n input: {\n prompt,\n requirePlanApproval: requireApproval,\n maxMilestones,\n maxConcurrency,\n },\n });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function decide(approved: boolean) {\n if (!pendingApproval) return;\n setBusy(true);\n try {\n await actions.submitApproval({\n runId: pendingApproval.runId,\n nodeId: pendingApproval.nodeId,\n iteration: pendingApproval.iteration,\n decision: { approved, note: note || undefined },\n });\n setNote(\"\");\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n const hasAnyRun = Boolean(activeRunId);\n const timelineMilestones = plan?.milestones ?? [];\n\n return (\n <main className=\"shell\" data-testid=\"mission-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Mission</h1>\n <span className=\"pill\" data-testid=\"mission-runid\">\n <span className=\"mono\">{hasAnyRun ? shortRunId(activeRunId) : \"No run\"}</span>\n </span>\n {hasAnyRun ? (\n <span className={\"badge \" + statusClass(runStatus)} data-testid=\"mission-status\">\n {runStatus ?? \"idle\"}\n </span>\n ) : null}\n {hasAnyRun ? <span className=\"pill\">{eventCount} events</span> : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"prompt\"\n data-testid=\"mission-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"What is the mission?\"\n />\n <button className=\"button\" data-testid=\"mission-refresh\" onClick={() => void refresh()} disabled={busy}>\n Refresh\n </button>\n {statusClass(runStatus) === \"running\" ? (\n <button className=\"button danger\" data-testid=\"mission-cancel\" onClick={() => void cancel()} disabled={busy}>\n Cancel\n </button>\n ) : null}\n <button className=\"button primary\" data-testid=\"mission-launch\" onClick={() => void launch()} disabled={busy}>\n Launch Mission\n </button>\n </div>\n </header>\n\n <div className=\"main\">\n <div className=\"col left\">\n {!hasAnyRun ? (\n <div className=\"launch-form\" data-testid=\"mission-empty\">\n <p className=\"section-head\">Launch a mission</p>\n <textarea\n data-testid=\"mission-launch-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"Describe the mission goal.\"\n />\n <div className=\"field\">\n <label htmlFor=\"m-approval\">Require plan approval</label>\n <input\n id=\"m-approval\"\n type=\"checkbox\"\n checked={requireApproval}\n onChange={(e) => setRequireApproval(e.currentTarget.checked)}\n />\n </div>\n <div className=\"field\">\n <label htmlFor=\"m-milestones\">Max milestones</label>\n <input\n id=\"m-milestones\"\n type=\"number\"\n min={1}\n max={MAX_MILESTONES * 3}\n value={maxMilestones}\n onChange={(e) => setMaxMilestones(Number(e.currentTarget.value) || 1)}\n />\n </div>\n <div className=\"field\">\n <label htmlFor=\"m-concurrency\">Max concurrency</label>\n <input\n id=\"m-concurrency\"\n type=\"number\"\n min={1}\n max={10}\n value={maxConcurrency}\n onChange={(e) => setMaxConcurrency(Number(e.currentTarget.value) || 1)}\n />\n </div>\n <button\n className=\"button primary\"\n data-testid=\"mission-launch-empty\"\n onClick={() => void launch()}\n disabled={busy}\n style={{ marginTop: 14 }}\n >\n Launch Mission\n </button>\n </div>\n ) : (\n <div data-testid=\"mission-plan-panel\">\n <p className=\"section-head\">Mission plan</p>\n {plan ? (\n <div className=\"card\">\n <div className=\"goal\" data-testid=\"mission-goal\">{plan.goal || \"Mission goal\"}</div>\n <div className=\"muted\" data-testid=\"mission-summary\">{plan.summary}</div>\n {plan.assumptions.length > 0 ? (\n <>\n <p className=\"section-head\" style={{ marginTop: 12 }}>Assumptions</p>\n <ul className=\"list\">\n {plan.assumptions.map((a, i) => <li key={i}>{a}</li>)}\n </ul>\n </>\n ) : null}\n {plan.risks.length > 0 ? (\n <>\n <p className=\"section-head\" style={{ marginTop: 12 }}>Risks</p>\n <ul className=\"list\">\n {plan.risks.map((r, i) => <li key={i}>{r}</li>)}\n </ul>\n </>\n ) : null}\n {plan.outOfScope.length > 0 ? (\n <div className=\"chips\">\n {plan.outOfScope.map((o, i) => <span className=\"chip\" key={i}>out: {o}</span>)}\n </div>\n ) : null}\n </div>\n ) : (\n <div className=\"card muted\">Waiting for the plan to be generated…</div>\n )}\n\n {pendingApproval ? (\n <div className=\"card approval\" data-testid=\"mission-approval\">\n <h3>{pendingApproval.requestTitle ?? \"Approve mission plan?\"}</h3>\n <div className=\"muted\">{pendingApproval.requestSummary ?? \"Review the scoped plan before workers begin.\"}</div>\n <input\n className=\"note-input\"\n data-testid=\"mission-approval-note\"\n value={note}\n onChange={(e) => setNote(e.currentTarget.value)}\n placeholder=\"Optional note\"\n />\n <div className=\"approval-actions\">\n <button className=\"button ok\" data-testid=\"mission-approve\" onClick={() => void decide(true)} disabled={busy}>\n Approve\n </button>\n <button className=\"button danger\" data-testid=\"mission-deny\" onClick={() => void decide(false)} disabled={busy}>\n Deny\n </button>\n </div>\n </div>\n ) : approval ? (\n <div className=\"card\" data-testid=\"mission-approval-result\">\n <h3>\n Plan{\" \"}\n <span className={\"badge \" + (approval.approved ? \"finished\" : \"failed\")}>\n {approval.approved ? \"approved\" : \"denied\"}\n </span>\n </h3>\n {approval.note ? <div className=\"muted\">{approval.note}</div> : null}\n {approval.decidedBy ? <div className=\"muted\">by {approval.decidedBy}</div> : null}\n </div>\n ) : null}\n\n <p className=\"section-head\" style={{ marginTop: 8 }}>Milestone timeline</p>\n {timelineMilestones.length > 0 ? (\n <ul className=\"timeline\" data-testid=\"mission-timeline\">\n {timelineMilestones.map((m, i) => {\n const done = i < activeIndex;\n const active = i === activeIndex && statusClass(runStatus) === \"running\";\n return (\n <li className=\"ms-row\" key={m.id} data-testid={\"mission-milestone-\" + m.id}>\n <span className={\"ms-dot\" + (done ? \" done\" : active ? \" active\" : \"\")}>\n {done ? \"✓\" : i + 1}\n </span>\n <span className=\"ms-body\">\n <span className=\"ms-title\">{m.title}</span>\n <span className=\"ms-meta\">\n {m.featureCount} feature{m.featureCount === 1 ? \"\" : \"s\"}\n {done ? \" · done\" : active ? \" · in progress\" : \" · pending\"}\n </span>\n </span>\n </li>\n );\n })}\n </ul>\n ) : (\n <div className=\"muted\">No milestones planned yet.</div>\n )}\n </div>\n )}\n </div>\n\n <div className=\"col mid\">\n {final ? (\n <div className=\"report\" data-testid=\"mission-final\">\n <p className=\"section-head\">Mission report</p>\n <div className=\"card\">\n <h3>\n <span className={\"badge \" + (final.status === \"completed\" ? \"finished\" : final.status === \"cancelled\" ? \"failed\" : \"running\")}>\n {final.status}\n </span>\n </h3>\n <div className=\"muted\" data-testid=\"mission-final-summary\">{final.summary}</div>\n <div className=\"final-stats\">\n <span className=\"stat\">\n {final.completedMilestones}/{final.totalMilestones}\n <small>milestones</small>\n </span>\n <span className=\"stat\">\n {final.validationPassed ? \"PASS\" : \"FAIL\"}\n <small>validation</small>\n </span>\n </div>\n {final.nextActions.length > 0 ? (\n <>\n <p className=\"section-head\" style={{ marginTop: 12 }}>Next actions</p>\n <ul className=\"list\">\n {final.nextActions.map((a, i) => <li key={i}>{a}</li>)}\n </ul>\n </>\n ) : null}\n {final.remainingRisks.length > 0 ? (\n <>\n <p className=\"section-head\" style={{ marginTop: 12 }}>Remaining risks</p>\n <ul className=\"list\">\n {final.remainingRisks.map((r, i) => <li key={i}>{r}</li>)}\n </ul>\n </>\n ) : null}\n </div>\n {final.markdownBody ? (\n <div className=\"card\">\n <p className=\"section-head\">Full report</p>\n <pre>{final.markdownBody}</pre>\n </div>\n ) : null}\n </div>\n ) : hasAnyRun && plan && timelineMilestones.length > 0 && activeIndex < timelineMilestones.length ? (\n <>\n <p className=\"section-head\">Active milestone</p>\n <MilestoneDetail runId={activeRunId} index={activeIndex} milestone={timelineMilestones[activeIndex]} />\n </>\n ) : (\n <div className=\"empty\" data-testid=\"mission-detail-empty\">\n {hasAnyRun ? \"Milestone work and the final report will appear here.\" : \"Launch a mission to see milestone progress.\"}\n </div>\n )}\n </div>\n\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent missions</div>\n {missionRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"mission-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {missionRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", + "workflow-skill": "/** @jsxImportSource react */\nimport { useMemo, useState } from \"react\";\nimport {\n createGatewayReactRoot,\n useGatewayActions,\n useGatewayNodeOutput,\n useGatewayRunEvents,\n useGatewayRuns,\n} from \"smthrs/gateway-react\";\n\nconst WORKFLOW_KEY = \"workflow-skill\";\n\ntype RunSummary = { runId: string; workflowKey?: string; status?: string; createdAtMs?: number };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction asString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\nfunction shortRunId(runId: string | undefined) {\n return runId ? runId.slice(0, 8) : \"--\";\n}\nfunction runIdFromUrl(): string | undefined {\n if (typeof location === \"undefined\") return undefined;\n return new URLSearchParams(location.search).get(\"runId\") ?? undefined;\n}\nfunction unwrapRow(value: unknown): Record<string, unknown> {\n const response = isRecord(value) ? value : {};\n if (isRecord(response.row)) return response.row;\n return response;\n}\n\ntype WorkflowSource = {\n id: string;\n displayName: string;\n sourceType: string;\n entryFile: string;\n};\ntype ExistingSkill = { path: string };\ntype CollectOutput = {\n workflowTarget: string;\n output: string | null;\n outputRule: string;\n defaultSkillDir: string;\n prompt: string;\n workflows: WorkflowSource[];\n existingSkills: ExistingSkill[];\n};\nfunction extractCollect(value: unknown): CollectOutput | null {\n const row = unwrapRow(value);\n const workflowTarget = asString(row.workflowTarget);\n if (workflowTarget === undefined) return null;\n const workflows = Array.isArray(row.workflows)\n ? row.workflows\n .filter(isRecord)\n .map((w) => ({\n id: asString(w.id) ?? \"\",\n displayName: asString(w.displayName) ?? asString(w.id) ?? \"\",\n sourceType: asString(w.sourceType) ?? \"user\",\n entryFile: asString(w.entryFile) ?? \"\",\n }))\n : [];\n const existingSkills = Array.isArray(row.existingSkills)\n ? row.existingSkills\n .filter(isRecord)\n .map((s) => ({ path: asString(s.path) ?? \"\" }))\n : [];\n return {\n workflowTarget,\n output: asString(row.output) ?? null,\n outputRule: asString(row.outputRule) ?? \"\",\n defaultSkillDir: asString(row.defaultSkillDir) ?? \"\",\n prompt: asString(row.prompt) ?? \"\",\n workflows,\n existingSkills,\n };\n}\n\ntype WrittenSkill = {\n workflow: string;\n path: string;\n skillName: string;\n action: string;\n};\ntype WriteResult = { summary: string; written: WrittenSkill[] };\nfunction extractWriteResult(value: unknown): WriteResult | null {\n const row = unwrapRow(value);\n const summary = asString(row.summary);\n if (summary === undefined) return null;\n const written = Array.isArray(row.written)\n ? row.written\n .filter(isRecord)\n .map((w) => ({\n workflow: asString(w.workflow) ?? \"\",\n path: asString(w.path) ?? \"\",\n skillName: asString(w.skillName) ?? \"\",\n action: asString(w.action) ?? \"updated\",\n }))\n : [];\n return { summary, written };\n}\n\nconst styles = [\n \":root { --bg:#0c0c0e; --panel:#151518; --card:#1c1c1f; --text:#eee; --muted:#8a8a8e; --border:#262629; --primary:#5e6ad2; --ok:#4ade80; --err:#f87171; --warn:#fbbf24; color-scheme:dark; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif; }\",\n \"* { box-sizing:border-box; }\",\n \"body { margin:0; background:var(--bg); color:var(--text); font-size:13px; line-height:1.5; }\",\n \"button,input { font:inherit; }\",\n \".shell { height:100vh; display:flex; flex-direction:column; overflow:hidden; }\",\n \".topbar { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:12px 20px; border-bottom:1px solid var(--border); }\",\n \".title-group { display:flex; align-items:center; gap:12px; min-width:0; }\",\n \"h1 { margin:0; font-size:14px; font-weight:600; }\",\n \".pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; color:var(--muted); background:var(--panel); padding:4px 10px; border-radius:6px; border:1px solid var(--border); font-family:ui-monospace,monospace; }\",\n \".toolbar { display:flex; align-items:center; gap:8px; flex:1; justify-content:flex-end; }\",\n \".prompt { flex:1; max-width:360px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".target { width:120px; height:30px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); }\",\n \".button { height:30px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); cursor:pointer; font-weight:500; }\",\n \".button:hover { background:var(--card); }\",\n \".button.primary { background:var(--primary); color:#fff; border-color:var(--primary); }\",\n \".button.danger { color:var(--err); }\",\n \".button:disabled { opacity:0.4; cursor:not-allowed; }\",\n \".main { display:grid; grid-template-columns:240px 1fr; flex:1; overflow:hidden; }\",\n \".sidebar { border-right:1px solid var(--border); background:var(--panel); overflow:auto; }\",\n \".side-head { padding:12px 16px; font-size:11px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); border-bottom:1px solid var(--border); }\",\n \".run-row { width:100%; text-align:left; padding:10px 16px; border:0; border-bottom:1px solid var(--border); background:transparent; color:var(--text); cursor:pointer; display:flex; justify-content:space-between; gap:8px; align-items:center; }\",\n \".run-row:hover { background:var(--card); }\",\n \".run-row.active { background:var(--card); box-shadow:inset 2px 0 0 var(--primary); }\",\n \".run-row .mono { font-family:ui-monospace,monospace; font-size:11px; }\",\n \".content { padding:20px; overflow:auto; }\",\n \".badge { font-size:11px; font-weight:600; text-transform:uppercase; padding:3px 8px; border-radius:5px; border:1px solid var(--border); }\",\n \".badge.running { color:var(--warn); border-color:var(--warn); }\",\n \".badge.finished { color:var(--ok); border-color:var(--ok); }\",\n \".badge.failed { color:var(--err); border-color:var(--err); }\",\n \".inputbar { display:flex; flex-wrap:wrap; gap:10px; background:var(--card); border:1px solid var(--border); border-radius:10px; padding:14px 18px; margin-bottom:18px; }\",\n \".inputbar .field { display:flex; flex-direction:column; gap:3px; }\",\n \".inputbar .label { font-size:10px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".inputbar .value { font-size:13px; font-family:ui-monospace,monospace; }\",\n \".timeline { display:flex; align-items:stretch; gap:0; margin-bottom:18px; }\",\n \".tl-node { flex:1; background:var(--card); border:1px solid var(--border); border-radius:10px; padding:14px 16px; display:flex; flex-direction:column; gap:6px; }\",\n \".tl-conn { display:flex; align-items:center; padding:0 10px; color:var(--muted); }\",\n \".tl-name { font-size:13px; font-weight:600; display:flex; align-items:center; gap:8px; }\",\n \".tl-sub { font-size:11px; color:var(--muted); }\",\n \".dot { width:9px; height:9px; border-radius:50%; background:var(--border); display:inline-block; }\",\n \".dot.running { background:var(--warn); }\",\n \".dot.done { background:var(--ok); }\",\n \".dot.failed { background:var(--err); }\",\n \".section { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:16px 18px; margin-bottom:18px; }\",\n \".section h2 { margin:0 0 10px; font-size:12px; text-transform:uppercase; letter-spacing:0.04em; color:var(--muted); }\",\n \".section .summary-text { font-size:15px; line-height:1.55; margin-bottom:12px; }\",\n \".collapse-head { cursor:pointer; user-select:none; display:flex; align-items:center; gap:8px; }\",\n \".list { list-style:none; margin:0; padding:0; }\",\n \".list li { display:flex; justify-content:space-between; gap:12px; padding:8px 0; border-bottom:1px solid var(--border); }\",\n \".list li:last-child { border-bottom:0; }\",\n \".list .mono { font-family:ui-monospace,monospace; font-size:12px; color:var(--muted); }\",\n \".list .name { font-weight:500; }\",\n \".action-badge { font-size:10px; font-weight:600; text-transform:uppercase; padding:2px 7px; border-radius:4px; border:1px solid var(--border); }\",\n \".action-badge.created { color:var(--ok); border-color:var(--ok); }\",\n \".action-badge.updated { color:var(--warn); border-color:var(--warn); }\",\n \".count { font-size:11px; color:var(--muted); margin-left:auto; }\",\n \".empty { color:var(--muted); text-align:center; padding:48px 16px; }\",\n \".empty .button { margin-top:14px; }\",\n \".empty-inline { color:var(--muted); padding:10px 0; font-size:12px; }\",\n \".footer { display:flex; align-items:center; gap:10px; color:var(--muted); font-size:12px; margin-top:8px; }\",\n].join(\"\\n\");\n\nfunction statusClass(status: string | undefined) {\n if (status === \"running\" || status === \"continued\") return \"running\";\n if (status === \"finished\") return \"finished\";\n if (status === \"failed\" || status === \"cancelled\") return \"failed\";\n return \"\";\n}\n\nfunction nodeState(\n finished: boolean,\n active: boolean,\n done: boolean,\n failed: boolean,\n) {\n if (done) return \"done\";\n if (failed) return \"failed\";\n if (active && !finished) return \"running\";\n return \"pending\";\n}\n\nfunction App() {\n const [selectedRunId, setSelectedRunId] = useState<string | undefined>(runIdFromUrl());\n const [workflow, setWorkflow] = useState(\"all\");\n const [prompt, setPrompt] = useState(\"\");\n const [collectOpen, setCollectOpen] = useState(true);\n const [busy, setBusy] = useState(false);\n\n const runsQuery = useGatewayRuns({ filter: { limit: 20 } });\n const actions = useGatewayActions();\n\n const skillRuns = useMemo(\n () =>\n ((runsQuery.data ?? []) as RunSummary[]).filter(\n (r) => !r.workflowKey || r.workflowKey === WORKFLOW_KEY,\n ),\n [runsQuery.data],\n );\n const activeRunId = selectedRunId ?? runIdFromUrl() ?? skillRuns[0]?.runId;\n const activeRun = skillRuns.find((r) => r.runId === activeRunId);\n\n const stream = useGatewayRunEvents(activeRunId, { afterSeq: 0 });\n const collectQuery = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"collect\", iteration: 0 });\n const writeQuery = useGatewayNodeOutput({ runId: activeRunId, nodeId: \"write-skills\", iteration: 0 });\n\n const collect = useMemo(() => extractCollect(collectQuery.data), [collectQuery.data]);\n const result = useMemo(() => extractWriteResult(writeQuery.data), [writeQuery.data]);\n\n const events = stream.events ?? [];\n const runStatus = statusClass(activeRun?.status);\n const runFailed = runStatus === \"failed\";\n const collectDone = collect !== null;\n const writeDone = result !== null;\n\n const createdCount = result ? result.written.filter((w) => w.action === \"created\").length : 0;\n const updatedCount = result ? result.written.filter((w) => w.action === \"updated\").length : 0;\n const successCount = skillRuns.filter((r) => statusClass(r.status) === \"finished\").length;\n\n async function refresh() {\n await Promise.all([\n runsQuery.refetch(),\n collectQuery.refetch(),\n writeQuery.refetch(),\n ]);\n }\n async function launch() {\n setBusy(true);\n try {\n const input: Record<string, unknown> = { workflow: workflow.trim() || \"all\" };\n if (prompt.trim()) input.prompt = prompt.trim();\n const run = await actions.launchRun({ workflow: WORKFLOW_KEY, input });\n setSelectedRunId(run.runId);\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function cancel() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.cancelRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n async function resume() {\n if (!activeRunId) return;\n setBusy(true);\n try {\n await actions.resumeRun({ runId: activeRunId });\n await refresh();\n } finally {\n setBusy(false);\n }\n }\n\n return (\n <main className=\"shell\" data-testid=\"workflow-skill-ui\">\n <style>{styles}</style>\n <header className=\"topbar\">\n <div className=\"title-group\">\n <h1>Workflow Skill</h1>\n <span className=\"pill\" data-testid=\"workflow-skill-runid\">\n {activeRunId ? shortRunId(activeRunId) : \"No run\"}\n </span>\n {activeRun ? (\n <span className={\"badge \" + runStatus} data-testid=\"workflow-skill-status\">\n {activeRun.status ?? \"idle\"}\n </span>\n ) : null}\n </div>\n <div className=\"toolbar\">\n <input\n className=\"target\"\n data-testid=\"workflow-skill-target\"\n value={workflow}\n onChange={(e) => setWorkflow(e.currentTarget.value)}\n placeholder=\"workflow (all)\"\n />\n <input\n className=\"prompt\"\n data-testid=\"workflow-skill-prompt\"\n value={prompt}\n onChange={(e) => setPrompt(e.currentTarget.value)}\n placeholder=\"Extra instructions (optional)\"\n />\n <button\n className=\"button\"\n data-testid=\"workflow-skill-refresh\"\n onClick={() => void refresh()}\n disabled={busy}\n >\n Refresh\n </button>\n {runStatus === \"running\" ? (\n <button\n className=\"button danger\"\n data-testid=\"workflow-skill-cancel\"\n onClick={() => void cancel()}\n disabled={busy}\n >\n Cancel\n </button>\n ) : null}\n {runFailed ? (\n <button\n className=\"button\"\n data-testid=\"workflow-skill-resume\"\n onClick={() => void resume()}\n disabled={busy}\n >\n Resume\n </button>\n ) : null}\n <button\n className=\"button primary\"\n data-testid=\"workflow-skill-launch\"\n onClick={() => void launch()}\n disabled={busy}\n >\n Generate Skills\n </button>\n </div>\n </header>\n\n <div className=\"main\">\n <aside className=\"sidebar\">\n <div className=\"side-head\">Recent runs</div>\n {skillRuns.map((r) => (\n <button\n key={r.runId}\n className={\"run-row\" + (r.runId === activeRunId ? \" active\" : \"\")}\n data-testid={\"workflow-skill-run-\" + r.runId}\n onClick={() => setSelectedRunId(r.runId)}\n >\n <span className=\"mono\">{shortRunId(r.runId)}</span>\n <span className={\"badge \" + statusClass(r.status)}>{r.status ?? \"?\"}</span>\n </button>\n ))}\n {skillRuns.length === 0 ? <div className=\"empty\">No runs yet.</div> : null}\n </aside>\n\n <div className=\"content\">\n {activeRunId ? (\n <>\n <div className=\"inputbar\" data-testid=\"workflow-skill-input\">\n <div className=\"field\">\n <span className=\"label\">Workflow target</span>\n <span className=\"value\">{collect?.workflowTarget ?? workflow ?? \"all\"}</span>\n </div>\n <div className=\"field\">\n <span className=\"label\">Output</span>\n <span className=\"value\">{collect?.output ?? collect?.defaultSkillDir ?? \"default\"}</span>\n </div>\n <div className=\"field\">\n <span className=\"label\">Extra prompt</span>\n <span className=\"value\">{collect?.prompt && collect.prompt.length > 0 ? collect.prompt : \"none\"}</span>\n </div>\n </div>\n\n <div className=\"timeline\" data-testid=\"workflow-skill-timeline\">\n <div className=\"tl-node\">\n <div className=\"tl-name\">\n <span className={\"dot \" + nodeState(collectDone, true, collectDone, runFailed && !collectDone)} />\n collect\n </div>\n <div className=\"tl-sub\">\n {collect\n ? collect.workflows.length + \" workflows discovered\"\n : \"discovering workflows\"}\n </div>\n </div>\n <div className=\"tl-conn\">→</div>\n <div className=\"tl-node\">\n <div className=\"tl-name\">\n <span className={\"dot \" + nodeState(writeDone, collectDone, writeDone, runFailed && collectDone)} />\n write-skills\n </div>\n <div className=\"tl-sub\">\n {result\n ? result.written.length + \" skills written\"\n : collectDone\n ? \"writing skill docs\"\n : \"waiting on collect\"}\n </div>\n </div>\n </div>\n\n <div className=\"section\" data-testid=\"workflow-skill-collect\">\n <div className=\"collapse-head\" onClick={() => setCollectOpen((v) => !v)}>\n <h2 style={{ margin: 0 }}>Collection details</h2>\n <span className=\"count\">{collectOpen ? \"hide\" : \"show\"}</span>\n </div>\n {collectOpen ? (\n collect ? (\n <div style={{ marginTop: 12 }}>\n <div className=\"label\" style={{ marginBottom: 6 }}>\n Workflows to document\n </div>\n <ul className=\"list\" data-testid=\"workflow-skill-workflows\">\n {collect.workflows.map((w) => (\n <li key={w.id}>\n <span className=\"name\">{w.displayName}</span>\n <span className=\"mono\">{w.id}</span>\n </li>\n ))}\n {collect.workflows.length === 0 ? (\n <li className=\"empty-inline\">No workflows discovered.</li>\n ) : null}\n </ul>\n <div className=\"label\" style={{ margin: \"14px 0 6px\" }}>\n Existing skills on disk\n </div>\n <ul className=\"list\" data-testid=\"workflow-skill-existing\">\n {collect.existingSkills.map((s) => (\n <li key={s.path}>\n <span className=\"mono\">{s.path}</span>\n </li>\n ))}\n {collect.existingSkills.length === 0 ? (\n <li className=\"empty-inline\">No existing skill files yet.</li>\n ) : null}\n </ul>\n </div>\n ) : (\n <div className=\"empty-inline\" data-testid=\"workflow-skill-collect-pending\">\n Waiting for the collect task to finish discovery…\n </div>\n )\n ) : null}\n </div>\n\n <div className=\"section\" data-testid=\"workflow-skill-results\">\n <div className=\"collapse-head\">\n <h2 style={{ margin: 0 }}>Generated skills</h2>\n {result ? (\n <span className=\"count\">\n {createdCount} created · {updatedCount} updated\n </span>\n ) : null}\n </div>\n {result ? (\n <div style={{ marginTop: 12 }}>\n <div className=\"summary-text\" data-testid=\"workflow-skill-summary\">\n {result.summary}\n </div>\n <ul className=\"list\" data-testid=\"workflow-skill-written\">\n {result.written.map((w, i) => (\n <li key={w.path + \":\" + i}>\n <span className=\"name\">{w.skillName || w.workflow}</span>\n <span className=\"mono\">{w.path}</span>\n <span className={\"action-badge \" + w.action}>{w.action}</span>\n </li>\n ))}\n {result.written.length === 0 ? (\n <li className=\"empty-inline\" data-testid=\"workflow-skill-written-empty\">\n No skill files were written in this run.\n </li>\n ) : null}\n </ul>\n </div>\n ) : (\n <div className=\"empty-inline\" data-testid=\"workflow-skill-results-pending\">\n {collectDone\n ? \"Generating skill documentation…\"\n : \"Results appear once write-skills completes.\"}\n </div>\n )}\n </div>\n\n <div className=\"footer\">\n <span>{events.length} events</span>\n <span>·</span>\n <span>\n {successCount} of {skillRuns.length} runs successful\n </span>\n {collectQuery.loading || writeQuery.loading ? <span>· refreshing…</span> : null}\n </div>\n </>\n ) : (\n <div className=\"empty\" data-testid=\"workflow-skill-empty\">\n <div>\n Select a run from the sidebar, or launch a new one to generate skill documentation.\n No run selected.\n </div>\n <button\n className=\"button primary\"\n data-testid=\"workflow-skill-launch-empty\"\n onClick={() => void launch()}\n disabled={busy}\n >\n Generate Skills\n </button>\n </div>\n )}\n </div>\n </div>\n </main>\n );\n}\n\ncreateGatewayReactRoot(<App />);\n", }; diff --git a/docs/references/smithers/apps/cli/src/workflows.js b/docs/references/smithers/apps/cli/src/workflows.js index f4c30a978..8a2c61729 100644 --- a/docs/references/smithers/apps/cli/src/workflows.js +++ b/docs/references/smithers/apps/cli/src/workflows.js @@ -4,8 +4,8 @@ import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync, } from "node:fs"; import { dirname, extname, isAbsolute, join, relative, resolve } from "node:path"; -import { SmithersError } from "@smithers-orchestrator/errors"; -import { accountsRoot } from "@smithers-orchestrator/accounts"; +import { SmithersError } from "@smthrs/errors"; +import { accountsRoot } from "@smthrs/accounts"; /** @typedef {import("./DiscoveredWorkflow.ts").DiscoveredWorkflow} DiscoveredWorkflow */ @@ -268,8 +268,8 @@ export function createWorkflowFile(name, from = process.cwd(), options = {}) { "// smithers-source: generated", `// smithers-metadata-version: ${WORKFLOW_METADATA_VERSION}`, `// smithers-display-name: ${displayNameFromWorkflowName(name)}`, - "/** @jsxImportSource smithers-orchestrator */", - 'import { createSmithers, Workflow } from "smithers-orchestrator";', + "/** @jsxImportSource smthrs */", + 'import { createSmithers, Workflow } from "smthrs";', "", "const { smithers } = createSmithers({});", "", diff --git a/docs/references/smithers/apps/cli/tests/agent-wiring.test.js b/docs/references/smithers/apps/cli/tests/agent-wiring.test.js index f19022432..fc1304816 100644 --- a/docs/references/smithers/apps/cli/tests/agent-wiring.test.js +++ b/docs/references/smithers/apps/cli/tests/agent-wiring.test.js @@ -24,7 +24,7 @@ afterEach(() => { } }); -const MCP = { name: "smithers", command: "bunx", args: ["smithers-orchestrator", "--mcp"] }; +const MCP = { name: "smithers", command: "bunx", args: ["smthrs", "--mcp"] }; describe("parseAgentWiringArgv", () => { test("recognizes `mcp add` and `skills add`", () => { @@ -61,7 +61,7 @@ describe("registerHermesMcp", () => { const result = registerHermesMcp({ ...MCP, homeDir: home }); expect(result.registered).toBe(true); const config = parse(readFileSync(result.path, "utf8")); - expect(config.mcp_servers.smithers).toEqual({ command: "bunx", args: ["smithers-orchestrator", "--mcp"] }); + expect(config.mcp_servers.smithers).toEqual({ command: "bunx", args: ["smthrs", "--mcp"] }); }); test("preserves existing config and other servers", () => { @@ -92,7 +92,7 @@ describe("registerOpenClawMcp", () => { const config = JSON.parse(readFileSync(result.path, "utf8")); expect(config.channels).toEqual({ slack: true }); expect(config.mcp.servers.other).toEqual({ command: "x" }); - expect(config.mcp.servers.smithers).toEqual({ command: "bunx", args: ["smithers-orchestrator", "--mcp"] }); + expect(config.mcp.servers.smithers).toEqual({ command: "bunx", args: ["smthrs", "--mcp"] }); }); test("does not clobber an unparseable config", () => { diff --git a/docs/references/smithers/apps/cli/tests/agents-ts-codegen.test.js b/docs/references/smithers/apps/cli/tests/agents-ts-codegen.test.js index 89bd32453..b2c158f43 100644 --- a/docs/references/smithers/apps/cli/tests/agents-ts-codegen.test.js +++ b/docs/references/smithers/apps/cli/tests/agents-ts-codegen.test.js @@ -2,7 +2,7 @@ import { afterEach, describe, expect, test } from "bun:test"; import { mkdtempSync, rmSync } from "node:fs"; import { join } from "node:path"; import { tmpdir } from "node:os"; -import { addAccount } from "@smithers-orchestrator/accounts"; +import { addAccount } from "@smthrs/accounts"; import { extractGeneratedDetectionProviderIds, generateAgentsTs } from "../src/agent-detection.js"; import { createExecutableDir, writeFakeClaudeBinary } from "../../../packages/smithers/tests/e2e-helpers.js"; diff --git a/docs/references/smithers/apps/cli/tests/ask-human-mcp.test.js b/docs/references/smithers/apps/cli/tests/ask-human-mcp.test.js index 54ab5920e..69b9e762c 100644 --- a/docs/references/smithers/apps/cli/tests/ask-human-mcp.test.js +++ b/docs/references/smithers/apps/cli/tests/ask-human-mcp.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createSemanticToolDefinitions } from "../src/mcp/semantic-tools.js"; function makeHarness() { diff --git a/docs/references/smithers/apps/cli/tests/ask-human.e2e.test.js b/docs/references/smithers/apps/cli/tests/ask-human.e2e.test.js index b56e194cf..f430d349d 100644 --- a/docs/references/smithers/apps/cli/tests/ask-human.e2e.test.js +++ b/docs/references/smithers/apps/cli/tests/ask-human.e2e.test.js @@ -1,7 +1,7 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createTempRepo, runSmithers, diff --git a/docs/references/smithers/apps/cli/tests/bin-delegation-unit.test.js b/docs/references/smithers/apps/cli/tests/bin-delegation-unit.test.js index 281fa20c8..441316877 100644 --- a/docs/references/smithers/apps/cli/tests/bin-delegation-unit.test.js +++ b/docs/references/smithers/apps/cli/tests/bin-delegation-unit.test.js @@ -50,12 +50,12 @@ function markerScript(label) { const POSIX_BIN_SHIM = [ "#!/bin/sh", "basedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\,/,g')\")", - "exec bun \"$basedir/../smithers-orchestrator/src/bin/smithers.js\" \"$@\"", + "exec bun \"$basedir/../smthrs/src/bin/smithers.js\" \"$@\"", "", ].join("\n"); /** - * Install a fake `smithers-orchestrator` package at <root>/node_modules/ whose + * Install a fake `smthrs` package at <root>/node_modules/ whose * bin entry prints `label`. Also drops the matching `.bin/smithers` shell shim * so the layout matches what npm/pnpm actually produce on disk. * @@ -63,9 +63,9 @@ const POSIX_BIN_SHIM = [ * @param {string} label */ function installFakeSmithersPackage(root, label) { - const pkgDir = join(root, "node_modules/smithers-orchestrator"); + const pkgDir = join(root, "node_modules/smthrs"); writeFile(join(pkgDir, "package.json"), JSON.stringify({ - name: "smithers-orchestrator", + name: "smthrs", version: "0.0.0-test", bin: { smithers: "./src/bin/smithers.js" }, }) + "\n"); @@ -125,10 +125,10 @@ test("bin shim keeps workflow-pack commands on the .smithers local CLI", () => { }); test("bin shim ignores a bare .bin/smithers shell shim with no local package (regression)", () => { - // Reproduces the user-reported crash: `bunx smithers-orchestrator agent --help` + // Reproduces the user-reported crash: `bunx smthrs agent --help` // found `.smithers/node_modules/.bin/smithers` (a `#!/bin/sh` shim) and tried // to re-exec it with `bun`, producing `Expected ")" but found ""$(echo ""`. - // After the fix we resolve via `node_modules/smithers-orchestrator/package.json`, + // After the fix we resolve via `node_modules/smthrs/package.json`, // so a bare `.bin/` shim must NOT trigger delegation. const dir = mkdtempSync(join(tmpdir(), "smithers-bin-delegation-shim-")); onTestFinished(() => { diff --git a/docs/references/smithers/apps/cli/tests/chat-command.test.js b/docs/references/smithers/apps/cli/tests/chat-command.test.js index 8dd1f4ac9..8d2706cf1 100644 --- a/docs/references/smithers/apps/cli/tests/chat-command.test.js +++ b/docs/references/smithers/apps/cli/tests/chat-command.test.js @@ -1,8 +1,8 @@ import { expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createTempRepo, runSmithers } from "../../../packages/smithers/tests/e2e-helpers.js"; /** * @param {ReturnType<typeof createTempRepo>} repo diff --git a/docs/references/smithers/apps/cli/tests/chat-create-command.test.js b/docs/references/smithers/apps/cli/tests/chat-create-command.test.js index adca49404..7036053be 100644 --- a/docs/references/smithers/apps/cli/tests/chat-create-command.test.js +++ b/docs/references/smithers/apps/cli/tests/chat-create-command.test.js @@ -1,8 +1,8 @@ import { expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createExecutableDir, createTempRepo, prependPath, runSmithers, writeExecutable, } from "../../../packages/smithers/tests/e2e-helpers.js"; /** diff --git a/docs/references/smithers/apps/cli/tests/cli-devtools-process.test.js b/docs/references/smithers/apps/cli/tests/cli-devtools-process.test.js index 9e330e38a..087cf63a5 100644 --- a/docs/references/smithers/apps/cli/tests/cli-devtools-process.test.js +++ b/docs/references/smithers/apps/cli/tests/cli-devtools-process.test.js @@ -5,8 +5,8 @@ import { tmpdir } from "node:os"; import { join, resolve } from "node:path"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; const CLI_ENTRY = resolve(import.meta.dir, "..", "src", "index.js"); diff --git a/docs/references/smithers/apps/cli/tests/cli-signals.e2e.test.js b/docs/references/smithers/apps/cli/tests/cli-signals.e2e.test.js index 83a394533..13c34b746 100644 --- a/docs/references/smithers/apps/cli/tests/cli-signals.e2e.test.js +++ b/docs/references/smithers/apps/cli/tests/cli-signals.e2e.test.js @@ -37,8 +37,8 @@ const testIfDeps = E2E_DEPS_AVAILABLE ? test : test.skip; */ function writeSlowWorkflow(repo) { return repo.write("workflow.tsx", [ - '/** @jsxImportSource smithers-orchestrator */', - 'import { createSmithers, Workflow, Task } from "smithers-orchestrator";', + '/** @jsxImportSource smthrs */', + 'import { createSmithers, Workflow, Task } from "smthrs";', 'import { z } from "zod";', '', 'const { smithers, outputs } = createSmithers({', diff --git a/docs/references/smithers/apps/cli/tests/cli.test.js b/docs/references/smithers/apps/cli/tests/cli.test.js index 50bb693e3..da4d34957 100644 --- a/docs/references/smithers/apps/cli/tests/cli.test.js +++ b/docs/references/smithers/apps/cli/tests/cli.test.js @@ -1,6 +1,6 @@ import { describe, expect, test } from "bun:test"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createTestDb } from "../../../packages/smithers/tests/helpers.js"; import { ddl, schema } from "../../../packages/smithers/tests/schema.js"; function buildDb() { diff --git a/docs/references/smithers/apps/cli/tests/diff.test.js b/docs/references/smithers/apps/cli/tests/diff.test.js index 16b39f13f..9d24e52b0 100644 --- a/docs/references/smithers/apps/cli/tests/diff.test.js +++ b/docs/references/smithers/apps/cli/tests/diff.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { renderUnifiedDiff, renderDiffStat, runDiffOnce } from "../src/diff.js"; function makeStream() { diff --git a/docs/references/smithers/apps/cli/tests/docs-cli-overview-coverage.test.js b/docs/references/smithers/apps/cli/tests/docs-cli-overview-coverage.test.js index f06f2c3a2..abda16ef1 100644 --- a/docs/references/smithers/apps/cli/tests/docs-cli-overview-coverage.test.js +++ b/docs/references/smithers/apps/cli/tests/docs-cli-overview-coverage.test.js @@ -74,5 +74,5 @@ test("CLI overview documents every current CLI command", () => { expect(documented.has("mcp.add")).toBe(true); expect(documented.has("tui")).toBe(false); expect(documented.has("memory.recall")).toBe(false); - expect(readFileSync(DOCS_MEMORY_CONCEPT, "utf8")).not.toContain("smithers-orchestrator memory recall"); + expect(readFileSync(DOCS_MEMORY_CONCEPT, "utf8")).not.toContain("smthrs memory recall"); }, 30_000); diff --git a/docs/references/smithers/apps/cli/tests/docs-examples-smoke.test.js b/docs/references/smithers/apps/cli/tests/docs-examples-smoke.test.js index c4dbb7f9d..80194d479 100644 --- a/docs/references/smithers/apps/cli/tests/docs-examples-smoke.test.js +++ b/docs/references/smithers/apps/cli/tests/docs-examples-smoke.test.js @@ -125,8 +125,8 @@ function createDocsSnippetProject() { onTestFinished(() => { rmSync(dir, { recursive: true, force: true }); }); - symlinkDir(resolve(REPO_ROOT, "packages/smithers"), join(dir, "node_modules/smithers-orchestrator")); - symlinkDir(resolve(REPO_ROOT, "node_modules/@smithers-orchestrator"), join(dir, "node_modules/@smithers-orchestrator")); + symlinkDir(resolve(REPO_ROOT, "packages/smithers"), join(dir, "node_modules/smthrs")); + symlinkDir(resolve(REPO_ROOT, "node_modules/@smthrs"), join(dir, "node_modules/@smthrs")); symlinkDir(resolve(REPO_ROOT, "node_modules/react"), join(dir, "node_modules/react")); symlinkDir(resolve(REPO_ROOT, "node_modules/react-dom"), join(dir, "node_modules/react-dom")); symlinkDir(resolve(REPO_ROOT, "node_modules/zod"), join(dir, "node_modules/zod")); diff --git a/docs/references/smithers/apps/cli/tests/docs-public-surface-coverage.test.js b/docs/references/smithers/apps/cli/tests/docs-public-surface-coverage.test.js index 8fd3bcf12..a4e78f610 100644 --- a/docs/references/smithers/apps/cli/tests/docs-public-surface-coverage.test.js +++ b/docs/references/smithers/apps/cli/tests/docs-public-surface-coverage.test.js @@ -16,7 +16,7 @@ function kebabCase(name) { test("component reference docs cover exported components", () => { const smithersIndex = readRepoFile("packages/smithers/src/index.js"); const componentExportBlock = smithersIndex.match( - /export \{([^}]+)\} from "@smithers-orchestrator\/components";/s, + /export \{([^}]+)\} from "@smthrs\/components";/s, )?.[1]; expect(componentExportBlock).toBeTruthy(); @@ -89,14 +89,14 @@ test("package configuration docs cover current explicit package exports", () => const packageJson = JSON.parse(readRepoFile("packages/smithers/package.json")); const explicitImportPaths = Object.keys(packageJson.exports) .filter((subpath) => subpath !== "./*") - .map((subpath) => (subpath === "." ? "smithers-orchestrator" : `smithers-orchestrator/${subpath.slice(2)}`)); + .map((subpath) => (subpath === "." ? "smthrs" : `smthrs/${subpath.slice(2)}`)); for (const importPath of explicitImportPaths) { expect(packageConfigDoc).toContain(`| \`${importPath}\``); } - expect(packageConfigDoc).not.toContain("| `smithers-orchestrator/pi-plugin`"); - expect(packageConfigDoc).not.toContain("| `smithers-orchestrator/pi-extension`"); + expect(packageConfigDoc).not.toContain("| `smthrs/pi-plugin`"); + expect(packageConfigDoc).not.toContain("| `smthrs/pi-extension`"); }); test("package configuration docs cover published workspace packages", () => { diff --git a/docs/references/smithers/apps/cli/tests/down-command.test.js b/docs/references/smithers/apps/cli/tests/down-command.test.js index 9c2c30abc..6d9989c5d 100644 --- a/docs/references/smithers/apps/cli/tests/down-command.test.js +++ b/docs/references/smithers/apps/cli/tests/down-command.test.js @@ -2,8 +2,8 @@ import { describe, expect, test } from "bun:test"; import { resolve } from "node:path"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createTempRepo, runSmithers } from "../../../packages/smithers/tests/e2e-helpers.js"; const CLI_ENTRY = resolve(import.meta.dir, "../src/index.js"); diff --git a/docs/references/smithers/apps/cli/tests/errorMessage-coverage.test.js b/docs/references/smithers/apps/cli/tests/errorMessage-coverage.test.js index ec244a911..d1e33ed31 100644 --- a/docs/references/smithers/apps/cli/tests/errorMessage-coverage.test.js +++ b/docs/references/smithers/apps/cli/tests/errorMessage-coverage.test.js @@ -4,7 +4,7 @@ import { NODE_DIFF_ERROR_CODES, NODE_OUTPUT_ERROR_CODES, JUMP_TO_FRAME_ERROR_CODES, -} from "@smithers-orchestrator/protocol/errors/index.js"; +} from "@smthrs/protocol/errors/index.js"; import { CLI_ERROR_MESSAGES } from "../src/util/errorMessage.js"; import { EXIT_USER_ERROR, EXIT_SERVER_ERROR } from "../src/util/exitCodes.js"; @@ -14,7 +14,7 @@ import { EXIT_USER_ERROR, EXIT_SERVER_ERROR } from "../src/util/exitCodes.js"; * Every typed error code returned by the four devtools RPCs must have * a CLI-side mapping to a user-friendly message, a hint, and an exit * code. Importing the protocol's frozen code arrays and asserting each - * one maps here means any code added to `@smithers-orchestrator/protocol/errors` + * one maps here means any code added to `@smthrs/protocol/errors` * that the CLI forgets to handle will fail this test immediately. */ describe("CLI_ERROR_MESSAGES covers every protocol error code", () => { diff --git a/docs/references/smithers/apps/cli/tests/global-workflows.e2e.test.js b/docs/references/smithers/apps/cli/tests/global-workflows.e2e.test.js index 10cfbcb5b..e396d7dba 100644 --- a/docs/references/smithers/apps/cli/tests/global-workflows.e2e.test.js +++ b/docs/references/smithers/apps/cli/tests/global-workflows.e2e.test.js @@ -54,7 +54,7 @@ test("workflow list merges the global ~/.smithers pack, local taking precedence" test("a global workflow runs against the current repo (db lands in cwd)", () => { // Put the global pack under a linked temp repo so the global workflow file can - // resolve `smithers-orchestrator`/`zod` via the parent node_modules. + // resolve `smthrs`/`zod` via the parent node_modules. const globalHome = createTempRepo(); const smithersHome = join(globalHome.dir, ".smithers"); writeTestWorkflow(globalHome, ".smithers/workflows/ping.tsx"); diff --git a/docs/references/smithers/apps/cli/tests/init-installed-layout.test.js b/docs/references/smithers/apps/cli/tests/init-installed-layout.test.js index 3ff03d8e8..37f9014fe 100644 --- a/docs/references/smithers/apps/cli/tests/init-installed-layout.test.js +++ b/docs/references/smithers/apps/cli/tests/init-installed-layout.test.js @@ -1,14 +1,14 @@ -// Regression test for the `bunx smithers-orchestrator init` path bug. +// Regression test for the `bunx smthrs init` path bug. // // Before the fix, workflow-pack.js resolved `../../../package.json` relative // to `apps/cli/src/workflow-pack.js`. That worked inside the monorepo (it // landed on the root package.json) but failed in a published install, where -// the file lives at `node_modules/@smithers-orchestrator/cli/src/` and the +// the file lives at `node_modules/@smthrs/cli/src/` and the // relative path resolves to `node_modules/package.json` — which does not // exist. Init would throw ENOENT before writing a single file. // // This test reproduces the installed layout in a temp directory and verifies -// `initWorkflowPack` succeeds and pins `smithers-orchestrator` to a real +// `initWorkflowPack` succeeds and pins `smthrs` to a real // version range (not `"latest"`). import { expect, onTestFinished, test } from "bun:test"; @@ -49,15 +49,15 @@ function buildFakeInstallTree() { // Simulate how pnpm/npm/bunx lay out the published package. Intentionally // do NOT include a `package.json` at `node_modules/` — this is the exact // condition that triggered the ENOENT before the fix. - const smithersDir = join(nm, "smithers-orchestrator"); - const cliDir = join(nm, "@smithers-orchestrator", "cli"); - const errorsDir = join(nm, "@smithers-orchestrator", "errors"); - const accountsDir = join(nm, "@smithers-orchestrator", "accounts"); + const smithersDir = join(nm, "smthrs"); + const cliDir = join(nm, "@smthrs", "cli"); + const errorsDir = join(nm, "@smthrs", "errors"); + const accountsDir = join(nm, "@smthrs", "accounts"); writeFile( join(smithersDir, "package.json"), JSON.stringify({ - name: "smithers-orchestrator", + name: "smthrs", version: "99.0.0", type: "module", bin: { smithers: "./src/bin/smithers.js" }, @@ -65,13 +65,13 @@ function buildFakeInstallTree() { ); writeFile( join(smithersDir, "src/bin/smithers.js"), - "#!/usr/bin/env node\nimport \"@smithers-orchestrator/cli\";\n", + "#!/usr/bin/env node\nimport \"@smthrs/cli\";\n", ); writeFile( join(cliDir, "package.json"), JSON.stringify({ - name: "@smithers-orchestrator/cli", + name: "@smthrs/cli", version: "99.0.0", type: "module", }) + "\n", @@ -85,7 +85,7 @@ function buildFakeInstallTree() { writeFile( join(errorsDir, "package.json"), JSON.stringify({ - name: "@smithers-orchestrator/errors", + name: "@smthrs/errors", version: "99.0.0", type: "module", exports: { ".": "./src/index.js" }, @@ -107,7 +107,7 @@ function buildFakeInstallTree() { writeFile( join(accountsDir, "package.json"), JSON.stringify({ - name: "@smithers-orchestrator/accounts", + name: "@smthrs/accounts", version: "99.0.0", type: "module", exports: { ".": "./src/index.js" }, @@ -194,7 +194,7 @@ test("initWorkflowPack succeeds when run from a published install layout", () => const generated = JSON.parse(readFileSync(join(tree.cwd, ".smithers/package.json"), "utf8")); // The CLI's own version (99.0.0) should be pinned, not "latest". - expect(generated.dependencies["smithers-orchestrator"]).toBe("^99.0.0"); + expect(generated.dependencies["smthrs"]).toBe("^99.0.0"); // And installed dep versions should be picked up via createRequire. expect(generated.dependencies.zod).toBe("4.99.0"); expect(generated.devDependencies.typescript).toBe("5.99.0"); diff --git a/docs/references/smithers/apps/cli/tests/init.e2e.test.js b/docs/references/smithers/apps/cli/tests/init.e2e.test.js index 2dc7d1531..a72b039f0 100644 --- a/docs/references/smithers/apps/cli/tests/init.e2e.test.js +++ b/docs/references/smithers/apps/cli/tests/init.e2e.test.js @@ -27,8 +27,8 @@ function writeWorkflowPackTypecheckHarness(repo) { "}", "", ].join("\n")); - repo.write(".smithers/types/smithers-orchestrator.d.ts", [ - 'declare module "smithers-orchestrator" {', + repo.write(".smithers/types/smthrs.d.ts", [ + 'declare module "smthrs" {', " export type AgentLike = any;", " export type OutputTarget = any;", " export type SmithersCtx<T = any> = any;", @@ -64,8 +64,8 @@ function writeWorkflowPackTypecheckHarness(repo) { "}", "", ].join("\n")); - repo.write(".smithers/types/smithers-orchestrator-jsx-runtime.d.ts", [ - 'declare module "smithers-orchestrator/jsx-runtime" {', + repo.write(".smithers/types/smthrs-jsx-runtime.d.ts", [ + 'declare module "smthrs/jsx-runtime" {', " export const Fragment: any;", " export function jsx(type: any, props: any, key?: any): any;", " export function jsxs(type: any, props: any, key?: any): any;", @@ -73,8 +73,8 @@ function writeWorkflowPackTypecheckHarness(repo) { "}", "", ].join("\n")); - repo.write(".smithers/types/smithers-orchestrator-gateway-react.d.ts", [ - 'declare module "smithers-orchestrator/gateway-react" {', + repo.write(".smithers/types/smthrs-gateway-react.d.ts", [ + 'declare module "smthrs/gateway-react" {', " export const createGatewayReactRoot: any;", " export function useGatewayActions(): any;", " export function useGatewayApprovals(...args: any[]): any;", @@ -93,9 +93,9 @@ function writeWorkflowPackTypecheckHarness(repo) { types: ["node", "react", "react-dom", "mdx"], paths: { "~/*": ["./*"], - "smithers-orchestrator": ["./types/smithers-orchestrator.d.ts"], - "smithers-orchestrator/gateway-react": ["./types/smithers-orchestrator-gateway-react.d.ts"], - "smithers-orchestrator/jsx-runtime": ["./types/smithers-orchestrator-jsx-runtime.d.ts"], + "smthrs": ["./types/smthrs.d.ts"], + "smthrs/gateway-react": ["./types/smthrs-gateway-react.d.ts"], + "smthrs/jsx-runtime": ["./types/smthrs-jsx-runtime.d.ts"], }, }, include: [ @@ -236,7 +236,7 @@ test("smithers init --template preserves the default scaffold and returns the se expect(repo.exists(".smithers/workflows/implement.tsx")).toBe(true); expect(result.json.template.id).toBe("idea-to-tickets"); expect(result.json.template.workflow).toBe("tickets-create"); - expect(result.json.template.command).toStartWith("bunx smithers-orchestrator workflow run tickets-create --"); + expect(result.json.template.command).toStartWith("bunx smthrs workflow run tickets-create --"); expect(result.json.install).toMatchObject({ reason: "skip-install", status: "skipped", diff --git a/docs/references/smithers/apps/cli/tests/integration.test.js b/docs/references/smithers/apps/cli/tests/integration.test.js index 23649463d..c5ca296b1 100644 --- a/docs/references/smithers/apps/cli/tests/integration.test.js +++ b/docs/references/smithers/apps/cli/tests/integration.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { runTreeOnce } from "../src/tree.js"; import { runDiffOnce } from "../src/diff.js"; import { runOutputOnce } from "../src/output.js"; diff --git a/docs/references/smithers/apps/cli/tests/json-stdout-contract.test.js b/docs/references/smithers/apps/cli/tests/json-stdout-contract.test.js index 11e0b2221..b15770ecc 100644 --- a/docs/references/smithers/apps/cli/tests/json-stdout-contract.test.js +++ b/docs/references/smithers/apps/cli/tests/json-stdout-contract.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createTempRepo, runSmithers } from "../../../packages/smithers/tests/e2e-helpers.js"; /** diff --git a/docs/references/smithers/apps/cli/tests/node-command.test.js b/docs/references/smithers/apps/cli/tests/node-command.test.js index 0687d9a49..bdb1f6cb6 100644 --- a/docs/references/smithers/apps/cli/tests/node-command.test.js +++ b/docs/references/smithers/apps/cli/tests/node-command.test.js @@ -1,8 +1,8 @@ import { expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createTempRepo, runSmithers } from "../../../packages/smithers/tests/e2e-helpers.js"; /** * @param {ReturnType<typeof createTempRepo>} repo diff --git a/docs/references/smithers/apps/cli/tests/optimize-suite.test.js b/docs/references/smithers/apps/cli/tests/optimize-suite.test.js index dbd0d80d6..b0dd665a0 100644 --- a/docs/references/smithers/apps/cli/tests/optimize-suite.test.js +++ b/docs/references/smithers/apps/cli/tests/optimize-suite.test.js @@ -12,8 +12,8 @@ import { createTempRepo, runSmithers } from "../../../packages/smithers/tests/e2 function writeOptimizableWorkflow(repo) { return repo.write("workflow.tsx", [ - "/** @jsxImportSource smithers-orchestrator */", - 'import { createSmithers, Workflow, Task } from "smithers-orchestrator";', + "/** @jsxImportSource smthrs */", + 'import { createSmithers, Workflow, Task } from "smthrs";', 'import { z } from "zod";', "", "const { smithers, outputs } = createSmithers({", @@ -46,8 +46,8 @@ function writeOptimizableWorkflow(repo) { function writeConditionalOptimizableWorkflow(repo) { return repo.write("conditional-workflow.tsx", [ - "/** @jsxImportSource smithers-orchestrator */", - 'import { createSmithers, Workflow, Task } from "smithers-orchestrator";', + "/** @jsxImportSource smthrs */", + 'import { createSmithers, Workflow, Task } from "smthrs";', 'import { z } from "zod";', "", "const { smithers, outputs } = createSmithers({", diff --git a/docs/references/smithers/apps/cli/tests/output.test.js b/docs/references/smithers/apps/cli/tests/output.test.js index 774b06f18..5ef119fb8 100644 --- a/docs/references/smithers/apps/cli/tests/output.test.js +++ b/docs/references/smithers/apps/cli/tests/output.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { renderPrettyOutput, runOutputOnce } from "../src/output.js"; function makeStream() { diff --git a/docs/references/smithers/apps/cli/tests/published-deps-declared.test.js b/docs/references/smithers/apps/cli/tests/published-deps-declared.test.js index 33d34de0f..656cce71b 100644 --- a/docs/references/smithers/apps/cli/tests/published-deps-declared.test.js +++ b/docs/references/smithers/apps/cli/tests/published-deps-declared.test.js @@ -1,8 +1,8 @@ // Regression guardrail: every external import in a published package must be // declared in that package's own package.json (dependencies or peerDependencies). // -// This catches the class of bug where `bunx smithers-orchestrator init` fails -// with `Cannot find module '<X>' from '.../node_modules/smithers-orchestrator/src/<foo>.js'` +// This catches the class of bug where `bunx smthrs init` fails +// with `Cannot find module '<X>' from '.../node_modules/smthrs/src/<foo>.js'` // because <X> is imported but not declared. The monorepo masks this during // development because phantom deps hoist from the root node_modules, but the // bunx install layout is strict. @@ -39,7 +39,7 @@ function discoverPackages() { packages.push({ name: manifest.name, dir, - skipSubdirs: manifest.name === "smithers-orchestrator" + skipSubdirs: manifest.name === "smthrs" ? ["src/pi-plugin", "src/ide"] : [], }); diff --git a/docs/references/smithers/apps/cli/tests/rewind.test.js b/docs/references/smithers/apps/cli/tests/rewind.test.js index def2e57f6..22cd9dc51 100644 --- a/docs/references/smithers/apps/cli/tests/rewind.test.js +++ b/docs/references/smithers/apps/cli/tests/rewind.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { runRewindOnce } from "../src/rewind.js"; function makeStream() { diff --git a/docs/references/smithers/apps/cli/tests/semantic-tools-unit.test.js b/docs/references/smithers/apps/cli/tests/semantic-tools-unit.test.js index cd80ae96f..eb38765db 100644 --- a/docs/references/smithers/apps/cli/tests/semantic-tools-unit.test.js +++ b/docs/references/smithers/apps/cli/tests/semantic-tools-unit.test.js @@ -327,8 +327,8 @@ describe("semantic tool definitions", () => { expect(missingDefault.structuredContent.error.code).toBe("INTERNAL_ERROR"); writeFileSync(join(harness.cwd, ".smithers", "workflows", "quick.tsx"), [ - "/** @jsxImportSource smithers-orchestrator */", - 'import { createSmithers, Workflow, Task } from "smithers-orchestrator";', + "/** @jsxImportSource smthrs */", + 'import { createSmithers, Workflow, Task } from "smthrs";', 'import { z } from "zod";', "const { smithers, outputs } = createSmithers({ result: z.object({ value: z.number() }) });", "export default smithers(() => (", diff --git a/docs/references/smithers/apps/cli/tests/snapshot-hook.test.js b/docs/references/smithers/apps/cli/tests/snapshot-hook.test.js index 38e781bda..58797d005 100644 --- a/docs/references/smithers/apps/cli/tests/snapshot-hook.test.js +++ b/docs/references/smithers/apps/cli/tests/snapshot-hook.test.js @@ -1,6 +1,6 @@ import { describe, expect, test } from "bun:test"; import { Readable } from "node:stream"; -import { createSnapshotServer, nextSnapshotSocketPath } from "@smithers-orchestrator/engine/snapshotServer"; +import { createSnapshotServer, nextSnapshotSocketPath } from "@smthrs/engine/snapshotServer"; import { runSnapshotHookOnce } from "../src/snapshot-hook.js"; const stdinOf = (str) => Readable.from([str]); diff --git a/docs/references/smithers/apps/cli/tests/starter-gallery.test.js b/docs/references/smithers/apps/cli/tests/starter-gallery.test.js index 437774e5a..6b802bc28 100644 --- a/docs/references/smithers/apps/cli/tests/starter-gallery.test.js +++ b/docs/references/smithers/apps/cli/tests/starter-gallery.test.js @@ -43,7 +43,7 @@ describe("starter gallery data", () => { expect(starter.goals.length).toBeGreaterThan(0); expect(starter.workflow).toMatch(/^[a-z0-9]+(?:-[a-z0-9]+)*$/); expect(starter.outcome.length).toBeGreaterThan(20); - expect(starterCommand(starter)).toStartWith(`bunx smithers-orchestrator workflow run ${starter.workflow} --`); + expect(starterCommand(starter)).toStartWith(`bunx smthrs workflow run ${starter.workflow} --`); } expect(STARTER_TEMPLATE_IDS).toEqual(STARTER_RECIPES.map((starter) => starter.id)); }); @@ -73,7 +73,7 @@ describe("starter gallery data", () => { const rendered = renderStarterGallery(buildStarterGallery()); expect(rendered).not.toMatch(/(^|[\s`])smithers(?:\s|$)/); for (const recipe of STARTER_RECIPES) { - expect(starterCommand(recipe)).toStartWith("bunx smithers-orchestrator "); + expect(starterCommand(recipe)).toStartWith("bunx smthrs "); for (const followUp of recipe.followUps) { expect(followUp).not.toMatch(/^smithers(?:\s|$)/); } @@ -97,13 +97,13 @@ describe("starter gallery data", () => { const overview = renderStarterGallery(buildStarterGallery({ audience: "product" })); expect(overview).toContain("Smithers starters"); expect(overview).toContain("idea-to-tickets"); - expect(overview).toContain("Use `bunx smithers-orchestrator init --template <id>`"); + expect(overview).toContain("Use `bunx smthrs init --template <id>`"); const detail = renderStarterGallery(buildStarterGallery({ id: "customer-incident" })); expect(detail).toContain("Turn a customer report into a fix path"); expect(detail).toContain("Template ID: customer-incident"); expect(detail).toContain("Before you run it:"); - expect(detail).toContain("bunx smithers-orchestrator workflow run debug"); + expect(detail).toContain("bunx smthrs workflow run debug"); }); }); @@ -117,7 +117,7 @@ describe("smithers starters command", () => { expect(result.exitCode).toBe(0); expect(result.stdout).toContain("Smithers starters"); expect(result.stdout).toContain("idea-to-tickets"); - expect(result.stdout).toContain("bunx smithers-orchestrator workflow run tickets-create"); + expect(result.stdout).toContain("bunx smthrs workflow run tickets-create"); }); test("emits structured JSON for integrations", () => { @@ -140,6 +140,6 @@ describe("smithers starters command", () => { }); expect(result.exitCode).toBe(4); expect(result.json.code).toBe("STARTER_NOT_FOUND"); - expect(result.json.message).toContain('Run "bunx smithers-orchestrator starters"'); + expect(result.json.message).toContain('Run "bunx smthrs starters"'); }); }); diff --git a/docs/references/smithers/apps/cli/tests/supervisor-core.test.js b/docs/references/smithers/apps/cli/tests/supervisor-core.test.js index a4fa9771d..7e21d3fbc 100644 --- a/docs/references/smithers/apps/cli/tests/supervisor-core.test.js +++ b/docs/references/smithers/apps/cli/tests/supervisor-core.test.js @@ -2,8 +2,8 @@ import { describe, expect, test } from "bun:test"; import { Effect } from "effect"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { SUPERVISOR_EVENT_RUN_ID, supervisorPollEffect, } from "../src/supervisor.js"; const now = Date.now(); function createTestDb() { diff --git a/docs/references/smithers/apps/cli/tests/supervisor-e2e.test.js b/docs/references/smithers/apps/cli/tests/supervisor-e2e.test.js index b24d16a36..1914d3ea6 100644 --- a/docs/references/smithers/apps/cli/tests/supervisor-e2e.test.js +++ b/docs/references/smithers/apps/cli/tests/supervisor-e2e.test.js @@ -5,8 +5,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; import { Effect } from "effect"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { SUPERVISOR_EVENT_RUN_ID, supervisorPollEffect, } from "../src/supervisor.js"; const now = 1_750_000_000_000; function createTestDb() { diff --git a/docs/references/smithers/apps/cli/tests/tree.test.js b/docs/references/smithers/apps/cli/tests/tree.test.js index 2c73f6532..5ae1aa30a 100644 --- a/docs/references/smithers/apps/cli/tests/tree.test.js +++ b/docs/references/smithers/apps/cli/tests/tree.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { renderDevToolsTree, selectSubtree, runTreeOnce, runTreeWatch } from "../src/tree.js"; function makeSnapshot() { diff --git a/docs/references/smithers/apps/cli/tests/watch-mode-read-commands.test.js b/docs/references/smithers/apps/cli/tests/watch-mode-read-commands.test.js index c05f58cea..ae67508ce 100644 --- a/docs/references/smithers/apps/cli/tests/watch-mode-read-commands.test.js +++ b/docs/references/smithers/apps/cli/tests/watch-mode-read-commands.test.js @@ -3,8 +3,8 @@ import { Database } from "bun:sqlite"; import { spawn } from "node:child_process"; import { resolve } from "node:path"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createTempRepo } from "../../../packages/smithers/tests/e2e-helpers.js"; const BUN_BINARY = process.execPath; const CLI_ENTRY = resolve(import.meta.dir, "../src/index.js"); diff --git a/docs/references/smithers/apps/cli/tests/why-command.test.js b/docs/references/smithers/apps/cli/tests/why-command.test.js index af67c0b6c..eba491841 100644 --- a/docs/references/smithers/apps/cli/tests/why-command.test.js +++ b/docs/references/smithers/apps/cli/tests/why-command.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createTempRepo, runSmithers } from "../../../packages/smithers/tests/e2e-helpers.js"; /** * @param {ReturnType<typeof createTempRepo>} repo diff --git a/docs/references/smithers/apps/observability/package.json b/docs/references/smithers/apps/observability/package.json index f70cb091f..6661a3f9e 100644 --- a/docs/references/smithers/apps/observability/package.json +++ b/docs/references/smithers/apps/observability/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/observability", + "name": "@smthrs/observability", "version": "0.23.0", "description": "Concrete Smithers metrics, logging, tracing, and observability integrations", "type": "module", @@ -33,7 +33,7 @@ "@effect/opentelemetry": "^0.63.0", "@effect/platform": "^0.96.0", "@effect/platform-bun": "^0.89.0", - "@smithers-orchestrator/agents": "workspace:*", + "@smthrs/agents": "^0.33.0", "effect": "^3.21.1" }, "devDependencies": { diff --git a/docs/references/smithers/apps/observability/src/_traceEventNormalizers.js b/docs/references/smithers/apps/observability/src/_traceEventNormalizers.js index ce2b6684a..0f129116e 100644 --- a/docs/references/smithers/apps/observability/src/_traceEventNormalizers.js +++ b/docs/references/smithers/apps/observability/src/_traceEventNormalizers.js @@ -1,5 +1,5 @@ -import { extractTextFromJsonValue } from "@smithers-orchestrator/agents/BaseCliAgent"; -import { normalizeTokenUsage } from "@smithers-orchestrator/agents/BaseCliAgent"; +import { extractTextFromJsonValue } from "@smthrs/agents/BaseCliAgent"; +import { normalizeTokenUsage } from "@smthrs/agents/BaseCliAgent"; /** * @typedef {import('./agentTrace.ts').AgentFamily} AgentFamily diff --git a/docs/references/smithers/apps/observability/src/correlation.js b/docs/references/smithers/apps/observability/src/correlation.js index 33380e312..c4945284c 100644 --- a/docs/references/smithers/apps/observability/src/correlation.js +++ b/docs/references/smithers/apps/observability/src/correlation.js @@ -21,7 +21,7 @@ export { correlationContextFiberRef, correlationContextToLogAnnotations, Correla * * @deprecated Prefer the Effect-returning * `updateCurrentCorrelationContext` from - * `@smithers-orchestrator/observability` (the `_coreCorrelation` version), + * `@smthrs/observability` (the `_coreCorrelation` version), * which does not mutate shared state. This shim will be removed once legacy * callers migrate. * diff --git a/docs/references/smithers/apps/observability/src/metrics/trackEvent.js b/docs/references/smithers/apps/observability/src/metrics/trackEvent.js index b20209c2b..d7df4424e 100644 --- a/docs/references/smithers/apps/observability/src/metrics/trackEvent.js +++ b/docs/references/smithers/apps/observability/src/metrics/trackEvent.js @@ -65,7 +65,7 @@ import { agentActionsTotal } from "./agentActionsTotal.js"; import { agentErrorsTotal } from "./agentErrorsTotal.js"; import { agentRetriesTotal } from "./agentRetriesTotal.js"; import { agentTokensTotal } from "./agentTokensTotal.js"; -/** @typedef {import("@smithers-orchestrator/observability/SmithersEvent").SmithersEvent} SmithersEvent */ +/** @typedef {import("@smthrs/observability/SmithersEvent").SmithersEvent} SmithersEvent */ /** * @param {unknown} value diff --git a/docs/references/smithers/apps/observability/tests/effect-logging.test.js b/docs/references/smithers/apps/observability/tests/effect-logging.test.js index b8a9df093..000117264 100644 --- a/docs/references/smithers/apps/observability/tests/effect-logging.test.js +++ b/docs/references/smithers/apps/observability/tests/effect-logging.test.js @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { logDebug, logInfo, logWarning, logError } from "@smithers-orchestrator/observability/logging"; +import { logDebug, logInfo, logWarning, logError } from "@smthrs/observability/logging"; describe("effect/logging", () => { // These functions fire-and-forget via runFork, so we just verify they don't throw. test("logDebug does not throw", () => { diff --git a/docs/references/smithers/apps/observability/tests/effect-metrics-definitions.test.js b/docs/references/smithers/apps/observability/tests/effect-metrics-definitions.test.js index ed0396245..21b7a711e 100644 --- a/docs/references/smithers/apps/observability/tests/effect-metrics-definitions.test.js +++ b/docs/references/smithers/apps/observability/tests/effect-metrics-definitions.test.js @@ -1,6 +1,6 @@ import { describe, expect, test } from "bun:test"; import { Effect, Metric } from "effect"; -import { runsTotal, nodesStarted, nodesFinished, nodesFailed, toolCallsTotal, cacheHits, cacheMisses, dbRetries, dbTransactionRetries, dbTransactionRollbacks, hotReloads, hotReloadFailures, httpRequests, approvalsRequested, approvalsGranted, approvalsDenied, scorerEventsStarted, scorerEventsFinished, scorerEventsFailed, tokensInputTotal, tokensOutputTotal, tokensCacheReadTotal, tokensCacheWriteTotal, tokensContextWindowBucketTotal, tokensReasoningTotal, runsFinishedTotal, runsFailedTotal, runsCancelledTotal, runsResumedTotal, supervisorPollsTotal, supervisorStaleDetected, supervisorResumedTotal, supervisorSkippedTotal, errorsTotal, nodeRetriesTotal, toolCallErrorsTotal, toolOutputTruncatedTotal, eventsEmittedTotal, taskHeartbeatsTotal, taskHeartbeatTimeoutTotal, activeRuns, activeNodes, schedulerQueueDepth, approvalPending, externalWaitAsyncPending, nodeDuration, attemptDuration, toolDuration, dbQueryDuration, dbTransactionDuration, httpRequestDuration, hotReloadDuration, vcsDuration, tokensInputPerCall, tokensOutputPerCall, tokensContextWindowPerCall, runDuration, promptSizeBytes, responseSizeBytes, approvalWaitDuration, schedulerWaitDuration, supervisorPollDuration, supervisorResumeLag, heartbeatDataSizeBytes, heartbeatIntervalMs, updateProcessMetrics, } from "@smithers-orchestrator/observability/metrics"; +import { runsTotal, nodesStarted, nodesFinished, nodesFailed, toolCallsTotal, cacheHits, cacheMisses, dbRetries, dbTransactionRetries, dbTransactionRollbacks, hotReloads, hotReloadFailures, httpRequests, approvalsRequested, approvalsGranted, approvalsDenied, scorerEventsStarted, scorerEventsFinished, scorerEventsFailed, tokensInputTotal, tokensOutputTotal, tokensCacheReadTotal, tokensCacheWriteTotal, tokensContextWindowBucketTotal, tokensReasoningTotal, runsFinishedTotal, runsFailedTotal, runsCancelledTotal, runsResumedTotal, supervisorPollsTotal, supervisorStaleDetected, supervisorResumedTotal, supervisorSkippedTotal, errorsTotal, nodeRetriesTotal, toolCallErrorsTotal, toolOutputTruncatedTotal, eventsEmittedTotal, taskHeartbeatsTotal, taskHeartbeatTimeoutTotal, activeRuns, activeNodes, schedulerQueueDepth, approvalPending, externalWaitAsyncPending, nodeDuration, attemptDuration, toolDuration, dbQueryDuration, dbTransactionDuration, httpRequestDuration, hotReloadDuration, vcsDuration, tokensInputPerCall, tokensOutputPerCall, tokensContextWindowPerCall, runDuration, promptSizeBytes, responseSizeBytes, approvalWaitDuration, schedulerWaitDuration, supervisorPollDuration, supervisorResumeLag, heartbeatDataSizeBytes, heartbeatIntervalMs, updateProcessMetrics, } from "@smthrs/observability/metrics"; describe("effect/metrics definitions", () => { test("all counters can be incremented without error", async () => { const counters = [ diff --git a/docs/references/smithers/apps/observability/tests/effect-metrics-track.test.js b/docs/references/smithers/apps/observability/tests/effect-metrics-track.test.js index 8a21e3e5a..e40ece1ad 100644 --- a/docs/references/smithers/apps/observability/tests/effect-metrics-track.test.js +++ b/docs/references/smithers/apps/observability/tests/effect-metrics-track.test.js @@ -1,6 +1,6 @@ import { describe, expect, test } from "bun:test"; import { Effect } from "effect"; -import { trackEvent } from "@smithers-orchestrator/observability/metrics"; +import { trackEvent } from "@smthrs/observability/metrics"; // trackEvent returns an Effect — we test that it produces an Effect for each event type // without throwing, and that the returned effect is well-formed. /** diff --git a/docs/references/smithers/apps/smithers-demo/README.md b/docs/references/smithers/apps/smithers-demo/README.md index cbd207b1c..cb2f92858 100644 --- a/docs/references/smithers/apps/smithers-demo/README.md +++ b/docs/references/smithers/apps/smithers-demo/README.md @@ -5,7 +5,7 @@ This app demonstrates a React Flow-powered Smithers workflow studio. A prompt dr ## Run ```bash -pnpm --filter @smithers-orchestrator/smithers-demo dev +pnpm --filter @smthrs/smithers-demo dev ``` The Vite dev server opens on `http://127.0.0.1:5174` when the port is available. @@ -15,7 +15,7 @@ The Vite dev server opens on `http://127.0.0.1:5174` when the port is available. The terminal demo uses `@dino-dna/react-tui` with `neo-blessed` and renders the generated workflow as a connected 2D node graph. It runs the same provider-backed debate workflow as the browser app: ```bash -pnpm --filter @smithers-orchestrator/smithers-tui-demo tui +pnpm --filter @smthrs/smithers-tui-demo tui ``` Start it with one provider key set (`CEREBRAS_API_KEY`, `OPENAI_API_KEY`, or `ANTHROPIC_API_KEY`). The prompt input at the bottom regenerates the graph locally. `Run Workflow` switches the graph into running state, changes the action to `Cancel`, and shows `Done` after the provider workflow finishes. The default prompt is: @@ -27,9 +27,9 @@ Do a loop where you have two LMs debate communism versus capitalism and then hav For a non-interactive live provider check, set one provider key and run: ```bash -CEREBRAS_API_KEY=... pnpm --filter @smithers-orchestrator/smithers-demo cerebras:debate -OPENAI_API_KEY=... pnpm --filter @smithers-orchestrator/smithers-demo cerebras:debate -ANTHROPIC_API_KEY=... pnpm --filter @smithers-orchestrator/smithers-demo cerebras:debate +CEREBRAS_API_KEY=... pnpm --filter @smthrs/smithers-demo cerebras:debate +OPENAI_API_KEY=... pnpm --filter @smthrs/smithers-demo cerebras:debate +ANTHROPIC_API_KEY=... pnpm --filter @smthrs/smithers-demo cerebras:debate ``` The browser app stores provider, model, and key settings in local browser settings. Defaults are Cerebras `gpt-oss-120b`, OpenAI `gpt-5.5`, and Claude `claude-opus-4.7`. @@ -37,10 +37,10 @@ The browser app stores provider, model, and key settings in local browser settin ## Validate ```bash -pnpm --filter @smithers-orchestrator/smithers-demo test -pnpm --filter @smithers-orchestrator/smithers-demo build -pnpm --filter @smithers-orchestrator/smithers-demo e2e -pnpm --filter @smithers-orchestrator/smithers-tui-demo test +pnpm --filter @smthrs/smithers-demo test +pnpm --filter @smthrs/smithers-demo build +pnpm --filter @smthrs/smithers-demo e2e +pnpm --filter @smthrs/smithers-tui-demo test ``` The layout tests assert that generated React Flow nodes do not overlap. The Playwright e2e test runs the real Workflow Studio in desktop and mobile viewports, verifies settings persistence, regenerates the graph from the bottom prompt composer, confirms provider-neutral `Run Workflow` copy, stubs provider output, and checks rendered React Flow nodes do not overlap. The TUI tests assert that terminal graph nodes render in 2D space with connections, do not overlap, and expose the Run Workflow -> Cancel -> Done state contract. The browser app also validates the generated layout in the UI and surfaces a `layout valid` or `layout overlap` badge beside the generated Smithers code. diff --git a/docs/references/smithers/apps/smithers-demo/package.json b/docs/references/smithers/apps/smithers-demo/package.json index 94a9ec5bf..d77235019 100644 --- a/docs/references/smithers/apps/smithers-demo/package.json +++ b/docs/references/smithers/apps/smithers-demo/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/smithers-demo", + "name": "@smthrs/smithers-demo", "version": "0.21.0", "description": "Interactive Smithers workflow generator demo with React Flow visualization", "private": true, diff --git a/docs/references/smithers/apps/smithers-demo/playwright.config.ts b/docs/references/smithers/apps/smithers-demo/playwright.config.ts index a4405f4a4..fb94662ea 100644 --- a/docs/references/smithers/apps/smithers-demo/playwright.config.ts +++ b/docs/references/smithers/apps/smithers-demo/playwright.config.ts @@ -12,7 +12,7 @@ export default defineConfig({ trace: "retain-on-failure", }, webServer: { - command: "pnpm --filter @smithers-orchestrator/smithers-demo dev -- --port 5174", + command: "pnpm --filter @smthrs/smithers-demo dev -- --port 5174", url: "http://127.0.0.1:5174", reuseExistingServer: true, timeout: 30_000, diff --git a/docs/references/smithers/apps/smithers-demo/src/workflowModel.ts b/docs/references/smithers/apps/smithers-demo/src/workflowModel.ts index c1b17b6e9..577cb5a7e 100644 --- a/docs/references/smithers/apps/smithers-demo/src/workflowModel.ts +++ b/docs/references/smithers/apps/smithers-demo/src/workflowModel.ts @@ -329,7 +329,7 @@ export function generateSmithersCode(spec: WorkflowSpec) { }) .join("\n\n"); - return `import { createSmithers, Sequence, Task, Workflow } from "smithers-orchestrator"; + return `import { createSmithers, Sequence, Task, Workflow } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -349,7 +349,7 @@ ${taskCode} function generateDebateSmithersCode(spec: WorkflowSpec) { const outputs = spec.nodes.map((node) => ` ${node.output}: ${outputSchemaFor(node)},`).join("\n"); - return `import { createSmithers, Ralph, Sequence, Task, Workflow } from "smithers-orchestrator"; + return `import { createSmithers, Ralph, Sequence, Task, Workflow } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ diff --git a/docs/references/smithers/apps/smithers-studio-2/README.md b/docs/references/smithers/apps/smithers-studio-2/README.md index 3c80860d1..3b483acfb 100644 --- a/docs/references/smithers/apps/smithers-studio-2/README.md +++ b/docs/references/smithers/apps/smithers-studio-2/README.md @@ -29,10 +29,10 @@ approved), never decoration. ## Scripts - `npm run dev` from the repo root starts the Smithers Gateway and Studio 2 together. -- `pnpm --filter @smithers-orchestrator/smithers-studio-2 dev` -- `pnpm --filter @smithers-orchestrator/smithers-studio-2 typecheck` -- `pnpm --filter @smithers-orchestrator/smithers-studio-2 build` -- `pnpm --filter @smithers-orchestrator/smithers-studio-2 exec playwright test` — e2e +- `pnpm --filter @smthrs/smithers-studio-2 dev` +- `pnpm --filter @smthrs/smithers-studio-2 typecheck` +- `pnpm --filter @smthrs/smithers-studio-2 build` +- `pnpm --filter @smthrs/smithers-studio-2 exec playwright test` — e2e The root dev script probes for available ports starting at `7331` for the Gateway and `5190` for the UI. Override them with `SMITHERS_GATEWAY_PORT` and @@ -43,7 +43,7 @@ The root dev script probes for available ports starting at `7331` for the Gatewa - **`src/workspaceApi.ts`** wraps the `/__smithers_studio/api/*` HTTP endpoints (issues, landings, cloud workspaces, prompts, search, memory, scores, SQL, logs, local recents). This is the backbone for most surfaces today. -- **`@smithers-orchestrator/gateway-client`** drives live runs over WebSocket +- **`@smthrs/gateway-client`** drives live runs over WebSocket (`listRuns`, `listWorkflows`, `listApprovals`, `launchRun`, `streamRunEvents`, `streamDevTools`, …). The **Runs** surface wires to this; until it lands, Runs reads run history/approvals over HTTP so it is never empty. diff --git a/docs/references/smithers/apps/smithers-studio-2/package.json b/docs/references/smithers/apps/smithers-studio-2/package.json index e705769b5..955b641fe 100644 --- a/docs/references/smithers/apps/smithers-studio-2/package.json +++ b/docs/references/smithers/apps/smithers-studio-2/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/smithers-studio-2", + "name": "@smthrs/smithers-studio-2", "version": "0.1.0", "description": "Next Smithers Studio UI shell", "private": true, @@ -15,8 +15,8 @@ "build:desktop": "pnpm run build && electrobun build" }, "dependencies": { - "@smithers-orchestrator/devtools": "workspace:*", - "@smithers-orchestrator/gateway-client": "workspace:*", + "@smthrs/devtools": "^0.33.0", + "@smthrs/gateway-client": "^0.33.0", "@uidotdev/usehooks": "^2.4.1", "@vitejs/plugin-react": "^6.0.2", "electrobun": "^1.18.1", diff --git a/docs/references/smithers/apps/smithers-studio-2/server/chat/createChatAgent.ts b/docs/references/smithers/apps/smithers-studio-2/server/chat/createChatAgent.ts index 9cb0d623a..b32019a97 100644 --- a/docs/references/smithers/apps/smithers-studio-2/server/chat/createChatAgent.ts +++ b/docs/references/smithers/apps/smithers-studio-2/server/chat/createChatAgent.ts @@ -7,13 +7,13 @@ import { OpenCodeAgent, PiAgent, type AgentLike, -} from "@smithers-orchestrator/agents"; +} from "@smthrs/agents"; type AgentFactory = (cwd: string) => AgentLike; /** * Map a detected agent id to the real CLI agent class from - * `@smithers-orchestrator/agents`. Each agent shells out to the locally + * `@smthrs/agents`. Each agent shells out to the locally * installed CLI (claude, codex, …) — this is the same runtime the engine drives * for production runs, not a chat-specific shim. */ diff --git a/docs/references/smithers/apps/smithers-studio-2/server/chat/loadChatSession.ts b/docs/references/smithers/apps/smithers-studio-2/server/chat/loadChatSession.ts index e03767232..511b88af2 100644 --- a/docs/references/smithers/apps/smithers-studio-2/server/chat/loadChatSession.ts +++ b/docs/references/smithers/apps/smithers-studio-2/server/chat/loadChatSession.ts @@ -1,6 +1,6 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"; import { join } from "node:path"; -import { detectAvailableAgents } from "@smithers-orchestrator/cli/agent-detection"; +import { detectAvailableAgents } from "@smthrs/cli/agent-detection"; import type { ChatSession } from "./ChatSession"; import { resolveChatWorkspaceRoot } from "./resolveChatWorkspaceRoot"; diff --git a/docs/references/smithers/apps/smithers-studio-2/server/startGatewayServer.ts b/docs/references/smithers/apps/smithers-studio-2/server/startGatewayServer.ts index e100758ce..0968e312c 100644 --- a/docs/references/smithers/apps/smithers-studio-2/server/startGatewayServer.ts +++ b/docs/references/smithers/apps/smithers-studio-2/server/startGatewayServer.ts @@ -1,7 +1,7 @@ import { existsSync } from "node:fs"; import { resolve } from "node:path"; -import { createSmithers, Gateway, SmithersDb } from "smithers-orchestrator"; -import { jsx } from "smithers-orchestrator/jsx-runtime"; +import { createSmithers, Gateway, SmithersDb } from "smthrs"; +import { jsx } from "smthrs/jsx-runtime"; /** * Boot the REAL Smithers Gateway for the studio dev stack. diff --git a/docs/references/smithers/apps/smithers-studio-2/server/workspaceBackend.ts b/docs/references/smithers/apps/smithers-studio-2/server/workspaceBackend.ts index ff2da912a..e7b8044d4 100644 --- a/docs/references/smithers/apps/smithers-studio-2/server/workspaceBackend.ts +++ b/docs/references/smithers/apps/smithers-studio-2/server/workspaceBackend.ts @@ -4,7 +4,7 @@ import * as pty from "node-pty"; import { chmodSync, closeSync, existsSync, mkdirSync, openSync, readFileSync, readdirSync, readSync, rmSync, statSync, writeFileSync } from "node:fs"; import { basename, delimiter, dirname, extname, join, relative, resolve, sep } from "node:path"; import { fileURLToPath } from "node:url"; -import { detectAvailableAgents } from "@smithers-orchestrator/cli/agent-detection"; +import { detectAvailableAgents } from "@smthrs/cli/agent-detection"; import * as ts from "typescript"; import { discoverPromptInputs, renderPromptPreview } from "../src/promptInputs"; import type { WorkspaceBackendRequest, WorkspaceBackendResponse, WorkspaceStatus } from "../src/workspaceProtocol"; diff --git a/docs/references/smithers/apps/smithers-studio-2/src/developer/devGatewayClient.ts b/docs/references/smithers/apps/smithers-studio-2/src/developer/devGatewayClient.ts index 2d56b8c66..09102ee08 100644 --- a/docs/references/smithers/apps/smithers-studio-2/src/developer/devGatewayClient.ts +++ b/docs/references/smithers/apps/smithers-studio-2/src/developer/devGatewayClient.ts @@ -1,4 +1,4 @@ -import { SmithersGatewayClient } from "@smithers-orchestrator/gateway-client"; +import { SmithersGatewayClient } from "@smthrs/gateway-client"; /** * Lazily-constructed gateway client shared by the developer surfaces. The base diff --git a/docs/references/smithers/apps/smithers-studio-2/src/devtools/DevToolsNode.ts b/docs/references/smithers/apps/smithers-studio-2/src/devtools/DevToolsNode.ts index a5c4f0ab6..3e0eaa783 100644 --- a/docs/references/smithers/apps/smithers-studio-2/src/devtools/DevToolsNode.ts +++ b/docs/references/smithers/apps/smithers-studio-2/src/devtools/DevToolsNode.ts @@ -1,7 +1,7 @@ /** * A single node in the raw DevTools snapshot tree returned by the gateway * `getDevToolsSnapshot` RPC. Structurally mirrors the orchestrator's - * `@smithers-orchestrator/protocol` DevToolsNode; redeclared locally so the app + * `@smthrs/protocol` DevToolsNode; redeclared locally so the app * owns its own wire contract and never couples to an undeclared package. * * This is the SHARED contract: both the developer DevTools surface and the Runs diff --git a/docs/references/smithers/apps/smithers-studio-2/src/runs/runsGatewayClient.ts b/docs/references/smithers/apps/smithers-studio-2/src/runs/runsGatewayClient.ts index 529620897..5b92fa4c9 100644 --- a/docs/references/smithers/apps/smithers-studio-2/src/runs/runsGatewayClient.ts +++ b/docs/references/smithers/apps/smithers-studio-2/src/runs/runsGatewayClient.ts @@ -1,7 +1,7 @@ /** * A minimal, self-contained Gateway RPC client for the Runs surface. * - * It speaks the exact same wire protocol as @smithers-orchestrator/gateway-client + * It speaks the exact same wire protocol as @smthrs/gateway-client * (`POST {origin}/v1/rpc/<method>` with a `{type:"res",ok,payload|error}` frame), * but is implemented locally so the surface does not pull that package's raw * `.ts` sources into the app's tsc program. The result: the real network path diff --git a/docs/references/smithers/apps/smithers-studio-2/src/runs/useRunEvents.ts b/docs/references/smithers/apps/smithers-studio-2/src/runs/useRunEvents.ts index 5ec966c82..c6cff6bbb 100644 --- a/docs/references/smithers/apps/smithers-studio-2/src/runs/useRunEvents.ts +++ b/docs/references/smithers/apps/smithers-studio-2/src/runs/useRunEvents.ts @@ -1,5 +1,5 @@ import { useEffect, useState } from "react"; -import { SmithersGatewayClient } from "@smithers-orchestrator/gateway-client"; +import { SmithersGatewayClient } from "@smthrs/gateway-client"; import type { RunEventLine } from "./runState"; const MAX_LINES = 500; diff --git a/docs/references/smithers/apps/smithers-studio-2/tests/fixtures/gatewayFixture.tsx b/docs/references/smithers/apps/smithers-studio-2/tests/fixtures/gatewayFixture.tsx index 5592994dc..6332456d5 100644 --- a/docs/references/smithers/apps/smithers-studio-2/tests/fixtures/gatewayFixture.tsx +++ b/docs/references/smithers/apps/smithers-studio-2/tests/fixtures/gatewayFixture.tsx @@ -1,9 +1,9 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { mkdtempSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { fileURLToPath } from "node:url"; import { join } from "node:path"; -import { createSmithers, Gateway } from "smithers-orchestrator"; +import { createSmithers, Gateway } from "smthrs"; import { z } from "zod"; import { seedRunStore } from "./seedRunStore"; import { diff --git a/docs/references/smithers/apps/smithers-studio-2/tests/fixtures/seedRunStore.ts b/docs/references/smithers/apps/smithers-studio-2/tests/fixtures/seedRunStore.ts index bdb012bd1..902a3abda 100644 --- a/docs/references/smithers/apps/smithers-studio-2/tests/fixtures/seedRunStore.ts +++ b/docs/references/smithers/apps/smithers-studio-2/tests/fixtures/seedRunStore.ts @@ -6,7 +6,7 @@ import { DB_SEEDED_RUNS } from "./seededData"; * from {@link ./seededData} ({@link DB_SEEDED_RUNS} — every seeded run except * the live approval run, which the gateway fixture EXECUTES so it has a real * tree + pending approval). The schema mirrors the real - * `@smithers-orchestrator/db` table definitions exactly, so the live Gateway's + * `@smthrs/db` table definitions exactly, so the live Gateway's * `listRuns` / `getRun` RPCs read these rows verbatim — the UI then renders them * over the real `/v1/rpc` path with no mocking. * diff --git a/docs/references/smithers/apps/smithers-tui-demo/package.json b/docs/references/smithers/apps/smithers-tui-demo/package.json index eccd79f01..250f1490f 100644 --- a/docs/references/smithers/apps/smithers-tui-demo/package.json +++ b/docs/references/smithers/apps/smithers-tui-demo/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/smithers-tui-demo", + "name": "@smthrs/smithers-tui-demo", "version": "0.21.0", "description": "React TUI Smithers Cerebras debate demo", "private": true, diff --git a/docs/references/smithers/apps/smithers/package.json b/docs/references/smithers/apps/smithers/package.json index 9e762c64b..d1bbf4495 100644 --- a/docs/references/smithers/apps/smithers/package.json +++ b/docs/references/smithers/apps/smithers/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/smithers", + "name": "@smthrs/smithers", "version": "0.1.0", "description": "Smithers — Cerebras chat PWA, deployable to Cloudflare via Alchemy", "private": true, @@ -22,8 +22,8 @@ "destroy": "alchemy destroy" }, "dependencies": { - "@smithers-orchestrator/gateway-client": "workspace:*", - "@smithers-orchestrator/gateway-react": "workspace:*", + "@smthrs/gateway-client": "^0.33.0", + "@smthrs/gateway-react": "^0.33.0", "@tanstack/ai": "^0.27.0", "@tanstack/ai-openai": "^0.13.0", "@tanstack/ai-react": "^0.15.3", diff --git a/docs/references/smithers/apps/smithers/src/gateway/gatewayClient.test.ts b/docs/references/smithers/apps/smithers/src/gateway/gatewayClient.test.ts index 8a959636a..b2ca31b5a 100644 --- a/docs/references/smithers/apps/smithers/src/gateway/gatewayClient.test.ts +++ b/docs/references/smithers/apps/smithers/src/gateway/gatewayClient.test.ts @@ -3,7 +3,7 @@ import { registerHappyDomForTests } from "../test/registerHappyDom"; registerHappyDomForTests(); import { afterEach, beforeEach, describe, expect, test } from "bun:test"; -import { GatewayRpcError } from "@smithers-orchestrator/gateway-client"; +import { GatewayRpcError } from "@smthrs/gateway-client"; import { RPC_WS_PATH, getGatewayClient, @@ -21,7 +21,7 @@ import { import { resetAuthRedirectForTests } from "../auth/authClient"; /** - * The app's wrapper around `@smithers-orchestrator/gateway-client`. These tests + * The app's wrapper around `@smthrs/gateway-client`. These tests * pin three behaviors: * - the wrapper preserves same-origin Worker/Vite proxy behavior (no base URL * swap unless one is configured), diff --git a/docs/references/smithers/apps/smithers/src/gateway/gatewayClient.ts b/docs/references/smithers/apps/smithers/src/gateway/gatewayClient.ts index 507e241a7..4e3ee154e 100644 --- a/docs/references/smithers/apps/smithers/src/gateway/gatewayClient.ts +++ b/docs/references/smithers/apps/smithers/src/gateway/gatewayClient.ts @@ -2,7 +2,7 @@ import { GatewayRpcError, SmithersGatewayClient, type GatewayStreamReconnectEvent, -} from "@smithers-orchestrator/gateway-client"; +} from "@smthrs/gateway-client"; import { getGatewayBaseUrl, getStoredAuthorization, @@ -16,7 +16,7 @@ import { } from "../observability/uiMetrics"; /** - * The app's wrapper around `@smithers-orchestrator/gateway-client`. + * The app's wrapper around `@smthrs/gateway-client`. * * The SDK already speaks the gateway wire protocol (RPC + WebSocket); we layer * three app concerns over it without forking the transport: diff --git a/docs/references/smithers/apps/smithers/src/gateway/gatewayStore.test.ts b/docs/references/smithers/apps/smithers/src/gateway/gatewayStore.test.ts index 8068a8fff..f0aba8493 100644 --- a/docs/references/smithers/apps/smithers/src/gateway/gatewayStore.test.ts +++ b/docs/references/smithers/apps/smithers/src/gateway/gatewayStore.test.ts @@ -3,7 +3,7 @@ import { registerHappyDomForTests } from "../test/registerHappyDom"; registerHappyDomForTests(); import { afterEach, beforeEach, describe, expect, test } from "bun:test"; -import { GatewayRpcError } from "@smithers-orchestrator/gateway-client"; +import { GatewayRpcError } from "@smthrs/gateway-client"; import { resetGatewayClient, setGatewayClientForTests } from "./gatewayClient"; import { __test_stopRunStreams, useGatewayStore } from "./gatewayStore"; diff --git a/docs/references/smithers/apps/smithers/src/gateway/gatewayStore.ts b/docs/references/smithers/apps/smithers/src/gateway/gatewayStore.ts index 1867e75ce..ebdae14a2 100644 --- a/docs/references/smithers/apps/smithers/src/gateway/gatewayStore.ts +++ b/docs/references/smithers/apps/smithers/src/gateway/gatewayStore.ts @@ -1,4 +1,4 @@ -import type { GatewayEventFrame } from "@smithers-orchestrator/gateway-client"; +import type { GatewayEventFrame } from "@smthrs/gateway-client"; import { create } from "zustand"; import { connectionStateValue, diff --git a/docs/references/smithers/apps/smithers/src/main.tsx b/docs/references/smithers/apps/smithers/src/main.tsx index 41414249a..3d4ae1d04 100644 --- a/docs/references/smithers/apps/smithers/src/main.tsx +++ b/docs/references/smithers/apps/smithers/src/main.tsx @@ -8,7 +8,7 @@ import { bindDock } from "./apps/bindDock"; import { bindGateway } from "./gateway/bindGateway"; import { startApprovalWatcher } from "./runs/watchApprovals"; import { registerServiceWorker } from "./registerServiceWorker"; -import { SyncProvider } from "@smithers-orchestrator/gateway-react"; +import { SyncProvider } from "@smthrs/gateway-react"; import { appSyncClient } from "./sync/appSyncClient"; import { platformFetch } from "./jjhub/platformFetch"; import { platformJson, PlatformError } from "./jjhub/platformJson"; diff --git a/docs/references/smithers/apps/smithers/src/sync/CHANGELOG.md b/docs/references/smithers/apps/smithers/src/sync/CHANGELOG.md index b37168c60..b29330ea3 100644 --- a/docs/references/smithers/apps/smithers/src/sync/CHANGELOG.md +++ b/docs/references/smithers/apps/smithers/src/sync/CHANGELOG.md @@ -13,7 +13,7 @@ - `gatewayRpc` for RPC (keeps cookie auth, CSRF, dev-proxy URLs) - `createSmithersGatewayTransport(SmithersGatewayClient)` for streams (resilient generators with reconnect + lastSeq resume) -- `main.tsx` imports `SyncProvider` from `@smithers-orchestrator/gateway-react`. +- `main.tsx` imports `SyncProvider` from `@smthrs/gateway-react`. ### Fixed diff --git a/docs/references/smithers/apps/smithers/src/sync/appSyncClient.ts b/docs/references/smithers/apps/smithers/src/sync/appSyncClient.ts index 9d6eb2f0e..66d63c4e9 100644 --- a/docs/references/smithers/apps/smithers/src/sync/appSyncClient.ts +++ b/docs/references/smithers/apps/smithers/src/sync/appSyncClient.ts @@ -2,7 +2,7 @@ import { SyncClient, createSmithersGatewayTransport, type SyncTransport, -} from "@smithers-orchestrator/gateway-client"; +} from "@smthrs/gateway-client"; import { handleAuthRequired } from "../auth/authClient"; import { getGatewayClient } from "../gateway/gatewayClient"; diff --git a/docs/references/smithers/apps/smithers/tests/e2e/gatewaySdk.spec.ts b/docs/references/smithers/apps/smithers/tests/e2e/gatewaySdk.spec.ts index b3c6d0164..b47f1d1fc 100644 --- a/docs/references/smithers/apps/smithers/tests/e2e/gatewaySdk.spec.ts +++ b/docs/references/smithers/apps/smithers/tests/e2e/gatewaySdk.spec.ts @@ -9,7 +9,7 @@ const WORKFLOW_KEY = "demo-ui"; const RUN_ID = "demo-ui-run-1"; /** - * Live-data path through `@smithers-orchestrator/gateway-client`. The legacy + * Live-data path through `@smthrs/gateway-client`. The legacy * `gatewayRpc` fetch helper + 3s `setInterval` polls were replaced with the SDK * (`SmithersGatewayClient`) and its WebSocket streams (`streamRunEventsResilient` * / `streamDevTools`). This spec pins the boundary that change crossed: diff --git a/docs/references/smithers/apps/smithers/tests/fixtures/demoReactWorkflowUi.tsx b/docs/references/smithers/apps/smithers/tests/fixtures/demoReactWorkflowUi.tsx index 6d1664579..2a64d7d37 100644 --- a/docs/references/smithers/apps/smithers/tests/fixtures/demoReactWorkflowUi.tsx +++ b/docs/references/smithers/apps/smithers/tests/fixtures/demoReactWorkflowUi.tsx @@ -20,7 +20,7 @@ import { useGatewayActions, useGatewayNodeOutput, useGatewayRun, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; function runIdFromUrl(): string | undefined { if (typeof location === "undefined") return undefined; diff --git a/docs/references/smithers/apps/smithers/tests/fixtures/demoWorkflowUi.ts b/docs/references/smithers/apps/smithers/tests/fixtures/demoWorkflowUi.ts index 0efe413e8..80d59c80b 100644 --- a/docs/references/smithers/apps/smithers/tests/fixtures/demoWorkflowUi.ts +++ b/docs/references/smithers/apps/smithers/tests/fixtures/demoWorkflowUi.ts @@ -5,7 +5,7 @@ * integration that matters — the gateway bundling + serving the bundle, the app * embedding it in an iframe, and the `?runId=` deep-link flowing through — without * coupling the test to any UI library. A real UI would use - * `smithers-orchestrator/gateway-react` here instead. + * `smthrs/gateway-react` here instead. */ const params = new URLSearchParams( typeof location !== "undefined" ? location.search : "", diff --git a/docs/references/smithers/apps/smithers/tests/fixtures/gatewayFixture.tsx b/docs/references/smithers/apps/smithers/tests/fixtures/gatewayFixture.tsx index 504ce302f..a0eb6c04c 100644 --- a/docs/references/smithers/apps/smithers/tests/fixtures/gatewayFixture.tsx +++ b/docs/references/smithers/apps/smithers/tests/fixtures/gatewayFixture.tsx @@ -1,9 +1,9 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { mkdtempSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { fileURLToPath } from "node:url"; import { join } from "node:path"; -import { createSmithers, Gateway } from "smithers-orchestrator"; +import { createSmithers, Gateway } from "smthrs"; import { z } from "zod"; /** diff --git a/docs/references/smithers/benchmarks/claw-eval-live/gateway/package.json b/docs/references/smithers/benchmarks/claw-eval-live/gateway/package.json index c7565a169..820a27802 100644 --- a/docs/references/smithers/benchmarks/claw-eval-live/gateway/package.json +++ b/docs/references/smithers/benchmarks/claw-eval-live/gateway/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/claw-eval-gateway", + "name": "@smthrs/claw-eval-gateway", "version": "0.0.0", "private": true, "type": "module", diff --git a/docs/references/smithers/benchmarks/claw-eval-live/gateway/src/mixture.ts b/docs/references/smithers/benchmarks/claw-eval-live/gateway/src/mixture.ts index c50e7140e..286153abb 100644 --- a/docs/references/smithers/benchmarks/claw-eval-live/gateway/src/mixture.ts +++ b/docs/references/smithers/benchmarks/claw-eval-live/gateway/src/mixture.ts @@ -28,7 +28,7 @@ * grader files, or per-task logic ever reach it. */ -import { ClaudeCodeAgent, OpenAIAgent } from "@smithers-orchestrator/agents"; +import { ClaudeCodeAgent, OpenAIAgent } from "@smthrs/agents"; // ---- model identifiers ----------------------------------------------------- // "Codex 5.5" → gpt-5.5 (the flagship 5.5; no `gpt-5.5-codex` variant exists, diff --git a/docs/references/smithers/benchmarks/swe-bench-pro/components/agents.js b/docs/references/smithers/benchmarks/swe-bench-pro/components/agents.js index f13230d59..b1177cc21 100644 --- a/docs/references/smithers/benchmarks/swe-bench-pro/components/agents.js +++ b/docs/references/smithers/benchmarks/swe-bench-pro/components/agents.js @@ -1,4 +1,4 @@ -import { ClaudeCodeAgent, CodexAgent } from "smithers-orchestrator"; +import { ClaudeCodeAgent, CodexAgent } from "smthrs"; /** * Bash command prefixes the coding agents may run inside a repo checkout. Kept diff --git a/docs/references/smithers/benchmarks/swe-bench-pro/package.json b/docs/references/smithers/benchmarks/swe-bench-pro/package.json index 79e0e9734..a75492db3 100644 --- a/docs/references/smithers/benchmarks/swe-bench-pro/package.json +++ b/docs/references/smithers/benchmarks/swe-bench-pro/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/swe-bench-pro", + "name": "@smthrs/swe-bench-pro", "version": "0.0.0", "private": true, "type": "module", diff --git a/docs/references/smithers/benchmarks/swe-bench-pro/scripts/gateway-server.js b/docs/references/smithers/benchmarks/swe-bench-pro/scripts/gateway-server.js index a1d3d0b02..97bcc3b75 100644 --- a/docs/references/smithers/benchmarks/swe-bench-pro/scripts/gateway-server.js +++ b/docs/references/smithers/benchmarks/swe-bench-pro/scripts/gateway-server.js @@ -6,7 +6,7 @@ // exercising the same RPC surface (`launchRun` / `getRun` / `streamRunEvents`) a // hosted Smithers deployment exposes. No auth on localhost by default; set // SWEBP_GATEWAY_TOKEN to require a bearer token. -import { Gateway } from "@smithers-orchestrator/server"; +import { Gateway } from "@smthrs/server"; import workflow from "../workflow.tsx"; diff --git a/docs/references/smithers/benchmarks/swe-bench-pro/src/swebpScorer.js b/docs/references/smithers/benchmarks/swe-bench-pro/src/swebpScorer.js index 08f4753bc..ec6142ca4 100644 --- a/docs/references/smithers/benchmarks/swe-bench-pro/src/swebpScorer.js +++ b/docs/references/smithers/benchmarks/swe-bench-pro/src/swebpScorer.js @@ -15,7 +15,7 @@ import { scorePatch } from "./scorePatch.js"; * fields the workflow receives), so it can locate the instance metadata and the * working tree the agents edited. * - * @type {import("@smithers-orchestrator/scorers").Scorer} + * @type {import("@smthrs/scorers").Scorer} */ export const swebpScorer = { id: "swe-bench-pro-resolved", diff --git a/docs/references/smithers/benchmarks/swe-bench-pro/workflow.tsx b/docs/references/smithers/benchmarks/swe-bench-pro/workflow.tsx index 26f18dc3a..7dfce6960 100644 --- a/docs/references/smithers/benchmarks/swe-bench-pro/workflow.tsx +++ b/docs/references/smithers/benchmarks/swe-bench-pro/workflow.tsx @@ -1,5 +1,5 @@ -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod"; import { implementerAgent, reviewerAgent } from "./components/agents.js"; diff --git a/docs/references/smithers/bun.lock b/docs/references/smithers/bun.lock index 66c77f7cf..908cafbcf 100644 --- a/docs/references/smithers/bun.lock +++ b/docs/references/smithers/bun.lock @@ -12,30 +12,30 @@ "@effect/workflow": "^0.18.0", "@happy-dom/global-registrator": "^20.9.0", "@mdx-js/esbuild": "^3.1.1", - "@smithers-orchestrator/agents": "workspace:*", - "@smithers-orchestrator/cli": "workspace:*", - "@smithers-orchestrator/components": "workspace:*", - "@smithers-orchestrator/control-plane": "workspace:*", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/devtools": "workspace:*", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/engine": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/gateway": "workspace:*", - "@smithers-orchestrator/gateway-client": "workspace:*", - "@smithers-orchestrator/gateway-react": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "@smithers-orchestrator/memory": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/openapi": "workspace:*", - "@smithers-orchestrator/protocol": "workspace:*", - "@smithers-orchestrator/react-reconciler": "workspace:*", - "@smithers-orchestrator/sandbox": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "@smithers-orchestrator/scorers": "workspace:*", - "@smithers-orchestrator/server": "workspace:*", - "@smithers-orchestrator/time-travel": "workspace:*", - "@smithers-orchestrator/vcs": "workspace:*", + "@smthrs/agents": "^0.33.0", + "@smthrs/cli": "^0.33.0", + "@smthrs/components": "^0.33.0", + "@smthrs/control-plane": "^0.33.0", + "@smthrs/db": "^0.33.0", + "@smthrs/devtools": "^0.33.0", + "@smthrs/driver": "^0.33.0", + "@smthrs/engine": "^0.33.0", + "@smthrs/errors": "^0.33.0", + "@smthrs/gateway": "^0.33.0", + "@smthrs/gateway-client": "^0.33.0", + "@smthrs/gateway-react": "^0.33.0", + "@smthrs/graph": "^0.33.0", + "@smthrs/memory": "^0.33.0", + "@smthrs/observability": "^0.33.0", + "@smthrs/openapi": "^0.33.0", + "@smthrs/protocol": "^0.33.0", + "@smthrs/react-reconciler": "^0.33.0", + "@smthrs/sandbox": "^0.33.0", + "@smthrs/scheduler": "^0.33.0", + "@smthrs/scorers": "^0.33.0", + "@smthrs/server": "^0.33.0", + "@smthrs/time-travel": "^0.33.0", + "@smthrs/vcs": "^0.33.0", "@tanstack/react-query": "^5.99.1", "@types/bun": "latest", "@types/mdx": "^2.0.13", @@ -51,7 +51,7 @@ "oxlint": "^1.60.0", "react": "^19.2.5", "react-dom": "^19.2.5", - "smithers-orchestrator": "workspace:*", + "smthrs": "^0.33.0", "tsup": "^8.5.1", "twitter-api-v2": "^1.29.0", "typescript": "~5.9.3", @@ -62,8 +62,8 @@ ".smithers": { "name": "smithers-workflows", "dependencies": { - "@smithers-orchestrator/scorers": "workspace:*", - "smithers-orchestrator": "workspace:*", + "@smthrs/scorers": "^0.33.0", + "smthrs": "^0.33.0", "zod": "4.3.6", }, "devDependencies": { @@ -74,88 +74,41 @@ "typescript": "5.9.3", }, }, - "apps/cli": { - "name": "@smithers-orchestrator/cli", - "version": "0.22.0", - "dependencies": { - "@clack/prompts": "^0.10.1", - "@effect/workflow": "^0.18.0", - "@mdx-js/esbuild": "^3.1.1", - "@modelcontextprotocol/sdk": "^1.29.0", - "@smithers-orchestrator/accounts": "workspace:*", - "@smithers-orchestrator/agents": "workspace:*", - "@smithers-orchestrator/components": "workspace:*", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/devtools": "workspace:*", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/engine": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/memory": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/openapi": "workspace:*", - "@smithers-orchestrator/protocol": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "@smithers-orchestrator/server": "workspace:*", - "@smithers-orchestrator/time-travel": "workspace:*", - "@smithers-orchestrator/usage": "workspace:*", - "cron-parser": "^5.5.0", - "drizzle-orm": "^0.45.2", - "effect": "^3.21.1", - "incur": "^0.4.1", - "picocolors": "^1.1.1", - "react": "^19.2.5", - "smithers-orchestrator": "workspace:*", - "yaml": "^2.8.3", - "zod": "^4.3.6", - }, - "devDependencies": { - "@types/bun": "latest", - "typescript": "~5.9.3", - }, - }, - "apps/observability": { - "name": "@smithers-orchestrator/observability", - "version": "0.22.0", - "dependencies": { - "@effect/opentelemetry": "^0.63.0", - "@effect/platform": "^0.96.0", - "@effect/platform-bun": "^0.89.0", - "@smithers-orchestrator/agents": "workspace:*", - "effect": "^3.21.1", - }, - "devDependencies": { - "@types/bun": "latest", - "typescript": "~5.9.3", - }, - }, "apps/smithers": { - "name": "@smithers-orchestrator/smithers", + "name": "@smthrs/smithers", "version": "0.1.0", "dependencies": { + "@smthrs/gateway-client": "^0.33.0", + "@smthrs/gateway-react": "^0.33.0", "@tanstack/ai": "^0.27.0", "@tanstack/ai-openai": "^0.13.0", "@tanstack/ai-react": "^0.15.3", + "@tanstack/react-router": "^1.135.5", "@xyflow/react": "^12.10.2", "dagre": "^0.8.5", "react": "^19.2.5", "react-dom": "^19.2.5", + "zustand": "^5.0.13", }, "devDependencies": { "@cloudflare/vite-plugin": "^1.39.2", "@cloudflare/workers-types": "^4.20260604.1", + "@happy-dom/global-registrator": "^20.9.0", + "@playwright/test": "^1.60.0", "@types/dagre": "^0.7.54", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.2", "alchemy": "^0.93.11", "cloudflare": "^6.3.0", + "playwright": "^1.60.0", "tsx": "^4.22.4", "typescript": "~5.9.3", "vite": "^8.0.14", }, }, "apps/smithers-demo": { - "name": "@smithers-orchestrator/smithers-demo", + "name": "@smthrs/smithers-demo", "version": "0.21.0", "dependencies": { "@xyflow/react": "^12.10.2", @@ -172,11 +125,11 @@ }, }, "apps/smithers-studio-2": { - "name": "@smithers-orchestrator/smithers-studio-2", + "name": "@smthrs/smithers-studio-2", "version": "0.1.0", "dependencies": { - "@smithers-orchestrator/devtools": "workspace:*", - "@smithers-orchestrator/gateway-client": "workspace:*", + "@smthrs/devtools": "^0.33.0", + "@smthrs/gateway-client": "^0.33.0", "@uidotdev/usehooks": "^2.4.1", "@vitejs/plugin-react": "^6.0.2", "@wterm/dom": "0.3.0", @@ -198,7 +151,7 @@ }, }, "apps/smithers-tui-demo": { - "name": "@smithers-orchestrator/smithers-tui-demo", + "name": "@smthrs/smithers-tui-demo", "version": "0.21.0", "dependencies": { "@dino-dna/react-tui": "^1.0.1", @@ -207,273 +160,49 @@ }, }, "packages/accounts": { - "name": "@smithers-orchestrator/accounts", - "version": "0.22.0", - "dependencies": { - "@smithers-orchestrator/errors": "workspace:*", - }, - "devDependencies": { - "@types/bun": "latest", - "typescript": "~5.9.3", - }, - }, - "packages/agents": { - "name": "@smithers-orchestrator/agents", - "version": "0.22.0", - "dependencies": { - "@ai-sdk/anthropic": "^3.0.71", - "@ai-sdk/openai": "^3.0.53", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "ai": "^6.0.168", - "effect": "^3.21.1", - "zod": "^4.3.6", - }, - "devDependencies": { - "@types/bun": "latest", - "react": "^19.2.5", - "typescript": "~5.9.3", - }, - }, - "packages/components": { - "name": "@smithers-orchestrator/components", - "version": "0.22.0", - "dependencies": { - "@smithers-orchestrator/agents": "workspace:*", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "@smithers-orchestrator/memory": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/react-reconciler": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "bippy": "^0.5.39", - "react": "^19.2.5", - "react-dom": "^19.2.5", - "zod": "^4.3.6", - }, - "devDependencies": { - "@tanstack/react-query": "^5.99.1", - "@types/bun": "latest", - "drizzle-orm": "^0.45.2", - "effect": "^3.21.1", - "typescript": "~5.9.3", - }, - }, - "packages/control-plane": { - "name": "@smithers-orchestrator/control-plane", - "version": "0.22.0", - "dependencies": { - "@smithers-orchestrator/errors": "workspace:*", - }, - "devDependencies": { - "@types/bun": "latest", - "typescript": "~5.9.3", - }, - }, - "packages/db": { - "name": "@smithers-orchestrator/db", - "version": "0.22.0", - "dependencies": { - "@effect/experimental": "^0.60.0", - "@effect/sql": "^0.51.0", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "drizzle-orm": "^0.45.2", - "drizzle-zod": "^0.8.3", - "effect": "^3.21.1", - "zod": "^4.3.6", - }, - "devDependencies": { - "@electric-sql/pglite": "0.5.1", - "@electric-sql/pglite-socket": "0.2.1", - "@types/bun": "latest", - "pg": "^8.13.1", - "typescript": "~5.9.3", - }, - }, - "packages/devtools": { - "name": "@smithers-orchestrator/devtools", - "version": "0.22.0", - "devDependencies": { - "@types/bun": "latest", - "typescript": "~5.9.3", - }, - }, - "packages/driver": { - "name": "@smithers-orchestrator/driver", - "version": "0.22.0", - "dependencies": { - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "effect": "^3.21.1", - "zod": "^4.3.6", - }, - "devDependencies": { - "@types/bun": "latest", - "typescript": "~5.9.3", - }, - }, - "packages/engine": { - "name": "@smithers-orchestrator/engine", - "version": "0.22.0", - "dependencies": { - "@effect/cluster": "^0.58.0", - "@effect/experimental": "^0.60.0", - "@effect/platform-bun": "^0.89.0", - "@effect/rpc": "^0.75.0", - "@effect/sql": "^0.51.0", - "@effect/sql-sqlite-bun": "^0.52.0", - "@effect/workflow": "^0.18.0", - "@smithers-orchestrator/agents": "workspace:*", - "@smithers-orchestrator/components": "workspace:*", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/react-reconciler": "workspace:*", - "@smithers-orchestrator/sandbox": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "@smithers-orchestrator/scorers": "workspace:*", - "@smithers-orchestrator/time-travel": "workspace:*", - "@smithers-orchestrator/vcs": "workspace:*", - "diff": "^9.0.0", - "drizzle-orm": "^0.45.2", - "effect": "^3.21.1", - "react": "^19.2.5", - "react-dom": "^19.2.5", - "zod": "^4.3.6", - }, - "devDependencies": { - "@types/bun": "latest", - "typescript": "~5.9.3", - }, - "optionalDependencies": { - "@electric-sql/pglite": "0.5.1", - "@electric-sql/pglite-socket": "0.2.1", - "pg": "^8.13.1", - }, - }, - "packages/errors": { - "name": "@smithers-orchestrator/errors", - "version": "0.22.0", + "name": "@smthrs/accounts", + "version": "0.23.0", "dependencies": { - "effect": "^3.21.1", + "@smthrs/errors": "^0.33.0", }, "devDependencies": { "@types/bun": "latest", "typescript": "~5.9.3", }, }, - "packages/gateway": { - "name": "@smithers-orchestrator/gateway", - "version": "0.22.0", - "devDependencies": { - "@types/bun": "latest", - "typescript": "~5.9.3", - }, + "packages/jj-darwin-arm64": { + "name": "@smthrs/jj-darwin-arm64", + "version": "0.23.0", }, - "packages/gateway-client": { - "name": "@smithers-orchestrator/gateway-client", - "version": "0.22.0", - "dependencies": { - "@smithers-orchestrator/gateway": "workspace:*", - }, - "devDependencies": { - "@types/bun": "latest", - "typescript": "~5.9.3", - }, + "packages/jj-darwin-x64": { + "name": "@smthrs/jj-darwin-x64", + "version": "0.23.0", }, - "packages/gateway-react": { - "name": "@smithers-orchestrator/gateway-react", - "version": "0.22.0", - "dependencies": { - "@smithers-orchestrator/gateway": "workspace:*", - "@smithers-orchestrator/gateway-client": "workspace:*", - }, - "devDependencies": { - "@happy-dom/global-registrator": "^20.9.0", - "@types/bun": "latest", - "@types/react": "^19.2.14", - "@types/react-dom": "^19.2.3", - "react": "^19.2.5", - "react-dom": "^19.2.5", - "typescript": "~5.9.3", - }, - "peerDependencies": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - }, + "packages/jj-linux-arm64": { + "name": "@smthrs/jj-linux-arm64", + "version": "0.23.0", }, - "packages/graph": { - "name": "@smithers-orchestrator/graph", - "version": "0.22.0", - "dependencies": { - "@smithers-orchestrator/errors": "workspace:*", - "drizzle-orm": "^0.45.2", - "zod": "^4.3.6", - }, - "devDependencies": { - "@types/bun": "latest", - "typescript": "~5.9.3", - }, - }, - "packages/memory": { - "name": "@smithers-orchestrator/memory", - "version": "0.22.0", - "dependencies": { - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "drizzle-orm": "^0.45.2", - "effect": "^3.21.1", - "zod": "^4.3.6", - }, - "devDependencies": { - "@types/bun": "latest", - "typescript": "~5.9.3", - }, + "packages/jj-linux-x64": { + "name": "@smthrs/jj-linux-x64", + "version": "0.23.0", }, - "packages/openapi": { - "name": "@smithers-orchestrator/openapi", - "version": "0.22.0", - "dependencies": { - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "ai": "^6.0.168", - "effect": "^3.21.1", - "yaml": "^2.8.3", - "zod": "^4.3.6", - }, - "devDependencies": { - "@types/bun": "latest", - "typescript": "~5.9.3", - }, + "packages/jj-win32-x64": { + "name": "@smthrs/jj-win32-x64", + "version": "0.23.0", }, "packages/pi-plugin": { - "name": "@smithers-orchestrator/pi-plugin", - "version": "0.22.0", + "name": "@smthrs/pi-plugin", + "version": "0.23.0", "dependencies": { "@mariozechner/pi-coding-agent": "^0.70.2", "@mariozechner/pi-tui": "^0.70.2", "@modelcontextprotocol/sdk": "^1.29.0", "@sinclair/typebox": "^0.34.49", - "@smithers-orchestrator/agents": "workspace:*", - "@smithers-orchestrator/cli": "workspace:*", - "@smithers-orchestrator/devtools": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/protocol": "workspace:*", + "@smthrs/agents": "^0.33.0", + "@smthrs/cli": "^0.33.0", + "@smthrs/devtools": "^0.33.0", + "@smthrs/errors": "^0.33.0", + "@smthrs/protocol": "^0.33.0", "ws": "^8.20.0", }, "devDependencies": { @@ -482,207 +211,26 @@ "typescript": "~5.9.3", }, }, - "packages/protocol": { - "name": "@smithers-orchestrator/protocol", - "version": "0.22.0", + "packages/tool-context": { + "name": "@smthrs/tool-context", + "version": "0.23.0", "devDependencies": { "@types/bun": "latest", "typescript": "~5.9.3", }, }, - "packages/react-reconciler": { - "name": "@smithers-orchestrator/react-reconciler", - "version": "0.22.0", - "dependencies": { - "@smithers-orchestrator/devtools": "workspace:*", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "bippy": "^0.5.39", - "react": "^19.2.5", - "react-reconciler": "^0.33.0", - }, - "devDependencies": { - "@types/bun": "latest", - "effect": "^3.21.1", - "typescript": "~5.9.3", - "zod": "^4.3.6", - }, - }, - "packages/sandbox": { - "name": "@smithers-orchestrator/sandbox", - "version": "0.22.0", - "dependencies": { - "@effect/cluster": "^0.58.0", - "@effect/rpc": "^0.75.0", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "effect": "^3.21.1", - }, - "devDependencies": { - "@types/bun": "latest", - "typescript": "~5.9.3", - }, - }, - "packages/scheduler": { - "name": "@smithers-orchestrator/scheduler", - "version": "0.22.0", - "dependencies": { - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "effect": "^3.21.1", - }, - "devDependencies": { - "@types/bun": "latest", - "typescript": "~5.9.3", - }, - }, - "packages/scorers": { - "name": "@smithers-orchestrator/scorers", - "version": "0.22.0", - "dependencies": { - "@smithers-orchestrator/agents": "workspace:*", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "drizzle-orm": "^0.45.2", - "effect": "^3.21.1", - "zod": "^4.3.6", - }, - "devDependencies": { - "@types/bun": "latest", - "typescript": "~5.9.3", - }, - }, - "packages/server": { - "name": "@smithers-orchestrator/server", - "version": "0.22.0", - "dependencies": { - "@effect/workflow": "^0.18.0", - "@smithers-orchestrator/components": "workspace:*", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/devtools": "workspace:*", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/engine": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/gateway": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/protocol": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "@smithers-orchestrator/time-travel": "workspace:*", - "cron-parser": "^5.5.0", - "drizzle-orm": "^0.45.2", - "effect": "^3.21.1", - "hono": "^4.12.14", - "ws": "^8.20.0", - }, - "devDependencies": { - "@smithers-orchestrator/graph": "workspace:*", - "@types/bun": "latest", - "react": "^19.2.5", - "typescript": "~5.9.3", - "zod": "^4.3.6", - }, - }, - "packages/smithers": { - "name": "smithers-orchestrator", - "version": "0.22.0", - "bin": { - "smithers": "./src/bin/smithers.js", - }, - "dependencies": { - "@mdx-js/esbuild": "^3.1.1", - "@smithers-orchestrator/agents": "workspace:*", - "@smithers-orchestrator/cli": "workspace:*", - "@smithers-orchestrator/components": "workspace:*", - "@smithers-orchestrator/control-plane": "workspace:*", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/engine": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/gateway-client": "workspace:*", - "@smithers-orchestrator/gateway-react": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "@smithers-orchestrator/memory": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/openapi": "workspace:*", - "@smithers-orchestrator/react-reconciler": "workspace:*", - "@smithers-orchestrator/sandbox": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "@smithers-orchestrator/scorers": "workspace:*", - "@smithers-orchestrator/server": "workspace:*", - "@smithers-orchestrator/time-travel": "workspace:*", - "@smithers-orchestrator/vcs": "workspace:*", - "ai": "^6.0.168", - "diff": "^9.0.0", - "drizzle-orm": "^0.45.2", - "effect": "^3.21.1", - "incur": "^0.4.1", - "react": "^19.2.5", - "zod": "^4.3.6", - }, - "devDependencies": { - "@types/bun": "latest", - "typescript": "~5.9.3", - }, - "optionalDependencies": { - "@electric-sql/pglite": "0.5.1", - "@electric-sql/pglite-socket": "0.2.1", - "pg": "^8.13.1", - }, - }, - "packages/time-travel": { - "name": "@smithers-orchestrator/time-travel", - "version": "0.22.0", - "dependencies": { - "@effect/platform": "^0.96.0", - "@effect/platform-bun": "^0.89.0", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "@smithers-orchestrator/vcs": "workspace:*", - "drizzle-orm": "^0.45.2", - "effect": "^3.21.1", - "picocolors": "^1.1.1", - }, - "devDependencies": { - "@types/bun": "latest", - "react": "^19.2.5", - "typescript": "~5.9.3", - }, - }, "packages/usage": { - "name": "@smithers-orchestrator/usage", - "version": "0.22.0", + "name": "@smthrs/usage", + "version": "0.23.0", "dependencies": { - "@smithers-orchestrator/accounts": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", + "@smthrs/accounts": "^0.33.0", + "@smthrs/errors": "^0.33.0", }, "devDependencies": { "@types/bun": "latest", "typescript": "~5.9.3", }, }, - "packages/vcs": { - "name": "@smithers-orchestrator/vcs", - "version": "0.22.0", - "dependencies": { - "@effect/platform": "^0.96.0", - "@smithers-orchestrator/observability": "workspace:*", - "effect": "^3.21.1", - }, - "devDependencies": { - "@effect/platform-bun": "^0.89.0", - "@types/bun": "latest", - "typescript": "~5.9.3", - }, - }, }, "overrides": { "@effect/cluster": "0.58.0", @@ -695,15 +243,17 @@ "packages": { "@ag-ui/core": ["@ag-ui/core@0.0.52", "", { "dependencies": { "zod": "^3.22.4" } }, "sha512-Xo0bUaNV56EqylzcrAuhUkQX7et7+SZIrqZZtEByGwEq/I1EHny6ZMkWHLkKR7UNi0FJZwJyhKYmKJS3B2SEgA=="], - "@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.73", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.25" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-SRTIqKK5ljxqUNNOFTysc/nFcn5uh4aCQBPOPZHygfQhWk3CMtV6zZhXx9kBk5X3O4Cz/JpBgauuL7SOEAiBbw=="], + "@ai-sdk/anthropic": ["@ai-sdk/anthropic@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "4.0.4", "@ai-sdk/provider-utils": "5.0.18" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ecrPWkYf+sHDLHErHAU/yjJfNevUzT0i6TuoQLb58oadnquSHcLQ5NMLLWjbr6d1rxYdzI7ftulIJ03VH9yM3w=="], - "@ai-sdk/gateway": ["@ai-sdk/gateway@3.0.107", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.25", "@vercel/oidc": "3.2.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-JwODLcuTe8rWXJwQcNPE5fiadjCOKHxNGtL5pHqEhFQSuWs6x47oVRkLs/Zw6eUhTsuXiZbyJ3QJHVIyLKX5hg=="], + "@ai-sdk/gateway": ["@ai-sdk/gateway@4.0.37", "", { "dependencies": { "@ai-sdk/provider": "4.0.4", "@ai-sdk/provider-utils": "5.0.18", "@vercel/oidc": "3.2.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-YBCTsSlX0ETVsjo0ihfBOeJ3p3y1wXKXDzF9Ygp9dscUY06dzOGmyWJSGsKg+khKVArzBWUW4UCSAKms20ZDmg=="], - "@ai-sdk/openai": ["@ai-sdk/openai@3.0.55", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.25" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-1pZPT/VEKbn/7ItAr5Hkhy41GxbjiJUhsgTFFIPTwYT7Ph/swuByl4YCXLSfuav27zSzQdscOoxCtDasseeQHA=="], + "@ai-sdk/openai": ["@ai-sdk/openai@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "4.0.4", "@ai-sdk/provider-utils": "5.0.18" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-6MsWnbNG0ZjZgzYimNNjnTAlOFXn+jdLMFB47dDVUsRNjxdUoTSduCQPZZeTKoUl0ZNwCjsJ31of49l/t1r9MA=="], - "@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "@ai-sdk/provider": ["@ai-sdk/provider@4.0.4", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-tbHKNLirllUNF3ZlkCsXnwab2ZV1Sl4b1H/Cp9ruCce15IBmskE8Gwkk0yo9xDWY+jho2of7lVXtwSsyrq7cwQ=="], - "@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.25", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-yjGPZPiJm79ZOYk0anXn2LkVqUFgStZqEOdyoynhkaAg+yOCuv6PJwf+1gUW0eSIUnYEboT2TPbPX/bxZpx4gw=="], + "@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@5.0.18", "", { "dependencies": { "@ai-sdk/provider": "4.0.4", "@standard-schema/spec": "^1.1.0", "@workflow/serde": "4.1.0", "eventsource-parser": "^3.0.8", "undici": "^7.28.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-UBNCrkxS5llgN2/RXLBRkjCFTIuL6YB1Goq5c+yRecnznhtX4XPjTwLHz2hrsTltTVZ0rqVegtnwFXdPBkjDHA=="], + + "@antfu/install-pkg": ["@antfu/install-pkg@1.1.0", "", { "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" } }, "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ=="], "@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.90.0", "", { "dependencies": { "json-schema-to-ts": "^3.1.1" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-MzZtPabJF1b0FTDl6Z6H5ljphPwACLGP13lu8MTiB8jXaW/YXlpOp+Po2cVou3MPM5+f5toyLnul9whKCy7fBg=="], @@ -785,17 +335,29 @@ "@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.2.4", "", {}, "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ=="], + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], + + "@babel/parser": ["@babel/parser@7.29.8", "", { "dependencies": { "@babel/types": "^7.29.8" }, "bin": "./bin/babel-parser.js" }, "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA=="], + "@babel/runtime": ["@babel/runtime@7.29.2", "", {}, "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g=="], + "@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], + "@babylonjs/core": ["@babylonjs/core@7.54.3", "", {}, "sha512-P5ncXVd8GEUJLhwloP9V0oVwQYIrvZztguVeLlvd5Rx+9aQnenKjpV8auJ6SRsUlAmNZU4pFTKzwF6o2EUfhAw=="], "@borewit/text-codec": ["@borewit/text-codec@0.2.2", "", {}, "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ=="], + "@braintree/sanitize-url": ["@braintree/sanitize-url@7.1.2", "", {}, "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA=="], + "@cfworker/json-schema": ["@cfworker/json-schema@4.1.1", "", {}, "sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og=="], - "@clack/core": ["@clack/core@0.4.2", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-NYQfcEy8MWIxrT5Fj8nIVchfRFA26yYKJcvBS7WlUIlw2OmQOY9DhGGXMovyI5J5PpxrCPGkgUi207EBrjpBvg=="], + "@chevrotain/types": ["@chevrotain/types@11.1.2", "", {}, "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw=="], - "@clack/prompts": ["@clack/prompts@0.10.1", "", { "dependencies": { "@clack/core": "0.4.2", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-Q0T02vx8ZM9XSv9/Yde0jTmmBQufZhPJfYAg2XrrrxWWaZgq1rr8nU8Hv710BQ1dhoP8rtY7YUdpGej2Qza/cw=="], + "@clack/core": ["@clack/core@1.4.3", "", { "dependencies": { "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ=="], + + "@clack/prompts": ["@clack/prompts@1.7.0", "", { "dependencies": { "@clack/core": "1.4.3", "fast-string-width": "^3.0.2", "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A=="], "@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.5.0", "", {}, "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg=="], @@ -815,6 +377,68 @@ "@cloudflare/workers-types": ["@cloudflare/workers-types@4.20260605.1", "", {}, "sha512-9YJaGPQwuQYFHoElVhJP40ZmUO/Z2OiBon58sKpHjgwq5btC/B2BZLC45AQ14k+1I+hjcY2z2t2R6uUxU9AqwQ=="], + "@codemirror/autocomplete": ["@codemirror/autocomplete@6.20.3", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0" } }, "sha512-tlosUqb+3BbxCxZdu4tKeRghPFC+QM7q4X5YhKV2eCmPG+1r2F3f4AaSz5sCrFqUtX4Jh20VFTKecl16MgiV9g=="], + + "@codemirror/commands": ["@codemirror/commands@6.10.4", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.7.0", "@codemirror/view": "^6.27.0", "@lezer/common": "^1.1.0" } }, "sha512-Ryk9y9T0FFVF0cUGhAknveAyUOl/A1qReTFi+qPKtOh2Z9F4AUBz3XOrYD4ZEgZirdugVzHvd/2/Wcwy5OliTg=="], + + "@codemirror/lang-angular": ["@codemirror/lang-angular@0.1.4", "", { "dependencies": { "@codemirror/lang-html": "^6.0.0", "@codemirror/lang-javascript": "^6.1.2", "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.3" } }, "sha512-oap+gsltb/fzdlTQWD6BFF4bSLKcDnlxDsLdePiJpCVNKWXSTAbiiQeYI3UmES+BLAdkmIC1WjyztC1pi/bX4g=="], + + "@codemirror/lang-cpp": ["@codemirror/lang-cpp@6.0.3", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/cpp": "^1.0.0" } }, "sha512-URM26M3vunFFn9/sm6rzqrBzDgfWuDixp85uTY49wKudToc2jTHUrKIGGKs+QWND+YLofNNZpxcNGRynFJfvgA=="], + + "@codemirror/lang-css": ["@codemirror/lang-css@6.3.1", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.0.2", "@lezer/css": "^1.1.7" } }, "sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg=="], + + "@codemirror/lang-go": ["@codemirror/lang-go@6.0.1", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.6.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/go": "^1.0.0" } }, "sha512-7fNvbyNylvqCphW9HD6WFnRpcDjr+KXX/FgqXy5H5ZS0eC5edDljukm/yNgYkwTsgp2busdod50AOTIy6Jikfg=="], + + "@codemirror/lang-html": ["@codemirror/lang-html@6.4.11", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-css": "^6.0.0", "@codemirror/lang-javascript": "^6.0.0", "@codemirror/language": "^6.4.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0", "@lezer/css": "^1.1.0", "@lezer/html": "^1.3.12" } }, "sha512-9NsXp7Nwp891pQchI7gPdTwBuSuT3K65NGTHWHNJ55HjYcHLllr0rbIZNdOzas9ztc1EUVBlHou85FFZS4BNnw=="], + + "@codemirror/lang-java": ["@codemirror/lang-java@6.0.2", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/java": "^1.0.0" } }, "sha512-m5Nt1mQ/cznJY7tMfQTJchmrjdjQ71IDs+55d1GAa8DGaB8JXWsVCkVT284C3RTASaY43YknrK2X3hPO/J3MOQ=="], + + "@codemirror/lang-javascript": ["@codemirror/lang-javascript@6.2.5", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.6.0", "@codemirror/lint": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0", "@lezer/javascript": "^1.0.0" } }, "sha512-zD4e5mS+50htS7F+TYjBPsiIFGanfVqg4HyUz6WNFikgOPf2BgKlx+TQedI1w6n/IqRBVBbBWmGFdLB/7uxO4A=="], + + "@codemirror/lang-jinja": ["@codemirror/lang-jinja@6.0.1", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.2.0", "@lezer/lr": "^1.4.0" } }, "sha512-P5kyHLObzjtbGj16h+hyvZTxJhSjBEeSx4wMjbnAf3b0uwTy2+F0zGjMZL4PQOm/mh2eGZ5xUDVZXgwP783Nsw=="], + + "@codemirror/lang-json": ["@codemirror/lang-json@6.0.2", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/json": "^1.0.0" } }, "sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ=="], + + "@codemirror/lang-less": ["@codemirror/lang-less@6.0.2", "", { "dependencies": { "@codemirror/lang-css": "^6.2.0", "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ=="], + + "@codemirror/lang-liquid": ["@codemirror/lang-liquid@6.3.2", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.1" } }, "sha512-6PDVU3ZnfeYyz1at1E/ttorErZvZFXXt1OPhtfe1EZJ2V2iDFa0CwPqPgG5F7NXN0yONGoBogKmFAafKTqlwIw=="], + + "@codemirror/lang-markdown": ["@codemirror/lang-markdown@6.5.1", "", { "dependencies": { "@codemirror/autocomplete": "^6.7.1", "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.3.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.2.1", "@lezer/markdown": "^1.0.0" } }, "sha512-6re5avCNfyRMIoi3XNjbEfQM1vTeVD3JS3g/Fyegyso/eoANFM71Cyvbb66LDyYtQLMEcRFlzioywCqDo9SlLA=="], + + "@codemirror/lang-php": ["@codemirror/lang-php@6.0.2", "", { "dependencies": { "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/php": "^1.0.0" } }, "sha512-ZKy2v1n8Fc8oEXj0Th0PUMXzQJ0AIR6TaZU+PbDHExFwdu+guzOA4jmCHS1Nz4vbFezwD7LyBdDnddSJeScMCA=="], + + "@codemirror/lang-python": ["@codemirror/lang-python@6.2.1", "", { "dependencies": { "@codemirror/autocomplete": "^6.3.2", "@codemirror/language": "^6.8.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.2.1", "@lezer/python": "^1.1.4" } }, "sha512-IRjC8RUBhn9mGR9ywecNhB51yePWCGgvHfY1lWN/Mrp3cKuHr0isDKia+9HnvhiWNnMpbGhWrkhuWOc09exRyw=="], + + "@codemirror/lang-rust": ["@codemirror/lang-rust@6.0.2", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/rust": "^1.0.0" } }, "sha512-EZaGjCUegtiU7kSMvOfEZpaCReowEf3yNidYu7+vfuGTm9ow4mthAparY5hisJqOHmJowVH3Upu+eJlUji6qqA=="], + + "@codemirror/lang-sass": ["@codemirror/lang-sass@6.0.2", "", { "dependencies": { "@codemirror/lang-css": "^6.2.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.0.2", "@lezer/sass": "^1.0.0" } }, "sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q=="], + + "@codemirror/lang-sql": ["@codemirror/lang-sql@6.10.0", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-6ayPkEd/yRw0XKBx5uAiToSgGECo/GY2NoJIHXIIQh1EVwLuKoU8BP/qK0qH5NLXAbtJRLuT73hx7P9X34iO4w=="], + + "@codemirror/lang-vue": ["@codemirror/lang-vue@0.1.3", "", { "dependencies": { "@codemirror/lang-html": "^6.0.0", "@codemirror/lang-javascript": "^6.1.2", "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.1" } }, "sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug=="], + + "@codemirror/lang-wast": ["@codemirror/lang-wast@6.0.2", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-Imi2KTpVGm7TKuUkqyJ5NRmeFWF7aMpNiwHnLQe0x9kmrxElndyH0K6H/gXtWwY6UshMRAhpENsgfpSwsgmC6Q=="], + + "@codemirror/lang-xml": ["@codemirror/lang-xml@6.1.0", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.4.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/xml": "^1.0.0" } }, "sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg=="], + + "@codemirror/lang-yaml": ["@codemirror/lang-yaml@6.1.3", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.2.0", "@lezer/lr": "^1.0.0", "@lezer/yaml": "^1.0.0" } }, "sha512-AZ8DJBuXGVHybpBQhmZtgew5//4hv3tdkXnr3vDmOUMJRuB6vn/uuwtmTOTlqEaQFg3hQSVeA90NmvIQyUV6FQ=="], + + "@codemirror/language": ["@codemirror/language@6.12.4", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.23.0", "@lezer/common": "^1.5.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0", "style-mod": "^4.0.0" } }, "sha512-1q4PaT+o6PbgpkJt4Q8Fv5XJxTy4FUZ4MWETtyiDw3J0Pyr9E2vqcKL+k9wcvjNTIsauxvE7OfmWj3FRPHQ76A=="], + + "@codemirror/language-data": ["@codemirror/language-data@6.5.2", "", { "dependencies": { "@codemirror/lang-angular": "^0.1.0", "@codemirror/lang-cpp": "^6.0.0", "@codemirror/lang-css": "^6.0.0", "@codemirror/lang-go": "^6.0.0", "@codemirror/lang-html": "^6.0.0", "@codemirror/lang-java": "^6.0.0", "@codemirror/lang-javascript": "^6.0.0", "@codemirror/lang-jinja": "^6.0.0", "@codemirror/lang-json": "^6.0.0", "@codemirror/lang-less": "^6.0.0", "@codemirror/lang-liquid": "^6.0.0", "@codemirror/lang-markdown": "^6.0.0", "@codemirror/lang-php": "^6.0.0", "@codemirror/lang-python": "^6.0.0", "@codemirror/lang-rust": "^6.0.0", "@codemirror/lang-sass": "^6.0.0", "@codemirror/lang-sql": "^6.0.0", "@codemirror/lang-vue": "^0.1.1", "@codemirror/lang-wast": "^6.0.0", "@codemirror/lang-xml": "^6.0.0", "@codemirror/lang-yaml": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/legacy-modes": "^6.4.0" } }, "sha512-CPkWBKrNS8stYbEU5kwBwTf3JB1kghlbh4FSAwzGW2TEscdeHHH4FGysREW86Mqnj3Qn09s0/6Ea/TutmoTobg=="], + + "@codemirror/legacy-modes": ["@codemirror/legacy-modes@6.5.3", "", { "dependencies": { "@codemirror/language": "^6.0.0" } }, "sha512-xCsmIzH78MyWkib9jlPaaun57XNkfbMIhagfaZVd0iLTqlpw3jXaIcbZm72MTmmn64eTZpBVNjbyYh+QXnxRsg=="], + + "@codemirror/lint": ["@codemirror/lint@6.9.7", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.42.0", "crelt": "^1.0.5" } }, "sha512-28/+iWLYxKxsvGYhSYL7zaCZqLz5+FFFDq9tVsvGv9kv8RY4fFAchJ5WX9M3YrrRlTIsECjsXPqeNgnSmNP2dg=="], + + "@codemirror/search": ["@codemirror/search@6.7.1", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.37.0", "crelt": "^1.0.5" } }, "sha512-uMe5UO6PamJtSHrXhhHOzSX3ReWtiJrva6GnPMwSOrZtiExb5X5eExhr2OUZQVvdxPsKpY3Ro2mFbQadpPWmHA=="], + + "@codemirror/state": ["@codemirror/state@6.7.1", "", { "dependencies": { "@marijn/find-cluster-break": "^1.0.0" } }, "sha512-9QzNDgE4EYDnAHfrTlR2lwiPciiOymLtwKK+8yHQzCc7GXhAP9xdEbEJFy2IWB1j9UGUl9BsgMmTo/ImA02T7A=="], + + "@codemirror/theme-one-dark": ["@codemirror/theme-one-dark@6.1.3", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/highlight": "^1.0.0" } }, "sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA=="], + + "@codemirror/view": ["@codemirror/view@6.43.7", "", { "dependencies": { "@codemirror/state": "^6.7.0", "crelt": "^1.0.6", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, "sha512-FZsExxkoxnAN+d9TgqXLg5g4A1oQwzX9WlkOT5i2PKkcW7xx3Bmu0vs90g6fo9Mpdsb/l96dnAraQ8932aO4/g=="], + "@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="], "@dino-dna/react-tui": ["@dino-dna/react-tui@1.0.1", "", { "dependencies": { "@seznam/compose-react-refs": "^1.0.4", "patch-package": "^6.2.2", "react": "^16.13.1", "react-reconciler": "^0.25.1" } }, "sha512-wyLuVEIqibueoP9YkJymghSJffgR6yZFflT2nYyE635GMUrQi9rY2Fi23FPRoiEDMhscuHmTzwFEbLTH2cbdEg=="], @@ -823,23 +447,25 @@ "@effect/experimental": ["@effect/experimental@0.60.0", "", { "dependencies": { "uuid": "^11.0.3" }, "peerDependencies": { "@effect/platform": "^0.96.0", "effect": "^3.21.0", "ioredis": "^5", "lmdb": "^3" }, "optionalPeers": ["ioredis", "lmdb"] }, "sha512-i5zIg7Xup2KgHyqHlYtkgqSE1bNzCL0GbbTQxrpIzKF0q/ebknOk/ox8B/gIq2vImjoEE81h/oxU+6i1NH210g=="], - "@effect/opentelemetry": ["@effect/opentelemetry@0.63.0", "", { "peerDependencies": { "@effect/platform": "^0.96.0", "@opentelemetry/api": "^1.9", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-logs": ">=0.203.0 <0.300.0", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/sdk-trace-web": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.33.0", "effect": "^3.21.0" } }, "sha512-2yUG2QWNATi1uKP0kwhaP5eLp+c5NDzAL3EOpIcGLBAC0cbXZrx4n9Qw/QwUKxpuV+pbhrBUPCiByyWAFKfuCw=="], + "@effect/opentelemetry": ["@effect/opentelemetry@4.0.0-beta.102", "", { "peerDependencies": { "@opentelemetry/api": "^1.9", "@opentelemetry/api-logs": ">=0.203.0 <0.300.0", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-logs": ">=0.203.0 <0.300.0", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/sdk-trace-web": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.33.0", "effect": "^4.0.0-beta.102" }, "optionalPeers": ["@opentelemetry/api", "@opentelemetry/api-logs", "@opentelemetry/resources", "@opentelemetry/sdk-logs", "@opentelemetry/sdk-metrics", "@opentelemetry/sdk-trace-base", "@opentelemetry/sdk-trace-node", "@opentelemetry/sdk-trace-web"] }, "sha512-U15cxJ1uf3+HMnZB0BUQe3U4TuyIPYxSHJ+wEzkF4ZjteN224hsgeTgsyXSFjSIpWDVWfujdGPqmtkDpcMzf6w=="], "@effect/platform": ["@effect/platform@0.96.0", "", { "dependencies": { "find-my-way-ts": "^0.1.6", "msgpackr": "^1.11.4", "multipasta": "^0.2.7" }, "peerDependencies": { "effect": "^3.21.0" } }, "sha512-U7PLhkVzg7zzrgFvyWATOzD6reL87KG/fcdOxgLWBQ/J5CCU6qdPAVG+0o6o+IxcsLoqGwxs+rFxaFzrdtDV1A=="], - "@effect/platform-bun": ["@effect/platform-bun@0.89.0", "", { "dependencies": { "@effect/platform-node-shared": "^0.59.0", "multipasta": "^0.2.7" }, "peerDependencies": { "@effect/cluster": "^0.58.0", "@effect/platform": "^0.96.0", "@effect/rpc": "^0.75.0", "@effect/sql": "^0.51.0", "effect": "^3.21.0" } }, "sha512-ReT5f2vujJfffMOBexrgwJd2RLxgfr2G0c1FyCsoflcjdQJ7RZE3cwHDp1M3hAzmG67wWAssMHqLsX6H/n27sQ=="], + "@effect/platform-bun": ["@effect/platform-bun@4.0.0-beta.102", "", { "dependencies": { "@effect/platform-node-shared": "^4.0.0-beta.102" }, "peerDependencies": { "effect": "^4.0.0-beta.102" } }, "sha512-hTIb0jjTfXhNgnDq2OX5wrigc0OSvTT0VWWb1PLpMM395RJPu8rCIbTlGhy0NS7kZOd8FfgNi9e0sDhgyu+5Ag=="], - "@effect/platform-node-shared": ["@effect/platform-node-shared@0.59.0", "", { "dependencies": { "@parcel/watcher": "^2.5.1", "multipasta": "^0.2.7", "ws": "^8.18.2" }, "peerDependencies": { "@effect/cluster": "^0.58.0", "@effect/platform": "^0.96.0", "@effect/rpc": "^0.75.0", "@effect/sql": "^0.51.0", "effect": "^3.21.0" } }, "sha512-3bq2YKKfLY7UFauZSxqZUneCXoA3SMSls82V+0RKunvRlfPuPQW0hVn6t1RkvEdh0PDoygWG2mZXYQa6Iqgp9A=="], + "@effect/platform-node-shared": ["@effect/platform-node-shared@4.0.0-beta.102", "", { "dependencies": { "@types/ws": "^8.18.1", "ws": "^8.21.0" }, "peerDependencies": { "effect": "^4.0.0-beta.102" } }, "sha512-gVd793I72MrkX4dXo7eYtRKfNj0RW4eMRfVEKEJI16h2+mBDCzQ+gqMrog2hSTHQnaIbvbYShNQ4TVGuRCYZeQ=="], "@effect/rpc": ["@effect/rpc@0.75.0", "", { "dependencies": { "msgpackr": "^1.11.4" }, "peerDependencies": { "@effect/platform": "^0.96.0", "effect": "^3.21.0" } }, "sha512-VFeJ16cZUXqiIzG9UHOVKGuiBPJ7fV+0lEbJU6xi12JnnxXe/19BQPpOwiRawCUbPOR3/xIURDUgGxU+Ft0pvQ=="], "@effect/sql": ["@effect/sql@0.51.0", "", { "dependencies": { "uuid": "^11.0.3" }, "peerDependencies": { "@effect/experimental": "^0.60.0", "@effect/platform": "^0.96.0", "effect": "^3.21.0" } }, "sha512-e7hWe46QD15eMCr4kNBMVdItIVK/WLHJG+d8DLL1FjVf5Ra82k2mwUYIXplJewVbHjt3my6GSKPPd1ZrQjVd5A=="], - "@effect/sql-sqlite-bun": ["@effect/sql-sqlite-bun@0.52.0", "", { "peerDependencies": { "@effect/experimental": "^0.60.0", "@effect/platform": "^0.96.0", "@effect/sql": "^0.51.0", "effect": "^3.21.0" } }, "sha512-iqQ7SvSNxq0HLjKW5IQ29FsCTzOD1CuX1wuBEuPLLgPCvuEykEHLn4zDrs2qJ+O3CBEUm4kiCy29tmfHE7uAdw=="], + "@effect/sql-sqlite-bun": ["@effect/sql-sqlite-bun@4.0.0-beta.102", "", { "peerDependencies": { "effect": "^4.0.0-beta.102" } }, "sha512-pBO6FBJ+a21j2qHmzJDK1DeJsxm7HpUQBgucw6prHQXLMUBkhOsfZofhw1FKEdGRDEhO0sGTjffa2KP7iOuDIg=="], "@effect/workflow": ["@effect/workflow@0.18.0", "", { "peerDependencies": { "@effect/experimental": "^0.60.0", "@effect/platform": "^0.96.0", "@effect/rpc": "^0.75.0", "effect": "^3.21.0" } }, "sha512-9Zp+x9ADtR0H6CRhU6wLyPcIRjO1PXjvSpUlFlBQ8piw7ldjPmnUWEY8YQuH6eExV2dalQ4z2LMiZ5Bd7XAJbA=="], - "@electric-sql/pglite": ["@electric-sql/pglite@0.5.1", "", {}, "sha512-h2Vc+qkQqsEL5kvyN5nBAxn3Vbyvka7QfDW7Io+CdcwU1+X8JbCAN2og+5dI11S3eJuDfroUCxzJaap6k+ezEw=="], + "@electric-sql/client": ["@electric-sql/client@1.5.24", "", { "dependencies": { "@microsoft/fetch-event-source": "^2.0.1" }, "optionalDependencies": { "@rollup/rollup-darwin-arm64": "^4.18.1" }, "bin": { "intent": "bin/intent.mjs" } }, "sha512-ItOjBFTfiZvYosglF9Dn4TSqE59yL/psoemHJ7vX8gvEUmElHB2QdP5eQC6q9/lswyv7oqhkZT0Kk8kuq2P5vA=="], + + "@electric-sql/pglite": ["@electric-sql/pglite@0.5.4", "", {}, "sha512-yYZUyyXrHU7tPlCjwZQJ6hIG9DscdCCn7Uk0mYKwC1FeHX286AbcmFveMiRBEak8e9iPupjsoVImN3yJZVed2g=="], "@electric-sql/pglite-age": ["@electric-sql/pglite-age@0.0.2", "", { "peerDependencies": { "@electric-sql/pglite": "0.5.1" } }, "sha512-0Q+QnbSSZjJt3aF/wycuXpC1HxyemkAumYSodKlIkjobx/Cu/U9a9lazuwlAzB1GOZuCuB6JUiYjGcJMnvN7zA=="], @@ -855,7 +481,7 @@ "@electric-sql/pglite-pgvector": ["@electric-sql/pglite-pgvector@0.0.2", "", { "peerDependencies": { "@electric-sql/pglite": "0.5.1" } }, "sha512-Gu9Nv7JHlg6BgOLqPCR6lCjI+3xlb7ej5qUtHWmzEYA0ZKzuNgeDK16nRO0ELInwzhLptLqX7VdWyYRElSXjdQ=="], - "@electric-sql/pglite-socket": ["@electric-sql/pglite-socket@0.2.1", "", { "peerDependencies": { "@electric-sql/pglite": "0.5.1", "@electric-sql/pglite-age": "0.0.2", "@electric-sql/pglite-pg_hashids": "0.0.2", "@electric-sql/pglite-pg_ivm": "0.0.2", "@electric-sql/pglite-pg_textsearch": "0.0.2", "@electric-sql/pglite-pg_uuidv7": "0.0.2", "@electric-sql/pglite-pgtap": "0.0.2", "@electric-sql/pglite-pgvector": "0.0.2" }, "bin": { "pglite-server": "dist/scripts/server.js" } }, "sha512-i/vxFji/crDNIEEwwDcIH0Y7dShG039+uepAyHZqvAM/o+LCnM3LXcoIxtQoo2fUIThaUDVF5NMy7NAQkq79FQ=="], + "@electric-sql/pglite-socket": ["@electric-sql/pglite-socket@0.2.7", "", { "peerDependencies": { "@electric-sql/pglite": "0.5.4", "@electric-sql/pglite-age": "0.0.5", "@electric-sql/pglite-pg_hashids": "0.0.5", "@electric-sql/pglite-pg_ivm": "0.0.5", "@electric-sql/pglite-pg_textsearch": "0.0.6", "@electric-sql/pglite-pg_uuidv7": "0.0.5", "@electric-sql/pglite-pgtap": "0.0.5", "@electric-sql/pglite-pgvector": "0.0.5" }, "bin": { "pglite-server": "dist/scripts/server.js" } }, "sha512-lhYx1OOVueiWJRa2Uj1QiIjCWmpRnYLNs5rRH/g47EqrYXP/Qt3VvcXGGum4uIouKKMVlPlkXb6E5Uw0aHRymw=="], "@emnapi/core": ["@emnapi/core@1.10.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" } }, "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw=="], @@ -863,57 +489,65 @@ "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="], - "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.7", "", { "os": "aix", "cpu": "ppc64" }, "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg=="], + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.28.0", "", { "os": "android", "cpu": "arm" }, "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.0", "", { "os": "android", "cpu": "arm64" }, "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.28.0", "", { "os": "android", "cpu": "x64" }, "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA=="], - "@esbuild/android-arm": ["@esbuild/android-arm@0.27.7", "", { "os": "android", "cpu": "arm" }, "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ=="], + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q=="], - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.7", "", { "os": "android", "cpu": "arm64" }, "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ=="], + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ=="], - "@esbuild/android-x64": ["@esbuild/android-x64@0.27.7", "", { "os": "android", "cpu": "x64" }, "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg=="], + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q=="], - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw=="], + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw=="], - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.7", "", { "os": "darwin", "cpu": "x64" }, "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ=="], + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.0", "", { "os": "linux", "cpu": "arm" }, "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw=="], - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.7", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w=="], + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A=="], - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.7", "", { "os": "freebsd", "cpu": "x64" }, "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ=="], + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ=="], - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.7", "", { "os": "linux", "cpu": "arm" }, "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA=="], + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg=="], - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A=="], + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w=="], - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.7", "", { "os": "linux", "cpu": "ia32" }, "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg=="], + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg=="], - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.7", "", { "os": "linux", "cpu": "none" }, "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q=="], + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ=="], - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.7", "", { "os": "linux", "cpu": "none" }, "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw=="], + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q=="], - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.7", "", { "os": "linux", "cpu": "ppc64" }, "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ=="], + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.0", "", { "os": "linux", "cpu": "x64" }, "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ=="], - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.7", "", { "os": "linux", "cpu": "none" }, "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ=="], + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.0", "", { "os": "none", "cpu": "arm64" }, "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw=="], - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.7", "", { "os": "linux", "cpu": "s390x" }, "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw=="], + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.0", "", { "os": "none", "cpu": "x64" }, "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw=="], - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.7", "", { "os": "linux", "cpu": "x64" }, "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA=="], + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g=="], - "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.7", "", { "os": "none", "cpu": "arm64" }, "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w=="], + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA=="], - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.7", "", { "os": "none", "cpu": "x64" }, "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw=="], + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.0", "", { "os": "none", "cpu": "arm64" }, "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w=="], - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.7", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A=="], + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw=="], - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.7", "", { "os": "openbsd", "cpu": "x64" }, "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg=="], + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA=="], - "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.7", "", { "os": "none", "cpu": "arm64" }, "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw=="], + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA=="], - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.7", "", { "os": "sunos", "cpu": "x64" }, "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA=="], + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.0", "", { "os": "win32", "cpu": "x64" }, "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw=="], - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.7", "", { "os": "win32", "cpu": "arm64" }, "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA=="], + "@floating-ui/core": ["@floating-ui/core@1.8.0", "", { "dependencies": { "@floating-ui/utils": "^0.2.12" } }, "sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ=="], - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.7", "", { "os": "win32", "cpu": "ia32" }, "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw=="], + "@floating-ui/dom": ["@floating-ui/dom@1.8.0", "", { "dependencies": { "@floating-ui/core": "^1.8.0", "@floating-ui/utils": "^0.2.12" } }, "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg=="], - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.7", "", { "os": "win32", "cpu": "x64" }, "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg=="], + "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.9", "", { "dependencies": { "@floating-ui/dom": "^1.8.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg=="], + + "@floating-ui/utils": ["@floating-ui/utils@0.2.12", "", {}, "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww=="], "@google/genai": ["@google/genai@1.51.0", "", { "dependencies": { "google-auth-library": "^10.3.0", "p-retry": "^4.6.2", "protobufjs": "^7.5.4", "ws": "^8.18.0" }, "peerDependencies": { "@modelcontextprotocol/sdk": "^1.25.2" }, "optionalPeers": ["@modelcontextprotocol/sdk"] }, "sha512-vTZZF3CSimN7cn2zsLpW2p5WF0eZa5Gz69ITMPCNHpPrDlAstOfGifSfi0p/s9Z9400f7xJRkgvkQNrcM7pJ6w=="], @@ -923,6 +557,10 @@ "@iarna/toml": ["@iarna/toml@2.2.5", "", {}, "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg=="], + "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], + + "@iconify/utils": ["@iconify/utils@3.1.4", "", { "dependencies": { "@antfu/install-pkg": "^1.1.0", "@iconify/types": "^2.0.0", "import-meta-resolve": "^4.2.0" } }, "sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw=="], + "@img/colour": ["@img/colour@1.1.0", "", {}, "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ=="], "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], @@ -983,8 +621,44 @@ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + "@lezer/common": ["@lezer/common@1.5.2", "", {}, "sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ=="], + + "@lezer/cpp": ["@lezer/cpp@1.1.6", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-vh9gWWJOXFVY8HBHK3Twzq8MgwG2iN4GSyzBP9sCGTe37P15x2R14VaBQk0VA0ezTRN1KHYBBsHhvpGZ2Xy/pA=="], + + "@lezer/css": ["@lezer/css@1.3.5", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.0" } }, "sha512-PrlQ8glBdWS5UOqgnFCmPxAJbhuOhb0WoDnSAXiNQPjivlDujhuUQ1K/fxyk2vFoq4VTBgFtFZOc8sOpiYjz5g=="], + + "@lezer/go": ["@lezer/go@1.0.1", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.0" } }, "sha512-xToRsYxwsgJNHTgNdStpcvmbVuKxTapV0dM0wey1geMMRc9aggoVyKgzYp41D2/vVOx+Ii4hmE206kvxIXBVXQ=="], + + "@lezer/highlight": ["@lezer/highlight@1.2.3", "", { "dependencies": { "@lezer/common": "^1.3.0" } }, "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g=="], + + "@lezer/html": ["@lezer/html@1.3.13", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-oI7n6NJml729m7pjm9lvLvmXbdoMoi2f+1pwSDJkl9d68zGr7a9Btz8NdHTGQZtW2DA25ybeuv/SyDb9D5tseg=="], + + "@lezer/java": ["@lezer/java@1.1.3", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw=="], + + "@lezer/javascript": ["@lezer/javascript@1.5.4", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.1.3", "@lezer/lr": "^1.3.0" } }, "sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA=="], + + "@lezer/json": ["@lezer/json@1.0.3", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ=="], + + "@lezer/lr": ["@lezer/lr@1.4.10", "", { "dependencies": { "@lezer/common": "^1.0.0" } }, "sha512-rnCpTIBafOx4mRp43xOxDJbFipJm/c0cia/V5TiGlhmMa+wsSdoGmUN3w5Bqrks/09Q/D4tNAmWaT8p6NRi77A=="], + + "@lezer/markdown": ["@lezer/markdown@1.7.2", "", { "dependencies": { "@lezer/common": "^1.5.0", "@lezer/highlight": "^1.0.0" } }, "sha512-iTkYvoVcKt3WkeL7qUDyXHONZEwLio4wj8KTNi2dnjQEXBZKMV63BpQrPqfsM+OkvuRbiSTAcycYAsQzLhRNoQ=="], + + "@lezer/php": ["@lezer/php@1.0.5", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.1.0" } }, "sha512-W7asp9DhM6q0W6DYNwIkLSKOvxlXRrif+UXBMxzsJUuqmhE7oVU+gS3THO4S/Puh7Xzgm858UNaFi6dxTP8dJA=="], + + "@lezer/python": ["@lezer/python@1.1.19", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-MhQIURHRytsNzP/YXnqpYKW6la6voAH3kyplTOOiCdjyFY6cWWGFVmYVdHIPrElqSDf4iCDktQCockB9FxuhzQ=="], + + "@lezer/rust": ["@lezer/rust@1.0.2", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg=="], + + "@lezer/sass": ["@lezer/sass@1.1.0", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-3mMGdCTUZ/84ArHOuXWQr37pnf7f+Nw9ycPUeKX+wu19b7pSMcZGLbaXwvD2APMBDOGxPmpK/O6S1v1EvLoqgQ=="], + + "@lezer/xml": ["@lezer/xml@1.0.6", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww=="], + + "@lezer/yaml": ["@lezer/yaml@1.0.4", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.4.0" } }, "sha512-2lrrHqxalACEbxIbsjhqGpSW8kWpUKuY6RHgnSAFZa6qK62wvnPxA8hGOwOoDbwHcOFs5M4o27mjGu+P7TvBmw=="], + "@malept/cross-spawn-promise": ["@malept/cross-spawn-promise@1.1.1", "", { "dependencies": { "cross-spawn": "^7.0.1" } }, "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ=="], + "@marijn/find-cluster-break": ["@marijn/find-cluster-break@1.0.3", "", {}, "sha512-FY+MKLBoTsLNJF/eLWaOsXGdz6uh3Iu1axjPf6TUq92IYumcTcXWHoS747JARLkcdlJ/Waiaxc5wQfFO8jC6NA=="], + "@mariozechner/clipboard": ["@mariozechner/clipboard@0.3.5", "", { "optionalDependencies": { "@mariozechner/clipboard-darwin-arm64": "0.3.2", "@mariozechner/clipboard-darwin-universal": "0.3.2", "@mariozechner/clipboard-darwin-x64": "0.3.2", "@mariozechner/clipboard-linux-arm64-gnu": "0.3.2", "@mariozechner/clipboard-linux-arm64-musl": "0.3.2", "@mariozechner/clipboard-linux-riscv64-gnu": "0.3.2", "@mariozechner/clipboard-linux-x64-gnu": "0.3.2", "@mariozechner/clipboard-linux-x64-musl": "0.3.2", "@mariozechner/clipboard-win32-arm64-msvc": "0.3.2", "@mariozechner/clipboard-win32-x64-msvc": "0.3.2" } }, "sha512-D3F+UrU9CR7roJt0zDLp6Oc+4/KlLDIrN4frH+6V90SJNW2KKUec1oCQIPaaDjCqeOsQyX9dyqYbImIQIM45PA=="], "@mariozechner/clipboard-darwin-arm64": ["@mariozechner/clipboard-darwin-arm64@0.3.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-uBf6K7Je1ihsgvmWxA8UCGCeI+nbRVRXoarZdLjl6slz94Zs1tNKFZqx7aCI5O1i3e0B6ja82zZ06BWrl0MCVw=="], @@ -1021,11 +695,61 @@ "@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="], + "@mermaid-js/parser": ["@mermaid-js/parser@1.2.0", "", { "dependencies": { "@chevrotain/types": "~11.1.2" } }, "sha512-oYPyv8A4As1yH5Bx+04iQEQxXuIQDe0GKCNSRgao6z8AM9jixXIfP0vsppRLvGf+nKIOb9/LdpWA4YuJiVvESA=="], + + "@microsoft/fetch-event-source": ["@microsoft/fetch-event-source@2.0.1", "", {}, "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA=="], + + "@milkdown/components": ["@milkdown/components@7.21.2", "", { "dependencies": { "@floating-ui/dom": "^1.5.1", "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/exception": "7.21.2", "@milkdown/plugin-diff": "7.21.2", "@milkdown/plugin-tooltip": "7.21.2", "@milkdown/preset-commonmark": "7.21.2", "@milkdown/preset-gfm": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/transformer": "7.21.2", "@milkdown/utils": "7.21.2", "@types/lodash-es": "^4.17.12", "clsx": "^2.0.0", "dompurify": "^3.2.5", "lodash-es": "^4.17.21", "nanoid": "^5.0.9", "unist-util-visit": "^5.0.0", "vue": "^3.5.20" }, "peerDependencies": { "@codemirror/language": "^6", "@codemirror/state": "^6", "@codemirror/view": "^6" } }, "sha512-u3eCgRAnJgglZtJ6m5g09OF3SFPOagCe3xFvqtXRaUdX0/7E9z3hOvXkuisZNQUEF9623qwT/zNhK2rctvuFrg=="], + + "@milkdown/core": ["@milkdown/core@7.21.2", "", { "dependencies": { "@milkdown/ctx": "7.21.2", "@milkdown/exception": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/transformer": "7.21.2", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.3" } }, "sha512-b9xrcN9g+o05skEc4O78vGPvwJm1sbfqIPROncZH2vSE/lOIcp9AR1SdqveWmhymd/QILgTzW9WsnJfgQkGMXQ=="], + + "@milkdown/crepe": ["@milkdown/crepe@7.21.2", "", { "dependencies": { "@codemirror/commands": "^6.2.4", "@codemirror/language": "^6.10.1", "@codemirror/language-data": "^6.3.1", "@codemirror/state": "^6.4.1", "@codemirror/theme-one-dark": "^6.1.2", "@codemirror/view": "^6.16.0", "@milkdown/kit": "7.21.2", "@types/lodash-es": "^4.17.12", "clsx": "^2.0.0", "codemirror": "^6.0.1", "dompurify": "^3.2.5", "katex": "^0.17.0", "lodash-es": "^4.17.21", "prosemirror-virtual-cursor": "^0.4.2", "remark-math": "^6.0.0", "unist-util-visit": "^5.0.0", "vue": "^3.5.20" } }, "sha512-3BaEADeWxVYTn6TwromOKnu/m5GLJvIKGl4VlHJ9dVpdh7VLEwLbggfw5nweQmpnGWEaqyDplk2uPH0xK5MMhg=="], + + "@milkdown/ctx": ["@milkdown/ctx@7.21.2", "", { "dependencies": { "@milkdown/exception": "7.21.2" } }, "sha512-dqiA0GeERv86QEde+ZvxqBy4cDmfAsfLTIpi10doFJLKLerei23TVb5lHD8/CGUVqpS995MTu3dAFRBs9C0q5Q=="], + + "@milkdown/exception": ["@milkdown/exception@7.21.2", "", {}, "sha512-/6QkN1XmEtVHe5XhPm87lCUtV9qQNRHuAhxki/wtF+10vAeq8xOBW9/S5Kv/zpS9DSgdM/Ce+BPO3+yT1FIvWg=="], + + "@milkdown/kit": ["@milkdown/kit@7.21.2", "", { "dependencies": { "@milkdown/components": "7.21.2", "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/exception": "7.21.2", "@milkdown/plugin-block": "7.21.2", "@milkdown/plugin-clipboard": "7.21.2", "@milkdown/plugin-cursor": "7.21.2", "@milkdown/plugin-diff": "7.21.2", "@milkdown/plugin-history": "7.21.2", "@milkdown/plugin-indent": "7.21.2", "@milkdown/plugin-listener": "7.21.2", "@milkdown/plugin-slash": "7.21.2", "@milkdown/plugin-streaming": "7.21.2", "@milkdown/plugin-tooltip": "7.21.2", "@milkdown/plugin-trailing": "7.21.2", "@milkdown/plugin-upload": "7.21.2", "@milkdown/preset-commonmark": "7.21.2", "@milkdown/preset-gfm": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/transformer": "7.21.2", "@milkdown/utils": "7.21.2" } }, "sha512-93E5PgJgQXTwn0N8xSmk3Y6+oVvMMQYDV3HF22ZNE8tFVRLOz3vMLJFfxncxY0CONadCpreoOT3Ut+p9JYjySA=="], + + "@milkdown/plugin-block": ["@milkdown/plugin-block@7.21.2", "", { "dependencies": { "@floating-ui/dom": "^1.5.1", "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2", "@types/lodash-es": "^4.17.12", "lodash-es": "^4.17.21" } }, "sha512-ZAv3QSr9J8+U4u8SVPcKeVeMmSA9OrrwS6jeY4YP/k6OxPfGK7H5+i6qW73gDxXvRzTGMSyTuFOdX4tgcXnV9A=="], + + "@milkdown/plugin-clipboard": ["@milkdown/plugin-clipboard@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2" } }, "sha512-Noc4rFpVzHvzjNaIKLhvzX2DEeyjWCTzDZR9k6B/0wgD0ZiZSGDnnq8op1Is1s5NjFq6UpCeZtXfs8HuLxbgFA=="], + + "@milkdown/plugin-cursor": ["@milkdown/plugin-cursor@7.21.2", "", { "dependencies": { "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2", "prosemirror-drop-indicator": "^0.1.0" } }, "sha512-PDENEK8mZ44YTfQyR5fuqVk5ZF8CJLdYpcavcorfhtvVx+3ZpQodDz0q7o42kE17jEMXCfsL/t2gUHxOp3pPIw=="], + + "@milkdown/plugin-diff": ["@milkdown/plugin-diff@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/transformer": "7.21.2", "@milkdown/utils": "7.21.2" } }, "sha512-I1aLHTAcKk04MFDA/RmhRYPY4kHoSjZf9yoCxl5eNYi3PtOzJ2aoKcBi/uNbU0TG+MoJc/DKizVcaI1t4jyAWg=="], + + "@milkdown/plugin-history": ["@milkdown/plugin-history@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2" } }, "sha512-iymGm2fm/desC0tAukz3ubHZ7KSj0UFvHZTY8H55IzPnRLsVErnGFOZ5l/VFeHQI4xoBq+NWUBuPFFF4ApxBlw=="], + + "@milkdown/plugin-indent": ["@milkdown/plugin-indent@7.21.2", "", { "dependencies": { "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2" } }, "sha512-CY7lOWZPckjgsLPhMKa/96lNSbr1Bf5xT8sUQ+rC6Vv1PgRy63R8dTO+99xuHTmZp7XZm33cuswEW7VJuPFA4g=="], + + "@milkdown/plugin-listener": ["@milkdown/plugin-listener@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@types/lodash-es": "^4.17.12", "lodash-es": "^4.17.21" } }, "sha512-CyVNlB5uyQlH7aAX1kBKF3O+2zATGwXmjWZ7qFLNyII+31Wv4jshAzxHSIBi4qrIWbqBEbT72j2OQTOCdRNLOA=="], + + "@milkdown/plugin-slash": ["@milkdown/plugin-slash@7.21.2", "", { "dependencies": { "@floating-ui/dom": "^1.5.1", "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2", "@types/lodash-es": "^4.17.12", "lodash-es": "^4.17.21" } }, "sha512-da8UxNr73UC/32BQNZnWaalj0HjZIH2zIA6k7fHEgwwSXq3/aAgPc8x80/toHyVBMeeNA0hEcEobJLvEGFYV7g=="], + + "@milkdown/plugin-streaming": ["@milkdown/plugin-streaming@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/plugin-diff": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2" } }, "sha512-gWuMAz4HStGDdtQ2Al9pr35RXk2MzZonJy1ODFuzmFImLpBDAWJaEZkigFWQXijGff00IvS3nkXJSWZQBOesJg=="], + + "@milkdown/plugin-tooltip": ["@milkdown/plugin-tooltip@7.21.2", "", { "dependencies": { "@floating-ui/dom": "^1.5.1", "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2", "@types/lodash-es": "^4.17.12", "lodash-es": "^4.17.21" } }, "sha512-L8123LL4sv2nsSUN86dwmF9NXwH+TZFaS6bt7Dd43DjZgxb+HMfpDJCLEA9f4zrJgDUr1Tis501WZvQGzPMrTQ=="], + + "@milkdown/plugin-trailing": ["@milkdown/plugin-trailing@7.21.2", "", { "dependencies": { "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2" } }, "sha512-G0hZs94ZwXsZ+skpuitLjBeAFt/3JJz4B4A5pE18xGruEZ2LAObhJ7+Y8sGgcAQvMfl3LcTbuggv3uU5Pr5xxA=="], + + "@milkdown/plugin-upload": ["@milkdown/plugin-upload@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/exception": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2" } }, "sha512-g3c0IXlZSJ9Bcg+iFzAHJ5lLHc6YHf6r1Wl8IQAIXWMh8G4p9N7yXoYknLuZGyT//7s1/mzcc/UI1Yq7kCGNWg=="], + + "@milkdown/preset-commonmark": ["@milkdown/preset-commonmark@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/exception": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/transformer": "7.21.2", "@milkdown/utils": "7.21.2", "remark-inline-links": "^7.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1" } }, "sha512-LpPltwT+2ywK0EufhEAm+YnMaTqohaIdiarDDVfvMjVz7cF3ciXOa2/SOsYK76+/vbyQaUizuIG0sooxYDpHqg=="], + + "@milkdown/preset-gfm": ["@milkdown/preset-gfm@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/exception": "7.21.2", "@milkdown/preset-commonmark": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/transformer": "7.21.2", "@milkdown/utils": "7.21.2", "prosemirror-safari-ime-span": "^1.0.1", "remark-gfm": "^4.0.1" } }, "sha512-t39W/o2KzCCNdFu9D1GSsSsuEQSCCwM5YQjj16HaHjtUryScjy4epEyXoMffXfT2FOF5oiTdBf+HukvzKFaoqA=="], + + "@milkdown/prose": ["@milkdown/prose@7.21.2", "", { "dependencies": { "@milkdown/exception": "7.21.2", "prosemirror-changeset": "^2.3.1", "prosemirror-commands": "^1.7.1", "prosemirror-dropcursor": "^1.8.2", "prosemirror-gapcursor": "^1.4.0", "prosemirror-history": "^1.5.0", "prosemirror-inputrules": "^1.5.1", "prosemirror-keymap": "^1.2.3", "prosemirror-model": "^1.25.4", "prosemirror-schema-list": "^1.5.1", "prosemirror-state": "^1.4.4", "prosemirror-tables": "^1.8.1", "prosemirror-transform": "^1.10.5", "prosemirror-view": "^1.41.3" } }, "sha512-ufnHhRaevLbqISBpOA5Rl4+S66n+h0JRfoZw2j/WyJ1eBNHg42xoQNXUEI9YiP/GoQPKeOitKux50GpafyNtQw=="], + + "@milkdown/transformer": ["@milkdown/transformer@7.21.2", "", { "dependencies": { "@milkdown/exception": "7.21.2", "@milkdown/prose": "7.21.2", "remark": "^15.0.1", "unified": "^11.0.3" } }, "sha512-j2VQ6baKy6b6rAo/yo00YwSsWHoW0sqgwRTDqSCwXW8dgdFtl4M2i/73exRLcRQ4MvDOHrSqGS5RcRz+fzPOeQ=="], + + "@milkdown/utils": ["@milkdown/utils@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/exception": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/transformer": "7.21.2", "nanoid": "^5.0.9" } }, "sha512-m1ZJDnh+/tnIBxLhh5euNGr1WXvsGnJkaGctsd/an5+73HqHOdtWD6L7oJF8+DQG4Kksr4WPNNZutqYGb6OAxw=="], + "@mistralai/mistralai": ["@mistralai/mistralai@2.2.1", "", { "dependencies": { "ws": "^8.18.0", "zod": "^3.25.0 || ^4.0.0", "zod-to-json-schema": "^3.25.0" } }, "sha512-uKU8CZmL2RzYKmplsU01hii4p3pe4HqJefpWNRWXm1Tcm0Sm4xXfwSLIy4k7ZCPlbETCGcp69E7hZs+WOJ5itQ=="], "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.29.0", "", { "dependencies": { "@hono/node-server": "^1.19.9", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ=="], - "@modelcontextprotocol/server": ["@modelcontextprotocol/server@2.0.0-alpha.2", "", { "dependencies": { "zod": "^4.0" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-gmLgdHzlYM8L7Aw/+VE0kxjT25WKamtUSLNhdOgrJq5CrESvqVSoAfWSJJeNPUXNTluQ+dYDGFbKVitdsJtbPA=="], + "@modelcontextprotocol/server": ["@modelcontextprotocol/server@2.0.0-alpha.4", "", { "dependencies": { "zod": "^4.2.0" } }, "sha512-/KEo3ZJ50HlagHp0lz2vPgfBZFtXHu6zTBXT9XqPc+4O9i4+IbBVWKq/a9yAfv/ifp0u3+mRo8SUk5kMKzhN8A=="], "@msgpackr-extract/msgpackr-extract-darwin-arm64": ["@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw=="], @@ -1039,153 +763,257 @@ "@msgpackr-extract/msgpackr-extract-win32-x64": ["@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3", "", { "os": "win32", "cpu": "x64" }, "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ=="], - "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.4", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow=="], + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.4", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow=="], + + "@nodable/entities": ["@nodable/entities@2.1.0", "", {}, "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA=="], + + "@ocavue/utils": ["@ocavue/utils@1.7.0", "", {}, "sha512-yEk9ATNBjTZTtuVFMB/MAIF6zJBvJ2+lVNQvK2+O+ggEBGTgx2tp27d4FPgmD5bRsNHHP3D0SleQia/bvIeV8w=="], + + "@octokit/auth-token": ["@octokit/auth-token@5.1.2", "", {}, "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw=="], + + "@octokit/core": ["@octokit/core@6.1.6", "", { "dependencies": { "@octokit/auth-token": "^5.0.0", "@octokit/graphql": "^8.2.2", "@octokit/request": "^9.2.3", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "before-after-hook": "^3.0.2", "universal-user-agent": "^7.0.0" } }, "sha512-kIU8SLQkYWGp3pVKiYzA5OSaNF5EE03P/R8zEmmrG6XwOg5oBjXyQVVIauQ0dgau4zYhpZEhJrvIYt6oM+zZZA=="], + + "@octokit/endpoint": ["@octokit/endpoint@10.1.4", "", { "dependencies": { "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA=="], + + "@octokit/graphql": ["@octokit/graphql@8.2.2", "", { "dependencies": { "@octokit/request": "^9.2.3", "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA=="], + + "@octokit/openapi-types": ["@octokit/openapi-types@25.1.0", "", {}, "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA=="], + + "@octokit/plugin-paginate-rest": ["@octokit/plugin-paginate-rest@11.6.0", "", { "dependencies": { "@octokit/types": "^13.10.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw=="], + + "@octokit/plugin-request-log": ["@octokit/plugin-request-log@5.3.1", "", { "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw=="], + + "@octokit/plugin-rest-endpoint-methods": ["@octokit/plugin-rest-endpoint-methods@13.5.0", "", { "dependencies": { "@octokit/types": "^13.10.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-9Pas60Iv9ejO3WlAX3maE1+38c5nqbJXV5GrncEfkndIpZrJ/WPMRd2xYDcPPEt5yzpxcjw9fWNoPhsSGzqKqw=="], + + "@octokit/request": ["@octokit/request@9.2.4", "", { "dependencies": { "@octokit/endpoint": "^10.1.4", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "fast-content-type-parse": "^2.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA=="], + + "@octokit/request-error": ["@octokit/request-error@6.1.8", "", { "dependencies": { "@octokit/types": "^14.0.0" } }, "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ=="], + + "@octokit/rest": ["@octokit/rest@21.1.1", "", { "dependencies": { "@octokit/core": "^6.1.4", "@octokit/plugin-paginate-rest": "^11.4.2", "@octokit/plugin-request-log": "^5.3.1", "@octokit/plugin-rest-endpoint-methods": "^13.3.0" } }, "sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg=="], + + "@octokit/types": ["@octokit/types@14.1.0", "", { "dependencies": { "@octokit/openapi-types": "^25.1.0" } }, "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g=="], + + "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="], + + "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.40.0", "", {}, "sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw=="], + + "@opentui/core": ["@opentui/core@0.4.5", "", { "dependencies": { "bun-ffi-structs": "0.2.4", "diff": "9.0.0", "marked": "17.0.1", "string-width": "7.2.0", "strip-ansi": "7.1.2" }, "optionalDependencies": { "@opentui/core-darwin-arm64": "0.4.5", "@opentui/core-darwin-x64": "0.4.5", "@opentui/core-linux-arm64": "0.4.5", "@opentui/core-linux-arm64-musl": "0.4.5", "@opentui/core-linux-x64": "0.4.5", "@opentui/core-linux-x64-musl": "0.4.5", "@opentui/core-win32-arm64": "0.4.5", "@opentui/core-win32-x64": "0.4.5" }, "peerDependencies": { "web-tree-sitter": "0.25.10" } }, "sha512-JsgRTPkA6e+Vxmumxai6SElOSlRQkbzNKHlCfemlArRiLhfC1IZ9RXJo2QH4xSu+uBOWAM90uss73/pPlkdEig=="], + + "@opentui/core-darwin-arm64": ["@opentui/core-darwin-arm64@0.4.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-8KUG0oRidnR+oW1RSZJ72/PhZLl+qRRMk5U/mieF4c0SJ5V3tYACpBZAKzQfHNd1f7QzD8FHZct1lPpQgtmkWg=="], + + "@opentui/core-darwin-x64": ["@opentui/core-darwin-x64@0.4.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-R2bocsg55gwjOqCp/MWFgFYzRmsduKegB6nzgFAPCvAD/L5Jf30xpWJWFlSg3x8vxe1L9WJ84dfqa4M7mZZ3wA=="], + + "@opentui/core-linux-arm64": ["@opentui/core-linux-arm64@0.4.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-R4MZ25a4CzOAGVjW9aj1hUfzQGVfCJwrwBDbNs2SXaIvzcZqkxCVtU4FoQ5LsaD0j/BdNQVg2CIfFkFsm1fDuQ=="], + + "@opentui/core-linux-arm64-musl": ["@opentui/core-linux-arm64-musl@0.4.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-ieqdyKI6EIYPalYAETB2wsdP83hr5Ifi+dFnBFUmdEEFHsoKwBmn2S7bsTOYlX7Bg03F4/YPIg+IvRpeC+cUJw=="], + + "@opentui/core-linux-x64": ["@opentui/core-linux-x64@0.4.5", "", { "os": "linux", "cpu": "x64" }, "sha512-SNyuQoxMKI1vuJhgxSSW96adWM6LqFl2SoS3GM4tGeneGOanVVG2Y06PvlytXvF4cKik97t0rqkVMRetmOs93w=="], + + "@opentui/core-linux-x64-musl": ["@opentui/core-linux-x64-musl@0.4.5", "", { "os": "linux", "cpu": "x64" }, "sha512-mKVKcIcPiSVVZZsdPSBoWwoa2/TCeQAaMDeHF7PFw2kt5bTXZPP7xxWfRQLCNIcA1eaGl59UuwUWHDR2Ve548Q=="], + + "@opentui/core-win32-arm64": ["@opentui/core-win32-arm64@0.4.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-GHTTsqeR45q2Iek9Rb7ty+x/hAKn2jZ1ujlCgPR8LBKyF7h0E1dNFryoZ7ehMc3kJndP1sKn836IemKFqxuDdQ=="], + + "@opentui/core-win32-x64": ["@opentui/core-win32-x64@0.4.5", "", { "os": "win32", "cpu": "x64" }, "sha512-Y8T/yXCDGagRGiQrtmuB6AhRcPucKFs/Dre3v8kJwNYqDccI4FzUPKclZ7djfmRZNjl7JUqPhZZP/PwDpQocMg=="], + + "@opentui/react": ["@opentui/react@0.4.5", "", { "dependencies": { "@opentui/core": "0.4.5", "react-reconciler": "^0.33.0" }, "peerDependencies": { "react": ">=19.2.0", "react-devtools-core": "^7.0.1", "ws": "^8.18.0" } }, "sha512-n88Vx0cMmAu++/S14WscjvdcT46IDcxve02jMtcfHQ9j6cySRHfILfGEpOB7xxc8RpCwQceEyOjkKkfzPzm6Jg=="], + + "@oxc-project/types": ["@oxc-project/types@0.132.0", "", {}, "sha512-FESMOxil5Se014ui/Eq8fT5uHJo6nIRwH0PfJrZJXs6Gek3ZVFOrpUv3YIZT20m+extU98Hg1Ym72U58rlsxUQ=="], + + "@oxlint/binding-android-arm-eabi": ["@oxlint/binding-android-arm-eabi@1.62.0", "", { "os": "android", "cpu": "arm" }, "sha512-pKsthNECyvJh8lPTICz6VcwVy2jOqdhhsp1rlxCkhgZR47aKvXPmaRWQDv+zlXpRae4qm1MaaTnutkaOk5aofg=="], + + "@oxlint/binding-android-arm64": ["@oxlint/binding-android-arm64@1.62.0", "", { "os": "android", "cpu": "arm64" }, "sha512-b1AUNViByvgmR2xJDubvLIr+dSuu3uraG7bsAoKo+xrpspPvu6RIn6Fhr2JUhobfep3jwUTy18Huco6GkwdvGQ=="], + + "@oxlint/binding-darwin-arm64": ["@oxlint/binding-darwin-arm64@1.62.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-iG+Tvf70UJ6otfwFYIHk36Sjq9cpPP5YLxkoggANNRtzgi3Tj3g8q6Ybqi6AtkU3+yg9QwF7bDCkCS6bbL4PCg=="], + + "@oxlint/binding-darwin-x64": ["@oxlint/binding-darwin-x64@1.62.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-oOWI6YPPr5AJUx+yIDlxmuUbQjS5gZX3OH3QisawYvsZgLiQVvZtR0rPBcJTxLWqt2ClrWg0DlSrlUiG5SQNHg=="], + + "@oxlint/binding-freebsd-x64": ["@oxlint/binding-freebsd-x64@1.62.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-dLP33T7VLCmLVv4cvjkVX+rmkcwNk2UfxmsZPNur/7BQHoQR60zJ7XLiRvNUawlzn0u8ngCa3itjEG73MAMa/w=="], + + "@oxlint/binding-linux-arm-gnueabihf": ["@oxlint/binding-linux-arm-gnueabihf@1.62.0", "", { "os": "linux", "cpu": "arm" }, "sha512-fl//LWNks6qo9chNY60UDYyIwtp7a5cEx4Y/rHPjaarhuwqx6jtbzEpD5V5AqmdL4a6Y5D8zeXg5HF2Cr0QmSQ=="], + + "@oxlint/binding-linux-arm-musleabihf": ["@oxlint/binding-linux-arm-musleabihf@1.62.0", "", { "os": "linux", "cpu": "arm" }, "sha512-i5vkAuxvueTODV3J2dL61/TXewDHhMFKvtD156cIsk7GsdfiAu7zW7kY0NJXhKeFHeiMZIh7eFNjkPYH6J47HQ=="], + + "@oxlint/binding-linux-arm64-gnu": ["@oxlint/binding-linux-arm64-gnu@1.62.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-QwN19LLuIGuOjEflSeJkZmOTfBdBMlTmW8xbMf8TZhjd//cxVNYQPq75q7oKZBJc6hRx3gY7sX0Egc8cEIFZYg=="], + + "@oxlint/binding-linux-arm64-musl": ["@oxlint/binding-linux-arm64-musl@1.62.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-8eCy3FCDuWUM5hWujAv6heMvfZPbcCOU3SdQUAkixZLu5bSzOkNfirJiLGoQFO943xceOKkiQRMQNzH++jM3WA=="], + + "@oxlint/binding-linux-ppc64-gnu": ["@oxlint/binding-linux-ppc64-gnu@1.62.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NjQ7K7tpTPDe9J+yq8p/s/J0E7lRCkK2uDBDqvT4XIT6f4Z0tlnr59OBg/WcrmVHER1AbrcfyxhGTXgcG8ytWg=="], + + "@oxlint/binding-linux-riscv64-gnu": ["@oxlint/binding-linux-riscv64-gnu@1.62.0", "", { "os": "linux", "cpu": "none" }, "sha512-oKZed9gmSwze29dEt3/Wnsv6l/Ygw/FUst+8Kfpv2SGeS/glEoTGZAMQw37SVyzFV76UTHJN2snGgxK2t2+8ow=="], + + "@oxlint/binding-linux-riscv64-musl": ["@oxlint/binding-linux-riscv64-musl@1.62.0", "", { "os": "linux", "cpu": "none" }, "sha512-gBjBxQ+9lGpAYq+ELqw0w8QXsBnkZclFc7GRX2r0LnEVn3ZTEqeIKpKcGjucmp76Q53bvJD0i4qBWBhcfhSfGA=="], + + "@oxlint/binding-linux-s390x-gnu": ["@oxlint/binding-linux-s390x-gnu@1.62.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-Ew2Kxs9EQ9/mbAIJ2hvocMC0wsOu6YKzStI2eFBDt+Td5O8seVC/oxgRIHqCcl5sf5ratA1nozQBAuv7tphkHg=="], + + "@oxlint/binding-linux-x64-gnu": ["@oxlint/binding-linux-x64-gnu@1.62.0", "", { "os": "linux", "cpu": "x64" }, "sha512-5z25jcAA0gfKyVwz71A0VXgaPlocPoTAxhlv/hgoK6tlCrfoNuw7haWbDHvGMfjXhdic4EqVXGRv5XsTqFnbRQ=="], + + "@oxlint/binding-linux-x64-musl": ["@oxlint/binding-linux-x64-musl@1.62.0", "", { "os": "linux", "cpu": "x64" }, "sha512-IWpHmMB6ZDllPvqWDkG6AmXrN7JF5e/c4g/0PuURsmlK+vHoYZPB70rr4u1bn3I4LsKCSpqqfveyx6UCOC8wdg=="], + + "@oxlint/binding-openharmony-arm64": ["@oxlint/binding-openharmony-arm64@1.62.0", "", { "os": "none", "cpu": "arm64" }, "sha512-fjlSxxrD5pA594vkyikCS9MnPRjQawW6/BLgyTYkO+73wwPlYjkcZ7LSd974l0Q2zkHQmu4DPvJFLYA7o8xrxQ=="], + + "@oxlint/binding-win32-arm64-msvc": ["@oxlint/binding-win32-arm64-msvc@1.62.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-EiFXr8loNS0Ul3Gu80+9nr1T8jRmnKocqmHHg16tj5ZqTgUXyb97l2rrspVHdDluyFn9JfR4PoJFdNzw4paHww=="], + + "@oxlint/binding-win32-ia32-msvc": ["@oxlint/binding-win32-ia32-msvc@1.62.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-IgOFvL73li1bFgab+hThXYA0N2Xms2kV2MvZN95cebV+fmrZ9AVui1JSxfeeqRLo3CpPxKZlzhyq4G0cnaAvIw=="], + + "@oxlint/binding-win32-x64-msvc": ["@oxlint/binding-win32-x64-msvc@1.62.0", "", { "os": "win32", "cpu": "x64" }, "sha512-6hMpyDWQ2zGA1OXFKBrdYMUveUCO8UJhkO6JdwZPd78xIdHZNhjx+pib+4fC2Cljuhjyl0QwA2F3df/bs4Bp6A=="], + + "@pierre/diffs": ["@pierre/diffs@1.3.1", "", { "dependencies": { "@pierre/theme": "2.0.0", "@pierre/theming": "1.0.0", "@shikijs/transformers": "^3.0.0 || ^4.0.0", "diff": "9.0.0", "hast-util-to-html": "9.0.5", "lru_map": "0.4.1", "shiki": "^3.0.0 || ^4.0.0" }, "peerDependencies": { "react": "^18.3.1 || ^19.0.0", "react-dom": "^18.3.1 || ^19.0.0" } }, "sha512-jSAm+Rybo7milxGg7ps7KjM3QZl2exhE9uYjQ4RSCdPNa9GS0mD4vBP99MoFhV95bLDKL1KSMdy0596BMLUacw=="], + + "@pierre/theme": ["@pierre/theme@2.0.0", "", {}, "sha512-yNDd9GYLQl1mEUJR8AneJ5e4ohLIHQd/wZLWr4fagt78vS2RwwZNW530vVgHqXFAyFVcFlRmGUD5ramXH46OXw=="], + + "@pierre/theming": ["@pierre/theming@1.0.0", "", { "peerDependencies": { "@pierre/theme": "^1.1.0", "@shikijs/themes": "^3.0.0 || ^4.0.0", "react": "^18.3.1 || ^19.0.0", "react-dom": "^18.3.1 || ^19.0.0", "shiki": "^3.0.0 || ^4.0.0" }, "optionalPeers": ["@pierre/theme", "@shikijs/themes", "react", "react-dom", "shiki"] }, "sha512-WsdrnhKfjeyXGDikZmN9pkpeZ5S/cl6EE72feiSc0tlynT1tMYqXqouhuv/foK+PY9OEnebOAVRQn3+rAstR8g=="], + + "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], + + "@playwright/test": ["@playwright/test@1.60.0", "", { "dependencies": { "playwright": "1.60.0" }, "bin": { "playwright": "cli.js" } }, "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag=="], + + "@poppinss/colors": ["@poppinss/colors@4.1.6", "", { "dependencies": { "kleur": "^4.1.5" } }, "sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg=="], - "@nodable/entities": ["@nodable/entities@2.1.0", "", {}, "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA=="], + "@poppinss/dumper": ["@poppinss/dumper@0.6.5", "", { "dependencies": { "@poppinss/colors": "^4.1.5", "@sindresorhus/is": "^7.0.2", "supports-color": "^10.0.0" } }, "sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw=="], - "@octokit/auth-token": ["@octokit/auth-token@5.1.2", "", {}, "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw=="], + "@poppinss/exception": ["@poppinss/exception@1.2.3", "", {}, "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw=="], - "@octokit/core": ["@octokit/core@6.1.6", "", { "dependencies": { "@octokit/auth-token": "^5.0.0", "@octokit/graphql": "^8.2.2", "@octokit/request": "^9.2.3", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "before-after-hook": "^3.0.2", "universal-user-agent": "^7.0.0" } }, "sha512-kIU8SLQkYWGp3pVKiYzA5OSaNF5EE03P/R8zEmmrG6XwOg5oBjXyQVVIauQ0dgau4zYhpZEhJrvIYt6oM+zZZA=="], + "@protobufjs/aspromise": ["@protobufjs/aspromise@1.1.2", "", {}, "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="], - "@octokit/endpoint": ["@octokit/endpoint@10.1.4", "", { "dependencies": { "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA=="], + "@protobufjs/base64": ["@protobufjs/base64@1.1.2", "", {}, "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="], - "@octokit/graphql": ["@octokit/graphql@8.2.2", "", { "dependencies": { "@octokit/request": "^9.2.3", "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA=="], + "@protobufjs/codegen": ["@protobufjs/codegen@2.0.5", "", {}, "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g=="], - "@octokit/openapi-types": ["@octokit/openapi-types@25.1.0", "", {}, "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA=="], + "@protobufjs/eventemitter": ["@protobufjs/eventemitter@1.1.0", "", {}, "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="], - "@octokit/plugin-paginate-rest": ["@octokit/plugin-paginate-rest@11.6.0", "", { "dependencies": { "@octokit/types": "^13.10.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw=="], + "@protobufjs/fetch": ["@protobufjs/fetch@1.1.0", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" } }, "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ=="], - "@octokit/plugin-request-log": ["@octokit/plugin-request-log@5.3.1", "", { "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw=="], + "@protobufjs/float": ["@protobufjs/float@1.0.2", "", {}, "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="], - "@octokit/plugin-rest-endpoint-methods": ["@octokit/plugin-rest-endpoint-methods@13.5.0", "", { "dependencies": { "@octokit/types": "^13.10.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-9Pas60Iv9ejO3WlAX3maE1+38c5nqbJXV5GrncEfkndIpZrJ/WPMRd2xYDcPPEt5yzpxcjw9fWNoPhsSGzqKqw=="], + "@protobufjs/inquire": ["@protobufjs/inquire@1.1.1", "", {}, "sha512-mnzgDV26ueAvk7rsbt9L7bE0SuAoqyuys/sMMrmVcN5x9VsxpcG3rqAUSgDyLp0UZlmNfIbQ4fHfCtreVBk8Ew=="], - "@octokit/request": ["@octokit/request@9.2.4", "", { "dependencies": { "@octokit/endpoint": "^10.1.4", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "fast-content-type-parse": "^2.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA=="], + "@protobufjs/path": ["@protobufjs/path@1.1.2", "", {}, "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="], - "@octokit/request-error": ["@octokit/request-error@6.1.8", "", { "dependencies": { "@octokit/types": "^14.0.0" } }, "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ=="], + "@protobufjs/pool": ["@protobufjs/pool@1.1.0", "", {}, "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="], - "@octokit/rest": ["@octokit/rest@21.1.1", "", { "dependencies": { "@octokit/core": "^6.1.4", "@octokit/plugin-paginate-rest": "^11.4.2", "@octokit/plugin-request-log": "^5.3.1", "@octokit/plugin-rest-endpoint-methods": "^13.3.0" } }, "sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg=="], + "@protobufjs/utf8": ["@protobufjs/utf8@1.1.1", "", {}, "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg=="], - "@octokit/types": ["@octokit/types@14.1.0", "", { "dependencies": { "@octokit/openapi-types": "^25.1.0" } }, "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g=="], + "@radix-ui/number": ["@radix-ui/number@1.1.3", "", {}, "sha512-Road2bidD0uu/1BGDOWNdPI06g0lIRy6IF9GZcIrDK2KGItfor8IQwQa+yM2ERgHM1MmHxaxpTzk0/Jp42lNfA=="], - "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="], + "@radix-ui/primitive": ["@radix-ui/primitive@1.1.7", "", {}, "sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q=="], - "@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.216.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-KmGTgvxTJ0J01d4mOeX1wMV5NUTNf9HebIuOOGDfIn0a/IrnXIQbOnlylDyl9tkDv4h0DUpdI/GqCdLzfTkUXg=="], + "@radix-ui/react-accessible-icon": ["@radix-ui/react-accessible-icon@1.1.15", "", { "dependencies": { "@radix-ui/react-visually-hidden": "1.2.11" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-WTQwcAvQf5sOcuUyi90lKPbhwcvQ+j55cjrSmeaN+L2vKU3DooOvlKw2MDeiJ5IkV5N905KW0/fGojKOBhD11A=="], - "@opentelemetry/context-async-hooks": ["@opentelemetry/context-async-hooks@2.7.1", "", { "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-OPFBYuXEn1E4ja3Y6eeA7O+ZnLBNcXTV5Cgsn1VaqBZ6hC5FnpZPLBNme1LJY8ZtF4aOujPKFoeWN4ik487KuQ=="], + "@radix-ui/react-accordion": ["@radix-ui/react-accordion@1.2.20", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collapsible": "1.1.20", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-jDhG9FvAEnlhnjrsINbNXcUa4G+L1KqSkJSunkbKEzFRcAb52jvM0PjPxPRvhe1HNc5F5yc0yzzWeeqlH4yBIg=="], - "@opentelemetry/core": ["@opentelemetry/core@2.7.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-QAqIj32AtK6+pEVNG7EOVxHdE06RP+FM5qpiEJ4RtDcFIqKUZHYhl7/7UY5efhwmwNAg7j8QbJVBLxMerc0+gw=="], + "@radix-ui/react-alert-dialog": ["@radix-ui/react-alert-dialog@1.1.23", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-dialog": "1.1.23", "@radix-ui/react-primitive": "2.1.10" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-VAYOiQRqj3GPpYJE0I9J+X8Ip05cyVlNdKOFeiGS2Ou1HHGfpl0BxOyZm6nmVDyU+W+NF3/XLzmjHmVGydhwgA=="], - "@opentelemetry/resources": ["@opentelemetry/resources@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-DeT6KKolmC4e/dRQvMQ/RwlnzhaqeiFOXY5ngoOPJ07GgVVKxZOg9EcrNZb5aTzUn+iCrJldAgOfQm1O/QfPAQ=="], + "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.15", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.10" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-v4zggRcjadnI+ClKDuijlQEW4tw3NoaeHc/PwpKnLoLLKNUG4InLegkstooLcRIUWCs+8L22dGURCVuFfOKfnA=="], - "@opentelemetry/sdk-logs": ["@opentelemetry/sdk-logs@0.216.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.216.0", "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, "sha512-KB3rcwQuitq0JbbsCcNdqMhRJX3kArAYz/ovb0jGRaBQAIrt2roik3xQXuhYxS37zx0jSkUZcJu1z3Y2UCxbDA=="], + "@radix-ui/react-aspect-ratio": ["@radix-ui/react-aspect-ratio@1.1.15", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.10" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-fy+dyVR+90nelK8rqIznFlxzx7uPcGbhxH8Nfr2bHb4UfSe+e3hklOC0luK0hDwVwnRX7xTRySpsrQVeW+/oNQ=="], - "@opentelemetry/sdk-metrics": ["@opentelemetry/sdk-metrics@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, "sha512-MpDJdkiFDs3Pm1RHO3KByuZbuBdJEXEAkiC0+yJdsZGVCdf1RpHR6n+LHDcS7ffmfrt5kVCzJSCfm4z2C7v0uQ=="], + "@radix-ui/react-avatar": ["@radix-ui/react-avatar@1.2.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-is-hydrated": "0.1.3", "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-4ULOTJ/mqy2hT9GlWa/MFHxHSvH3nJzHnZM1waNsc5Bonv7i70aNenghXmD97S6OJ81ekXONGGt4nT1r0PfEdA=="], - "@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-NAYIlsF8MPUsKqJMiDQJTMPOmlbawC1Iz/omMLygZ1C9am8fTKYjTaI+OZM+WTY3t3Glo0wnOg/6/pac6RGPPw=="], + "@radix-ui/react-checkbox": ["@radix-ui/react-checkbox@1.3.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-size": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Gnptr9pDDQxD3hgq2dtPbtrp/c2qH1mBwIzw3X/ivrMb2e1t0jMTi606fVEqFPaQR1ggXIVQWKj3P2WW9v7zGQ=="], - "@opentelemetry/sdk-trace-node": ["@opentelemetry/sdk-trace-node@2.7.1", "", { "dependencies": { "@opentelemetry/context-async-hooks": "2.7.1", "@opentelemetry/core": "2.7.1", "@opentelemetry/sdk-trace-base": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-pCpQxU68lV+I9s9svqMyVu5iHdDDUnqUpSxqwyCU8A9ejEsSnMPCbearwsUO4yk08ZJzAIUCFuReMdVQvHrdvg=="], + "@radix-ui/react-collapsible": ["@radix-ui/react-collapsible@1.1.20", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-mcGesGplBnzN2sbvJETzpCNfSMyPnb29q1GRLU+Ib7bJrpIG2ywmRoh2V5VbA2uNvKikKUlVbAPks7JDjz4A8Q=="], - "@opentelemetry/sdk-trace-web": ["@opentelemetry/sdk-trace-web@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/sdk-trace-base": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-K806OouCSOjMd8Nr7+ZCq3QT22tdAzzS/7h8vprfiKjkgFQ99/dvwU8d12WJANA6D5Qtme65hyBAqAu9CkQuxQ=="], + "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.15", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-slot": "1.3.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9W+B9NPF0NaaPh/1NJd3+KqsnlLqU9H7T2rvww+fp+T/evVXdNAyYcnfRQZFOjkR1ajQp3yORlqnI8soawLvNA=="], - "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.40.0", "", {}, "sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw=="], + "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.5", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA=="], - "@oxc-project/types": ["@oxc-project/types@0.132.0", "", {}, "sha512-FESMOxil5Se014ui/Eq8fT5uHJo6nIRwH0PfJrZJXs6Gek3ZVFOrpUv3YIZT20m+extU98Hg1Ym72U58rlsxUQ=="], + "@radix-ui/react-context": ["@radix-ui/react-context@1.2.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RHCUGwKHDr0hDGg4X7ma4JG4/+12qxw8rkh5QKdDldlCvtja6nUx1Ef/8HVrJze81lEsgLQlqjzjGNHantgnQA=="], - "@oxlint/binding-android-arm-eabi": ["@oxlint/binding-android-arm-eabi@1.62.0", "", { "os": "android", "cpu": "arm" }, "sha512-pKsthNECyvJh8lPTICz6VcwVy2jOqdhhsp1rlxCkhgZR47aKvXPmaRWQDv+zlXpRae4qm1MaaTnutkaOk5aofg=="], + "@radix-ui/react-context-menu": ["@radix-ui/react-context-menu@2.3.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-menu": "2.1.24", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-CtXP35dxaB5T3zXSd+E3uHe/QpXcpYnZmxp6OaIbfthtfW4wyb77M23BG+bwIJDtsMwEP/YssdsmNyZu7jhWew=="], - "@oxlint/binding-android-arm64": ["@oxlint/binding-android-arm64@1.62.0", "", { "os": "android", "cpu": "arm64" }, "sha512-b1AUNViByvgmR2xJDubvLIr+dSuu3uraG7bsAoKo+xrpspPvu6RIn6Fhr2JUhobfep3jwUTy18Huco6GkwdvGQ=="], + "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.23", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-focus-guards": "1.1.6", "@radix-ui/react-focus-scope": "1.1.16", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-slot": "1.3.3", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Ksw4WeROkO4rC9k/onilX/Ao2Cr1ku1unMNH+XSCcP4jSXYu7HDsg9n4ojMjVb22XpYjAQ9qfrFlVbru1vXDUA=="], - "@oxlint/binding-darwin-arm64": ["@oxlint/binding-darwin-arm64@1.62.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-iG+Tvf70UJ6otfwFYIHk36Sjq9cpPP5YLxkoggANNRtzgi3Tj3g8q6Ybqi6AtkU3+yg9QwF7bDCkCS6bbL4PCg=="], + "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.4", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-5pzg4FGQNpExhnhT2zlrP1wZFaYCd1K0nYWoFAdcYoYK868IEigqMX3B3f8yIoRlAhAeDWciLI6ZdCKHF9P4Vg=="], - "@oxlint/binding-darwin-x64": ["@oxlint/binding-darwin-x64@1.62.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-oOWI6YPPr5AJUx+yIDlxmuUbQjS5gZX3OH3QisawYvsZgLiQVvZtR0rPBcJTxLWqt2ClrWg0DlSrlUiG5SQNHg=="], + "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.19", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-effect-event": "0.0.5" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-8g4pfOL9HoKKLWGiypT+dphVqjFfmcXO5GBnhsG6zI+lxAx/8feQpr+1LSN8Re3hiZ+XkLNS4O9ztK11/LzQ6w=="], - "@oxlint/binding-freebsd-x64": ["@oxlint/binding-freebsd-x64@1.62.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-dLP33T7VLCmLVv4cvjkVX+rmkcwNk2UfxmsZPNur/7BQHoQR60zJ7XLiRvNUawlzn0u8ngCa3itjEG73MAMa/w=="], + "@radix-ui/react-dropdown-menu": ["@radix-ui/react-dropdown-menu@2.1.24", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-menu": "2.1.24", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-geq8l2rJkxvkXsT9RMgtUE3P8pITFpTsvYpbySi1IH4fZEABD/Gp85myayFgxk0ktljGMJnCbeFkyTusvSvv7g=="], - "@oxlint/binding-linux-arm-gnueabihf": ["@oxlint/binding-linux-arm-gnueabihf@1.62.0", "", { "os": "linux", "cpu": "arm" }, "sha512-fl//LWNks6qo9chNY60UDYyIwtp7a5cEx4Y/rHPjaarhuwqx6jtbzEpD5V5AqmdL4a6Y5D8zeXg5HF2Cr0QmSQ=="], + "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.6", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RNOJjfZMTyBM6xYmV3IVGXkPjIhcBAuv48POevAXwrGJhkWZ9p1rFoIS1JFooPuT193AZmRsCPhpoVJxx6OPoQ=="], - "@oxlint/binding-linux-arm-musleabihf": ["@oxlint/binding-linux-arm-musleabihf@1.62.0", "", { "os": "linux", "cpu": "arm" }, "sha512-i5vkAuxvueTODV3J2dL61/TXewDHhMFKvtD156cIsk7GsdfiAu7zW7kY0NJXhKeFHeiMZIh7eFNjkPYH6J47HQ=="], + "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.16", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-wmRZ2WWLvmt6KHy2rNPOdPUjwq5xOHY02+m+udwJTn0aNIox/rkskAvJTyTLGhPK6KgrUjlJUJpgmx/+wFiFIQ=="], - "@oxlint/binding-linux-arm64-gnu": ["@oxlint/binding-linux-arm64-gnu@1.62.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-QwN19LLuIGuOjEflSeJkZmOTfBdBMlTmW8xbMf8TZhjd//cxVNYQPq75q7oKZBJc6hRx3gY7sX0Egc8cEIFZYg=="], + "@radix-ui/react-form": ["@radix-ui/react-form@0.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-label": "2.1.15", "@radix-ui/react-primitive": "2.1.10" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Q4TLEn2A7TAypxwmd6R9EwrlXDvkfYSDMrq9/887AXAGh+G1rH+kYJKSTv+Si9Y0JPKTwKYv6PviAJosysNimA=="], - "@oxlint/binding-linux-arm64-musl": ["@oxlint/binding-linux-arm64-musl@1.62.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-8eCy3FCDuWUM5hWujAv6heMvfZPbcCOU3SdQUAkixZLu5bSzOkNfirJiLGoQFO943xceOKkiQRMQNzH++jM3WA=="], + "@radix-ui/react-hover-card": ["@radix-ui/react-hover-card@1.1.23", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-popper": "1.3.7", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-H8qONfZd3ltrU3+jHCIgITbWo6e1iTKvP9DHdrvYbX48ooRM5FjEDTn16AMwdfuOGkWdZEhpl3PLL/Wk/AnHDQ=="], - "@oxlint/binding-linux-ppc64-gnu": ["@oxlint/binding-linux-ppc64-gnu@1.62.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NjQ7K7tpTPDe9J+yq8p/s/J0E7lRCkK2uDBDqvT4XIT6f4Z0tlnr59OBg/WcrmVHER1AbrcfyxhGTXgcG8ytWg=="], + "@radix-ui/react-id": ["@radix-ui/react-id@1.1.4", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-TMQp2llA+RYn7JcjnrMnz7wN4pcVttPZnRZo52PLQsoLVKzNlVwUeHmfePgTgRluXFvlD3GD5g5MOVVTJCO0qA=="], - "@oxlint/binding-linux-riscv64-gnu": ["@oxlint/binding-linux-riscv64-gnu@1.62.0", "", { "os": "linux", "cpu": "none" }, "sha512-oKZed9gmSwze29dEt3/Wnsv6l/Ygw/FUst+8Kfpv2SGeS/glEoTGZAMQw37SVyzFV76UTHJN2snGgxK2t2+8ow=="], + "@radix-ui/react-label": ["@radix-ui/react-label@2.1.15", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.10" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-o/rdYEwZTTo5tjknnPeyQFU45kUC4i/XyeDPP+HGyi6XqpOP6Zf5Ya5vh/Yfe9Id5JiuWnnAx2XqIeD3UYZt0g=="], - "@oxlint/binding-linux-riscv64-musl": ["@oxlint/binding-linux-riscv64-musl@1.62.0", "", { "os": "linux", "cpu": "none" }, "sha512-gBjBxQ+9lGpAYq+ELqw0w8QXsBnkZclFc7GRX2r0LnEVn3ZTEqeIKpKcGjucmp76Q53bvJD0i4qBWBhcfhSfGA=="], + "@radix-ui/react-menu": ["@radix-ui/react-menu@2.1.24", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-focus-guards": "1.1.6", "@radix-ui/react-focus-scope": "1.1.16", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-popper": "1.3.7", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-slot": "1.3.3", "@radix-ui/react-use-callback-ref": "1.1.4", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-uW7RVuU6Lp/ZtfeY4b3kL32zccgEWvPv1+cf17ubYzHa9cL8AHokmk36cG/XEiH/smbQvumnieXX9j/e9RqJWA=="], - "@oxlint/binding-linux-s390x-gnu": ["@oxlint/binding-linux-s390x-gnu@1.62.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-Ew2Kxs9EQ9/mbAIJ2hvocMC0wsOu6YKzStI2eFBDt+Td5O8seVC/oxgRIHqCcl5sf5ratA1nozQBAuv7tphkHg=="], + "@radix-ui/react-menubar": ["@radix-ui/react-menubar@1.1.24", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-menu": "2.1.24", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-use-controllable-state": "1.2.6" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-eeVs0vf7cuqXaM0qLQCPcufImiJNVBXdJDLu7ZGYl2732UH23Qat/foNGrr6vYV3/DdTsBqASoggUFgH14OcZA=="], - "@oxlint/binding-linux-x64-gnu": ["@oxlint/binding-linux-x64-gnu@1.62.0", "", { "os": "linux", "cpu": "x64" }, "sha512-5z25jcAA0gfKyVwz71A0VXgaPlocPoTAxhlv/hgoK6tlCrfoNuw7haWbDHvGMfjXhdic4EqVXGRv5XsTqFnbRQ=="], + "@radix-ui/react-navigation-menu": ["@radix-ui/react-navigation-menu@1.2.22", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-use-previous": "1.1.4", "@radix-ui/react-visually-hidden": "1.2.11" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-ou7iLEJ+yrhQndkkA4U21XIdS/CS45F4iXIkTZcb6/Ne9EMsOuDudVmCwmDnfFZZ+y1FZqXRNSIgBy+YMvZVZg=="], - "@oxlint/binding-linux-x64-musl": ["@oxlint/binding-linux-x64-musl@1.62.0", "", { "os": "linux", "cpu": "x64" }, "sha512-IWpHmMB6ZDllPvqWDkG6AmXrN7JF5e/c4g/0PuURsmlK+vHoYZPB70rr4u1bn3I4LsKCSpqqfveyx6UCOC8wdg=="], + "@radix-ui/react-one-time-password-field": ["@radix-ui/react-one-time-password-field@0.1.16", "", { "dependencies": { "@radix-ui/number": "1.1.3", "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-effect-event": "0.0.5", "@radix-ui/react-use-is-hydrated": "0.1.3", "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Tj9P6ntAJEw52oq/F0AGknXR4XncxEt7XU47O3xJQOiWfLzEy3d9gtgKfvjSzGxzHkfL+VzvxGu2KTFsloJqXw=="], - "@oxlint/binding-openharmony-arm64": ["@oxlint/binding-openharmony-arm64@1.62.0", "", { "os": "none", "cpu": "arm64" }, "sha512-fjlSxxrD5pA594vkyikCS9MnPRjQawW6/BLgyTYkO+73wwPlYjkcZ7LSd974l0Q2zkHQmu4DPvJFLYA7o8xrxQ=="], + "@radix-ui/react-password-toggle-field": ["@radix-ui/react-password-toggle-field@0.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-effect-event": "0.0.5", "@radix-ui/react-use-is-hydrated": "0.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-4gvFnmDXu3dgj21CqsufzIameRvlRd4SBqaWhcrlrNhRo0Y5i/49AmRJYe1fdAM3G2VNBbmin4b0D6cdQocwgw=="], - "@oxlint/binding-win32-arm64-msvc": ["@oxlint/binding-win32-arm64-msvc@1.62.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-EiFXr8loNS0Ul3Gu80+9nr1T8jRmnKocqmHHg16tj5ZqTgUXyb97l2rrspVHdDluyFn9JfR4PoJFdNzw4paHww=="], + "@radix-ui/react-popover": ["@radix-ui/react-popover@1.1.23", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-focus-guards": "1.1.6", "@radix-ui/react-focus-scope": "1.1.16", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-popper": "1.3.7", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-slot": "1.3.3", "@radix-ui/react-use-controllable-state": "1.2.6", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-mw58MrBlyHWFisTOYignD0vf/3gdcgAR+9of1s9G/38CbFiUwH1nCDkc0AUM9IrXFgN5Ue8n45j9WCgyM1sbiQ=="], - "@oxlint/binding-win32-ia32-msvc": ["@oxlint/binding-win32-ia32-msvc@1.62.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-IgOFvL73li1bFgab+hThXYA0N2Xms2kV2MvZN95cebV+fmrZ9AVui1JSxfeeqRLo3CpPxKZlzhyq4G0cnaAvIw=="], + "@radix-ui/react-popper": ["@radix-ui/react-popper@1.3.7", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-use-rect": "1.1.4", "@radix-ui/react-use-size": "1.1.4", "@radix-ui/rect": "1.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-UsJrrd7w4wuKKTdvd/DNERVlwSlUcyXzjhyDwBk+3aPOsCjOY6ZSbxuw8E6lZTjjfP8Cpd0J8VVkrYUWyGYXyg=="], - "@oxlint/binding-win32-x64-msvc": ["@oxlint/binding-win32-x64-msvc@1.62.0", "", { "os": "win32", "cpu": "x64" }, "sha512-6hMpyDWQ2zGA1OXFKBrdYMUveUCO8UJhkO6JdwZPd78xIdHZNhjx+pib+4fC2Cljuhjyl0QwA2F3df/bs4Bp6A=="], + "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.17", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-vKQLcWypUnwZVvfV7UkGahH2g6ySe8M8R+zYBwPrv5byZ9QAW6cQVvNKo7GgmD+p8aYb6D9JBuvy8/WhOno2wQ=="], - "@parcel/watcher": ["@parcel/watcher@2.5.6", "", { "dependencies": { "detect-libc": "^2.0.3", "is-glob": "^4.0.3", "node-addon-api": "^7.0.0", "picomatch": "^4.0.3" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.6", "@parcel/watcher-darwin-arm64": "2.5.6", "@parcel/watcher-darwin-x64": "2.5.6", "@parcel/watcher-freebsd-x64": "2.5.6", "@parcel/watcher-linux-arm-glibc": "2.5.6", "@parcel/watcher-linux-arm-musl": "2.5.6", "@parcel/watcher-linux-arm64-glibc": "2.5.6", "@parcel/watcher-linux-arm64-musl": "2.5.6", "@parcel/watcher-linux-x64-glibc": "2.5.6", "@parcel/watcher-linux-x64-musl": "2.5.6", "@parcel/watcher-win32-arm64": "2.5.6", "@parcel/watcher-win32-ia32": "2.5.6", "@parcel/watcher-win32-x64": "2.5.6" } }, "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ=="], + "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.10", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-3wyzCQ6+ubRA+D4uv9m95JYLXxmOHp05qjrkjeA7uKHHtjpPggQzc6DAb0URl7j67oR0K2foO4ip27TiX037Bw=="], - "@parcel/watcher-android-arm64": ["@parcel/watcher-android-arm64@2.5.6", "", { "os": "android", "cpu": "arm64" }, "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A=="], + "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.10", "", { "dependencies": { "@radix-ui/react-slot": "1.3.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg=="], - "@parcel/watcher-darwin-arm64": ["@parcel/watcher-darwin-arm64@2.5.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA=="], + "@radix-ui/react-progress": ["@radix-ui/react-progress@1.1.16", "", { "dependencies": { "@radix-ui/react-context": "1.2.2", "@radix-ui/react-primitive": "2.1.10" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-5XnomAsoZZCY+KNTxbIghpGqPruZvKFNlvcAljVAOdDRDsH4/OZQxhtwo5wdtoDM5R6MhJBb2sPnDuRFep3lzg=="], - "@parcel/watcher-darwin-x64": ["@parcel/watcher-darwin-x64@2.5.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg=="], + "@radix-ui/react-radio-group": ["@radix-ui/react-radio-group@1.4.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-size": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-cgYFEkntCxppHZgtSZ+7vh0wbZQ+IC7PPMw8DSnRG27B6kDd32/Zw0OJt7dGDigCoprMuWHjg2PvUn3PYvPFoQ=="], - "@parcel/watcher-freebsd-x64": ["@parcel/watcher-freebsd-x64@2.5.6", "", { "os": "freebsd", "cpu": "x64" }, "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng=="], + "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.19", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-is-hydrated": "0.1.3", "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-V9jI6hDjT7l3jsCQD9bLNvDLM3tH/gdbOTp7Tefp3hbbgCGQoK7tUvrWiRlcoBHIZ809ElXwNQwVo0B98LuTXQ=="], - "@parcel/watcher-linux-arm-glibc": ["@parcel/watcher-linux-arm-glibc@2.5.6", "", { "os": "linux", "cpu": "arm" }, "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ=="], + "@radix-ui/react-scroll-area": ["@radix-ui/react-scroll-area@1.2.18", "", { "dependencies": { "@radix-ui/number": "1.1.3", "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Zn5Cd171wxsO3Dfg8HaW6RifTb9CYTKQJHs/G4+LN1GfmJpaQMZQyQxMprVPHpaz7QY4l9BxK2JwQuzHsXC8nA=="], - "@parcel/watcher-linux-arm-musl": ["@parcel/watcher-linux-arm-musl@2.5.6", "", { "os": "linux", "cpu": "arm" }, "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg=="], + "@radix-ui/react-select": ["@radix-ui/react-select@2.3.7", "", { "dependencies": { "@radix-ui/number": "1.1.3", "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-focus-guards": "1.1.6", "@radix-ui/react-focus-scope": "1.1.16", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-popper": "1.3.7", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-slot": "1.3.3", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-use-previous": "1.1.4", "@radix-ui/react-visually-hidden": "1.2.11", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.7.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-WFGImkmbzcfxeIwq/+4HvRN0pizBwbwQUED4I13ezQsDdfl38ZntN6TmR8XaSzPBqoCToe8rF75j6NPNDSzhbg=="], - "@parcel/watcher-linux-arm64-glibc": ["@parcel/watcher-linux-arm64-glibc@2.5.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA=="], + "@radix-ui/react-separator": ["@radix-ui/react-separator@1.1.15", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.10" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-jOLO4lssEzWpoDu7G+Ze4VjwMRUBt291pnZD0gmalREZipnTX3wadQo7Fy48GCTfe14/YRN6rw/rOJqrE85Wxw=="], - "@parcel/watcher-linux-arm64-musl": ["@parcel/watcher-linux-arm64-musl@2.5.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA=="], + "@radix-ui/react-slider": ["@radix-ui/react-slider@1.4.7", "", { "dependencies": { "@radix-ui/number": "1.1.3", "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-use-previous": "1.1.4", "@radix-ui/react-use-size": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-mTSLf1GC/C0moWjTbvCM6Qn/gBjvlFt1azuWF2v7MN5C3Zq2U2J2lN3ZEYkpujuOU5Ro7A28wkviSxaKnG0BYg=="], - "@parcel/watcher-linux-x64-glibc": ["@parcel/watcher-linux-x64-glibc@2.5.6", "", { "os": "linux", "cpu": "x64" }, "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ=="], + "@radix-ui/react-slot": ["@radix-ui/react-slot@1.3.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.5" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q=="], - "@parcel/watcher-linux-x64-musl": ["@parcel/watcher-linux-x64-musl@2.5.6", "", { "os": "linux", "cpu": "x64" }, "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg=="], + "@radix-ui/react-switch": ["@radix-ui/react-switch@1.3.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-size": "1.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-48tB/4dn2UVLBCYhTu9AuR63IHl73l/qLbLgxd86noTUor4/K4LFDAcYjK+isP5313qxaFpjPVogE7+Y0/V3Kw=="], - "@parcel/watcher-win32-arm64": ["@parcel/watcher-win32-arm64@2.5.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q=="], + "@radix-ui/react-tabs": ["@radix-ui/react-tabs@1.1.21", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-use-controllable-state": "1.2.6" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-UKxJlZid7FVtsk/WTxj4i4uSEgj2Au+KBbS7SQyTlzMhhn+86Cz3tISZdTa87bfEfcuvZezf2ZsxD4xuEKtkog=="], - "@parcel/watcher-win32-ia32": ["@parcel/watcher-win32-ia32@2.5.6", "", { "os": "win32", "cpu": "ia32" }, "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g=="], + "@radix-ui/react-toast": ["@radix-ui/react-toast@1.2.23", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-visually-hidden": "1.2.11" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-ofhyAsYaocRGOs/n0XWdUOSVzEAG6BfrMVM8z0c0kLEWY38w/0WuMFPTJP/HVaZPYkMvHZoKIIhNcjbTCBILPg=="], - "@parcel/watcher-win32-x64": ["@parcel/watcher-win32-x64@2.5.6", "", { "os": "win32", "cpu": "x64" }, "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw=="], + "@radix-ui/react-toggle": ["@radix-ui/react-toggle@1.1.18", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-use-controllable-state": "1.2.6" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7lonPlKfSacd20GlOBx2ltuVKz9oqWYZz+oMQyOltw6t1y2nyftj2ZmwwUHYn49kqfDWcp8dNZm5NgV+5Z+mug=="], - "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], + "@radix-ui/react-toggle-group": ["@radix-ui/react-toggle-group@1.1.19", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-toggle": "1.1.18", "@radix-ui/react-use-controllable-state": "1.2.6" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-OtnwuSVjd1Ofi+AdnvhsjQdyuhCDwYs1w9RyB5BN/OavXOVQo42SYqQjwUnbPnaiPFBpQ9aX70dWeee+v2oBLA=="], - "@playwright/test": ["@playwright/test@1.60.0", "", { "dependencies": { "playwright": "1.60.0" }, "bin": { "playwright": "cli.js" } }, "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag=="], + "@radix-ui/react-toolbar": ["@radix-ui/react-toolbar@1.1.19", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-separator": "1.1.15", "@radix-ui/react-toggle-group": "1.1.19" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Ph0IvtYw4VB12ZnZg+YtrGs8yJQsnizwo/zu0R4Y/nWugtJzA7Pg1eWeuDR9+LSqn+xjamss+UOSOJJJ4gx8jw=="], - "@poppinss/colors": ["@poppinss/colors@4.1.6", "", { "dependencies": { "kleur": "^4.1.5" } }, "sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg=="], + "@radix-ui/react-tooltip": ["@radix-ui/react-tooltip@1.2.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-id": "1.1.4", "@radix-ui/react-popper": "1.3.7", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-slot": "1.3.3", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-visually-hidden": "1.2.11" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-6EamKFRRnlpdadndbZ6LMwycfwkwPte1B42hs6QA0gYhjaOKqW4PZ4pjaW9UrlDX5eVt/OjncE7BFTPL5nmZhg=="], - "@poppinss/dumper": ["@poppinss/dumper@0.6.5", "", { "dependencies": { "@poppinss/colors": "^4.1.5", "@sindresorhus/is": "^7.0.2", "supports-color": "^10.0.0" } }, "sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw=="], + "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.4", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-R6OUY2e2fA6Yn6s+VSx5KBV6Nx8LQEhu+cz7LCej18rQ1HLyg9PSC9jP/ZNx0o6FAIK9c0F1kHylzSxKsdlkrQ=="], - "@poppinss/exception": ["@poppinss/exception@1.2.3", "", {}, "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw=="], + "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.2.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-use-effect-event": "0.0.5", "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-uEQJGT97ZA/TgP/Hydw47lHu+/vQj6z/0jA+WeTbK1o9Rx45GImjpD0tc3W5ad3D6XTSR6e1yEO0FvGq6WQfVQ=="], - "@protobufjs/aspromise": ["@protobufjs/aspromise@1.1.2", "", {}, "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="], + "@radix-ui/react-use-effect-event": ["@radix-ui/react-use-effect-event@0.0.5", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg=="], - "@protobufjs/base64": ["@protobufjs/base64@1.1.2", "", {}, "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="], + "@radix-ui/react-use-escape-keydown": ["@radix-ui/react-use-escape-keydown@1.1.5", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ge3ipobwSXTj4JyVtswQ7qZj0ZHdtbGuOno/LrgAAeSxtsJ6Vs4Gz5IkPH2bmqpjcLUFoqGhA/mueuIf63UXlA=="], - "@protobufjs/codegen": ["@protobufjs/codegen@2.0.5", "", {}, "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g=="], + "@radix-ui/react-use-is-hydrated": ["@radix-ui/react-use-is-hydrated@0.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-umO/aJ+82CpOnhDZUTbILCQf7kU/g0iv+oGs/Q8jw7IkhWBzaEP4sA268PhFAJTFetbwp3ICc6ktpI4TqtxcIw=="], - "@protobufjs/eventemitter": ["@protobufjs/eventemitter@1.1.0", "", {}, "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="], + "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.4", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw=="], - "@protobufjs/fetch": ["@protobufjs/fetch@1.1.0", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" } }, "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ=="], + "@radix-ui/react-use-previous": ["@radix-ui/react-use-previous@1.1.4", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-XoSLhbRbqxFtgJoi2fNHA3C6pDlY34x508vUpUGoFZfvePfHXHbE1lC4FYFMnJWgiCRroSTw6fOsXQoVS9RwZg=="], - "@protobufjs/float": ["@protobufjs/float@1.0.2", "", {}, "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="], + "@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.4", "", { "dependencies": { "@radix-ui/rect": "1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-cSOCh6JlkmfjLyNcLiu2nB4v+nm+dkZ+Q5KHWk/soo4U7ZLiEQFKHK9/YmtBHjfCEaU43IBKQOc4/uJmCaiCTQ=="], - "@protobufjs/inquire": ["@protobufjs/inquire@1.1.1", "", {}, "sha512-mnzgDV26ueAvk7rsbt9L7bE0SuAoqyuys/sMMrmVcN5x9VsxpcG3rqAUSgDyLp0UZlmNfIbQ4fHfCtreVBk8Ew=="], + "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.4", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.4" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-D3anSY15EJoxrihpsXI6SMrmmonnQtR2ni7arO+Lfdg3O95b9hNXxONk8jA5C8ANdF/h5HMAxejgs8PWJ6rlhw=="], - "@protobufjs/path": ["@protobufjs/path@1.1.2", "", {}, "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="], + "@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.2.11", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.10" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-NFS86RYYZb4/exihaESBGOpMJFz8MGLAfu3mOBSGByVnVPC9JPASfYubxd/8KbkQK0sYAv8lVQDEQukDX/qXvQ=="], - "@protobufjs/pool": ["@protobufjs/pool@1.1.0", "", {}, "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="], + "@radix-ui/rect": ["@radix-ui/rect@1.1.3", "", {}, "sha512-JtyZR+mqgBibTo8xea3B6ZRmzZiM/YeVBtUkas6zMuXjAlfIFIW2FgqeM9eLyvEaYX66vr6DJMK+4U6LV0KhNw=="], - "@protobufjs/utf8": ["@protobufjs/utf8@1.1.1", "", {}, "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg=="], + "@reduxjs/toolkit": ["@reduxjs/toolkit@2.12.0", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "@standard-schema/utils": "^0.3.0", "immer": "^11.0.0", "redux": "^5.0.1", "redux-thunk": "^3.1.0", "reselect": "^5.1.0" }, "peerDependencies": { "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" }, "optionalPeers": ["react", "react-redux"] }, "sha512-KiT+RzZbp6mQET+Mg+h2c97+9j1sNflUxQkIHI7Yuzf6Peu+OYpmkn6nbHWmLLWj+1ZODUJFwGZ7gx3L9R9EOw=="], "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.2", "", { "os": "android", "cpu": "arm64" }, "sha512-ZS4D1JPGn/MYQN/SYDWftIE/nVsM8j/AFOYEzAoOE2O3NktQOZru+/vYXGbR/qtdLdIfGCP0lcoJiYVzsEz+iQ=="], @@ -1269,79 +1097,37 @@ "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.60.2", "", { "os": "win32", "cpu": "x64" }, "sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdmg1Z/DaCWKxA=="], + "@scalar/openapi-types": ["@scalar/openapi-types@0.8.0", "", {}, "sha512-WmaxVSfvY5K/TwcG2B2TU1WOe1As1uc2s7myswtP6dBlcjU3hM08SApxv/jmyGaCE8t4gO5BBhmHY4pDUfmr2g=="], + "@sec-ant/readable-stream": ["@sec-ant/readable-stream@0.4.1", "", {}, "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg=="], "@seznam/compose-react-refs": ["@seznam/compose-react-refs@1.0.6", "", {}, "sha512-izzOXQfeQLonzrIQb8u6LQ8dk+ymz3WXTIXjvOlTXHq6sbzROg3NWU+9TTAOpEoK9Bth24/6F/XrfHJ5yR5n6Q=="], - "@silvia-odwyer/photon-node": ["@silvia-odwyer/photon-node@0.3.4", "", {}, "sha512-bnly4BKB3KDTFxrUIcgCLbaeVVS8lrAkri1pEzskpmxu9MdfGQTy8b8EgcD83ywD3RPMsIulY8xJH5Awa+t9fA=="], - - "@sinclair/typebox": ["@sinclair/typebox@0.34.49", "", {}, "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A=="], - - "@sindresorhus/is": ["@sindresorhus/is@7.2.0", "", {}, "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw=="], - - "@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@4.0.0", "", {}, "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ=="], - - "@smithers-orchestrator/accounts": ["@smithers-orchestrator/accounts@workspace:packages/accounts"], - - "@smithers-orchestrator/agents": ["@smithers-orchestrator/agents@workspace:packages/agents"], - - "@smithers-orchestrator/cli": ["@smithers-orchestrator/cli@workspace:apps/cli"], - - "@smithers-orchestrator/components": ["@smithers-orchestrator/components@workspace:packages/components"], - - "@smithers-orchestrator/control-plane": ["@smithers-orchestrator/control-plane@workspace:packages/control-plane"], - - "@smithers-orchestrator/db": ["@smithers-orchestrator/db@workspace:packages/db"], - - "@smithers-orchestrator/devtools": ["@smithers-orchestrator/devtools@workspace:packages/devtools"], - - "@smithers-orchestrator/driver": ["@smithers-orchestrator/driver@workspace:packages/driver"], + "@shikijs/core": ["@shikijs/core@4.4.1", "", { "dependencies": { "@shikijs/primitive": "4.4.1", "@shikijs/types": "4.4.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5", "hast-util-to-html": "^9.0.5" } }, "sha512-VeR2CY6Nn9/WbisoYLOQZ7HZOnwTrpBuOw4wExjqLnBCi62BNWynBUO6K2uPIASPFJwAv7cX1fUu+LrPlSstcw=="], - "@smithers-orchestrator/engine": ["@smithers-orchestrator/engine@workspace:packages/engine"], + "@shikijs/engine-javascript": ["@shikijs/engine-javascript@4.4.1", "", { "dependencies": { "@shikijs/types": "4.4.1", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" } }, "sha512-6U4lJBh8LTvIkEVqRHv/rr3ruwtO6IweFQt1ME1ntHJMGHS+6N86vfYGO1o8c/DtOCTia2lfhdQBtBrps1sDfQ=="], - "@smithers-orchestrator/errors": ["@smithers-orchestrator/errors@workspace:packages/errors"], + "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@4.4.1", "", { "dependencies": { "@shikijs/types": "4.4.1", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-p23RugMKss0r5DAtRJW1yAXUDl60JvhQYV20yuxei//26JyDSJefV3umyWzzwep2weblMnJGDYahuti6XkcMgA=="], - "@smithers-orchestrator/gateway": ["@smithers-orchestrator/gateway@workspace:packages/gateway"], + "@shikijs/langs": ["@shikijs/langs@4.4.1", "", { "dependencies": { "@shikijs/types": "4.4.1" } }, "sha512-xb2kCMloBCIraIy2fS5MW0t/BxVY3q2nDyQKBoeSeq6KNrQbShHetCFlw2n35fGIJ6t3+hXDLQogP5ir9O9bvA=="], - "@smithers-orchestrator/gateway-client": ["@smithers-orchestrator/gateway-client@workspace:packages/gateway-client"], + "@shikijs/primitive": ["@shikijs/primitive@4.4.1", "", { "dependencies": { "@shikijs/types": "4.4.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5" } }, "sha512-ko2OfDoG89YuQ7xL5LtcQiWKb7NIv1Ephb7g48TVU198OzAMLC8lXVEwaJGHK4sUMYrfAGJDqYmNLOLiW/Kz8w=="], - "@smithers-orchestrator/gateway-react": ["@smithers-orchestrator/gateway-react@workspace:packages/gateway-react"], + "@shikijs/themes": ["@shikijs/themes@4.4.1", "", { "dependencies": { "@shikijs/types": "4.4.1" } }, "sha512-wudOaoFro+/Zl9gQv2W1Ur5XlVduqvTuYLI483Xi0wgc1A+cy1hfB2r6ac6ufBgF+ID7KJEW7L41MHrzQ4wH+w=="], - "@smithers-orchestrator/graph": ["@smithers-orchestrator/graph@workspace:packages/graph"], + "@shikijs/transformers": ["@shikijs/transformers@4.4.1", "", { "dependencies": { "@shikijs/core": "4.4.1", "@shikijs/types": "4.4.1" } }, "sha512-Sb9Eehas+5EhClpFgNuklwY3aWf354FLaKRCiAWmjdNbHAjoQUpv6WmSj+N19eTXO6GLIWh1dIOH9dxyauhVWw=="], - "@smithers-orchestrator/memory": ["@smithers-orchestrator/memory@workspace:packages/memory"], + "@shikijs/types": ["@shikijs/types@4.4.1", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5" } }, "sha512-GOwCLQDHM5EjGUWNPrhzJbr6JP8V/Dx/CDVkWvbZ1Avw5JFnNUckrgbLmE07qtg4WlW7Q7QFndhjIkeU9XMPvw=="], - "@smithers-orchestrator/observability": ["@smithers-orchestrator/observability@workspace:apps/observability"], + "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], - "@smithers-orchestrator/openapi": ["@smithers-orchestrator/openapi@workspace:packages/openapi"], - - "@smithers-orchestrator/pi-plugin": ["@smithers-orchestrator/pi-plugin@workspace:packages/pi-plugin"], - - "@smithers-orchestrator/protocol": ["@smithers-orchestrator/protocol@workspace:packages/protocol"], - - "@smithers-orchestrator/react-reconciler": ["@smithers-orchestrator/react-reconciler@workspace:packages/react-reconciler"], - - "@smithers-orchestrator/sandbox": ["@smithers-orchestrator/sandbox@workspace:packages/sandbox"], - - "@smithers-orchestrator/scheduler": ["@smithers-orchestrator/scheduler@workspace:packages/scheduler"], - - "@smithers-orchestrator/scorers": ["@smithers-orchestrator/scorers@workspace:packages/scorers"], - - "@smithers-orchestrator/server": ["@smithers-orchestrator/server@workspace:packages/server"], - - "@smithers-orchestrator/smithers": ["@smithers-orchestrator/smithers@workspace:apps/smithers"], - - "@smithers-orchestrator/smithers-demo": ["@smithers-orchestrator/smithers-demo@workspace:apps/smithers-demo"], - - "@smithers-orchestrator/smithers-studio-2": ["@smithers-orchestrator/smithers-studio-2@workspace:apps/smithers-studio-2"], - - "@smithers-orchestrator/smithers-tui-demo": ["@smithers-orchestrator/smithers-tui-demo@workspace:apps/smithers-tui-demo"], + "@silvia-odwyer/photon-node": ["@silvia-odwyer/photon-node@0.3.4", "", {}, "sha512-bnly4BKB3KDTFxrUIcgCLbaeVVS8lrAkri1pEzskpmxu9MdfGQTy8b8EgcD83ywD3RPMsIulY8xJH5Awa+t9fA=="], - "@smithers-orchestrator/time-travel": ["@smithers-orchestrator/time-travel@workspace:packages/time-travel"], + "@sinclair/typebox": ["@sinclair/typebox@0.34.49", "", {}, "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A=="], - "@smithers-orchestrator/usage": ["@smithers-orchestrator/usage@workspace:packages/usage"], + "@sindresorhus/is": ["@sindresorhus/is@7.2.0", "", {}, "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw=="], - "@smithers-orchestrator/vcs": ["@smithers-orchestrator/vcs@workspace:packages/vcs"], + "@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@4.0.0", "", {}, "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ=="], "@smithy/config-resolver": ["@smithy/config-resolver@4.4.17", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.14", "@smithy/types": "^4.14.1", "@smithy/util-config-provider": "^4.2.2", "@smithy/util-endpoints": "^3.4.2", "@smithy/util-middleware": "^4.2.14", "tslib": "^2.6.2" } }, "sha512-TzDZcAnhTyAHbXVxWZo7/tEcrIeFq20IBk8So3OLOetWpR8EwY/yEqBMBFaJMeyEiREDq4NfEl+qO3OAUD+vbQ=="], @@ -1431,10 +1217,122 @@ "@smithy/uuid": ["@smithy/uuid@1.1.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g=="], + "@smthrs/accounts": ["@smthrs/accounts@workspace:packages/accounts"], + + "@smthrs/agents": ["@smthrs/agents@0.33.0", "", { "dependencies": { "@ai-sdk/anthropic": "^4.0.5", "@ai-sdk/openai": "^4.0.5", "@modelcontextprotocol/sdk": "^1.29.0", "@smthrs/driver": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/observability": "0.33.0", "ai": "^7.0.10", "effect": "4.0.0-beta.102", "zod": "^4.4.3" } }, "sha512-dl8UFXLoQgkIse5Nlq1EdL47xFK4SLtdwQK4kPIAyRtzjvT1i8T+oGqscCeKWbJXt+Nd2T8UN/zJRcm5rTlpVw=="], + + "@smthrs/aws": ["@smthrs/aws@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/sandbox": "0.33.0" }, "peerDependencies": { "@aws-sdk/client-cloudwatch-logs": "^3.700.0", "@aws-sdk/client-codebuild": "^3.700.0", "@aws-sdk/client-ecs": "^3.700.0", "@aws-sdk/client-s3": "^3.700.0" }, "optionalPeers": ["@aws-sdk/client-cloudwatch-logs", "@aws-sdk/client-codebuild", "@aws-sdk/client-ecs", "@aws-sdk/client-s3"] }, "sha512-AVxOll72h/i4uKUUqX2foN2xAazqvjj1/CylTrqfEtGo0NZ09/do1j4v5Md+GWjMrskyoquTIZ9DlOOnGVQVtA=="], + + "@smthrs/cli": ["@smthrs/cli@0.33.0", "", { "dependencies": { "@clack/core": "^1.4.2", "@clack/prompts": "^1.6.0", "@mdx-js/esbuild": "^3.1.1", "@modelcontextprotocol/sdk": "^1.29.0", "@opentui/core": "^0.4.2", "@opentui/react": "^0.4.2", "@pierre/diffs": "^1.2.11", "@smthrs/accounts": "0.33.0", "@smthrs/agents": "0.33.0", "@smthrs/components": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/devtools": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/engine": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/memory": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/openapi": "0.33.0", "@smthrs/protocol": "0.33.0", "@smthrs/review": "0.33.0", "@smthrs/scheduler": "0.33.0", "@smthrs/scorers": "0.33.0", "@smthrs/server": "0.33.0", "@smthrs/time-travel": "0.33.0", "@smthrs/tui": "0.33.0", "@smthrs/usage": "0.33.0", "@smthrs/vcs": "0.33.0", "@toon-format/toon": "2.3.0", "@xterm/addon-fit": "^0.11.0", "@xterm/xterm": "^6.0.0", "cron-parser": "^5.6.1", "drizzle-orm": "^0.45.2", "effect": "4.0.0-beta.102", "incur": "^0.4.10", "picocolors": "^1.1.1", "react": "^19.2.7", "smthrs": "0.33.0", "yaml": "^2.9.0", "zod": "^4.4.3" } }, "sha512-s7lRAfo5XLIIJO7y+mML4Y7XTpjzwaXpSmi7v7RVO7n1fALtxkxIJFftBiZZO4UYKxHS9hjmNOgKBnnAznLm2g=="], + + "@smthrs/cloudflare": ["@smthrs/cloudflare@0.33.0", "", { "dependencies": { "@smthrs/sandbox": "0.33.0" }, "peerDependencies": { "@cloudflare/sandbox": "^0.12.3" }, "optionalPeers": ["@cloudflare/sandbox"] }, "sha512-Go7B4psWVPXJu0YjseAT4xii1YMwfFWflpOMJJUPD6imYbf/frQ+WIkjHlscb3nnSq4X1bOJ0gxT4wOWXAthmQ=="], + + "@smthrs/components": ["@smthrs/components@0.33.0", "", { "dependencies": { "@smthrs/agents": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/memory": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/react-reconciler": "0.33.0", "@smthrs/scheduler": "0.33.0", "bippy": "^0.5.42", "react": "^19.2.7", "react-dom": "^19.2.7", "zod": "^4.4.3" } }, "sha512-vIEG5KHLJc1lYOfePrgvxaIjP2CTgOvAxQFk1Mn5AQ3l+w+D1OzBQUe92ybmHJVNnij7H/mL0vFFYi0zCw24Ow=="], + + "@smthrs/control-plane": ["@smthrs/control-plane@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0" } }, "sha512-O7vVm6E7oF7Y8xZW+ErjtI347+OCmQQMYIZeYQA4DCb00FbP1AwSfrAyUWEWXpEmg7d5abUL4yHskkc3XvyhSQ=="], + + "@smthrs/daytona": ["@smthrs/daytona@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/sandbox": "0.33.0" }, "peerDependencies": { "@daytonaio/sdk": "^0.194.0" }, "optionalPeers": ["@daytonaio/sdk"] }, "sha512-Dvksc+T29N1xla7ve2HrMs741ARNNqGl+Id5/YdT4SC5KeyVO3sbzsJ7bryRb14jo9qYlsr0RGDH2QWkqQsiDA=="], + + "@smthrs/db": ["@smthrs/db@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/scheduler": "0.33.0", "drizzle-orm": "^0.45.2", "drizzle-zod": "^0.8.3", "effect": "4.0.0-beta.102", "zod": "^4.4.3" } }, "sha512-/k1rtnvDdisC2nZg1R9Y4C+Ae1zWc4oNa3YLknUS/TWNFx01QniZlzfIgeQFbVeh2il6otYVt/n5w7pHTWOoFw=="], + + "@smthrs/devtools": ["@smthrs/devtools@0.33.0", "", {}, "sha512-8BQlLk4c8DYiEEC27FJ5WZtrwG1cODHFmOuzN/bWnkhogY/B+MqXrEcOQdMMYsVtnrxacBiakZiFX1AP6qN8Fw=="], + + "@smthrs/driver": ["@smthrs/driver@0.33.0", "", { "dependencies": { "@smthrs/db": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/scheduler": "0.33.0", "effect": "4.0.0-beta.102", "zod": "^4.4.3" } }, "sha512-bm5Qx8UxXTR9Fk8WatsakpAToNUMs3ub9/i4r63NJYj9ViJJ4BDqbjTUciAXca7ELdum5CBuu7tIGlPteKQw6A=="], + + "@smthrs/electric-proxy": ["@smthrs/electric-proxy@0.33.0", "", { "dependencies": { "@smthrs/gateway": "0.33.0" }, "bin": { "smithers-electric-proxy": "bin/smithers-electric-proxy.js" } }, "sha512-VByPSaFjiMamvy2wvA8YgcHwtIXWeZEHEBP+LMZR9NLtIKXvHZXKZ4Qz4xC9Wf2R7lrhapvSkb8qE1BQ/jZWJA=="], + + "@smthrs/engine": ["@smthrs/engine@0.33.0", "", { "dependencies": { "@effect/platform-bun": "4.0.0-beta.102", "@effect/sql-sqlite-bun": "4.0.0-beta.102", "@smthrs/agents": "0.33.0", "@smthrs/components": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/react-reconciler": "0.33.0", "@smthrs/sandbox": "0.33.0", "@smthrs/scheduler": "0.33.0", "@smthrs/scorers": "0.33.0", "@smthrs/time-travel": "0.33.0", "@smthrs/tool-context": "0.33.0", "@smthrs/vcs": "0.33.0", "diff": "^9.0.0", "drizzle-orm": "^0.45.2", "effect": "4.0.0-beta.102", "react": "^19.2.7", "react-dom": "^19.2.7", "zod": "^4.4.3" }, "optionalDependencies": { "@electric-sql/pglite": "^0.5.4", "@electric-sql/pglite-socket": "^0.2.6", "pg": "^8.22.0" } }, "sha512-09IzZmLnFhnC0E1L6hUYW+71D6t2Eg5bl2Md1a35tSyRJEfiP3zPeL0wl7h2jcxm2YP0Z7kFhrG/1b52k0Dssg=="], + + "@smthrs/errors": ["@smthrs/errors@0.33.0", "", { "dependencies": { "effect": "4.0.0-beta.102" } }, "sha512-501B5G4joqGcfjO8XOHXiGc2Ijr8dACdDD5RtXRbxvduu53AoGQXpp9xVoEh6Ey8PqaQiX4b50jneiQoIZXPpg=="], + + "@smthrs/gateway": ["@smthrs/gateway@0.33.0", "", { "dependencies": { "@smthrs/protocol": "0.33.0" } }, "sha512-KPJ9BDXOJWLyE2n7CH759Db7m4is4ctw2g3o/YOaUBidNicPCyt1q7IM1ffEVF92G611/jurkqoNjxhI7/FQOg=="], + + "@smthrs/gateway-client": ["@smthrs/gateway-client@0.33.0", "", { "dependencies": { "@smthrs/electric-proxy": "^0.33.0", "@smthrs/gateway": "0.33.0", "@smthrs/protocol": "0.33.0", "@smthrs/usage": "0.33.0", "@tanstack/db": "0.6.13", "@tanstack/electric-db-collection": "0.3.11", "@tanstack/query-db-collection": "1.0.45", "@tanstack/react-query": "5.101.2" } }, "sha512-9OwKzHLI7Dl+Mj7OhaWtINvyhxd+b2USaXSJgSo7lKERFEAaCe6s104dRP/7dlanXdyh6CSK+I3+gwvWZ0R61w=="], + + "@smthrs/gateway-react": ["@smthrs/gateway-react@0.33.0", "", { "dependencies": { "@smthrs/gateway-client": "0.33.0", "@tanstack/react-db": "0.1.91", "@tanstack/react-query": "5.101.2", "effect": "4.0.0-beta.102" }, "peerDependencies": { "react": "^19.0.0", "react-dom": "^19.0.0" } }, "sha512-sf4Da0J/U4KsKMf58KVkuGKDZor6obuqEBMLS7zOWRObEjCsR9nZS5345QyTIrzNW3RW7QNM5susEoj3mxbBdw=="], + + "@smthrs/gateway-ui": ["@smthrs/gateway-ui@0.33.0", "", { "dependencies": { "@smthrs/gateway-client": "0.33.0", "@smthrs/gateway-react": "0.33.0", "@smthrs/ui": "0.33.0", "@smthrs/ui-styleguide": "0.33.0", "@xyflow/react": "^12.10.2", "dagre": "^0.8.5" }, "peerDependencies": { "react": "^19.0.0", "react-dom": "^19.0.0" } }, "sha512-DHgbv9E2yM0/BeyHLKR9UvXPgjoNX03M0A/NV4OjVJaAH3vkkRSYz/h41ushTQrS6BEyaZbYMEDL0+RxSNTxOw=="], + + "@smthrs/gcp": ["@smthrs/gcp@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/sandbox": "0.33.0" }, "peerDependencies": { "@google-cloud/run": "^2.0.0", "@google-cloud/storage": "^7.0.0" }, "optionalPeers": ["@google-cloud/run", "@google-cloud/storage"] }, "sha512-hIot4+LxgujrZFVFhM51QNY3gWZZ4tj6i4R6GI7wvlfL2JruR43+u+q2ikzBTV0QnZDSuPqV9tvnU/nHqEYkUA=="], + + "@smthrs/graph": ["@smthrs/graph@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "drizzle-orm": "^0.45.2", "zod": "^4.4.3" } }, "sha512-WTqlfwlATZNsl9aoRI+QHazRX3H81sFX65+nEJPrKOegh/TUJL/KLg6YuLs3acIe3fdPz5sp1QMT9Got0fp9VQ=="], + + "@smthrs/integrations": ["@smthrs/integrations@0.33.0", "", { "dependencies": { "@smthrs/components": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/engine": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/react-reconciler": "0.33.0", "@smthrs/scheduler": "0.33.0", "effect": "4.0.0-beta.102", "react": "^19.2.7", "zod": "4.4.3" } }, "sha512-PKE9ZylVA0k0Q5WzqzAaurSgO1or6zbkJdwqsnNAtRh/xt23cD1yfQwxxpDtqQ8gZ19bLE3QAHNTd195b+Doyg=="], + + "@smthrs/jj-darwin-arm64": ["@smthrs/jj-darwin-arm64@workspace:packages/jj-darwin-arm64"], + + "@smthrs/jj-darwin-x64": ["@smthrs/jj-darwin-x64@workspace:packages/jj-darwin-x64"], + + "@smthrs/jj-linux-arm64": ["@smthrs/jj-linux-arm64@workspace:packages/jj-linux-arm64"], + + "@smthrs/jj-linux-x64": ["@smthrs/jj-linux-x64@workspace:packages/jj-linux-x64"], + + "@smthrs/jj-win32-x64": ["@smthrs/jj-win32-x64@workspace:packages/jj-win32-x64"], + + "@smthrs/memory": ["@smthrs/memory@0.33.0", "", { "dependencies": { "@smthrs/db": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/scheduler": "0.33.0", "@vectorize-io/hindsight-client": "0.8.4", "drizzle-orm": "^0.45.2", "effect": "4.0.0-beta.102", "zod": "^4.4.3" } }, "sha512-g/CVUQvxMRziRM48Xe4yDLHKnaN0VzLu8ZPMpvkUFs+ToYJAk3lXPuSj0fKQMBXsdKRulomlj26CUWvEFBw4gQ=="], + + "@smthrs/microsandbox": ["@smthrs/microsandbox@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/sandbox": "0.33.0" }, "peerDependencies": { "microsandbox": "0.6.6" }, "optionalPeers": ["microsandbox"] }, "sha512-Ij/yai+AQ193aZe8xwrWQuzxauNN9IMJJHsaETBuKjj/saVTnWID1oSSOrtjqVkRvVhLdJ6/P2gwomypjxcdhg=="], + + "@smthrs/observability": ["@smthrs/observability@0.33.0", "", { "dependencies": { "@effect/opentelemetry": "4.0.0-beta.102", "@effect/platform-bun": "4.0.0-beta.102", "effect": "4.0.0-beta.102" } }, "sha512-LrqSOgS626noFfuF5ltJ4isRza9+RpG5Z/gDm7ADU5Ft9vCFGWlxnccz9yxntoT443pSi0DWDk9aWRnlVTnY9g=="], + + "@smthrs/openapi": ["@smthrs/openapi@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/scheduler": "0.33.0", "ai": "^7.0.10", "effect": "4.0.0-beta.102", "yaml": "^2.9.0", "zod": "^4.4.3" } }, "sha512-k+JYat/tJMjauLsbS0K6n7Ch6OqdJk7i5I1thHJWE2XNEmk4IcyB0TuP1fXEwFAx/AdsgqAeqhpMoQVttsXrLA=="], + + "@smthrs/pi-plugin": ["@smthrs/pi-plugin@workspace:packages/pi-plugin"], + + "@smthrs/protocol": ["@smthrs/protocol@0.33.0", "", {}, "sha512-23q08dp4TcjtiaSUbYb4q45Rr8XYtprFtlfEoji9Zd3uo2uvpdoGpGvsjHM9v20Kc6iRhGV06OC2tKEYCx5mbQ=="], + + "@smthrs/react-reconciler": ["@smthrs/react-reconciler@0.33.0", "", { "dependencies": { "@smthrs/devtools": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "bippy": "^0.5.42", "react": "^19.2.7", "react-reconciler": "^0.33.0" } }, "sha512-IGeJCUfN14Mu7zGigDrglHo2eJVMYZcL9Y0VKcB6469Hn/wSCLAlhctwHpXtHGI6SDE4HC/OqYlAe73d2jAvXQ=="], + + "@smthrs/review": ["@smthrs/review@0.33.0", "", { "dependencies": { "@pierre/diffs": "^1.2.12", "@smthrs/agents": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/engine": "0.33.0", "@smthrs/ui-styleguide": "0.33.0", "effect": "4.0.0-beta.102", "mermaid": "^11.16.0", "smthrs": "0.33.0", "zod": "^4.4.3" }, "bin": { "smithers-review": "src/cli/main.ts" } }, "sha512-6d8479NJ1B1lqVc6Eiee64D/dv7ahdRssGQlgDZdB/l6SjZDYn/q06gXX9M/FwEUp4LNyLzdu5TeLpOEgFDXSg=="], + + "@smthrs/sandbox": ["@smthrs/sandbox@0.33.0", "", { "dependencies": { "@smthrs/db": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/scheduler": "0.33.0", "effect": "4.0.0-beta.102" } }, "sha512-i3F/vPq0E3JEPccWmpO02zDclpx/JMFwxYOzw4wMtQy2d+N5Tyv0sSSUI3qmxkOx5yrEwNxsNO5ggTV3GlbFjQ=="], + + "@smthrs/scheduler": ["@smthrs/scheduler@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "effect": "4.0.0-beta.102" } }, "sha512-X56SHlwiZZDSY6pYQlRwZaIhVQgJgbbj3ZzJq//c9ticG3iwC6jeaG4UHCozdVlY1D8ykKcsdDXm1GQb4HhGqA=="], + + "@smthrs/scorers": ["@smthrs/scorers@0.33.0", "", { "dependencies": { "@smthrs/agents": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/scheduler": "0.33.0", "drizzle-orm": "^0.45.2", "effect": "4.0.0-beta.102", "typescript": "~6.0.3", "zod": "^4.4.3" } }, "sha512-ju3omeoYq7Pn9oIqRneCEoGyaAmScGxKQi22e9NAKHHWCzpdiouYBab7Z2qtOk9G5X/4503EsdpFH6JpPHEYpQ=="], + + "@smthrs/server": ["@smthrs/server@0.33.0", "", { "dependencies": { "@smthrs/accounts": "0.33.0", "@smthrs/components": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/devtools": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/engine": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/gateway": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/integrations": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/protocol": "0.33.0", "@smthrs/scheduler": "0.33.0", "@smthrs/time-travel": "0.33.0", "@smthrs/ui-styleguide": "0.33.0", "@smthrs/usage": "0.33.0", "cron-parser": "^5.6.1", "drizzle-orm": "^0.45.2", "effect": "4.0.0-beta.102", "hono": "^4.12.27", "react": "^19.2.7", "react-dom": "^19.2.7", "ws": "^8.21.0" }, "peerDependencies": { "playwright": "^1.61.1" }, "optionalPeers": ["playwright"] }, "sha512-iCcgYQTBBwnlnpWoyl8nYd60ETeQNXXBy+jZXSnvj61FoidGzf8u1Tjg/zcKLnh1A5c2o+eGa0YUqgk8FF8v4Q=="], + + "@smthrs/smithers": ["@smthrs/smithers@workspace:apps/smithers"], + + "@smthrs/smithers-demo": ["@smthrs/smithers-demo@workspace:apps/smithers-demo"], + + "@smthrs/smithers-studio-2": ["@smthrs/smithers-studio-2@workspace:apps/smithers-studio-2"], + + "@smthrs/smithers-tui-demo": ["@smthrs/smithers-tui-demo@workspace:apps/smithers-tui-demo"], + + "@smthrs/telegram": ["@smthrs/telegram@0.33.0", "", {}, "sha512-MuNm1lLwPBgyll9P1+yvEsLWad9N2Zro5rCXB09YB0kfVKsmkONwV0J8WeZPO1W/POMoYi44st/lq2NBcaUN8g=="], + + "@smthrs/testing": ["@smthrs/testing@0.33.0", "", { "dependencies": { "@smthrs/components": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/engine": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/react-reconciler": "0.33.0", "@smthrs/scheduler": "0.33.0", "effect": "4.0.0-beta.102", "zod": "^4.4.3" }, "peerDependencies": { "koffi": "^2.16.2" }, "optionalPeers": ["koffi"] }, "sha512-f/IfOjG8MOqxtvPJLNJ0LJ21OXMRUAeb8JF6YV3ZU4Ht7td2IWGNXDtyFFG3DQBdqZVhQSOSY5O/WFP/j4fJuQ=="], + + "@smthrs/time-travel": ["@smthrs/time-travel@0.33.0", "", { "dependencies": { "@effect/platform-bun": "4.0.0-beta.102", "@smthrs/db": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/react-reconciler": "0.33.0", "@smthrs/scheduler": "0.33.0", "@smthrs/vcs": "0.33.0", "drizzle-orm": "^0.45.2", "effect": "4.0.0-beta.102", "picocolors": "^1.1.1" } }, "sha512-QY+r4R8N10N8rwn3RnBCHpEmGPNVzgXWrZBcj0dZY0TY9TqRaBW6Jbj+7M8RB20Gk6Kgf5Xbha8buY3OSFqgsA=="], + + "@smthrs/tool-context": ["@smthrs/tool-context@workspace:packages/tool-context"], + + "@smthrs/tui": ["@smthrs/tui@0.33.0", "", { "dependencies": { "@opentui/core": "^0.4.2", "@opentui/react": "^0.4.2", "@smthrs/gateway-client": "0.33.0", "@smthrs/gateway-react": "0.33.0", "@smthrs/tui-ui": "0.33.0", "@smthrs/ui-core": "0.33.0", "react": "^19.2.7", "react-dom": "^19.2.7" }, "bin": { "smithers-mon": "src/index.tsx" } }, "sha512-gGB6wtxWUrzWd3afKtMk37tQCFGUfP2IgaMIBSzyZukO8581AlE5IxjUnnPk7P93THbMWzyxfhdKhrbi7g0hBA=="], + + "@smthrs/tui-ui": ["@smthrs/tui-ui@0.33.0", "", { "dependencies": { "@opentui/core": "^0.4.2", "@opentui/react": "^0.4.2", "react": "^19.2.7" } }, "sha512-uXQNDM1lsoX3GJhwCFOsDQ7jTGscX/jFk/nWeGc/8MnyWURIPdc5R4p48GYVaRhJfVMhqyCP4lGciiliHIaMjg=="], + + "@smthrs/ui": ["@smthrs/ui@0.33.0", "", { "dependencies": { "@milkdown/crepe": "7.21.2", "@milkdown/kit": "7.21.2", "@milkdown/plugin-listener": "7.21.2", "@pierre/diffs": "^1.2.12", "@smthrs/ui-styleguide": "0.33.0", "@xterm/addon-fit": "^0.11.0", "@xterm/xterm": "^6.0.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "d3-force": "3.0.0", "radix-ui": "^1.6.1", "recharts": "^3.2.1" }, "peerDependencies": { "react": "^19.0.0", "react-dom": "^19.0.0" } }, "sha512-20Rp7+12sB+MFr46krN6SnMnS3gQ3qvitISvStnhOQRexcovmu9bZZjSQle73izDDhzt6NSjRP92dyd9Imta1g=="], + + "@smthrs/ui-core": ["@smthrs/ui-core@0.33.0", "", { "dependencies": { "@smthrs/gateway-client": "0.33.0", "@smthrs/gateway-react": "0.33.0", "zustand": "^5.0.13" }, "peerDependencies": { "react": "^19.0.0" } }, "sha512-VdthPjNAJ5joiNa/yimp19T0EW+uU5cFlH/gJJc0Rl7o8e05zHavJG198pq916XMFj01wZ01Ok+JjqFqeqe9RA=="], + + "@smthrs/ui-styleguide": ["@smthrs/ui-styleguide@0.33.0", "", {}, "sha512-Abttww3uxtcjFUeai35j+ytQmXLRvDffyAFO051zKQQuV2NNywsjpmbowEyeINU0+xqKWxx9qkl89Dj5mRKkDw=="], + + "@smthrs/usage": ["@smthrs/usage@workspace:packages/usage"], + + "@smthrs/vcs": ["@smthrs/vcs@0.33.0", "", { "dependencies": { "@smthrs/observability": "0.33.0", "effect": "4.0.0-beta.102" }, "optionalDependencies": { "@smthrs/jj-darwin-arm64": "0.33.0", "@smthrs/jj-darwin-x64": "0.33.0", "@smthrs/jj-linux-arm64": "0.33.0", "@smthrs/jj-linux-x64": "0.33.0", "@smthrs/jj-win32-x64": "0.33.0" } }, "sha512-fh26ZzhIC5TfAn+BEKq9A5A9l9rWrdwfS6bBzB2OKCZ40X11KsH4Nh4DP7z49ChHCVBkrivPo40RV2Yl4XyG7g=="], + + "@smthrs/vercel": ["@smthrs/vercel@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/sandbox": "0.33.0" }, "peerDependencies": { "@vercel/sandbox": "^2.0.0" }, "optionalPeers": ["@vercel/sandbox"] }, "sha512-uvM3Yfr29ThAPIw12N5/adCw16sRStpU2Rh6bOhk7HwsmIZ1yovPcyvuOwavv88knhnsrbo+7j+ZonMLkjfb2A=="], + + "@smthrs/xstate": ["@smthrs/xstate@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/react-reconciler": "0.33.0", "react": "^19.2.7" }, "peerDependencies": { "xstate": "^5.19.0" }, "optionalPeers": ["xstate"] }, "sha512-xd8qeH/E32HFuSQExrqZsyeCslnVeDvD2khcEvOCK0NMuTl9CgVqq7qS6lKhCkPLRyePPUTr+FXZzWtUT4KS1g=="], + "@speed-highlight/core": ["@speed-highlight/core@1.2.15", "", {}, "sha512-BMq1K3DsElxDWawkX6eLg9+CKJrTVGCBAWVuHXVUV2u0s2711qiChLSId6ikYPfxhdYocLNt3wWwSvDiTvFabw=="], "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@standard-schema/utils": ["@standard-schema/utils@0.3.0", "", {}, "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g=="], + "@tanstack/ai": ["@tanstack/ai@0.27.0", "", { "dependencies": { "@ag-ui/core": "^0.0.52", "@standard-schema/spec": "^1.1.0", "@tanstack/ai-event-client": "0.5.3", "partial-json": "^0.1.7" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0" }, "optionalPeers": ["@opentelemetry/api"] }, "sha512-+K8EhqNXmO60CVtXSasWuG5g27yB/p0nG2Gc/jkZNyccklUM0+KYvHiNwDqA5+4ZOQ5W1RbcSiixaFGVwO1jKQ=="], "@tanstack/ai-client": ["@tanstack/ai-client@0.16.3", "", { "dependencies": { "@tanstack/ai": "0.28.0", "@tanstack/ai-event-client": "0.5.4" } }, "sha512-BOKFTPWFVt39zeNrDl8m+/7ADjW5E4k4Hs2/SlfbuwWhDEIJzd4p0wgnWV+6SvRWshDTsmc7x1c6Zk2qsQSCxQ=="], @@ -1447,19 +1345,41 @@ "@tanstack/ai-utils": ["@tanstack/ai-utils@0.2.1", "", {}, "sha512-cFsSeaiAOOEtAOWvFWD0jHiLlFSYi+FYmbEPeD70zHntM8ws2YFb4Dgz94+J8rsoffLXIFTkKswTowx5QlTsWg=="], + "@tanstack/db": ["@tanstack/db@0.6.13", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@tanstack/db-ivm": "0.1.18", "@tanstack/pacer-lite": "^0.2.1" }, "peerDependencies": { "typescript": ">=4.7" } }, "sha512-EWR/eE2TO0CIh/nC5P4Ct6UCzDDyX94fnEXxqMMi0/5pbZDa/MCKB1PYad9jqZRSK4AEu2uoF6Y8aOUaZJd24A=="], + + "@tanstack/db-ivm": ["@tanstack/db-ivm@0.1.18", "", { "dependencies": { "fractional-indexing": "^3.2.0", "sorted-btree": "^1.8.1" }, "peerDependencies": { "typescript": ">=4.7" } }, "sha512-+pZJiRKdoKRM5Epq9T7otD9ZJl82pRFauo7LKuJGrarjVKQ7r+QQlPe3kGdN9LEKSnuNGIWjX9OOY4M8kH4eLw=="], + "@tanstack/devtools-event-client": ["@tanstack/devtools-event-client@0.4.3", "", { "bin": { "intent": "bin/intent.js" } }, "sha512-OZI6QyULw0FI0wjgmeYzCIfbgPsOEzwJtCpa69XrfLMtNXLGnz3d/dIabk7frg0TmHo+Ah49w5I4KC7Tufwsvw=="], + "@tanstack/electric-db-collection": ["@tanstack/electric-db-collection@0.3.11", "", { "dependencies": { "@electric-sql/client": "^1.5.15", "@standard-schema/spec": "^1.1.0", "@tanstack/db": "0.6.13", "@tanstack/store": "^0.9.2", "debug": "^4.4.3" } }, "sha512-tTG7YWqs+FeGh4H/oinZ7zbE9F9w/cF+QLeX3iyNd8A4SDxwmZeTCmy9u9wuAQ4IJM/hu7lMknup+ebryoZrzg=="], + + "@tanstack/history": ["@tanstack/history@1.162.0", "", {}, "sha512-79pf/RkhteYZTRgcR4F9kbk84P2N8rugQJswxfIqovlbRiT3yI7eBE+5QorIrZaOKktsgzRlXh1l/du/xpl4iA=="], + "@tanstack/openai-base": ["@tanstack/openai-base@0.7.0", "", { "dependencies": { "@tanstack/ai-utils": "0.2.1", "openai": "^6.9.1" }, "peerDependencies": { "@tanstack/ai": "^0.27.0" } }, "sha512-x/lr6t0G52NukXC7gjJDFfgCj/086q2sthbLV2G+iIvkSVIOMxBqPm3acp4/ITstbA2u9ynWevVcT7hpRUENEQ=="], + "@tanstack/pacer-lite": ["@tanstack/pacer-lite@0.2.2", "", {}, "sha512-eQ1MyLKCHyXiH7NbdmB80W77OhiMgGBUb+qDx/8WMGbwg5Lf/NlfD0TfNYAqY77i8V3AxoDoYdICrQE5ADw4Yw=="], + "@tanstack/query-core": ["@tanstack/query-core@5.100.6", "", {}, "sha512-Os2CPUr98to98RYm+D4qGqGkiffn7MGSyl2547a4MljVkHE30AMJRqTiyCqBfMwzAx/I91vCkAxp5tHSla6Twg=="], + "@tanstack/query-db-collection": ["@tanstack/query-db-collection@1.0.45", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@tanstack/db": "0.6.13" }, "peerDependencies": { "@tanstack/query-core": "^5.0.0", "typescript": ">=4.7" } }, "sha512-BS5Cp+gwguQoL1CBWycKeOXHXfxw8OF5vuK34n6GT8V3wqSmrz0Nj7EHQEKdK8A+QTZwSSj/SiRBmYLHHkg2Cw=="], + + "@tanstack/react-db": ["@tanstack/react-db@0.1.91", "", { "dependencies": { "@tanstack/db": "0.6.13", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-iiGXa0NUR5ZgWnaIzUw6T+VvkKv2kTo5jYYK57EtajDcrJbBlNw2+pnRp8Ni2QhXWG7GxFbDEuyY8aj4V975NA=="], + "@tanstack/react-query": ["@tanstack/react-query@5.100.6", "", { "dependencies": { "@tanstack/query-core": "5.100.6" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-uVSrps0PV16Cxmcn2rvL+dUhwTpTUtiRW347AEeYxMZXO2pZe9ja7E24PAMGoQ5u2g89DD8u4QhOviBk+RN8RA=="], + "@tanstack/react-router": ["@tanstack/react-router@1.170.18", "", { "dependencies": { "@tanstack/history": "1.162.0", "@tanstack/react-store": "^0.9.3", "@tanstack/router-core": "1.171.15", "isbot": "^5.1.22" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" } }, "sha512-wpbGYZEp/fmz1q4bn7BD8VZ+/VZ7GBqSJv5V969pU+chP8y7dquWDmKTFMohvUegb9lg12m1uPVvD6kB2wORvQ=="], + + "@tanstack/react-store": ["@tanstack/react-store@0.9.3", "", { "dependencies": { "@tanstack/store": "0.9.3", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-y2iHd/N9OkoQbFJLUX1T9vbc2O9tjH0pQRgTcx1/Nz4IlwLvkgpuglXUx+mXt0g5ZDFrEeDnONPqkbfxXJKwRg=="], + + "@tanstack/router-core": ["@tanstack/router-core@1.171.15", "", { "dependencies": { "@tanstack/history": "1.162.0", "cookie-es": "^3.0.0", "seroval": "^1.5.4", "seroval-plugins": "^1.5.4" } }, "sha512-IILCDcLaItMZQ2jEmCABHY1Nhjjn5XUvwpQp3e4Nmu+vfg0BgYFuu/QASz2SwE2ZNbVMrvt8X/wxa+Gg5aErxA=="], + + "@tanstack/store": ["@tanstack/store@0.9.3", "", {}, "sha512-8reSzl/qGWGGVKhBoxXPMWzATSbZLZFWhwBAFO9NAyp0TxzfBP0mIrGb8CP8KrQTmvzXlR/vFPPUrHTLBGyFyw=="], + "@tokenizer/inflate": ["@tokenizer/inflate@0.4.1", "", { "dependencies": { "debug": "^4.4.3", "token-types": "^6.1.1" } }, "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA=="], "@tokenizer/token": ["@tokenizer/token@0.3.0", "", {}, "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="], - "@toon-format/toon": ["@toon-format/toon@2.1.0", "", {}, "sha512-JwWptdF5eOA0HaQxbKAzkpQtR4wSWTEfDlEy/y3/4okmOAX1qwnpLZMmtEWr+ncAhTTY1raCKH0kteHhSXnQqg=="], + "@toon-format/toon": ["@toon-format/toon@2.3.0", "", {}, "sha512-/Ew9etdRQKVMnm9fDaCG0JjyAOK/O7T0M97oum1aW4W+UR8ZhVVPBanIV7oWgHBiGlnVxV9M55PWQCHofDV07w=="], "@tootallnate/quickjs-emscripten": ["@tootallnate/quickjs-emscripten@0.23.0", "", {}, "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA=="], @@ -1469,14 +1389,64 @@ "@types/chai": ["@types/chai@5.2.3", "", { "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA=="], + "@types/d3": ["@types/d3@7.4.3", "", { "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", "@types/d3-brush": "*", "@types/d3-chord": "*", "@types/d3-color": "*", "@types/d3-contour": "*", "@types/d3-delaunay": "*", "@types/d3-dispatch": "*", "@types/d3-drag": "*", "@types/d3-dsv": "*", "@types/d3-ease": "*", "@types/d3-fetch": "*", "@types/d3-force": "*", "@types/d3-format": "*", "@types/d3-geo": "*", "@types/d3-hierarchy": "*", "@types/d3-interpolate": "*", "@types/d3-path": "*", "@types/d3-polygon": "*", "@types/d3-quadtree": "*", "@types/d3-random": "*", "@types/d3-scale": "*", "@types/d3-scale-chromatic": "*", "@types/d3-selection": "*", "@types/d3-shape": "*", "@types/d3-time": "*", "@types/d3-time-format": "*", "@types/d3-timer": "*", "@types/d3-transition": "*", "@types/d3-zoom": "*" } }, "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww=="], + + "@types/d3-array": ["@types/d3-array@3.2.2", "", {}, "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw=="], + + "@types/d3-axis": ["@types/d3-axis@3.0.6", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw=="], + + "@types/d3-brush": ["@types/d3-brush@3.0.6", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A=="], + + "@types/d3-chord": ["@types/d3-chord@3.0.6", "", {}, "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg=="], + "@types/d3-color": ["@types/d3-color@3.1.3", "", {}, "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A=="], + "@types/d3-contour": ["@types/d3-contour@3.0.6", "", { "dependencies": { "@types/d3-array": "*", "@types/geojson": "*" } }, "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg=="], + + "@types/d3-delaunay": ["@types/d3-delaunay@6.0.4", "", {}, "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw=="], + + "@types/d3-dispatch": ["@types/d3-dispatch@3.0.7", "", {}, "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA=="], + "@types/d3-drag": ["@types/d3-drag@3.0.7", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ=="], + "@types/d3-dsv": ["@types/d3-dsv@3.0.7", "", {}, "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g=="], + + "@types/d3-ease": ["@types/d3-ease@3.0.2", "", {}, "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA=="], + + "@types/d3-fetch": ["@types/d3-fetch@3.0.7", "", { "dependencies": { "@types/d3-dsv": "*" } }, "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA=="], + + "@types/d3-force": ["@types/d3-force@3.0.10", "", {}, "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw=="], + + "@types/d3-format": ["@types/d3-format@3.0.4", "", {}, "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g=="], + + "@types/d3-geo": ["@types/d3-geo@3.1.1", "", { "dependencies": { "@types/geojson": "*" } }, "sha512-65Emv9fQiQQqphLlRkuQ5ypPsOmWPhtBGCMv61JDPEPMvsx+gzhGf74yw1a78xFKPj6zw4AgQICJoQv0vK9M2w=="], + + "@types/d3-hierarchy": ["@types/d3-hierarchy@3.1.7", "", {}, "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg=="], + "@types/d3-interpolate": ["@types/d3-interpolate@3.0.4", "", { "dependencies": { "@types/d3-color": "*" } }, "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA=="], + "@types/d3-path": ["@types/d3-path@3.1.1", "", {}, "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg=="], + + "@types/d3-polygon": ["@types/d3-polygon@3.0.2", "", {}, "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA=="], + + "@types/d3-quadtree": ["@types/d3-quadtree@3.0.6", "", {}, "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg=="], + + "@types/d3-random": ["@types/d3-random@3.0.4", "", {}, "sha512-UHYId5WTCx4L4YNel7NU00XUXXgvgpgZOvp10PuvsQENjMDXhh2RyFc0KBjO7B45ne4Ha1yVH7ii0vnzKkuzWA=="], + + "@types/d3-scale": ["@types/d3-scale@4.0.9", "", { "dependencies": { "@types/d3-time": "*" } }, "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw=="], + + "@types/d3-scale-chromatic": ["@types/d3-scale-chromatic@3.1.0", "", {}, "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ=="], + "@types/d3-selection": ["@types/d3-selection@3.0.11", "", {}, "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w=="], + "@types/d3-shape": ["@types/d3-shape@3.1.8", "", { "dependencies": { "@types/d3-path": "*" } }, "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w=="], + + "@types/d3-time": ["@types/d3-time@3.0.4", "", {}, "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g=="], + + "@types/d3-time-format": ["@types/d3-time-format@4.0.3", "", {}, "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg=="], + + "@types/d3-timer": ["@types/d3-timer@3.0.2", "", {}, "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw=="], + "@types/d3-transition": ["@types/d3-transition@3.0.9", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg=="], "@types/d3-zoom": ["@types/d3-zoom@3.0.8", "", { "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" } }, "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw=="], @@ -1491,8 +1461,16 @@ "@types/estree-jsx": ["@types/estree-jsx@1.0.5", "", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="], + "@types/geojson": ["@types/geojson@7946.0.16", "", {}, "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg=="], + "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], + "@types/katex": ["@types/katex@0.16.8", "", {}, "sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg=="], + + "@types/lodash": ["@types/lodash@4.17.25", "", {}, "sha512-+K1NIO8I+F9/wNulfVvu23QYd0Pe9/OCqRrim4NoYIf1VoEDL90Ve4ClzpyqBLc7NpGGWRvYNCKZ1BE/Jpf8dQ=="], + + "@types/lodash-es": ["@types/lodash-es@4.17.12", "", { "dependencies": { "@types/lodash": "*" } }, "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ=="], + "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], "@types/mdx": ["@types/mdx@2.0.13", "", {}, "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw=="], @@ -1513,8 +1491,12 @@ "@types/retry": ["@types/retry@0.12.0", "", {}, "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="], + "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], + "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], + "@types/use-sync-external-store": ["@types/use-sync-external-store@0.0.6", "", {}, "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg=="], + "@types/whatwg-mimetype": ["@types/whatwg-mimetype@3.0.2", "", {}, "sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA=="], "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], @@ -1525,6 +1507,10 @@ "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], + "@upsetjs/venn.js": ["@upsetjs/venn.js@2.0.0", "", { "optionalDependencies": { "d3-selection": "^3.0.0", "d3-transition": "^3.0.1" } }, "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw=="], + + "@vectorize-io/hindsight-client": ["@vectorize-io/hindsight-client@0.8.4", "", {}, "sha512-Tk5wRRhRVSZ0FuGcUKqBZIidw/6eS81oTIKV0H5gmzKSM2r2CdoijmOi+NaP0v51rnoxVi0nFEHQXivt0J2+OA=="], + "@vercel/oidc": ["@vercel/oidc@3.2.0", "", {}, "sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug=="], "@vitejs/plugin-react": ["@vitejs/plugin-react@6.0.2", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.0" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler"] }, "sha512-DlSMqo4WhThw4vB8Mpn0Woe9J+Jfq1geJ61AKW0QEgLzGMNwtIMdxbDUzLxcun8W7NbJO0e2Jg/Nxm3cCSVzzg=="], @@ -1543,6 +1529,26 @@ "@vitest/utils": ["@vitest/utils@4.1.7", "", { "dependencies": { "@vitest/pretty-format": "4.1.7", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-T532WBu791cBxJlCl6SO+J14l81DQx6uQHm1bQbmCDY7nqlEIgkza/UFnSBNaUtSf41unldDFjdOBYEQC4b5Hw=="], + "@vue/compiler-core": ["@vue/compiler-core@3.5.40", "", { "dependencies": { "@babel/parser": "^7.29.7", "@vue/shared": "3.5.40", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-39E8IgOhTbVDnoJFMKc2DvYnypcZwUqgUhQkccva/0m6FUwtIKSGV7n1hpVmYcFaoRAwf9pBcwnKlCEsN63ZEQ=="], + + "@vue/compiler-dom": ["@vue/compiler-dom@3.5.40", "", { "dependencies": { "@vue/compiler-core": "3.5.40", "@vue/shared": "3.5.40" } }, "sha512-pwkx4vqlqOspFstrcmzwkKLePVMD3PT65imRzLhanU2V1Fj4K13g6OXjanOyzw3aTAuRk84BOmY8f3rEHqPaVA=="], + + "@vue/compiler-sfc": ["@vue/compiler-sfc@3.5.40", "", { "dependencies": { "@babel/parser": "^7.29.7", "@vue/compiler-core": "3.5.40", "@vue/compiler-dom": "3.5.40", "@vue/compiler-ssr": "3.5.40", "@vue/shared": "3.5.40", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.19", "source-map-js": "^1.2.1" } }, "sha512-gIf497P4kpuALcvs5n3AEg1Vdn0pSY4XbjASIfHNYF1/MP3T2Mf2STERTubysBxCRxzJGJYtF/O7vwJrxFB3Vw=="], + + "@vue/compiler-ssr": ["@vue/compiler-ssr@3.5.40", "", { "dependencies": { "@vue/compiler-dom": "3.5.40", "@vue/shared": "3.5.40" } }, "sha512-rrE5xiXG663+vHCHa3J9p2z5OcBRjXmoqenprJxAFQxg5pSshzeBiCE6pu46axapRJ2Adk0YDA2BRZVjiHXnhg=="], + + "@vue/reactivity": ["@vue/reactivity@3.5.40", "", { "dependencies": { "@vue/shared": "3.5.40" } }, "sha512-B7ot9UlUZOi1zbq61/LvE88ZLTV8IlajTdiZTAEiDQgrnIMIZoPr9kGw0Zw46ObW62O9+H/Be3kMbfb7kYPQZA=="], + + "@vue/runtime-core": ["@vue/runtime-core@3.5.40", "", { "dependencies": { "@vue/reactivity": "3.5.40", "@vue/shared": "3.5.40" } }, "sha512-KAZLweuZ6uUJPK1PMSQPgBU5gCjgrrfjUhSglmU9NhH+Zjepa8cnwSydPWDWHDwOgY4g3VcZ+PljbiHlURNCbw=="], + + "@vue/runtime-dom": ["@vue/runtime-dom@3.5.40", "", { "dependencies": { "@vue/reactivity": "3.5.40", "@vue/runtime-core": "3.5.40", "@vue/shared": "3.5.40", "csstype": "^3.2.3" } }, "sha512-ZfrX8ssZQds900L9pr8AuK05ddnMsR4MPMZr8cPN9GoqoPWcXLhjvvbIA2SMv+7a97sJ1vv9pj/zxK0Cq/eEFQ=="], + + "@vue/server-renderer": ["@vue/server-renderer@3.5.40", "", { "dependencies": { "@vue/compiler-ssr": "3.5.40", "@vue/runtime-dom": "3.5.40", "@vue/shared": "3.5.40" } }, "sha512-XNJym9WpevhTVt1HuwOrCRJ5Q+9z4BjTMrDtjTrvx74SmUll8spNTw6whWJa9mEkO4PKn5TihI/bm/8ds2QVJw=="], + + "@vue/shared": ["@vue/shared@3.5.40", "", {}, "sha512-WxnBtruIqOoV3rA4jeKDWzrYI5h7Cp4+pjwDi8kWGHz+IslhiN+wguLVVhtv2l8VoU02rzDCVfDjgCl1lNpZVg=="], + + "@workflow/serde": ["@workflow/serde@4.1.0", "", {}, "sha512-pav4F2BoirECWR7Nf1TKt+2eETcBj7jj4cBefQ8VXQCA6NPkaKeLfj/zMgi+3zYV5ZIBT4GuUiphsj0/b9hPQQ=="], + "@wterm/core": ["@wterm/core@0.3.0", "", {}, "sha512-aQ73QBP+eyA3kcn31mA7DmAi7qmEsQijZdmvgwxtSjCi2248EAOZgtkGDpjlspfrxyVxQbUl/IF+gCVcXt4nZQ=="], "@wterm/dom": ["@wterm/dom@0.3.0", "", { "dependencies": { "@wterm/core": "0.3.0" } }, "sha512-OiUl7reGSlW02yb5wGXMplMZhW2HBkBSFxvbFj15I832UK0QFIHRvhE2l6Xgae8ROn9bNLaALoKDFvcUuz80iQ=="], @@ -1551,6 +1557,10 @@ "@wterm/react": ["@wterm/react@0.3.0", "", { "peerDependencies": { "@wterm/dom": "0.3.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-1rua/roQGCIGkNxjs9TVq+EkXJ0n2IK6aCoaGIQJpvzuHv7iU9/lngG3i1SCpX6deOOO/wpfhtjDTI+z9XF0aA=="], + "@xterm/addon-fit": ["@xterm/addon-fit@0.11.0", "", {}, "sha512-jYcgT6xtVYhnhgxh3QgYDnnNMYTcf8ElbxxFzX0IZo+vabQqSPAjC3c1wJrKB5E19VwQei89QCiZZP86DCPF7g=="], + + "@xterm/xterm": ["@xterm/xterm@6.0.0", "", {}, "sha512-TQwDdQGtwwDt+2cgKDLn0IRaSxYu1tSUjgKarSDkUM0ZNiSRXFpjxEsvc/Zgc5kq5omJ+V0a8/kIM2WD3sMOYg=="], + "@xyflow/react": ["@xyflow/react@12.10.2", "", { "dependencies": { "@xyflow/system": "0.0.76", "classcat": "^5.0.3", "zustand": "^4.4.0" }, "peerDependencies": { "react": ">=17", "react-dom": ">=17" } }, "sha512-CgIi6HwlcHXwlkTpr0fxLv/0sRVNZ8IdwKLzzeCscaYBwpvfcH1QFOCeaTCuEn1FQEs/B8CjnTSjhs8udgmBgQ=="], "@xyflow/system": ["@xyflow/system@0.0.76", "", { "dependencies": { "@types/d3-drag": "^3.0.7", "@types/d3-interpolate": "^3.0.4", "@types/d3-selection": "^3.0.10", "@types/d3-transition": "^3.0.8", "@types/d3-zoom": "^3.0.8", "d3-drag": "^3.0.0", "d3-interpolate": "^3.0.1", "d3-selection": "^3.0.0", "d3-zoom": "^3.0.0" } }, "sha512-hvwvnRS1B3REwVDlWexsq7YQaPZeG3/mKo1jv38UmnpWmxihp14bW6VtEOuHEwJX2FvzFw8k77LyKSk/wiZVNA=="], @@ -1569,7 +1579,7 @@ "agentkeepalive": ["agentkeepalive@4.6.0", "", { "dependencies": { "humanize-ms": "^1.2.1" } }, "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ=="], - "ai": ["ai@6.0.172", "", { "dependencies": { "@ai-sdk/gateway": "3.0.107", "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.25", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-o12q2SDlrN4btPU2FkFSVEeZiKfQuSbDFixXH8I7AE/zuCXMbN9ilaPThdoAc8mS9+QnhUGy8cSP0IgT3Q+p0A=="], + "ai": ["ai@7.0.48", "", { "dependencies": { "@ai-sdk/gateway": "4.0.37", "@ai-sdk/provider": "4.0.4", "@ai-sdk/provider-utils": "5.0.18" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-QmqshWFEDdkFFqSgdJ4cogaoDIYaedqbv73q/NXEYNkSIocJCzXnGFVyM9lrtAGTSBfm+5hq3/292ooXJ1jDSw=="], "ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], @@ -1583,6 +1593,8 @@ "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="], + "aria-hidden": ["aria-hidden@1.2.6", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="], + "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="], "ast-types": ["ast-types@0.13.4", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w=="], @@ -1607,7 +1619,7 @@ "bignumber.js": ["bignumber.js@9.3.1", "", {}, "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ=="], - "bippy": ["bippy@0.5.39", "", { "peerDependencies": { "react": ">=17.0.1" } }, "sha512-8hE8rKSl8JWyeaY+JjpnmceWAZPpLEyzOZQpWXM5Rc7861c5WotMJHy2aRZKZrGA8nMpvLNF01t4yQQ+HcZG3w=="], + "bippy": ["bippy@0.5.43", "", { "peerDependencies": { "react": ">=17.0.1" } }, "sha512-Tvu7b1M7+d8b9/YHaCeODEsi2CgbuoBql+dWSBrNnCuqJ1gMUeY3i0r+319hvjjl5GVBP6FFWxrKnq3fhZER0w=="], "blake3-wasm": ["blake3-wasm@2.1.5", "", {}, "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g=="], @@ -1623,6 +1635,8 @@ "buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="], + "bun-ffi-structs": ["bun-ffi-structs@0.2.4", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-AJzsqoVFs1KBbJbWHIYrVZLDC3NhTqqh25awRXqzoLzmBAKr5oqk6+CwuYHAekKx+VBCYVohBoKuRq40dV+TYg=="], + "bun-types": ["bun-types@1.3.13", "", { "dependencies": { "@types/node": "*" } }, "sha512-QXKeHLlOLqQX9LgYaHJfzdBaV21T63HhFJnvuRCcjZiaUDpbs5ED1MgxbMra71CsryN/1dAoXuJJJwIv/2drVA=="], "bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="], @@ -1655,6 +1669,8 @@ "ci-info": ["ci-info@2.0.0", "", {}, "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="], + "class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], + "classcat": ["classcat@5.0.5", "", {}, "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w=="], "cli-highlight": ["cli-highlight@2.1.11", "", { "dependencies": { "chalk": "^4.0.0", "highlight.js": "^10.7.1", "mz": "^2.4.0", "parse5": "^5.1.1", "parse5-htmlparser2-tree-adapter": "^6.0.0", "yargs": "^16.0.0" }, "bin": { "highlight": "bin/highlight" } }, "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg=="], @@ -1663,6 +1679,10 @@ "cloudflare": ["cloudflare@6.3.0", "", { "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", "abort-controller": "^3.0.0", "agentkeepalive": "^4.2.1", "form-data-encoder": "1.7.2", "formdata-node": "^4.3.2", "node-fetch": "^2.6.7" } }, "sha512-in5RDFuRJiX4iY6TPjCLN7E3D75mFqb73uIL3kvBiCgQ3i2Bec0peT2qFtBUffr/Ca2/lx67T+NtJKAFBiu2+A=="], + "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], + + "codemirror": ["codemirror@6.0.2", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/commands": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/lint": "^6.0.0", "@codemirror/search": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0" } }, "sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw=="], + "collapse-white-space": ["collapse-white-space@2.1.0", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="], "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], @@ -1675,45 +1695,103 @@ "commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="], - "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], + "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], + + "confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], + + "consola": ["consola@3.4.2", "", {}, "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="], + + "content-disposition": ["content-disposition@1.1.0", "", {}, "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g=="], + + "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="], + + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + + "cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], + + "cookie-es": ["cookie-es@3.1.1", "", {}, "sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg=="], + + "cookie-signature": ["cookie-signature@1.2.2", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="], + + "core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], + + "cors": ["cors@2.8.6", "", { "dependencies": { "object-assign": "^4", "vary": "^1" } }, "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw=="], + + "cose-base": ["cose-base@1.0.3", "", { "dependencies": { "layout-base": "^1.0.0" } }, "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg=="], + + "crelt": ["crelt@1.0.7", "", {}, "sha512-aK6BbWfhf4U/wCcLHKPJl/xa6VkVstRaPywWtMKGwuOLc/wZTyQYuoxgvZnNsBvv7Kg3YTBQYYBCggcviQczuA=="], + + "cron-parser": ["cron-parser@5.7.0", "", { "dependencies": { "luxon": "^3.7.2" } }, "sha512-iSpDHpwwW/GhIg4JVODYlWUEpMNSimaHvqOhHpOz1W+Y97z1lL1nf+dpcF17cNwFRpTtKN9devgi1fxflp3Phw=="], + + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + + "cross-spawn-windows-exe": ["cross-spawn-windows-exe@1.2.0", "", { "dependencies": { "@malept/cross-spawn-promise": "^1.1.0", "is-wsl": "^2.2.0", "which": "^2.0.2" } }, "sha512-mkLtJJcYbDCxEG7Js6eUnUNndWjyUZwJ3H7bErmmtOYU/Zb99DyUkpamuIZE0b3bhmJyZ7D90uS6f+CGxRRjOw=="], + + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + + "cytoscape": ["cytoscape@3.34.0", "", {}, "sha512-62rNSrioXw93uliKFBwjukeQyeWwH2PqDrTac31r2P6464u3AUvTk0xS4LVvT251g7IgkFunrI48ZEZGjywSOg=="], + + "cytoscape-cose-bilkent": ["cytoscape-cose-bilkent@4.1.0", "", { "dependencies": { "cose-base": "^1.0.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ=="], + + "cytoscape-fcose": ["cytoscape-fcose@2.2.0", "", { "dependencies": { "cose-base": "^2.2.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ=="], + + "d3": ["d3@7.9.0", "", { "dependencies": { "d3-array": "3", "d3-axis": "3", "d3-brush": "3", "d3-chord": "3", "d3-color": "3", "d3-contour": "4", "d3-delaunay": "6", "d3-dispatch": "3", "d3-drag": "3", "d3-dsv": "3", "d3-ease": "3", "d3-fetch": "3", "d3-force": "3", "d3-format": "3", "d3-geo": "3", "d3-hierarchy": "3", "d3-interpolate": "3", "d3-path": "3", "d3-polygon": "3", "d3-quadtree": "3", "d3-random": "3", "d3-scale": "4", "d3-scale-chromatic": "3", "d3-selection": "3", "d3-shape": "3", "d3-time": "3", "d3-time-format": "4", "d3-timer": "3", "d3-transition": "3", "d3-zoom": "3" } }, "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA=="], + + "d3-array": ["d3-array@3.2.4", "", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="], + + "d3-axis": ["d3-axis@3.0.0", "", {}, "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw=="], + + "d3-brush": ["d3-brush@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "3", "d3-transition": "3" } }, "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ=="], + + "d3-chord": ["d3-chord@3.0.1", "", { "dependencies": { "d3-path": "1 - 3" } }, "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g=="], + + "d3-color": ["d3-color@3.1.0", "", {}, "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="], + + "d3-contour": ["d3-contour@4.0.2", "", { "dependencies": { "d3-array": "^3.2.0" } }, "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA=="], + + "d3-delaunay": ["d3-delaunay@6.0.4", "", { "dependencies": { "delaunator": "5" } }, "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A=="], + + "d3-dispatch": ["d3-dispatch@3.0.1", "", {}, "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg=="], + + "d3-drag": ["d3-drag@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" } }, "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg=="], - "confbox": ["confbox@0.1.8", "", {}, "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w=="], + "d3-dsv": ["d3-dsv@3.0.1", "", { "dependencies": { "commander": "7", "iconv-lite": "0.6", "rw": "1" }, "bin": { "csv2json": "bin/dsv2json.js", "csv2tsv": "bin/dsv2dsv.js", "dsv2dsv": "bin/dsv2dsv.js", "dsv2json": "bin/dsv2json.js", "json2csv": "bin/json2dsv.js", "json2dsv": "bin/json2dsv.js", "json2tsv": "bin/json2dsv.js", "tsv2csv": "bin/dsv2dsv.js", "tsv2json": "bin/dsv2json.js" } }, "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q=="], - "consola": ["consola@3.4.2", "", {}, "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="], + "d3-ease": ["d3-ease@3.0.1", "", {}, "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="], - "content-disposition": ["content-disposition@1.1.0", "", {}, "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g=="], + "d3-fetch": ["d3-fetch@3.0.1", "", { "dependencies": { "d3-dsv": "1 - 3" } }, "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw=="], - "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="], + "d3-force": ["d3-force@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", "d3-timer": "1 - 3" } }, "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg=="], - "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + "d3-format": ["d3-format@3.1.2", "", {}, "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg=="], - "cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], + "d3-geo": ["d3-geo@3.1.1", "", { "dependencies": { "d3-array": "2.5.0 - 3" } }, "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q=="], - "cookie-signature": ["cookie-signature@1.2.2", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="], + "d3-hierarchy": ["d3-hierarchy@3.1.2", "", {}, "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA=="], - "core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], + "d3-interpolate": ["d3-interpolate@3.0.1", "", { "dependencies": { "d3-color": "1 - 3" } }, "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="], - "cors": ["cors@2.8.6", "", { "dependencies": { "object-assign": "^4", "vary": "^1" } }, "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw=="], + "d3-path": ["d3-path@3.1.0", "", {}, "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="], - "cron-parser": ["cron-parser@5.5.0", "", { "dependencies": { "luxon": "^3.7.1" } }, "sha512-oML4lKUXxizYswqmxuOCpgFS8BNUJpIu6k/2HVHyaL8Ynnf3wdf9tkns0yRdJLSIjkJ+b0DXHMZEHGpMwjnPww=="], + "d3-polygon": ["d3-polygon@3.0.1", "", {}, "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg=="], - "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + "d3-quadtree": ["d3-quadtree@3.0.1", "", {}, "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw=="], - "cross-spawn-windows-exe": ["cross-spawn-windows-exe@1.2.0", "", { "dependencies": { "@malept/cross-spawn-promise": "^1.1.0", "is-wsl": "^2.2.0", "which": "^2.0.2" } }, "sha512-mkLtJJcYbDCxEG7Js6eUnUNndWjyUZwJ3H7bErmmtOYU/Zb99DyUkpamuIZE0b3bhmJyZ7D90uS6f+CGxRRjOw=="], + "d3-random": ["d3-random@3.0.1", "", {}, "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ=="], - "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + "d3-sankey": ["d3-sankey@0.12.3", "", { "dependencies": { "d3-array": "1 - 2", "d3-shape": "^1.2.0" } }, "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ=="], - "d3-color": ["d3-color@3.1.0", "", {}, "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="], + "d3-scale": ["d3-scale@4.0.2", "", { "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", "d3-interpolate": "1.2.0 - 3", "d3-time": "2.1.1 - 3", "d3-time-format": "2 - 4" } }, "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ=="], - "d3-dispatch": ["d3-dispatch@3.0.1", "", {}, "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg=="], + "d3-scale-chromatic": ["d3-scale-chromatic@3.1.0", "", { "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" } }, "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ=="], - "d3-drag": ["d3-drag@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" } }, "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg=="], + "d3-selection": ["d3-selection@3.0.0", "", {}, "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ=="], - "d3-ease": ["d3-ease@3.0.1", "", {}, "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="], + "d3-shape": ["d3-shape@3.2.0", "", { "dependencies": { "d3-path": "^3.1.0" } }, "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA=="], - "d3-interpolate": ["d3-interpolate@3.0.1", "", { "dependencies": { "d3-color": "1 - 3" } }, "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="], + "d3-time": ["d3-time@3.1.0", "", { "dependencies": { "d3-array": "2 - 3" } }, "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q=="], - "d3-selection": ["d3-selection@3.0.0", "", {}, "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ=="], + "d3-time-format": ["d3-time-format@4.1.0", "", { "dependencies": { "d3-time": "1 - 3" } }, "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg=="], "d3-timer": ["d3-timer@3.0.1", "", {}, "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="], @@ -1723,10 +1801,16 @@ "dagre": ["dagre@0.8.5", "", { "dependencies": { "graphlib": "^2.1.8", "lodash": "^4.17.15" } }, "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw=="], + "dagre-d3-es": ["dagre-d3-es@7.0.14", "", { "dependencies": { "d3": "^7.9.0", "lodash-es": "^4.17.21" } }, "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg=="], + "data-uri-to-buffer": ["data-uri-to-buffer@6.0.2", "", {}, "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw=="], + "dayjs": ["dayjs@1.11.21", "", {}, "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA=="], + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + "decimal.js-light": ["decimal.js-light@2.5.1", "", {}, "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg=="], + "decode-named-character-reference": ["decode-named-character-reference@1.3.0", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q=="], "default-browser": ["default-browser@5.5.0", "", { "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" } }, "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw=="], @@ -1739,6 +1823,8 @@ "degenerator": ["degenerator@5.0.1", "", { "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", "esprima": "^4.0.1" } }, "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ=="], + "delaunator": ["delaunator@5.1.0", "", { "dependencies": { "robust-predicates": "^3.0.2" } }, "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ=="], + "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="], "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], @@ -1747,10 +1833,14 @@ "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], + "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], "diff": ["diff@9.0.0", "", {}, "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw=="], + "dompurify": ["dompurify@3.4.12", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-zQvGet8Z2sWbQhCmfFz/T5QWH2oBmjnqK3qvOjaqaNLrLEF912WamU+ohnTp0TCep/MFVHpdJuCZEdFOdTnEFg=="], + "drizzle-orm": ["drizzle-orm@0.45.2", "", { "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=4", "@electric-sql/pglite": ">=0.2.0", "@libsql/client": ">=0.10.0", "@libsql/client-wasm": ">=0.10.0", "@neondatabase/serverless": ">=0.10.0", "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1.13", "@prisma/client": "*", "@tidbcloud/serverless": "*", "@types/better-sqlite3": "*", "@types/pg": "*", "@types/sql.js": "*", "@upstash/redis": ">=1.34.7", "@vercel/postgres": ">=0.8.0", "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", "expo-sqlite": ">=14.0.0", "gel": ">=2", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", "sql.js": ">=1", "sqlite3": ">=5" }, "optionalPeers": ["@aws-sdk/client-rds-data", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@libsql/client-wasm", "@neondatabase/serverless", "@op-engineering/op-sqlite", "@opentelemetry/api", "@planetscale/database", "@prisma/client", "@tidbcloud/serverless", "@types/better-sqlite3", "@types/pg", "@types/sql.js", "@upstash/redis", "@vercel/postgres", "@xata.io/client", "better-sqlite3", "bun-types", "expo-sqlite", "gel", "knex", "kysely", "mysql2", "pg", "postgres", "sql.js", "sqlite3"] }, "sha512-kY0BSaTNYWnoDMVoyY8uxmyHjpJW1geOmBMdSSicKo9CIIWkSxMIj2rkeSR51b8KAPB7m+qysjuHme5nKP+E5Q=="], "drizzle-zod": ["drizzle-zod@0.8.3", "", { "peerDependencies": { "drizzle-orm": ">=0.36.0", "zod": "^3.25.0 || ^4.0.0" } }, "sha512-66yVOuvGhKJnTdiqj1/Xaaz9/qzOdRJADpDa68enqS6g3t0kpNkwNYjUuaeXgZfO/UWuIM9HIhSlJ6C5ZraMww=="], @@ -1767,7 +1857,7 @@ "electrobun": ["electrobun@1.18.1", "", { "dependencies": { "@babylonjs/core": "^7.45.0", "@types/bun": "^1.3.8", "png-to-ico": "^2.1.8", "proxy-agent": "^6.5.0", "rcedit": "^4.0.1", "three": "^0.165.0" }, "bin": { "electrobun": "bin/electrobun.cjs" } }, "sha512-tgZ+WKGskn/1/Y5i1mpVCCkgRa1O31Tz7MIArBTK44GfPzT43uOq9c/HvxdQGrLeZV8ZvjK1lQrwqSXCgh6tvA=="], - "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], @@ -1789,16 +1879,20 @@ "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], + "es-toolkit": ["es-toolkit@1.50.0", "", {}, "sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w=="], + "esast-util-from-estree": ["esast-util-from-estree@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "unist-util-position-from-estree": "^2.0.0" } }, "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ=="], "esast-util-from-js": ["esast-util-from-js@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="], - "esbuild": ["esbuild@0.27.7", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.7", "@esbuild/android-arm": "0.27.7", "@esbuild/android-arm64": "0.27.7", "@esbuild/android-x64": "0.27.7", "@esbuild/darwin-arm64": "0.27.7", "@esbuild/darwin-x64": "0.27.7", "@esbuild/freebsd-arm64": "0.27.7", "@esbuild/freebsd-x64": "0.27.7", "@esbuild/linux-arm": "0.27.7", "@esbuild/linux-arm64": "0.27.7", "@esbuild/linux-ia32": "0.27.7", "@esbuild/linux-loong64": "0.27.7", "@esbuild/linux-mips64el": "0.27.7", "@esbuild/linux-ppc64": "0.27.7", "@esbuild/linux-riscv64": "0.27.7", "@esbuild/linux-s390x": "0.27.7", "@esbuild/linux-x64": "0.27.7", "@esbuild/netbsd-arm64": "0.27.7", "@esbuild/netbsd-x64": "0.27.7", "@esbuild/openbsd-arm64": "0.27.7", "@esbuild/openbsd-x64": "0.27.7", "@esbuild/openharmony-arm64": "0.27.7", "@esbuild/sunos-x64": "0.27.7", "@esbuild/win32-arm64": "0.27.7", "@esbuild/win32-ia32": "0.27.7", "@esbuild/win32-x64": "0.27.7" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w=="], + "esbuild": ["esbuild@0.28.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.0", "@esbuild/android-arm": "0.28.0", "@esbuild/android-arm64": "0.28.0", "@esbuild/android-x64": "0.28.0", "@esbuild/darwin-arm64": "0.28.0", "@esbuild/darwin-x64": "0.28.0", "@esbuild/freebsd-arm64": "0.28.0", "@esbuild/freebsd-x64": "0.28.0", "@esbuild/linux-arm": "0.28.0", "@esbuild/linux-arm64": "0.28.0", "@esbuild/linux-ia32": "0.28.0", "@esbuild/linux-loong64": "0.28.0", "@esbuild/linux-mips64el": "0.28.0", "@esbuild/linux-ppc64": "0.28.0", "@esbuild/linux-riscv64": "0.28.0", "@esbuild/linux-s390x": "0.28.0", "@esbuild/linux-x64": "0.28.0", "@esbuild/netbsd-arm64": "0.28.0", "@esbuild/netbsd-x64": "0.28.0", "@esbuild/openbsd-arm64": "0.28.0", "@esbuild/openbsd-x64": "0.28.0", "@esbuild/openharmony-arm64": "0.28.0", "@esbuild/sunos-x64": "0.28.0", "@esbuild/win32-arm64": "0.28.0", "@esbuild/win32-ia32": "0.28.0", "@esbuild/win32-x64": "0.28.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw=="], "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], + "escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + "escodegen": ["escodegen@2.1.0", "", { "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", "esutils": "^2.0.2" }, "optionalDependencies": { "source-map": "~0.6.1" }, "bin": { "esgenerate": "bin/esgenerate.js", "escodegen": "bin/escodegen.js" } }, "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w=="], "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], @@ -1825,6 +1919,8 @@ "event-target-shim": ["event-target-shim@5.0.1", "", {}, "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="], + "eventemitter3": ["eventemitter3@5.0.4", "", {}, "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw=="], + "eventsource": ["eventsource@3.0.7", "", { "dependencies": { "eventsource-parser": "^3.0.1" } }, "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA=="], "eventsource-parser": ["eventsource-parser@3.0.8", "", {}, "sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ=="], @@ -1851,8 +1947,14 @@ "fast-json-patch": ["fast-json-patch@3.1.1", "", {}, "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ=="], + "fast-string-truncated-width": ["fast-string-truncated-width@3.0.3", "", {}, "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g=="], + + "fast-string-width": ["fast-string-width@3.0.2", "", { "dependencies": { "fast-string-truncated-width": "^3.0.2" } }, "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg=="], + "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], + "fast-wrap-ansi": ["fast-wrap-ansi@0.2.2", "", { "dependencies": { "fast-string-width": "^3.0.2" } }, "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q=="], + "fast-xml-builder": ["fast-xml-builder@1.1.5", "", { "dependencies": { "path-expression-matcher": "^1.1.3" } }, "sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA=="], "fast-xml-parser": ["fast-xml-parser@5.7.2", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.5", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w=="], @@ -1891,13 +1993,15 @@ "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="], + "fractional-indexing": ["fractional-indexing@3.4.0", "", {}, "sha512-8J3glhz2rrpKG6KmI7wmJo3zH1VjeOpN+vTJSw1fOyO+Viqq3zX6/5NGh6oaZB2qIAYdOYuu5Dz9xp4faOO0Pg=="], + "fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="], "fs-extra": ["fs-extra@9.1.0", "", { "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ=="], "fs.realpath": ["fs.realpath@1.0.0", "", {}, "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="], - "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + "fsevents": ["fsevents@2.3.2", "", { "os": "darwin" }, "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="], "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], @@ -1911,6 +2015,8 @@ "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], + "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], + "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], "get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], @@ -1929,6 +2035,8 @@ "graphlib": ["graphlib@2.1.8", "", { "dependencies": { "lodash": "^4.17.15" } }, "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A=="], + "hachure-fill": ["hachure-fill@0.5.2", "", {}, "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg=="], + "happy-dom": ["happy-dom@20.9.0", "", { "dependencies": { "@types/node": ">=20.0.0", "@types/whatwg-mimetype": "^3.0.2", "@types/ws": "^8.18.1", "entities": "^7.0.1", "whatwg-mimetype": "^3.0.0", "ws": "^8.18.3" } }, "sha512-GZZ9mKe8r646NUAf/zemnGbjYh4Bt8/MqASJY+pSm5ZDtc3YQox+4gsLI7yi1hba6o+eCsGxpHn5+iEVn31/FQ=="], "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], @@ -1941,16 +2049,20 @@ "hast-util-to-estree": ["hast-util-to-estree@3.1.3", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-attach-comments": "^3.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w=="], + "hast-util-to-html": ["hast-util-to-html@9.0.5", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" } }, "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw=="], + "hast-util-to-jsx-runtime": ["hast-util-to-jsx-runtime@2.3.6", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" } }, "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg=="], "hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], "highlight.js": ["highlight.js@10.7.3", "", {}, "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A=="], - "hono": ["hono@4.12.16", "", {}, "sha512-jN0ZewiNAWSe5khM3EyCmBb250+b40wWbwNILNfEvq84VREWwOIkuUsFONk/3i3nqkz7Oe1PcpM2mwQEK2L9Kg=="], + "hono": ["hono@4.12.33", "", {}, "sha512-+SwvkaiJtxsiPjhy9LivY/1m7UsNqCJetM1BrZl9A5DkQhlbHQDU730mMiDPWjnoCYOM8Chf3WrCJw27kNTPFQ=="], "hosted-git-info": ["hosted-git-info@9.0.2", "", { "dependencies": { "lru-cache": "^11.1.0" } }, "sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg=="], + "html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="], + "http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="], "http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="], @@ -1969,7 +2081,11 @@ "immediate": ["immediate@3.0.6", "", {}, "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="], - "incur": ["incur@0.4.5", "", { "dependencies": { "@cfworker/json-schema": "^4.1.1", "@modelcontextprotocol/server": "^2.0.0-alpha.2", "@toon-format/toon": "^2.1.0", "tokenx": "^1.3.0", "yaml": "^2.8.2", "zod": "^4.3.6" }, "bin": { "incur": "dist/bin.js", "incur.src": "src/bin.ts" } }, "sha512-4WFlqm5e+IKNoX+lDIjjpebO8ResPx3vPUBChxNfnNo3oGp0ooo6piiiTspOMub2dq2mcG/AmlUq0ejuGfKobg=="], + "immer": ["immer@11.1.15", "", {}, "sha512-VrNANlmnWQnh5COXIIOQXM9oOJw7naGKlBT74ZOOR6lpVXc3gFEu9FJLDFcpCJ2j+NWr8TIwtWD//T6ZX6TKiQ=="], + + "import-meta-resolve": ["import-meta-resolve@4.2.0", "", {}, "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg=="], + + "incur": ["incur@0.4.26", "", { "dependencies": { "@cfworker/json-schema": "^4.1.1", "@modelcontextprotocol/server": "2.0.0-alpha.4", "@scalar/openapi-types": "^0.8.0", "@toon-format/toon": "^2.1.0", "tokenx": "^1.3.0", "yaml": "^2.8.2", "zod": "^4.3.6" }, "bin": { "incur": "dist/bin.js", "incur.src": "src/bin.ts" } }, "sha512-63lwOc8+o1VeFkIW3sWWMrDSP5Dd1NsvucUWyxLUk+DoNRiNl7cj481nlLdlboXkq+tqYPBSlV/7XbylS2S4BA=="], "inflight": ["inflight@1.0.6", "", { "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="], @@ -1977,6 +2093,8 @@ "inline-style-parser": ["inline-style-parser@0.2.7", "", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="], + "internmap": ["internmap@2.0.3", "", {}, "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="], + "ip-address": ["ip-address@10.1.0", "", {}, "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q=="], "ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="], @@ -1991,12 +2109,8 @@ "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], - "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], - "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], - "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], - "is-hexadecimal": ["is-hexadecimal@2.0.1", "", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="], "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], @@ -2015,6 +2129,8 @@ "isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], + "isbot": ["isbot@5.2.1", "", {}, "sha512-dJ+LpKyClQZ7NG+j3OensC/mAZkGpukE9YUrgPYvAZj2doVL0edfDgywTUh5CXa0o+nW9a1V9e5+CJTX8+SxRw=="], + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], "jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], @@ -2043,6 +2159,10 @@ "jws": ["jws@4.0.1", "", { "dependencies": { "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA=="], + "katex": ["katex@0.16.47", "", { "dependencies": { "commander": "^8.3.0" }, "bin": { "katex": "cli.js" } }, "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg=="], + + "khroma": ["khroma@2.1.0", "", {}, "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="], + "klaw-sync": ["klaw-sync@6.0.0", "", { "dependencies": { "graceful-fs": "^4.1.11" } }, "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ=="], "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="], @@ -2051,6 +2171,8 @@ "kubernetes-types": ["kubernetes-types@1.30.0", "", {}, "sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q=="], + "layout-base": ["layout-base@1.0.2", "", {}, "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="], + "libsodium": ["libsodium@0.8.4", "", {}, "sha512-lMcYaRi0zcs7tarATsQUYC7rstliIXZuoq0c6zXSgNtSNtdvBgkSegjWhpMJAXzKX3SUSwIp7+zEsob+j3LuRw=="], "libsodium-wrappers": ["libsodium-wrappers@0.8.4", "", { "dependencies": { "libsodium": "^0.8.0" } }, "sha512-mu8aAWucZjTB5O/BtGXtW4e1agy7uHxNYG7zPthmmD1jU43LCDmSWZLN4JhflbdPXj3yDO4lxM1O9hLDgIOXDw=="], @@ -2089,6 +2211,8 @@ "lodash": ["lodash@4.18.1", "", {}, "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="], + "lodash-es": ["lodash-es@4.18.1", "", {}, "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A=="], + "loglevel": ["loglevel@1.9.2", "", {}, "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg=="], "long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="], @@ -2099,18 +2223,40 @@ "lru-cache": ["lru-cache@11.3.5", "", {}, "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw=="], + "lru_map": ["lru_map@0.4.1", "", {}, "sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg=="], + "luxon": ["luxon@3.7.2", "", {}, "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew=="], "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], "markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], + "markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="], + "marked": ["marked@15.0.12", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA=="], "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], + "mdast-util-definitions": ["mdast-util-definitions@6.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ=="], + + "mdast-util-find-and-replace": ["mdast-util-find-and-replace@3.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg=="], + "mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.3", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "mdast-util-to-string": "^4.0.0", "micromark": "^4.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q=="], + "mdast-util-gfm": ["mdast-util-gfm@3.1.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ=="], + + "mdast-util-gfm-autolink-literal": ["mdast-util-gfm-autolink-literal@2.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-find-and-replace": "^3.0.0", "micromark-util-character": "^2.0.0" } }, "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ=="], + + "mdast-util-gfm-footnote": ["mdast-util-gfm-footnote@2.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0" } }, "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ=="], + + "mdast-util-gfm-strikethrough": ["mdast-util-gfm-strikethrough@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg=="], + + "mdast-util-gfm-table": ["mdast-util-gfm-table@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "markdown-table": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg=="], + + "mdast-util-gfm-task-list-item": ["mdast-util-gfm-task-list-item@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ=="], + + "mdast-util-math": ["mdast-util-math@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "longest-streak": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.1.0", "unist-util-remove-position": "^5.0.0" } }, "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w=="], + "mdast-util-mdx": ["mdast-util-mdx@3.0.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w=="], "mdast-util-mdx-expression": ["mdast-util-mdx-expression@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ=="], @@ -2131,10 +2277,28 @@ "merge-descriptors": ["merge-descriptors@2.0.0", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="], + "mermaid": ["mermaid@11.16.0", "", { "dependencies": { "@braintree/sanitize-url": "^7.1.2", "@iconify/utils": "^3.0.2", "@mermaid-js/parser": "^1.2.0", "@types/d3": "^7.4.3", "@upsetjs/venn.js": "^2.0.0", "cytoscape": "^3.33.3", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", "d3": "^7.9.0", "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.14", "dayjs": "^1.11.20", "dompurify": "^3.3.3", "es-toolkit": "^1.45.1", "katex": "^0.16.45", "khroma": "^2.1.0", "marked": "^16.3.0", "roughjs": "^4.6.6", "stylis": "^4.3.6", "ts-dedent": "^2.2.0", "uuid": "^11.1.0 || ^12 || ^13 || ^14.0.0" } }, "sha512-Zvm3kbstgdpvIJPPItlL7fppIZ3kibvc1oZIGxdvk9t6UFz6flv+Jw7FtRGKwfcI8OckmH04LqG6LlS6X4B1pA=="], + "micromark": ["micromark@4.0.2", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="], "micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="], + "micromark-extension-gfm": ["micromark-extension-gfm@3.0.0", "", { "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", "micromark-extension-gfm-strikethrough": "^2.0.0", "micromark-extension-gfm-table": "^2.0.0", "micromark-extension-gfm-tagfilter": "^2.0.0", "micromark-extension-gfm-task-list-item": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w=="], + + "micromark-extension-gfm-autolink-literal": ["micromark-extension-gfm-autolink-literal@2.1.0", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw=="], + + "micromark-extension-gfm-footnote": ["micromark-extension-gfm-footnote@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw=="], + + "micromark-extension-gfm-strikethrough": ["micromark-extension-gfm-strikethrough@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw=="], + + "micromark-extension-gfm-table": ["micromark-extension-gfm-table@2.1.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg=="], + + "micromark-extension-gfm-tagfilter": ["micromark-extension-gfm-tagfilter@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg=="], + + "micromark-extension-gfm-task-list-item": ["micromark-extension-gfm-task-list-item@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw=="], + + "micromark-extension-math": ["micromark-extension-math@3.1.0", "", { "dependencies": { "@types/katex": "^0.16.0", "devlop": "^1.0.0", "katex": "^0.16.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg=="], + "micromark-extension-mdx-expression": ["micromark-extension-mdx-expression@3.0.1", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q=="], "micromark-extension-mdx-jsx": ["micromark-extension-mdx-jsx@3.0.2", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ=="], @@ -2249,12 +2413,18 @@ "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], + "oniguruma-parser": ["oniguruma-parser@0.12.2", "", {}, "sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw=="], + + "oniguruma-to-es": ["oniguruma-to-es@4.3.6", "", { "dependencies": { "oniguruma-parser": "^0.12.2", "regex": "^6.1.0", "regex-recursion": "^6.0.2" } }, "sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA=="], + "open": ["open@10.2.0", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "wsl-utils": "^0.1.0" } }, "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA=="], "openai": ["openai@6.26.0", "", { "peerDependencies": { "ws": "^8.18.0", "zod": "^3.25 || ^4.0" }, "optionalPeers": ["ws", "zod"], "bin": { "openai": "bin/cli" } }, "sha512-zd23dbWTjiJ6sSAX6s0HrCZi41JwTA1bQVs0wLQPZ2/5o2gxOJA5wh7yOAUgwYybfhDXyhwlpeQf7Mlgx8EOCA=="], "openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="], + "orderedmap": ["orderedmap@2.1.1", "", {}, "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g=="], + "os-tmpdir": ["os-tmpdir@1.0.2", "", {}, "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g=="], "oxlint": ["oxlint@1.62.0", "", { "optionalDependencies": { "@oxlint/binding-android-arm-eabi": "1.62.0", "@oxlint/binding-android-arm64": "1.62.0", "@oxlint/binding-darwin-arm64": "1.62.0", "@oxlint/binding-darwin-x64": "1.62.0", "@oxlint/binding-freebsd-x64": "1.62.0", "@oxlint/binding-linux-arm-gnueabihf": "1.62.0", "@oxlint/binding-linux-arm-musleabihf": "1.62.0", "@oxlint/binding-linux-arm64-gnu": "1.62.0", "@oxlint/binding-linux-arm64-musl": "1.62.0", "@oxlint/binding-linux-ppc64-gnu": "1.62.0", "@oxlint/binding-linux-riscv64-gnu": "1.62.0", "@oxlint/binding-linux-riscv64-musl": "1.62.0", "@oxlint/binding-linux-s390x-gnu": "1.62.0", "@oxlint/binding-linux-x64-gnu": "1.62.0", "@oxlint/binding-linux-x64-musl": "1.62.0", "@oxlint/binding-openharmony-arm64": "1.62.0", "@oxlint/binding-win32-arm64-msvc": "1.62.0", "@oxlint/binding-win32-ia32-msvc": "1.62.0", "@oxlint/binding-win32-x64-msvc": "1.62.0" }, "peerDependencies": { "oxlint-tsgolint": ">=0.18.0" }, "optionalPeers": ["oxlint-tsgolint"], "bin": { "oxlint": "bin/oxlint" } }, "sha512-1uFkg6HakjsGIpW9wNdeW4/2LOHW9MEkoWjZUTUfQtIHyLIZPYt00w3Sg+H3lH+206FgBPHBbW5dVE5l2ExECQ=="], @@ -2267,6 +2437,8 @@ "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], + "package-manager-detector": ["package-manager-detector@1.8.0", "", {}, "sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A=="], + "pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="], "parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], @@ -2283,6 +2455,8 @@ "patch-package": ["patch-package@6.5.1", "", { "dependencies": { "@yarnpkg/lockfile": "^1.1.0", "chalk": "^4.1.2", "cross-spawn": "^6.0.5", "find-yarn-workspace-root": "^2.0.0", "fs-extra": "^9.0.0", "is-ci": "^2.0.0", "klaw-sync": "^6.0.0", "minimist": "^1.2.6", "open": "^7.4.2", "rimraf": "^2.6.3", "semver": "^5.6.0", "slash": "^2.0.0", "tmp": "^0.0.33", "yaml": "^1.10.2" }, "bin": { "patch-package": "index.js" } }, "sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA=="], + "path-data-parser": ["path-data-parser@0.1.0", "", {}, "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w=="], + "path-expression-matcher": ["path-expression-matcher@1.5.0", "", {}, "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ=="], "path-is-absolute": ["path-is-absolute@1.0.1", "", {}, "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="], @@ -2297,17 +2471,17 @@ "pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="], - "pg": ["pg@8.21.0", "", { "dependencies": { "pg-connection-string": "^2.13.0", "pg-pool": "^3.14.0", "pg-protocol": "^1.14.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, "optionalDependencies": { "pg-cloudflare": "^1.4.0" }, "peerDependencies": { "pg-native": ">=3.0.1" }, "optionalPeers": ["pg-native"] }, "sha512-AUP1EYJuHraQGsVoCQVIcM7TEJVGtDzxWtGFZd8rds9d+CCXlU5Js1rYgfLNvxy9iJrpHjGrRjoi/3BT9fRyiA=="], + "pg": ["pg@8.22.0", "", { "dependencies": { "pg-connection-string": "^2.14.0", "pg-pool": "^3.14.0", "pg-protocol": "^1.15.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, "optionalDependencies": { "pg-cloudflare": "^1.4.0" }, "peerDependencies": { "pg-native": ">=3.0.1" }, "optionalPeers": ["pg-native"] }, "sha512-8wih1vVIBMxoUM2oB4soJsD9tDnDpLv4OXBJ+EJzFsvycD+lfyIreC2gGHq78f8jbLLt+bvlPTFdFZfJkOuzAA=="], "pg-cloudflare": ["pg-cloudflare@1.4.0", "", {}, "sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A=="], - "pg-connection-string": ["pg-connection-string@2.13.0", "", {}, "sha512-EMnU9E2fSULdsbErBbMaXJvFeD9B4+nPcM3f+4lsiCR0BHLPrLVjv3DbyM2hgQQviKJaTWIRRTjKjWlHg3p2ig=="], + "pg-connection-string": ["pg-connection-string@2.14.0", "", {}, "sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg=="], "pg-int8": ["pg-int8@1.0.1", "", {}, "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="], "pg-pool": ["pg-pool@3.14.0", "", { "peerDependencies": { "pg": ">=8.0" } }, "sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw=="], - "pg-protocol": ["pg-protocol@1.14.0", "", {}, "sha512-n5taZ1kO3s9ngDTVxsEznOqCyToTgz0FLuPq0B33COy5pPpuWJpY3/2oRBVETuOgzdqRXfWpM9HIhp2LBBT1BA=="], + "pg-protocol": ["pg-protocol@1.15.0", "", {}, "sha512-cq9sECI5s0+uPUXjbz8ioyPJni6RzsRib0US67i5IoTZKw8fNeYlVE7u8F4dG7vEJJtc5wdD1K189lCCUwqWTQ=="], "pg-types": ["pg-types@2.2.0", "", { "dependencies": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", "postgres-bytea": "~1.0.0", "postgres-date": "~1.0.4", "postgres-interval": "^1.1.0" } }, "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA=="], @@ -2331,6 +2505,10 @@ "pngjs": ["pngjs@6.0.0", "", {}, "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg=="], + "points-on-curve": ["points-on-curve@0.2.0", "", {}, "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A=="], + + "points-on-path": ["points-on-path@0.2.1", "", { "dependencies": { "path-data-parser": "0.1.0", "points-on-curve": "0.2.0" } }, "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g=="], + "postcss": ["postcss@8.5.15", "", { "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A=="], "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "^3.1.1" }, "peerDependencies": { "jiti": ">=1.21.0", "postcss": ">=8.0.9", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["jiti", "postcss", "tsx", "yaml"] }, "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g=="], @@ -2353,6 +2531,38 @@ "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], + "prosemirror-changeset": ["prosemirror-changeset@2.4.1", "", { "dependencies": { "prosemirror-transform": "^1.0.0" } }, "sha512-96WBLhOaYhJ+kPhLg3uW359Tz6I/MfcrQfL4EGv4SrcqKEMC1gmoGrXHecPE8eOwTVCJ4IwgfzM8fFad25wNfw=="], + + "prosemirror-commands": ["prosemirror-commands@1.7.1", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.10.2" } }, "sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w=="], + + "prosemirror-drop-indicator": ["prosemirror-drop-indicator@0.1.4", "", { "dependencies": { "@ocavue/utils": "^1.6.0", "prosemirror-model": "^1.25.7", "prosemirror-state": "^1.4.4", "prosemirror-view": "^1.41.8" } }, "sha512-YaRB1pZmU5GCorPVWbc9dbhbwqr4iMBO/AjPu4BTKHCUzxEDUXje2dUyoxOHib/z4uyPUZTJz64h7mHDJZeSzA=="], + + "prosemirror-dropcursor": ["prosemirror-dropcursor@1.8.3", "", { "dependencies": { "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.1.0", "prosemirror-view": "^1.1.0" } }, "sha512-FoYbsJR8gK+DGlqhNoE29Loa38eIZPzQRIb1VMaDNBoo4OLP6vVof/jR8qFY/6XvUd6Dhug8MDCHl2a/h8RTfQ=="], + + "prosemirror-gapcursor": ["prosemirror-gapcursor@1.4.1", "", { "dependencies": { "prosemirror-keymap": "^1.0.0", "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-view": "^1.0.0" } }, "sha512-pMdYaEnjNMSwl11yjEGtgTmLkR08m/Vl+Jj443167p9eB3HVQKhYCc4gmHVDsLPODfZfjr/MmirsdyZziXbQKw=="], + + "prosemirror-history": ["prosemirror-history@1.5.0", "", { "dependencies": { "prosemirror-state": "^1.2.2", "prosemirror-transform": "^1.0.0", "prosemirror-view": "^1.31.0", "rope-sequence": "^1.3.0" } }, "sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg=="], + + "prosemirror-inputrules": ["prosemirror-inputrules@1.5.1", "", { "dependencies": { "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.0.0" } }, "sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw=="], + + "prosemirror-keymap": ["prosemirror-keymap@1.2.3", "", { "dependencies": { "prosemirror-state": "^1.0.0", "w3c-keyname": "^2.2.0" } }, "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw=="], + + "prosemirror-model": ["prosemirror-model@1.25.11", "", { "dependencies": { "orderedmap": "^2.0.0" } }, "sha512-QWg9RhnpLlogAmp3p96uEFrE5txQpFynd4vhBAELkwgOCWQs/X0yCzB3/hrHqiPwf91RG5KyWq6553zs9JqIOQ=="], + + "prosemirror-safari-ime-span": ["prosemirror-safari-ime-span@1.0.2", "", { "dependencies": { "prosemirror-state": "^1.4.3", "prosemirror-view": "^1.33.8" } }, "sha512-QJqD8s1zE/CuK56kDsUhndh5hiHh/gFnAuPOA9ytva2s85/ZEt2tNWeALTJN48DtWghSKOmiBsvVn2OlnJ5H2w=="], + + "prosemirror-schema-list": ["prosemirror-schema-list@1.5.1", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.7.3" } }, "sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q=="], + + "prosemirror-state": ["prosemirror-state@1.4.4", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-transform": "^1.0.0", "prosemirror-view": "^1.27.0" } }, "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw=="], + + "prosemirror-tables": ["prosemirror-tables@1.8.5", "", { "dependencies": { "prosemirror-keymap": "^1.2.3", "prosemirror-model": "^1.25.4", "prosemirror-state": "^1.4.4", "prosemirror-transform": "^1.10.5", "prosemirror-view": "^1.41.4" } }, "sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw=="], + + "prosemirror-transform": ["prosemirror-transform@1.12.0", "", { "dependencies": { "prosemirror-model": "^1.21.0" } }, "sha512-GxboyN4AMIsoHNtz5uf2r2Ru551i5hWeCMD6E2Ib4Eogqoub0NflniaBPVQ4MrGE5yZ8JV9tUHg9qcZTTrcN4w=="], + + "prosemirror-view": ["prosemirror-view@1.42.2", "", { "dependencies": { "prosemirror-model": "^1.25.8", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.1.0" } }, "sha512-Pdg0l5kXm8aLDquFAnQFTCITg0q44sLqBlHlpsVLD9segdOao8TOfQdAhCrCXyVgPSRr6UDDROOIWA3bIrN9YQ=="], + + "prosemirror-virtual-cursor": ["prosemirror-virtual-cursor@0.4.2", "", { "peerDependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-view": "^1.0.0" }, "optionalPeers": ["prosemirror-model", "prosemirror-state", "prosemirror-view"] }, "sha512-pUMKnIuOhhnMcgIJUjhIQTVJruBEGxfMBVQSrK0g2qhGPDm1i12KdsVaFw15dYk+29tZcxjMeR7P5VDKwmbwJg=="], + "protobufjs": ["protobufjs@7.5.6", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.5", "@protobufjs/eventemitter": "^1.1.0", "@protobufjs/fetch": "^1.1.0", "@protobufjs/float": "^1.0.2", "@protobufjs/inquire": "^1.1.1", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", "long": "^5.0.0" } }, "sha512-M71sTMB146U3u0di3yup8iM+zv8yPRNQVr1KK4tyBitl3qFvEGucq/rGDRShD2rsJhtN02RJaJ7j5X5hmy8SJg=="], "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], @@ -2367,6 +2577,8 @@ "qs": ["qs@6.15.1", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg=="], + "radix-ui": ["radix-ui@1.6.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.7", "@radix-ui/react-accessible-icon": "1.1.15", "@radix-ui/react-accordion": "1.2.20", "@radix-ui/react-alert-dialog": "1.1.23", "@radix-ui/react-arrow": "1.1.15", "@radix-ui/react-aspect-ratio": "1.1.15", "@radix-ui/react-avatar": "1.2.6", "@radix-ui/react-checkbox": "1.3.11", "@radix-ui/react-collapsible": "1.1.20", "@radix-ui/react-collection": "1.1.15", "@radix-ui/react-compose-refs": "1.1.5", "@radix-ui/react-context": "1.2.2", "@radix-ui/react-context-menu": "2.3.7", "@radix-ui/react-dialog": "1.1.23", "@radix-ui/react-direction": "1.1.4", "@radix-ui/react-dismissable-layer": "1.1.19", "@radix-ui/react-dropdown-menu": "2.1.24", "@radix-ui/react-focus-guards": "1.1.6", "@radix-ui/react-focus-scope": "1.1.16", "@radix-ui/react-form": "0.1.16", "@radix-ui/react-hover-card": "1.1.23", "@radix-ui/react-label": "2.1.15", "@radix-ui/react-menu": "2.1.24", "@radix-ui/react-menubar": "1.1.24", "@radix-ui/react-navigation-menu": "1.2.22", "@radix-ui/react-one-time-password-field": "0.1.16", "@radix-ui/react-password-toggle-field": "0.1.11", "@radix-ui/react-popover": "1.1.23", "@radix-ui/react-popper": "1.3.7", "@radix-ui/react-portal": "1.1.17", "@radix-ui/react-presence": "1.1.10", "@radix-ui/react-primitive": "2.1.10", "@radix-ui/react-progress": "1.1.16", "@radix-ui/react-radio-group": "1.4.7", "@radix-ui/react-roving-focus": "1.1.19", "@radix-ui/react-scroll-area": "1.2.18", "@radix-ui/react-select": "2.3.7", "@radix-ui/react-separator": "1.1.15", "@radix-ui/react-slider": "1.4.7", "@radix-ui/react-slot": "1.3.3", "@radix-ui/react-switch": "1.3.7", "@radix-ui/react-tabs": "1.1.21", "@radix-ui/react-toast": "1.2.23", "@radix-ui/react-toggle": "1.1.18", "@radix-ui/react-toggle-group": "1.1.19", "@radix-ui/react-toolbar": "1.1.19", "@radix-ui/react-tooltip": "1.2.16", "@radix-ui/react-use-callback-ref": "1.1.4", "@radix-ui/react-use-controllable-state": "1.2.6", "@radix-ui/react-use-effect-event": "0.0.5", "@radix-ui/react-use-escape-keydown": "1.1.5", "@radix-ui/react-use-is-hydrated": "0.1.3", "@radix-ui/react-use-layout-effect": "1.1.4", "@radix-ui/react-use-size": "1.1.4", "@radix-ui/react-visually-hidden": "1.2.11" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-QBdhh1arIEUvPC0dQ5+nwWAxt7+N+oP/9jPwjJkGFoSk/sqxg32gJtSXGtFh8frAIcS6oC9cx2Q+7KYCQLOAeA=="], + "range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], "raw-body": ["raw-body@3.0.2", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.7.0", "unpipe": "~1.0.0" } }, "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA=="], @@ -2375,16 +2587,28 @@ "react": ["react@19.2.5", "", {}, "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA=="], + "react-devtools-core": ["react-devtools-core@7.0.1", "", { "dependencies": { "shell-quote": "^1.6.1", "ws": "^7" } }, "sha512-C3yNvRHaizlpiASzy7b9vbnBGLrhvdhl1CbdU6EnZgxPNbai60szdLtl+VL76UNOt5bOoVTOz5rNWZxgGt+Gsw=="], + "react-dom": ["react-dom@19.2.5", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.5" } }, "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag=="], "react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], "react-reconciler": ["react-reconciler@0.33.0", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.0" } }, "sha512-KetWRytFv1epdpJc3J4G75I4WrplZE5jOL7Yq0p34+OVOKF4Se7WrdIdVC45XsSSmUTlht2FM/fM1FZb1mfQeA=="], + "react-redux": ["react-redux@9.3.0", "", { "dependencies": { "@types/use-sync-external-store": "^0.0.6", "use-sync-external-store": "^1.4.0" }, "peerDependencies": { "@types/react": "^18.2.25 || ^19", "react": "^18.0 || ^19", "redux": "^5.0.0" }, "optionalPeers": ["@types/react", "redux"] }, "sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g=="], + + "react-remove-scroll": ["react-remove-scroll@2.7.2", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q=="], + + "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], + + "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], + "readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], "readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], + "recharts": ["recharts@3.10.1", "", { "dependencies": { "@reduxjs/toolkit": "^1.9.0 || 2.x.x", "clsx": "^2.1.1", "decimal.js-light": "^2.5.1", "es-toolkit": "^1.39.3", "eventemitter3": "^5.0.1", "immer": "^11.1.8", "react-redux": "8.x.x || 9.x.x", "reselect": "5.2.0", "tiny-invariant": "^1.3.3", "use-sync-external-store": "^1.2.2", "victory-vendor": "^37.0.2" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-QXFrvt6IVcw7eeZCoyXTwkIJAX3Dv1nyVhMicXJ47GsGDDpcN8z6o644DibE9XjpBTThtsomLKnTV6lc+cVFUA=="], + "recma-build-jsx": ["recma-build-jsx@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew=="], "recma-jsx": ["recma-jsx@1.0.1", "", { "dependencies": { "acorn-jsx": "^5.0.0", "estree-util-to-js": "^2.0.0", "recma-parse": "^1.0.0", "recma-stringify": "^1.0.0", "unified": "^11.0.0" }, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w=="], @@ -2393,32 +2617,62 @@ "recma-stringify": ["recma-stringify@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-to-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g=="], + "redux": ["redux@5.0.1", "", {}, "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w=="], + + "redux-thunk": ["redux-thunk@3.1.0", "", { "peerDependencies": { "redux": "^5.0.0" } }, "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw=="], + + "regex": ["regex@6.1.0", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg=="], + + "regex-recursion": ["regex-recursion@6.0.2", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg=="], + + "regex-utilities": ["regex-utilities@2.3.0", "", {}, "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng=="], + "rehype-recma": ["rehype-recma@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "hast-util-to-estree": "^3.0.0" } }, "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw=="], + "remark": ["remark@15.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A=="], + + "remark-gfm": ["remark-gfm@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="], + + "remark-inline-links": ["remark-inline-links@7.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-definitions": "^6.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-4uj1pPM+F495ySZhTIB6ay2oSkTsKgmYaKk/q5HIdhX2fuyLEegpjWa0VdJRJ01sgOqAFo7MBKdDUejIYBMVMQ=="], + + "remark-math": ["remark-math@6.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-math": "^3.0.0", "micromark-extension-math": "^3.0.0", "unified": "^11.0.0" } }, "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA=="], + "remark-mdx": ["remark-mdx@3.1.1", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg=="], "remark-parse": ["remark-parse@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="], "remark-rehype": ["remark-rehype@11.1.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="], + "remark-stringify": ["remark-stringify@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="], + "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], + "reselect": ["reselect@5.2.0", "", {}, "sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw=="], + "resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], "retry": ["retry@0.12.0", "", {}, "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow=="], "rimraf": ["rimraf@2.7.1", "", { "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "./bin.js" } }, "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w=="], + "robust-predicates": ["robust-predicates@3.0.3", "", {}, "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA=="], + "rolldown": ["rolldown@1.0.2", "", { "dependencies": { "@oxc-project/types": "=0.132.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.2", "@rolldown/binding-darwin-arm64": "1.0.2", "@rolldown/binding-darwin-x64": "1.0.2", "@rolldown/binding-freebsd-x64": "1.0.2", "@rolldown/binding-linux-arm-gnueabihf": "1.0.2", "@rolldown/binding-linux-arm64-gnu": "1.0.2", "@rolldown/binding-linux-arm64-musl": "1.0.2", "@rolldown/binding-linux-ppc64-gnu": "1.0.2", "@rolldown/binding-linux-s390x-gnu": "1.0.2", "@rolldown/binding-linux-x64-gnu": "1.0.2", "@rolldown/binding-linux-x64-musl": "1.0.2", "@rolldown/binding-openharmony-arm64": "1.0.2", "@rolldown/binding-wasm32-wasi": "1.0.2", "@rolldown/binding-win32-arm64-msvc": "1.0.2", "@rolldown/binding-win32-x64-msvc": "1.0.2" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-oZx5zVDtVB44AW3eaifgDml1gWRDZGvjcfdxonE4swNPG98PrrXjaO/KrnUjzlMnztCCRVlUueA1kCXhARGk6g=="], "rollup": ["rollup@4.60.2", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.60.2", "@rollup/rollup-android-arm64": "4.60.2", "@rollup/rollup-darwin-arm64": "4.60.2", "@rollup/rollup-darwin-x64": "4.60.2", "@rollup/rollup-freebsd-arm64": "4.60.2", "@rollup/rollup-freebsd-x64": "4.60.2", "@rollup/rollup-linux-arm-gnueabihf": "4.60.2", "@rollup/rollup-linux-arm-musleabihf": "4.60.2", "@rollup/rollup-linux-arm64-gnu": "4.60.2", "@rollup/rollup-linux-arm64-musl": "4.60.2", "@rollup/rollup-linux-loong64-gnu": "4.60.2", "@rollup/rollup-linux-loong64-musl": "4.60.2", "@rollup/rollup-linux-ppc64-gnu": "4.60.2", "@rollup/rollup-linux-ppc64-musl": "4.60.2", "@rollup/rollup-linux-riscv64-gnu": "4.60.2", "@rollup/rollup-linux-riscv64-musl": "4.60.2", "@rollup/rollup-linux-s390x-gnu": "4.60.2", "@rollup/rollup-linux-x64-gnu": "4.60.2", "@rollup/rollup-linux-x64-musl": "4.60.2", "@rollup/rollup-openbsd-x64": "4.60.2", "@rollup/rollup-openharmony-arm64": "4.60.2", "@rollup/rollup-win32-arm64-msvc": "4.60.2", "@rollup/rollup-win32-ia32-msvc": "4.60.2", "@rollup/rollup-win32-x64-gnu": "4.60.2", "@rollup/rollup-win32-x64-msvc": "4.60.2", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ=="], + "rope-sequence": ["rope-sequence@1.3.4", "", {}, "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ=="], + + "roughjs": ["roughjs@4.6.6", "", { "dependencies": { "hachure-fill": "^0.5.2", "path-data-parser": "^0.1.0", "points-on-curve": "^0.2.0", "points-on-path": "^0.2.1" } }, "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ=="], + "router": ["router@2.2.0", "", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="], "run-applescript": ["run-applescript@7.1.0", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="], + "rw": ["rw@1.3.3", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="], + "safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], @@ -2429,6 +2683,10 @@ "send": ["send@1.2.1", "", { "dependencies": { "debug": "^4.4.3", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.1", "mime-types": "^3.0.2", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.2" } }, "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ=="], + "seroval": ["seroval@1.6.0", "", {}, "sha512-TBwwKfscTEgnBEWmYKKeCcmCGmrJi0LV6qNUY//WBA3MDesh/zfn+KOMq/ckpxM4gZ0ouAE706A1eenekM2sug=="], + + "seroval-plugins": ["seroval-plugins@1.6.0", "", { "peerDependencies": { "seroval": "^1.0" } }, "sha512-CbR5DP5DPicpd9RwRUzka7hi4x1577eGFXJVBW409LXqqJNst99JSUTZ8CXcnskQX7laPOWpmzliq0gBZEGlrQ=="], + "serve-static": ["serve-static@2.2.1", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw=="], "setimmediate": ["setimmediate@1.0.5", "", {}, "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="], @@ -2441,6 +2699,10 @@ "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + "shell-quote": ["shell-quote@1.10.0", "", {}, "sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA=="], + + "shiki": ["shiki@4.4.1", "", { "dependencies": { "@shikijs/core": "4.4.1", "@shikijs/engine-javascript": "4.4.1", "@shikijs/engine-oniguruma": "4.4.1", "@shikijs/langs": "4.4.1", "@shikijs/themes": "4.4.1", "@shikijs/types": "4.4.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.5" } }, "sha512-rFP+iYKzjLEIqiMiKANhARqiAbk4deDhWnBtnUO/K0D0dPxMGDH4N0FVfBY/VeI+lPrV4wNGCHQZp7EOr7NNBw=="], + "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], "side-channel-list": ["side-channel-list@1.0.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4" } }, "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w=="], @@ -2459,14 +2721,16 @@ "smart-buffer": ["smart-buffer@4.2.0", "", {}, "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="], - "smithers-orchestrator": ["smithers-orchestrator@workspace:packages/smithers"], - "smithers-workflows": ["smithers-workflows@workspace:.smithers"], + "smthrs": ["smthrs@0.33.0", "", { "dependencies": { "@mdx-js/esbuild": "^3.1.1", "@smthrs/agents": "0.33.0", "@smthrs/aws": "0.33.0", "@smthrs/cli": "0.33.0", "@smthrs/cloudflare": "0.33.0", "@smthrs/components": "0.33.0", "@smthrs/control-plane": "0.33.0", "@smthrs/daytona": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/engine": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/gateway-client": "0.33.0", "@smthrs/gateway-react": "0.33.0", "@smthrs/gateway-ui": "0.33.0", "@smthrs/gcp": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/memory": "0.33.0", "@smthrs/microsandbox": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/openapi": "0.33.0", "@smthrs/react-reconciler": "0.33.0", "@smthrs/sandbox": "0.33.0", "@smthrs/scheduler": "0.33.0", "@smthrs/scorers": "0.33.0", "@smthrs/server": "0.33.0", "@smthrs/telegram": "0.33.0", "@smthrs/testing": "0.33.0", "@smthrs/time-travel": "0.33.0", "@smthrs/tool-context": "0.33.0", "@smthrs/ui": "0.33.0", "@smthrs/vcs": "0.33.0", "@smthrs/vercel": "0.33.0", "@smthrs/xstate": "0.33.0", "ai": "^7.0.10", "diff": "^9.0.0", "drizzle-orm": "^0.45.2", "effect": "4.0.0-beta.102", "incur": "^0.4.10", "react": "^19.2.7", "zod": "^4.4.3" }, "optionalDependencies": { "@electric-sql/pglite": "^0.5.4", "@electric-sql/pglite-socket": "^0.2.6", "pg": "^8.22.0" }, "bin": { "smithers": "src/bin/smithers.js" } }, "sha512-X2KvPu3Ly5jtgHoOns/YwwEFsGHxadJUk+OjW5mNx4VoYT6rl2gII+9FVGPKHC0cNYBDBoLzvYCX61IvYKWKpQ=="], + "socks": ["socks@2.8.8", "", { "dependencies": { "ip-address": "^10.1.1", "smart-buffer": "^4.2.0" } }, "sha512-NlGELfPrgX2f1TAAcz0WawlLn+0r3FyhhCRpFFK2CemXenPYvzMWWZINv3eDNo9ucdwme7oCHRY0Jnbs4aIkog=="], "socks-proxy-agent": ["socks-proxy-agent@8.0.5", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } }, "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw=="], + "sorted-btree": ["sorted-btree@1.8.1", "", {}, "sha512-395+XIP+wqNn3USkFSrNz7G3Ss/MXlZEqesxvzCRFwL14h6e8LukDHdLBePn5pwbm5OQ9vGu8mDyz2lLDIqamQ=="], + "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], @@ -2481,7 +2745,7 @@ "std-env": ["std-env@4.1.0", "", {}, "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ=="], - "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], "string-width-cjs": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], @@ -2499,10 +2763,14 @@ "strtok3": ["strtok3@10.3.5", "", { "dependencies": { "@tokenizer/token": "^0.3.0" } }, "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA=="], + "style-mod": ["style-mod@4.1.3", "", {}, "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ=="], + "style-to-js": ["style-to-js@1.1.21", "", { "dependencies": { "style-to-object": "1.0.14" } }, "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="], "style-to-object": ["style-to-object@1.0.14", "", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="], + "stylis": ["stylis@4.4.0", "", {}, "sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA=="], + "sucrase": ["sucrase@3.35.1", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw=="], "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], @@ -2513,6 +2781,8 @@ "three": ["three@0.165.0", "", {}, "sha512-cc96IlVYGydeceu0e5xq70H8/yoVT/tXBxV/W8A/U6uOq7DXc4/s1Mkmnu6SqoYGhSRWWYFOhVwvq6V0VtbplA=="], + "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], + "tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="], "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], @@ -2541,6 +2811,8 @@ "ts-algebra": ["ts-algebra@2.0.0", "", {}, "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw=="], + "ts-dedent": ["ts-dedent@2.3.0", "", {}, "sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg=="], + "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], @@ -2577,6 +2849,8 @@ "unist-util-position-from-estree": ["unist-util-position-from-estree@2.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ=="], + "unist-util-remove-position": ["unist-util-remove-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q=="], + "unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], "unist-util-visit": ["unist-util-visit@5.1.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg=="], @@ -2589,6 +2863,10 @@ "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], + "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], + + "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], + "use-sync-external-store": ["use-sync-external-store@1.6.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w=="], "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], @@ -2601,12 +2879,20 @@ "vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], + "victory-vendor": ["victory-vendor@37.3.6", "", { "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", "@types/d3-interpolate": "^3.0.1", "@types/d3-scale": "^4.0.2", "@types/d3-shape": "^3.1.0", "@types/d3-time": "^3.0.0", "@types/d3-timer": "^3.0.0", "d3-array": "^3.1.6", "d3-ease": "^3.0.1", "d3-interpolate": "^3.0.1", "d3-scale": "^4.0.2", "d3-shape": "^3.1.0", "d3-time": "^3.0.0", "d3-timer": "^3.0.1" } }, "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ=="], + "vite": ["vite@8.0.14", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.15", "rolldown": "1.0.2", "tinyglobby": "^0.2.16" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.1.18", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-s4BJJ+5y1pYL6Otw51FHhVJQhPnuRinKig64g/1+EUNaJsd3gCKdD31IPFvswUgW9/60QT9oFHbZHbQK5imcxw=="], "vitest": ["vitest@4.1.7", "", { "dependencies": { "@vitest/expect": "4.1.7", "@vitest/mocker": "4.1.7", "@vitest/pretty-format": "4.1.7", "@vitest/runner": "4.1.7", "@vitest/snapshot": "4.1.7", "@vitest/spy": "4.1.7", "@vitest/utils": "4.1.7", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.7", "@vitest/browser-preview": "4.1.7", "@vitest/browser-webdriverio": "4.1.7", "@vitest/coverage-istanbul": "4.1.7", "@vitest/coverage-v8": "4.1.7", "@vitest/ui": "4.1.7", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-flYyaFd2CgoCoU+0UKt3pxksgC+S02iTDN0n3LtqaMeXsI9SBcdNujc2k0DeFLzUn/0k538yNjOSdwgCqcrwJA=="], + "vue": ["vue@3.5.40", "", { "dependencies": { "@vue/compiler-dom": "3.5.40", "@vue/compiler-sfc": "3.5.40", "@vue/runtime-dom": "3.5.40", "@vue/server-renderer": "3.5.40", "@vue/shared": "3.5.40" }, "peerDependencies": { "typescript": "*" }, "optionalPeers": ["typescript"] }, "sha512-+8PJ4SJXdn/cHGImF4CKdxlWHIN5Dkt7DoufRREM6h6uVCx2m7QxgcEQmmzyOK8A9mcafg7sFbJFYsdFVubTig=="], + + "w3c-keyname": ["w3c-keyname@2.2.8", "", {}, "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="], + "web-streams-polyfill": ["web-streams-polyfill@4.0.0-beta.3", "", {}, "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug=="], + "web-tree-sitter": ["web-tree-sitter@0.25.10", "", { "peerDependencies": { "@types/emscripten": "^1.40.0" }, "optionalPeers": ["@types/emscripten"] }, "sha512-Y09sF44/13XvgVKgO2cNDw5rGk6s26MgoZPXLESvMXeefBf7i6/73eFurre0IsTW6E14Y0ArIzhUMmjoc7xyzA=="], + "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], "whatwg-mimetype": ["whatwg-mimetype@3.0.0", "", {}, "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q=="], @@ -2627,7 +2913,7 @@ "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], - "ws": ["ws@8.20.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA=="], + "ws": ["ws@8.20.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w=="], "wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="], @@ -2661,6 +2947,10 @@ "@ag-ui/core/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], + "@ai-sdk/provider-utils/undici": ["undici@7.29.0", "", {}, "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw=="], + + "@antfu/install-pkg/tinyexec": ["tinyexec@1.2.3", "", {}, "sha512-g62dB+w1/OEFnPvmX0yd/HnetYITOL+1nJW7kitOycOeAvmbWC/nu0fwmmQ/kupNojqExzyC/T++pST/jRJ2mQ=="], + "@aws-crypto/crc32/@aws-sdk/types": ["@aws-sdk/types@3.973.8", "", { "dependencies": { "@smithy/types": "^4.14.1", "tslib": "^2.6.2" } }, "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw=="], "@aws-crypto/sha256-browser/@aws-sdk/types": ["@aws-sdk/types@3.973.8", "", { "dependencies": { "@smithy/types": "^4.14.1", "tslib": "^2.6.2" } }, "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw=="], @@ -2773,14 +3063,30 @@ "@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], - "@cloudflare/vite-plugin/ws": ["ws@8.20.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w=="], - "@cspotcode/source-map-support/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.9", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="], "@dino-dna/react-tui/react": ["react@16.13.1", "", { "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2" } }, "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w=="], "@dino-dna/react-tui/react-reconciler": ["react-reconciler@0.25.1", "", { "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", "scheduler": "^0.19.1" }, "peerDependencies": { "react": "^16.13.1" } }, "sha512-R5UwsIvRcSs3w8n9k3tBoTtUHdVhu9u84EG7E5M0Jk9F5i6DA1pQzPfUZd6opYWGy56MJOtV3VADzy6DRwYDjw=="], + "@effect/platform-node-shared/ws": ["ws@8.21.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw=="], + + "@electric-sql/pglite-age/@electric-sql/pglite": ["@electric-sql/pglite@0.5.1", "", {}, "sha512-h2Vc+qkQqsEL5kvyN5nBAxn3Vbyvka7QfDW7Io+CdcwU1+X8JbCAN2og+5dI11S3eJuDfroUCxzJaap6k+ezEw=="], + + "@electric-sql/pglite-pg_hashids/@electric-sql/pglite": ["@electric-sql/pglite@0.5.1", "", {}, "sha512-h2Vc+qkQqsEL5kvyN5nBAxn3Vbyvka7QfDW7Io+CdcwU1+X8JbCAN2og+5dI11S3eJuDfroUCxzJaap6k+ezEw=="], + + "@electric-sql/pglite-pg_ivm/@electric-sql/pglite": ["@electric-sql/pglite@0.5.1", "", {}, "sha512-h2Vc+qkQqsEL5kvyN5nBAxn3Vbyvka7QfDW7Io+CdcwU1+X8JbCAN2og+5dI11S3eJuDfroUCxzJaap6k+ezEw=="], + + "@electric-sql/pglite-pg_textsearch/@electric-sql/pglite": ["@electric-sql/pglite@0.5.1", "", {}, "sha512-h2Vc+qkQqsEL5kvyN5nBAxn3Vbyvka7QfDW7Io+CdcwU1+X8JbCAN2og+5dI11S3eJuDfroUCxzJaap6k+ezEw=="], + + "@electric-sql/pglite-pg_uuidv7/@electric-sql/pglite": ["@electric-sql/pglite@0.5.1", "", {}, "sha512-h2Vc+qkQqsEL5kvyN5nBAxn3Vbyvka7QfDW7Io+CdcwU1+X8JbCAN2og+5dI11S3eJuDfroUCxzJaap6k+ezEw=="], + + "@electric-sql/pglite-pgtap/@electric-sql/pglite": ["@electric-sql/pglite@0.5.1", "", {}, "sha512-h2Vc+qkQqsEL5kvyN5nBAxn3Vbyvka7QfDW7Io+CdcwU1+X8JbCAN2og+5dI11S3eJuDfroUCxzJaap6k+ezEw=="], + + "@electric-sql/pglite-pgvector/@electric-sql/pglite": ["@electric-sql/pglite@0.5.1", "", {}, "sha512-h2Vc+qkQqsEL5kvyN5nBAxn3Vbyvka7QfDW7Io+CdcwU1+X8JbCAN2og+5dI11S3eJuDfroUCxzJaap6k+ezEw=="], + + "@google/genai/ws": ["ws@8.20.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA=="], + "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], @@ -2791,81 +3097,145 @@ "@mariozechner/pi-coding-agent/uuid": ["uuid@14.0.0", "", { "bin": { "uuid": "dist-node/bin/uuid" } }, "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg=="], + "@milkdown/components/nanoid": ["nanoid@5.1.16", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ=="], + + "@milkdown/crepe/katex": ["katex@0.17.0", "", { "dependencies": { "commander": "^8.3.0" }, "bin": { "katex": "cli.js" } }, "sha512-Vdw0ATsQ9V+LuegM/BTwQqV/6cTl5lbGcIrU+BCgLxyf6bo38ybOr372tuSIxir3CN720flu1meYR6XzNMwQnw=="], + + "@milkdown/utils/nanoid": ["nanoid@5.1.16", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ=="], + + "@mistralai/mistralai/ws": ["ws@8.20.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA=="], + + "@modelcontextprotocol/sdk/hono": ["hono@4.12.16", "", {}, "sha512-jN0ZewiNAWSe5khM3EyCmBb250+b40wWbwNILNfEvq84VREWwOIkuUsFONk/3i3nqkz7Oe1PcpM2mwQEK2L9Kg=="], + + "@modelcontextprotocol/server/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "@octokit/plugin-paginate-rest/@octokit/types": ["@octokit/types@13.10.0", "", { "dependencies": { "@octokit/openapi-types": "^24.2.0" } }, "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA=="], "@octokit/plugin-rest-endpoint-methods/@octokit/types": ["@octokit/types@13.10.0", "", { "dependencies": { "@octokit/openapi-types": "^24.2.0" } }, "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA=="], + "@opentui/core/marked": ["marked@17.0.1", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-boeBdiS0ghpWcSwoNm/jJBwdpFaMnZWRzjA6SkUMYb40SVaN1x7mmfGKp0jvexGcx+7y2La5zRZsYFZI6Qpypg=="], + "@poppinss/dumper/supports-color": ["supports-color@10.2.2", "", {}, "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g=="], - "@smithers-orchestrator/accounts/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@shikijs/core/@types/hast": ["@types/hast@3.0.5", "", { "dependencies": { "@types/unist": "*" } }, "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g=="], + + "@shikijs/primitive/@types/hast": ["@types/hast@3.0.5", "", { "dependencies": { "@types/unist": "*" } }, "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g=="], + + "@shikijs/types/@types/hast": ["@types/hast@3.0.5", "", { "dependencies": { "@types/unist": "*" } }, "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g=="], + + "@smithy/core/@smithy/types": ["@smithy/types@4.14.3", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YupL0ZWmFtJexUN2cHzkvvF/b9pKrtAIfT1o7/oY/Ppu8IYeZ+lDPM5vZdQJaSeA132dJCqojjGC9NhXeF71VQ=="], + + "@smithy/credential-provider-imds/@smithy/types": ["@smithy/types@4.14.3", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YupL0ZWmFtJexUN2cHzkvvF/b9pKrtAIfT1o7/oY/Ppu8IYeZ+lDPM5vZdQJaSeA132dJCqojjGC9NhXeF71VQ=="], + + "@smithy/middleware-endpoint/@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "^5.3.14", "@smithy/types": "^4.14.1", "@smithy/url-parser": "^4.2.14", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-middleware": "^4.2.14", "@smithy/util-stream": "^4.5.25", "@smithy/util-utf8": "^4.2.2", "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], + + "@smithy/middleware-retry/@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "^5.3.14", "@smithy/types": "^4.14.1", "@smithy/url-parser": "^4.2.14", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-middleware": "^4.2.14", "@smithy/util-stream": "^4.5.25", "@smithy/util-utf8": "^4.2.2", "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], - "@smithers-orchestrator/agents/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smithy/middleware-serde/@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "^5.3.14", "@smithy/types": "^4.14.1", "@smithy/url-parser": "^4.2.14", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-middleware": "^4.2.14", "@smithy/util-stream": "^4.5.25", "@smithy/util-utf8": "^4.2.2", "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], - "@smithers-orchestrator/cli/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smithy/signature-v4/@smithy/types": ["@smithy/types@4.14.3", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YupL0ZWmFtJexUN2cHzkvvF/b9pKrtAIfT1o7/oY/Ppu8IYeZ+lDPM5vZdQJaSeA132dJCqojjGC9NhXeF71VQ=="], - "@smithers-orchestrator/components/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smithy/smithy-client/@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "^5.3.14", "@smithy/types": "^4.14.1", "@smithy/url-parser": "^4.2.14", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-middleware": "^4.2.14", "@smithy/util-stream": "^4.5.25", "@smithy/util-utf8": "^4.2.2", "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], - "@smithers-orchestrator/control-plane/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smithy/util-defaults-mode-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.2.14", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.14", "@smithy/property-provider": "^4.2.14", "@smithy/types": "^4.14.1", "@smithy/url-parser": "^4.2.14", "tslib": "^2.6.2" } }, "sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg=="], - "@smithers-orchestrator/db/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/accounts/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], - "@smithers-orchestrator/devtools/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/agents/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - "@smithers-orchestrator/driver/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/cli/@smthrs/accounts": ["@smthrs/accounts@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0" } }, "sha512-8kxTIYCC+k+ONlKqhorhN6a2M106y/NA1tiEFM8lpjqJ5UKNumEE2Va07Xu14HLzRZVBSL0kBM7FGY4uxvtsbQ=="], - "@smithers-orchestrator/engine/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/cli/@smthrs/usage": ["@smthrs/usage@0.33.0", "", { "dependencies": { "@smthrs/accounts": "0.33.0" } }, "sha512-dmkr6TdoyeTuXSDTikiQm3O6aOQ9VhzjsHnmlQj4ERT8aDRASp3e2fqDZ0Hp3ciRsrfQZ/z4i6mblwTkue07TA=="], - "@smithers-orchestrator/errors/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/cli/react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="], - "@smithers-orchestrator/gateway/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/cli/yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], - "@smithers-orchestrator/gateway-client/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/cli/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - "@smithers-orchestrator/gateway-react/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/components/react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="], - "@smithers-orchestrator/graph/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/components/react-dom": ["react-dom@19.2.8", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.8" } }, "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ=="], - "@smithers-orchestrator/memory/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/components/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - "@smithers-orchestrator/observability/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/db/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - "@smithers-orchestrator/openapi/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/driver/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - "@smithers-orchestrator/protocol/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/engine/@smthrs/tool-context": ["@smthrs/tool-context@0.33.0", "", { "dependencies": { "ai": "^7.0.10", "zod": "^4.4.3" } }, "sha512-CBgeh7dOefSfGyWnLPYVQOE/sMGwrwIJq625BcMuuTfTZe+2zj9dCBbsBcrdhCzUf9AWzELu6Ja/SOnmWWETeA=="], - "@smithers-orchestrator/react-reconciler/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/engine/react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="], - "@smithers-orchestrator/sandbox/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/engine/react-dom": ["react-dom@19.2.8", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.8" } }, "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ=="], - "@smithers-orchestrator/scheduler/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/engine/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - "@smithers-orchestrator/scorers/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/gateway-client/@smthrs/usage": ["@smthrs/usage@0.33.0", "", { "dependencies": { "@smthrs/accounts": "0.33.0" } }, "sha512-dmkr6TdoyeTuXSDTikiQm3O6aOQ9VhzjsHnmlQj4ERT8aDRASp3e2fqDZ0Hp3ciRsrfQZ/z4i6mblwTkue07TA=="], - "@smithers-orchestrator/server/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/gateway-client/@tanstack/react-query": ["@tanstack/react-query@5.101.2", "", { "dependencies": { "@tanstack/query-core": "5.101.2" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-seDkr6kzGzX1okaaTtZPtgA688CDPlXUz1C6xSg0ESqn04Vuc8tlrYms1s3de+znBqhPVxFRfpAfUf+6XvfPWg=="], - "@smithers-orchestrator/smithers-tui-demo/react": ["react@16.13.1", "", { "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2" } }, "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w=="], + "@smthrs/gateway-react/@tanstack/react-query": ["@tanstack/react-query@5.101.2", "", { "dependencies": { "@tanstack/query-core": "5.101.2" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-seDkr6kzGzX1okaaTtZPtgA688CDPlXUz1C6xSg0ESqn04Vuc8tlrYms1s3de+znBqhPVxFRfpAfUf+6XvfPWg=="], - "@smithers-orchestrator/time-travel/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/graph/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - "@smithers-orchestrator/usage/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/integrations/react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="], - "@smithers-orchestrator/vcs/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "@smthrs/integrations/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - "@smithy/core/@smithy/types": ["@smithy/types@4.14.3", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YupL0ZWmFtJexUN2cHzkvvF/b9pKrtAIfT1o7/oY/Ppu8IYeZ+lDPM5vZdQJaSeA132dJCqojjGC9NhXeF71VQ=="], + "@smthrs/memory/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - "@smithy/credential-provider-imds/@smithy/types": ["@smithy/types@4.14.3", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YupL0ZWmFtJexUN2cHzkvvF/b9pKrtAIfT1o7/oY/Ppu8IYeZ+lDPM5vZdQJaSeA132dJCqojjGC9NhXeF71VQ=="], + "@smthrs/openapi/yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], - "@smithy/middleware-endpoint/@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "^5.3.14", "@smithy/types": "^4.14.1", "@smithy/url-parser": "^4.2.14", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-middleware": "^4.2.14", "@smithy/util-stream": "^4.5.25", "@smithy/util-utf8": "^4.2.2", "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], + "@smthrs/openapi/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - "@smithy/middleware-retry/@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "^5.3.14", "@smithy/types": "^4.14.1", "@smithy/url-parser": "^4.2.14", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-middleware": "^4.2.14", "@smithy/util-stream": "^4.5.25", "@smithy/util-utf8": "^4.2.2", "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], + "@smthrs/pi-plugin/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], - "@smithy/middleware-serde/@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "^5.3.14", "@smithy/types": "^4.14.1", "@smithy/url-parser": "^4.2.14", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-middleware": "^4.2.14", "@smithy/util-stream": "^4.5.25", "@smithy/util-utf8": "^4.2.2", "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], + "@smthrs/react-reconciler/react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="], - "@smithy/signature-v4/@smithy/types": ["@smithy/types@4.14.3", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YupL0ZWmFtJexUN2cHzkvvF/b9pKrtAIfT1o7/oY/Ppu8IYeZ+lDPM5vZdQJaSeA132dJCqojjGC9NhXeF71VQ=="], + "@smthrs/review/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - "@smithy/smithy-client/@smithy/core": ["@smithy/core@3.23.17", "", { "dependencies": { "@smithy/protocol-http": "^5.3.14", "@smithy/types": "^4.14.1", "@smithy/url-parser": "^4.2.14", "@smithy/util-base64": "^4.3.2", "@smithy/util-body-length-browser": "^4.2.2", "@smithy/util-middleware": "^4.2.14", "@smithy/util-stream": "^4.5.25", "@smithy/util-utf8": "^4.2.2", "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" } }, "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ=="], + "@smthrs/scorers/typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="], - "@smithy/util-defaults-mode-node/@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.2.14", "", { "dependencies": { "@smithy/node-config-provider": "^4.3.14", "@smithy/property-provider": "^4.2.14", "@smithy/types": "^4.14.1", "@smithy/url-parser": "^4.2.14", "tslib": "^2.6.2" } }, "sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg=="], + "@smthrs/scorers/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + + "@smthrs/server/@smthrs/accounts": ["@smthrs/accounts@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0" } }, "sha512-8kxTIYCC+k+ONlKqhorhN6a2M106y/NA1tiEFM8lpjqJ5UKNumEE2Va07Xu14HLzRZVBSL0kBM7FGY4uxvtsbQ=="], + + "@smthrs/server/@smthrs/usage": ["@smthrs/usage@0.33.0", "", { "dependencies": { "@smthrs/accounts": "0.33.0" } }, "sha512-dmkr6TdoyeTuXSDTikiQm3O6aOQ9VhzjsHnmlQj4ERT8aDRASp3e2fqDZ0Hp3ciRsrfQZ/z4i6mblwTkue07TA=="], + + "@smthrs/server/react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="], + + "@smthrs/server/react-dom": ["react-dom@19.2.8", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.8" } }, "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ=="], + + "@smthrs/server/ws": ["ws@8.21.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw=="], + + "@smthrs/smithers-tui-demo/react": ["react@16.13.1", "", { "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2" } }, "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w=="], + + "@smthrs/testing/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + + "@smthrs/tool-context/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + + "@smthrs/tui/react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="], + + "@smthrs/tui/react-dom": ["react-dom@19.2.8", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.8" } }, "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ=="], + + "@smthrs/tui-ui/react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="], + + "@smthrs/usage/@smthrs/accounts": ["@smthrs/accounts@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0" } }, "sha512-8kxTIYCC+k+ONlKqhorhN6a2M106y/NA1tiEFM8lpjqJ5UKNumEE2Va07Xu14HLzRZVBSL0kBM7FGY4uxvtsbQ=="], + + "@smthrs/usage/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + + "@smthrs/vcs/@smthrs/jj-darwin-arm64": ["@smthrs/jj-darwin-arm64@0.33.0", "", { "os": "darwin", "cpu": "arm64", "bin": { "jj": "bin/jj" } }, "sha512-7Re3DW+zRzNhqc7yybFQszn06kaQ+h8pziqyf3gw19XnMcCFFYV/PvfkdraeYFdTIABBq8rIl7xX7roO8sn8Mg=="], + + "@smthrs/vcs/@smthrs/jj-darwin-x64": ["@smthrs/jj-darwin-x64@0.33.0", "", { "os": "darwin", "cpu": "x64", "bin": { "jj": "bin/jj" } }, "sha512-9d+Qjpu/81v22ssYG7aNjBbe0RHXBSkWHJiwsLgy42TE0pu7MwqZU1eWahrjm3tZpmO8jVS39u5582SGbitPfA=="], + + "@smthrs/vcs/@smthrs/jj-linux-arm64": ["@smthrs/jj-linux-arm64@0.33.0", "", { "os": "linux", "cpu": "arm64", "bin": { "jj": "bin/jj" } }, "sha512-7ORLYp3bv+bMEuIPeM2JFqnATClxZ603DObILlKgt93SVMngFZrMObAGgp29tB3dpmRcD3Co+Ul5v5BSrxYSAQ=="], + + "@smthrs/vcs/@smthrs/jj-linux-x64": ["@smthrs/jj-linux-x64@0.33.0", "", { "os": "linux", "cpu": "x64", "bin": { "jj": "bin/jj" } }, "sha512-hMkHmBBDr011x21Ot/dd6AFaajaabVdmi6omgOeRAMWwJ73WJMCZEHZ6RVRsH+eNh9xRfufqs6r2VUy9nW1glg=="], + + "@smthrs/vcs/@smthrs/jj-win32-x64": ["@smthrs/jj-win32-x64@0.33.0", "", { "os": "win32", "cpu": "x64", "bin": { "jj": "bin/jj.exe" } }, "sha512-ivJOvwsAeDicx/CZ0z1OudQL+fD8Oir8PmlSJtYM/4A1mRUDj7iAyg+a/yAwGqEUtO4rSaSpiuiTyUfQsg3UWw=="], + + "@smthrs/xstate/react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="], "@tanstack/ai-client/@tanstack/ai": ["@tanstack/ai@0.28.0", "", { "dependencies": { "@ag-ui/core": "^0.0.52", "@standard-schema/spec": "^1.1.0", "@tanstack/ai-event-client": "0.5.4", "partial-json": "^0.1.7" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0" }, "optionalPeers": ["@opentelemetry/api"] }, "sha512-DT02H5CeqtsdH90bb1hx3zIxboiyMjuQPzbj7ov3uVkMWIFjuCjhgJbc7w27AY38ewd4d8G63QHYj4AnMSEB9Q=="], @@ -2873,6 +3243,12 @@ "@tanstack/ai-react/@tanstack/ai": ["@tanstack/ai@0.28.0", "", { "dependencies": { "@ag-ui/core": "^0.0.52", "@standard-schema/spec": "^1.1.0", "@tanstack/ai-event-client": "0.5.4", "partial-json": "^0.1.7" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0" }, "optionalPeers": ["@opentelemetry/api"] }, "sha512-DT02H5CeqtsdH90bb1hx3zIxboiyMjuQPzbj7ov3uVkMWIFjuCjhgJbc7w27AY38ewd4d8G63QHYj4AnMSEB9Q=="], + "@vue/compiler-core/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + + "@vue/compiler-sfc/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + + "@vue/compiler-sfc/postcss": ["postcss@8.5.25", "", { "dependencies": { "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw=="], + "@xyflow/react/zustand": ["zustand@4.5.7", "", { "dependencies": { "use-sync-external-store": "^1.2.2" }, "peerDependencies": { "@types/react": ">=16.8", "immer": ">=9.0.6", "react": ">=16.8" }, "optionalPeers": ["@types/react", "immer", "react"] }, "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw=="], "alchemy/@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.7.7", "", { "peerDependencies": { "unenv": "2.0.0-rc.21", "workerd": "^1.20250927.0" }, "optionalPeers": ["workerd"] }, "sha512-HtZuh166y0Olbj9bqqySckz0Rw9uHjggJeoGbDx5x+sgezBXlxO6tQSig2RZw5tgObF8mWI8zaPvQMkQZtAODw=="], @@ -2885,16 +3261,26 @@ "alchemy/unenv": ["unenv@2.0.0-rc.21", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.7", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.6.1" } }, "sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A=="], - "alchemy/ws": ["ws@8.20.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w=="], - "cli-highlight/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + "cliui/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "cloudflare/@types/node": ["@types/node@18.19.130", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg=="], "cross-spawn-windows-exe/is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="], + "cytoscape-fcose/cose-base": ["cose-base@2.2.0", "", { "dependencies": { "layout-base": "^2.0.0" } }, "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g=="], + + "d3-dsv/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], + + "d3-dsv/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + + "d3-sankey/d3-array": ["d3-array@2.12.1", "", { "dependencies": { "internmap": "^1.0.0" } }, "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ=="], + + "d3-sankey/d3-shape": ["d3-shape@1.3.7", "", { "dependencies": { "d3-path": "1" } }, "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw=="], + "ecdsa-sig-formatter/safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], "electrobun/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], @@ -2913,16 +3299,30 @@ "gaxios/node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], + "happy-dom/ws": ["ws@8.20.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA=="], + + "hast-util-to-html/@types/hast": ["@types/hast@3.0.5", "", { "dependencies": { "@types/unist": "*" } }, "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g=="], + + "incur/@toon-format/toon": ["@toon-format/toon@2.1.0", "", {}, "sha512-JwWptdF5eOA0HaQxbKAzkpQtR4wSWTEfDlEy/y3/4okmOAX1qwnpLZMmtEWr+ncAhTTY1raCKH0kteHhSXnQqg=="], + + "incur/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "jwa/safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], "jws/safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], + "katex/commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], + + "mdast-util-math/@types/hast": ["@types/hast@3.0.5", "", { "dependencies": { "@types/unist": "*" } }, "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g=="], + + "mermaid/marked": ["marked@16.4.2", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA=="], + + "mermaid/uuid": ["uuid@14.0.0", "", { "bin": { "uuid": "dist-node/bin/uuid" } }, "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg=="], + "micromatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], "miniflare/undici": ["undici@7.24.8", "", {}, "sha512-6KQ/+QxK49Z/p3HO6E5ZCZWNnCasyZLa5ExaVYyvPxUwKtbCPMKELJOqh7EqOle0t9cH/7d2TaaTRRa6Nhs4YQ=="], - "miniflare/ws": ["ws@8.20.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w=="], - "npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], "p-retry/retry": ["retry@0.13.1", "", {}, "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="], @@ -2939,42 +3339,62 @@ "patch-package/yaml": ["yaml@1.10.3", "", {}, "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA=="], - "playwright/fsevents": ["fsevents@2.3.2", "", { "os": "darwin" }, "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="], - "png-to-ico/@types/node": ["@types/node@17.0.45", "", {}, "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw=="], "proper-lockfile/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], "proxy-agent/lru-cache": ["lru-cache@7.18.3", "", {}, "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA=="], + "react-devtools-core/ws": ["ws@7.5.13", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA=="], + "rimraf/glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], + "rollup/fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + "router/path-to-regexp": ["path-to-regexp@8.4.2", "", {}, "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA=="], "sharp/semver": ["semver@7.8.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-c8jsqUZm3omBOI66G90z1Dyw5z622G8oLG+omfsHBJf3CWQTlOcwOjvOG6wtiNfW6anKm/eA39LMwMtMez2TiQ=="], - "smithers-orchestrator/@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], + "shiki/@types/hast": ["@types/hast@3.0.5", "", { "dependencies": { "@types/unist": "*" } }, "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g=="], "smithers-workflows/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], + "smthrs/@smthrs/tool-context": ["@smthrs/tool-context@0.33.0", "", { "dependencies": { "ai": "^7.0.10", "zod": "^4.4.3" } }, "sha512-CBgeh7dOefSfGyWnLPYVQOE/sMGwrwIJq625BcMuuTfTZe+2zj9dCBbsBcrdhCzUf9AWzELu6Ja/SOnmWWETeA=="], + + "smthrs/react": ["react@19.2.8", "", {}, "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw=="], + + "smthrs/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "socks/ip-address": ["ip-address@10.1.1", "", {}, "sha512-1FMu8/N15Ck1BL551Jf42NYIoin2unWjLQ2Fze/DXryJRl5twqtwNHlO39qERGbIOcKYWHdgRryhOC+NG4eaLw=="], - "string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "string-width-cjs/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "string-width-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "strip-ansi-cjs/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "tsx/esbuild": ["esbuild@0.28.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.0", "@esbuild/android-arm": "0.28.0", "@esbuild/android-arm64": "0.28.0", "@esbuild/android-x64": "0.28.0", "@esbuild/darwin-arm64": "0.28.0", "@esbuild/darwin-x64": "0.28.0", "@esbuild/freebsd-arm64": "0.28.0", "@esbuild/freebsd-x64": "0.28.0", "@esbuild/linux-arm": "0.28.0", "@esbuild/linux-arm64": "0.28.0", "@esbuild/linux-ia32": "0.28.0", "@esbuild/linux-loong64": "0.28.0", "@esbuild/linux-mips64el": "0.28.0", "@esbuild/linux-ppc64": "0.28.0", "@esbuild/linux-riscv64": "0.28.0", "@esbuild/linux-s390x": "0.28.0", "@esbuild/linux-x64": "0.28.0", "@esbuild/netbsd-arm64": "0.28.0", "@esbuild/netbsd-x64": "0.28.0", "@esbuild/openbsd-arm64": "0.28.0", "@esbuild/openbsd-x64": "0.28.0", "@esbuild/openharmony-arm64": "0.28.0", "@esbuild/sunos-x64": "0.28.0", "@esbuild/win32-arm64": "0.28.0", "@esbuild/win32-ia32": "0.28.0", "@esbuild/win32-x64": "0.28.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw=="], + "tsup/esbuild": ["esbuild@0.27.7", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.7", "@esbuild/android-arm": "0.27.7", "@esbuild/android-arm64": "0.27.7", "@esbuild/android-x64": "0.27.7", "@esbuild/darwin-arm64": "0.27.7", "@esbuild/darwin-x64": "0.27.7", "@esbuild/freebsd-arm64": "0.27.7", "@esbuild/freebsd-x64": "0.27.7", "@esbuild/linux-arm": "0.27.7", "@esbuild/linux-arm64": "0.27.7", "@esbuild/linux-ia32": "0.27.7", "@esbuild/linux-loong64": "0.27.7", "@esbuild/linux-mips64el": "0.27.7", "@esbuild/linux-ppc64": "0.27.7", "@esbuild/linux-riscv64": "0.27.7", "@esbuild/linux-s390x": "0.27.7", "@esbuild/linux-x64": "0.27.7", "@esbuild/netbsd-arm64": "0.27.7", "@esbuild/netbsd-x64": "0.27.7", "@esbuild/openbsd-arm64": "0.27.7", "@esbuild/openbsd-x64": "0.27.7", "@esbuild/openharmony-arm64": "0.27.7", "@esbuild/sunos-x64": "0.27.7", "@esbuild/win32-arm64": "0.27.7", "@esbuild/win32-ia32": "0.27.7", "@esbuild/win32-x64": "0.27.7" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w=="], + + "tsx/fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "vite/fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], "vitest/tinyexec": ["tinyexec@1.2.3", "", {}, "sha512-g62dB+w1/OEFnPvmX0yd/HnetYITOL+1nJW7kitOycOeAvmbWC/nu0fwmmQ/kupNojqExzyC/T++pST/jRJ2mQ=="], "wrangler/esbuild": ["esbuild@0.27.3", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.27.3", "@esbuild/android-arm": "0.27.3", "@esbuild/android-arm64": "0.27.3", "@esbuild/android-x64": "0.27.3", "@esbuild/darwin-arm64": "0.27.3", "@esbuild/darwin-x64": "0.27.3", "@esbuild/freebsd-arm64": "0.27.3", "@esbuild/freebsd-x64": "0.27.3", "@esbuild/linux-arm": "0.27.3", "@esbuild/linux-arm64": "0.27.3", "@esbuild/linux-ia32": "0.27.3", "@esbuild/linux-loong64": "0.27.3", "@esbuild/linux-mips64el": "0.27.3", "@esbuild/linux-ppc64": "0.27.3", "@esbuild/linux-riscv64": "0.27.3", "@esbuild/linux-s390x": "0.27.3", "@esbuild/linux-x64": "0.27.3", "@esbuild/netbsd-arm64": "0.27.3", "@esbuild/netbsd-x64": "0.27.3", "@esbuild/openbsd-arm64": "0.27.3", "@esbuild/openbsd-x64": "0.27.3", "@esbuild/openharmony-arm64": "0.27.3", "@esbuild/sunos-x64": "0.27.3", "@esbuild/win32-arm64": "0.27.3", "@esbuild/win32-ia32": "0.27.3", "@esbuild/win32-x64": "0.27.3" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg=="], + "wrangler/fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "wrap-ansi/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "wrap-ansi-cjs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "wrap-ansi-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "yargs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], + "youch/cookie": ["cookie@1.1.1", "", {}, "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ=="], "@aws-crypto/sha256-browser/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="], @@ -3023,64 +3443,30 @@ "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + "@milkdown/crepe/katex/commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], + "@octokit/plugin-paginate-rest/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@24.2.0", "", {}, "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg=="], "@octokit/plugin-rest-endpoint-methods/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@24.2.0", "", {}, "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg=="], - "@smithers-orchestrator/accounts/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/agents/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/cli/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/components/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/control-plane/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/db/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/devtools/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/driver/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/engine/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/errors/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/gateway-client/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/gateway-react/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/gateway/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/graph/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/memory/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/observability/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], + "@smthrs/accounts/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - "@smithers-orchestrator/openapi/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], + "@smthrs/gateway-client/@smthrs/usage/@smthrs/accounts": ["@smthrs/accounts@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0" } }, "sha512-8kxTIYCC+k+ONlKqhorhN6a2M106y/NA1tiEFM8lpjqJ5UKNumEE2Va07Xu14HLzRZVBSL0kBM7FGY4uxvtsbQ=="], - "@smithers-orchestrator/protocol/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], + "@smthrs/gateway-client/@tanstack/react-query/@tanstack/query-core": ["@tanstack/query-core@5.101.2", "", {}, "sha512-hH5MLoJhF7KaIGd7q3xTXGXvslI+GYlM1Z/35aSHHWaCJWB7XvTSHYuV3eM7tw+aE0mT/xMro4M4Q9rCGHT0lw=="], - "@smithers-orchestrator/react-reconciler/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], + "@smthrs/gateway-react/@tanstack/react-query/@tanstack/query-core": ["@tanstack/query-core@5.101.2", "", {}, "sha512-hH5MLoJhF7KaIGd7q3xTXGXvslI+GYlM1Z/35aSHHWaCJWB7XvTSHYuV3eM7tw+aE0mT/xMro4M4Q9rCGHT0lw=="], - "@smithers-orchestrator/sandbox/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], + "@smthrs/pi-plugin/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - "@smithers-orchestrator/scheduler/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], + "@smthrs/tool-context/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - "@smithers-orchestrator/scorers/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/server/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/time-travel/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/usage/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - - "@smithers-orchestrator/vcs/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], + "@smthrs/usage/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], "@tanstack/ai-react/@tanstack/ai/@tanstack/ai-event-client": ["@tanstack/ai-event-client@0.5.4", "", { "dependencies": { "@tanstack/devtools-event-client": "^0.4.1" }, "peerDependencies": { "@tanstack/ai": "0.28.0" } }, "sha512-DoF6LKkGCVeF0N6Vky3DdhYxseTZfvTpOkhEQud/Za/GLQ+5p1xH4egQX8oZJkx1S6HZEZTQA1hKSGFYGULtFw=="], + "@vue/compiler-sfc/postcss/nanoid": ["nanoid@3.3.16", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q=="], + "alchemy/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], "alchemy/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], @@ -3143,12 +3529,20 @@ "alchemy/miniflare/ws": ["ws@8.18.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="], + "cliui/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], "cloudflare/@types/node/undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="], "cross-spawn-windows-exe/is-wsl/is-docker": ["is-docker@2.2.1", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="], + "cytoscape-fcose/cose-base/layout-base": ["layout-base@2.0.1", "", {}, "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="], + + "d3-sankey/d3-array/internmap": ["internmap@1.0.1", "", {}, "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="], + + "d3-sankey/d3-shape/d3-path": ["d3-path@1.0.9", "", {}, "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="], + "electrobun/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], "form-data/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], @@ -3167,63 +3561,59 @@ "rimraf/glob/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], - "smithers-orchestrator/@types/bun/bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - "string-width-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "tsup/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.7", "", { "os": "aix", "cpu": "ppc64" }, "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg=="], - "tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA=="], + "tsup/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.27.7", "", { "os": "android", "cpu": "arm" }, "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ=="], - "tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.0", "", { "os": "android", "cpu": "arm" }, "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ=="], + "tsup/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.27.7", "", { "os": "android", "cpu": "arm64" }, "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ=="], - "tsx/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.0", "", { "os": "android", "cpu": "arm64" }, "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw=="], + "tsup/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.27.7", "", { "os": "android", "cpu": "x64" }, "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg=="], - "tsx/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.0", "", { "os": "android", "cpu": "x64" }, "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA=="], + "tsup/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.27.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw=="], - "tsx/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q=="], + "tsup/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.27.7", "", { "os": "darwin", "cpu": "x64" }, "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ=="], - "tsx/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ=="], + "tsup/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.27.7", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w=="], - "tsx/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q=="], + "tsup/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.27.7", "", { "os": "freebsd", "cpu": "x64" }, "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ=="], - "tsx/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw=="], + "tsup/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.27.7", "", { "os": "linux", "cpu": "arm" }, "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA=="], - "tsx/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.0", "", { "os": "linux", "cpu": "arm" }, "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw=="], + "tsup/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.27.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A=="], - "tsx/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A=="], + "tsup/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.27.7", "", { "os": "linux", "cpu": "ia32" }, "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg=="], - "tsx/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ=="], + "tsup/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.27.7", "", { "os": "linux", "cpu": "none" }, "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q=="], - "tsx/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg=="], + "tsup/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.27.7", "", { "os": "linux", "cpu": "none" }, "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw=="], - "tsx/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w=="], + "tsup/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.27.7", "", { "os": "linux", "cpu": "ppc64" }, "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ=="], - "tsx/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg=="], + "tsup/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.27.7", "", { "os": "linux", "cpu": "none" }, "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ=="], - "tsx/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ=="], + "tsup/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.27.7", "", { "os": "linux", "cpu": "s390x" }, "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw=="], - "tsx/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q=="], + "tsup/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.27.7", "", { "os": "linux", "cpu": "x64" }, "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA=="], - "tsx/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.0", "", { "os": "linux", "cpu": "x64" }, "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ=="], + "tsup/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.27.7", "", { "os": "none", "cpu": "arm64" }, "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w=="], - "tsx/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.0", "", { "os": "none", "cpu": "arm64" }, "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw=="], + "tsup/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.27.7", "", { "os": "none", "cpu": "x64" }, "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw=="], - "tsx/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.0", "", { "os": "none", "cpu": "x64" }, "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw=="], + "tsup/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.27.7", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A=="], - "tsx/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g=="], + "tsup/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.27.7", "", { "os": "openbsd", "cpu": "x64" }, "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg=="], - "tsx/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA=="], + "tsup/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.27.7", "", { "os": "none", "cpu": "arm64" }, "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw=="], - "tsx/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.0", "", { "os": "none", "cpu": "arm64" }, "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w=="], + "tsup/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.27.7", "", { "os": "sunos", "cpu": "x64" }, "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA=="], - "tsx/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw=="], + "tsup/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.27.7", "", { "os": "win32", "cpu": "arm64" }, "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA=="], - "tsx/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA=="], + "tsup/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.27.7", "", { "os": "win32", "cpu": "ia32" }, "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw=="], - "tsx/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA=="], - - "tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.0", "", { "os": "win32", "cpu": "x64" }, "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw=="], + "tsup/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.7", "", { "os": "win32", "cpu": "x64" }, "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg=="], "wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.27.3", "", { "os": "aix", "cpu": "ppc64" }, "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg=="], @@ -3277,10 +3667,18 @@ "wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.27.3", "", { "os": "win32", "cpu": "x64" }, "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA=="], + "wrap-ansi-cjs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "wrap-ansi-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "wrap-ansi/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "yargs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "yargs/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "@aws-crypto/sha256-browser/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="], "@aws-crypto/util/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="], @@ -3315,6 +3713,8 @@ "rimraf/glob/minimatch/brace-expansion": ["brace-expansion@1.1.15", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg=="], + "yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.24", "", { "dependencies": { "@aws-sdk/middleware-sdk-s3": "^3.972.36", "@aws-sdk/types": "^3.973.8", "@smithy/protocol-http": "^5.3.14", "@smithy/signature-v4": "^5.3.14", "@smithy/types": "^4.14.1", "tslib": "^2.6.2" } }, "sha512-amP7tLikppN940wbBFISYqiuzVmpzMS9U3mcgtmVLjX4fdWI/SNCvrXv6ZxfVzTT4cT0rPKOLhFah2xLwzREWw=="], "@aws-sdk/client-bedrock-runtime/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.24", "", { "dependencies": { "@aws-sdk/middleware-sdk-s3": "^3.972.36", "@aws-sdk/types": "^3.973.8", "@smithy/protocol-http": "^5.3.14", "@smithy/signature-v4": "^5.3.14", "@smithy/types": "^4.14.1", "tslib": "^2.6.2" } }, "sha512-amP7tLikppN940wbBFISYqiuzVmpzMS9U3mcgtmVLjX4fdWI/SNCvrXv6ZxfVzTT4cT0rPKOLhFah2xLwzREWw=="], diff --git a/docs/references/smithers/deploy/reference/reference-gateway.mjs b/docs/references/smithers/deploy/reference/reference-gateway.mjs index 3081b58f2..6943f7e72 100644 --- a/docs/references/smithers/deploy/reference/reference-gateway.mjs +++ b/docs/references/smithers/deploy/reference/reference-gateway.mjs @@ -1,7 +1,7 @@ import { existsSync, readFileSync } from "node:fs"; import { resolve } from "node:path"; import { pathToFileURL } from "node:url"; -import { Gateway } from "smithers-orchestrator/gateway"; +import { Gateway } from "smthrs/gateway"; function readTokens() { const tokenStore = process.env.SMITHERS_TOKEN_STORE ?? "/data/tokens.json"; diff --git a/docs/references/smithers/docs/agents/claude-code.mdx b/docs/references/smithers/docs/agents/claude-code.mdx index 5d57e1517..6c37fe705 100644 --- a/docs/references/smithers/docs/agents/claude-code.mdx +++ b/docs/references/smithers/docs/agents/claude-code.mdx @@ -7,8 +7,8 @@ description: Run Smithers from Anthropic's Claude Code — install the skill, re servers**, and **plugins**. Smithers ships into all three. The fastest path: ```bash -bunx smithers-orchestrator skills add --agent claude-code -bunx smithers-orchestrator mcp add --agent claude-code +bunx smthrs skills add --agent claude-code +bunx smthrs mcp add --agent claude-code ``` That installs the Smithers skill set under `~/.claude/skills/` and registers the @@ -43,7 +43,7 @@ the Claude CLI: ```bash claude mcp add --transport stdio --scope user smithers \ - -- bunx smithers-orchestrator --mcp + -- bunx smthrs --mcp ``` Or commit a project-scoped `.mcp.json` so the whole team gets it: @@ -53,7 +53,7 @@ Or commit a project-scoped `.mcp.json` so the whole team gets it: "mcpServers": { "smithers": { "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"] + "args": ["smthrs", "--mcp"] } } } @@ -75,7 +75,7 @@ A plugin bundles the skill and MCP server behind a single install, namespaced as "description": "Durable control plane for long-running coding agents", "skills": ["skills/smithers"], "mcpServers": { - "smithers": { "command": "bunx", "args": ["smithers-orchestrator", "--mcp"] } + "smithers": { "command": "bunx", "args": ["smthrs", "--mcp"] } } } ``` @@ -99,7 +99,7 @@ multi-step work: ```md ## Orchestration For multi-step, long-running, or human-in-the-loop agent work, use Smithers: -`bunx smithers-orchestrator starters` lists ready-made workflows. +`bunx smthrs starters` lists ready-made workflows. ``` ## Smithers runs Claude Code too @@ -108,7 +108,7 @@ In the other direction, Smithers spawns Claude Code as a worker inside a workflow via `ClaudeCodeAgent`, with native session hijack: ```tsx -import { ClaudeCodeAgent } from "smithers-orchestrator"; +import { ClaudeCodeAgent } from "smthrs"; const claude = new ClaudeCodeAgent({ model: "claude-sonnet-4-20250514" }); ``` diff --git a/docs/references/smithers/docs/agents/codex.mdx b/docs/references/smithers/docs/agents/codex.mdx index f39928eb2..6a3dde814 100644 --- a/docs/references/smithers/docs/agents/codex.mdx +++ b/docs/references/smithers/docs/agents/codex.mdx @@ -8,8 +8,8 @@ description: Run Smithers from OpenAI's Codex CLI — install the skill, registe instructions. Wire up all three in one step: ```bash -bunx smithers-orchestrator skills add --agent codex -bunx smithers-orchestrator mcp add --agent codex +bunx smthrs skills add --agent codex +bunx smthrs mcp add --agent codex ``` That installs the Smithers skill set into `~/.codex/skills/` and registers the @@ -39,13 +39,13 @@ Codex auto-selects a skill by its `description`, or you invoke it explicitly wit ```toml [mcp_servers.smithers] command = "bunx" -args = ["smithers-orchestrator", "--mcp"] +args = ["smthrs", "--mcp"] ``` Or use the Codex CLI: ```bash -codex mcp add smithers -- bunx smithers-orchestrator --mcp +codex mcp add smithers -- bunx smthrs --mcp ``` Codex launches the server at session start and the semantic tools @@ -60,8 +60,8 @@ section so Codex knows to reach for Smithers: ```md ## Orchestration Use Smithers for durable, multi-step, or human-in-the-loop agent work. -Run `bunx smithers-orchestrator starters` to see ready-made workflows, -then `bunx smithers-orchestrator workflow run <name> --prompt "…"`. +Run `bunx smthrs starters` to see ready-made workflows, +then `bunx smthrs workflow run <name> --prompt "…"`. ``` This same `AGENTS.md` is read by Cursor, Copilot, Hermes, and Pi — one file @@ -73,7 +73,7 @@ In the other direction, Smithers spawns Codex as a worker via `CodexAgent` (`codex exec` with a streamed JSON protocol and native thread hijack): ```tsx -import { CodexAgent } from "smithers-orchestrator"; +import { CodexAgent } from "smthrs"; const codex = new CodexAgent({ model: "gpt-5.3-codex", sandbox: "workspace-write" }); ``` diff --git a/docs/references/smithers/docs/agents/copilot.mdx b/docs/references/smithers/docs/agents/copilot.mdx index 07820e738..7665a1211 100644 --- a/docs/references/smithers/docs/agents/copilot.mdx +++ b/docs/references/smithers/docs/agents/copilot.mdx @@ -9,7 +9,7 @@ two surfaces with *different* MCP schemas — the in-editor agent (VS Code) and autonomous coding agent (cloud) — so they're covered separately below. ```bash -bunx smithers-orchestrator skills add --agent copilot +bunx smthrs skills add --agent copilot ``` That installs the Smithers skill set under `~/.copilot/skills/`. @@ -25,7 +25,7 @@ requires a `type`: "smithers": { "type": "stdio", "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"] + "args": ["smthrs", "--mcp"] } } } @@ -45,7 +45,7 @@ agent → MCP configuration**. It uses a different schema — `mcpServers`, a "smithers": { "type": "local", "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"], + "args": ["smthrs", "--mcp"], "tools": ["*"] } } @@ -64,7 +64,7 @@ agent, `AGENTS.md`. Add a section pointing at Smithers: ```md ## Orchestration Use Smithers for durable, multi-step, or human-in-the-loop agent work. -`bunx smithers-orchestrator starters` lists ready-made workflows. +`bunx smthrs starters` lists ready-made workflows. ``` For a slash command, drop a prompt file at `.github/prompts/smithers.prompt.md`. diff --git a/docs/references/smithers/docs/agents/cursor.mdx b/docs/references/smithers/docs/agents/cursor.mdx index 10e1a0683..f8a2ac971 100644 --- a/docs/references/smithers/docs/agents/cursor.mdx +++ b/docs/references/smithers/docs/agents/cursor.mdx @@ -8,8 +8,8 @@ description: Run Smithers from Cursor — register the MCP server, install the s them. ```bash -bunx smithers-orchestrator skills add --agent cursor -bunx smithers-orchestrator mcp add --agent cursor +bunx smthrs skills add --agent cursor +bunx smthrs mcp add --agent cursor ``` That installs the skill set under `~/.cursor/skills/` and registers the MCP @@ -26,7 +26,7 @@ note Cursor uses the `mcpServers` key: "mcpServers": { "smithers": { "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"] + "args": ["smthrs", "--mcp"] } } } @@ -61,7 +61,7 @@ globs: .smithers/**/* alwaysApply: false --- Smithers is a durable control plane for long-running coding agents. -Run `bunx smithers-orchestrator starters` to list ready-made workflows. +Run `bunx smthrs starters` to list ready-made workflows. ``` Cursor also reads a plain `AGENTS.md` at the repo root as a simpler alternative — diff --git a/docs/references/smithers/docs/agents/hermes.mdx b/docs/references/smithers/docs/agents/hermes.mdx index b159a428e..7b5254f3a 100644 --- a/docs/references/smithers/docs/agents/hermes.mdx +++ b/docs/references/smithers/docs/agents/hermes.mdx @@ -15,7 +15,7 @@ The fastest path is `mcp add` — Smithers writes its server straight into Herme `~/.hermes/config.yaml`: ```bash -bunx smithers-orchestrator mcp add --agent hermes +bunx smthrs mcp add --agent hermes ``` To do it by hand, Hermes reads MCP servers from `~/.hermes/config.yaml` under @@ -25,7 +25,7 @@ To do it by hand, Hermes reads MCP servers from `~/.hermes/config.yaml` under mcp_servers: smithers: command: bunx - args: ["smithers-orchestrator", "--mcp"] + args: ["smthrs", "--mcp"] ``` Or use the Hermes CLI: @@ -64,7 +64,7 @@ repo already uses: ```md ## Orchestration Use Smithers for durable, multi-step, or human-in-the-loop agent work. -`bunx smithers-orchestrator starters` lists ready-made workflows. +`bunx smthrs starters` lists ready-made workflows. ``` ## See also diff --git a/docs/references/smithers/docs/agents/openclaw.mdx b/docs/references/smithers/docs/agents/openclaw.mdx index c89348af4..9b1b4bccb 100644 --- a/docs/references/smithers/docs/agents/openclaw.mdx +++ b/docs/references/smithers/docs/agents/openclaw.mdx @@ -14,7 +14,7 @@ The fastest path is `mcp add` — Smithers writes its server straight into OpenClaw's `~/.openclaw/openclaw.json`: ```bash -bunx smithers-orchestrator mcp add --agent openclaw +bunx smthrs mcp add --agent openclaw ``` To do it by hand, OpenClaw stores MCP servers in `~/.openclaw/openclaw.json` under @@ -26,7 +26,7 @@ To do it by hand, OpenClaw stores MCP servers in `~/.openclaw/openclaw.json` und "servers": { "smithers": { "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"] + "args": ["smthrs", "--mcp"] } } } @@ -36,7 +36,7 @@ To do it by hand, OpenClaw stores MCP servers in `~/.openclaw/openclaw.json` und Or manage it from the CLI: ```bash -openclaw mcp set smithers '{"command":"bunx","args":["smithers-orchestrator","--mcp"]}' +openclaw mcp set smithers '{"command":"bunx","args":["smthrs","--mcp"]}' openclaw mcp list ``` @@ -50,7 +50,7 @@ OpenClaw discovers skills from `~/.agents/skills/` (among other locations), whic is exactly where the cross-agent command installs them: ```bash -bunx smithers-orchestrator skills add +bunx smthrs skills add ``` Or place the onboarding skill there by hand: diff --git a/docs/references/smithers/docs/agents/overview.mdx b/docs/references/smithers/docs/agents/overview.mdx index 5eefc3a62..318913295 100644 --- a/docs/references/smithers/docs/agents/overview.mdx +++ b/docs/references/smithers/docs/agents/overview.mdx @@ -32,18 +32,18 @@ agent it detects on your machine — no per-agent config by hand. ```bash # Install the Smithers skill set into every detected agent # (Claude Code, Codex, Cursor, Copilot, Gemini, OpenCode, Amp, Windsurf, …) -bunx smithers-orchestrator skills add +bunx smthrs skills add # Register Smithers as an MCP server in every detected agent -bunx smithers-orchestrator mcp add +bunx smthrs mcp add ``` Target a single agent with `--agent`, or scope to the current project with `--no-global`: ```bash -bunx smithers-orchestrator mcp add --agent cursor -bunx smithers-orchestrator skills add --no-global # writes .agents/skills in the repo +bunx smthrs mcp add --agent cursor +bunx smthrs skills add --no-global # writes .agents/skills in the repo ``` <Note> @@ -51,7 +51,7 @@ bunx smithers-orchestrator skills add --no-global # writes .agents/skills in t `smithers approve`, …) and installs them to the canonical `~/.agents/skills` directory, symlinking into each agent that uses its own path (Claude Code → `~/.claude/skills`, Windsurf → `~/.codeium/windsurf/skills`, …). `mcp add` -registers `bunx smithers-orchestrator --mcp` in each agent's MCP config. Override +registers `bunx smthrs --mcp` in each agent's MCP config. Override the launch command with `--command` if Smithers is a project dependency. </Note> diff --git a/docs/references/smithers/docs/agents/pi.mdx b/docs/references/smithers/docs/agents/pi.mdx index 79026805d..e9f6e48a4 100644 --- a/docs/references/smithers/docs/agents/pi.mdx +++ b/docs/references/smithers/docs/agents/pi.mdx @@ -17,7 +17,7 @@ MCP server. ## The pi-plugin (recommended) -`@smithers-orchestrator/pi-plugin` wraps the Smithers control plane as a Pi +`@smthrs/pi-plugin` wraps the Smithers control plane as a Pi extension. It registers tools to launch, approve, deny, cancel, and stream workflow runs, and renders the run inspector inline. This is the tightest integration Smithers ships — Pi becomes a full Smithers operator console. @@ -31,7 +31,7 @@ If you want the lighter path, `skills add` installs the Smithers skill set into Pi's directory for you: ```bash -bunx smithers-orchestrator skills add --agent pi +bunx smthrs skills add --agent pi ``` Pi reads skills from `~/.pi/agent/skills/` (global) or `.pi/skills/` (project), @@ -56,7 +56,7 @@ orchestration section the same way you would for Codex or Cursor: ```md ## Orchestration Use Smithers for durable, multi-step, or human-in-the-loop agent work. -`bunx smithers-orchestrator starters` lists ready-made workflows. +`bunx smthrs starters` lists ready-made workflows. ``` ## Smithers runs Pi too @@ -65,7 +65,7 @@ In the other direction, Smithers spawns Pi as a worker via `PiAgent`, including its `text` / `json` / `rpc` modes and extension-UI hook callbacks: ```tsx -import { PiAgent } from "smithers-orchestrator"; +import { PiAgent } from "smthrs"; const pi = new PiAgent({ provider: "openai", model: "gpt-5.2-codex" }); ``` diff --git a/docs/references/smithers/docs/agents/setup.mdx b/docs/references/smithers/docs/agents/setup.mdx index 894735cb7..4b3b0188c 100644 --- a/docs/references/smithers/docs/agents/setup.mdx +++ b/docs/references/smithers/docs/agents/setup.mdx @@ -17,12 +17,12 @@ MCP server, then reports which starter fits your next task. ```text Setup prompt Set up Smithers (a durable AI workflow orchestrator) in this repo for me. -1. Run `bunx smithers-orchestrator init` to scaffold `.smithers/`. +1. Run `bunx smthrs init` to scaffold `.smithers/`. 2. Install the Smithers skill and register its MCP server for the agent you are: - `bunx smithers-orchestrator skills add` - `bunx smithers-orchestrator mcp add` -3. Read `bunx smithers-orchestrator docs` so you know the CLI verbs and components. -4. Run `bunx smithers-orchestrator starters` and tell me which workflow fits the + `bunx smthrs skills add` + `bunx smthrs mcp add` +3. Read `bunx smthrs docs` so you know the CLI verbs and components. +4. Run `bunx smthrs starters` and tell me which workflow fits the task I describe next. From now on, when I ask for multi-step, long-running, or human-in-the-loop work, @@ -38,26 +38,26 @@ OpenCode, Amp, Windsurf, and ~20 more at once. ```bash # 1. Scaffold the workflow pack into .smithers/ -bunx smithers-orchestrator init +bunx smthrs init # 2. Teach every detected agent the Smithers skill set -bunx smithers-orchestrator skills add +bunx smthrs skills add # 3. Register Smithers as an MCP server in every detected agent -bunx smithers-orchestrator mcp add +bunx smthrs mcp add ``` Scope either install with `--agent <name>` for one harness, or `--no-global` to write into the current repo instead of your home directory: ```bash -bunx smithers-orchestrator mcp add --agent cursor -bunx smithers-orchestrator skills add --no-global +bunx smthrs mcp add --agent cursor +bunx smthrs skills add --no-global ``` <Note> -No skills directory in your agent? Point it at `bunx smithers-orchestrator docs-full` -(prints the full docs bundle) or `bunx smithers-orchestrator ask "<question>"`, +No skills directory in your agent? Point it at `bunx smthrs docs-full` +(prints the full docs bundle) or `bunx smthrs ask "<question>"`, and add a few standing lines to `AGENTS.md` or `CLAUDE.md` so it remembers Smithers is available. </Note> @@ -84,8 +84,8 @@ standing instructions) live in [Agent Support](/agents/overview). Ask your agent to list the workflows, or run it yourself: ```bash -bunx smithers-orchestrator workflow list -bunx smithers-orchestrator starters +bunx smthrs workflow list +bunx smthrs starters ``` If the MCP server registered, the agent can now call `list_workflows`, diff --git a/docs/references/smithers/docs/changelogs/0.14.0.mdx b/docs/references/smithers/docs/changelogs/0.14.0.mdx index ea0b2328f..04c7f588f 100644 --- a/docs/references/smithers/docs/changelogs/0.14.0.mdx +++ b/docs/references/smithers/docs/changelogs/0.14.0.mdx @@ -65,7 +65,7 @@ tasks. ``` ```bash -bunx smithers-orchestrator signal abc123 user-feedback --data '{"rating": 5}' +bunx smthrs signal abc123 user-feedback --data '{"rating": 5}' ``` --- @@ -78,7 +78,7 @@ A diagnostic engine that calculates exactly what's blocking a run and tells you how to fix it. ``` -$ bunx smithers-orchestrator why abc123 +$ bunx smthrs why abc123 Run abc123 is waiting-approval Blocked node: review-gate Reason: Approval requested — no decision yet @@ -94,7 +94,7 @@ Filter by node, category, or time. Events stream incrementally so you never run out of memory on large runs. ```bash -bunx smithers-orchestrator events abc123 --type approval --since 5m +bunx smthrs events abc123 --type approval --since 5m ``` ### `smithers node` — Deep-dive into a single node @@ -103,7 +103,7 @@ Aggregates task attempts, tool calls, schema validation errors, Zod-validated outputs, and token usage with pricing. ```bash -bunx smithers-orchestrator node review-step -r abc123 --tools --attempts +bunx smthrs node review-step -r abc123 --tools --attempts ``` ### `--watch` flag @@ -111,7 +111,7 @@ bunx smithers-orchestrator node review-step -r abc123 --tools --attempts Live-updating views for `ps`, `inspect`, and `events`. ```bash -bunx smithers-orchestrator ps --watch --interval 2 +bunx smthrs ps --watch --interval 2 ``` --- @@ -133,7 +133,7 @@ bunx smithers-orchestrator ps --watch --interval 2 and resumes them automatically. Atomic DB claim lock prevents concurrent supervisor races. ```bash - bunx smithers-orchestrator supervise + bunx smthrs supervise ``` --- diff --git a/docs/references/smithers/docs/changelogs/0.15.0.mdx b/docs/references/smithers/docs/changelogs/0.15.0.mdx index 5bc9b5020..1c6ef8484 100644 --- a/docs/references/smithers/docs/changelogs/0.15.0.mdx +++ b/docs/references/smithers/docs/changelogs/0.15.0.mdx @@ -23,7 +23,7 @@ the Gateway is how you do it. ### Quick start ```ts -import { SmithersGateway } from "smithers-orchestrator/gateway"; +import { SmithersGateway } from "smthrs/gateway"; const gateway = new SmithersGateway({ auth: { diff --git a/docs/references/smithers/docs/changelogs/0.15.1.mdx b/docs/references/smithers/docs/changelogs/0.15.1.mdx index 9c7abe424..2f6893bc8 100644 --- a/docs/references/smithers/docs/changelogs/0.15.1.mdx +++ b/docs/references/smithers/docs/changelogs/0.15.1.mdx @@ -81,7 +81,7 @@ improvement, and a schema-retry bug fix. - Improved crosslinking and added external reference links across 36 documentation pages. -- Fixed CLI command examples to use `bunx smithers-orchestrator`. +- Fixed CLI command examples to use `bunx smthrs`. - Fixed bare `smithers` reference in the gateway page. - Regenerated `docs/llms-full.txt` with internal cross-links to match the current docs manifest. diff --git a/docs/references/smithers/docs/changelogs/0.16.0.mdx b/docs/references/smithers/docs/changelogs/0.16.0.mdx index 290ab2e13..3c7a99129 100644 --- a/docs/references/smithers/docs/changelogs/0.16.0.mdx +++ b/docs/references/smithers/docs/changelogs/0.16.0.mdx @@ -10,7 +10,7 @@ lands alongside a derived `RunState` model for richer run observability. ## Breaking changes - **Runtime is now JavaScript, types live in `.ts` stubs.** Every runtime - package (`smithers-orchestrator`, `engine`, `db`, `driver`, `server`, `cli`, + package (`smthrs`, `engine`, `db`, `driver`, `server`, `cli`, `components`, `react-reconciler`, `agents`, `observability`, `time-travel`, `sandbox`, `scheduler`, `scorers`, `openapi`, `memory`, `vcs`, `graph`, `errors`, `protocol`, and `examples`) has been migrated to `.js` files with @@ -24,8 +24,8 @@ lands alongside a derived `RunState` model for richer run observability. - `packages/rag` and `packages/voice` — dropped from the product surface; matching metrics have been removed from observability. - `packages/tools` — the separate workspace package is gone. Public built-in - helpers remain exported from `smithers-orchestrator` and - `smithers-orchestrator/tools`: `tools`, `read`, `write`, `edit`, `grep`, + helpers remain exported from `smthrs` and + `smthrs/tools`: `tools`, `read`, `write`, `edit`, `grep`, `bash`, `defineTool`, and `getDefinedToolMetadata`. - Python SDK, examples, and integration code — smithers is TypeScript/JS only now. @@ -38,11 +38,11 @@ lands alongside a derived `RunState` model for richer run observability. still exists for integrations that execute Smithers tool helpers manually. - **`observability` moved to `apps/observability`.** It remains the - `@smithers-orchestrator/observability` workspace package, but its source now lives under + `@smthrs/observability` workspace package, but its source now lives under `apps/` with the CLI and other app-owned surfaces. -- **`runtime` package renamed to `driver`.** Imports from `@smithers-orchestrator/runtime` - should move to `@smithers-orchestrator/driver`. Runtime-adjacent helpers have been +- **`runtime` package renamed to `driver`.** Imports from `@smthrs/runtime` + should move to `@smthrs/driver`. Runtime-adjacent helpers have been consolidated into the driver package. - **Engine control APIs return `Effect`.** `engine.start`, `engine.stop`, @@ -184,10 +184,10 @@ Alert policy support now has a concrete storage and operator surface: can be inlined without circular imports. - **Package naming corrected for publish.** The public package is - `smithers-orchestrator`; the private repository root is + `smthrs`; the private repository root is `smithers-monorepo`. -- **Generated workflow imports now use `smithers-orchestrator`.** The CLI +- **Generated workflow imports now use `smthrs`.** The CLI scaffold and E2E fixtures no longer generate stale `smithers` imports. --- diff --git a/docs/references/smithers/docs/changelogs/0.16.1.mdx b/docs/references/smithers/docs/changelogs/0.16.1.mdx index 91a738c54..22ea4e97d 100644 --- a/docs/references/smithers/docs/changelogs/0.16.1.mdx +++ b/docs/references/smithers/docs/changelogs/0.16.1.mdx @@ -7,10 +7,10 @@ and bump every workspace dependency to latest. ## New -- **`smithers-orchestrator` exposes a `smithers` bin.** A new +- **`smthrs` exposes a `smithers` bin.** A new `src/bin/smithers.js` entry is wired up via the package's `bin` field so `npx smithers` (and `smithers` after a global install) launches the CLI - without needing to import `@smithers-orchestrator/cli` directly. + without needing to import `@smthrs/cli` directly. --- diff --git a/docs/references/smithers/docs/changelogs/0.16.2.mdx b/docs/references/smithers/docs/changelogs/0.16.2.mdx index 07739962c..570ead810 100644 --- a/docs/references/smithers/docs/changelogs/0.16.2.mdx +++ b/docs/references/smithers/docs/changelogs/0.16.2.mdx @@ -1,17 +1,17 @@ # 0.16.2 Patch release: declare the missing `@effect/sql-sqlite-bun` runtime dependency -in `@smithers-orchestrator/engine` so a fresh install of `smithers-orchestrator` +in `@smthrs/engine` so a fresh install of `smthrs` can actually run the CLI. --- ## Fixes -- **`@smithers-orchestrator/engine` now declares `@effect/sql-sqlite-bun`** as +- **`@smthrs/engine` now declares `@effect/sql-sqlite-bun`** as a direct dependency. `src/effect/single-runner.js` imports `@effect/sql-sqlite-bun/SqliteClient` but the package wasn't listed in the - engine's `package.json`, so a clean `pnpm install smithers-orchestrator` + engine's `package.json`, so a clean `pnpm install smthrs` produced an unresolvable `Cannot find module '@effect/sql-sqlite-bun/SqliteClient'` as soon as anything touched the engine (including `smithers ps`). Downstream consumers previously had to add the dep themselves to unblock. diff --git a/docs/references/smithers/docs/changelogs/0.16.3.mdx b/docs/references/smithers/docs/changelogs/0.16.3.mdx index 167daa16e..9b9bd5891 100644 --- a/docs/references/smithers/docs/changelogs/0.16.3.mdx +++ b/docs/references/smithers/docs/changelogs/0.16.3.mdx @@ -1,19 +1,19 @@ # 0.16.3 Patch release: declare the missing `@mdx-js/esbuild` runtime dependency -in `smithers-orchestrator` so a fresh `bunx smithers-orchestrator init` +in `smthrs` so a fresh `bunx smthrs init` can actually start the CLI. --- ## Fixes -- **`smithers-orchestrator` now declares `@mdx-js/esbuild`** as a direct +- **`smthrs` now declares `@mdx-js/esbuild`** as a direct dependency. `src/mdx-plugin.js` imports `@mdx-js/esbuild` but the package wasn't listed in `packages/smithers/package.json`, so a clean - `bunx smithers-orchestrator@latest init` produced an unresolvable + `bunx smthrs@latest init` produced an unresolvable `Cannot find module '@mdx-js/esbuild'` as soon as the CLI loaded - (`@smithers-orchestrator/cli` re-exports `mdxPlugin` at startup). + (`@smthrs/cli` re-exports `mdxPlugin` at startup). ## Features diff --git a/docs/references/smithers/docs/changelogs/0.16.4.mdx b/docs/references/smithers/docs/changelogs/0.16.4.mdx index b0c8b22c6..f30fef330 100644 --- a/docs/references/smithers/docs/changelogs/0.16.4.mdx +++ b/docs/references/smithers/docs/changelogs/0.16.4.mdx @@ -1,6 +1,6 @@ # 0.16.4 -Patch release: fix `bunx smithers-orchestrator init` bailing immediately +Patch release: fix `bunx smthrs init` bailing immediately with `INIT_FAILED / ENOENT` on a clean install. --- @@ -8,12 +8,12 @@ with `INIT_FAILED / ENOENT` on a clean install. ## Fixes - **`smithers init` no longer throws on a missing root `package.json`**. - `@smithers-orchestrator/cli`'s `readDependencyVersions()` read a root + `@smthrs/cli`'s `readDependencyVersions()` read a root `package.json` via `readJson("../../../package.json")`. Inside the monorepo that's the workspace root; installed from npm it resolves to `node_modules/package.json`, which doesn't exist, and the sync read threw before any fallback could fire. Every fresh `bunx - smithers-orchestrator@latest init` bailed with `INIT_FAILED` / ENOENT. + smthrs@latest init` bailed with `INIT_FAILED` / ENOENT. The read now goes through the existing `readPackageVersion(path, fallback)` helper, matching every other version lookup in the function. diff --git a/docs/references/smithers/docs/changelogs/0.16.5.mdx b/docs/references/smithers/docs/changelogs/0.16.5.mdx index 146cd44b3..657ece1c3 100644 --- a/docs/references/smithers/docs/changelogs/0.16.5.mdx +++ b/docs/references/smithers/docs/changelogs/0.16.5.mdx @@ -9,11 +9,11 @@ falling through to minimum-version defaults on every fresh install. ## Fixes - **`.smithers/package.json` version resolution**. The workflow pack - scaffold in `@smithers-orchestrator/cli` built version strings by + scaffold in `@smthrs/cli` built version strings by walking a hardcoded `../../../node_modules/` path relative to `workflow-pack.js`. Inside the monorepo that landed at the workspace root; once installed from npm the CLI sits under - `node_modules/@smithers-orchestrator/cli/src/` and the walk resolved + `node_modules/@smthrs/cli/src/` and the walk resolved to `node_modules/node_modules/`, so every lookup silently fell back to the minimum defaults (`zod: 4.0.0`, `typescript: 5.0.0`, `@types/react: 19.0.0`, etc.). The CLI now resolves each spec via diff --git a/docs/references/smithers/docs/changelogs/0.16.6.mdx b/docs/references/smithers/docs/changelogs/0.16.6.mdx index 668ffbd35..6afa757ac 100644 --- a/docs/references/smithers/docs/changelogs/0.16.6.mdx +++ b/docs/references/smithers/docs/changelogs/0.16.6.mdx @@ -11,7 +11,7 @@ Patch release: generated `.smithers/package.json` now includes the a fresh init**. `.smithers/components/GrillMe.tsx` imports `skills/grill-me/SKILL.md` from [`mattpocock/skills`](https://github.com/mattpocock/skills), but - `renderPackageJson` in `@smithers-orchestrator/cli` never declared + `renderPackageJson` in `@smthrs/cli` never declared the package in the generated `.smithers/package.json`. `bun install` inside `.smithers/` had nothing to fetch, so the SKILL.md import dangled and workflow loading blew up with `Cannot find module diff --git a/docs/references/smithers/docs/changelogs/0.16.7.mdx b/docs/references/smithers/docs/changelogs/0.16.7.mdx index b30070f12..d0699db83 100644 --- a/docs/references/smithers/docs/changelogs/0.16.7.mdx +++ b/docs/references/smithers/docs/changelogs/0.16.7.mdx @@ -1,7 +1,7 @@ # 0.16.7 -Patch release: `bunx smithers-orchestrator@latest init` followed by -`bunx smithers-orchestrator@latest workflow <name>` now actually runs a +Patch release: `bunx smthrs@latest init` followed by +`bunx smthrs@latest workflow <name>` now actually runs a workflow end-to-end on a fresh machine. --- @@ -22,7 +22,7 @@ workflow end-to-end on a fresh machine. A new `smithers init --no-install` flag skips the step for CI / scripted reinits. -- **`@smithers-orchestrator/react-reconciler` host config now provides +- **`@smthrs/react-reconciler` host config now provides the methods `react-reconciler@0.33` requires**. The compiled reconciler reads `resolveEventTimeStamp`, `resolveEventType`, `trackSchedulerEvent`, `maySuspendCommitOnUpdate`, @@ -34,7 +34,7 @@ workflow end-to-end on a fresh machine. supplies neutral implementations for each (no-op void, `null`, or `false` as appropriate for a headless host with no native events). -- **The `smithers-orchestrator` bin now delegates to a local +- **The `smthrs` bin now delegates to a local `.smithers/node_modules/.bin/smithers` when one exists**. `bunx` extracts to a throwaway tmp dir and `.smithers/` has its own `node_modules/`; they're separate resolution roots, so the engine diff --git a/docs/references/smithers/docs/changelogs/0.16.8.mdx b/docs/references/smithers/docs/changelogs/0.16.8.mdx index 99fa131c6..2b6fad5d6 100644 --- a/docs/references/smithers/docs/changelogs/0.16.8.mdx +++ b/docs/references/smithers/docs/changelogs/0.16.8.mdx @@ -6,19 +6,19 @@ Patch release: the bin delegation added in 0.16.7 now actually runs. ## Fixes -- **`@smithers-orchestrator/cli` no longer declares a `smithers` bin**. - Previously both `smithers-orchestrator` and - `@smithers-orchestrator/cli` declared the same `smithers` binary, and +- **`@smthrs/cli` no longer declares a `smithers` bin**. + Previously both `smthrs` and + `@smthrs/cli` declared the same `smithers` binary, and bun registered the CLI's (pointing straight at `src/index.js`) in `node_modules/.bin/` — which meant the delegation wrapper in - `smithers-orchestrator/src/bin/smithers.js` from 0.16.7 never ran, + `smthrs/src/bin/smithers.js` from 0.16.7 never ran, `bunx` tmp-dir and `.smithers/node_modules/` still materialized two - React singletons, and `bunx smithers-orchestrator@latest workflow + React singletons, and `bunx smthrs@latest workflow grill-me` on a fresh init kept crashing with `Invalid hook call`. - Dropping the bin from `@smithers-orchestrator/cli` makes + Dropping the bin from `@smthrs/cli` makes `node_modules/.bin/smithers` unambiguously resolve to - `smithers-orchestrator/src/bin/smithers.js`, the delegation fires, + `smthrs/src/bin/smithers.js`, the delegation fires, and the local `.smithers/` install takes over for the actual workflow run — one React, one reconciler, one hook dispatcher. The CLI package is now a pure library; consumers who want the binary - install `smithers-orchestrator`. + install `smthrs`. diff --git a/docs/references/smithers/docs/changelogs/0.16.9.mdx b/docs/references/smithers/docs/changelogs/0.16.9.mdx index ad28f92b3..5846c8acb 100644 --- a/docs/references/smithers/docs/changelogs/0.16.9.mdx +++ b/docs/references/smithers/docs/changelogs/0.16.9.mdx @@ -7,14 +7,14 @@ Patch release: `smithers --version` now prints the real version instead of `unkn ## Fixes - **`smithers --version` no longer prints `unknown`.** `readPackageVersion` - in `@smithers-orchestrator/cli/src/index.js` resolved + in `@smthrs/cli/src/index.js` resolved `new URL("../../package.json", import.meta.url)`, which climbed two - levels out of `@smithers-orchestrator/cli/src/` and landed on - `@smithers-orchestrator/package.json` — a path that doesn't exist, so + levels out of `@smthrs/cli/src/` and landed on + `@smthrs/package.json` — a path that doesn't exist, so `readFileSync` threw `ENOENT`, the catch returned the string `"unknown"`, and that literal propagated through the CLI, the `getOrchestratorVersion` FFI call, and all the way into the Smithers GUI sidebar (which rendered "Smithers unknown"). Fixed the URL to - `"../package.json"` so it resolves to `@smithers-orchestrator/cli/package.json` + `"../package.json"` so it resolves to `@smthrs/cli/package.json` and the declared version is read correctly. No behavior change beyond the version string being accurate. diff --git a/docs/references/smithers/docs/changelogs/0.17.0.mdx b/docs/references/smithers/docs/changelogs/0.17.0.mdx index 9836a025f..11213baf2 100644 --- a/docs/references/smithers/docs/changelogs/0.17.0.mdx +++ b/docs/references/smithers/docs/changelogs/0.17.0.mdx @@ -2,7 +2,7 @@ 0.17.0 ships **Gateway v1**: the Gateway's RPC schema, scope vocabulary, error codes, and OpenAPI document are now a stable, separately published -package — `@smithers-orchestrator/gateway` — so external clients (bots, +package — `@smthrs/gateway` — so external clients (bots, dashboards, SDKs in other languages) can build against the contract instead of the server source. 0.15.0 launched the Gateway; 0.17.0 commits to its wire shape. @@ -22,14 +22,14 @@ single-Effect-version guardrail and a new fault-injection E2E lane. - **`pi-plugin` moved to its own workspace package.** The runtime previously lived in `packages/smithers/src/pi-plugin/` and was re-exported from the - `smithers-orchestrator/pi-plugin` subpath. It is now `packages/pi-plugin/`, - published as `@smithers-orchestrator/pi-plugin`. The - `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extension` + `smthrs/pi-plugin` subpath. It is now `packages/pi-plugin/`, + published as `@smthrs/pi-plugin`. The + `smthrs/pi-plugin` and `smthrs/pi-extension` subpath re-exports have been deleted. Update imports: ```diff - - import { runWorkflow } from "smithers-orchestrator/pi-plugin"; - + import { runWorkflow } from "@smithers-orchestrator/pi-plugin"; + - import { runWorkflow } from "smthrs/pi-plugin"; + + import { runWorkflow } from "@smthrs/pi-plugin"; ``` --- @@ -38,7 +38,7 @@ single-Effect-version guardrail and a new fault-injection E2E lane. 0.15.0 shipped the Gateway. 0.17.0 ships the **contract**. The Gateway's RPC schema, scope vocabulary, error codes, and OpenAPI document now live in their -own workspace package — `@smithers-orchestrator/gateway` — and are the single +own workspace package — `@smthrs/gateway` — and are the single source of truth that both the in-process server and any external client codegen against. The server no longer carries its own copy of the method or scope tables; clients no longer have to scrape the source to learn the wire @@ -87,16 +87,16 @@ import { type GatewayRpcMethod, type GatewayRpcErrorCode, type GatewayScope, -} from "@smithers-orchestrator/gateway"; +} from "@smthrs/gateway"; // Just the wire types and JSON Schemas. -import type { LaunchRunRequest } from "@smithers-orchestrator/gateway/rpc"; +import type { LaunchRunRequest } from "@smthrs/gateway/rpc"; // Just the scope helpers (e.g. for an auth middleware). import { hasGatewayScope, type GatewayScope, -} from "@smithers-orchestrator/gateway/auth/scopes"; +} from "@smthrs/gateway/auth/scopes"; ``` ### Calling a method over HTTP @@ -117,7 +117,7 @@ Or in TypeScript, with the contract types pulled in: import type { LaunchRunRequest, LaunchRunResponse, -} from "@smithers-orchestrator/gateway/rpc"; +} from "@smthrs/gateway/rpc"; const req: LaunchRunRequest = { workflow: "deploy", @@ -142,7 +142,7 @@ is the right transport for clients that want to follow events instead of polling: ```ts -import type { StreamRunEventsRequest } from "@smithers-orchestrator/gateway/rpc"; +import type { StreamRunEventsRequest } from "@smthrs/gateway/rpc"; const ws = new WebSocket("ws://localhost:7331"); ws.onopen = () => { @@ -170,7 +170,7 @@ ws.onmessage = (m) => { ### The scope vocabulary -`@smithers-orchestrator/gateway/auth/scopes` exports the v1 scope vocabulary. +`@smthrs/gateway/auth/scopes` exports the v1 scope vocabulary. Each method declares the scope it requires; `hasGatewayScope()` performs the match and understands legacy grants: @@ -195,7 +195,7 @@ so existing tokens keep working. import { hasGatewayScope, getRequiredScopeForGatewayMethod, -} from "@smithers-orchestrator/gateway"; +} from "@smthrs/gateway"; const granted = ["run:write", "signal:submit"]; // from your auth layer const required = getRequiredScopeForGatewayMethod("launchRun"); // "run:write" @@ -209,7 +209,7 @@ which lets a gateway, proxy, or client validate payloads without a generated SDK: ```ts -import { getGatewayRpcDefinition } from "@smithers-orchestrator/gateway"; +import { getGatewayRpcDefinition } from "@smthrs/gateway"; import Ajv from "ajv"; const def = getGatewayRpcDefinition("submitApproval"); @@ -230,12 +230,12 @@ consumes OpenAPI works: ```bash # Python client openapi-generator-cli generate \ - -i node_modules/@smithers-orchestrator/gateway/openapi.yaml \ + -i node_modules/@smthrs/gateway/openapi.yaml \ -g python -o ./clients/python # Go client oapi-codegen -package smithers \ - node_modules/@smithers-orchestrator/gateway/openapi.yaml \ + node_modules/@smthrs/gateway/openapi.yaml \ > ./clients/go/smithers.gen.go ``` @@ -247,7 +247,7 @@ checked at PR time, so the YAML cannot drift from the runtime. `packages/server/src/gateway.js` no longer ships its own method or scope table — it imports `getRequiredScopeForGatewayMethod`, `hasGatewayScope`, and the per-method JSON Schemas straight from -`@smithers-orchestrator/gateway`. A new 283-line contract test +`@smthrs/gateway`. A new 283-line contract test (`packages/server/tests/gateway-v1-contract.test.jsx`) pins the wire shape end-to-end so server changes can't silently break the published v1 contract. @@ -267,9 +267,9 @@ interactive agent without losing run state: completion; `reopen` restarts the task on the next resume. ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { Task, Workflow, createSmithers } from "smithers-orchestrator"; -import { ClaudeCodeAgent } from "@smithers-orchestrator/agents"; +/** @jsxImportSource smthrs */ +import { Task, Workflow, createSmithers } from "smthrs"; +import { ClaudeCodeAgent } from "@smthrs/agents"; import { z } from "zod"; const claude = new ClaudeCodeAgent({ model: "claude-opus-4-7" }); @@ -307,7 +307,7 @@ Hijack requires an agent that exposes a CLI engine (`cliEngine` / The CLI grows a proper account/credentials surface so multiple subscriptions can run side-by-side and so machine-readable output stays clean. -### `@smithers-orchestrator/accounts` package +### `@smthrs/accounts` package A new workspace package backing per-provider credentials in `~/.smithers/accounts.json`: @@ -319,7 +319,7 @@ import { getAccount, accountToProviderEnv, type Account, -} from "@smithers-orchestrator/accounts"; +} from "@smthrs/accounts"; await addAccount({ provider: "claude", @@ -356,7 +356,7 @@ accepts `apiKey` to opt into API billing instead of subscription auth. Two subscriptions can run concurrently in the same process: ```ts -import { ClaudeCodeAgent } from "@smithers-orchestrator/agents"; +import { ClaudeCodeAgent } from "@smthrs/agents"; // Subscription #1 — pinned to ~/.smithers/configs/claude-work const claudeWork = new ClaudeCodeAgent({ @@ -385,7 +385,7 @@ Each `configDir` is wired through to the right per-CLI environment variable A one-task auto-hijacked chat that drops you into an interactive Claude Code, Codex, or Gemini session inside a Smithers run. Built on top of the new `Task hijack` prop and now assembled from package-level primitives so -the command does not need to import the top-level `smithers-orchestrator` +the command does not need to import the top-level `smthrs` bundle just to create its inline workflow: ```bash @@ -399,7 +399,7 @@ the workflow and the task completes. ### MDX and generated workflow packs The CLI now owns its Bun MDX plugin locally (`apps/cli/src/mdx-plugin.js`) -instead of importing the plugin through the public `smithers-orchestrator` +instead of importing the plugin through the public `smthrs` package. Generated workflow packs also include `@types/node` alongside the React and MDX type pins, which keeps freshly initialized packs typecheckable when workflows use Node globals or built-ins. @@ -442,7 +442,7 @@ extraction: indefinitely: ```ts - import { Gateway } from "smithers-orchestrator"; + import { Gateway } from "smthrs"; const gateway = new Gateway({ auth: { mode: "token", tokens: { /* ... */ } }, @@ -469,7 +469,7 @@ interleaving, and OpenAPI execution / `$ref` cycles. ## New: DB schema evolution + transaction coordination - **`syncZodTableSchema(sqlite, tableName, schema, opts)`** is a new export - from `@smithers-orchestrator/db`. It replaces the bare + from `@smthrs/db`. It replaces the bare `CREATE TABLE IF NOT EXISTS` path used at boot: when a Zod schema gains columns between releases, it issues `ALTER TABLE ADD COLUMN` so existing databases catch up without a manual migration. `createSmithers()` and @@ -477,7 +477,7 @@ interleaving, and OpenAPI execution / `$ref` cycles. custom tables can opt in: ```ts - import { syncZodTableSchema } from "@smithers-orchestrator/db"; + import { syncZodTableSchema } from "@smthrs/db"; import { Database } from "bun:sqlite"; import { z } from "zod"; @@ -515,7 +515,7 @@ e.g. `{ kind: "workflow", id: "task:subtask:0" }` — round-trip without ambiguity: ```ts -import { namespaceToString, parseNamespace } from "@smithers-orchestrator/memory"; +import { namespaceToString, parseNamespace } from "@smthrs/memory"; const ns = { kind: "workflow", id: "task:subtask:0" }; const s = namespaceToString(ns); @@ -537,10 +537,10 @@ This keeps Prometheus metric instances single-sourced while preserving the existing subpath imports: ```ts -import { memoryRecallDuration } from "@smithers-orchestrator/memory/metrics"; -import { openApiToolDuration } from "@smithers-orchestrator/openapi/metrics"; -import { scorerDuration } from "@smithers-orchestrator/scorers/metrics"; -import { snapshotDuration } from "@smithers-orchestrator/time-travel/metrics"; +import { memoryRecallDuration } from "@smthrs/memory/metrics"; +import { openApiToolDuration } from "@smthrs/openapi/metrics"; +import { scorerDuration } from "@smthrs/scorers/metrics"; +import { snapshotDuration } from "@smthrs/time-travel/metrics"; ``` The observability catalog now includes counters and histograms for: @@ -553,9 +553,9 @@ The observability catalog now includes counters and histograms for: and snapshot duration. The memory and scorer Drizzle table definitions are also centralized under -`@smithers-orchestrator/db/internal-schema`; the package-level -`@smithers-orchestrator/memory/schema` and -`@smithers-orchestrator/scorers/schema` subpaths continue to re-export the +`@smthrs/db/internal-schema`; the package-level +`@smthrs/memory/schema` and +`@smthrs/scorers/schema` subpaths continue to re-export the same tables for callers that already import them there. This removes schema ownership cycles between DB, memory, and scorers without changing the table names. @@ -576,13 +576,13 @@ caches: - **`MemoryPromptCache`** — in-process for tests. ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { ExtractPrompt, MarkdownPromptCache, rctfPromptSchema, -} from "smithers-orchestrator/components/extract-prompt"; +} from "smthrs/components/extract-prompt"; import { agents } from "./agents"; import { z } from "zod"; @@ -648,7 +648,7 @@ workflow contracts fail at `tsc` time rather than at runtime: - **Graph-level agent and scorer types** no longer import the concrete agents or scorers packages. `packages/graph` now carries the structural `AgentLike` capability shape and `ScorersMap`, and `packages/components` - imports scorer types from `@smithers-orchestrator/graph/types`. That keeps + imports scorer types from `@smthrs/graph/types`. That keeps the graph and component contracts type-safe without pulling runtime package dependencies into lower-level packages. @@ -656,7 +656,7 @@ workflow contracts fail at `tsc` time rather than at runtime: ## New: Fault-injection E2E matrix -0.17.0 adds a private `@smithers-orchestrator/e2e` workspace package with +0.17.0 adds a private `@smthrs/e2e` workspace package with the fault matrix from ticket 0022. The suite is organized as reusable fault primitives, per-case tests, explicit latency/RSS budgets, and a flake log: @@ -681,7 +681,7 @@ log: Two GitHub Actions lanes run the suite: - **`.github/workflows/faults.yml`** runs the per-PR fault subset with - `pnpm --filter @smithers-orchestrator/e2e test:faults`. + `pnpm --filter @smthrs/e2e test:faults`. - **`.github/workflows/faults-nightly.yml`** runs the soak lane on a daily cron with `SMITHERS_E2E_SOAK=1`. @@ -845,7 +845,7 @@ A handful of doc gaps were flagged during release prep and remain open for follow-up: - Update `docs/integrations/pi-integration.mdx` import paths to - `@smithers-orchestrator/pi-plugin`. + `@smthrs/pi-plugin`. - Add `agents.add`/`agents.list`/`agents.remove`/`agents.test` and `chat.create` to the CLI TOON catalog in `docs/cli/overview.mdx`, and document `configDir` / `apiKey` in `docs/integrations/cli-agents.mdx`. diff --git a/docs/references/smithers/docs/changelogs/0.18.0.mdx b/docs/references/smithers/docs/changelogs/0.18.0.mdx index fcadd36bc..cbddb94f4 100644 --- a/docs/references/smithers/docs/changelogs/0.18.0.mdx +++ b/docs/references/smithers/docs/changelogs/0.18.0.mdx @@ -10,21 +10,21 @@ a patch release. ## Gateway UI SDKs -- **New browser client package: `@smithers-orchestrator/gateway-client`.** It +- **New browser client package: `@smthrs/gateway-client`.** It ships `SmithersGatewayClient`, `SmithersGatewayConnection`, typed request and response maps for the stable Gateway RPC contract, structured `GatewayRpcError` handling, HTTP RPC helpers, WebSocket connection support, and a `streamRunEvents()` async iterator for run-scoped event streams. -- **New React package: `@smithers-orchestrator/gateway-react`.** It ships +- **New React package: `@smthrs/gateway-react`.** It ships `SmithersGatewayProvider`, `createGatewayReactRoot`, and hooks for common UI reads and actions: `useGatewayRpc`, `useGatewayRuns`, `useGatewayRun`, `useGatewayRunEvents`, `useGatewayWorkflows`, `useGatewayApprovals`, `useGatewayNodeOutput`, and `useGatewayActions`. -- **Convenience subpath exports from `smithers-orchestrator`.** Apps can import - the new SDK surfaces through `smithers-orchestrator/gateway-client` and - `smithers-orchestrator/gateway-react` in addition to the standalone workspace +- **Convenience subpath exports from `smthrs`.** Apps can import + the new SDK surfaces through `smthrs/gateway-client` and + `smthrs/gateway-react` in addition to the standalone workspace packages. ## Gateway-Hosted React UIs @@ -120,7 +120,7 @@ a patch release. link to the Smithers GitHub repository. - **README onboarding was refreshed.** The README now points new users at - `bunx smithers-orchestrator@latest init` and describes the generated workflow + `bunx smthrs@latest init` and describes the generated workflow pack as ready-to-run. ## Fixes and Hardening @@ -139,10 +139,10 @@ a patch release. explicit `UNKNOWN_OUTPUT_SCHEMA` message telling authors to use `createSmithers(...).outputs.<key>` or a string output key. -- **`bunx smithers-orchestrator init` resolves published package versions +- **`bunx smthrs init` resolves published package versions correctly.** The workflow pack now reads its own package version from the installed CLI package, resolves dependency versions with `createRequire`, and - writes a concrete `smithers-orchestrator` semver range instead of always using + writes a concrete `smthrs` semver range instead of always using `"latest"`. - **Published package dependency guardrails were added.** New tests simulate the diff --git a/docs/references/smithers/docs/changelogs/0.19.0.mdx b/docs/references/smithers/docs/changelogs/0.19.0.mdx index 36f2a2f08..01dd0a9f9 100644 --- a/docs/references/smithers/docs/changelogs/0.19.0.mdx +++ b/docs/references/smithers/docs/changelogs/0.19.0.mdx @@ -15,7 +15,7 @@ notably `Smithers.createWorkflow` / `Smithers.createComponent` and the - **`Smithers.createWorkflow` and `Smithers.createComponent` are now public.** The previously-internal `_createWorkflow` and `_createComponent` Effect builders are exported from the engine and re-exported through - `smithers-orchestrator`. Authors can compose workflows with `Effect`, + `smthrs`. Authors can compose workflows with `Effect`, `Layer`, and `Schema` directly, without going through JSX. - **New TypeScript surface for the Effect builder.** The engine type bundle diff --git a/docs/references/smithers/docs/changelogs/0.20.2.mdx b/docs/references/smithers/docs/changelogs/0.20.2.mdx index 5730a5e37..bb7d0ab23 100644 --- a/docs/references/smithers/docs/changelogs/0.20.2.mdx +++ b/docs/references/smithers/docs/changelogs/0.20.2.mdx @@ -1,6 +1,6 @@ # 0.20.2 -Patch release: `bunx smithers-orchestrator init` is significantly leaner +Patch release: `bunx smthrs init` is significantly leaner on cold installs. The deprecated TUI mode and the GitHub-tarball `skills` dependency are gone. @@ -29,5 +29,5 @@ dependency are gone. ## Impact - `.smithers/node_modules/` shrinks from ~467 MB to ~300 MB on a fresh - `bunx smithers-orchestrator init`. + `bunx smthrs init`. - Cold `bun install` skips the GitHub tarball fetch for `skills`. diff --git a/docs/references/smithers/docs/changelogs/0.20.3.mdx b/docs/references/smithers/docs/changelogs/0.20.3.mdx index 39facbb48..14d687aa1 100644 --- a/docs/references/smithers/docs/changelogs/0.20.3.mdx +++ b/docs/references/smithers/docs/changelogs/0.20.3.mdx @@ -24,7 +24,7 @@ example, and `<Loop>` / `<Sequence>` accept a typed `key` prop. ## Components - **`<Loop>` and `<Sequence>` accept `key`.** `LoopProps` and - `SequenceProps` in `@smithers-orchestrator/components` now declare + `SequenceProps` in `@smthrs/components` now declare `key?: string` explicitly, so TypeScript users can pass a stable `key` when iterating without a TS error. Matches the React contract the renderer already honored at runtime. diff --git a/docs/references/smithers/docs/changelogs/0.20.4.mdx b/docs/references/smithers/docs/changelogs/0.20.4.mdx index 5e024602d..998dd41d8 100644 --- a/docs/references/smithers/docs/changelogs/0.20.4.mdx +++ b/docs/references/smithers/docs/changelogs/0.20.4.mdx @@ -13,14 +13,14 @@ schema-driven outputs now demand raw JSON without code fences. - **Bin delegation now resolves the workspace-local install through `package.json`.** When you run `smithers` inside a directory whose `.smithers/node_modules/` ships its own copy of - `smithers-orchestrator`, the global bin re-execs into that local + `smthrs`, the global bin re-execs into that local copy so the workflow runtime — engine, react-reconciler, components, React — all load from a single module tree. Previously the global bin handed the local pnpm/npm `.bin/smithers` *shell shim* to `process.execPath` (bun), which tried to parse the `#!/bin/sh` shim as JavaScript and crashed with `Expected ")" but found "$(echo "`. Resolution now reads - `node_modules/smithers-orchestrator/package.json` and re-execs the + `node_modules/smthrs/package.json` and re-execs the actual JS entry, bypassing the shim. Workflow-path commands (`up`, `graph`, `fork`, `replay`, `revert`, `timetravel`) also walk upward from the workflow file to find the nearest local diff --git a/docs/references/smithers/docs/changelogs/0.21.0.mdx b/docs/references/smithers/docs/changelogs/0.21.0.mdx index 76a59b0ec..df3016bfa 100644 --- a/docs/references/smithers/docs/changelogs/0.21.0.mdx +++ b/docs/references/smithers/docs/changelogs/0.21.0.mdx @@ -74,13 +74,13 @@ recordable keyboard-driven demo deck. ## Gateway And Control Plane -- **New `@smithers-orchestrator/control-plane` package.** Hosted +- **New `@smthrs/control-plane` package.** Hosted deployments now have a tested SQLite store for organizations, teams, projects, billing records, identity providers, usage events and limits, secret manager references, and audit export. - **Facade export for hosted control-plane APIs.** Consumers can import - `ControlPlaneStore` through `smithers-orchestrator/control-plane` or the + `ControlPlaneStore` through `smthrs/control-plane` or the scoped package. - **Default Gateway console.** Gateway can now mount a built-in operator UI diff --git a/docs/references/smithers/docs/changelogs/0.22.0.mdx b/docs/references/smithers/docs/changelogs/0.22.0.mdx index 19d2d6366..ffbe7d0ea 100644 --- a/docs/references/smithers/docs/changelogs/0.22.0.mdx +++ b/docs/references/smithers/docs/changelogs/0.22.0.mdx @@ -120,13 +120,13 @@ Behind the shell, every surface is a real, live view over the Gateway and worksp - **First-class wiring for Pi, Hermes, and OpenClaw.** Three agents fell outside the skill/MCP framework's built-in registry, so `mcp add` / `skills add` left them to manual setup. A supplementary wiring step (`apps/cli/src/agent-wiring/`) now closes that gap on success: `mcp add` writes the Smithers MCP server into Hermes's `~/.hermes/config.yaml` (`mcp_servers`, YAML) and OpenClaw's `~/.openclaw/openclaw.json` (`mcp.servers`, JSON) — directly, the way the framework already special-cases Amp — and `skills add` copies the canonical `.agents/skills` set into Pi's `~/.pi/agent/skills`. Each writer detects the agent by its config directory, preserves existing config (and refuses to clobber an unparseable file), and honors the same `--no-global`, `--agent`, and `--command` flags as the underlying command. With this, one `mcp add` + one `skills add` reaches every supported agent, Pi/Hermes/OpenClaw included. -- **`HermesAgent` — run Hermes as a workflow worker.** A new agent class (`packages/agents/src/HermesAgent.js`) lets a `<Task>` drive the Hermes (Nous Research) agent. Hermes exposes an OpenAI-compatible HTTP API, so `HermesAgent` is a thin wrapper over `OpenAIAgent`: it points the provider at the Hermes server via `baseURL` (or the `HERMES_BASE_URL` env var), defaults `apiKey` from `HERMES_API_KEY`, and disables AI SDK native structured output by default since a local Hermes server may not honor JSON-schema response formats. It is re-exported from `smithers-orchestrator` alongside the other agent classes. +- **`HermesAgent` — run Hermes as a workflow worker.** A new agent class (`packages/agents/src/HermesAgent.js`) lets a `<Task>` drive the Hermes (Nous Research) agent. Hermes exposes an OpenAI-compatible HTTP API, so `HermesAgent` is a thin wrapper over `OpenAIAgent`: it points the provider at the Hermes server via `baseURL` (or the `HERMES_BASE_URL` env var), defaults `apiKey` from `HERMES_API_KEY`, and disables AI SDK native structured output by default since a local Hermes server may not honor JSON-schema response formats. It is re-exported from `smthrs` alongside the other agent classes. - **Starter gallery for seeded workflows.** A new `smithers starters` command (`apps/cli/src/starter-gallery.js`) presents plain-English outcomes with copy-paste commands for people who want a result before writing workflow code. Each detailed starter prints the expected outcome, the context to gather first, the exact `workflow run` command, useful follow-ups, and when not to use it. Browse the whole catalog or filter with `--audience`, `--goal`, or `--workflow`, and emit `--format json` when another tool needs the catalog. Ten canonical starters map plain outcomes (`idea-to-prd`, `launch-checklist`, `customer-incident`, `quality-audit`, `ship-a-change`, `mission-mode`, and more) onto the underlying seeded workflows. - **Guided init template selection.** `smithers init --template <id>` scaffolds a single starter with guided next steps instead of dropping the full pack, with validation tightened so unknown template IDs are rejected. The starter gallery and init share one source of truth for IDs and aliases, so `starters <id>` lookups and `init --template` stay consistent. -- **Smithers prompt optimization with provider support.** A new `smithers optimize` command (`apps/cli/src/optimize-command.js`, `optimize-suite.js`) runs an eval suite twice — a baseline with the workflow's current prompts and an optimized run with GEPA-generated prompt patches — and writes the winning prompt artifact only when the optimized score clears `--min-improvement`. Artifacts patch only agent-backed `<Task>` prompts by `nodeId`, leaving workflow structure, output schemas, retries, approvals, and persistence untouched, and can be replayed into future evals via `smithers eval --optimization`. The patch generator accepts the same provider vocabulary as agents and accounts — `cerebras`, `openai`/`codex`, `anthropic`/`claude`, `gemini`/`antigravity`, `kimi`/`moonshot`, and a generic OpenAI-compatible endpoint for `opencode`/`pi`/`amp`/`forge` — plus a deterministic `heuristic` provider for tests and fixtures. The optimization artifact format lives in `@smithers-orchestrator/engine` (`optimization-artifact.js`). +- **Smithers prompt optimization with provider support.** A new `smithers optimize` command (`apps/cli/src/optimize-command.js`, `optimize-suite.js`) runs an eval suite twice — a baseline with the workflow's current prompts and an optimized run with GEPA-generated prompt patches — and writes the winning prompt artifact only when the optimized score clears `--min-improvement`. Artifacts patch only agent-backed `<Task>` prompts by `nodeId`, leaving workflow structure, output schemas, retries, approvals, and persistence untouched, and can be replayed into future evals via `smithers eval --optimization`. The patch generator accepts the same provider vocabulary as agents and accounts — `cerebras`, `openai`/`codex`, `anthropic`/`claude`, `gemini`/`antigravity`, `kimi`/`moonshot`, and a generic OpenAI-compatible endpoint for `opencode`/`pi`/`amp`/`forge` — plus a deterministic `heuristic` provider for tests and fixtures. The optimization artifact format lives in `@smthrs/engine` (`optimization-artifact.js`). - **OpenCode agent detection in init.** `smithers init` now detects the OpenCode CLI alongside the existing agents, recognizing its config and data directories and provider API keys so OpenCode-based workflows scaffold without manual wiring. diff --git a/docs/references/smithers/docs/changelogs/0.23.0.mdx b/docs/references/smithers/docs/changelogs/0.23.0.mdx index 38fd767ca..5580ac9a1 100644 --- a/docs/references/smithers/docs/changelogs/0.23.0.mdx +++ b/docs/references/smithers/docs/changelogs/0.23.0.mdx @@ -50,7 +50,7 @@ This release introduces **Smithers** (`apps/smithers`), a streaming chat PWA pow - **Flash-free dark mode tokenized end to end.** Every color in the app is a semantic CSS custom property defined in `:root`, and dark mode ships two ways: the OS preference via `@media (prefers-color-scheme: dark)` and an explicit `[data-theme]` override. An inline script resolves the theme before first paint so there is no flash, `color-scheme` keeps native controls and scrollbars matched, and the workflow graph follows via ReactFlow's `colorMode`. -- **Renamed and rebranded.** The app moved from `apps/search-pwa` to `apps/smithers` (package `@smithers-orchestrator/smithers`), and every remaining "Huey" string was rebranded to "Smithers" across UI text, the manifest, the Ask Me system prompt, the Alchemy app id, and the `localStorage` key prefix. The Alchemy deploy ships the Worker plus the built PWA as static assets with SPA routing. +- **Renamed and rebranded.** The app moved from `apps/search-pwa` to `apps/smithers` (package `@smthrs/smithers`), and every remaining "Huey" string was rebranded to "Smithers" across UI text, the manifest, the Ask Me system prompt, the Alchemy app id, and the `localStorage` key prefix. The Alchemy deploy ships the Worker plus the built PWA as static assets with SPA routing. ## Smithers PWA: Surfaces, Auth, and Live Backends @@ -60,7 +60,7 @@ The chat shell grew into a full operator surface. The app was re-architected ont - **Browser auth with WorkOS or Auth0.** A `/login` page and sign-in modal support `google`/`github`/`email` providers under either strategy, plus bearer-token sign-in and logout. `authClient.ts` exposes `authFetch` (credentials-included fetch with CSRF and auto-redirect on 401) used by every backend call, and a persisted gateway base URL lets a `RemoteModePanel` point the app at any gateway origin. Sign-in state lives in an `authStore` that bootstraps at boot. -- **A live gateway run inspector.** `/gw/$workflowKey/$runId` lists workflows-with-UI and runs, opens a run, renders the DevTools snapshot as a node tree, fetches node output, launches runs, and embeds a workflow's own custom UI in an iframe. It runs on the real `@smithers-orchestrator/gateway-client` plus `gateway-react` hooks with streaming and resilient reconnect, instrumented for observability. +- **A live gateway run inspector.** `/gw/$workflowKey/$runId` lists workflows-with-UI and runs, opens a run, renders the DevTools snapshot as a node tree, fetches node output, launches runs, and embeds a workflow's own custom UI in an iframe. It runs on the real `@smthrs/gateway-client` plus `gateway-react` hooks with streaming and resilient reconnect, instrumented for observability. - **A jjhub backend selector and live Plue data.** A backend-mode store toggles `gateway` (local run context) and `platform` (cloud jjhub repo context, persisted as `smithers.backend`). A jjhub REST transport seam adds a base-URL resolver, `platformFetch`/`platformJson` with `PlatformError`, RFC 5988 link-cursor pagination, and a one-time WebSocket/SSE auth-ticket helper (`issueWebSocketTicket`) for terminal PTY and notification streams. Typed modules for issues, landings, and notifications wire the issues and landings surfaces to real Plue data behind a "Sync from Plue" bar, falling back to seeded data when no platform URL is configured so offline and dev are unchanged. @@ -82,7 +82,7 @@ The chat shell grew into a full operator surface. The app was re-architected ont A workflow can ship its own browser UI through the Smithers Gateway, and 0.23.0 lands the full documentation, two end-to-end examples, and the regression test that makes the iframe boundary safe. -- **A complete guide.** [Custom Workflow UIs](/integrations/custom-ui) explains how `gateway.register({ ui: { entry } })` bundles and serves the entry at `/workflows/<key>`, what the `__SMITHERS_GATEWAY_UI__` boot config carries, how `?runId=` flows from `location.search` into the bundle, and how `apps/smithers`, Studio 2, and `smithers ui` all embed the same iframe same-origin. It documents both shipping shapes side by side: `smithers-orchestrator/gateway-react` (`createGatewayReactRoot` plus `useGatewayRun`, `useGatewayRuns`, `useGatewayWorkflows`, `useGatewayRunEvents`, `useGatewayNodeOutput`, `useGatewayApprovals`, `useGatewayActions`, and the escape-hatch `useGatewayRpc`) and the zero-dependency `smithers-orchestrator/gateway-client` (`SmithersGatewayClient` with `getRun`, `getNodeOutput`, `getNodeDiff`, `submitApproval`, `submitSignal`, `cancelRun`, and the `streamRunEventsResilient` async generator). +- **A complete guide.** [Custom Workflow UIs](/integrations/custom-ui) explains how `gateway.register({ ui: { entry } })` bundles and serves the entry at `/workflows/<key>`, what the `__SMITHERS_GATEWAY_UI__` boot config carries, how `?runId=` flows from `location.search` into the bundle, and how `apps/smithers`, Studio 2, and `smithers ui` all embed the same iframe same-origin. It documents both shipping shapes side by side: `smthrs/gateway-react` (`createGatewayReactRoot` plus `useGatewayRun`, `useGatewayRuns`, `useGatewayWorkflows`, `useGatewayRunEvents`, `useGatewayNodeOutput`, `useGatewayApprovals`, `useGatewayActions`, and the escape-hatch `useGatewayRpc`) and the zero-dependency `smthrs/gateway-client` (`SmithersGatewayClient` with `getRun`, `getNodeOutput`, `getNodeDiff`, `submitApproval`, `submitSignal`, `cancelRun`, and the `streamRunEventsResilient` async generator). - **The stale-data-free contract is documented as first class.** The hooks clear on input change and drop in-flight responses by generation tag, which is the only thing keeping a custom UI from painting the wrong run's data when the host swaps `runId`. The guide states the same three rules for vanilla code: re-key on input change, generation-tag in-flight reads, render after fetches resolve. @@ -96,7 +96,7 @@ The gateway gained a typed extension surface and a framework-free sync SDK so a - **`gateway.extend(namespace, definition)` registers typed resources, actions, and streams.** Resources are reads, actions are writes, and streams are subscriptions, all flowing through the existing gateway transport with the same auth, payload bounds, and backpressure rules. Wire methods are addressed `ext.<namespace>.<key>` for resources and actions and `ext.stream.<namespace>.<key>` for streams. The registry (`packages/server/src/GatewayExtensions.js`) is its own module: namespace collisions throw at registration, a key declared as both resource and action throws, and identifiers must match `/^[a-z][a-zA-Z0-9_-]*$/`. Scopes are re-checked at dispatch as well as in the connection pipeline, handler errors normalize to one wire envelope (`EXTENSION_HANDLER_ERROR`, message only, no stack), every resource result and stream frame is bounded to 4 MiB, and a saturated subscriber surfaces `BackpressureDisconnect` that tears down only that stream. Connection teardown aborts in-flight handlers and runs extension cleanups. -- **Client and React SDKs for the extension surface.** `SmithersGatewayClient` gains `extensionRpc(namespace, key, params, { signal })` and `streamExtension(namespace, key, params, { signal })`, the latter yielding the initial replay payload first then live frames filtered by the allocated `streamId` so a stale subscription cannot see frames meant for a new one. `@smithers-orchestrator/gateway-react` adds `useGatewayExtensionResource`, `useGatewayExtensionAction`, and `useGatewayExtensionStream`, all with the same generation-counter stale fences as `useGatewayRpc`, ring-buffered frames, and exponential-backoff reconnect. +- **Client and React SDKs for the extension surface.** `SmithersGatewayClient` gains `extensionRpc(namespace, key, params, { signal })` and `streamExtension(namespace, key, params, { signal })`, the latter yielding the initial replay payload first then live frames filtered by the allocated `streamId` so a stale subscription cannot see frames meant for a new one. `@smthrs/gateway-react` adds `useGatewayExtensionResource`, `useGatewayExtensionAction`, and `useGatewayExtensionStream`, all with the same generation-counter stale fences as `useGatewayRpc`, ring-buffered frames, and exponential-backoff reconnect. - **A declarative sync SDK underneath.** `gateway-client` ships a framework-free `SyncClient` over a typed `SyncCache` (stale-while-revalidate, in-flight dedupe, ref-counted GC, generation-guarded stale discard, optimistic mutations with rollback) and a `SyncSubscriptionHub` that multiplexes many observers onto one upstream stream per key with `lastSeq` resume and jittered backoff. `createSmithersGatewayTransport` wires it to a `SmithersGatewayClient`, `gatewayKeys` provides typed cache-key factories, and `gateway-react` exposes `SyncProvider`, `useSyncQuery`, `useSyncMutation`, `useSyncSubscription`, and typed `useGatewayQuery`/`useGatewayMutation`/`useGatewayRunStream` shortcuts. The resilient run-event stream now surfaces a `GatewayStreamReconnectEvent` on each backoff so a UI can show connection health. @@ -104,7 +104,7 @@ The gateway gained a typed extension surface and a framework-free sync SDK so a `smithers init` now ships a metaworkflow that writes other workflows, generated from canonical sources rather than hand-embedded strings. -- **`create-workflow` turns a plain-English ask into a runnable workflow.** The seeded `.smithers/workflows/create-workflow.tsx` runs a seven-stage pipeline: clarify the spec, provision the docs and skills it needs, design the graph, an optional human approval of the design, scaffold real files, a verify loop that runs `bunx smithers-orchestrator graph <file>` until the new workflow compiles (up to three iterations, with a fix step), then document it as an agent-facing skill. Its inputs are `prompt`, an optional kebab-case `name`, and `review` (default `true`, which pauses for approval before any files are written). It is documented at [Create a workflow](/workflows/create-workflow). +- **`create-workflow` turns a plain-English ask into a runnable workflow.** The seeded `.smithers/workflows/create-workflow.tsx` runs a seven-stage pipeline: clarify the spec, provision the docs and skills it needs, design the graph, an optional human approval of the design, scaffold real files, a verify loop that runs `bunx smthrs graph <file>` until the new workflow compiles (up to three iterations, with a fix step), then document it as an agent-facing skill. Its inputs are `prompt`, an optional kebab-case `name`, and `review` (default `true`, which pauses for approval before any files are written). It is documented at [Create a workflow](/workflows/create-workflow). - **The seeded pack is generated from `.smithers`.** `scripts/generate-workflow-pack.ts` reads the canonical seeded workflows and the prompts they import straight from `.smithers/` and emits `apps/cli/src/seeded-workflow-pack.generated.js`, which `workflow-pack.js` splices into the init pack verbatim. `SEEDED_WORKFLOW_IDS` (currently `['create-workflow']`) is the registration point, every seeded file must carry a `// smithers-source: seeded` header, and `apps/cli/tests/seeded-pack-fresh.test.js` fails if the generated module drifts from the canonical sources. Adding a workflow to init is now: author it, list its id, re-run the generator. @@ -130,7 +130,7 @@ A new `smithers usage` command and a `packages/usage` engine report **how much r Smithers can now run on a jj binary it ships itself, and it tells you up front when no usable VCS tooling is present. -- **jj is bundled per platform.** Five new packages (`@smithers-orchestrator/jj-darwin-arm64`, `jj-darwin-x64`, `jj-linux-arm64`, `jj-linux-x64`, `jj-win32-x64`) are gated by `os`/`cpu` so a package manager installs only the one matching the host, and `@smithers-orchestrator/vcs` lists all five as optional dependencies. The binaries are downloaded from upstream jj releases at release time (`pnpm fetch:jj`, pinnable with `JJ_VERSION`) and are never committed, with a `prepublishOnly` guard that refuses to publish a package with an empty `bin/`. +- **jj is bundled per platform.** Five new packages (`@smthrs/jj-darwin-arm64`, `jj-darwin-x64`, `jj-linux-arm64`, `jj-linux-x64`, `jj-win32-x64`) are gated by `os`/`cpu` so a package manager installs only the one matching the host, and `@smthrs/vcs` lists all five as optional dependencies. The binaries are downloaded from upstream jj releases at release time (`pnpm fetch:jj`, pinnable with `JJ_VERSION`) and are never committed, with a `prepublishOnly` guard that refuses to publish a package with an empty `bin/`. - **Explicit binary resolution and a synchronous preflight.** `resolveJjBinary()` resolves in order `SMITHERS_JJ_PATH` override, bundled package, then bare `jj` on `PATH`, and `resolveGitBinary()` adds a matching `SMITHERS_GIT_PATH` override. `vcsToolingStatus()` is a single synchronous source of truth that probes whether `jj --version` and `git --version` actually exit `0` (2s timeout each) and returns `{ jj, git, ok }`. `smithers workflow doctor` now reports a `vcs` section and warns with install guidance when neither is usable, and the engine's worktree error distinguishes "no jj or git installed" from "not inside a repo" so it points at the real fix. The bundled jj, `SMITHERS_JJ_PATH`, and the resolution order are documented in [Installation](/installation). @@ -202,7 +202,7 @@ The Smithers PWA already runs e2e against a real local Smithers gateway. This re - **Copy page / View as Markdown menu.** Every docs page now renders a Copy page button with Copy, View as Markdown, Open in ChatGPT, and Open in Claude. -- **Coverage caught up to the code.** The `usage`, `ui`, and `gui` commands, the `@smithers-orchestrator/smithers` and `@smithers-orchestrator/usage` packages, the corrected Antigravity flag surface, the four `TASK_FORK_*` error codes, the custom-UI SDKs, the `ask-human`/`ask_human` surfaces, global workflow discovery, `init --global`, and the bundled-jj install path were all documented, and the README and docs landing copy now lead with the agent authoring the workflow via an installed skill. +- **Coverage caught up to the code.** The `usage`, `ui`, and `gui` commands, the `@smthrs/smithers` and `@smthrs/usage` packages, the corrected Antigravity flag surface, the four `TASK_FORK_*` error codes, the custom-UI SDKs, the `ask-human`/`ask_human` surfaces, global workflow discovery, `init --global`, and the bundled-jj install path were all documented, and the README and docs landing copy now lead with the agent authoring the workflow via an installed skill. ## Smithers UI Observability diff --git a/docs/references/smithers/docs/cli/overview.mdx b/docs/references/smithers/docs/cli/overview.mdx index 8bf467d3b..b357b7420 100644 --- a/docs/references/smithers/docs/cli/overview.mdx +++ b/docs/references/smithers/docs/cli/overview.mdx @@ -3,7 +3,7 @@ title: CLI description: Every Smithers CLI command in one structured catalog (TOON format). --- -Always invoke as `bunx smithers-orchestrator <command>` (see [Installation](/installation) for why). Use `--help` on any command for the canonical option list. +Always invoke as `bunx smthrs <command>` (see [Installation](/installation) for why). Use `--help` on any command for the canonical option list. ## Conventions diff --git a/docs/references/smithers/docs/cli/quickstart.mdx b/docs/references/smithers/docs/cli/quickstart.mdx index d1d9ce69a..2ea19a28f 100644 --- a/docs/references/smithers/docs/cli/quickstart.mdx +++ b/docs/references/smithers/docs/cli/quickstart.mdx @@ -8,27 +8,27 @@ description: Short operational cheatsheet. The full catalog lives in CLI. **Set up** ```bash -bunx smithers-orchestrator init # scaffold .smithers/ -bunx smithers-orchestrator init --template idea-to-tickets # scaffold with guided template next steps -bunx smithers-orchestrator starters # browse template IDs +bunx smthrs init # scaffold .smithers/ +bunx smthrs init --template idea-to-tickets # scaffold with guided template next steps +bunx smthrs starters # browse template IDs ``` **Run** ```bash -bunx smithers-orchestrator workflow run implement --prompt "…" # launch a seeded workflow -bunx smithers-orchestrator up workflow.tsx --run-id <id> --resume true # resume a paused run +bunx smthrs workflow run implement --prompt "…" # launch a seeded workflow +bunx smthrs up workflow.tsx --run-id <id> --resume true # resume a paused run ``` **Observe & control** ```bash -bunx smithers-orchestrator ps # list runs -bunx smithers-orchestrator inspect <run-id> # structured run state -bunx smithers-orchestrator logs <run-id> --tail 20 --follow # stream events -bunx smithers-orchestrator why <run-id> # why is it paused? -bunx smithers-orchestrator approve <run-id> --node <id> --by <name> # approve a paused node -bunx smithers-orchestrator cancel <run-id> # cancel a run +bunx smthrs ps # list runs +bunx smthrs inspect <run-id> # structured run state +bunx smthrs logs <run-id> --tail 20 --follow # stream events +bunx smthrs why <run-id> # why is it paused? +bunx smthrs approve <run-id> --node <id> --by <name> # approve a paused node +bunx smthrs cancel <run-id> # cancel a run ``` See [Tour](/tour) for a full worked example. See [CLI overview](/cli/overview) for the complete flag reference. diff --git a/docs/references/smithers/docs/components/approval-gate.mdx b/docs/references/smithers/docs/components/approval-gate.mdx index 8f335feec..789575e2f 100644 --- a/docs/references/smithers/docs/components/approval-gate.mdx +++ b/docs/references/smithers/docs/components/approval-gate.mdx @@ -4,7 +4,7 @@ description: Conditional approval; pauses for human when `when` is true, else au --- ```ts -import { ApprovalGate } from "smithers-orchestrator"; +import { ApprovalGate } from "smthrs"; type ApprovalGateProps = { id: string; diff --git a/docs/references/smithers/docs/components/approval.mdx b/docs/references/smithers/docs/components/approval.mdx index 87a7f50ca..a5253e3cd 100644 --- a/docs/references/smithers/docs/components/approval.mdx +++ b/docs/references/smithers/docs/components/approval.mdx @@ -4,7 +4,7 @@ description: Durable human approval; persists ApprovalDecision, selection, or ra --- ```ts -import { Approval, approvalDecisionSchema } from "smithers-orchestrator"; +import { Approval, approvalDecisionSchema } from "smthrs"; type ApprovalProps = { id: string; @@ -39,7 +39,7 @@ type ApprovalProps = { ``` ```tsx -import { Approval, Sequence, Task, Workflow, approvalDecisionSchema, createSmithers } from "smithers-orchestrator"; +import { Approval, Sequence, Task, Workflow, approvalDecisionSchema, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ diff --git a/docs/references/smithers/docs/components/aspects.mdx b/docs/references/smithers/docs/components/aspects.mdx index a2c44f866..1c0c1ad3d 100644 --- a/docs/references/smithers/docs/components/aspects.mdx +++ b/docs/references/smithers/docs/components/aspects.mdx @@ -4,7 +4,7 @@ description: Propagate token, latency, and cost budgets to descendant tasks. --- ```ts -import { Aspects } from "smithers-orchestrator"; +import { Aspects } from "smthrs"; type TokenBudgetConfig = { max: number; diff --git a/docs/references/smithers/docs/components/branch.mdx b/docs/references/smithers/docs/components/branch.mdx index 1da41c541..638b6fafd 100644 --- a/docs/references/smithers/docs/components/branch.mdx +++ b/docs/references/smithers/docs/components/branch.mdx @@ -4,7 +4,7 @@ description: Conditional fork; mounts `then` when `if` is true, otherwise `else` --- ```ts -import { Branch } from "smithers-orchestrator"; +import { Branch } from "smthrs"; type BranchProps = { if: boolean; diff --git a/docs/references/smithers/docs/components/check-suite.mdx b/docs/references/smithers/docs/components/check-suite.mdx index c280b270f..d692dafda 100644 --- a/docs/references/smithers/docs/components/check-suite.mdx +++ b/docs/references/smithers/docs/components/check-suite.mdx @@ -5,7 +5,7 @@ description: Parallel checks with auto-aggregated pass/fail verdict. ```ts // Props -import { CheckSuite } from "smithers-orchestrator"; +import { CheckSuite } from "smthrs"; type CheckConfig = { id: string; agent?: AgentLike; command?: string; label?: string }; diff --git a/docs/references/smithers/docs/components/classify-and-route.mdx b/docs/references/smithers/docs/components/classify-and-route.mdx index 37e51c44e..dde9b3cc7 100644 --- a/docs/references/smithers/docs/components/classify-and-route.mdx +++ b/docs/references/smithers/docs/components/classify-and-route.mdx @@ -5,7 +5,7 @@ description: Classify items into categories, then route each to a category-speci ```ts // Props -import { ClassifyAndRoute } from "smithers-orchestrator"; +import { ClassifyAndRoute } from "smthrs"; type CategoryConfig = { agent: AgentLike; diff --git a/docs/references/smithers/docs/components/content-pipeline.mdx b/docs/references/smithers/docs/components/content-pipeline.mdx index abc34c64a..6b7085eb8 100644 --- a/docs/references/smithers/docs/components/content-pipeline.mdx +++ b/docs/references/smithers/docs/components/content-pipeline.mdx @@ -5,7 +5,7 @@ description: Typed waterfall of refinement stages, each depending on the previou ```ts // Props -import { ContentPipeline } from "smithers-orchestrator"; +import { ContentPipeline } from "smthrs"; type ContentPipelineProps = { id?: string; diff --git a/docs/references/smithers/docs/components/continue-as-new.mdx b/docs/references/smithers/docs/components/continue-as-new.mdx index 59d15b795..d62fb81f0 100644 --- a/docs/references/smithers/docs/components/continue-as-new.mdx +++ b/docs/references/smithers/docs/components/continue-as-new.mdx @@ -4,7 +4,7 @@ description: Close the current run; start a fresh one with optional carried stat --- ```ts -import { ContinueAsNew, continueAsNew } from "smithers-orchestrator"; +import { ContinueAsNew, continueAsNew } from "smthrs"; type ContinueAsNewProps = { state?: unknown; // JSON-serializable; arrives as ctx.input.__smithersContinuation.payload diff --git a/docs/references/smithers/docs/components/debate.mdx b/docs/references/smithers/docs/components/debate.mdx index 3868d827a..9d2459830 100644 --- a/docs/references/smithers/docs/components/debate.mdx +++ b/docs/references/smithers/docs/components/debate.mdx @@ -5,7 +5,7 @@ description: Adversarial multi-round debate between proposer and opponent, then ```ts // Props -import { Debate } from "smithers-orchestrator"; +import { Debate } from "smthrs"; type DebateProps = { id?: string; // default: "debate" diff --git a/docs/references/smithers/docs/components/decision-table.mdx b/docs/references/smithers/docs/components/decision-table.mdx index cf1a20cd7..533f182bb 100644 --- a/docs/references/smithers/docs/components/decision-table.mdx +++ b/docs/references/smithers/docs/components/decision-table.mdx @@ -5,7 +5,7 @@ description: Flat rule table that replaces nested Branch trees with declarative ```ts // Props -import { DecisionTable } from "smithers-orchestrator"; +import { DecisionTable } from "smthrs"; type DecisionTableProps = { id?: string; diff --git a/docs/references/smithers/docs/components/drift-detector.mdx b/docs/references/smithers/docs/components/drift-detector.mdx index 264b3e9ce..706ff1ffd 100644 --- a/docs/references/smithers/docs/components/drift-detector.mdx +++ b/docs/references/smithers/docs/components/drift-detector.mdx @@ -5,7 +5,7 @@ description: Capture state, compare against a baseline, and alert on meaningful ```ts // Props -import { DriftDetector } from "smithers-orchestrator"; +import { DriftDetector } from "smthrs"; type DriftDetectorProps = { id?: string; // default "drift"; ids {id}-capture, {id}-compare diff --git a/docs/references/smithers/docs/components/escalation-chain.mdx b/docs/references/smithers/docs/components/escalation-chain.mdx index ba3bb0d3f..c4741a727 100644 --- a/docs/references/smithers/docs/components/escalation-chain.mdx +++ b/docs/references/smithers/docs/components/escalation-chain.mdx @@ -5,7 +5,7 @@ description: Sequential agent escalation with optional human fallback. ```ts // Props -import { EscalationChain } from "smithers-orchestrator"; +import { EscalationChain } from "smthrs"; type EscalationChainProps = { id?: string; // default "escalation" diff --git a/docs/references/smithers/docs/components/extract-prompt.mdx b/docs/references/smithers/docs/components/extract-prompt.mdx index d56912f47..687410032 100644 --- a/docs/references/smithers/docs/components/extract-prompt.mdx +++ b/docs/references/smithers/docs/components/extract-prompt.mdx @@ -4,7 +4,7 @@ description: Resolve a workflow's prompt from a provided string, a cached entry, --- <Note> - `<ExtractPrompt>` is **not** an importable runtime export of `smithers-orchestrator`. + `<ExtractPrompt>` is **not** an importable runtime export of `smthrs`. It ships as an example/pack composition pattern — a component you scaffold into your own `.smithers/components/extract-prompt/` (via `init`) and import relative to your workflow, as shown below. Copy and adapt it; it is not available from the published package. diff --git a/docs/references/smithers/docs/components/gather-and-synthesize.mdx b/docs/references/smithers/docs/components/gather-and-synthesize.mdx index 97e252b18..65115260a 100644 --- a/docs/references/smithers/docs/components/gather-and-synthesize.mdx +++ b/docs/references/smithers/docs/components/gather-and-synthesize.mdx @@ -5,7 +5,7 @@ description: Parallel gather from multiple sources, then synthesize into a unifi ```ts // Props -import { GatherAndSynthesize } from "smithers-orchestrator"; +import { GatherAndSynthesize } from "smthrs"; type SourceDef = { agent: AgentLike; diff --git a/docs/references/smithers/docs/components/human-task.mdx b/docs/references/smithers/docs/components/human-task.mdx index 25f8c9fb1..efdcc7416 100644 --- a/docs/references/smithers/docs/components/human-task.mdx +++ b/docs/references/smithers/docs/components/human-task.mdx @@ -4,7 +4,7 @@ description: Suspend until a human submits JSON matching the output schema. --- ```ts -import { HumanTask } from "smithers-orchestrator"; +import { HumanTask } from "smthrs"; type HumanTaskProps = { id: string; @@ -25,7 +25,7 @@ type HumanTaskProps = { ``` ```tsx -import { Workflow, Sequence, Task, HumanTask, createSmithers } from "smithers-orchestrator"; +import { Workflow, Sequence, Task, HumanTask, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ diff --git a/docs/references/smithers/docs/components/kanban.mdx b/docs/references/smithers/docs/components/kanban.mdx index 9c22524e4..abf0f979d 100644 --- a/docs/references/smithers/docs/components/kanban.mdx +++ b/docs/references/smithers/docs/components/kanban.mdx @@ -5,7 +5,7 @@ description: Process items through ordered columns with a pluggable ticket sourc ```ts // Props -import { Kanban } from "smithers-orchestrator"; +import { Kanban } from "smthrs"; type ColumnDef = { name: string; diff --git a/docs/references/smithers/docs/components/loop.mdx b/docs/references/smithers/docs/components/loop.mdx index a6babc745..ba269bc76 100644 --- a/docs/references/smithers/docs/components/loop.mdx +++ b/docs/references/smithers/docs/components/loop.mdx @@ -4,7 +4,7 @@ description: Re-run children until `until` is true or `maxIterations` is hit. --- ```ts -import { Loop } from "smithers-orchestrator"; +import { Loop } from "smthrs"; type LoopProps = { id?: string; // auto-generated from tree position diff --git a/docs/references/smithers/docs/components/merge-queue.mdx b/docs/references/smithers/docs/components/merge-queue.mdx index c49e6031f..23f8fb721 100644 --- a/docs/references/smithers/docs/components/merge-queue.mdx +++ b/docs/references/smithers/docs/components/merge-queue.mdx @@ -5,7 +5,7 @@ description: Queue child tasks so at most maxConcurrency run; defaults to single ```ts // Props -import { MergeQueue } from "smithers-orchestrator"; +import { MergeQueue } from "smthrs"; type MergeQueueProps = { id?: string; diff --git a/docs/references/smithers/docs/components/optimizer.mdx b/docs/references/smithers/docs/components/optimizer.mdx index 76207214e..628519c51 100644 --- a/docs/references/smithers/docs/components/optimizer.mdx +++ b/docs/references/smithers/docs/components/optimizer.mdx @@ -5,7 +5,7 @@ description: Generate, evaluate, and improve in a loop until a target score is r ```ts // Props -import { Optimizer } from "smithers-orchestrator"; +import { Optimizer } from "smthrs"; type OptimizerProps = { id?: string; // default "optimizer"; task ids {id}-generate, {id}-evaluate diff --git a/docs/references/smithers/docs/components/panel.mdx b/docs/references/smithers/docs/components/panel.mdx index 6ae63558f..c1d6774cb 100644 --- a/docs/references/smithers/docs/components/panel.mdx +++ b/docs/references/smithers/docs/components/panel.mdx @@ -5,7 +5,7 @@ description: Parallel specialist agents review the same input; a moderator synth ```ts // Props -import { Panel } from "smithers-orchestrator"; +import { Panel } from "smthrs"; type PanelistConfig = { agent: AgentLike; role?: string; label?: string }; diff --git a/docs/references/smithers/docs/components/parallel.mdx b/docs/references/smithers/docs/components/parallel.mdx index c22b4c1d0..52a3a536f 100644 --- a/docs/references/smithers/docs/components/parallel.mdx +++ b/docs/references/smithers/docs/components/parallel.mdx @@ -4,7 +4,7 @@ description: Run children concurrently with an optional concurrency cap. --- ```ts -import { Parallel } from "smithers-orchestrator"; +import { Parallel } from "smthrs"; type ParallelProps = { id?: string; diff --git a/docs/references/smithers/docs/components/poller.mdx b/docs/references/smithers/docs/components/poller.mdx index 661bcf514..eab4db010 100644 --- a/docs/references/smithers/docs/components/poller.mdx +++ b/docs/references/smithers/docs/components/poller.mdx @@ -5,7 +5,7 @@ description: Poll an external condition with configurable backoff until satisfie ```ts // Props -import { Poller } from "smithers-orchestrator"; +import { Poller } from "smthrs"; type PollerProps = { id?: string; // default "poll" diff --git a/docs/references/smithers/docs/components/review-loop.mdx b/docs/references/smithers/docs/components/review-loop.mdx index 616798d41..5d71b71e0 100644 --- a/docs/references/smithers/docs/components/review-loop.mdx +++ b/docs/references/smithers/docs/components/review-loop.mdx @@ -5,7 +5,7 @@ description: Produce, review, and fix in a loop until the reviewer approves. ```ts // Props -import { ReviewLoop } from "smithers-orchestrator"; +import { ReviewLoop } from "smthrs"; type ReviewLoopProps = { id?: string; // default "review-loop"; task ids derived as {id}-produce, {id}-review diff --git a/docs/references/smithers/docs/components/runbook.mdx b/docs/references/smithers/docs/components/runbook.mdx index 188abf59f..d5acaecad 100644 --- a/docs/references/smithers/docs/components/runbook.mdx +++ b/docs/references/smithers/docs/components/runbook.mdx @@ -5,7 +5,7 @@ description: Sequential steps with risk classification; safe auto-runs, risky/cr ```ts // Props -import { Runbook } from "smithers-orchestrator"; +import { Runbook } from "smthrs"; type RunbookProps = { id?: string; // used as step-id prefix; defaults to "runbook" when omitted diff --git a/docs/references/smithers/docs/components/saga.mdx b/docs/references/smithers/docs/components/saga.mdx index 277c62d82..62db874be 100644 --- a/docs/references/smithers/docs/components/saga.mdx +++ b/docs/references/smithers/docs/components/saga.mdx @@ -4,7 +4,7 @@ description: Forward steps with compensations run in reverse on failure. --- ```ts -import { Saga } from "smithers-orchestrator"; +import { Saga } from "smthrs"; type SagaStepDef = { id: string; diff --git a/docs/references/smithers/docs/components/sandbox.mdx b/docs/references/smithers/docs/components/sandbox.mdx index 0c7804396..f14d2d078 100644 --- a/docs/references/smithers/docs/components/sandbox.mdx +++ b/docs/references/smithers/docs/components/sandbox.mdx @@ -6,8 +6,8 @@ description: Run a child workflow through an injectable sandbox provider and col `<Sandbox>` is a task boundary for work that should execute outside the parent task process. The public component is provider-first: pass an injectable provider object or a registered provider id. `runtime` remains only for the built-in legacy local transports. ```ts -import { Sandbox } from "smithers-orchestrator"; -import type { SandboxProvider } from "smithers-orchestrator/sandbox"; +import { Sandbox } from "smthrs"; +import type { SandboxProvider } from "smthrs/sandbox"; type SandboxProps = { id: string; @@ -93,7 +93,7 @@ type SandboxProvider = { Register reusable providers when a workflow should reference them by id: ```ts -import { registerSandboxProvider } from "smithers-orchestrator/sandbox"; +import { registerSandboxProvider } from "smthrs/sandbox"; const unregister = registerSandboxProvider(provider); diff --git a/docs/references/smithers/docs/components/scan-fix-verify.mdx b/docs/references/smithers/docs/components/scan-fix-verify.mdx index 63512ec9c..4c4127e8b 100644 --- a/docs/references/smithers/docs/components/scan-fix-verify.mdx +++ b/docs/references/smithers/docs/components/scan-fix-verify.mdx @@ -5,7 +5,7 @@ description: Scan for problems, fix in parallel, verify, then report in a retry ```ts // Props -import { ScanFixVerify } from "smithers-orchestrator"; +import { ScanFixVerify } from "smthrs"; type ScanFixVerifyProps = { id?: string; // default "sfv" diff --git a/docs/references/smithers/docs/components/sequence.mdx b/docs/references/smithers/docs/components/sequence.mdx index a807b67dc..2a962e4a9 100644 --- a/docs/references/smithers/docs/components/sequence.mdx +++ b/docs/references/smithers/docs/components/sequence.mdx @@ -4,7 +4,7 @@ description: Run children in source order. --- ```ts -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; type SequenceProps = { key?: string; diff --git a/docs/references/smithers/docs/components/signal.mdx b/docs/references/smithers/docs/components/signal.mdx index d4e663518..4fdeed991 100644 --- a/docs/references/smithers/docs/components/signal.mdx +++ b/docs/references/smithers/docs/components/signal.mdx @@ -4,7 +4,7 @@ description: Typed wrapper around <WaitForEvent>; signal name equals node --- ```ts -import { Signal } from "smithers-orchestrator"; +import { Signal } from "smthrs"; type SignalProps = { id: string; // signal name and node id @@ -25,7 +25,7 @@ type SignalProps = { ``` ```tsx -import { Signal, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { Signal, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ diff --git a/docs/references/smithers/docs/components/subflow.mdx b/docs/references/smithers/docs/components/subflow.mdx index 2eb094471..fddb23df2 100644 --- a/docs/references/smithers/docs/components/subflow.mdx +++ b/docs/references/smithers/docs/components/subflow.mdx @@ -4,7 +4,7 @@ description: Invoke a child workflow with its own retry, cache, resume boundary. --- ```ts -import { Subflow } from "smithers-orchestrator"; +import { Subflow } from "smthrs"; type SubflowProps = { id: string; diff --git a/docs/references/smithers/docs/components/super-smithers.mdx b/docs/references/smithers/docs/components/super-smithers.mdx index d56c2b7c5..6dbf95112 100644 --- a/docs/references/smithers/docs/components/super-smithers.mdx +++ b/docs/references/smithers/docs/components/super-smithers.mdx @@ -4,7 +4,7 @@ description: Reads and modifies source code at runtime via a markdown strategy d --- ```ts -import { SuperSmithers } from "smithers-orchestrator"; +import { SuperSmithers } from "smthrs"; type SuperSmithersProps = { strategy: string | ReactElement; // markdown or MDX strategy document diff --git a/docs/references/smithers/docs/components/supervisor.mdx b/docs/references/smithers/docs/components/supervisor.mdx index df2ea20da..b33e1cfbc 100644 --- a/docs/references/smithers/docs/components/supervisor.mdx +++ b/docs/references/smithers/docs/components/supervisor.mdx @@ -5,7 +5,7 @@ description: Boss plans, workers run in parallel, boss reviews and re-delegates ```ts // Props -import { Supervisor } from "smithers-orchestrator"; +import { Supervisor } from "smthrs"; type SupervisorProps = { id?: string; // default: "supervisor" diff --git a/docs/references/smithers/docs/components/task.mdx b/docs/references/smithers/docs/components/task.mdx index 2390bbf48..18af988a5 100644 --- a/docs/references/smithers/docs/components/task.mdx +++ b/docs/references/smithers/docs/components/task.mdx @@ -4,7 +4,7 @@ description: Executable node; runs an agent, compute callback, or emits a static --- ```ts -import { Task } from "smithers-orchestrator"; +import { Task } from "smthrs"; type TaskProps = { id: string; diff --git a/docs/references/smithers/docs/components/timer.mdx b/docs/references/smithers/docs/components/timer.mdx index 4ae2aacc8..d280b24e2 100644 --- a/docs/references/smithers/docs/components/timer.mdx +++ b/docs/references/smithers/docs/components/timer.mdx @@ -4,7 +4,7 @@ description: Durably suspend for a relative duration or until an absolute time. --- ```ts -import { Timer } from "smithers-orchestrator"; +import { Timer } from "smthrs"; type TimerProps = { id: string; diff --git a/docs/references/smithers/docs/components/try-catch-finally.mdx b/docs/references/smithers/docs/components/try-catch-finally.mdx index e92c9660d..d2f37d433 100644 --- a/docs/references/smithers/docs/components/try-catch-finally.mdx +++ b/docs/references/smithers/docs/components/try-catch-finally.mdx @@ -4,7 +4,7 @@ description: Workflow-scoped error boundary with catch handlers and guaranteed c --- ```ts -import { TryCatchFinally } from "smithers-orchestrator"; +import { TryCatchFinally } from "smthrs"; type TryCatchFinallyProps = { id?: string; diff --git a/docs/references/smithers/docs/components/wait-for-event.mdx b/docs/references/smithers/docs/components/wait-for-event.mdx index 4ae580c90..7ad87a046 100644 --- a/docs/references/smithers/docs/components/wait-for-event.mdx +++ b/docs/references/smithers/docs/components/wait-for-event.mdx @@ -4,7 +4,7 @@ description: Durably suspend until a correlated external event arrives, or time --- ```ts -import { WaitForEvent } from "smithers-orchestrator"; +import { WaitForEvent } from "smthrs"; type WaitForEventProps = { id: string; diff --git a/docs/references/smithers/docs/components/workflow.mdx b/docs/references/smithers/docs/components/workflow.mdx index 727f185c3..72e3a9026 100644 --- a/docs/references/smithers/docs/components/workflow.mdx +++ b/docs/references/smithers/docs/components/workflow.mdx @@ -4,7 +4,7 @@ description: Root container; sequences direct children, optionally caches for re --- ```ts -import { Workflow } from "smithers-orchestrator"; +import { Workflow } from "smthrs"; type WorkflowProps = { name: string; @@ -14,7 +14,7 @@ type WorkflowProps = { ``` ```tsx -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; import { z } from "zod"; diff --git a/docs/references/smithers/docs/components/worktree.mdx b/docs/references/smithers/docs/components/worktree.mdx index bebf69c3e..fc304183a 100644 --- a/docs/references/smithers/docs/components/worktree.mdx +++ b/docs/references/smithers/docs/components/worktree.mdx @@ -4,7 +4,7 @@ description: Run a subtree in an isolated worktree (git or jj) rooted at `path`. --- ```ts -import { Worktree } from "smithers-orchestrator"; +import { Worktree } from "smthrs"; type WorktreeProps = { key?: string; diff --git a/docs/references/smithers/docs/concepts/memory.mdx b/docs/references/smithers/docs/concepts/memory.mdx index 4cfbcd094..02a3a5a81 100644 --- a/docs/references/smithers/docs/concepts/memory.mdx +++ b/docs/references/smithers/docs/concepts/memory.mdx @@ -8,7 +8,7 @@ Memory persists state **across runs**. Task outputs are per-run; memory is per-n ## Three layers ```ts -import { createMemoryStore } from "smithers-orchestrator/memory"; +import { createMemoryStore } from "smthrs/memory"; import { Database } from "bun:sqlite"; const store = createMemoryStore(new Database("smithers.db")); @@ -53,7 +53,7 @@ Pick the kind to match the lifetime: `workflow` is scoped to a workflow definiti Maintenance jobs you run periodically: ```ts -import { TtlGarbageCollector, TokenLimiter, Summarizer } from "smithers-orchestrator/memory"; +import { TtlGarbageCollector, TokenLimiter, Summarizer } from "smthrs/memory"; const gc = TtlGarbageCollector(); // expire facts past their TTL const limiter = TokenLimiter(4000); // keep history under token budget @@ -67,7 +67,7 @@ await summarizer.process(store); ## Inspect from the CLI ```bash -bunx smithers-orchestrator memory list workflow:code-review -w workflow.tsx +bunx smthrs memory list workflow:code-review -w workflow.tsx ``` The CLI currently exposes fact listing. Use the store API for writes, deletes, threads, messages, and TTL cleanup. diff --git a/docs/references/smithers/docs/concepts/openapi-tools.mdx b/docs/references/smithers/docs/concepts/openapi-tools.mdx index 133e8f668..b7656d7cf 100644 --- a/docs/references/smithers/docs/concepts/openapi-tools.mdx +++ b/docs/references/smithers/docs/concepts/openapi-tools.mdx @@ -6,7 +6,7 @@ description: Generate AI SDK tools from an OpenAPI spec. Auth, filtering, observ `createOpenApiTools` parses an OpenAPI 3.x spec and returns AI SDK tools — one per operation, with Zod schemas converted from the spec's JSON schemas. ```ts -import { createOpenApiTools } from "smithers-orchestrator/openapi"; +import { createOpenApiTools } from "smthrs/openapi"; const tools = await createOpenApiTools("./petstore.json", { baseUrl: "https://api.petstore.example.com", @@ -51,7 +51,7 @@ Pass the spec itself as the first argument to `createOpenApiTools(input, options ## CLI preview ```bash -bunx smithers-orchestrator openapi list ./api/openapi.yaml +bunx smthrs openapi list ./api/openapi.yaml ``` Lists every operationId, method, path, and summary — useful for auditing what an agent will be able to call before wiring it up. @@ -77,7 +77,7 @@ For each operation: ## Observability -Each tool call emits an `OpenApiToolCalled` event with `operationId`, `method`, `path`, `durationMs`, `status`. Visible via `bunx smithers-orchestrator events <run-id> --type openapi`. +Each tool call emits an `OpenApiToolCalled` event with `operationId`, `method`, `path`, `durationMs`, `status`. Visible via `bunx smthrs events <run-id> --type openapi`. ## Notes diff --git a/docs/references/smithers/docs/deployment/control-plane.mdx b/docs/references/smithers/docs/deployment/control-plane.mdx index 94e1940ea..e6742f17c 100644 --- a/docs/references/smithers/docs/deployment/control-plane.mdx +++ b/docs/references/smithers/docs/deployment/control-plane.mdx @@ -10,13 +10,13 @@ The control-plane package adds a durable SQLite store for multi-tenant objects Import the store from the public facade: ```ts -import { ControlPlaneStore } from "smithers-orchestrator/control-plane"; +import { ControlPlaneStore } from "smthrs/control-plane"; ``` Or from the scoped package: ```ts -import { ControlPlaneStore } from "@smithers-orchestrator/control-plane"; +import { ControlPlaneStore } from "@smthrs/control-plane"; ``` The store creates SQLite tables for: diff --git a/docs/references/smithers/docs/effect/overview.mdx b/docs/references/smithers/docs/effect/overview.mdx index ed2884a5b..d69129db7 100644 --- a/docs/references/smithers/docs/effect/overview.mdx +++ b/docs/references/smithers/docs/effect/overview.mdx @@ -18,7 +18,7 @@ you need a React-free API for generated workflow definitions. ## Minimal workflow ```ts -import { Smithers } from "smithers-orchestrator"; +import { Smithers } from "smthrs"; import { Effect, Schema } from "effect"; const inputSchema = Schema.Struct({ diff --git a/docs/references/smithers/docs/examples/agents-md.mdx b/docs/references/smithers/docs/examples/agents-md.mdx index b81b7456e..012875d7a 100644 --- a/docs/references/smithers/docs/examples/agents-md.mdx +++ b/docs/references/smithers/docs/examples/agents-md.mdx @@ -16,7 +16,7 @@ AGENTS.md sits at the repo root and is auto-injected into every AI coding sessio ````markdown # Smithers Repository — Agent Instructions -You are working in the Smithers repository, a Bun/TypeScript codebase centered on the `smithers-orchestrator` package. +You are working in the Smithers repository, a Bun/TypeScript codebase centered on the `smthrs` package. ## Repository Overview @@ -47,7 +47,7 @@ bun run typecheck ## Key Conventions -- The published package name is `smithers-orchestrator`, not `smithers` +- The published package name is `smthrs`, not `smithers` - The main public JSX API is `createSmithers(...)` - Source docs live under `docs/`; `docs/llms-full.txt` is generated from those pages - `examples/` should stay runnable against the current public API diff --git a/docs/references/smithers/docs/examples/approval-gate.mdx b/docs/references/smithers/docs/examples/approval-gate.mdx index c619f12c2..70b79339b 100644 --- a/docs/references/smithers/docs/examples/approval-gate.mdx +++ b/docs/references/smithers/docs/examples/approval-gate.mdx @@ -12,7 +12,7 @@ For a simpler inline approval using the `needsApproval` prop on a `<Task>`, see ## Workflow Definition ```tsx -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ // approval-gate.tsx import { Approval, @@ -20,7 +20,7 @@ import { Task, approvalDecisionSchema, createSmithers, -} from "smithers-orchestrator"; +} from "smthrs"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; import { z } from "zod"; @@ -91,14 +91,14 @@ export default smithers((ctx) => { ## Running ```bash -bunx smithers-orchestrator up approval-gate.tsx --input '{}' +bunx smthrs up approval-gate.tsx --input '{}' ``` ``` [approval-gate] Starting run mno345 [write-draft] Done -> { title: "Why Resumability Matters", content: "In production AI systems..." } [approve-publish] Waiting for approval... -[approval-gate] Paused — run `bunx smithers-orchestrator approve` or `bunx smithers-orchestrator deny` to continue. +[approval-gate] Paused — run `bunx smthrs approve` or `bunx smthrs deny` to continue. ``` ## Approving or Denying @@ -106,8 +106,8 @@ bunx smithers-orchestrator up approval-gate.tsx --input '{}' Approve and resume: ```bash -bunx smithers-orchestrator approve mno345 --node approve-publish -bunx smithers-orchestrator up approval-gate.tsx --run-id mno345 --resume true +bunx smthrs approve mno345 --node approve-publish +bunx smthrs up approval-gate.tsx --run-id mno345 --resume true ``` ``` @@ -120,7 +120,7 @@ bunx smithers-orchestrator up approval-gate.tsx --run-id mno345 --resume true Deny and halt: ```bash -bunx smithers-orchestrator deny mno345 --node approve-publish +bunx smthrs deny mno345 --node approve-publish ``` ``` @@ -131,7 +131,7 @@ bunx smithers-orchestrator deny mno345 --node approve-publish ## Listing Pending Approvals ```bash -bunx smithers-orchestrator ps --status waiting-approval +bunx smthrs ps --status waiting-approval ``` ```json diff --git a/docs/references/smithers/docs/examples/claude-plugin-orchestrator.mdx b/docs/references/smithers/docs/examples/claude-plugin-orchestrator.mdx index 5aa1a9ada..1b3b8563b 100644 --- a/docs/references/smithers/docs/examples/claude-plugin-orchestrator.mdx +++ b/docs/references/smithers/docs/examples/claude-plugin-orchestrator.mdx @@ -1,24 +1,24 @@ --- title: "Ghost: Claude Code Plugin — Smithers Orchestrator" -description: "Example from ~/.claude/plugins/smithers-orchestrator/ — A Claude Code plugin for multi-agent orchestration with monitoring and phase tracking." +description: "Example from ~/.claude/plugins/smthrs/ — A Claude Code plugin for multi-agent orchestration with monitoring and phase tracking." --- # Claude Code Plugin — Smithers Orchestrator <Note> -**Ghost doc** — Real Claude Code plugin at `~/.claude/plugins/smithers-orchestrator/`. +**Ghost doc** — Real Claude Code plugin at `~/.claude/plugins/smthrs/`. </Note> ## plugin.json ```json { - "name": "smithers-orchestrator", + "name": "smthrs", "version": "1.0.0", "description": "Multi-agent orchestration framework using Smithers.", "author": "Smithers Framework Contributors", "license": "MIT", - "skills": ["skills/smithers-orchestrator"] + "skills": ["skills/smthrs"] } ``` @@ -34,8 +34,8 @@ description: "Example from ~/.claude/plugins/smithers-orchestrator/ — A Claude ## Workflow Template ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task, Workflow } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task, Workflow } from "smthrs"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; import { z } from "zod"; diff --git a/docs/references/smithers/docs/examples/claude-plugin-skill.mdx b/docs/references/smithers/docs/examples/claude-plugin-skill.mdx index c7eca3517..15b56f8ed 100644 --- a/docs/references/smithers/docs/examples/claude-plugin-skill.mdx +++ b/docs/references/smithers/docs/examples/claude-plugin-skill.mdx @@ -28,7 +28,7 @@ description: "Example from ~/.claude/plugins/smithers/ — A Claude Code plugin ```markdown --- -name: smithers-orchestrator +name: smthrs description: Create and monitor multi-agent AI orchestrations using Smithers framework. Use when user wants to coordinate multiple AI agents, create complex workflows, build agent pipelines, or mentions "smithers", "multi-agent", "orchestration", "workflow", "agent coordination". Strongly recommends plan mode for orchestrations with 3+ phases. allowed-tools: - Read @@ -50,9 +50,9 @@ recommend-plan-mode: true - Build agent pipelines with state management ## Quick Start -1. Initialize: `bunx smithers-orchestrator init` (creates `.smithers/main.tsx`) +1. Initialize: `bunx smthrs init` (creates `.smithers/main.tsx`) 2. Edit `.smithers/main.tsx` to define your agent workflow -3. Monitor: `bunx smithers-orchestrator monitor` +3. Monitor: `bunx smthrs monitor` ``` ## EXAMPLES.md diff --git a/docs/references/smithers/docs/examples/dynamic-plan.mdx b/docs/references/smithers/docs/examples/dynamic-plan.mdx index 5269c0249..61f54737b 100644 --- a/docs/references/smithers/docs/examples/dynamic-plan.mdx +++ b/docs/references/smithers/docs/examples/dynamic-plan.mdx @@ -10,9 +10,9 @@ description: A workflow that analyzes input and branches between a simple or com ## Workflow Definition ```tsx -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ // dynamic-plan.tsx -import { createSmithers, Task, Sequence, Branch } from "smithers-orchestrator"; +import { createSmithers, Task, Sequence, Branch } from "smthrs"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; import { z } from "zod"; @@ -88,7 +88,7 @@ export default smithers((ctx) => { ## Running ```bash -bunx smithers-orchestrator up dynamic-plan.tsx --input '{}' +bunx smthrs up dynamic-plan.tsx --input '{}' ``` High complexity path: diff --git a/docs/references/smithers/docs/examples/generate-llms-txt.mdx b/docs/references/smithers/docs/examples/generate-llms-txt.mdx index 73878e815..18a07222b 100644 --- a/docs/references/smithers/docs/examples/generate-llms-txt.mdx +++ b/docs/references/smithers/docs/examples/generate-llms-txt.mdx @@ -8,7 +8,7 @@ description: "Example from scripts/generate-llms.ts — A utility script that ge <Note> **Ghost doc** — Real utility script at `scripts/generate-llms.ts`. -This is an internal script used to maintain the docs, not a smithers-orchestrator workflow example. +This is an internal script used to maintain the docs, not a smthrs workflow example. </Note> ## Source diff --git a/docs/references/smithers/docs/examples/hello-world.mdx b/docs/references/smithers/docs/examples/hello-world.mdx index f95e2de0c..c715fdfb2 100644 --- a/docs/references/smithers/docs/examples/hello-world.mdx +++ b/docs/references/smithers/docs/examples/hello-world.mdx @@ -8,9 +8,9 @@ description: A minimal workflow with a single agent task that generates a greeti ## Workflow Definition ```tsx -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ // hello-world.tsx -import { createSmithers, Sequence } from "smithers-orchestrator"; +import { createSmithers, Sequence } from "smthrs"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; import { z } from "zod"; @@ -40,7 +40,7 @@ export default smithers((ctx) => ( ## Running ```bash -bunx smithers-orchestrator up hello-world.tsx --input '{}' +bunx smthrs up hello-world.tsx --input '{}' ``` ``` diff --git a/docs/references/smithers/docs/examples/loop.mdx b/docs/references/smithers/docs/examples/loop.mdx index e0c4e8fb7..f825ed842 100644 --- a/docs/references/smithers/docs/examples/loop.mdx +++ b/docs/references/smithers/docs/examples/loop.mdx @@ -10,9 +10,9 @@ description: An iterative review loop where an agent writes code and a reviewer ## Workflow Definition ```tsx -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ // review-loop.tsx -import { createSmithers, Task, Sequence, Loop } from "smithers-orchestrator"; +import { createSmithers, Task, Sequence, Loop } from "smthrs"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; import { z } from "zod"; @@ -94,7 +94,7 @@ export default smithers((ctx) => { ## Running ```bash -bunx smithers-orchestrator up review-loop.tsx --input '{}' +bunx smthrs up review-loop.tsx --input '{}' ``` ``` diff --git a/docs/references/smithers/docs/examples/multi-agent-review.mdx b/docs/references/smithers/docs/examples/multi-agent-review.mdx index f075e28b3..d3f0b6c4d 100644 --- a/docs/references/smithers/docs/examples/multi-agent-review.mdx +++ b/docs/references/smithers/docs/examples/multi-agent-review.mdx @@ -10,9 +10,9 @@ Two reviewers run concurrently via `<Parallel>`, then an aggregator produces a f ## Workflow Definition ```tsx -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ // multi-agent-review.tsx -import { createSmithers, Task, Sequence, Parallel } from "smithers-orchestrator"; +import { createSmithers, Task, Sequence, Parallel } from "smthrs"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; import { z } from "zod"; @@ -84,7 +84,7 @@ export default smithers((ctx) => { ## Running ```bash -bunx smithers-orchestrator up multi-agent-review.tsx --input '{}' +bunx smthrs up multi-agent-review.tsx --input '{}' ``` ``` diff --git a/docs/references/smithers/docs/examples/tools-agent.mdx b/docs/references/smithers/docs/examples/tools-agent.mdx index 3383203be..8699211fc 100644 --- a/docs/references/smithers/docs/examples/tools-agent.mdx +++ b/docs/references/smithers/docs/examples/tools-agent.mdx @@ -10,12 +10,12 @@ An agent with filesystem and shell tools for codebase analysis, log searching, o ## Workflow Definition ```tsx -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ // tools-agent.tsx -import { createSmithers, Task, Sequence } from "smithers-orchestrator"; +import { createSmithers, Task, Sequence } from "smthrs"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { tools } from "smithers-orchestrator"; +import { tools } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -63,7 +63,7 @@ export default smithers((ctx) => ( ## Running ```bash -bunx smithers-orchestrator up tools-agent.tsx --input '{}' +bunx smthrs up tools-agent.tsx --input '{}' ``` ``` @@ -103,7 +103,7 @@ bunx smithers-orchestrator up tools-agent.tsx --input '{}' | `retries` | `2` | Retry on failure (e.g., grep typo on first pass). | ```tsx -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ <Task id="search" output={outputs.searchResult} diff --git a/docs/references/smithers/docs/examples/workflow-approval.mdx b/docs/references/smithers/docs/examples/workflow-approval.mdx index 24570c443..a2181a480 100644 --- a/docs/references/smithers/docs/examples/workflow-approval.mdx +++ b/docs/references/smithers/docs/examples/workflow-approval.mdx @@ -14,9 +14,9 @@ For a richer approval flow with custom request summaries and an `<Approval>` com ## Source ```tsx -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ // workflows/approval.tsx -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { z } from "zod"; const { Workflow, Sequence, Task, smithers, outputs } = createSmithers({ @@ -52,7 +52,7 @@ export default smithers((ctx) => ( ## Running ```bash -bunx smithers-orchestrator up workflows/approval.tsx --input '{"name": "Deploy v2"}' +bunx smthrs up workflows/approval.tsx --input '{"name": "Deploy v2"}' ``` The workflow pauses at the approval gate: @@ -60,14 +60,14 @@ The workflow pauses at the approval gate: ``` [approval] Starting run mno345 [approve] Waiting for approval... -[approval] Paused — run `bunx smithers-orchestrator approve` or `bunx smithers-orchestrator deny` to continue. +[approval] Paused — run `bunx smthrs approve` or `bunx smthrs deny` to continue. ``` Approve and resume: ```bash -bunx smithers-orchestrator approve mno345 --node approve -bunx smithers-orchestrator up workflows/approval.tsx --run-id mno345 --resume true +bunx smthrs approve mno345 --node approve +bunx smthrs up workflows/approval.tsx --run-id mno345 --resume true ``` ``` diff --git a/docs/references/smithers/docs/examples/workflow-hello.mdx b/docs/references/smithers/docs/examples/workflow-hello.mdx index 248befcf8..a7d4e844b 100644 --- a/docs/references/smithers/docs/examples/workflow-hello.mdx +++ b/docs/references/smithers/docs/examples/workflow-hello.mdx @@ -12,9 +12,9 @@ Demonstrates literal output with no AI agent. For a hello-world workflow that us ## Source ```tsx -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ // workflows/hello.tsx -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { z } from "zod"; const { Workflow, Task, smithers, outputs } = createSmithers({ @@ -40,7 +40,7 @@ export default smithers((ctx) => ( ## Running ```bash -bunx smithers-orchestrator up workflows/hello.tsx --input '{"name": "World"}' +bunx smthrs up workflows/hello.tsx --input '{"name": "World"}' ``` ``` diff --git a/docs/references/smithers/docs/examples/workflow-quickstart.mdx b/docs/references/smithers/docs/examples/workflow-quickstart.mdx index cad506a7b..ecf470a39 100644 --- a/docs/references/smithers/docs/examples/workflow-quickstart.mdx +++ b/docs/references/smithers/docs/examples/workflow-quickstart.mdx @@ -1,20 +1,20 @@ --- title: "Workflow Quickstart" -description: "A two-agent sequential smithers-orchestrator workflow where a planner task feeds a briefing task through persisted structured output." +description: "A two-agent sequential smthrs workflow where a planner task feeds a briefing task through persisted structured output." --- # Workflow Quickstart <Note> -Standalone `smithers-orchestrator` quickstart example. A planner task feeds a briefing task through persisted workflow output. +Standalone `smthrs` quickstart example. A planner task feeds a briefing task through persisted workflow output. </Note> ## Source ```tsx -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ // workflows/quickstart.tsx -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { ToolLoopAgent as Agent, Output } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; import { z } from "zod"; @@ -73,7 +73,7 @@ Write a brief based on the plan. The "stepCount" must equal the number of steps. ## Running ```bash -bunx smithers-orchestrator up workflows/quickstart.tsx --input '{"goal": "Build a CLI tool for managing dotfiles"}' +bunx smthrs up workflows/quickstart.tsx --input '{"goal": "Build a CLI tool for managing dotfiles"}' ``` ``` diff --git a/docs/references/smithers/docs/examples/workflow-ui-react.mdx b/docs/references/smithers/docs/examples/workflow-ui-react.mdx index 39c879471..60627ef69 100644 --- a/docs/references/smithers/docs/examples/workflow-ui-react.mdx +++ b/docs/references/smithers/docs/examples/workflow-ui-react.mdx @@ -3,7 +3,7 @@ title: Workflow UI (React) description: A complete `gateway-react` workflow UI you can drop next to a workflow — boot, run state, pushed live events, metrics, node output, approvals, and a stale-data-free render model. --- -This example is a minimal first-class React UI for a workflow that ships with the Gateway. It demonstrates every piece a real UI exercises: the `createGatewayReactRoot` bootstrap, reading `?runId=` and the boot config, live event subscription, node-output reads, a lifecycle action, and an approvals strip — all in one file. Drop it at `.smithers/ui/<your-workflow>.tsx`, register your workflow with `ui: { entry: ".smithers/ui/<your-workflow>.tsx" }`, and open it with `bunx smithers-orchestrator ui`. +This example is a minimal first-class React UI for a workflow that ships with the Gateway. It demonstrates every piece a real UI exercises: the `createGatewayReactRoot` bootstrap, reading `?runId=` and the boot config, live event subscription, node-output reads, a lifecycle action, and an approvals strip — all in one file. Drop it at `.smithers/ui/<your-workflow>.tsx`, register your workflow with `ui: { entry: ".smithers/ui/<your-workflow>.tsx" }`, and open it with `bunx smthrs ui`. For the full conceptual walkthrough, see [Custom Workflow UIs](/guides/custom-workflow-ui). @@ -20,7 +20,7 @@ import { useGatewayRun, useGatewayRunEvents, useGatewayRuns, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; function runIdFromUrl(): string | undefined { if (typeof location === "undefined") return undefined; @@ -181,7 +181,7 @@ createGatewayReactRoot(<App />); In your workflow's gateway setup (the `bun .smithers/scripts/<workflow>.ts` boot, or your hosted server): ```ts -import { Gateway } from "smithers-orchestrator"; +import { Gateway } from "smthrs"; import { demoReactUi } from "./.smithers/workflows/demo-react-ui"; const gateway = new Gateway({ @@ -204,8 +204,8 @@ await gateway.listen({ port: 7331 }); Then: ```bash -bunx smithers-orchestrator up demo-react-ui -d -bunx smithers-orchestrator ui # opens the bundle in your browser +bunx smthrs up demo-react-ui -d +bunx smthrs ui # opens the bundle in your browser ``` The bundle is served at `/workflows/demo-react-ui`. The HTML shell injects `__SMITHERS_GATEWAY_UI__` and `?runId=` before your script runs; `createGatewayReactRoot` picks both up automatically. diff --git a/docs/references/smithers/docs/examples/workflow-ui-vanilla.mdx b/docs/references/smithers/docs/examples/workflow-ui-vanilla.mdx index 7d64912e6..5d27974e5 100644 --- a/docs/references/smithers/docs/examples/workflow-ui-vanilla.mdx +++ b/docs/references/smithers/docs/examples/workflow-ui-vanilla.mdx @@ -1,16 +1,16 @@ --- title: Workflow UI (Vanilla) -description: A complete zero-dep workflow UI on `@smithers-orchestrator/gateway-client` — boot, live events, node output, approvals, all in one file. +description: A complete zero-dep workflow UI on `@smthrs/gateway-client` — boot, live events, node output, approvals, all in one file. --- -This is the same workflow UI as the [React example](/examples/workflow-ui-react), built directly on `@smithers-orchestrator/gateway-client` with no framework. Pick this shape when you want a tiny bundle, when you already own your render layer (Solid, Lit, Mithril, plain DOM), or when you need the UI to render before any framework has booted. +This is the same workflow UI as the [React example](/examples/workflow-ui-react), built directly on `@smthrs/gateway-client` with no framework. Pick this shape when you want a tiny bundle, when you already own your render layer (Solid, Lit, Mithril, plain DOM), or when you need the UI to render before any framework has booted. For the full conceptual walkthrough, see [Custom Workflow UIs](/guides/custom-workflow-ui). ## The bundle ```ts -import { SmithersGatewayClient } from "smithers-orchestrator/gateway-client"; +import { SmithersGatewayClient } from "smthrs/gateway-client"; const WORKFLOW_KEY = "demo-vanilla-ui"; diff --git a/docs/references/smithers/docs/examples/worktree-feature-run-sh.mdx b/docs/references/smithers/docs/examples/worktree-feature-run-sh.mdx index d7b1dbd01..d971a5d58 100644 --- a/docs/references/smithers/docs/examples/worktree-feature-run-sh.mdx +++ b/docs/references/smithers/docs/examples/worktree-feature-run-sh.mdx @@ -53,7 +53,7 @@ bun "$SMITHERS_CLI" up workflow.tsx --input '{}' --root "$ROOT_DIR" "@ai-sdk/anthropic": "^3.0.71", "@ai-sdk/openai": "^3.0.53", "ai": "^6.0.168", - "smithers-orchestrator": "file:../../", + "smthrs": "file:../../", "zod": "^4.3.6" } } @@ -75,7 +75,7 @@ export const STEPS_PER_ROUND = 4; ```ts // scripts/worktree-feature/preload.ts -import { mdxPlugin } from "smithers-orchestrator/mdx-plugin"; +import { mdxPlugin } from "smthrs/mdx-plugin"; mdxPlugin(); ``` @@ -83,7 +83,7 @@ mdxPlugin(); ## Key Details - `USE_CLI_AGENTS=1` selects CLI agents (Claude Code / Codex CLI) over API agents. `SMITHERS_UNSAFE=1` enables `dangerouslySkipPermissions` for unattended execution — this bypasses Claude Code's permission prompts so the workflow can run headlessly. Only use it in a sandboxed environment; the agent will have unrestricted filesystem and shell access. -- `"smithers-orchestrator": "file:../../"` links to the local package for co-development. +- `"smthrs": "file:../../"` links to the local package for co-development. - `preload.ts` registers the MDX plugin, enabling `.mdx` imports as JSX components. - `--root` passes the repository root so agents access the full codebase, not just the workflow directory. - `smithers up workflow.tsx --run-id <run-id> --resume true` resumes from the last checkpoint. diff --git a/docs/references/smithers/docs/examples/worktree-feature-workflow.mdx b/docs/references/smithers/docs/examples/worktree-feature-workflow.mdx index 982842bcf..cbb04dbbd 100644 --- a/docs/references/smithers/docs/examples/worktree-feature-workflow.mdx +++ b/docs/references/smithers/docs/examples/worktree-feature-workflow.mdx @@ -43,7 +43,7 @@ export const { Workflow, Task, useCtx, smithers, tables, outputs } = createSmith ```tsx // scripts/worktree-feature/workflow.tsx -import { Sequence, Branch } from "smithers-orchestrator"; +import { Sequence, Branch } from "smthrs"; import { Discover, TicketPipeline } from "./components"; import { Workflow, smithers, outputs } from "./smithers"; @@ -74,7 +74,7 @@ export default smithers((ctx) => { import { ToolLoopAgent as Agent, stepCountIs } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; import { openai } from "@ai-sdk/openai"; -import { ClaudeCodeAgent, CodexAgent } from "smithers-orchestrator"; +import { ClaudeCodeAgent, CodexAgent } from "smthrs"; import { SYSTEM_PROMPT } from "./system-prompt"; const USE_CLI = process.env.USE_CLI_AGENTS !== "0"; @@ -109,7 +109,7 @@ export const codex = new CodexAgent({ ```tsx // scripts/worktree-feature/components/ValidationLoop.tsx -import { Loop, Sequence } from "smithers-orchestrator"; +import { Loop, Sequence } from "smthrs"; import { Implement } from "./Implement"; import { Validate } from "./Validate"; import { Review } from "./Review"; @@ -149,7 +149,7 @@ export function ValidationLoop({ ticket }: { ticket: { id: string } }) { ```tsx // scripts/worktree-feature/components/Review.tsx -import { Parallel } from "smithers-orchestrator"; +import { Parallel } from "smthrs"; import { Task, useCtx, outputs } from "../smithers"; import { claude, codex } from "../agents"; import ReviewPrompt from "./Review.mdx"; @@ -191,7 +191,7 @@ export function Review({ ticket }: { ticket: { id: string; title: string } }) { ```tsx // scripts/worktree-feature/components/TicketPipeline.tsx -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { ValidationLoop } from "./ValidationLoop"; import { Report } from "./Report"; import { useCtx } from "../smithers"; diff --git a/docs/references/smithers/docs/guide/get-started.mdx b/docs/references/smithers/docs/guide/get-started.mdx index 0242a798d..12ffecc14 100644 --- a/docs/references/smithers/docs/guide/get-started.mdx +++ b/docs/references/smithers/docs/guide/get-started.mdx @@ -16,8 +16,8 @@ Three steps. Each is one line your agent runs under the hood, then a sentence yo Two commands wire Smithers into every coding agent on your machine (Claude Code, Codex, Cursor, Copilot, and ~20 more), no per-agent config by hand. ```bash -bunx smithers-orchestrator skills add # one skill per CLI verb, so the agent can run any command -bunx smithers-orchestrator mcp add # register Smithers as an MCP server in each one +bunx smthrs skills add # one skill per CLI verb, so the agent can run any command +bunx smthrs mcp add # register Smithers as an MCP server in each one ``` `skills add` drops a skill for each Smithers command (`smithers ps`, `smithers up`, `smithers inspect`, …) so the agent runs any verb without reading `--help` first; `mcp add` wires in the Smithers MCP server. Together they make the agent *able* to operate Smithers. @@ -45,7 +45,7 @@ The full per-agent matrix and this curated onboarding skill are covered in [Inst From inside your project, scaffold the local workflow pack. ```bash -bunx smithers-orchestrator init +bunx smthrs init ``` This drops a `.smithers/` folder with task-specific and project-specific workflows already built: `implement`, `plan`, `research-plan-implement`, `review`, `debug`, `ralph`, and more. These are the recipes your agent will pick from. Nothing to author yet. diff --git a/docs/references/smithers/docs/guides/agent-operating-playbook.mdx b/docs/references/smithers/docs/guides/agent-operating-playbook.mdx index 8f9c550d3..acab6765a 100644 --- a/docs/references/smithers/docs/guides/agent-operating-playbook.mdx +++ b/docs/references/smithers/docs/guides/agent-operating-playbook.mdx @@ -174,26 +174,26 @@ If you cannot see the run, you cannot operate it well. For local and development work, use the CLI surfaces yourself: ```bash -bunx smithers-orchestrator ps -bunx smithers-orchestrator inspect <run-id> --watch -bunx smithers-orchestrator events <run-id> --watch -bunx smithers-orchestrator node <run-id> <node-id> -bunx smithers-orchestrator scores <run-id> -bunx smithers-orchestrator why <run-id> +bunx smthrs ps +bunx smthrs inspect <run-id> --watch +bunx smthrs events <run-id> --watch +bunx smthrs node <run-id> <node-id> +bunx smthrs scores <run-id> +bunx smthrs why <run-id> ``` Use serve mode when you need HTTP status, SSE events, remote approvals, or Prometheus metrics: ```bash -bunx smithers-orchestrator up workflow.tsx --serve --metrics --port 7331 +bunx smthrs up workflow.tsx --serve --metrics --port 7331 ``` Use the observability stack when the work needs traces, metrics, dashboards, or a reviewer evidence bundle: ```bash -bunx smithers-orchestrator observability +bunx smthrs observability ``` Enable OpenTelemetry export when you need trace-level proof, then include the @@ -218,8 +218,8 @@ plan, gates, and evidence live." Do not phrase it as homework for the human. Use hot mode while authoring or tuning a workflow: ```bash -bunx smithers-orchestrator graph workflow.tsx -bunx smithers-orchestrator up workflow.tsx --hot true --input '{"prompt":"..."}' +bunx smthrs graph workflow.tsx +bunx smthrs up workflow.tsx --hot true --input '{"prompt":"..."}' ``` The graph command validates the rendered shape without executing the whole job. diff --git a/docs/references/smithers/docs/guides/alerting.mdx b/docs/references/smithers/docs/guides/alerting.mdx index 0b9ab0ba8..e03ced47f 100644 --- a/docs/references/smithers/docs/guides/alerting.mdx +++ b/docs/references/smithers/docs/guides/alerting.mdx @@ -18,7 +18,7 @@ The API is declarative: import { createSmithers, type SmithersAlertPolicy, -} from "smithers-orchestrator"; +} from "smthrs"; import { z } from "zod"; const platformAlerts: SmithersAlertPolicy = { diff --git a/docs/references/smithers/docs/guides/context-engineering.mdx b/docs/references/smithers/docs/guides/context-engineering.mdx index 91f3836d0..a101eb0fb 100644 --- a/docs/references/smithers/docs/guides/context-engineering.mdx +++ b/docs/references/smithers/docs/guides/context-engineering.mdx @@ -45,7 +45,7 @@ You should not need to know any of the above to get a workflow. The "context engineering for you" layer: ```bash -bunx smithers-orchestrator workflow run create-workflow \ +bunx smthrs workflow run create-workflow \ --prompt "Watch a landing request and auto-land it once CI is green" ``` diff --git a/docs/references/smithers/docs/guides/custom-workflow-ui.mdx b/docs/references/smithers/docs/guides/custom-workflow-ui.mdx index 9e4f09296..8aec25c01 100644 --- a/docs/references/smithers/docs/guides/custom-workflow-ui.mdx +++ b/docs/references/smithers/docs/guides/custom-workflow-ui.mdx @@ -21,7 +21,7 @@ Three pieces collaborate: ## Two SDKs: pick by appetite -| | `smithers-orchestrator/gateway-client` | `smithers-orchestrator/gateway-react` | +| | `smthrs/gateway-client` | `smthrs/gateway-react` | |---|---|---| | **Footprint** | One zero-dep class, no framework | React 19 + ReactDOM + hooks | | **Boot** | `new SmithersGatewayClient()` | `createGatewayReactRoot(<App />)` | @@ -30,7 +30,7 @@ Three pieces collaborate: | **Writes** | `client.submitApproval(...)` | `useGatewayActions().submitApproval(...)` | | **Use when** | You want one tiny bundle, or you already own your render layer (Solid, Lit, vanilla DOM) | You are writing a React UI and want the stale-data-free model baked in | -Both SDKs talk to the same Gateway and produce the same wire frames. Pick by appetite — not by capability. The vanilla SDK is published as `@smithers-orchestrator/gateway-client`; the React layer is `@smithers-orchestrator/gateway-react` and re-exports nothing the client does not. +Both SDKs talk to the same Gateway and produce the same wire frames. Pick by appetite — not by capability. The vanilla SDK is published as `@smthrs/gateway-client`; the React layer is `@smthrs/gateway-react` and re-exports nothing the client does not. ## The boot config @@ -73,7 +73,7 @@ import { useGatewayRunEvents, useGatewayNodeOutput, useGatewayActions, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; const runId = new URLSearchParams(location.search).get("runId") ?? undefined; @@ -118,7 +118,7 @@ The React hooks all live in `packages/gateway-react/src` and follow one rule: ** The same primitives in zero-dep JS: ```ts -import { SmithersGatewayClient } from "smithers-orchestrator/gateway-client"; +import { SmithersGatewayClient } from "smthrs/gateway-client"; const runId = new URLSearchParams(location.search).get("runId"); const client = new SmithersGatewayClient(); @@ -237,7 +237,7 @@ The `ws: true` flag goes on `/v1/rpc` — that is the path the Gateway upgrades ```bash export SMITHERS_GATEWAY_PROXY_TARGET=http://127.0.0.1:7331 -bunx smithers-orchestrator up <workflow> -d # or `bun .smithers/scripts/<workflow>.ts` +bunx smthrs up <workflow> -d # or `bun .smithers/scripts/<workflow>.ts` (cd apps/smithers && bun dev) ``` @@ -272,19 +272,19 @@ The same shape works behind any reverse proxy (Cloudflare, Cloudflare Access, Ca ```bash # 1. Boot the Gateway with your workflow registered. -bunx smithers-orchestrator up <workflow> -d # or `bun .smithers/scripts/<workflow>.ts` +bunx smthrs up <workflow> -d # or `bun .smithers/scripts/<workflow>.ts` # 2. Open the UI in your default browser at the most recent run. -bunx smithers-orchestrator ui # picks the most recent run -bunx smithers-orchestrator ui <runId> # specific run -bunx smithers-orchestrator ui <runId> --gateway http://127.0.0.1:7331 +bunx smthrs ui # picks the most recent run +bunx smthrs ui <runId> # specific run +bunx smthrs ui <runId> --gateway http://127.0.0.1:7331 # 3. (Optional) Boot the apps/smithers PWA against the same Gateway. cd apps/smithers && bun dev # Visit http://localhost:5173/gw/<workflowKey>/<runId> ``` -The `smithers ui` command resolves the most recent run when invoked without an id, prints the URL it opened, and exits — it does not hold the run alive. Pair it with `bunx smithers-orchestrator up <workflow>` in a separate terminal. +The `smithers ui` command resolves the most recent run when invoked without an id, prints the URL it opened, and exits — it does not hold the run alive. Pair it with `bunx smthrs up <workflow>` in a separate terminal. ## Sample tests @@ -307,8 +307,8 @@ Add your own fixture under the same folder and register it with `gateway.registe ## Reference -- **Package:** [`@smithers-orchestrator/gateway-react`](/reference/package-configuration#workspace-packages) — React hooks and `createGatewayReactRoot`. -- **Package:** [`@smithers-orchestrator/gateway-client`](/reference/package-configuration#workspace-packages) — vanilla `SmithersGatewayClient` and types. +- **Package:** [`@smthrs/gateway-react`](/reference/package-configuration#workspace-packages) — React hooks and `createGatewayReactRoot`. +- **Package:** [`@smthrs/gateway-client`](/reference/package-configuration#workspace-packages) — vanilla `SmithersGatewayClient` and types. - **Protocol:** [Gateway](/integrations/gateway) — full RPC method list, WebSocket frame shapes, error codes, scopes. - **CLI:** [`smithers ui`](/cli/overview#smithers-ui) — open a workflow's custom UI in your browser for a given run. - **Examples:** [Workflow UI (React)](/examples/workflow-ui-react), [Workflow UI (Vanilla)](/examples/workflow-ui-vanilla). diff --git a/docs/references/smithers/docs/guides/evals-quickstart.mdx b/docs/references/smithers/docs/guides/evals-quickstart.mdx index dbac7e322..f4e00abe6 100644 --- a/docs/references/smithers/docs/guides/evals-quickstart.mdx +++ b/docs/references/smithers/docs/guides/evals-quickstart.mdx @@ -46,7 +46,7 @@ For standard workflows, output assertions match the persisted output snapshot, k ## 2. Dry-run the plan ```bash -bunx smithers-orchestrator eval workflow.tsx --cases evals/smoke.jsonl --suite smoke --dry-run +bunx smthrs eval workflow.tsx --cases evals/smoke.jsonl --suite smoke --dry-run ``` Dry-run mode prints the planned case IDs and run IDs without touching the database. Pass `--run-label <label>` when you want the dry-run and execution to use the same generated IDs. @@ -54,7 +54,7 @@ Dry-run mode prints the planned case IDs and run IDs without touching the databa ## 3. Execute the suite ```bash -bunx smithers-orchestrator eval workflow.tsx --cases evals/smoke.jsonl --suite smoke --force +bunx smthrs eval workflow.tsx --cases evals/smoke.jsonl --suite smoke --force ``` By default, the report is written to `.smithers/evals/smoke.json`. Use `--report path/to/report.json` to choose a different location. @@ -66,7 +66,7 @@ The command exits `0` when all cases pass and `1` when any case fails. Invalid c ## 4. Use structured output in CI ```bash -bunx smithers-orchestrator eval workflow.tsx \ +bunx smthrs eval workflow.tsx \ --cases evals/smoke.jsonl \ --suite smoke \ --report artifacts/smoke-eval.json \ diff --git a/docs/references/smithers/docs/guides/workflow-optimization.mdx b/docs/references/smithers/docs/guides/workflow-optimization.mdx index 8bb6ae5b0..6131de4d3 100644 --- a/docs/references/smithers/docs/guides/workflow-optimization.mdx +++ b/docs/references/smithers/docs/guides/workflow-optimization.mdx @@ -6,7 +6,7 @@ description: Optimize Smithers workflow prompts against eval suites with GEPA-st Run `smithers optimize` to generate improved prompts for agent tasks via GEPA, verify the improvement against your eval suite, and save the result as a reusable artifact. ```bash -bunx smithers-orchestrator optimize workflow.tsx \ +bunx smthrs optimize workflow.tsx \ --cases evals/smoke.jsonl \ --suite smoke-gepa \ --provider cerebras \ @@ -26,7 +26,7 @@ The command writes the artifact only when the optimized score improves by at lea Apply the optimized prompts to future evals with `--optimization`: ```bash -bunx smithers-orchestrator eval workflow.tsx \ +bunx smthrs eval workflow.tsx \ --cases evals/smoke.jsonl \ --suite smoke-optimized \ --optimization .smithers/optimizations/smoke-gepa.json @@ -39,7 +39,7 @@ The artifact patches only agent-backed `<Task>` prompts by `nodeId`. Workflow st Example: the following run demonstrates a baseline failure corrected by a GEPA-generated patch. The baseline prompt did not include the required optimization token, so the eval failed. Cerebras GEPA generated a prompt patch that included the missing requirement, and the optimized eval passed. ```bash -CEREBRAS_API_KEY=... bunx smithers-orchestrator optimize workflow.tsx \ +CEREBRAS_API_KEY=... bunx smthrs optimize workflow.tsx \ --cases evals/opt.jsonl \ --suite cerebras-proof \ --provider cerebras \ diff --git a/docs/references/smithers/docs/how-it-works.mdx b/docs/references/smithers/docs/how-it-works.mdx index 41b5c9f7d..ea93664ca 100644 --- a/docs/references/smithers/docs/how-it-works.mdx +++ b/docs/references/smithers/docs/how-it-works.mdx @@ -225,7 +225,7 @@ Replay with `--restore-vcs` checks out the jj revision the snapshot was taken at Attach evaluators to a Task. They run **after** completion and never block. ```tsx -import { schemaAdherenceScorer, latencyScorer } from "smithers-orchestrator/scorers"; +import { schemaAdherenceScorer, latencyScorer } from "smthrs/scorers"; <Task id="analyze" @@ -261,7 +261,7 @@ Five built-in tools — `read`, `write`, `edit`, `grep`, `bash` — sandboxed to Least-privilege per task: ```tsx -import { AnthropicAgent } from "smithers-orchestrator"; +import { AnthropicAgent } from "smthrs"; const analyst = new AnthropicAgent({ model, instructions: "..." }); // no tools const reviewer = new AnthropicAgent({ model, instructions: "...", tools: { read, grep } }); const implementer = new AnthropicAgent({ model, instructions: "...", tools: { read, write, edit, bash } }); diff --git a/docs/references/smithers/docs/index.mdx b/docs/references/smithers/docs/index.mdx index 9d9902785..277ab1951 100644 --- a/docs/references/smithers/docs/index.mdx +++ b/docs/references/smithers/docs/index.mdx @@ -39,8 +39,8 @@ harnesses should operate Smithers for the human, including the `llms.txt` and </CardGroup> ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -59,8 +59,8 @@ export default smithers((ctx) => ( ``` ```bash -bunx smithers-orchestrator init -bunx smithers-orchestrator up workflow.tsx --input '{"name":"world"}' +bunx smthrs init +bunx smthrs up workflow.tsx --input '{"name":"world"}' ``` Outputs are validated by Zod, persisted to SQLite, and survive crashes. Resume with @@ -102,14 +102,14 @@ to run, and treats having your agent author new ones as a first-class path. ## Built-in workflows -`bunx smithers-orchestrator init` scaffolds a `.smithers/` folder preloaded with +`bunx smthrs init` scaffolds a `.smithers/` folder preloaded with production-ready workflows. Point your agent at one and go with -`bunx smithers-orchestrator workflow run <id> --prompt "..."`: +`bunx smthrs workflow run <id> --prompt "..."`: ```bash # break a request into tickets, then implement them on a board -bunx smithers-orchestrator workflow run tickets-create --prompt "add rate limiting and audit logging" -bunx smithers-orchestrator workflow run kanban +bunx smthrs workflow run tickets-create --prompt "add rate limiting and audit logging" +bunx smthrs workflow run kanban ``` <CardGroup cols={2}> diff --git a/docs/references/smithers/docs/installation.mdx b/docs/references/smithers/docs/installation.mdx index 1176b851f..f77fc58ff 100644 --- a/docs/references/smithers/docs/installation.mdx +++ b/docs/references/smithers/docs/installation.mdx @@ -1,24 +1,24 @@ --- title: Installation -description: Install smithers-orchestrator with the workflow pack, or manually for standalone JSX workflow projects. +description: Install smthrs with the workflow pack, or manually for standalone JSX workflow projects. --- Most teams should start with the workflow pack. It gives you a working `.smithers/` directory with seeded workflows, prompts, and agent configuration instead of assembling the project structure by hand. ## Always Run with `bunx` -Every CLI invocation in these docs is `bunx smithers-orchestrator <command>`. Do **not** install Smithers globally and do **not** use the bare `smithers` or `bunx smithers` shorthand. +Every CLI invocation in these docs is `bunx smthrs <command>`. Do **not** install Smithers globally and do **not** use the bare `smithers` or `bunx smithers` shorthand. - `bunx` resolves the package locally if your project depends on it, otherwise it pulls and runs the latest published version. -- The published npm package is [`smithers-orchestrator`](https://www.npmjs.com/package/smithers-orchestrator). The bare name `smithers` is a different package, so `bunx smithers` runs something else entirely. +- The published npm package is [`smthrs`](https://www.npmjs.com/package/smthrs). The bare name `smithers` is a different package, so `bunx smithers` runs something else entirely. - A global install creates version-drift problems across machines, CI, and contributors. With `bunx`, every project pins Smithers through its own `package.json`. -If you previously ran `npm i -g smithers-orchestrator`, uninstall it (`npm rm -g smithers-orchestrator`) and switch to `bunx`. +If you previously ran `npm i -g smthrs`, uninstall it (`npm rm -g smthrs`) and switch to `bunx`. ## Recommended: Install the Workflow Pack ```bash -bunx smithers-orchestrator init +bunx smthrs init ``` That scaffolds `.smithers/` with files such as: @@ -28,7 +28,7 @@ That scaffolds `.smithers/` with files such as: | `.smithers/workflows/` | Pre-built workflows (`implement`, `review`, `plan`, `ralph`, `debug`, ...) | | `.smithers/prompts/` | Shared MDX prompt templates | | `.smithers/components/` | Reusable TSX components (`Review`, `ValidationLoop`, ...) | -| `.smithers/package.json` | Local workflow project manifest with `smithers-orchestrator` dependency | +| `.smithers/package.json` | Local workflow project manifest with `smthrs` dependency | | `.smithers/tsconfig.json` | TypeScript config for JSX workflow authoring | | `.smithers/bunfig.toml` | Bun preload config for MDX workflow prompts | | `.smithers/preload.ts` | Registers the MDX preload plugin | @@ -42,7 +42,7 @@ That scaffolds `.smithers/` with files such as: To overwrite an existing scaffold: ```bash -bunx smithers-orchestrator init --force +bunx smthrs init --force ``` ## Install the Agent Skill @@ -67,8 +67,8 @@ outcome — *"orchestrate an agent to add rate limiting and keep iterating until tests pass"* — and the agent reaches for Smithers itself. For agents without a skills directory, point them at -`bunx smithers-orchestrator docs-full` (prints the same bundle) or -`bunx smithers-orchestrator ask "<question>"`. +`bunx smthrs docs-full` (prints the same bundle) or +`bunx smthrs ask "<question>"`. To install the skill **and** register the MCP server into every coding agent on your machine at once, see [Agent Support](/agents/overview) — it covers Claude @@ -89,13 +89,13 @@ See [JSX Installation](/jsx/overview) for the package list, TypeScript configura ### Version control -Smithers bundles jj. The optional `@smithers-orchestrator/jj-<platform>` package installs a vendored jj binary for your platform, so a fresh install works with no system jj. Resolution order is: +Smithers bundles jj. The optional `@smthrs/jj-<platform>` package installs a vendored jj binary for your platform, so a fresh install works with no system jj. Resolution order is: 1. `SMITHERS_JJ_PATH` — point this at a jj binary to override everything. 2. The bundled binary for your platform. 3. `jj` on your `PATH`. -If no bundled binary installed (an unsupported platform, or `--no-optional`) and neither `jj` nor `git` is on `PATH`, runs that need a worktree fail with a message telling you to install one. Check what Smithers found with `bunx smithers-orchestrator workflow doctor` (the `vcs` section reports the resolved jj and git). +If no bundled binary installed (an unsupported platform, or `--no-optional`) and neither `jj` nor `git` is on `PATH`, runs that need a worktree fail with a message telling you to install one. Check what Smithers found with `bunx smthrs workflow doctor` (the `vcs` section reports the resolved jj and git). ## After Installation diff --git a/docs/references/smithers/docs/integrations/cli-agents.mdx b/docs/references/smithers/docs/integrations/cli-agents.mdx index ddab60d11..42dd3024c 100644 --- a/docs/references/smithers/docs/integrations/cli-agents.mdx +++ b/docs/references/smithers/docs/integrations/cli-agents.mdx @@ -8,7 +8,7 @@ CLI-backed agent classes wrap external AI command-line tools and implement the [ ## Quick Start ```tsx -import { ClaudeCodeAgent, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { ClaudeCodeAgent, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -51,7 +51,7 @@ CLI binaries must be on `PATH`: `claude`, `codex`, `agy`, `pi`, `kimi`, `forge`, `CodexAgent` is the Smithers wrapper for OpenAI's `codex` CLI. It runs `codex exec` in non-interactive mode, sends the task prompt over stdin, forces `--json` so Smithers can stream structured progress, and captures the final assistant message via `--output-last-message`. ```tsx -import { CodexAgent, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { CodexAgent, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -78,7 +78,7 @@ export default smithers(() => ( - Subscription login: run `codex login` once. For isolated accounts, pass `configDir`; Smithers sets `CODEX_HOME` for that invocation. - API billing: pass `apiKey` or set `OPENAI_API_KEY`; Smithers forwards it to the spawned `codex` process. -- Account registry: `bunx smithers-orchestrator agents add --provider codex ...` registers a subscription config directory, while `--provider openai-api` registers API-key billing for Codex-compatible providers. +- Account registry: `bunx smthrs agents add --provider codex ...` registers a subscription config directory, while `--provider openai-api` registers API-key billing for Codex-compatible providers. ### Structured output @@ -120,7 +120,7 @@ await agent.generate({ `ClaudeCodeAgent` extends the base with Claude Code-specific session and permission flags. Key additions: `permissionMode`, `sessionId`, `mcpConfig`, `resume`. ```ts -import { ClaudeCodeAgent } from "smithers-orchestrator"; +import { ClaudeCodeAgent } from "smthrs"; new ClaudeCodeAgent({ permissionMode?: "acceptEdits" | "bypassPermissions" | "default" | "delegate" | "dontAsk" | "plan"; allowedTools?: string[]; disallowedTools?: string[]; disableSlashCommands?: boolean; @@ -141,7 +141,7 @@ new ClaudeCodeAgent({ `CodexAgent` extends the base with OpenAI Codex-specific flags. Key additions: `sandbox`, `config`, `outputSchema`. ```ts -import { CodexAgent } from "smithers-orchestrator"; +import { CodexAgent } from "smthrs"; new CodexAgent({ sandbox?: "read-only" | "workspace-write" | "danger-full-access"; fullAuto?: boolean; dangerouslyBypassApprovalsAndSandbox?: boolean; @@ -158,7 +158,7 @@ new CodexAgent({ `AntigravityAgent` wraps the Google `agy` CLI. Key additions: `allowedMcpServerNames`, `geminiDir`, `conversation`, `continue`, and `resume`. ```ts -import { AntigravityAgent } from "smithers-orchestrator"; +import { AntigravityAgent } from "smthrs"; new AntigravityAgent({ model?: string; sandbox?: boolean; yolo?: boolean; dangerouslySkipPermissions?: boolean; @@ -195,7 +195,7 @@ outside workflow launch through `agy plugin`. `PiAgent` wraps the Pi CLI and adds extension UI hook support. Key additions: `mode`, `onExtensionUiRequest`, `extension`, `thinking`. ```ts -import { PiAgent, type PiExtensionUiRequest, type PiExtensionUiResponse } from "smithers-orchestrator"; +import { PiAgent, type PiExtensionUiRequest, type PiExtensionUiResponse } from "smthrs"; new PiAgent({ provider?: string; apiKey?: string; appendSystemPrompt?: string; mode?: "text" | "json" | "rpc"; print?: boolean; continue?: boolean; resume?: boolean; session?: string; @@ -213,7 +213,7 @@ new PiAgent({ `KimiAgent` wraps the Moonshot Kimi CLI with automatic session isolation. Key additions: `thinking`, `agent`, `maxRalphIterations`. ```ts -import { KimiAgent } from "smithers-orchestrator"; +import { KimiAgent } from "smthrs"; new KimiAgent({ thinking?: boolean; outputFormat?: "text" | "stream-json"; finalMessageOnly?: boolean; quiet?: boolean; @@ -228,7 +228,7 @@ new KimiAgent({ `ForgeAgent` wraps the Forge CLI and supports 300+ models via provider/model strings. Key additions: `conversationId`, `provider`, `workflow`. ```ts -import { ForgeAgent } from "smithers-orchestrator"; +import { ForgeAgent } from "smthrs"; new ForgeAgent({ directory?: string; provider?: string; agent?: string; conversationId?: string; sandbox?: string; restricted?: boolean; @@ -239,7 +239,7 @@ new ForgeAgent({ `AmpAgent` wraps the Amp CLI in `--execute` headless mode. Key additions: `visibility`, `mcpConfig`, `dangerouslyAllowAll`. ```ts -import { AmpAgent } from "smithers-orchestrator"; +import { AmpAgent } from "smthrs"; new AmpAgent({ visibility?: "private" | "public" | "workspace" | "group"; mcpConfig?: string; settingsFile?: string; @@ -251,7 +251,7 @@ new AmpAgent({ `OpenCodeAgent` wraps the OpenCode CLI via `opencode run --format json`. Key additions: `agentName`, `continueSession`, `sessionId`. Note: native hijack support is not yet shipped. ```ts -import { OpenCodeAgent } from "smithers-orchestrator"; +import { OpenCodeAgent } from "smthrs"; new OpenCodeAgent({ model?: string; agentName?: string; attachFiles?: string[]; @@ -262,7 +262,7 @@ new OpenCodeAgent({ ## Hijack handoff -Most built-in CLI agents support `bunx smithers-orchestrator hijack <runId>`, which relaunches the agent in its native CLI session for interactive takeover. +Most built-in CLI agents support `bunx smthrs hijack <runId>`, which relaunches the agent in its native CLI session for interactive takeover. Smithers persists the native session or conversation id on each task event. On hijack, it waits for a safe boundary between blocking tool calls, then reopens the session via the vendor's resume flag: diff --git a/docs/references/smithers/docs/integrations/custom-ui.mdx b/docs/references/smithers/docs/integrations/custom-ui.mdx index 51562d549..0830a5018 100644 --- a/docs/references/smithers/docs/integrations/custom-ui.mdx +++ b/docs/references/smithers/docs/integrations/custom-ui.mdx @@ -7,33 +7,33 @@ The Smithers Gateway is a versioned RPC + WebSocket contract: any UI — `apps/s There are two SDKs: -- **`@smithers-orchestrator/gateway-client`** — framework-neutral. One small class (`SmithersGatewayClient`) with typed RPC methods, a resilient event stream, and no React dependency. Use it from vanilla JS, Node, Bun, workers, Svelte, Solid, anywhere. -- **`@smithers-orchestrator/gateway-react`** — declarative hooks (`useGatewayRun`, `useGatewayRunEvents`, `useGatewayActions`, …) over the same client. Use it from React 19. The hooks own the lifecycle: stale-result guards, abort on unmount, ring-buffered event feeds. +- **`@smthrs/gateway-client`** — framework-neutral. One small class (`SmithersGatewayClient`) with typed RPC methods, a resilient event stream, and no React dependency. Use it from vanilla JS, Node, Bun, workers, Svelte, Solid, anywhere. +- **`@smthrs/gateway-react`** — declarative hooks (`useGatewayRun`, `useGatewayRunEvents`, `useGatewayActions`, …) over the same client. Use it from React 19. The hooks own the lifecycle: stale-result guards, abort on unmount, ring-buffered event feeds. Pick the client for plumbing, the React layer for views. ## Install -Re-export the SDKs through `smithers-orchestrator` so a UI bundle does not duplicate the runtime: +Re-export the SDKs through `smthrs` so a UI bundle does not duplicate the runtime: ```ts -import { SmithersGatewayClient } from "smithers-orchestrator/gateway-client"; +import { SmithersGatewayClient } from "smthrs/gateway-client"; import { SmithersGatewayProvider, useGatewayRun, useGatewayRunEvents, useGatewayActions, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; ``` -The scoped packages (`@smithers-orchestrator/gateway-client`, `@smithers-orchestrator/gateway-react`) work equivalently — use whichever your bundler / version policy prefers. Both ship typed RPC params and payloads keyed off the gateway's `GatewayRpcMethod` union, so a typo at the call site is a build error. +The scoped packages (`@smthrs/gateway-client`, `@smthrs/gateway-react`) work equivalently — use whichever your bundler / version policy prefers. Both ship typed RPC params and payloads keyed off the gateway's `GatewayRpcMethod` union, so a typo at the call site is a build error. ## The client (vanilla) `SmithersGatewayClient` is the only thing you instantiate. It owns nothing but configuration. ```ts -import { SmithersGatewayClient } from "smithers-orchestrator/gateway-client"; +import { SmithersGatewayClient } from "smthrs/gateway-client"; const gateway = new SmithersGatewayClient({ baseUrl: "https://gateway.example.com", @@ -51,7 +51,7 @@ const workflows = await gateway.listWorkflows({ filter: { hasUi: true } }); Every gateway RPC is a typed instance method that returns the payload directly. Failures throw a `GatewayRpcError` with `code`, `status`, and (if relevant) `requiredScope` / `refresh` / `details`. ```ts -import { GatewayRpcError } from "smithers-orchestrator/gateway-client"; +import { GatewayRpcError } from "smthrs/gateway-client"; try { const run = await gateway.getRun({ runId: "run-1" }); @@ -141,7 +141,7 @@ For React, `useGatewayRpc` does this internally — see below. The gateway protects itself: over-capacity subscribers receive a `BackpressureDisconnect` close. Treat it like any other drop — `streamRunEventsResilient` already reconnects with backoff, so the UI naturally throttles to the rate the gateway can serve. For HTTP RPCs the gateway returns `429` / `RateLimited`; catch the error and retry with `gatewayBackoffDelay(attempt, …)`: ```ts -import { gatewayBackoffDelay, GatewayRpcError } from "smithers-orchestrator/gateway-client"; +import { gatewayBackoffDelay, GatewayRpcError } from "smthrs/gateway-client"; async function withRetry<T>(call: () => Promise<T>): Promise<T> { let attempt = 0; @@ -211,7 +211,7 @@ For the vanilla client, throw the old instance away and instantiate with the new Wrap the tree once in a provider, then read with hooks. The provider memoizes the client on `baseUrl` + `token` so an inline options literal does not trigger a reconnect storm on every render. ```tsx -import { SmithersGatewayProvider } from "smithers-orchestrator/gateway-react"; +import { SmithersGatewayProvider } from "smthrs/gateway-react"; export function App({ token }: { token: string }) { return ( @@ -233,7 +233,7 @@ export function App({ token }: { token: string }) { - a stable `refetch` that re-issues the call against the current params. ```tsx -import { useGatewayRpc } from "smithers-orchestrator/gateway-react"; +import { useGatewayRpc } from "smthrs/gateway-react"; function Runs() { const { data, loading, error, refetch } = useGatewayRpc("listRuns", { @@ -291,7 +291,7 @@ Unmount or change `runId` and the hook aborts the underlying signal — no manua ```tsx import { useState, useCallback } from "react"; -import { useGatewayActions } from "smithers-orchestrator/gateway-react"; +import { useGatewayActions } from "smthrs/gateway-react"; function Approve({ runId, nodeId }: { runId: string; nodeId: string }) { const actions = useGatewayActions(); @@ -329,7 +329,7 @@ End-to-end, vanilla + React mixed because real UIs are: ```tsx /// app.tsx -import { createGatewayReactRoot } from "smithers-orchestrator/gateway-react"; +import { createGatewayReactRoot } from "smthrs/gateway-react"; import { Dashboard } from "./Dashboard"; createGatewayReactRoot(<Dashboard />, { @@ -346,7 +346,7 @@ import { useGatewayRun, useGatewayRunEvents, useGatewayWorkflows, -} from "smithers-orchestrator/gateway-react"; +} from "smthrs/gateway-react"; import { useState } from "react"; export function Dashboard() { diff --git a/docs/references/smithers/docs/integrations/gateway.mdx b/docs/references/smithers/docs/integrations/gateway.mdx index 3ba544cc5..bef732919 100644 --- a/docs/references/smithers/docs/integrations/gateway.mdx +++ b/docs/references/smithers/docs/integrations/gateway.mdx @@ -8,8 +8,8 @@ description: WebSocket / RPC gateway for connecting clients and custom UIs to Sm ## Quick start ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { Gateway, Task, Workflow, createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Gateway, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -55,7 +55,7 @@ ws.onopen = () => ws.send(JSON.stringify({ Programmatic clients — bots, schedulers, dashboards, third-party UIs — talk to the Gateway through the typed client SDK over the same RPC and WebSocket API. For the full custom-UI guide (declarative queries, pushed updates, stale guards, reconnect/resume, backpressure, optimistic mutations, auth, vanilla JS + React hooks) see [Custom UIs](/integrations/custom-ui). ```ts -import { SmithersGatewayClient } from "smithers-orchestrator/gateway-client"; +import { SmithersGatewayClient } from "smthrs/gateway-client"; const gateway = new SmithersGatewayClient(); const workflows = await gateway.listWorkflows(); @@ -71,8 +71,8 @@ Gateway client exports: | Package | Exports | |---|---| -| `smithers-orchestrator/gateway-client` | `SmithersGatewayClient`, `SmithersGatewayConnection`, `GatewayRpcError`, `gatewayBackoffDelay`, RPC frame/type-map types, `GatewayUiBootConfig`, `SmithersGatewayClientOptions` | -| `smithers-orchestrator/gateway-react` | `SmithersGatewayProvider`, `createGatewayReactRoot`, `useGatewayRun`, `useGatewayRuns`, `useGatewayWorkflows`, `useGatewayApprovals`, `useGatewayNodeOutput`, `useGatewayRunEvents`, `useGatewayActions`, `useGatewayRpc`, `useSmithersGateway` | +| `smthrs/gateway-client` | `SmithersGatewayClient`, `SmithersGatewayConnection`, `GatewayRpcError`, `gatewayBackoffDelay`, RPC frame/type-map types, `GatewayUiBootConfig`, `SmithersGatewayClientOptions` | +| `smthrs/gateway-react` | `SmithersGatewayProvider`, `createGatewayReactRoot`, `useGatewayRun`, `useGatewayRuns`, `useGatewayWorkflows`, `useGatewayApprovals`, `useGatewayNodeOutput`, `useGatewayRunEvents`, `useGatewayActions`, `useGatewayRpc`, `useSmithersGateway` | ## RPC methods (TOON) diff --git a/docs/references/smithers/docs/integrations/integrations.mdx b/docs/references/smithers/docs/integrations/integrations.mdx index f92b754f6..17b1068be 100644 --- a/docs/references/smithers/docs/integrations/integrations.mdx +++ b/docs/references/smithers/docs/integrations/integrations.mdx @@ -31,7 +31,7 @@ const opsAgent = new Agent({ Use this when your CLI agent already supports external integrations and Smithers should only orchestrate the task. ```ts -import { PiAgent } from "smithers-orchestrator"; +import { PiAgent } from "smthrs"; const pi = new PiAgent({ provider: "openai", diff --git a/docs/references/smithers/docs/integrations/mcp-server.mdx b/docs/references/smithers/docs/integrations/mcp-server.mdx index 666a92286..2f6fc59aa 100644 --- a/docs/references/smithers/docs/integrations/mcp-server.mdx +++ b/docs/references/smithers/docs/integrations/mcp-server.mdx @@ -43,20 +43,20 @@ For clients that read JSON config directly: "mcpServers": { "smithers": { "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"] + "args": ["smthrs", "--mcp"] } } } ``` -Project-scoped install (e.g. a monorepo where Smithers is a dev dependency — ensure `smithers-orchestrator` is in the local `package.json`): +Project-scoped install (e.g. a monorepo where Smithers is a dev dependency — ensure `smthrs` is in the local `package.json`): ```json { "mcpServers": { "smithers": { "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"] + "args": ["smthrs", "--mcp"] } } } diff --git a/docs/references/smithers/docs/integrations/pi-integration.mdx b/docs/references/smithers/docs/integrations/pi-integration.mdx index 515d76d3e..bf5fc15a8 100644 --- a/docs/references/smithers/docs/integrations/pi-integration.mdx +++ b/docs/references/smithers/docs/integrations/pi-integration.mdx @@ -10,7 +10,7 @@ Smithers provides deterministic orchestration (workflow graph, approvals, retrie ### 1) PI as Workflow Agent ```tsx -import { PiAgent } from "smithers-orchestrator"; +import { PiAgent } from "smthrs"; const pi = new PiAgent({ provider: "openai", @@ -30,13 +30,13 @@ PI sessions are first-class hijack targets. `smithers hijack <runId> --target pi ### 2) PI Server Client -Drive Smithers server APIs from a PI extension or any Node process via `@smithers-orchestrator/pi-plugin`: +Drive Smithers server APIs from a PI extension or any Node process via `@smthrs/pi-plugin`: ```ts -import { runWorkflow, approve, streamEvents } from "@smithers-orchestrator/pi-plugin"; +import { runWorkflow, approve, streamEvents } from "@smthrs/pi-plugin"; ``` -The older `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extension` subpaths were removed; use the scoped package directly. +The older `smthrs/pi-plugin` and `smthrs/pi-extension` subpaths were removed; use the scoped package directly. ### 3) Hybrid: PI Extensibility + Smithers Orchestration @@ -46,7 +46,7 @@ The older `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extens Patterns: 1. PI skill-driven coding task inside a Smithers `<Task>`. -2. PI extension command that starts/resumes Smithers workflows via server API or `@smithers-orchestrator/pi-plugin`. +2. PI extension command that starts/resumes Smithers workflows via server API or `@smthrs/pi-plugin`. 3. Smithers workflow output persisted to SQLite and consumed by later PI-assisted tasks. ## Hijacking PI Sessions @@ -69,7 +69,7 @@ Session persistence: 1. Install PI CLI and add to `PATH`. 2. Configure PI credentials via env/config (prefer over CLI args for API keys). 3. Instantiate `PiAgent` with explicit options in workflows. -4. For server-driven workflows, use `@smithers-orchestrator/pi-plugin`. +4. For server-driven workflows, use `@smthrs/pi-plugin`. ```bash # Verify PI is installed @@ -85,4 +85,4 @@ pi --version ## Limitations -Smithers does not provide a chat interface for PI. Chat UI integration is the responsibility of the host application using `@smithers-orchestrator/pi-plugin`. +Smithers does not provide a chat interface for PI. Chat UI integration is the responsibility of the host application using `@smthrs/pi-plugin`. diff --git a/docs/references/smithers/docs/integrations/sdk-agents.mdx b/docs/references/smithers/docs/integrations/sdk-agents.mdx index 6da862ec7..372aab57d 100644 --- a/docs/references/smithers/docs/integrations/sdk-agents.mdx +++ b/docs/references/smithers/docs/integrations/sdk-agents.mdx @@ -12,7 +12,7 @@ import { AnthropicAgent, OpenAIAgent, tools, -} from "smithers-orchestrator"; +} from "smthrs"; import { stepCountIs } from "ai"; ``` @@ -103,7 +103,7 @@ Use the `createOpenAI` path when you need provider-level configuration beyond `b [Hermes](https://github.com/NousResearch/hermes-agent) (Nous Research) exposes an OpenAI-compatible HTTP API, so `HermesAgent` is a convenience subclass of `OpenAIAgent` that points the provider at your Hermes server and disables native structured output by default (a local Hermes server may not honor JSON-schema response formats). ```ts -import { HermesAgent } from "smithers-orchestrator"; +import { HermesAgent } from "smthrs"; const hermes = new HermesAgent({ baseURL: "http://127.0.0.1:5123/v1", // or set HERMES_BASE_URL diff --git a/docs/references/smithers/docs/integrations/serve.mdx b/docs/references/smithers/docs/integrations/serve.mdx index c69e94763..34192c843 100644 --- a/docs/references/smithers/docs/integrations/serve.mdx +++ b/docs/references/smithers/docs/integrations/serve.mdx @@ -8,7 +8,7 @@ Serve mode starts a Hono-based HTTP server alongside a running workflow. Every r ## CLI ```bash -bunx smithers-orchestrator up workflow.tsx --serve --port 3000 --host 0.0.0.0 +bunx smthrs up workflow.tsx --serve --port 3000 --host 0.0.0.0 ``` | Flag | Default | Description | @@ -24,13 +24,13 @@ The process stays alive after the workflow completes so final state remains quer Detached mode: ```bash -bunx smithers-orchestrator up workflow.tsx --serve --port 8080 -d +bunx smthrs up workflow.tsx --serve --port 8080 -d ``` ## Programmatic ```ts -import { createServeApp } from "smithers-orchestrator/serve"; +import { createServeApp } from "smthrs/serve"; const app = createServeApp({ workflow, @@ -191,7 +191,7 @@ Unknown routes return `404` with code `NOT_FOUND`. ```bash # Start a workflow with serve mode -bunx smithers-orchestrator up workflow.tsx --serve --port 8080 --auth-token sk-secret +bunx smthrs up workflow.tsx --serve --port 8080 --auth-token sk-secret # Status curl http://localhost:8080/ -H "Authorization: Bearer sk-secret" diff --git a/docs/references/smithers/docs/integrations/server.mdx b/docs/references/smithers/docs/integrations/server.mdx index 6e06ad820..51a3ef02a 100644 --- a/docs/references/smithers/docs/integrations/server.mdx +++ b/docs/references/smithers/docs/integrations/server.mdx @@ -8,7 +8,7 @@ description: "Run Smithers as an HTTP server: REST routes for runs, approvals, t ## Quick start ```ts -import { startServer } from "smithers-orchestrator"; +import { startServer } from "smthrs"; import { drizzle } from "drizzle-orm/bun-sqlite"; const server = startServer({ @@ -73,8 +73,8 @@ Errors use the envelope `{ "error": { "code", "message", "details" } }`. Common Tools resolve relative to `rootDir`. The example below exposes a workflow that uses the built-in `bash` tool through the server; clients call it via `POST /v1/runs`. ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { Task, Workflow, createSmithers, bash } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Task, Workflow, createSmithers, bash } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ diff --git a/docs/references/smithers/docs/integrations/tools.mdx b/docs/references/smithers/docs/integrations/tools.mdx index 9ba749180..87e939d62 100644 --- a/docs/references/smithers/docs/integrations/tools.mdx +++ b/docs/references/smithers/docs/integrations/tools.mdx @@ -4,7 +4,7 @@ description: Sandboxed file and shell tools for AI agent tasks, with exact input --- ```ts -import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadata } from "smithers-orchestrator"; +import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadata } from "smthrs"; ``` `tools` bundles all five tools keyed by name: @@ -13,7 +13,7 @@ import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadat const { read, write, edit, grep, bash } = tools; ``` -The `smithers-orchestrator/tools` subpath also exports lower-level helpers for advanced integrations: +The `smthrs/tools` subpath also exports lower-level helpers for advanced integrations: | Export | Purpose | |---|---| @@ -59,7 +59,7 @@ Every invocation is logged to `_smithers_tool_calls`: `defineTool()` wraps custom [AI SDK](https://ai-sdk.dev) tools with Smithers runtime context, deterministic idempotency keys, and durable tool-call logging. ```ts -import { defineTool } from "smithers-orchestrator"; +import { defineTool } from "smthrs"; import { z } from "zod"; const placeOrder = defineTool({ @@ -160,7 +160,7 @@ Returns file contents as UTF-8. Throws `"File too large"` if size exceeds `maxOu ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, grep } from "smithers-orchestrator"; +import { read, grep } from "smthrs"; const codeAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -193,7 +193,7 @@ Returns `"ok"`. Throws `"Content too large"` if content exceeds `maxOutputBytes` ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { write, read } from "smithers-orchestrator"; +import { write, read } from "smthrs"; const writerAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -280,7 +280,7 @@ Local git commands (`git status`, `git diff`, `git log`) are allowed. ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash } from "smithers-orchestrator"; +import { bash } from "smthrs"; const devAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -304,7 +304,7 @@ Pass tools to an [AI SDK](https://ai-sdk.dev) agent and assign the agent to a [` ```tsx import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { createSmithers, read, write, edit, grep, bash, Task } from "smithers-orchestrator"; +import { createSmithers, read, write, edit, grep, bash, Task } from "smthrs"; import { z } from "zod"; const codeAgent = new Agent({ @@ -331,7 +331,7 @@ The full bundle works too: ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { tools } from "smithers-orchestrator"; +import { tools } from "smthrs"; const fullAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -350,7 +350,7 @@ const fullAgent = new Agent({ ```ts import { Effect } from "effect"; -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; const result = await Effect.runPromise(runWorkflow(workflow, { input: { file: "src/auth.ts" }, diff --git a/docs/references/smithers/docs/jsx/overview.mdx b/docs/references/smithers/docs/jsx/overview.mdx index 0cc2dd939..8caffaafb 100644 --- a/docs/references/smithers/docs/jsx/overview.mdx +++ b/docs/references/smithers/docs/jsx/overview.mdx @@ -7,12 +7,12 @@ Workflows are JSX trees. Smithers renders the tree, extracts ready tasks, execut ## Setup -Most projects should use `bunx smithers-orchestrator init` — it scaffolds everything below. +Most projects should use `bunx smthrs init` — it scaffolds everything below. To embed into an existing codebase: ```bash -bun add smithers-orchestrator react react-dom zod +bun add smthrs react react-dom zod bun add -d typescript @types/react @types/react-dom @types/node ``` @@ -25,7 +25,7 @@ Minimal `tsconfig.json`: "module": "ESNext", "moduleResolution": "bundler", "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", + "jsxImportSource": "smthrs", "strict": true, "noEmit": true, "skipLibCheck": true @@ -33,17 +33,17 @@ Minimal `tsconfig.json`: } ``` -`jsxImportSource` is the only non-standard line — it routes JSX through `smithers-orchestrator/jsx-runtime` instead of React DOM. +`jsxImportSource` is the only non-standard line — it routes JSX through `smthrs/jsx-runtime` instead of React DOM. Optional MDX prompts: add `bun add -d @types/mdx` and a `preload.ts` that calls `mdxPlugin()`, register it in `bunfig.toml` as `preload = ["./preload.ts"]`. -Verify with `bunx tsc --noEmit` and `bunx smithers-orchestrator --help`. +Verify with `bunx tsc --noEmit` and `bunx smthrs --help`. ## A minimal workflow ```tsx -// @jsxImportSource smithers-orchestrator — only needed if not set in tsconfig.json -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +// @jsxImportSource smthrs — only needed if not set in tsconfig.json +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ diff --git a/docs/references/smithers/docs/llms-core.txt b/docs/references/smithers/docs/llms-core.txt index 11a6dfabe..73a7d4279 100644 --- a/docs/references/smithers/docs/llms-core.txt +++ b/docs/references/smithers/docs/llms-core.txt @@ -1,7 +1,7 @@ # Smithers > Smithers — durable AI workflow orchestration as a JSX runtime. -> Repo: github.com/smithersai/smithers · Package: smithers-orchestrator (npm) +> Repo: github.com/smithersai/smithers · Package: smthrs (npm) This file is the agent-facing core Smithers documentation. It is for Claude, Codex, and other AI harnesses operating Smithers for a human. Read top to bottom for the runtime, agent operating playbook, JSX surface, CLI, and components. @@ -58,8 +58,8 @@ harnesses should operate Smithers for the human, including the `llms.txt` and </CardGroup> ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -78,8 +78,8 @@ export default smithers((ctx) => ( ``` ```bash -bunx smithers-orchestrator init -bunx smithers-orchestrator up workflow.tsx --input '{"name":"world"}' +bunx smthrs init +bunx smthrs up workflow.tsx --input '{"name":"world"}' ``` Outputs are validated by Zod, persisted to SQLite, and survive crashes. Resume with @@ -121,14 +121,14 @@ to run, and treats having your agent author new ones as a first-class path. ## Built-in workflows -`bunx smithers-orchestrator init` scaffolds a `.smithers/` folder preloaded with +`bunx smthrs init` scaffolds a `.smithers/` folder preloaded with production-ready workflows. Point your agent at one and go with -`bunx smithers-orchestrator workflow run <id> --prompt "..."`: +`bunx smthrs workflow run <id> --prompt "..."`: ```bash # break a request into tickets, then implement them on a board -bunx smithers-orchestrator workflow run tickets-create --prompt "add rate limiting and audit logging" -bunx smithers-orchestrator workflow run kanban +bunx smthrs workflow run tickets-create --prompt "add rate limiting and audit logging" +bunx smthrs workflow run kanban ``` <CardGroup cols={2}> @@ -283,24 +283,24 @@ Don't use it for a single prompt → single response. Use your model provider's ## Installation -> Install smithers-orchestrator with the workflow pack, or manually for standalone JSX workflow projects. +> Install smthrs with the workflow pack, or manually for standalone JSX workflow projects. Most teams should start with the workflow pack. It gives you a working `.smithers/` directory with seeded workflows, prompts, and agent configuration instead of assembling the project structure by hand. ## Always Run with `bunx` -Every CLI invocation in these docs is `bunx smithers-orchestrator <command>`. Do **not** install Smithers globally and do **not** use the bare `smithers` or `bunx smithers` shorthand. +Every CLI invocation in these docs is `bunx smthrs <command>`. Do **not** install Smithers globally and do **not** use the bare `smithers` or `bunx smithers` shorthand. - `bunx` resolves the package locally if your project depends on it, otherwise it pulls and runs the latest published version. -- The published npm package is [`smithers-orchestrator`](https://www.npmjs.com/package/smithers-orchestrator). The bare name `smithers` is a different package, so `bunx smithers` runs something else entirely. +- The published npm package is [`smthrs`](https://www.npmjs.com/package/smthrs). The bare name `smithers` is a different package, so `bunx smithers` runs something else entirely. - A global install creates version-drift problems across machines, CI, and contributors. With `bunx`, every project pins Smithers through its own `package.json`. -If you previously ran `npm i -g smithers-orchestrator`, uninstall it (`npm rm -g smithers-orchestrator`) and switch to `bunx`. +If you previously ran `npm i -g smthrs`, uninstall it (`npm rm -g smthrs`) and switch to `bunx`. ## Recommended: Install the Workflow Pack ```bash -bunx smithers-orchestrator init +bunx smthrs init ``` That scaffolds `.smithers/` with files such as: @@ -310,7 +310,7 @@ That scaffolds `.smithers/` with files such as: | `.smithers/workflows/` | Pre-built workflows (`implement`, `review`, `plan`, `ralph`, `debug`, ...) | | `.smithers/prompts/` | Shared MDX prompt templates | | `.smithers/components/` | Reusable TSX components (`Review`, `ValidationLoop`, ...) | -| `.smithers/package.json` | Local workflow project manifest with `smithers-orchestrator` dependency | +| `.smithers/package.json` | Local workflow project manifest with `smthrs` dependency | | `.smithers/tsconfig.json` | TypeScript config for JSX workflow authoring | | `.smithers/bunfig.toml` | Bun preload config for MDX workflow prompts | | `.smithers/preload.ts` | Registers the MDX preload plugin | @@ -324,7 +324,7 @@ That scaffolds `.smithers/` with files such as: To overwrite an existing scaffold: ```bash -bunx smithers-orchestrator init --force +bunx smthrs init --force ``` ## Install the Agent Skill @@ -349,8 +349,8 @@ outcome — *"orchestrate an agent to add rate limiting and keep iterating until tests pass"* — and the agent reaches for Smithers itself. For agents without a skills directory, point them at -`bunx smithers-orchestrator docs-full` (prints the same bundle) or -`bunx smithers-orchestrator ask "<question>"`. +`bunx smthrs docs-full` (prints the same bundle) or +`bunx smthrs ask "<question>"`. To install the skill **and** register the MCP server into every coding agent on your machine at once, see [Agent Support](/agents/overview) — it covers Claude @@ -371,13 +371,13 @@ See [JSX Installation](/jsx/overview) for the package list, TypeScript configura ### Version control -Smithers bundles jj. The optional `@smithers-orchestrator/jj-<platform>` package installs a vendored jj binary for your platform, so a fresh install works with no system jj. Resolution order is: +Smithers bundles jj. The optional `@smthrs/jj-<platform>` package installs a vendored jj binary for your platform, so a fresh install works with no system jj. Resolution order is: 1. `SMITHERS_JJ_PATH` — point this at a jj binary to override everything. 2. The bundled binary for your platform. 3. `jj` on your `PATH`. -If no bundled binary installed (an unsupported platform, or `--no-optional`) and neither `jj` nor `git` is on `PATH`, runs that need a worktree fail with a message telling you to install one. Check what Smithers found with `bunx smithers-orchestrator workflow doctor` (the `vcs` section reports the resolved jj and git). +If no bundled binary installed (an unsupported platform, or `--no-optional`) and neither `jj` nor `git` is on `PATH`, runs that need a worktree fail with a message telling you to install one. Check what Smithers found with `bunx smthrs workflow doctor` (the `vcs` section reports the resolved jj and git). ## After Installation @@ -396,25 +396,25 @@ If no bundled binary installed (an unsupported platform, or `--no-optional`) and > Scaffold and run a Smithers workflow in two commands. ```bash -bunx smithers-orchestrator init -bunx smithers-orchestrator init --template idea-to-tickets -bunx smithers-orchestrator workflow run implement --prompt "Add rate limiting" +bunx smthrs init +bunx smthrs init --template idea-to-tickets +bunx smthrs workflow run implement --prompt "Add rate limiting" ``` -`init` scaffolds `.smithers/` (workflows, prompts, components, agent config). Add `--template <id>` when you want the init result to include the selected starter command and follow-up notes. Run `bunx smithers-orchestrator starters` to browse template IDs. +`init` scaffolds `.smithers/` (workflows, prompts, components, agent config). Add `--template <id>` when you want the init result to include the selected starter command and follow-up notes. Run `bunx smthrs starters` to browse template IDs. Inspect the run: ```bash -bunx smithers-orchestrator ps -bunx smithers-orchestrator inspect <run-id> -bunx smithers-orchestrator logs <run-id> --tail 20 +bunx smthrs ps +bunx smthrs inspect <run-id> +bunx smthrs logs <run-id> --tail 20 ``` Resume after a crash: ```bash -bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true +bunx smthrs up workflow.tsx --run-id <run-id> --resume true ``` Prefer to let your agent drive? [Install the agent skill](/installation#install-the-agent-skill) and just ask for the outcome — your coding agent runs Smithers for you. @@ -430,19 +430,19 @@ For a full worked example, see the [Tour](/tour). For every CLI command see the Smithers ships with starter workflows for when you want a result before your agent writes any workflow code. Browse the starter gallery from any repo: ```bash -bunx smithers-orchestrator starters +bunx smthrs starters ``` First-time setup: ```bash -bunx smithers-orchestrator init --add-agents +bunx smthrs init --add-agents ``` Or initialize with guided next steps for one template: ```bash -bunx smithers-orchestrator init --template idea-to-tickets +bunx smthrs init --template idea-to-tickets ``` Template IDs: @@ -451,37 +451,37 @@ Pass any ID from this table to `init --template <id>` to scaffold that starter. | Starter | Best for | Workflow | Command | | --- | --- | --- | --- | -| `idea-to-prd` | founders, product | `write-a-prd` | `bunx smithers-orchestrator init --template idea-to-prd` | -| `idea-to-tickets` | founders, product, operations, engineering | `tickets-create` | `bunx smithers-orchestrator init --template idea-to-tickets` | -| `launch-checklist` | launch owners and operators | `plan` | `bunx smithers-orchestrator init --template launch-checklist` | -| `customer-incident` | support escalations | `debug` | `bunx smithers-orchestrator init --template customer-incident` | -| `nontechnical-research` | before-build decisions | `research` | `bunx smithers-orchestrator init --template nontechnical-research` | -| `requirements-interview` | vague stakeholder requests | `grill-me` | `bunx smithers-orchestrator init --template requirements-interview` | -| `quality-audit` | release readiness | `audit` | `bunx smithers-orchestrator init --template quality-audit` | -| `test-coverage` | regression prevention | `improve-test-coverage` | `bunx smithers-orchestrator init --template test-coverage` | -| `ship-a-change` | focused product improvements | `research-plan-implement` | `bunx smithers-orchestrator init --template ship-a-change` | -| `mission-mode` | larger approved milestones | `mission` | `bunx smithers-orchestrator init --template mission-mode` | +| `idea-to-prd` | founders, product | `write-a-prd` | `bunx smthrs init --template idea-to-prd` | +| `idea-to-tickets` | founders, product, operations, engineering | `tickets-create` | `bunx smthrs init --template idea-to-tickets` | +| `launch-checklist` | launch owners and operators | `plan` | `bunx smthrs init --template launch-checklist` | +| `customer-incident` | support escalations | `debug` | `bunx smthrs init --template customer-incident` | +| `nontechnical-research` | before-build decisions | `research` | `bunx smthrs init --template nontechnical-research` | +| `requirements-interview` | vague stakeholder requests | `grill-me` | `bunx smthrs init --template requirements-interview` | +| `quality-audit` | release readiness | `audit` | `bunx smthrs init --template quality-audit` | +| `test-coverage` | regression prevention | `improve-test-coverage` | `bunx smthrs init --template test-coverage` | +| `ship-a-change` | focused product improvements | `research-plan-implement` | `bunx smthrs init --template ship-a-change` | +| `mission-mode` | larger approved milestones | `mission` | `bunx smthrs init --template mission-mode` | Each detailed starter prints: - What outcome to expect - What context to gather before running -- The exact `bunx smithers-orchestrator workflow run ...` command +- The exact `bunx smthrs workflow run ...` command - Useful follow-up commands - When not to use that starter Filter by audience or goal: ```bash -bunx smithers-orchestrator starters --audience product -bunx smithers-orchestrator starters --goal quality -bunx smithers-orchestrator starters --workflow debug +bunx smthrs starters --audience product +bunx smthrs starters --goal quality +bunx smthrs starters --workflow debug ``` Use JSON when another tool needs the catalog: ```bash -bunx smithers-orchestrator starters --format json +bunx smthrs starters --format json ``` --- @@ -495,8 +495,8 @@ A code-review workflow built one capability at a time. Each step is a diff again ## 1. Install and scaffold ```bash -bunx smithers-orchestrator init -bun add smithers-orchestrator ai @ai-sdk/anthropic zod +bunx smthrs init +bun add smthrs ai @ai-sdk/anthropic zod bun add -d typescript @types/bun export ANTHROPIC_API_KEY="sk-ant-..." ``` @@ -512,7 +512,7 @@ A minimal `tsconfig.json`: "module": "ESNext", "moduleResolution": "bundler", "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", + "jsxImportSource": "smthrs", "strict": true, "noEmit": true, "skipLibCheck": true @@ -525,8 +525,8 @@ A minimal `tsconfig.json`: ## 2. One-task workflow ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -549,14 +549,14 @@ export default smithers((ctx) => ( This Task has no `agent`, just a literal value. Run it. ```bash -bunx smithers-orchestrator up workflow.tsx --input '{"name":"world"}' +bunx smthrs up workflow.tsx --input '{"name":"world"}' ``` Inspect: ```bash -bunx smithers-orchestrator ps # find the run id -bunx smithers-orchestrator inspect <run-id> # structured state +bunx smthrs ps # find the run id +bunx smthrs inspect <run-id> # structured state sqlite3 smithers.db "SELECT * FROM greeting;" # the persisted output ``` @@ -565,8 +565,8 @@ sqlite3 smithers.db "SELECT * FROM greeting;" # the persisted output Replace the literal Task with an agent Task whose output is structured. ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task, AnthropicAgent } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task, AnthropicAgent } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -604,8 +604,8 @@ The runtime injects a JSON-schema description of `outputs.analysis` into the pro Tasks see each other's outputs through `ctx.outputMaybe(...)`. An incomplete upstream returns `undefined`; on the next render frame the upstream output appears and the downstream Task mounts. ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task, AnthropicAgent } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task, AnthropicAgent } from "smthrs"; import { z } from "zod"; const AnalysisSchema = z.object({ @@ -680,7 +680,7 @@ Same shape works for branching, parallel groups, and loops: Pause for a human. The runtime persists the pending decision and exits cleanly; an operator approves or denies through the CLI; resume picks up from the gate. ```tsx -import { Approval } from "smithers-orchestrator"; +import { Approval } from "smthrs"; {analysis ? ( <Approval @@ -706,10 +706,10 @@ import { Approval } from "smithers-orchestrator"; Operator side: ```bash -bunx smithers-orchestrator ps --status waiting-approval # find paused runs -bunx smithers-orchestrator inspect <run-id> # see the request -bunx smithers-orchestrator approve <run-id> --node confirm-fix --by alice -bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true +bunx smthrs ps --status waiting-approval # find paused runs +bunx smthrs inspect <run-id> # see the request +bunx smthrs approve <run-id> --node confirm-fix --by alice +bunx smthrs up workflow.tsx --run-id <run-id> --resume true ``` `onDeny` controls behavior on rejection: `"fail"` aborts the run, `"continue"` proceeds without the approved branch, `"skip"` skips the gated tasks. @@ -719,10 +719,10 @@ bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true Every completed task's output sits in SQLite. A crash, kill, or restart loses no work — the next run with `--resume true` skips finished tasks. ```bash -bunx smithers-orchestrator up workflow.tsx --input '{"repo":"."}' --run-id review-1 +bunx smthrs up workflow.tsx --input '{"repo":"."}' --run-id review-1 # ...analyze finishes, fix is mid-flight, you Ctrl+C -bunx smithers-orchestrator up workflow.tsx --run-id review-1 --resume true +bunx smthrs up workflow.tsx --run-id review-1 --resume true # analyze is skipped (already in DB), fix re-runs from scratch (was incomplete) ``` @@ -731,14 +731,14 @@ In-flight attempts are marked stale and re-tried; finished tasks are not. Resume For unattended recovery, run the supervisor: ```bash -bunx smithers-orchestrator supervise --interval 30s --stale-threshold 1m +bunx smthrs supervise --interval 30s --stale-threshold 1m ``` It auto-resumes runs whose owner process died. ## What you skipped (and where to find it) -- **Time travel** (replay a frame, fork a run, diff two runs): `bunx smithers-orchestrator replay|fork|diff|timeline` — see [How It Works → Time travel](/how-it-works#time-travel). +- **Time travel** (replay a frame, fork a run, diff two runs): `bunx smthrs replay|fork|diff|timeline` — see [How It Works → Time travel](/how-it-works#time-travel). - **Scorers** (attach evaluators to Tasks): see [Recipes → Scoring tasks](/recipes#scoring-tasks). - **Memory** (cross-run facts and message history): see [llms-memory.txt](/llms-memory.txt). - **RAG**, **voice**, **OpenAPI tools**: opt-in fragments — see the index in [llms.txt](/llms.txt). @@ -979,7 +979,7 @@ Replay with `--restore-vcs` checks out the jj revision the snapshot was taken at Attach evaluators to a Task. They run **after** completion and never block. ```tsx -import { schemaAdherenceScorer, latencyScorer } from "smithers-orchestrator/scorers"; +import { schemaAdherenceScorer, latencyScorer } from "smthrs/scorers"; <Task id="analyze" @@ -1015,7 +1015,7 @@ Five built-in tools — `read`, `write`, `edit`, `grep`, `bash` — sandboxed to Least-privilege per task: ```tsx -import { AnthropicAgent } from "smithers-orchestrator"; +import { AnthropicAgent } from "smthrs"; const analyst = new AnthropicAgent({ model, instructions: "..." }); // no tools const reviewer = new AnthropicAgent({ model, instructions: "...", tools: { read, grep } }); const implementer = new AnthropicAgent({ model, instructions: "...", tools: { read, write, edit, bash } }); @@ -1216,26 +1216,26 @@ If you cannot see the run, you cannot operate it well. For local and development work, use the CLI surfaces yourself: ```bash -bunx smithers-orchestrator ps -bunx smithers-orchestrator inspect <run-id> --watch -bunx smithers-orchestrator events <run-id> --watch -bunx smithers-orchestrator node <run-id> <node-id> -bunx smithers-orchestrator scores <run-id> -bunx smithers-orchestrator why <run-id> +bunx smthrs ps +bunx smthrs inspect <run-id> --watch +bunx smthrs events <run-id> --watch +bunx smthrs node <run-id> <node-id> +bunx smthrs scores <run-id> +bunx smthrs why <run-id> ``` Use serve mode when you need HTTP status, SSE events, remote approvals, or Prometheus metrics: ```bash -bunx smithers-orchestrator up workflow.tsx --serve --metrics --port 7331 +bunx smthrs up workflow.tsx --serve --metrics --port 7331 ``` Use the observability stack when the work needs traces, metrics, dashboards, or a reviewer evidence bundle: ```bash -bunx smithers-orchestrator observability +bunx smthrs observability ``` Enable OpenTelemetry export when you need trace-level proof, then include the @@ -1260,8 +1260,8 @@ plan, gates, and evidence live." Do not phrase it as homework for the human. Use hot mode while authoring or tuning a workflow: ```bash -bunx smithers-orchestrator graph workflow.tsx -bunx smithers-orchestrator up workflow.tsx --hot true --input '{"prompt":"..."}' +bunx smthrs graph workflow.tsx +bunx smthrs up workflow.tsx --hot true --input '{"prompt":"..."}' ``` The graph command validates the rendered shape without executing the whole job. @@ -1382,12 +1382,12 @@ Workflows are JSX trees. Smithers renders the tree, extracts ready tasks, execut ## Setup -Most projects should use `bunx smithers-orchestrator init` — it scaffolds everything below. +Most projects should use `bunx smthrs init` — it scaffolds everything below. To embed into an existing codebase: ```bash -bun add smithers-orchestrator react react-dom zod +bun add smthrs react react-dom zod bun add -d typescript @types/react @types/react-dom @types/node ``` @@ -1400,7 +1400,7 @@ Minimal `tsconfig.json`: "module": "ESNext", "moduleResolution": "bundler", "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", + "jsxImportSource": "smthrs", "strict": true, "noEmit": true, "skipLibCheck": true @@ -1408,17 +1408,17 @@ Minimal `tsconfig.json`: } ``` -`jsxImportSource` is the only non-standard line — it routes JSX through `smithers-orchestrator/jsx-runtime` instead of React DOM. +`jsxImportSource` is the only non-standard line — it routes JSX through `smthrs/jsx-runtime` instead of React DOM. Optional MDX prompts: add `bun add -d @types/mdx` and a `preload.ts` that calls `mdxPlugin()`, register it in `bunfig.toml` as `preload = ["./preload.ts"]`. -Verify with `bunx tsc --noEmit` and `bunx smithers-orchestrator --help`. +Verify with `bunx tsc --noEmit` and `bunx smthrs --help`. ## A minimal workflow ```tsx -// @jsxImportSource smithers-orchestrator — only needed if not set in tsconfig.json -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +// @jsxImportSource smthrs — only needed if not set in tsconfig.json +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -1461,7 +1461,7 @@ The `report` Task doesn't exist in the plan until `analysis` completes. No place > Every Smithers CLI command in one structured catalog (TOON format). -Always invoke as `bunx smithers-orchestrator <command>` (see [Installation](/installation) for why). Use `--help` on any command for the canonical option list. +Always invoke as `bunx smthrs <command>` (see [Installation](/installation) for why). Use `--help` on any command for the canonical option list. ## Conventions @@ -2042,27 +2042,27 @@ commands[66]: **Set up** ```bash -bunx smithers-orchestrator init # scaffold .smithers/ -bunx smithers-orchestrator init --template idea-to-tickets # scaffold with guided template next steps -bunx smithers-orchestrator starters # browse template IDs +bunx smthrs init # scaffold .smithers/ +bunx smthrs init --template idea-to-tickets # scaffold with guided template next steps +bunx smthrs starters # browse template IDs ``` **Run** ```bash -bunx smithers-orchestrator workflow run implement --prompt "…" # launch a seeded workflow -bunx smithers-orchestrator up workflow.tsx --run-id <id> --resume true # resume a paused run +bunx smthrs workflow run implement --prompt "…" # launch a seeded workflow +bunx smthrs up workflow.tsx --run-id <id> --resume true # resume a paused run ``` **Observe & control** ```bash -bunx smithers-orchestrator ps # list runs -bunx smithers-orchestrator inspect <run-id> # structured run state -bunx smithers-orchestrator logs <run-id> --tail 20 --follow # stream events -bunx smithers-orchestrator why <run-id> # why is it paused? -bunx smithers-orchestrator approve <run-id> --node <id> --by <name> # approve a paused node -bunx smithers-orchestrator cancel <run-id> # cancel a run +bunx smthrs ps # list runs +bunx smthrs inspect <run-id> # structured run state +bunx smthrs logs <run-id> --tail 20 --follow # stream events +bunx smthrs why <run-id> # why is it paused? +bunx smthrs approve <run-id> --node <id> --by <name> # approve a paused node +bunx smthrs cancel <run-id> # cancel a run ``` See [Tour](/tour) for a full worked example. See [CLI overview](/cli/overview) for the complete flag reference. @@ -2074,7 +2074,7 @@ See [Tour](/tour) for a full worked example. See [CLI overview](/cli/overview) f > Root container; sequences direct children, optionally caches for resume. ```ts -import { Workflow } from "smithers-orchestrator"; +import { Workflow } from "smthrs"; type WorkflowProps = { name: string; @@ -2084,7 +2084,7 @@ type WorkflowProps = { ``` ```tsx -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; import { z } from "zod"; @@ -2119,7 +2119,7 @@ export default smithers((ctx) => ( > Executable node; runs an agent, compute callback, or emits a static value. ```ts -import { Task } from "smithers-orchestrator"; +import { Task } from "smthrs"; type TaskProps = { id: string; @@ -2253,7 +2253,7 @@ const VERIFY = "verify" as const; > Run children in source order. ```ts -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; type SequenceProps = { key?: string; @@ -2297,7 +2297,7 @@ type SequenceProps = { > Run children concurrently with an optional concurrency cap. ```ts -import { Parallel } from "smithers-orchestrator"; +import { Parallel } from "smthrs"; type ParallelProps = { id?: string; @@ -2335,7 +2335,7 @@ type ParallelProps = { > Conditional fork; mounts `then` when `if` is true, otherwise `else`. ```ts -import { Branch } from "smithers-orchestrator"; +import { Branch } from "smthrs"; type BranchProps = { if: boolean; @@ -2380,7 +2380,7 @@ type BranchProps = { > Re-run children until `until` is true or `maxIterations` is hit. ```ts -import { Loop } from "smithers-orchestrator"; +import { Loop } from "smthrs"; type LoopProps = { id?: string; // auto-generated from tree position @@ -2430,7 +2430,7 @@ export default smithers((ctx) => { > Durable human approval; persists ApprovalDecision, selection, or ranking. ```ts -import { Approval, approvalDecisionSchema } from "smithers-orchestrator"; +import { Approval, approvalDecisionSchema } from "smthrs"; type ApprovalProps = { id: string; @@ -2465,7 +2465,7 @@ type ApprovalProps = { ``` ```tsx -import { Approval, Sequence, Task, Workflow, approvalDecisionSchema, createSmithers } from "smithers-orchestrator"; +import { Approval, Sequence, Task, Workflow, approvalDecisionSchema, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -2508,7 +2508,7 @@ export default smithers((ctx) => { > Conditional approval; pauses for human when `when` is true, else auto-approves. ```ts -import { ApprovalGate } from "smithers-orchestrator"; +import { ApprovalGate } from "smthrs"; type ApprovalGateProps = { id: string; @@ -2564,7 +2564,7 @@ const risk = ctx.output(outputs.riskScore, { nodeId: "risk" }); ```ts // Props -import { EscalationChain } from "smithers-orchestrator"; +import { EscalationChain } from "smthrs"; type EscalationChainProps = { id?: string; // default "escalation" @@ -2614,7 +2614,7 @@ type EscalationLevel = { ```ts // Props -import { DecisionTable } from "smithers-orchestrator"; +import { DecisionTable } from "smthrs"; type DecisionTableProps = { id?: string; @@ -2663,7 +2663,7 @@ type DecisionRule = { > Suspend until a human submits JSON matching the output schema. ```ts -import { HumanTask } from "smithers-orchestrator"; +import { HumanTask } from "smthrs"; type HumanTaskProps = { id: string; @@ -2684,7 +2684,7 @@ type HumanTaskProps = { ``` ```tsx -import { Workflow, Sequence, Task, HumanTask, createSmithers } from "smithers-orchestrator"; +import { Workflow, Sequence, Task, HumanTask, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -2732,7 +2732,7 @@ export default smithers((ctx) => { > Typed wrapper around <WaitForEvent>; signal name equals node id. ```ts -import { Signal } from "smithers-orchestrator"; +import { Signal } from "smthrs"; type SignalProps = { id: string; // signal name and node id @@ -2753,7 +2753,7 @@ type SignalProps = { ``` ```tsx -import { Signal, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { Signal, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -2786,7 +2786,7 @@ export default smithers(() => ( > Durably suspend until a correlated external event arrives, or time out. ```ts -import { WaitForEvent } from "smithers-orchestrator"; +import { WaitForEvent } from "smthrs"; type WaitForEventProps = { id: string; @@ -2838,7 +2838,7 @@ type WaitForEventProps = { > Durably suspend for a relative duration or until an absolute time. ```ts -import { Timer } from "smithers-orchestrator"; +import { Timer } from "smthrs"; type TimerProps = { id: string; @@ -2878,7 +2878,7 @@ type TimerProps = { > Forward steps with compensations run in reverse on failure. ```ts -import { Saga } from "smithers-orchestrator"; +import { Saga } from "smthrs"; type SagaStepDef = { id: string; @@ -2929,7 +2929,7 @@ type SagaProps = { > Workflow-scoped error boundary with catch handlers and guaranteed cleanup. ```ts -import { TryCatchFinally } from "smithers-orchestrator"; +import { TryCatchFinally } from "smthrs"; type TryCatchFinallyProps = { id?: string; @@ -2977,8 +2977,8 @@ type TryCatchFinallyProps = { `<Sandbox>` is a task boundary for work that should execute outside the parent task process. The public component is provider-first: pass an injectable provider object or a registered provider id. `runtime` remains only for the built-in legacy local transports. ```ts -import { Sandbox } from "smithers-orchestrator"; -import type { SandboxProvider } from "smithers-orchestrator/sandbox"; +import { Sandbox } from "smthrs"; +import type { SandboxProvider } from "smthrs/sandbox"; type SandboxProps = { id: string; @@ -3064,7 +3064,7 @@ type SandboxProvider = { Register reusable providers when a workflow should reference them by id: ```ts -import { registerSandboxProvider } from "smithers-orchestrator/sandbox"; +import { registerSandboxProvider } from "smthrs/sandbox"; const unregister = registerSandboxProvider(provider); @@ -3152,7 +3152,7 @@ Freestyle's current VM docs show the stable package as `freestyle`, VM creation > Invoke a child workflow with its own retry, cache, resume boundary. ```ts -import { Subflow } from "smithers-orchestrator"; +import { Subflow } from "smthrs"; type SubflowProps = { id: string; @@ -3208,7 +3208,7 @@ type SubflowProps = { > Close the current run; start a fresh one with optional carried state. ```ts -import { ContinueAsNew, continueAsNew } from "smithers-orchestrator"; +import { ContinueAsNew, continueAsNew } from "smthrs"; type ContinueAsNewProps = { state?: unknown; // JSON-serializable; arrives as ctx.input.__smithersContinuation.payload @@ -3257,7 +3257,7 @@ export default smithers((ctx) => { > Reads and modifies source code at runtime via a markdown strategy doc. ```ts -import { SuperSmithers } from "smithers-orchestrator"; +import { SuperSmithers } from "smthrs"; type SuperSmithersProps = { strategy: string | ReactElement; // markdown or MDX strategy document @@ -3300,7 +3300,7 @@ type SuperSmithersProps = { > Propagate token, latency, and cost budgets to descendant tasks. ```ts -import { Aspects } from "smithers-orchestrator"; +import { Aspects } from "smthrs"; type TokenBudgetConfig = { max: number; @@ -3360,7 +3360,7 @@ type AspectsProps = { > Run a subtree in an isolated worktree (git or jj) rooted at `path`. ```ts -import { Worktree } from "smithers-orchestrator"; +import { Worktree } from "smthrs"; type WorktreeProps = { key?: string; @@ -3400,7 +3400,7 @@ type WorktreeProps = { ```ts // Props -import { ReviewLoop } from "smithers-orchestrator"; +import { ReviewLoop } from "smthrs"; type ReviewLoopProps = { id?: string; // default "review-loop"; task ids derived as {id}-produce, {id}-review @@ -3444,7 +3444,7 @@ export default smithers(() => ( ```ts // Props -import { Optimizer } from "smithers-orchestrator"; +import { Optimizer } from "smthrs"; type OptimizerProps = { id?: string; // default "optimizer"; task ids {id}-generate, {id}-evaluate @@ -3490,7 +3490,7 @@ export default smithers(() => ( ```ts // Props -import { ContentPipeline } from "smithers-orchestrator"; +import { ContentPipeline } from "smthrs"; type ContentPipelineProps = { id?: string; @@ -3536,7 +3536,7 @@ export default smithers(() => ( ```ts // Props -import { DriftDetector } from "smithers-orchestrator"; +import { DriftDetector } from "smthrs"; type DriftDetectorProps = { id?: string; // default "drift"; ids {id}-capture, {id}-compare @@ -3582,7 +3582,7 @@ type DriftDetectorProps = { ```ts // Props -import { ScanFixVerify } from "smithers-orchestrator"; +import { ScanFixVerify } from "smthrs"; type ScanFixVerifyProps = { id?: string; // default "sfv" @@ -3631,7 +3631,7 @@ type ScanFixVerifyProps = { ```ts // Props -import { Poller } from "smithers-orchestrator"; +import { Poller } from "smthrs"; type PollerProps = { id?: string; // default "poll" @@ -3674,7 +3674,7 @@ type PollerProps = { ```ts // Props -import { Runbook } from "smithers-orchestrator"; +import { Runbook } from "smthrs"; type RunbookProps = { id?: string; // used as step-id prefix; defaults to "runbook" when omitted @@ -3727,7 +3727,7 @@ export default smithers(() => ( ```ts // Props -import { Supervisor } from "smithers-orchestrator"; +import { Supervisor } from "smthrs"; type SupervisorProps = { id?: string; // default: "supervisor" @@ -3778,7 +3778,7 @@ export default smithers(() => ( ```ts // Props -import { MergeQueue } from "smithers-orchestrator"; +import { MergeQueue } from "smthrs"; type MergeQueueProps = { id?: string; @@ -3809,7 +3809,7 @@ type MergeQueueProps = { ```ts // Props -import { CheckSuite } from "smithers-orchestrator"; +import { CheckSuite } from "smthrs"; type CheckConfig = { id: string; agent?: AgentLike; command?: string; label?: string }; @@ -3852,7 +3852,7 @@ type CheckSuiteProps = { ```ts // Props -import { ClassifyAndRoute } from "smithers-orchestrator"; +import { ClassifyAndRoute } from "smthrs"; type CategoryConfig = { agent: AgentLike; @@ -3905,7 +3905,7 @@ const classification = ctx.outputMaybe(outputs.classification, { ```ts // Props -import { GatherAndSynthesize } from "smithers-orchestrator"; +import { GatherAndSynthesize } from "smthrs"; type SourceDef = { agent: AgentLike; @@ -3958,7 +3958,7 @@ type GatherAndSynthesizeProps = { ```ts // Props -import { Panel } from "smithers-orchestrator"; +import { Panel } from "smthrs"; type PanelistConfig = { agent: AgentLike; role?: string; label?: string }; @@ -4007,7 +4007,7 @@ type PanelProps = { ```ts // Props -import { Debate } from "smithers-orchestrator"; +import { Debate } from "smthrs"; type DebateProps = { id?: string; // default: "debate" @@ -4050,7 +4050,7 @@ type DebateProps = { ```ts // Props -import { Kanban } from "smithers-orchestrator"; +import { Kanban } from "smthrs"; type ColumnDef = { name: string; @@ -4105,7 +4105,7 @@ const columns = [ Each recipe is a working snippet plus one line of context. They compose freely. -If you want a ready-to-run outcome before writing workflow code, start with [Starters](/starters) or run `bunx smithers-orchestrator starters`. +If you want a ready-to-run outcome before writing workflow code, start with [Starters](/starters) or run `bunx smthrs starters`. ## Implement → review loop @@ -4246,7 +4246,7 @@ One context boundary per logical operation, not per step. Splitting too finely l ## Per-agent least-privilege tools ```tsx -import { AnthropicAgent } from "smithers-orchestrator"; +import { AnthropicAgent } from "smthrs"; const analyst = new AnthropicAgent({ model, system: "Return JSON" }); // no tools const reviewer = new AnthropicAgent({ model, system: "...", tools: { read, grep } }); // read-only @@ -4260,7 +4260,7 @@ Match the tool surface to the role. External mutations must mark themselves and use the runtime idempotency key. ```tsx -import { defineTool } from "smithers-orchestrator/tools"; +import { defineTool } from "smthrs/tools"; const createTicket = defineTool({ name: "jira.create", @@ -4345,7 +4345,7 @@ Workflow logic factors out into hooks the same way React UI logic does. Smithers records a jj change ID (or git SHA) per attempt. Revert any attempt to its exact workspace state: ```bash -bunx smithers-orchestrator revert workflow.tsx --run-id <id> --node-id implement --attempt 1 +bunx smthrs revert workflow.tsx --run-id <id> --node-id implement --attempt 1 ``` Useful when an experiment leaves the worktree in a bad state. @@ -4353,10 +4353,10 @@ Useful when an experiment leaves the worktree in a bad state. ## Time travel: fork, replay, diff ```bash -bunx smithers-orchestrator timeline <run-id> --tree -bunx smithers-orchestrator diff <run-id> <node-id> -bunx smithers-orchestrator fork workflow.tsx --run-id <id> --frame 5 --reset-node analyze --label exp1 -bunx smithers-orchestrator replay workflow.tsx --run-id <id> --frame 5 --restore-vcs +bunx smthrs timeline <run-id> --tree +bunx smthrs diff <run-id> <node-id> +bunx smthrs fork workflow.tsx --run-id <id> --frame 5 --reset-node analyze --label exp1 +bunx smthrs replay workflow.tsx --run-id <id> --frame 5 --restore-vcs ``` Fork makes a child run without starting it (add `--run` to start immediately); replay also makes a child run but immediately resumes it. `--restore-vcs` checks out the original revision so re-execution sees the same source. @@ -4364,7 +4364,7 @@ Fork makes a child run without starting it (add `--run` to start immediately); r ## Scoring tasks ```tsx -import { schemaAdherenceScorer, latencyScorer, llmJudge } from "smithers-orchestrator/scorers"; +import { schemaAdherenceScorer, latencyScorer, llmJudge } from "smthrs/scorers"; <Task id="analyze" @@ -4393,7 +4393,7 @@ Scorers run after the task and never block. Sample expensive scorers with `ratio ``` ```bash -bunx smithers-orchestrator eval workflow.tsx --cases evals/smoke.jsonl --suite smoke --force +bunx smthrs eval workflow.tsx --cases evals/smoke.jsonl --suite smoke --force ``` Use eval suites when you need repeatable workflow-level checks. Assertions support `status`, `output` (exact match), and `outputContains` (partial match). Reports land in `.smithers/evals/<suite>.json`; the command exits non-zero on failures. @@ -4411,7 +4411,7 @@ Avoids unbounded SQLite growth in long-lived loops. ## Hot reload while authoring ```bash -bunx smithers-orchestrator up workflow.tsx --hot +bunx smthrs up workflow.tsx --hot ``` Edits to the workflow source apply on the next render frame without losing in-flight task state. Schema changes still require a fresh run. @@ -4447,9 +4447,9 @@ Every agent task produces a reusable session snapshot. `fork` starts a new task ## Types -> Public TypeScript surface for smithers-orchestrator. +> Public TypeScript surface for smthrs. -One source of truth: `tsc --emitDeclarationOnly` would produce something close to this. Import these types from `smithers-orchestrator` unless noted otherwise. +One source of truth: `tsc --emitDeclarationOnly` would produce something close to this. Import these types from `smthrs` unless noted otherwise. Major sections at a glance: - **Workflow / Context** — `SmithersWorkflow`, `SmithersCtx`, `RunOptions`, `RunResult` — the entry points for defining and running workflows. @@ -4457,7 +4457,7 @@ Major sections at a glance: - **Component props** — `WorkflowProps`, `ApprovalProps`, `SignalProps`, `LoopProps`, etc. — all JSX component interfaces. - **Errors** — `SmithersError`, `KnownSmithersErrorCode` — typed error codes; see [Errors](/reference/errors) for descriptions. - **Server / Gateway** — `ServerOptions`, `GatewayOptions`, `GatewayAuthConfig` — self-hosting configuration. -- **Scorers / Memory / OpenAPI / Observability** — sub-path imports (`smithers-orchestrator/scorers`, `/memory`, `/openapi`, `/observability`). +- **Scorers / Memory / OpenAPI / Observability** — sub-path imports (`smthrs/scorers`, `/memory`, `/openapi`, `/observability`). ```ts // ============================================================================= @@ -5068,7 +5068,7 @@ type GatewayOptions = { }; // ============================================================================= -// Scorers (smithers-orchestrator/scorers) +// Scorers (smthrs/scorers) // ============================================================================= type ScoreResult = { score: number; reason?: string; meta?: Record<string, unknown> }; @@ -5093,7 +5093,7 @@ type CreateScorerConfig = { }; // ============================================================================= -// Memory (smithers-orchestrator/memory) +// Memory (smthrs/memory) // ============================================================================= type MemoryFact = { namespace: string; key: string; valueJson: string; schemaSig?: string | null; createdAtMs: number; updatedAtMs: number; ttlMs?: number | null }; @@ -5126,7 +5126,7 @@ type MemoryStore = { }; // ============================================================================= -// OpenAPI tools (smithers-orchestrator/openapi) +// OpenAPI tools (smthrs/openapi) // ============================================================================= type OpenApiAuth = @@ -5171,7 +5171,7 @@ type CreateSmithersApi<Schema = any> = { }; // ============================================================================= -// Observability (smithers-orchestrator/observability) +// Observability (smthrs/observability) // ============================================================================= type SmithersLogFormat = "json" | "pretty"; @@ -5180,7 +5180,7 @@ type SmithersObservabilityOptions = { service?: SmithersObservabilityService; lo type ResolvedSmithersObservabilityOptions = SmithersObservabilityOptions & { metricsPort?: number; metricsPath?: string }; ``` -For canonical, machine-checked types, install `smithers-orchestrator` and use editor go-to-definition. For runtime errors, see [Errors](/reference/errors). +For canonical, machine-checked types, install `smthrs` and use editor go-to-definition. For runtime errors, see [Errors](/reference/errors). --- @@ -5200,12 +5200,12 @@ import { isKnownSmithersErrorCode, isSmithersError, knownSmithersErrorCodes, -} from "smithers-orchestrator"; +} from "smthrs"; import type { KnownSmithersErrorCode, SmithersError, SmithersErrorCode, -} from "smithers-orchestrator"; +} from "smthrs"; ``` Every built-in `SmithersErrorInstance` carries three pieces of documentation metadata: @@ -5234,7 +5234,7 @@ Use `KnownSmithersErrorCode` for an exhaustive switch over built-in Smithers cod ```ts import { Effect } from "effect"; -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; try { await Effect.runPromise(runWorkflow(workflow, { input: {} })); @@ -5431,7 +5431,7 @@ JSON response codes, not `SmithersErrorInstance` objects. ## Package Configuration -> Reference for the smithers-orchestrator package exports, TypeScript configuration, and Bun preload setup. +> Reference for the smthrs package exports, TypeScript configuration, and Bun preload setup. This page covers: CLI binary usage, subpath export map, TypeScript compiler options, Bun preload and test config, and npm scripts. @@ -5445,88 +5445,88 @@ Use the subpath form to import only the surface you need. | Import path | Entry file | Purpose | |---|---|---| -| `smithers-orchestrator` | `./src/index.js` | Core API: `createSmithers`, components, `runWorkflow`, `renderMdx`, errors | -| `smithers-orchestrator/gateway` | `./src/gateway.js` | Gateway server primitives from `@smithers-orchestrator/server/gateway` | -| `smithers-orchestrator/gateway-client` | `./src/gateway-client.js` | Typed client helpers from `@smithers-orchestrator/gateway-client` | -| `smithers-orchestrator/gateway-react` | `./src/gateway-react.js` | React hooks and providers for gateway-backed UIs | -| `smithers-orchestrator/sandbox` | `./src/sandbox.js` | Sandbox provider contracts, bundles, and execution helpers | -| `smithers-orchestrator/jsx-runtime` | `./src/jsx-runtime.js` | JSX runtime (auto-resolved by `jsxImportSource`) | -| `smithers-orchestrator/jsx-dev-runtime` | `./src/jsx-runtime.js` | JSX dev runtime (auto-resolved in dev mode) | -| `smithers-orchestrator/tools` | `./src/tools.js` | Tool sandbox: `defineTool`, `read`, `grep`, `bash`, `edit`, `write` | -| `smithers-orchestrator/server` | `./src/server.js` | HTTP server for run management and event streaming | -| `smithers-orchestrator/observability` | `./src/observability.js` | OpenTelemetry traces, metrics, and Prometheus integration | -| `smithers-orchestrator/mdx-plugin` | `./src/mdx-plugin.js` | Bun preload plugin for `.mdx` imports | -| `smithers-orchestrator/dom/renderer` | `./src/dom/renderer.js` | Internal renderer (advanced use) | -| `smithers-orchestrator/serve` | `./src/serve.js` | Single-workflow HTTP server via `createServeApp` | -| `smithers-orchestrator/scorers` | `./src/scorers.js` | Eval scorers: `createScorer`, `llmJudge`, `aggregateScores` | -| `smithers-orchestrator/memory` | `./src/memory.js` | Cross-run facts, message history, processors, and metrics | -| `smithers-orchestrator/openapi` | `./src/openapi.js` | Generate AI SDK tools from OpenAPI specs | -| `smithers-orchestrator/control-plane` | `./src/control-plane.js` | Organization, project, billing, usage, secret-reference, and audit primitives | - -The PI plugin is published as the separate `@smithers-orchestrator/pi-plugin` package. The old `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extension` subpaths are no longer exported. +| `smthrs` | `./src/index.js` | Core API: `createSmithers`, components, `runWorkflow`, `renderMdx`, errors | +| `smthrs/gateway` | `./src/gateway.js` | Gateway server primitives from `@smthrs/server/gateway` | +| `smthrs/gateway-client` | `./src/gateway-client.js` | Typed client helpers from `@smthrs/gateway-client` | +| `smthrs/gateway-react` | `./src/gateway-react.js` | React hooks and providers for gateway-backed UIs | +| `smthrs/sandbox` | `./src/sandbox.js` | Sandbox provider contracts, bundles, and execution helpers | +| `smthrs/jsx-runtime` | `./src/jsx-runtime.js` | JSX runtime (auto-resolved by `jsxImportSource`) | +| `smthrs/jsx-dev-runtime` | `./src/jsx-runtime.js` | JSX dev runtime (auto-resolved in dev mode) | +| `smthrs/tools` | `./src/tools.js` | Tool sandbox: `defineTool`, `read`, `grep`, `bash`, `edit`, `write` | +| `smthrs/server` | `./src/server.js` | HTTP server for run management and event streaming | +| `smthrs/observability` | `./src/observability.js` | OpenTelemetry traces, metrics, and Prometheus integration | +| `smthrs/mdx-plugin` | `./src/mdx-plugin.js` | Bun preload plugin for `.mdx` imports | +| `smthrs/dom/renderer` | `./src/dom/renderer.js` | Internal renderer (advanced use) | +| `smthrs/serve` | `./src/serve.js` | Single-workflow HTTP server via `createServeApp` | +| `smthrs/scorers` | `./src/scorers.js` | Eval scorers: `createScorer`, `llmJudge`, `aggregateScores` | +| `smthrs/memory` | `./src/memory.js` | Cross-run facts, message history, processors, and metrics | +| `smthrs/openapi` | `./src/openapi.js` | Generate AI SDK tools from OpenAPI specs | +| `smthrs/control-plane` | `./src/control-plane.js` | Organization, project, billing, usage, secret-reference, and audit primitives | + +The PI plugin is published as the separate `@smthrs/pi-plugin` package. The old `smthrs/pi-plugin` and `smthrs/pi-extension` subpaths are no longer exported. ## Workspace Packages -Most applications should import from `smithers-orchestrator`. The scoped workspace packages below are published for advanced integrations, custom clients, and framework development. +Most applications should import from `smthrs`. The scoped workspace packages below are published for advanced integrations, custom clients, and framework development. | Package | Primary surface | Related docs | |---|---|---| -| `smithers-orchestrator` | Public facade for workflow authoring, components, agents, tools, server helpers, memory, OpenAPI tools, scorers, and JSX runtime setup | This page, [Types](/reference/types) | -| `@smithers-orchestrator/cli` | CLI entrypoint, MCP server, local workflow pack, account registry commands, DevTools commands, cron, alerts, and server commands | [CLI Overview](/cli/overview), [MCP Server](/integrations/mcp-server) | -| `@smithers-orchestrator/accounts` | Subscription and API-key account registry helpers: `listAccounts`, `addAccount`, `removeAccount`, `getAccount`, `accountToProviderEnv` | [CLI Agents](/integrations/cli-agents) | -| `@smithers-orchestrator/agents` | AI SDK and CLI agent adapters, CLI capability reports, agent contracts, and tool capability registry | [CLI Agents](/integrations/cli-agents), [SDK Agents](/integrations/sdk-agents) | -| `@smithers-orchestrator/components` | JSX workflow components such as `Task`, `Workflow`, `Approval`, `Sandbox`, `Timer`, `Signal`, and control-flow components | [Components](/concepts/control-flow) | -| `@smithers-orchestrator/control-plane` | Durable organization, project, team, billing, usage, secret-reference, and audit primitives for hosted deployments | [Control Plane](/deployment/control-plane) | -| `@smithers-orchestrator/db` | SQLite/Drizzle adapter, table setup, run-state derivation, schema helpers, and output tables | [Data Model](/concepts/data-model), [Run State](/runtime/run-state) | -| `@smithers-orchestrator/devtools` | Snapshot, tree, diff, node lookup, task collection, and DevTools run-store helpers behind the CLI inspect commands | [Debugging](/guides/debugging), [CLI Overview](/cli/overview) | -| `@smithers-orchestrator/driver` | Runtime driver contracts: `RunOptions`, `RunResult`, `RunStatus`, `SmithersCtx`, outputs, task runtime, interop, and child process helpers | [Run Workflow](/runtime/run-workflow), [Execution Model](/concepts/execution-model) | -| `@smithers-orchestrator/engine` | Workflow rendering/execution API: `runWorkflow`, `renderFrame`, `workflow`, `Smithers`, `fragment`, signals, and Effect versioning | [Render Frame](/runtime/render-frame), [Run Workflow](/runtime/run-workflow) | -| `@smithers-orchestrator/errors` | Error definitions, known codes, JSON serialization, docs URLs, and type guards | [Errors](/reference/errors) | -| `@smithers-orchestrator/gateway` | Stable Gateway RPC contracts, auth scopes, deployment metadata, and generated OpenAPI schema | [Gateway](/integrations/gateway), [RPC](/rpc/launch-run) | -| `@smithers-orchestrator/gateway-client` | Browser/client SDK for Gateway RPC requests and event streams | [Gateway](/integrations/gateway) | -| `@smithers-orchestrator/gateway-react` | React hooks and root helpers for Gateway-backed UIs | [Gateway](/integrations/gateway) | -| `@smithers-orchestrator/graph` | Framework-neutral workflow graph model, XML nodes, task descriptors, and graph snapshots | [Planner Internals](/concepts/planner-internals), [Types](/reference/types) | -| `@smithers-orchestrator/jj-darwin-arm64` | Vendored jj (Jujutsu) binary for darwin-arm64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | -| `@smithers-orchestrator/jj-darwin-x64` | Vendored jj (Jujutsu) binary for darwin-x64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | -| `@smithers-orchestrator/jj-linux-arm64` | Vendored jj (Jujutsu) binary for linux-arm64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | -| `@smithers-orchestrator/jj-linux-x64` | Vendored jj (Jujutsu) binary for linux-x64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | -| `@smithers-orchestrator/jj-win32-x64` | Vendored jj (Jujutsu) binary for win32-x64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | -| `@smithers-orchestrator/memory` | Cross-run facts, message history, processors, namespaces, service layer, and metrics | [Memory](/concepts/memory), [Memory Quickstart](/guides/memory-quickstart) | -| `@smithers-orchestrator/observability` | Event types, logging, tracing, metrics, Prometheus rendering, and runtime observability layers | [Events](/runtime/events), [Event Types](/reference/event-types) | -| `@smithers-orchestrator/openapi` | OpenAPI parsing, operation extraction, AI SDK tool generation, schema conversion, and metrics | [OpenAPI Tools](/concepts/openapi-tools), [OpenAPI Quickstart](/guides/openapi-tools-quickstart) | -| `@smithers-orchestrator/pi-plugin` | PI extension runtime, views, API wrappers, and workflow inspection integration | [PI Integration](/integrations/pi-integration) | -| `@smithers-orchestrator/protocol` | Shared contracts, small value types, and protocol-level errors for cross-package use | [Types](/reference/types), [Errors](/reference/errors) | -| `@smithers-orchestrator/react-reconciler` | Custom React reconciler, host context, DOM renderer, DevTools preload, driver, and JSX runtime internals | [Why React](/why-react), [Render Frame](/runtime/render-frame) | -| `@smithers-orchestrator/sandbox` | Sandbox bundle, execute, and transport primitives used by the `Sandbox` component | [Sandbox](/components/sandbox) | -| `@smithers-orchestrator/scheduler` | Pure workflow state machine: task state, scheduler decisions, retry/cache policies, wait reasons, and workflow session services | [Workflow State](/concepts/workflow-state), [Suspend and Resume](/concepts/suspend-and-resume) | -| `@smithers-orchestrator/scorers` | Scorer definitions, LLM judges, batch execution, aggregation, persistence schema, and metrics | [Evals](/concepts/evals), [Evals Quickstart](/guides/evals-quickstart) | -| `@smithers-orchestrator/server` | HTTP, WebSocket, Gateway, cron, webhook, metrics, and single-workflow serving APIs | [Server](/integrations/server), [Serve](/integrations/serve) | -| `@smithers-orchestrator/smithers` | Cerebras chat PWA and workflow graph demo application | [CLI Overview](/cli/overview) | -| `@smithers-orchestrator/smithers-demo` | Interactive Smithers workflow generator demo with React Flow visualization | [CLI Overview](/cli/overview) | -| `@smithers-orchestrator/smithers-studio-2` | Next Smithers Studio UI shell for browsing and driving workflow runs | [CLI Overview](/cli/overview) | -| `@smithers-orchestrator/smithers-tui-demo` | Private React TUI demo app for terminal workflow interaction experiments | [CLI Overview](/cli/overview) | -| `@smithers-orchestrator/time-travel` | Snapshots, diffs, forks, replay, timelines, VCS tags, rewind locks/audits, and time-travel metrics | [Time Travel](/concepts/time-travel), [Time Travel Quickstart](/guides/time-travel-quickstart) | -| `@smithers-orchestrator/tool-context` | AsyncLocalStorage tool-execution context (run/node/idempotency keys, durability snapshot hook) shared by the engine and `smithers-orchestrator` without a dependency cycle | [Execution Model](/concepts/execution-model) | -| `@smithers-orchestrator/usage` | Account quota and rate-limit usage reporting for Smithers providers | [CLI Overview](/cli/overview) | -| `@smithers-orchestrator/vcs` | VCS discovery and jj workspace operations such as `runJj`, `workspaceAdd`, `workspaceList`, and pointer reverts | [VCS Helpers](/reference/vcs-helpers), [VCS Guide](/guides/vcs) | +| `smthrs` | Public facade for workflow authoring, components, agents, tools, server helpers, memory, OpenAPI tools, scorers, and JSX runtime setup | This page, [Types](/reference/types) | +| `@smthrs/cli` | CLI entrypoint, MCP server, local workflow pack, account registry commands, DevTools commands, cron, alerts, and server commands | [CLI Overview](/cli/overview), [MCP Server](/integrations/mcp-server) | +| `@smthrs/accounts` | Subscription and API-key account registry helpers: `listAccounts`, `addAccount`, `removeAccount`, `getAccount`, `accountToProviderEnv` | [CLI Agents](/integrations/cli-agents) | +| `@smthrs/agents` | AI SDK and CLI agent adapters, CLI capability reports, agent contracts, and tool capability registry | [CLI Agents](/integrations/cli-agents), [SDK Agents](/integrations/sdk-agents) | +| `@smthrs/components` | JSX workflow components such as `Task`, `Workflow`, `Approval`, `Sandbox`, `Timer`, `Signal`, and control-flow components | [Components](/concepts/control-flow) | +| `@smthrs/control-plane` | Durable organization, project, team, billing, usage, secret-reference, and audit primitives for hosted deployments | [Control Plane](/deployment/control-plane) | +| `@smthrs/db` | SQLite/Drizzle adapter, table setup, run-state derivation, schema helpers, and output tables | [Data Model](/concepts/data-model), [Run State](/runtime/run-state) | +| `@smthrs/devtools` | Snapshot, tree, diff, node lookup, task collection, and DevTools run-store helpers behind the CLI inspect commands | [Debugging](/guides/debugging), [CLI Overview](/cli/overview) | +| `@smthrs/driver` | Runtime driver contracts: `RunOptions`, `RunResult`, `RunStatus`, `SmithersCtx`, outputs, task runtime, interop, and child process helpers | [Run Workflow](/runtime/run-workflow), [Execution Model](/concepts/execution-model) | +| `@smthrs/engine` | Workflow rendering/execution API: `runWorkflow`, `renderFrame`, `workflow`, `Smithers`, `fragment`, signals, and Effect versioning | [Render Frame](/runtime/render-frame), [Run Workflow](/runtime/run-workflow) | +| `@smthrs/errors` | Error definitions, known codes, JSON serialization, docs URLs, and type guards | [Errors](/reference/errors) | +| `@smthrs/gateway` | Stable Gateway RPC contracts, auth scopes, deployment metadata, and generated OpenAPI schema | [Gateway](/integrations/gateway), [RPC](/rpc/launch-run) | +| `@smthrs/gateway-client` | Browser/client SDK for Gateway RPC requests and event streams | [Gateway](/integrations/gateway) | +| `@smthrs/gateway-react` | React hooks and root helpers for Gateway-backed UIs | [Gateway](/integrations/gateway) | +| `@smthrs/graph` | Framework-neutral workflow graph model, XML nodes, task descriptors, and graph snapshots | [Planner Internals](/concepts/planner-internals), [Types](/reference/types) | +| `@smthrs/jj-darwin-arm64` | Vendored jj (Jujutsu) binary for darwin-arm64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | +| `@smthrs/jj-darwin-x64` | Vendored jj (Jujutsu) binary for darwin-x64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | +| `@smthrs/jj-linux-arm64` | Vendored jj (Jujutsu) binary for linux-arm64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | +| `@smthrs/jj-linux-x64` | Vendored jj (Jujutsu) binary for linux-x64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | +| `@smthrs/jj-win32-x64` | Vendored jj (Jujutsu) binary for win32-x64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | +| `@smthrs/memory` | Cross-run facts, message history, processors, namespaces, service layer, and metrics | [Memory](/concepts/memory), [Memory Quickstart](/guides/memory-quickstart) | +| `@smthrs/observability` | Event types, logging, tracing, metrics, Prometheus rendering, and runtime observability layers | [Events](/runtime/events), [Event Types](/reference/event-types) | +| `@smthrs/openapi` | OpenAPI parsing, operation extraction, AI SDK tool generation, schema conversion, and metrics | [OpenAPI Tools](/concepts/openapi-tools), [OpenAPI Quickstart](/guides/openapi-tools-quickstart) | +| `@smthrs/pi-plugin` | PI extension runtime, views, API wrappers, and workflow inspection integration | [PI Integration](/integrations/pi-integration) | +| `@smthrs/protocol` | Shared contracts, small value types, and protocol-level errors for cross-package use | [Types](/reference/types), [Errors](/reference/errors) | +| `@smthrs/react-reconciler` | Custom React reconciler, host context, DOM renderer, DevTools preload, driver, and JSX runtime internals | [Why React](/why-react), [Render Frame](/runtime/render-frame) | +| `@smthrs/sandbox` | Sandbox bundle, execute, and transport primitives used by the `Sandbox` component | [Sandbox](/components/sandbox) | +| `@smthrs/scheduler` | Pure workflow state machine: task state, scheduler decisions, retry/cache policies, wait reasons, and workflow session services | [Workflow State](/concepts/workflow-state), [Suspend and Resume](/concepts/suspend-and-resume) | +| `@smthrs/scorers` | Scorer definitions, LLM judges, batch execution, aggregation, persistence schema, and metrics | [Evals](/concepts/evals), [Evals Quickstart](/guides/evals-quickstart) | +| `@smthrs/server` | HTTP, WebSocket, Gateway, cron, webhook, metrics, and single-workflow serving APIs | [Server](/integrations/server), [Serve](/integrations/serve) | +| `@smthrs/smithers` | Cerebras chat PWA and workflow graph demo application | [CLI Overview](/cli/overview) | +| `@smthrs/smithers-demo` | Interactive Smithers workflow generator demo with React Flow visualization | [CLI Overview](/cli/overview) | +| `@smthrs/smithers-studio-2` | Next Smithers Studio UI shell for browsing and driving workflow runs | [CLI Overview](/cli/overview) | +| `@smthrs/smithers-tui-demo` | Private React TUI demo app for terminal workflow interaction experiments | [CLI Overview](/cli/overview) | +| `@smthrs/time-travel` | Snapshots, diffs, forks, replay, timelines, VCS tags, rewind locks/audits, and time-travel metrics | [Time Travel](/concepts/time-travel), [Time Travel Quickstart](/guides/time-travel-quickstart) | +| `@smthrs/tool-context` | AsyncLocalStorage tool-execution context (run/node/idempotency keys, durability snapshot hook) shared by the engine and `smthrs` without a dependency cycle | [Execution Model](/concepts/execution-model) | +| `@smthrs/usage` | Account quota and rate-limit usage reporting for Smithers providers | [CLI Overview](/cli/overview) | +| `@smthrs/vcs` | VCS discovery and jj workspace operations such as `runJj`, `workspaceAdd`, `workspaceList`, and pointer reverts | [VCS Helpers](/reference/vcs-helpers), [VCS Guide](/guides/vcs) | ### Usage ```ts // Core API -import { createSmithers, runWorkflow } from "smithers-orchestrator"; +import { createSmithers, runWorkflow } from "smthrs"; // Tools -import { defineTool, bash, read, write } from "smithers-orchestrator/tools"; +import { defineTool, bash, read, write } from "smthrs/tools"; // Scorers -import { createScorer, llmJudge } from "smithers-orchestrator/scorers"; +import { createScorer, llmJudge } from "smthrs/scorers"; // MDX plugin (in preload.ts) -import { mdxPlugin } from "smithers-orchestrator/mdx-plugin"; +import { mdxPlugin } from "smthrs/mdx-plugin"; // Control-plane primitives -import { ControlPlaneStore } from "smithers-orchestrator/control-plane"; +import { ControlPlaneStore } from "smthrs/control-plane"; ``` ## TypeScript Configuration @@ -5537,42 +5537,42 @@ import { ControlPlaneStore } from "smithers-orchestrator/control-plane"; { "compilerOptions": { "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator" + "jsxImportSource": "smthrs" } } ``` -This tells TypeScript to resolve JSX transforms from `smithers-orchestrator/jsx-runtime` instead of `react/jsx-runtime`. The Smithers JSX runtime re-exports React's runtime, so component behavior is identical. This setting enables proper type resolution for Smithers workflow components. +This tells TypeScript to resolve JSX transforms from `smthrs/jsx-runtime` instead of `react/jsx-runtime`. The Smithers JSX runtime re-exports React's runtime, so component behavior is identical. This setting enables proper type resolution for Smithers workflow components. See [JSX Installation](/jsx/installation) for the complete TypeScript setup. ### Path Aliases -When developing inside the `smithers-orchestrator` monorepo, the root `tsconfig.json` defines path aliases so source imports resolve without a build step: +When developing inside the `smthrs` monorepo, the root `tsconfig.json` defines path aliases so source imports resolve without a build step: ```jsonc "paths": { - "smithers-orchestrator": ["./packages/smithers/src/index.js"], - "smithers-orchestrator/jsx-runtime": ["./packages/smithers/src/jsx-runtime.js"], - "smithers-orchestrator/jsx-dev-runtime": ["./packages/smithers/src/jsx-runtime.js"], - "smithers-orchestrator/tools": ["./packages/smithers/src/tools.js"], - "smithers-orchestrator/*": [ + "smthrs": ["./packages/smithers/src/index.js"], + "smthrs/jsx-runtime": ["./packages/smithers/src/jsx-runtime.js"], + "smthrs/jsx-dev-runtime": ["./packages/smithers/src/jsx-runtime.js"], + "smthrs/tools": ["./packages/smithers/src/tools.js"], + "smthrs/*": [ "./packages/smithers/src/*.js", "./packages/smithers/src/*/index.js" ], - "smithers-orchestrator/scorers": ["./packages/scorers/src/index.js"], - "@smithers-orchestrator/agents": ["./packages/agents/src/index.js"], - "@smithers-orchestrator/gateway-client": ["./packages/gateway-client/src/index.ts"], - "@smithers-orchestrator/gateway-react": ["./packages/gateway-react/src/index.ts"], - "@smithers-orchestrator/pi-plugin": ["./packages/pi-plugin/src/index.ts"], - "@smithers-orchestrator/server": ["./packages/server/src/index.js"] + "smthrs/scorers": ["./packages/scorers/src/index.js"], + "@smthrs/agents": ["./packages/agents/src/index.js"], + "@smthrs/gateway-client": ["./packages/gateway-client/src/index.ts"], + "@smthrs/gateway-react": ["./packages/gateway-react/src/index.ts"], + "@smthrs/pi-plugin": ["./packages/pi-plugin/src/index.ts"], + "@smthrs/server": ["./packages/server/src/index.js"] // The root tsconfig includes the same style of alias for each workspace package. } ``` -The root package is a private `smithers-monorepo`; `smithers-orchestrator` resolves to `packages/smithers`. +The root package is a private `smithers-monorepo`; `smthrs` resolves to `packages/smithers`. -**End users do not need path aliases** — only framework developers do. Installing `smithers-orchestrator` as a dependency lets Node/Bun module resolution handle import paths automatically. +**End users do not need path aliases** — only framework developers do. Installing `smthrs` as a dependency lets Node/Bun module resolution handle import paths automatically. ### Local Type Root Shims @@ -5619,7 +5619,7 @@ Defined in the root `package.json` for development: | Script | Command | Purpose | |---|---|---| | `typecheck` | `tsc --noEmit` | Type-check the `src/` and `tests/` trees against `tsconfig.json` | -| `typecheck:examples` | `tsc -p examples/tsconfig.json --noEmit` | Type-check example files against a separate config that maps `smithers-orchestrator` to `examples-entry.js` | +| `typecheck:examples` | `tsc -p examples/tsconfig.json --noEmit` | Type-check example files against a separate config that maps `smthrs` to `examples-entry.js` | | `lint` | `oxlint ... packages/*/src packages/*/tests` | Lint package source and tests with oxlint | | `lint:fix` | `oxlint ... --fix --fix-suggestions packages/*/src packages/*/tests` | Apply supported oxlint fixes | | `cli` | `bun run apps/cli/src/index.js` | Run the local development CLI entrypoint | @@ -5648,7 +5648,7 @@ See [Production Project Structure](/guides/project-structure) for a complete use ## VCS Helper Reference -> Public JJ helper APIs exported by smithers-orchestrator for repo detection, snapshot inspection, and workspace management. +> Public JJ helper APIs exported by smthrs for repo detection, snapshot inspection, and workspace management. Smithers exports a small JJ helper surface for applications that inspect or manage Jujutsu state directly. @@ -5669,7 +5669,7 @@ import { workspaceAdd, workspaceList, workspaceClose, -} from "smithers-orchestrator"; +} from "smthrs"; ``` ## `runJj(args, opts?)` @@ -5827,10 +5827,10 @@ For workflow-level revert behavior, prefer the runtime and CLI docs: ## runWorkflow -> Programmatic entry point. Equivalent to `bunx smithers-orchestrator up`. +> Programmatic entry point. Equivalent to `bunx smthrs up`. ```ts -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; import { Effect } from "effect"; const result = await Effect.runPromise(runWorkflow(workflow, { @@ -5878,7 +5878,7 @@ All in-flight attempts are marked cancelled and `NodeCancelled` events are emitt ## Hijack handoff -If a CLI hijack happens mid-run (`bunx smithers-orchestrator hijack <id>`), the run ends `"cancelled"` and the latest attempt metadata stores `hijackHandoff`. On `resume: true`, Smithers waits for a safe handoff point and continues with the persisted CLI session id (see [CLI Agents](/integrations/cli-agents)) or the persisted message history (SDK agents). +If a CLI hijack happens mid-run (`bunx smthrs hijack <id>`), the run ends `"cancelled"` and the latest attempt metadata stores `hijackHandoff`. On `resume: true`, Smithers waits for a safe handoff point and continues with the persisted CLI session id (see [CLI Agents](/integrations/cli-agents)) or the persisted message history (SDK agents). ## `result.output` @@ -5905,8 +5905,8 @@ const rows = db.query("SELECT * FROM page WHERE run_id = ? ORDER BY iteration DE Use `renderFrame` to preview the task graph — for CI validation, graph-inspection UIs, or dry-run checks — without executing or persisting anything. `runId` and `iteration` are arbitrary strings used only for snapshot identity. ```ts -import { renderFrame } from "smithers-orchestrator"; -import { SmithersCtx } from "@smithers-orchestrator/driver"; +import { renderFrame } from "smthrs"; +import { SmithersCtx } from "@smthrs/driver"; import { Effect } from "effect"; const ctx = new SmithersCtx({ runId: "preview", iteration: 0, input: { task: "preview" }, outputs: {} }); @@ -5946,7 +5946,7 @@ bunx smithers graph workflow.tsx --input '{"task":"preview"}' Each successful task attempt captures the current [JJ](https://jj-vcs.github.io/jj/) change ID into `_smithers_attempts.jj_pointer`. `revert` restores the workspace to that state and discards any graph snapshots recorded after the attempt began, so the run's timeline rolls back to the point-in-time of that attempt. ```bash -bunx smithers-orchestrator revert workflow.tsx \ +bunx smthrs revert workflow.tsx \ --run-id <id> --node-id <node> [--attempt N=1] [--iteration N=0] ``` @@ -5961,7 +5961,7 @@ Revert restores files only — it doesn't alter JJ history; the restoration crea ## Programmatic ```ts -import { revertToAttempt } from "smithers-orchestrator"; +import { revertToAttempt } from "smthrs"; const result = await revertToAttempt(adapter, { runId: "abc123", @@ -6065,7 +6065,7 @@ Terminal states (`succeeded`, `failed`, `cancelled`) carry neither. ## computeRunState ```ts -import { computeRunState } from "@smithers-orchestrator/db/runState"; +import { computeRunState } from "@smthrs/db/runState"; const view = await computeRunState(adapter, runId); view.state; // "running" | ... @@ -6081,7 +6081,7 @@ not run heuristics. when you already have the rows in memory: ```ts -import { deriveRunState } from "@smithers-orchestrator/db/runState"; +import { deriveRunState } from "@smthrs/db/runState"; const view = deriveRunState({ run, @@ -6146,7 +6146,7 @@ Historical TUI product/design material is kept for reference, but it does not de Run `smithers optimize` to generate improved prompts for agent tasks via GEPA, verify the improvement against your eval suite, and save the result as a reusable artifact. ```bash -bunx smithers-orchestrator optimize workflow.tsx \ +bunx smthrs optimize workflow.tsx \ --cases evals/smoke.jsonl \ --suite smoke-gepa \ --provider cerebras \ @@ -6166,7 +6166,7 @@ The command writes the artifact only when the optimized score improves by at lea Apply the optimized prompts to future evals with `--optimization`: ```bash -bunx smithers-orchestrator eval workflow.tsx \ +bunx smthrs eval workflow.tsx \ --cases evals/smoke.jsonl \ --suite smoke-optimized \ --optimization .smithers/optimizations/smoke-gepa.json @@ -6179,7 +6179,7 @@ The artifact patches only agent-backed `<Task>` prompts by `nodeId`. Workflow st Example: the following run demonstrates a baseline failure corrected by a GEPA-generated patch. The baseline prompt did not include the required optimization token, so the eval failed. Cerebras GEPA generated a prompt patch that included the missing requirement, and the optimized eval passed. ```bash -CEREBRAS_API_KEY=... bunx smithers-orchestrator optimize workflow.tsx \ +CEREBRAS_API_KEY=... bunx smthrs optimize workflow.tsx \ --cases evals/opt.jsonl \ --suite cerebras-proof \ --provider cerebras \ diff --git a/docs/references/smithers/docs/llms-effect.txt b/docs/references/smithers/docs/llms-effect.txt index 3a2e6e0b5..3c02f3dc4 100644 --- a/docs/references/smithers/docs/llms-effect.txt +++ b/docs/references/smithers/docs/llms-effect.txt @@ -23,7 +23,7 @@ you need a React-free API for generated workflow definitions. ## Minimal workflow ```ts -import { Smithers } from "smithers-orchestrator"; +import { Smithers } from "smthrs"; import { Effect, Schema } from "effect"; const inputSchema = Schema.Struct({ diff --git a/docs/references/smithers/docs/llms-events.txt b/docs/references/smithers/docs/llms-events.txt index 395283937..7a68df126 100644 --- a/docs/references/smithers/docs/llms-events.txt +++ b/docs/references/smithers/docs/llms-events.txt @@ -13,7 +13,7 @@ ## Subscribe via `onProgress` ```ts -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; import { Effect } from "effect"; import workflow from "./workflow"; @@ -40,8 +40,8 @@ jq -r .type .smithers/executions/<run-id>/logs/stream.ndjson | sort | uniq -c | Or with the CLI: ```bash -bunx smithers-orchestrator events <run-id> --json -bunx smithers-orchestrator events <run-id> --type tool-call --node analyze +bunx smthrs events <run-id> --json +bunx smthrs events <run-id> --type tool-call --node analyze ``` ## Common fields @@ -56,7 +56,7 @@ Every event includes `type`, `runId`, `timestampMs`. Node-scoped events add `nod ## Event categories -Used by `bunx smithers-orchestrator events --type <category>` and the metrics layer. +Used by `bunx smthrs events --type <category>` and the metrics layer. | Category | Events | |---|---| @@ -89,7 +89,7 @@ Used by `bunx smithers-orchestrator events --type <category>` and the metrics la | `ApprovalGranted` / `ApprovalDenied` | Approval counters | | `TokenUsageReported` | Token usage counters per model/agent | -`trackSmithersEvent` from `smithers-orchestrator/observability` exposes this mapping for custom integrations. See [Observability](/guides/monitoring-logs) for the full OTLP/Prometheus setup. +`trackSmithersEvent` from `smthrs/observability` exposes this mapping for custom integrations. See [Observability](/guides/monitoring-logs) for the full OTLP/Prometheus setup. --- diff --git a/docs/references/smithers/docs/llms-full.txt b/docs/references/smithers/docs/llms-full.txt index 079a15a12..58fb225df 100644 --- a/docs/references/smithers/docs/llms-full.txt +++ b/docs/references/smithers/docs/llms-full.txt @@ -1,7 +1,7 @@ # Smithers — full documentation > Durable AI workflow orchestration as a JSX runtime. -> Repo: github.com/smithersai/smithers · Package: smithers-orchestrator (npm) +> Repo: github.com/smithersai/smithers · Package: smthrs (npm) This is the complete agent-facing Smithers documentation in one file. It is the concatenation of every fragment listed in /llms.txt. @@ -24,7 +24,7 @@ Changelogs are not included; see /docs/changelogs/ on the docs site. # Smithers > Smithers — durable AI workflow orchestration as a JSX runtime. -> Repo: github.com/smithersai/smithers · Package: smithers-orchestrator (npm) +> Repo: github.com/smithersai/smithers · Package: smthrs (npm) This file is the agent-facing core Smithers documentation. It is for Claude, Codex, and other AI harnesses operating Smithers for a human. Read top to bottom for the runtime, agent operating playbook, JSX surface, CLI, and components. @@ -81,8 +81,8 @@ harnesses should operate Smithers for the human, including the `llms.txt` and </CardGroup> ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -101,8 +101,8 @@ export default smithers((ctx) => ( ``` ```bash -bunx smithers-orchestrator init -bunx smithers-orchestrator up workflow.tsx --input '{"name":"world"}' +bunx smthrs init +bunx smthrs up workflow.tsx --input '{"name":"world"}' ``` Outputs are validated by Zod, persisted to SQLite, and survive crashes. Resume with @@ -144,14 +144,14 @@ to run, and treats having your agent author new ones as a first-class path. ## Built-in workflows -`bunx smithers-orchestrator init` scaffolds a `.smithers/` folder preloaded with +`bunx smthrs init` scaffolds a `.smithers/` folder preloaded with production-ready workflows. Point your agent at one and go with -`bunx smithers-orchestrator workflow run <id> --prompt "..."`: +`bunx smthrs workflow run <id> --prompt "..."`: ```bash # break a request into tickets, then implement them on a board -bunx smithers-orchestrator workflow run tickets-create --prompt "add rate limiting and audit logging" -bunx smithers-orchestrator workflow run kanban +bunx smthrs workflow run tickets-create --prompt "add rate limiting and audit logging" +bunx smthrs workflow run kanban ``` <CardGroup cols={2}> @@ -306,24 +306,24 @@ Don't use it for a single prompt → single response. Use your model provider's ## Installation -> Install smithers-orchestrator with the workflow pack, or manually for standalone JSX workflow projects. +> Install smthrs with the workflow pack, or manually for standalone JSX workflow projects. Most teams should start with the workflow pack. It gives you a working `.smithers/` directory with seeded workflows, prompts, and agent configuration instead of assembling the project structure by hand. ## Always Run with `bunx` -Every CLI invocation in these docs is `bunx smithers-orchestrator <command>`. Do **not** install Smithers globally and do **not** use the bare `smithers` or `bunx smithers` shorthand. +Every CLI invocation in these docs is `bunx smthrs <command>`. Do **not** install Smithers globally and do **not** use the bare `smithers` or `bunx smithers` shorthand. - `bunx` resolves the package locally if your project depends on it, otherwise it pulls and runs the latest published version. -- The published npm package is [`smithers-orchestrator`](https://www.npmjs.com/package/smithers-orchestrator). The bare name `smithers` is a different package, so `bunx smithers` runs something else entirely. +- The published npm package is [`smthrs`](https://www.npmjs.com/package/smthrs). The bare name `smithers` is a different package, so `bunx smithers` runs something else entirely. - A global install creates version-drift problems across machines, CI, and contributors. With `bunx`, every project pins Smithers through its own `package.json`. -If you previously ran `npm i -g smithers-orchestrator`, uninstall it (`npm rm -g smithers-orchestrator`) and switch to `bunx`. +If you previously ran `npm i -g smthrs`, uninstall it (`npm rm -g smthrs`) and switch to `bunx`. ## Recommended: Install the Workflow Pack ```bash -bunx smithers-orchestrator init +bunx smthrs init ``` That scaffolds `.smithers/` with files such as: @@ -333,7 +333,7 @@ That scaffolds `.smithers/` with files such as: | `.smithers/workflows/` | Pre-built workflows (`implement`, `review`, `plan`, `ralph`, `debug`, ...) | | `.smithers/prompts/` | Shared MDX prompt templates | | `.smithers/components/` | Reusable TSX components (`Review`, `ValidationLoop`, ...) | -| `.smithers/package.json` | Local workflow project manifest with `smithers-orchestrator` dependency | +| `.smithers/package.json` | Local workflow project manifest with `smthrs` dependency | | `.smithers/tsconfig.json` | TypeScript config for JSX workflow authoring | | `.smithers/bunfig.toml` | Bun preload config for MDX workflow prompts | | `.smithers/preload.ts` | Registers the MDX preload plugin | @@ -347,7 +347,7 @@ That scaffolds `.smithers/` with files such as: To overwrite an existing scaffold: ```bash -bunx smithers-orchestrator init --force +bunx smthrs init --force ``` ## Install the Agent Skill @@ -372,8 +372,8 @@ outcome — *"orchestrate an agent to add rate limiting and keep iterating until tests pass"* — and the agent reaches for Smithers itself. For agents without a skills directory, point them at -`bunx smithers-orchestrator docs-full` (prints the same bundle) or -`bunx smithers-orchestrator ask "<question>"`. +`bunx smthrs docs-full` (prints the same bundle) or +`bunx smthrs ask "<question>"`. To install the skill **and** register the MCP server into every coding agent on your machine at once, see Agent Support — it covers Claude @@ -394,13 +394,13 @@ See JSX Installation for the package list, TypeScript configuration, and optiona ### Version control -Smithers bundles jj. The optional `@smithers-orchestrator/jj-<platform>` package installs a vendored jj binary for your platform, so a fresh install works with no system jj. Resolution order is: +Smithers bundles jj. The optional `@smthrs/jj-<platform>` package installs a vendored jj binary for your platform, so a fresh install works with no system jj. Resolution order is: 1. `SMITHERS_JJ_PATH` — point this at a jj binary to override everything. 2. The bundled binary for your platform. 3. `jj` on your `PATH`. -If no bundled binary installed (an unsupported platform, or `--no-optional`) and neither `jj` nor `git` is on `PATH`, runs that need a worktree fail with a message telling you to install one. Check what Smithers found with `bunx smithers-orchestrator workflow doctor` (the `vcs` section reports the resolved jj and git). +If no bundled binary installed (an unsupported platform, or `--no-optional`) and neither `jj` nor `git` is on `PATH`, runs that need a worktree fail with a message telling you to install one. Check what Smithers found with `bunx smthrs workflow doctor` (the `vcs` section reports the resolved jj and git). ## After Installation @@ -419,25 +419,25 @@ If no bundled binary installed (an unsupported platform, or `--no-optional`) and > Scaffold and run a Smithers workflow in two commands. ```bash -bunx smithers-orchestrator init -bunx smithers-orchestrator init --template idea-to-tickets -bunx smithers-orchestrator workflow run implement --prompt "Add rate limiting" +bunx smthrs init +bunx smthrs init --template idea-to-tickets +bunx smthrs workflow run implement --prompt "Add rate limiting" ``` -`init` scaffolds `.smithers/` (workflows, prompts, components, agent config). Add `--template <id>` when you want the init result to include the selected starter command and follow-up notes. Run `bunx smithers-orchestrator starters` to browse template IDs. +`init` scaffolds `.smithers/` (workflows, prompts, components, agent config). Add `--template <id>` when you want the init result to include the selected starter command and follow-up notes. Run `bunx smthrs starters` to browse template IDs. Inspect the run: ```bash -bunx smithers-orchestrator ps -bunx smithers-orchestrator inspect <run-id> -bunx smithers-orchestrator logs <run-id> --tail 20 +bunx smthrs ps +bunx smthrs inspect <run-id> +bunx smthrs logs <run-id> --tail 20 ``` Resume after a crash: ```bash -bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true +bunx smthrs up workflow.tsx --run-id <run-id> --resume true ``` Prefer to let your agent drive? Install the agent skill and just ask for the outcome — your coding agent runs Smithers for you. @@ -453,19 +453,19 @@ For a full worked example, see the Tour. For every CLI command see the CLI catal Smithers ships with starter workflows for when you want a result before your agent writes any workflow code. Browse the starter gallery from any repo: ```bash -bunx smithers-orchestrator starters +bunx smthrs starters ``` First-time setup: ```bash -bunx smithers-orchestrator init --add-agents +bunx smthrs init --add-agents ``` Or initialize with guided next steps for one template: ```bash -bunx smithers-orchestrator init --template idea-to-tickets +bunx smthrs init --template idea-to-tickets ``` Template IDs: @@ -474,37 +474,37 @@ Pass any ID from this table to `init --template <id>` to scaffold that starter. | Starter | Best for | Workflow | Command | | --- | --- | --- | --- | -| `idea-to-prd` | founders, product | `write-a-prd` | `bunx smithers-orchestrator init --template idea-to-prd` | -| `idea-to-tickets` | founders, product, operations, engineering | `tickets-create` | `bunx smithers-orchestrator init --template idea-to-tickets` | -| `launch-checklist` | launch owners and operators | `plan` | `bunx smithers-orchestrator init --template launch-checklist` | -| `customer-incident` | support escalations | `debug` | `bunx smithers-orchestrator init --template customer-incident` | -| `nontechnical-research` | before-build decisions | `research` | `bunx smithers-orchestrator init --template nontechnical-research` | -| `requirements-interview` | vague stakeholder requests | `grill-me` | `bunx smithers-orchestrator init --template requirements-interview` | -| `quality-audit` | release readiness | `audit` | `bunx smithers-orchestrator init --template quality-audit` | -| `test-coverage` | regression prevention | `improve-test-coverage` | `bunx smithers-orchestrator init --template test-coverage` | -| `ship-a-change` | focused product improvements | `research-plan-implement` | `bunx smithers-orchestrator init --template ship-a-change` | -| `mission-mode` | larger approved milestones | `mission` | `bunx smithers-orchestrator init --template mission-mode` | +| `idea-to-prd` | founders, product | `write-a-prd` | `bunx smthrs init --template idea-to-prd` | +| `idea-to-tickets` | founders, product, operations, engineering | `tickets-create` | `bunx smthrs init --template idea-to-tickets` | +| `launch-checklist` | launch owners and operators | `plan` | `bunx smthrs init --template launch-checklist` | +| `customer-incident` | support escalations | `debug` | `bunx smthrs init --template customer-incident` | +| `nontechnical-research` | before-build decisions | `research` | `bunx smthrs init --template nontechnical-research` | +| `requirements-interview` | vague stakeholder requests | `grill-me` | `bunx smthrs init --template requirements-interview` | +| `quality-audit` | release readiness | `audit` | `bunx smthrs init --template quality-audit` | +| `test-coverage` | regression prevention | `improve-test-coverage` | `bunx smthrs init --template test-coverage` | +| `ship-a-change` | focused product improvements | `research-plan-implement` | `bunx smthrs init --template ship-a-change` | +| `mission-mode` | larger approved milestones | `mission` | `bunx smthrs init --template mission-mode` | Each detailed starter prints: - What outcome to expect - What context to gather before running -- The exact `bunx smithers-orchestrator workflow run ...` command +- The exact `bunx smthrs workflow run ...` command - Useful follow-up commands - When not to use that starter Filter by audience or goal: ```bash -bunx smithers-orchestrator starters --audience product -bunx smithers-orchestrator starters --goal quality -bunx smithers-orchestrator starters --workflow debug +bunx smthrs starters --audience product +bunx smthrs starters --goal quality +bunx smthrs starters --workflow debug ``` Use JSON when another tool needs the catalog: ```bash -bunx smithers-orchestrator starters --format json +bunx smthrs starters --format json ``` --- @@ -518,8 +518,8 @@ A code-review workflow built one capability at a time. Each step is a diff again ## 1. Install and scaffold ```bash -bunx smithers-orchestrator init -bun add smithers-orchestrator ai @ai-sdk/anthropic zod +bunx smthrs init +bun add smthrs ai @ai-sdk/anthropic zod bun add -d typescript @types/bun export ANTHROPIC_API_KEY="sk-ant-..." ``` @@ -535,7 +535,7 @@ A minimal `tsconfig.json`: "module": "ESNext", "moduleResolution": "bundler", "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", + "jsxImportSource": "smthrs", "strict": true, "noEmit": true, "skipLibCheck": true @@ -548,7 +548,7 @@ A minimal `tsconfig.json`: ## 2. One-task workflow ```tsx -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -571,14 +571,14 @@ export default smithers((ctx) => ( This Task has no `agent`, just a literal value. Run it. ```bash -bunx smithers-orchestrator up workflow.tsx --input '{"name":"world"}' +bunx smthrs up workflow.tsx --input '{"name":"world"}' ``` Inspect: ```bash -bunx smithers-orchestrator ps # find the run id -bunx smithers-orchestrator inspect <run-id> # structured state +bunx smthrs ps # find the run id +bunx smthrs inspect <run-id> # structured state sqlite3 smithers.db "SELECT * FROM greeting;" # the persisted output ``` @@ -587,7 +587,7 @@ sqlite3 smithers.db "SELECT * FROM greeting;" # the persisted output Replace the literal Task with an agent Task whose output is structured. ```tsx -import { createSmithers, Sequence, Task, AnthropicAgent } from "smithers-orchestrator"; +import { createSmithers, Sequence, Task, AnthropicAgent } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -625,7 +625,7 @@ The runtime injects a JSON-schema description of `outputs.analysis` into the pro Tasks see each other's outputs through `ctx.outputMaybe(...)`. An incomplete upstream returns `undefined`; on the next render frame the upstream output appears and the downstream Task mounts. ```tsx -import { createSmithers, Sequence, Task, AnthropicAgent } from "smithers-orchestrator"; +import { createSmithers, Sequence, Task, AnthropicAgent } from "smthrs"; import { z } from "zod"; const AnalysisSchema = z.object({ @@ -700,7 +700,7 @@ Same shape works for branching, parallel groups, and loops: Pause for a human. The runtime persists the pending decision and exits cleanly; an operator approves or denies through the CLI; resume picks up from the gate. ```tsx -import { Approval } from "smithers-orchestrator"; +import { Approval } from "smthrs"; {analysis ? ( <Approval @@ -726,10 +726,10 @@ import { Approval } from "smithers-orchestrator"; Operator side: ```bash -bunx smithers-orchestrator ps --status waiting-approval # find paused runs -bunx smithers-orchestrator inspect <run-id> # see the request -bunx smithers-orchestrator approve <run-id> --node confirm-fix --by alice -bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true +bunx smthrs ps --status waiting-approval # find paused runs +bunx smthrs inspect <run-id> # see the request +bunx smthrs approve <run-id> --node confirm-fix --by alice +bunx smthrs up workflow.tsx --run-id <run-id> --resume true ``` `onDeny` controls behavior on rejection: `"fail"` aborts the run, `"continue"` proceeds without the approved branch, `"skip"` skips the gated tasks. @@ -739,10 +739,10 @@ bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true Every completed task's output sits in SQLite. A crash, kill, or restart loses no work — the next run with `--resume true` skips finished tasks. ```bash -bunx smithers-orchestrator up workflow.tsx --input '{"repo":"."}' --run-id review-1 +bunx smthrs up workflow.tsx --input '{"repo":"."}' --run-id review-1 # ...analyze finishes, fix is mid-flight, you Ctrl+C -bunx smithers-orchestrator up workflow.tsx --run-id review-1 --resume true +bunx smthrs up workflow.tsx --run-id review-1 --resume true # analyze is skipped (already in DB), fix re-runs from scratch (was incomplete) ``` @@ -751,14 +751,14 @@ In-flight attempts are marked stale and re-tried; finished tasks are not. Resume For unattended recovery, run the supervisor: ```bash -bunx smithers-orchestrator supervise --interval 30s --stale-threshold 1m +bunx smthrs supervise --interval 30s --stale-threshold 1m ``` It auto-resumes runs whose owner process died. ## What you skipped (and where to find it) -- **Time travel** (replay a frame, fork a run, diff two runs): `bunx smithers-orchestrator replay|fork|diff|timeline` — see How It Works → Time travel. +- **Time travel** (replay a frame, fork a run, diff two runs): `bunx smthrs replay|fork|diff|timeline` — see How It Works → Time travel. - **Scorers** (attach evaluators to Tasks): see Recipes → Scoring tasks. - **Memory** (cross-run facts and message history): see llms-memory.txt. - **RAG**, **voice**, **OpenAPI tools**: opt-in fragments — see the index in llms.txt. @@ -999,7 +999,7 @@ Replay with `--restore-vcs` checks out the jj revision the snapshot was taken at Attach evaluators to a Task. They run **after** completion and never block. ```tsx -import { schemaAdherenceScorer, latencyScorer } from "smithers-orchestrator/scorers"; +import { schemaAdherenceScorer, latencyScorer } from "smthrs/scorers"; <Task id="analyze" @@ -1035,7 +1035,7 @@ Five built-in tools — `read`, `write`, `edit`, `grep`, `bash` — sandboxed to Least-privilege per task: ```tsx -import { AnthropicAgent } from "smithers-orchestrator"; +import { AnthropicAgent } from "smthrs"; const analyst = new AnthropicAgent({ model, instructions: "..." }); // no tools const reviewer = new AnthropicAgent({ model, instructions: "...", tools: { read, grep } }); const implementer = new AnthropicAgent({ model, instructions: "...", tools: { read, write, edit, bash } }); @@ -1236,26 +1236,26 @@ If you cannot see the run, you cannot operate it well. For local and development work, use the CLI surfaces yourself: ```bash -bunx smithers-orchestrator ps -bunx smithers-orchestrator inspect <run-id> --watch -bunx smithers-orchestrator events <run-id> --watch -bunx smithers-orchestrator node <run-id> <node-id> -bunx smithers-orchestrator scores <run-id> -bunx smithers-orchestrator why <run-id> +bunx smthrs ps +bunx smthrs inspect <run-id> --watch +bunx smthrs events <run-id> --watch +bunx smthrs node <run-id> <node-id> +bunx smthrs scores <run-id> +bunx smthrs why <run-id> ``` Use serve mode when you need HTTP status, SSE events, remote approvals, or Prometheus metrics: ```bash -bunx smithers-orchestrator up workflow.tsx --serve --metrics --port 7331 +bunx smthrs up workflow.tsx --serve --metrics --port 7331 ``` Use the observability stack when the work needs traces, metrics, dashboards, or a reviewer evidence bundle: ```bash -bunx smithers-orchestrator observability +bunx smthrs observability ``` Enable OpenTelemetry export when you need trace-level proof, then include the @@ -1280,8 +1280,8 @@ plan, gates, and evidence live." Do not phrase it as homework for the human. Use hot mode while authoring or tuning a workflow: ```bash -bunx smithers-orchestrator graph workflow.tsx -bunx smithers-orchestrator up workflow.tsx --hot true --input '{"prompt":"..."}' +bunx smthrs graph workflow.tsx +bunx smthrs up workflow.tsx --hot true --input '{"prompt":"..."}' ``` The graph command validates the rendered shape without executing the whole job. @@ -1402,12 +1402,12 @@ Workflows are JSX trees. Smithers renders the tree, extracts ready tasks, execut ## Setup -Most projects should use `bunx smithers-orchestrator init` — it scaffolds everything below. +Most projects should use `bunx smthrs init` — it scaffolds everything below. To embed into an existing codebase: ```bash -bun add smithers-orchestrator react react-dom zod +bun add smthrs react react-dom zod bun add -d typescript @types/react @types/react-dom @types/node ``` @@ -1420,7 +1420,7 @@ Minimal `tsconfig.json`: "module": "ESNext", "moduleResolution": "bundler", "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", + "jsxImportSource": "smthrs", "strict": true, "noEmit": true, "skipLibCheck": true @@ -1428,17 +1428,17 @@ Minimal `tsconfig.json`: } ``` -`jsxImportSource` is the only non-standard line — it routes JSX through `smithers-orchestrator/jsx-runtime` instead of React DOM. +`jsxImportSource` is the only non-standard line — it routes JSX through `smthrs/jsx-runtime` instead of React DOM. Optional MDX prompts: add `bun add -d @types/mdx` and a `preload.ts` that calls `mdxPlugin()`, register it in `bunfig.toml` as `preload = ["./preload.ts"]`. -Verify with `bunx tsc --noEmit` and `bunx smithers-orchestrator --help`. +Verify with `bunx tsc --noEmit` and `bunx smthrs --help`. ## A minimal workflow ```tsx -// @jsxImportSource smithers-orchestrator — only needed if not set in tsconfig.json -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +// @jsxImportSource smthrs — only needed if not set in tsconfig.json +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -1481,7 +1481,7 @@ The `report` Task doesn't exist in the plan until `analysis` completes. No place > Every Smithers CLI command in one structured catalog (TOON format). -Always invoke as `bunx smithers-orchestrator <command>` (see Installation for why). Use `--help` on any command for the canonical option list. +Always invoke as `bunx smthrs <command>` (see Installation for why). Use `--help` on any command for the canonical option list. ## Conventions @@ -2062,27 +2062,27 @@ commands[66]: **Set up** ```bash -bunx smithers-orchestrator init # scaffold .smithers/ -bunx smithers-orchestrator init --template idea-to-tickets # scaffold with guided template next steps -bunx smithers-orchestrator starters # browse template IDs +bunx smthrs init # scaffold .smithers/ +bunx smthrs init --template idea-to-tickets # scaffold with guided template next steps +bunx smthrs starters # browse template IDs ``` **Run** ```bash -bunx smithers-orchestrator workflow run implement --prompt "…" # launch a seeded workflow -bunx smithers-orchestrator up workflow.tsx --run-id <id> --resume true # resume a paused run +bunx smthrs workflow run implement --prompt "…" # launch a seeded workflow +bunx smthrs up workflow.tsx --run-id <id> --resume true # resume a paused run ``` **Observe & control** ```bash -bunx smithers-orchestrator ps # list runs -bunx smithers-orchestrator inspect <run-id> # structured run state -bunx smithers-orchestrator logs <run-id> --tail 20 --follow # stream events -bunx smithers-orchestrator why <run-id> # why is it paused? -bunx smithers-orchestrator approve <run-id> --node <id> --by <name> # approve a paused node -bunx smithers-orchestrator cancel <run-id> # cancel a run +bunx smthrs ps # list runs +bunx smthrs inspect <run-id> # structured run state +bunx smthrs logs <run-id> --tail 20 --follow # stream events +bunx smthrs why <run-id> # why is it paused? +bunx smthrs approve <run-id> --node <id> --by <name> # approve a paused node +bunx smthrs cancel <run-id> # cancel a run ``` See Tour for a full worked example. See CLI overview for the complete flag reference. @@ -2094,7 +2094,7 @@ See Tour for a full worked example. See CLI overview for the complete flag refer > Root container; sequences direct children, optionally caches for resume. ```ts -import { Workflow } from "smithers-orchestrator"; +import { Workflow } from "smthrs"; type WorkflowProps = { name: string; @@ -2104,7 +2104,7 @@ type WorkflowProps = { ``` ```tsx -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; import { z } from "zod"; @@ -2139,7 +2139,7 @@ export default smithers((ctx) => ( > Executable node; runs an agent, compute callback, or emits a static value. ```ts -import { Task } from "smithers-orchestrator"; +import { Task } from "smthrs"; type TaskProps = { id: string; @@ -2273,7 +2273,7 @@ const VERIFY = "verify" as const; > Run children in source order. ```ts -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; type SequenceProps = { key?: string; @@ -2317,7 +2317,7 @@ type SequenceProps = { > Run children concurrently with an optional concurrency cap. ```ts -import { Parallel } from "smithers-orchestrator"; +import { Parallel } from "smthrs"; type ParallelProps = { id?: string; @@ -2355,7 +2355,7 @@ type ParallelProps = { > Conditional fork; mounts `then` when `if` is true, otherwise `else`. ```ts -import { Branch } from "smithers-orchestrator"; +import { Branch } from "smthrs"; type BranchProps = { if: boolean; @@ -2400,7 +2400,7 @@ type BranchProps = { > Re-run children until `until` is true or `maxIterations` is hit. ```ts -import { Loop } from "smithers-orchestrator"; +import { Loop } from "smthrs"; type LoopProps = { id?: string; // auto-generated from tree position @@ -2450,7 +2450,7 @@ export default smithers((ctx) => { > Durable human approval; persists ApprovalDecision, selection, or ranking. ```ts -import { Approval, approvalDecisionSchema } from "smithers-orchestrator"; +import { Approval, approvalDecisionSchema } from "smthrs"; type ApprovalProps = { id: string; @@ -2485,7 +2485,7 @@ type ApprovalProps = { ``` ```tsx -import { Approval, Sequence, Task, Workflow, approvalDecisionSchema, createSmithers } from "smithers-orchestrator"; +import { Approval, Sequence, Task, Workflow, approvalDecisionSchema, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -2528,7 +2528,7 @@ export default smithers((ctx) => { > Conditional approval; pauses for human when `when` is true, else auto-approves. ```ts -import { ApprovalGate } from "smithers-orchestrator"; +import { ApprovalGate } from "smthrs"; type ApprovalGateProps = { id: string; @@ -2584,7 +2584,7 @@ const risk = ctx.output(outputs.riskScore, { nodeId: "risk" }); ```ts // Props -import { EscalationChain } from "smithers-orchestrator"; +import { EscalationChain } from "smthrs"; type EscalationChainProps = { id?: string; // default "escalation" @@ -2634,7 +2634,7 @@ type EscalationLevel = { ```ts // Props -import { DecisionTable } from "smithers-orchestrator"; +import { DecisionTable } from "smthrs"; type DecisionTableProps = { id?: string; @@ -2683,7 +2683,7 @@ type DecisionRule = { > Suspend until a human submits JSON matching the output schema. ```ts -import { HumanTask } from "smithers-orchestrator"; +import { HumanTask } from "smthrs"; type HumanTaskProps = { id: string; @@ -2704,7 +2704,7 @@ type HumanTaskProps = { ``` ```tsx -import { Workflow, Sequence, Task, HumanTask, createSmithers } from "smithers-orchestrator"; +import { Workflow, Sequence, Task, HumanTask, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -2752,7 +2752,7 @@ export default smithers((ctx) => { > Typed wrapper around <WaitForEvent>; signal name equals node id. ```ts -import { Signal } from "smithers-orchestrator"; +import { Signal } from "smthrs"; type SignalProps = { id: string; // signal name and node id @@ -2773,7 +2773,7 @@ type SignalProps = { ``` ```tsx -import { Signal, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { Signal, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -2806,7 +2806,7 @@ export default smithers(() => ( > Durably suspend until a correlated external event arrives, or time out. ```ts -import { WaitForEvent } from "smithers-orchestrator"; +import { WaitForEvent } from "smthrs"; type WaitForEventProps = { id: string; @@ -2858,7 +2858,7 @@ type WaitForEventProps = { > Durably suspend for a relative duration or until an absolute time. ```ts -import { Timer } from "smithers-orchestrator"; +import { Timer } from "smthrs"; type TimerProps = { id: string; @@ -2898,7 +2898,7 @@ type TimerProps = { > Forward steps with compensations run in reverse on failure. ```ts -import { Saga } from "smithers-orchestrator"; +import { Saga } from "smthrs"; type SagaStepDef = { id: string; @@ -2949,7 +2949,7 @@ type SagaProps = { > Workflow-scoped error boundary with catch handlers and guaranteed cleanup. ```ts -import { TryCatchFinally } from "smithers-orchestrator"; +import { TryCatchFinally } from "smthrs"; type TryCatchFinallyProps = { id?: string; @@ -2997,8 +2997,8 @@ type TryCatchFinallyProps = { `<Sandbox>` is a task boundary for work that should execute outside the parent task process. The public component is provider-first: pass an injectable provider object or a registered provider id. `runtime` remains only for the built-in legacy local transports. ```ts -import { Sandbox } from "smithers-orchestrator"; -import type { SandboxProvider } from "smithers-orchestrator/sandbox"; +import { Sandbox } from "smthrs"; +import type { SandboxProvider } from "smthrs/sandbox"; type SandboxProps = { id: string; @@ -3084,7 +3084,7 @@ type SandboxProvider = { Register reusable providers when a workflow should reference them by id: ```ts -import { registerSandboxProvider } from "smithers-orchestrator/sandbox"; +import { registerSandboxProvider } from "smthrs/sandbox"; const unregister = registerSandboxProvider(provider); @@ -3172,7 +3172,7 @@ Freestyle's current VM docs show the stable package as `freestyle`, VM creation > Invoke a child workflow with its own retry, cache, resume boundary. ```ts -import { Subflow } from "smithers-orchestrator"; +import { Subflow } from "smthrs"; type SubflowProps = { id: string; @@ -3228,7 +3228,7 @@ type SubflowProps = { > Close the current run; start a fresh one with optional carried state. ```ts -import { ContinueAsNew, continueAsNew } from "smithers-orchestrator"; +import { ContinueAsNew, continueAsNew } from "smthrs"; type ContinueAsNewProps = { state?: unknown; // JSON-serializable; arrives as ctx.input.__smithersContinuation.payload @@ -3277,7 +3277,7 @@ export default smithers((ctx) => { > Reads and modifies source code at runtime via a markdown strategy doc. ```ts -import { SuperSmithers } from "smithers-orchestrator"; +import { SuperSmithers } from "smthrs"; type SuperSmithersProps = { strategy: string | ReactElement; // markdown or MDX strategy document @@ -3320,7 +3320,7 @@ type SuperSmithersProps = { > Propagate token, latency, and cost budgets to descendant tasks. ```ts -import { Aspects } from "smithers-orchestrator"; +import { Aspects } from "smthrs"; type TokenBudgetConfig = { max: number; @@ -3380,7 +3380,7 @@ type AspectsProps = { > Run a subtree in an isolated worktree (git or jj) rooted at `path`. ```ts -import { Worktree } from "smithers-orchestrator"; +import { Worktree } from "smthrs"; type WorktreeProps = { key?: string; @@ -3420,7 +3420,7 @@ type WorktreeProps = { ```ts // Props -import { ReviewLoop } from "smithers-orchestrator"; +import { ReviewLoop } from "smthrs"; type ReviewLoopProps = { id?: string; // default "review-loop"; task ids derived as {id}-produce, {id}-review @@ -3464,7 +3464,7 @@ export default smithers(() => ( ```ts // Props -import { Optimizer } from "smithers-orchestrator"; +import { Optimizer } from "smthrs"; type OptimizerProps = { id?: string; // default "optimizer"; task ids {id}-generate, {id}-evaluate @@ -3510,7 +3510,7 @@ export default smithers(() => ( ```ts // Props -import { ContentPipeline } from "smithers-orchestrator"; +import { ContentPipeline } from "smthrs"; type ContentPipelineProps = { id?: string; @@ -3556,7 +3556,7 @@ export default smithers(() => ( ```ts // Props -import { DriftDetector } from "smithers-orchestrator"; +import { DriftDetector } from "smthrs"; type DriftDetectorProps = { id?: string; // default "drift"; ids {id}-capture, {id}-compare @@ -3602,7 +3602,7 @@ type DriftDetectorProps = { ```ts // Props -import { ScanFixVerify } from "smithers-orchestrator"; +import { ScanFixVerify } from "smthrs"; type ScanFixVerifyProps = { id?: string; // default "sfv" @@ -3651,7 +3651,7 @@ type ScanFixVerifyProps = { ```ts // Props -import { Poller } from "smithers-orchestrator"; +import { Poller } from "smthrs"; type PollerProps = { id?: string; // default "poll" @@ -3694,7 +3694,7 @@ type PollerProps = { ```ts // Props -import { Runbook } from "smithers-orchestrator"; +import { Runbook } from "smthrs"; type RunbookProps = { id?: string; // used as step-id prefix; defaults to "runbook" when omitted @@ -3747,7 +3747,7 @@ export default smithers(() => ( ```ts // Props -import { Supervisor } from "smithers-orchestrator"; +import { Supervisor } from "smthrs"; type SupervisorProps = { id?: string; // default: "supervisor" @@ -3798,7 +3798,7 @@ export default smithers(() => ( ```ts // Props -import { MergeQueue } from "smithers-orchestrator"; +import { MergeQueue } from "smthrs"; type MergeQueueProps = { id?: string; @@ -3829,7 +3829,7 @@ type MergeQueueProps = { ```ts // Props -import { CheckSuite } from "smithers-orchestrator"; +import { CheckSuite } from "smthrs"; type CheckConfig = { id: string; agent?: AgentLike; command?: string; label?: string }; @@ -3872,7 +3872,7 @@ type CheckSuiteProps = { ```ts // Props -import { ClassifyAndRoute } from "smithers-orchestrator"; +import { ClassifyAndRoute } from "smthrs"; type CategoryConfig = { agent: AgentLike; @@ -3925,7 +3925,7 @@ const classification = ctx.outputMaybe(outputs.classification, { ```ts // Props -import { GatherAndSynthesize } from "smithers-orchestrator"; +import { GatherAndSynthesize } from "smthrs"; type SourceDef = { agent: AgentLike; @@ -3978,7 +3978,7 @@ type GatherAndSynthesizeProps = { ```ts // Props -import { Panel } from "smithers-orchestrator"; +import { Panel } from "smthrs"; type PanelistConfig = { agent: AgentLike; role?: string; label?: string }; @@ -4027,7 +4027,7 @@ type PanelProps = { ```ts // Props -import { Debate } from "smithers-orchestrator"; +import { Debate } from "smthrs"; type DebateProps = { id?: string; // default: "debate" @@ -4070,7 +4070,7 @@ type DebateProps = { ```ts // Props -import { Kanban } from "smithers-orchestrator"; +import { Kanban } from "smthrs"; type ColumnDef = { name: string; @@ -4125,7 +4125,7 @@ const columns = [ Each recipe is a working snippet plus one line of context. They compose freely. -If you want a ready-to-run outcome before writing workflow code, start with Starters or run `bunx smithers-orchestrator starters`. +If you want a ready-to-run outcome before writing workflow code, start with Starters or run `bunx smthrs starters`. ## Implement → review loop @@ -4266,7 +4266,7 @@ One context boundary per logical operation, not per step. Splitting too finely l ## Per-agent least-privilege tools ```tsx -import { AnthropicAgent } from "smithers-orchestrator"; +import { AnthropicAgent } from "smthrs"; const analyst = new AnthropicAgent({ model, system: "Return JSON" }); // no tools const reviewer = new AnthropicAgent({ model, system: "...", tools: { read, grep } }); // read-only @@ -4280,7 +4280,7 @@ Match the tool surface to the role. External mutations must mark themselves and use the runtime idempotency key. ```tsx -import { defineTool } from "smithers-orchestrator/tools"; +import { defineTool } from "smthrs/tools"; const createTicket = defineTool({ name: "jira.create", @@ -4365,7 +4365,7 @@ Workflow logic factors out into hooks the same way React UI logic does. Smithers records a jj change ID (or git SHA) per attempt. Revert any attempt to its exact workspace state: ```bash -bunx smithers-orchestrator revert workflow.tsx --run-id <id> --node-id implement --attempt 1 +bunx smthrs revert workflow.tsx --run-id <id> --node-id implement --attempt 1 ``` Useful when an experiment leaves the worktree in a bad state. @@ -4373,10 +4373,10 @@ Useful when an experiment leaves the worktree in a bad state. ## Time travel: fork, replay, diff ```bash -bunx smithers-orchestrator timeline <run-id> --tree -bunx smithers-orchestrator diff <run-id> <node-id> -bunx smithers-orchestrator fork workflow.tsx --run-id <id> --frame 5 --reset-node analyze --label exp1 -bunx smithers-orchestrator replay workflow.tsx --run-id <id> --frame 5 --restore-vcs +bunx smthrs timeline <run-id> --tree +bunx smthrs diff <run-id> <node-id> +bunx smthrs fork workflow.tsx --run-id <id> --frame 5 --reset-node analyze --label exp1 +bunx smthrs replay workflow.tsx --run-id <id> --frame 5 --restore-vcs ``` Fork makes a child run without starting it (add `--run` to start immediately); replay also makes a child run but immediately resumes it. `--restore-vcs` checks out the original revision so re-execution sees the same source. @@ -4384,7 +4384,7 @@ Fork makes a child run without starting it (add `--run` to start immediately); r ## Scoring tasks ```tsx -import { schemaAdherenceScorer, latencyScorer, llmJudge } from "smithers-orchestrator/scorers"; +import { schemaAdherenceScorer, latencyScorer, llmJudge } from "smthrs/scorers"; <Task id="analyze" @@ -4413,7 +4413,7 @@ Scorers run after the task and never block. Sample expensive scorers with `ratio ``` ```bash -bunx smithers-orchestrator eval workflow.tsx --cases evals/smoke.jsonl --suite smoke --force +bunx smthrs eval workflow.tsx --cases evals/smoke.jsonl --suite smoke --force ``` Use eval suites when you need repeatable workflow-level checks. Assertions support `status`, `output` (exact match), and `outputContains` (partial match). Reports land in `.smithers/evals/<suite>.json`; the command exits non-zero on failures. @@ -4431,7 +4431,7 @@ Avoids unbounded SQLite growth in long-lived loops. ## Hot reload while authoring ```bash -bunx smithers-orchestrator up workflow.tsx --hot +bunx smthrs up workflow.tsx --hot ``` Edits to the workflow source apply on the next render frame without losing in-flight task state. Schema changes still require a fresh run. @@ -4467,9 +4467,9 @@ Every agent task produces a reusable session snapshot. `fork` starts a new task ## Types -> Public TypeScript surface for smithers-orchestrator. +> Public TypeScript surface for smthrs. -One source of truth: `tsc --emitDeclarationOnly` would produce something close to this. Import these types from `smithers-orchestrator` unless noted otherwise. +One source of truth: `tsc --emitDeclarationOnly` would produce something close to this. Import these types from `smthrs` unless noted otherwise. Major sections at a glance: - **Workflow / Context** — `SmithersWorkflow`, `SmithersCtx`, `RunOptions`, `RunResult` — the entry points for defining and running workflows. @@ -4477,7 +4477,7 @@ Major sections at a glance: - **Component props** — `WorkflowProps`, `ApprovalProps`, `SignalProps`, `LoopProps`, etc. — all JSX component interfaces. - **Errors** — `SmithersError`, `KnownSmithersErrorCode` — typed error codes; see Errors for descriptions. - **Server / Gateway** — `ServerOptions`, `GatewayOptions`, `GatewayAuthConfig` — self-hosting configuration. -- **Scorers / Memory / OpenAPI / Observability** — sub-path imports (`smithers-orchestrator/scorers`, `/memory`, `/openapi`, `/observability`). +- **Scorers / Memory / OpenAPI / Observability** — sub-path imports (`smthrs/scorers`, `/memory`, `/openapi`, `/observability`). ```ts // ============================================================================= @@ -5088,7 +5088,7 @@ type GatewayOptions = { }; // ============================================================================= -// Scorers (smithers-orchestrator/scorers) +// Scorers (smthrs/scorers) // ============================================================================= type ScoreResult = { score: number; reason?: string; meta?: Record<string, unknown> }; @@ -5113,7 +5113,7 @@ type CreateScorerConfig = { }; // ============================================================================= -// Memory (smithers-orchestrator/memory) +// Memory (smthrs/memory) // ============================================================================= type MemoryFact = { namespace: string; key: string; valueJson: string; schemaSig?: string | null; createdAtMs: number; updatedAtMs: number; ttlMs?: number | null }; @@ -5146,7 +5146,7 @@ type MemoryStore = { }; // ============================================================================= -// OpenAPI tools (smithers-orchestrator/openapi) +// OpenAPI tools (smthrs/openapi) // ============================================================================= type OpenApiAuth = @@ -5191,7 +5191,7 @@ type CreateSmithersApi<Schema = any> = { }; // ============================================================================= -// Observability (smithers-orchestrator/observability) +// Observability (smthrs/observability) // ============================================================================= type SmithersLogFormat = "json" | "pretty"; @@ -5200,7 +5200,7 @@ type SmithersObservabilityOptions = { service?: SmithersObservabilityService; lo type ResolvedSmithersObservabilityOptions = SmithersObservabilityOptions & { metricsPort?: number; metricsPath?: string }; ``` -For canonical, machine-checked types, install `smithers-orchestrator` and use editor go-to-definition. For runtime errors, see Errors. +For canonical, machine-checked types, install `smthrs` and use editor go-to-definition. For runtime errors, see Errors. --- @@ -5220,12 +5220,12 @@ import { isKnownSmithersErrorCode, isSmithersError, knownSmithersErrorCodes, -} from "smithers-orchestrator"; +} from "smthrs"; import type { KnownSmithersErrorCode, SmithersError, SmithersErrorCode, -} from "smithers-orchestrator"; +} from "smthrs"; ``` Every built-in `SmithersErrorInstance` carries three pieces of documentation metadata: @@ -5254,7 +5254,7 @@ Use `KnownSmithersErrorCode` for an exhaustive switch over built-in Smithers cod ```ts import { Effect } from "effect"; -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; try { await Effect.runPromise(runWorkflow(workflow, { input: {} })); @@ -5446,7 +5446,7 @@ JSON response codes, not `SmithersErrorInstance` objects. ## Package Configuration -> Reference for the smithers-orchestrator package exports, TypeScript configuration, and Bun preload setup. +> Reference for the smthrs package exports, TypeScript configuration, and Bun preload setup. This page covers: CLI binary usage, subpath export map, TypeScript compiler options, Bun preload and test config, and npm scripts. @@ -5460,88 +5460,88 @@ Use the subpath form to import only the surface you need. | Import path | Entry file | Purpose | |---|---|---| -| `smithers-orchestrator` | `./src/index.js` | Core API: `createSmithers`, components, `runWorkflow`, `renderMdx`, errors | -| `smithers-orchestrator/gateway` | `./src/gateway.js` | Gateway server primitives from `@smithers-orchestrator/server/gateway` | -| `smithers-orchestrator/gateway-client` | `./src/gateway-client.js` | Typed client helpers from `@smithers-orchestrator/gateway-client` | -| `smithers-orchestrator/gateway-react` | `./src/gateway-react.js` | React hooks and providers for gateway-backed UIs | -| `smithers-orchestrator/sandbox` | `./src/sandbox.js` | Sandbox provider contracts, bundles, and execution helpers | -| `smithers-orchestrator/jsx-runtime` | `./src/jsx-runtime.js` | JSX runtime (auto-resolved by `jsxImportSource`) | -| `smithers-orchestrator/jsx-dev-runtime` | `./src/jsx-runtime.js` | JSX dev runtime (auto-resolved in dev mode) | -| `smithers-orchestrator/tools` | `./src/tools.js` | Tool sandbox: `defineTool`, `read`, `grep`, `bash`, `edit`, `write` | -| `smithers-orchestrator/server` | `./src/server.js` | HTTP server for run management and event streaming | -| `smithers-orchestrator/observability` | `./src/observability.js` | OpenTelemetry traces, metrics, and Prometheus integration | -| `smithers-orchestrator/mdx-plugin` | `./src/mdx-plugin.js` | Bun preload plugin for `.mdx` imports | -| `smithers-orchestrator/dom/renderer` | `./src/dom/renderer.js` | Internal renderer (advanced use) | -| `smithers-orchestrator/serve` | `./src/serve.js` | Single-workflow HTTP server via `createServeApp` | -| `smithers-orchestrator/scorers` | `./src/scorers.js` | Eval scorers: `createScorer`, `llmJudge`, `aggregateScores` | -| `smithers-orchestrator/memory` | `./src/memory.js` | Cross-run facts, message history, processors, and metrics | -| `smithers-orchestrator/openapi` | `./src/openapi.js` | Generate AI SDK tools from OpenAPI specs | -| `smithers-orchestrator/control-plane` | `./src/control-plane.js` | Organization, project, billing, usage, secret-reference, and audit primitives | - -The PI plugin is published as the separate `@smithers-orchestrator/pi-plugin` package. The old `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extension` subpaths are no longer exported. +| `smthrs` | `./src/index.js` | Core API: `createSmithers`, components, `runWorkflow`, `renderMdx`, errors | +| `smthrs/gateway` | `./src/gateway.js` | Gateway server primitives from `@smthrs/server/gateway` | +| `smthrs/gateway-client` | `./src/gateway-client.js` | Typed client helpers from `@smthrs/gateway-client` | +| `smthrs/gateway-react` | `./src/gateway-react.js` | React hooks and providers for gateway-backed UIs | +| `smthrs/sandbox` | `./src/sandbox.js` | Sandbox provider contracts, bundles, and execution helpers | +| `smthrs/jsx-runtime` | `./src/jsx-runtime.js` | JSX runtime (auto-resolved by `jsxImportSource`) | +| `smthrs/jsx-dev-runtime` | `./src/jsx-runtime.js` | JSX dev runtime (auto-resolved in dev mode) | +| `smthrs/tools` | `./src/tools.js` | Tool sandbox: `defineTool`, `read`, `grep`, `bash`, `edit`, `write` | +| `smthrs/server` | `./src/server.js` | HTTP server for run management and event streaming | +| `smthrs/observability` | `./src/observability.js` | OpenTelemetry traces, metrics, and Prometheus integration | +| `smthrs/mdx-plugin` | `./src/mdx-plugin.js` | Bun preload plugin for `.mdx` imports | +| `smthrs/dom/renderer` | `./src/dom/renderer.js` | Internal renderer (advanced use) | +| `smthrs/serve` | `./src/serve.js` | Single-workflow HTTP server via `createServeApp` | +| `smthrs/scorers` | `./src/scorers.js` | Eval scorers: `createScorer`, `llmJudge`, `aggregateScores` | +| `smthrs/memory` | `./src/memory.js` | Cross-run facts, message history, processors, and metrics | +| `smthrs/openapi` | `./src/openapi.js` | Generate AI SDK tools from OpenAPI specs | +| `smthrs/control-plane` | `./src/control-plane.js` | Organization, project, billing, usage, secret-reference, and audit primitives | + +The PI plugin is published as the separate `@smthrs/pi-plugin` package. The old `smthrs/pi-plugin` and `smthrs/pi-extension` subpaths are no longer exported. ## Workspace Packages -Most applications should import from `smithers-orchestrator`. The scoped workspace packages below are published for advanced integrations, custom clients, and framework development. +Most applications should import from `smthrs`. The scoped workspace packages below are published for advanced integrations, custom clients, and framework development. | Package | Primary surface | Related docs | |---|---|---| -| `smithers-orchestrator` | Public facade for workflow authoring, components, agents, tools, server helpers, memory, OpenAPI tools, scorers, and JSX runtime setup | This page, Types | -| `@smithers-orchestrator/cli` | CLI entrypoint, MCP server, local workflow pack, account registry commands, DevTools commands, cron, alerts, and server commands | CLI Overview, MCP Server | -| `@smithers-orchestrator/accounts` | Subscription and API-key account registry helpers: `listAccounts`, `addAccount`, `removeAccount`, `getAccount`, `accountToProviderEnv` | CLI Agents | -| `@smithers-orchestrator/agents` | AI SDK and CLI agent adapters, CLI capability reports, agent contracts, and tool capability registry | CLI Agents, SDK Agents | -| `@smithers-orchestrator/components` | JSX workflow components such as `Task`, `Workflow`, `Approval`, `Sandbox`, `Timer`, `Signal`, and control-flow components | Components | -| `@smithers-orchestrator/control-plane` | Durable organization, project, team, billing, usage, secret-reference, and audit primitives for hosted deployments | Control Plane | -| `@smithers-orchestrator/db` | SQLite/Drizzle adapter, table setup, run-state derivation, schema helpers, and output tables | Data Model, Run State | -| `@smithers-orchestrator/devtools` | Snapshot, tree, diff, node lookup, task collection, and DevTools run-store helpers behind the CLI inspect commands | Debugging, CLI Overview | -| `@smithers-orchestrator/driver` | Runtime driver contracts: `RunOptions`, `RunResult`, `RunStatus`, `SmithersCtx`, outputs, task runtime, interop, and child process helpers | Run Workflow, Execution Model | -| `@smithers-orchestrator/engine` | Workflow rendering/execution API: `runWorkflow`, `renderFrame`, `workflow`, `Smithers`, `fragment`, signals, and Effect versioning | Render Frame, Run Workflow | -| `@smithers-orchestrator/errors` | Error definitions, known codes, JSON serialization, docs URLs, and type guards | Errors | -| `@smithers-orchestrator/gateway` | Stable Gateway RPC contracts, auth scopes, deployment metadata, and generated OpenAPI schema | Gateway, RPC | -| `@smithers-orchestrator/gateway-client` | Browser/client SDK for Gateway RPC requests and event streams | Gateway | -| `@smithers-orchestrator/gateway-react` | React hooks and root helpers for Gateway-backed UIs | Gateway | -| `@smithers-orchestrator/graph` | Framework-neutral workflow graph model, XML nodes, task descriptors, and graph snapshots | Planner Internals, Types | -| `@smithers-orchestrator/jj-darwin-arm64` | Vendored jj (Jujutsu) binary for darwin-arm64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | VCS Guide | -| `@smithers-orchestrator/jj-darwin-x64` | Vendored jj (Jujutsu) binary for darwin-x64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | VCS Guide | -| `@smithers-orchestrator/jj-linux-arm64` | Vendored jj (Jujutsu) binary for linux-arm64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | VCS Guide | -| `@smithers-orchestrator/jj-linux-x64` | Vendored jj (Jujutsu) binary for linux-x64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | VCS Guide | -| `@smithers-orchestrator/jj-win32-x64` | Vendored jj (Jujutsu) binary for win32-x64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | VCS Guide | -| `@smithers-orchestrator/memory` | Cross-run facts, message history, processors, namespaces, service layer, and metrics | Memory, Memory Quickstart | -| `@smithers-orchestrator/observability` | Event types, logging, tracing, metrics, Prometheus rendering, and runtime observability layers | Events, Event Types | -| `@smithers-orchestrator/openapi` | OpenAPI parsing, operation extraction, AI SDK tool generation, schema conversion, and metrics | OpenAPI Tools, OpenAPI Quickstart | -| `@smithers-orchestrator/pi-plugin` | PI extension runtime, views, API wrappers, and workflow inspection integration | PI Integration | -| `@smithers-orchestrator/protocol` | Shared contracts, small value types, and protocol-level errors for cross-package use | Types, Errors | -| `@smithers-orchestrator/react-reconciler` | Custom React reconciler, host context, DOM renderer, DevTools preload, driver, and JSX runtime internals | Why React, Render Frame | -| `@smithers-orchestrator/sandbox` | Sandbox bundle, execute, and transport primitives used by the `Sandbox` component | Sandbox | -| `@smithers-orchestrator/scheduler` | Pure workflow state machine: task state, scheduler decisions, retry/cache policies, wait reasons, and workflow session services | Workflow State, Suspend and Resume | -| `@smithers-orchestrator/scorers` | Scorer definitions, LLM judges, batch execution, aggregation, persistence schema, and metrics | Evals, Evals Quickstart | -| `@smithers-orchestrator/server` | HTTP, WebSocket, Gateway, cron, webhook, metrics, and single-workflow serving APIs | Server, Serve | -| `@smithers-orchestrator/smithers` | Cerebras chat PWA and workflow graph demo application | CLI Overview | -| `@smithers-orchestrator/smithers-demo` | Interactive Smithers workflow generator demo with React Flow visualization | CLI Overview | -| `@smithers-orchestrator/smithers-studio-2` | Next Smithers Studio UI shell for browsing and driving workflow runs | CLI Overview | -| `@smithers-orchestrator/smithers-tui-demo` | Private React TUI demo app for terminal workflow interaction experiments | CLI Overview | -| `@smithers-orchestrator/time-travel` | Snapshots, diffs, forks, replay, timelines, VCS tags, rewind locks/audits, and time-travel metrics | Time Travel, Time Travel Quickstart | -| `@smithers-orchestrator/tool-context` | AsyncLocalStorage tool-execution context (run/node/idempotency keys, durability snapshot hook) shared by the engine and `smithers-orchestrator` without a dependency cycle | Execution Model | -| `@smithers-orchestrator/usage` | Account quota and rate-limit usage reporting for Smithers providers | CLI Overview | -| `@smithers-orchestrator/vcs` | VCS discovery and jj workspace operations such as `runJj`, `workspaceAdd`, `workspaceList`, and pointer reverts | VCS Helpers, VCS Guide | +| `smthrs` | Public facade for workflow authoring, components, agents, tools, server helpers, memory, OpenAPI tools, scorers, and JSX runtime setup | This page, Types | +| `@smthrs/cli` | CLI entrypoint, MCP server, local workflow pack, account registry commands, DevTools commands, cron, alerts, and server commands | CLI Overview, MCP Server | +| `@smthrs/accounts` | Subscription and API-key account registry helpers: `listAccounts`, `addAccount`, `removeAccount`, `getAccount`, `accountToProviderEnv` | CLI Agents | +| `@smthrs/agents` | AI SDK and CLI agent adapters, CLI capability reports, agent contracts, and tool capability registry | CLI Agents, SDK Agents | +| `@smthrs/components` | JSX workflow components such as `Task`, `Workflow`, `Approval`, `Sandbox`, `Timer`, `Signal`, and control-flow components | Components | +| `@smthrs/control-plane` | Durable organization, project, team, billing, usage, secret-reference, and audit primitives for hosted deployments | Control Plane | +| `@smthrs/db` | SQLite/Drizzle adapter, table setup, run-state derivation, schema helpers, and output tables | Data Model, Run State | +| `@smthrs/devtools` | Snapshot, tree, diff, node lookup, task collection, and DevTools run-store helpers behind the CLI inspect commands | Debugging, CLI Overview | +| `@smthrs/driver` | Runtime driver contracts: `RunOptions`, `RunResult`, `RunStatus`, `SmithersCtx`, outputs, task runtime, interop, and child process helpers | Run Workflow, Execution Model | +| `@smthrs/engine` | Workflow rendering/execution API: `runWorkflow`, `renderFrame`, `workflow`, `Smithers`, `fragment`, signals, and Effect versioning | Render Frame, Run Workflow | +| `@smthrs/errors` | Error definitions, known codes, JSON serialization, docs URLs, and type guards | Errors | +| `@smthrs/gateway` | Stable Gateway RPC contracts, auth scopes, deployment metadata, and generated OpenAPI schema | Gateway, RPC | +| `@smthrs/gateway-client` | Browser/client SDK for Gateway RPC requests and event streams | Gateway | +| `@smthrs/gateway-react` | React hooks and root helpers for Gateway-backed UIs | Gateway | +| `@smthrs/graph` | Framework-neutral workflow graph model, XML nodes, task descriptors, and graph snapshots | Planner Internals, Types | +| `@smthrs/jj-darwin-arm64` | Vendored jj (Jujutsu) binary for darwin-arm64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | VCS Guide | +| `@smthrs/jj-darwin-x64` | Vendored jj (Jujutsu) binary for darwin-x64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | VCS Guide | +| `@smthrs/jj-linux-arm64` | Vendored jj (Jujutsu) binary for linux-arm64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | VCS Guide | +| `@smthrs/jj-linux-x64` | Vendored jj (Jujutsu) binary for linux-x64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | VCS Guide | +| `@smthrs/jj-win32-x64` | Vendored jj (Jujutsu) binary for win32-x64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | VCS Guide | +| `@smthrs/memory` | Cross-run facts, message history, processors, namespaces, service layer, and metrics | Memory, Memory Quickstart | +| `@smthrs/observability` | Event types, logging, tracing, metrics, Prometheus rendering, and runtime observability layers | Events, Event Types | +| `@smthrs/openapi` | OpenAPI parsing, operation extraction, AI SDK tool generation, schema conversion, and metrics | OpenAPI Tools, OpenAPI Quickstart | +| `@smthrs/pi-plugin` | PI extension runtime, views, API wrappers, and workflow inspection integration | PI Integration | +| `@smthrs/protocol` | Shared contracts, small value types, and protocol-level errors for cross-package use | Types, Errors | +| `@smthrs/react-reconciler` | Custom React reconciler, host context, DOM renderer, DevTools preload, driver, and JSX runtime internals | Why React, Render Frame | +| `@smthrs/sandbox` | Sandbox bundle, execute, and transport primitives used by the `Sandbox` component | Sandbox | +| `@smthrs/scheduler` | Pure workflow state machine: task state, scheduler decisions, retry/cache policies, wait reasons, and workflow session services | Workflow State, Suspend and Resume | +| `@smthrs/scorers` | Scorer definitions, LLM judges, batch execution, aggregation, persistence schema, and metrics | Evals, Evals Quickstart | +| `@smthrs/server` | HTTP, WebSocket, Gateway, cron, webhook, metrics, and single-workflow serving APIs | Server, Serve | +| `@smthrs/smithers` | Cerebras chat PWA and workflow graph demo application | CLI Overview | +| `@smthrs/smithers-demo` | Interactive Smithers workflow generator demo with React Flow visualization | CLI Overview | +| `@smthrs/smithers-studio-2` | Next Smithers Studio UI shell for browsing and driving workflow runs | CLI Overview | +| `@smthrs/smithers-tui-demo` | Private React TUI demo app for terminal workflow interaction experiments | CLI Overview | +| `@smthrs/time-travel` | Snapshots, diffs, forks, replay, timelines, VCS tags, rewind locks/audits, and time-travel metrics | Time Travel, Time Travel Quickstart | +| `@smthrs/tool-context` | AsyncLocalStorage tool-execution context (run/node/idempotency keys, durability snapshot hook) shared by the engine and `smthrs` without a dependency cycle | Execution Model | +| `@smthrs/usage` | Account quota and rate-limit usage reporting for Smithers providers | CLI Overview | +| `@smthrs/vcs` | VCS discovery and jj workspace operations such as `runJj`, `workspaceAdd`, `workspaceList`, and pointer reverts | VCS Helpers, VCS Guide | ### Usage ```ts // Core API -import { createSmithers, runWorkflow } from "smithers-orchestrator"; +import { createSmithers, runWorkflow } from "smthrs"; // Tools -import { defineTool, bash, read, write } from "smithers-orchestrator/tools"; +import { defineTool, bash, read, write } from "smthrs/tools"; // Scorers -import { createScorer, llmJudge } from "smithers-orchestrator/scorers"; +import { createScorer, llmJudge } from "smthrs/scorers"; // MDX plugin (in preload.ts) -import { mdxPlugin } from "smithers-orchestrator/mdx-plugin"; +import { mdxPlugin } from "smthrs/mdx-plugin"; // Control-plane primitives -import { ControlPlaneStore } from "smithers-orchestrator/control-plane"; +import { ControlPlaneStore } from "smthrs/control-plane"; ``` ## TypeScript Configuration @@ -5552,42 +5552,42 @@ import { ControlPlaneStore } from "smithers-orchestrator/control-plane"; { "compilerOptions": { "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator" + "jsxImportSource": "smthrs" } } ``` -This tells TypeScript to resolve JSX transforms from `smithers-orchestrator/jsx-runtime` instead of `react/jsx-runtime`. The Smithers JSX runtime re-exports React's runtime, so component behavior is identical. This setting enables proper type resolution for Smithers workflow components. +This tells TypeScript to resolve JSX transforms from `smthrs/jsx-runtime` instead of `react/jsx-runtime`. The Smithers JSX runtime re-exports React's runtime, so component behavior is identical. This setting enables proper type resolution for Smithers workflow components. See JSX Installation for the complete TypeScript setup. ### Path Aliases -When developing inside the `smithers-orchestrator` monorepo, the root `tsconfig.json` defines path aliases so source imports resolve without a build step: +When developing inside the `smthrs` monorepo, the root `tsconfig.json` defines path aliases so source imports resolve without a build step: ```jsonc "paths": { - "smithers-orchestrator": ["./packages/smithers/src/index.js"], - "smithers-orchestrator/jsx-runtime": ["./packages/smithers/src/jsx-runtime.js"], - "smithers-orchestrator/jsx-dev-runtime": ["./packages/smithers/src/jsx-runtime.js"], - "smithers-orchestrator/tools": ["./packages/smithers/src/tools.js"], - "smithers-orchestrator/*": [ + "smthrs": ["./packages/smithers/src/index.js"], + "smthrs/jsx-runtime": ["./packages/smithers/src/jsx-runtime.js"], + "smthrs/jsx-dev-runtime": ["./packages/smithers/src/jsx-runtime.js"], + "smthrs/tools": ["./packages/smithers/src/tools.js"], + "smthrs/*": [ "./packages/smithers/src/*.js", "./packages/smithers/src/*/index.js" ], - "smithers-orchestrator/scorers": ["./packages/scorers/src/index.js"], - "@smithers-orchestrator/agents": ["./packages/agents/src/index.js"], - "@smithers-orchestrator/gateway-client": ["./packages/gateway-client/src/index.ts"], - "@smithers-orchestrator/gateway-react": ["./packages/gateway-react/src/index.ts"], - "@smithers-orchestrator/pi-plugin": ["./packages/pi-plugin/src/index.ts"], - "@smithers-orchestrator/server": ["./packages/server/src/index.js"] + "smthrs/scorers": ["./packages/scorers/src/index.js"], + "@smthrs/agents": ["./packages/agents/src/index.js"], + "@smthrs/gateway-client": ["./packages/gateway-client/src/index.ts"], + "@smthrs/gateway-react": ["./packages/gateway-react/src/index.ts"], + "@smthrs/pi-plugin": ["./packages/pi-plugin/src/index.ts"], + "@smthrs/server": ["./packages/server/src/index.js"] // The root tsconfig includes the same style of alias for each workspace package. } ``` -The root package is a private `smithers-monorepo`; `smithers-orchestrator` resolves to `packages/smithers`. +The root package is a private `smithers-monorepo`; `smthrs` resolves to `packages/smithers`. -**End users do not need path aliases** — only framework developers do. Installing `smithers-orchestrator` as a dependency lets Node/Bun module resolution handle import paths automatically. +**End users do not need path aliases** — only framework developers do. Installing `smthrs` as a dependency lets Node/Bun module resolution handle import paths automatically. ### Local Type Root Shims @@ -5634,7 +5634,7 @@ Defined in the root `package.json` for development: | Script | Command | Purpose | |---|---|---| | `typecheck` | `tsc --noEmit` | Type-check the `src/` and `tests/` trees against `tsconfig.json` | -| `typecheck:examples` | `tsc -p examples/tsconfig.json --noEmit` | Type-check example files against a separate config that maps `smithers-orchestrator` to `examples-entry.js` | +| `typecheck:examples` | `tsc -p examples/tsconfig.json --noEmit` | Type-check example files against a separate config that maps `smthrs` to `examples-entry.js` | | `lint` | `oxlint ... packages/*/src packages/*/tests` | Lint package source and tests with oxlint | | `lint:fix` | `oxlint ... --fix --fix-suggestions packages/*/src packages/*/tests` | Apply supported oxlint fixes | | `cli` | `bun run apps/cli/src/index.js` | Run the local development CLI entrypoint | @@ -5663,7 +5663,7 @@ See Production Project Structure for a complete user-project `package.json` exam ## VCS Helper Reference -> Public JJ helper APIs exported by smithers-orchestrator for repo detection, snapshot inspection, and workspace management. +> Public JJ helper APIs exported by smthrs for repo detection, snapshot inspection, and workspace management. Smithers exports a small JJ helper surface for applications that inspect or manage Jujutsu state directly. @@ -5684,7 +5684,7 @@ import { workspaceAdd, workspaceList, workspaceClose, -} from "smithers-orchestrator"; +} from "smthrs"; ``` ## `runJj(args, opts?)` @@ -5842,10 +5842,10 @@ For workflow-level revert behavior, prefer the runtime and CLI docs: ## runWorkflow -> Programmatic entry point. Equivalent to `bunx smithers-orchestrator up`. +> Programmatic entry point. Equivalent to `bunx smthrs up`. ```ts -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; import { Effect } from "effect"; const result = await Effect.runPromise(runWorkflow(workflow, { @@ -5893,7 +5893,7 @@ All in-flight attempts are marked cancelled and `NodeCancelled` events are emitt ## Hijack handoff -If a CLI hijack happens mid-run (`bunx smithers-orchestrator hijack <id>`), the run ends `"cancelled"` and the latest attempt metadata stores `hijackHandoff`. On `resume: true`, Smithers waits for a safe handoff point and continues with the persisted CLI session id (see CLI Agents) or the persisted message history (SDK agents). +If a CLI hijack happens mid-run (`bunx smthrs hijack <id>`), the run ends `"cancelled"` and the latest attempt metadata stores `hijackHandoff`. On `resume: true`, Smithers waits for a safe handoff point and continues with the persisted CLI session id (see CLI Agents) or the persisted message history (SDK agents). ## `result.output` @@ -5920,8 +5920,8 @@ const rows = db.query("SELECT * FROM page WHERE run_id = ? ORDER BY iteration DE Use `renderFrame` to preview the task graph — for CI validation, graph-inspection UIs, or dry-run checks — without executing or persisting anything. `runId` and `iteration` are arbitrary strings used only for snapshot identity. ```ts -import { renderFrame } from "smithers-orchestrator"; -import { SmithersCtx } from "@smithers-orchestrator/driver"; +import { renderFrame } from "smthrs"; +import { SmithersCtx } from "@smthrs/driver"; import { Effect } from "effect"; const ctx = new SmithersCtx({ runId: "preview", iteration: 0, input: { task: "preview" }, outputs: {} }); @@ -5961,7 +5961,7 @@ bunx smithers graph workflow.tsx --input '{"task":"preview"}' Each successful task attempt captures the current [JJ](https://jj-vcs.github.io/jj/) change ID into `_smithers_attempts.jj_pointer`. `revert` restores the workspace to that state and discards any graph snapshots recorded after the attempt began, so the run's timeline rolls back to the point-in-time of that attempt. ```bash -bunx smithers-orchestrator revert workflow.tsx \ +bunx smthrs revert workflow.tsx \ --run-id <id> --node-id <node> [--attempt N=1] [--iteration N=0] ``` @@ -5976,7 +5976,7 @@ Revert restores files only — it doesn't alter JJ history; the restoration crea ## Programmatic ```ts -import { revertToAttempt } from "smithers-orchestrator"; +import { revertToAttempt } from "smthrs"; const result = await revertToAttempt(adapter, { runId: "abc123", @@ -6080,7 +6080,7 @@ Terminal states (`succeeded`, `failed`, `cancelled`) carry neither. ## computeRunState ```ts -import { computeRunState } from "@smithers-orchestrator/db/runState"; +import { computeRunState } from "@smthrs/db/runState"; const view = await computeRunState(adapter, runId); view.state; // "running" | ... @@ -6096,7 +6096,7 @@ not run heuristics. when you already have the rows in memory: ```ts -import { deriveRunState } from "@smithers-orchestrator/db/runState"; +import { deriveRunState } from "@smthrs/db/runState"; const view = deriveRunState({ run, @@ -6161,7 +6161,7 @@ Historical TUI product/design material is kept for reference, but it does not de Run `smithers optimize` to generate improved prompts for agent tasks via GEPA, verify the improvement against your eval suite, and save the result as a reusable artifact. ```bash -bunx smithers-orchestrator optimize workflow.tsx \ +bunx smthrs optimize workflow.tsx \ --cases evals/smoke.jsonl \ --suite smoke-gepa \ --provider cerebras \ @@ -6181,7 +6181,7 @@ The command writes the artifact only when the optimized score improves by at lea Apply the optimized prompts to future evals with `--optimization`: ```bash -bunx smithers-orchestrator eval workflow.tsx \ +bunx smthrs eval workflow.tsx \ --cases evals/smoke.jsonl \ --suite smoke-optimized \ --optimization .smithers/optimizations/smoke-gepa.json @@ -6194,7 +6194,7 @@ The artifact patches only agent-backed `<Task>` prompts by `nodeId`. Workflow st Example: the following run demonstrates a baseline failure corrected by a GEPA-generated patch. The baseline prompt did not include the required optimization token, so the eval failed. Cerebras GEPA generated a prompt patch that included the missing requirement, and the optimized eval passed. ```bash -CEREBRAS_API_KEY=... bunx smithers-orchestrator optimize workflow.tsx \ +CEREBRAS_API_KEY=... bunx smthrs optimize workflow.tsx \ --cases evals/opt.jsonl \ --suite cerebras-proof \ --provider cerebras \ @@ -6265,7 +6265,7 @@ Memory persists state **across runs**. Task outputs are per-run; memory is per-n ## Three layers ```ts -import { createMemoryStore } from "smithers-orchestrator/memory"; +import { createMemoryStore } from "smthrs/memory"; import { Database } from "bun:sqlite"; const store = createMemoryStore(new Database("smithers.db")); @@ -6310,7 +6310,7 @@ Pick the kind to match the lifetime: `workflow` is scoped to a workflow definiti Maintenance jobs you run periodically: ```ts -import { TtlGarbageCollector, TokenLimiter, Summarizer } from "smithers-orchestrator/memory"; +import { TtlGarbageCollector, TokenLimiter, Summarizer } from "smthrs/memory"; const gc = TtlGarbageCollector(); // expire facts past their TTL const limiter = TokenLimiter(4000); // keep history under token budget @@ -6324,7 +6324,7 @@ await summarizer.process(store); ## Inspect from the CLI ```bash -bunx smithers-orchestrator memory list workflow:code-review -w workflow.tsx +bunx smthrs memory list workflow:code-review -w workflow.tsx ``` The CLI currently exposes fact listing. Use the store API for writes, deletes, threads, messages, and TTL cleanup. @@ -6358,7 +6358,7 @@ This material is now in the opt-in `/llms-memory.txt` fragment. `createOpenApiTools` parses an OpenAPI 3.x spec and returns AI SDK tools — one per operation, with Zod schemas converted from the spec's JSON schemas. ```ts -import { createOpenApiTools } from "smithers-orchestrator/openapi"; +import { createOpenApiTools } from "smthrs/openapi"; const tools = await createOpenApiTools("./petstore.json", { baseUrl: "https://api.petstore.example.com", @@ -6403,7 +6403,7 @@ Pass the spec itself as the first argument to `createOpenApiTools(input, options ## CLI preview ```bash -bunx smithers-orchestrator openapi list ./api/openapi.yaml +bunx smthrs openapi list ./api/openapi.yaml ``` Lists every operationId, method, path, and summary — useful for auditing what an agent will be able to call before wiring it up. @@ -6429,7 +6429,7 @@ For each operation: ## Observability -Each tool call emits an `OpenApiToolCalled` event with `operationId`, `method`, `path`, `durationMs`, `status`. Visible via `bunx smithers-orchestrator events <run-id> --type openapi`. +Each tool call emits an `OpenApiToolCalled` event with `operationId`, `method`, `path`, `durationMs`, `status`. Visible via `bunx smthrs events <run-id> --type openapi`. ## Notes @@ -6462,7 +6462,7 @@ This material is now in the opt-in `/llms-openapi.txt` fragment. ## Quick start ```ts -import { startServer } from "smithers-orchestrator"; +import { startServer } from "smthrs"; import { drizzle } from "drizzle-orm/bun-sqlite"; const server = startServer({ @@ -6527,7 +6527,7 @@ Errors use the envelope `{ "error": { "code", "message", "details" } }`. Common Tools resolve relative to `rootDir`. The example below exposes a workflow that uses the built-in `bash` tool through the server; clients call it via `POST /v1/runs`. ```tsx -import { Task, Workflow, createSmithers, bash } from "smithers-orchestrator"; +import { Task, Workflow, createSmithers, bash } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -6572,7 +6572,7 @@ Serve mode starts a Hono-based HTTP server alongside a running workflow. Every r ## CLI ```bash -bunx smithers-orchestrator up workflow.tsx --serve --port 3000 --host 0.0.0.0 +bunx smthrs up workflow.tsx --serve --port 3000 --host 0.0.0.0 ``` | Flag | Default | Description | @@ -6588,13 +6588,13 @@ The process stays alive after the workflow completes so final state remains quer Detached mode: ```bash -bunx smithers-orchestrator up workflow.tsx --serve --port 8080 -d +bunx smthrs up workflow.tsx --serve --port 8080 -d ``` ## Programmatic ```ts -import { createServeApp } from "smithers-orchestrator/serve"; +import { createServeApp } from "smthrs/serve"; const app = createServeApp({ workflow, @@ -6755,7 +6755,7 @@ Unknown routes return `404` with code `NOT_FOUND`. ```bash # Start a workflow with serve mode -bunx smithers-orchestrator up workflow.tsx --serve --port 8080 --auth-token sk-secret +bunx smthrs up workflow.tsx --serve --port 8080 --auth-token sk-secret # Status curl http://localhost:8080/ -H "Authorization: Bearer sk-secret" @@ -6784,7 +6784,7 @@ curl http://localhost:8080/health ## Quick start ```tsx -import { Gateway, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { Gateway, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -6830,7 +6830,7 @@ ws.onopen = () => ws.send(JSON.stringify({ Programmatic clients — bots, schedulers, dashboards, third-party UIs — talk to the Gateway through the typed client SDK over the same RPC and WebSocket API. For the full custom-UI guide (declarative queries, pushed updates, stale guards, reconnect/resume, backpressure, optimistic mutations, auth, vanilla JS + React hooks) see Custom UIs. ```ts -import { SmithersGatewayClient } from "smithers-orchestrator/gateway-client"; +import { SmithersGatewayClient } from "smthrs/gateway-client"; const gateway = new SmithersGatewayClient(); const workflows = await gateway.listWorkflows(); @@ -6846,8 +6846,8 @@ Gateway client exports: | Package | Exports | |---|---| -| `smithers-orchestrator/gateway-client` | `SmithersGatewayClient`, `SmithersGatewayConnection`, `GatewayRpcError`, `gatewayBackoffDelay`, RPC frame/type-map types, `GatewayUiBootConfig`, `SmithersGatewayClientOptions` | -| `smithers-orchestrator/gateway-react` | `SmithersGatewayProvider`, `createGatewayReactRoot`, `useGatewayRun`, `useGatewayRuns`, `useGatewayWorkflows`, `useGatewayApprovals`, `useGatewayNodeOutput`, `useGatewayRunEvents`, `useGatewayActions`, `useGatewayRpc`, `useSmithersGateway` | +| `smthrs/gateway-client` | `SmithersGatewayClient`, `SmithersGatewayConnection`, `GatewayRpcError`, `gatewayBackoffDelay`, RPC frame/type-map types, `GatewayUiBootConfig`, `SmithersGatewayClientOptions` | +| `smthrs/gateway-react` | `SmithersGatewayProvider`, `createGatewayReactRoot`, `useGatewayRun`, `useGatewayRuns`, `useGatewayWorkflows`, `useGatewayApprovals`, `useGatewayNodeOutput`, `useGatewayRunEvents`, `useGatewayActions`, `useGatewayRpc`, `useSmithersGateway` | ## RPC methods (TOON) @@ -7207,20 +7207,20 @@ For clients that read JSON config directly: "mcpServers": { "smithers": { "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"] + "args": ["smthrs", "--mcp"] } } } ``` -Project-scoped install (e.g. a monorepo where Smithers is a dev dependency — ensure `smithers-orchestrator` is in the local `package.json`): +Project-scoped install (e.g. a monorepo where Smithers is a dev dependency — ensure `smthrs` is in the local `package.json`): ```json { "mcpServers": { "smithers": { "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"] + "args": ["smthrs", "--mcp"] } } } @@ -7934,7 +7934,7 @@ you need a React-free API for generated workflow definitions. ## Minimal workflow ```ts -import { Smithers } from "smithers-orchestrator"; +import { Smithers } from "smthrs"; import { Effect, Schema } from "effect"; const inputSchema = Schema.Struct({ @@ -8213,7 +8213,7 @@ const opsAgent = new Agent({ Use this when your CLI agent already supports external integrations and Smithers should only orchestrate the task. ```ts -import { PiAgent } from "smithers-orchestrator"; +import { PiAgent } from "smthrs"; const pi = new PiAgent({ provider: "openai", @@ -8267,7 +8267,7 @@ CLI-backed agent classes wrap external AI command-line tools and implement the [ ## Quick Start ```tsx -import { ClaudeCodeAgent, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { ClaudeCodeAgent, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -8310,7 +8310,7 @@ CLI binaries must be on `PATH`: `claude`, `codex`, `agy`, `pi`, `kimi`, `forge`, `CodexAgent` is the Smithers wrapper for OpenAI's `codex` CLI. It runs `codex exec` in non-interactive mode, sends the task prompt over stdin, forces `--json` so Smithers can stream structured progress, and captures the final assistant message via `--output-last-message`. ```tsx -import { CodexAgent, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { CodexAgent, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -8337,7 +8337,7 @@ export default smithers(() => ( - Subscription login: run `codex login` once. For isolated accounts, pass `configDir`; Smithers sets `CODEX_HOME` for that invocation. - API billing: pass `apiKey` or set `OPENAI_API_KEY`; Smithers forwards it to the spawned `codex` process. -- Account registry: `bunx smithers-orchestrator agents add --provider codex ...` registers a subscription config directory, while `--provider openai-api` registers API-key billing for Codex-compatible providers. +- Account registry: `bunx smthrs agents add --provider codex ...` registers a subscription config directory, while `--provider openai-api` registers API-key billing for Codex-compatible providers. ### Structured output @@ -8379,7 +8379,7 @@ await agent.generate({ `ClaudeCodeAgent` extends the base with Claude Code-specific session and permission flags. Key additions: `permissionMode`, `sessionId`, `mcpConfig`, `resume`. ```ts -import { ClaudeCodeAgent } from "smithers-orchestrator"; +import { ClaudeCodeAgent } from "smthrs"; new ClaudeCodeAgent({ permissionMode?: "acceptEdits" | "bypassPermissions" | "default" | "delegate" | "dontAsk" | "plan"; allowedTools?: string[]; disallowedTools?: string[]; disableSlashCommands?: boolean; @@ -8400,7 +8400,7 @@ new ClaudeCodeAgent({ `CodexAgent` extends the base with OpenAI Codex-specific flags. Key additions: `sandbox`, `config`, `outputSchema`. ```ts -import { CodexAgent } from "smithers-orchestrator"; +import { CodexAgent } from "smthrs"; new CodexAgent({ sandbox?: "read-only" | "workspace-write" | "danger-full-access"; fullAuto?: boolean; dangerouslyBypassApprovalsAndSandbox?: boolean; @@ -8417,7 +8417,7 @@ new CodexAgent({ `AntigravityAgent` wraps the Google `agy` CLI. Key additions: `allowedMcpServerNames`, `geminiDir`, `conversation`, `continue`, and `resume`. ```ts -import { AntigravityAgent } from "smithers-orchestrator"; +import { AntigravityAgent } from "smthrs"; new AntigravityAgent({ model?: string; sandbox?: boolean; yolo?: boolean; dangerouslySkipPermissions?: boolean; @@ -8454,7 +8454,7 @@ outside workflow launch through `agy plugin`. `PiAgent` wraps the Pi CLI and adds extension UI hook support. Key additions: `mode`, `onExtensionUiRequest`, `extension`, `thinking`. ```ts -import { PiAgent, type PiExtensionUiRequest, type PiExtensionUiResponse } from "smithers-orchestrator"; +import { PiAgent, type PiExtensionUiRequest, type PiExtensionUiResponse } from "smthrs"; new PiAgent({ provider?: string; apiKey?: string; appendSystemPrompt?: string; mode?: "text" | "json" | "rpc"; print?: boolean; continue?: boolean; resume?: boolean; session?: string; @@ -8472,7 +8472,7 @@ new PiAgent({ `KimiAgent` wraps the Moonshot Kimi CLI with automatic session isolation. Key additions: `thinking`, `agent`, `maxRalphIterations`. ```ts -import { KimiAgent } from "smithers-orchestrator"; +import { KimiAgent } from "smthrs"; new KimiAgent({ thinking?: boolean; outputFormat?: "text" | "stream-json"; finalMessageOnly?: boolean; quiet?: boolean; @@ -8487,7 +8487,7 @@ new KimiAgent({ `ForgeAgent` wraps the Forge CLI and supports 300+ models via provider/model strings. Key additions: `conversationId`, `provider`, `workflow`. ```ts -import { ForgeAgent } from "smithers-orchestrator"; +import { ForgeAgent } from "smthrs"; new ForgeAgent({ directory?: string; provider?: string; agent?: string; conversationId?: string; sandbox?: string; restricted?: boolean; @@ -8498,7 +8498,7 @@ new ForgeAgent({ `AmpAgent` wraps the Amp CLI in `--execute` headless mode. Key additions: `visibility`, `mcpConfig`, `dangerouslyAllowAll`. ```ts -import { AmpAgent } from "smithers-orchestrator"; +import { AmpAgent } from "smthrs"; new AmpAgent({ visibility?: "private" | "public" | "workspace" | "group"; mcpConfig?: string; settingsFile?: string; @@ -8510,7 +8510,7 @@ new AmpAgent({ `OpenCodeAgent` wraps the OpenCode CLI via `opencode run --format json`. Key additions: `agentName`, `continueSession`, `sessionId`. Note: native hijack support is not yet shipped. ```ts -import { OpenCodeAgent } from "smithers-orchestrator"; +import { OpenCodeAgent } from "smthrs"; new OpenCodeAgent({ model?: string; agentName?: string; attachFiles?: string[]; @@ -8521,7 +8521,7 @@ new OpenCodeAgent({ ## Hijack handoff -Most built-in CLI agents support `bunx smithers-orchestrator hijack <runId>`, which relaunches the agent in its native CLI session for interactive takeover. +Most built-in CLI agents support `bunx smthrs hijack <runId>`, which relaunches the agent in its native CLI session for interactive takeover. Smithers persists the native session or conversation id on each task event. On hijack, it waits for a safe boundary between blocking tool calls, then reopens the session via the vendor's resume flag: @@ -8560,7 +8560,7 @@ import { AnthropicAgent, OpenAIAgent, tools, -} from "smithers-orchestrator"; +} from "smthrs"; import { stepCountIs } from "ai"; ``` @@ -8651,7 +8651,7 @@ Use the `createOpenAI` path when you need provider-level configuration beyond `b [Hermes](https://github.com/NousResearch/hermes-agent) (Nous Research) exposes an OpenAI-compatible HTTP API, so `HermesAgent` is a convenience subclass of `OpenAIAgent` that points the provider at your Hermes server and disables native structured output by default (a local Hermes server may not honor JSON-schema response formats). ```ts -import { HermesAgent } from "smithers-orchestrator"; +import { HermesAgent } from "smthrs"; const hermes = new HermesAgent({ baseURL: "http://127.0.0.1:5123/v1", // or set HERMES_BASE_URL @@ -8714,7 +8714,7 @@ export const claude = useCli > Sandboxed file and shell tools for AI agent tasks, with exact input schemas, security policies, and usage examples. ```ts -import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadata } from "smithers-orchestrator"; +import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadata } from "smthrs"; ``` `tools` bundles all five tools keyed by name: @@ -8723,7 +8723,7 @@ import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadat const { read, write, edit, grep, bash } = tools; ``` -The `smithers-orchestrator/tools` subpath also exports lower-level helpers for advanced integrations: +The `smthrs/tools` subpath also exports lower-level helpers for advanced integrations: | Export | Purpose | |---|---| @@ -8769,7 +8769,7 @@ Every invocation is logged to `_smithers_tool_calls`: `defineTool()` wraps custom AI SDK tools with Smithers runtime context, deterministic idempotency keys, and durable tool-call logging. ```ts -import { defineTool } from "smithers-orchestrator"; +import { defineTool } from "smthrs"; import { z } from "zod"; const placeOrder = defineTool({ @@ -8870,7 +8870,7 @@ Returns file contents as UTF-8. Throws `"File too large"` if size exceeds `maxOu ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, grep } from "smithers-orchestrator"; +import { read, grep } from "smthrs"; const codeAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -8903,7 +8903,7 @@ Returns `"ok"`. Throws `"Content too large"` if content exceeds `maxOutputBytes` ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { write, read } from "smithers-orchestrator"; +import { write, read } from "smthrs"; const writerAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -8990,7 +8990,7 @@ Local git commands (`git status`, `git diff`, `git log`) are allowed. ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash } from "smithers-orchestrator"; +import { bash } from "smthrs"; const devAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -9014,7 +9014,7 @@ Pass tools to an AI SDK agent and assign the agent to a `<Task>`: ```tsx import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { createSmithers, read, write, edit, grep, bash, Task } from "smithers-orchestrator"; +import { createSmithers, read, write, edit, grep, bash, Task } from "smthrs"; import { z } from "zod"; const codeAgent = new Agent({ @@ -9041,7 +9041,7 @@ The full bundle works too: ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { tools } from "smithers-orchestrator"; +import { tools } from "smthrs"; const fullAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -9060,7 +9060,7 @@ const fullAgent = new Agent({ ```ts import { Effect } from "effect"; -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; const result = await Effect.runPromise(runWorkflow(workflow, { input: { file: "src/auth.ts" }, @@ -9188,7 +9188,7 @@ Smithers provides deterministic orchestration (workflow graph, approvals, retrie ### 1) PI as Workflow Agent ```tsx -import { PiAgent } from "smithers-orchestrator"; +import { PiAgent } from "smthrs"; const pi = new PiAgent({ provider: "openai", @@ -9208,13 +9208,13 @@ PI sessions are first-class hijack targets. `smithers hijack <runId> --target pi ### 2) PI Server Client -Drive Smithers server APIs from a PI extension or any Node process via `@smithers-orchestrator/pi-plugin`: +Drive Smithers server APIs from a PI extension or any Node process via `@smthrs/pi-plugin`: ```ts -import { runWorkflow, approve, streamEvents } from "@smithers-orchestrator/pi-plugin"; +import { runWorkflow, approve, streamEvents } from "@smthrs/pi-plugin"; ``` -The older `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extension` subpaths were removed; use the scoped package directly. +The older `smthrs/pi-plugin` and `smthrs/pi-extension` subpaths were removed; use the scoped package directly. ### 3) Hybrid: PI Extensibility + Smithers Orchestration @@ -9224,7 +9224,7 @@ The older `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extens Patterns: 1. PI skill-driven coding task inside a Smithers `<Task>`. -2. PI extension command that starts/resumes Smithers workflows via server API or `@smithers-orchestrator/pi-plugin`. +2. PI extension command that starts/resumes Smithers workflows via server API or `@smthrs/pi-plugin`. 3. Smithers workflow output persisted to SQLite and consumed by later PI-assisted tasks. ## Hijacking PI Sessions @@ -9247,7 +9247,7 @@ Session persistence: 1. Install PI CLI and add to `PATH`. 2. Configure PI credentials via env/config (prefer over CLI args for API keys). 3. Instantiate `PiAgent` with explicit options in workflows. -4. For server-driven workflows, use `@smithers-orchestrator/pi-plugin`. +4. For server-driven workflows, use `@smthrs/pi-plugin`. ```bash # Verify PI is installed @@ -9263,7 +9263,7 @@ pi --version ## Limitations -Smithers does not provide a chat interface for PI. Chat UI integration is the responsibility of the host application using `@smithers-orchestrator/pi-plugin`. +Smithers does not provide a chat interface for PI. Chat UI integration is the responsibility of the host application using `@smthrs/pi-plugin`. =============================================================================== @@ -9283,7 +9283,7 @@ Smithers does not provide a chat interface for PI. Chat UI integration is the re ## Subscribe via `onProgress` ```ts -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; import { Effect } from "effect"; import workflow from "./workflow"; @@ -9310,8 +9310,8 @@ jq -r .type .smithers/executions/<run-id>/logs/stream.ndjson | sort | uniq -c | Or with the CLI: ```bash -bunx smithers-orchestrator events <run-id> --json -bunx smithers-orchestrator events <run-id> --type tool-call --node analyze +bunx smthrs events <run-id> --json +bunx smthrs events <run-id> --type tool-call --node analyze ``` ## Common fields @@ -9326,7 +9326,7 @@ Every event includes `type`, `runId`, `timestampMs`. Node-scoped events add `nod ## Event categories -Used by `bunx smithers-orchestrator events --type <category>` and the metrics layer. +Used by `bunx smthrs events --type <category>` and the metrics layer. | Category | Events | |---|---| @@ -9359,7 +9359,7 @@ Used by `bunx smithers-orchestrator events --type <category>` and the metrics la | `ApprovalGranted` / `ApprovalDenied` | Approval counters | | `TokenUsageReported` | Token usage counters per model/agent | -`trackSmithersEvent` from `smithers-orchestrator/observability` exposes this mapping for custom integrations. See Observability for the full OTLP/Prometheus setup. +`trackSmithersEvent` from `smthrs/observability` exposes this mapping for custom integrations. See Observability for the full OTLP/Prometheus setup. --- diff --git a/docs/references/smithers/docs/llms-integrations.txt b/docs/references/smithers/docs/llms-integrations.txt index 394de9784..11955df43 100644 --- a/docs/references/smithers/docs/llms-integrations.txt +++ b/docs/references/smithers/docs/llms-integrations.txt @@ -36,7 +36,7 @@ const opsAgent = new Agent({ Use this when your CLI agent already supports external integrations and Smithers should only orchestrate the task. ```ts -import { PiAgent } from "smithers-orchestrator"; +import { PiAgent } from "smthrs"; const pi = new PiAgent({ provider: "openai", @@ -93,7 +93,7 @@ CLI-backed agent classes wrap external AI command-line tools and implement the [ ## Quick Start ```tsx -import { ClaudeCodeAgent, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { ClaudeCodeAgent, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -136,7 +136,7 @@ CLI binaries must be on `PATH`: `claude`, `codex`, `agy`, `pi`, `kimi`, `forge`, `CodexAgent` is the Smithers wrapper for OpenAI's `codex` CLI. It runs `codex exec` in non-interactive mode, sends the task prompt over stdin, forces `--json` so Smithers can stream structured progress, and captures the final assistant message via `--output-last-message`. ```tsx -import { CodexAgent, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { CodexAgent, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -163,7 +163,7 @@ export default smithers(() => ( - Subscription login: run `codex login` once. For isolated accounts, pass `configDir`; Smithers sets `CODEX_HOME` for that invocation. - API billing: pass `apiKey` or set `OPENAI_API_KEY`; Smithers forwards it to the spawned `codex` process. -- Account registry: `bunx smithers-orchestrator agents add --provider codex ...` registers a subscription config directory, while `--provider openai-api` registers API-key billing for Codex-compatible providers. +- Account registry: `bunx smthrs agents add --provider codex ...` registers a subscription config directory, while `--provider openai-api` registers API-key billing for Codex-compatible providers. ### Structured output @@ -205,7 +205,7 @@ await agent.generate({ `ClaudeCodeAgent` extends the base with Claude Code-specific session and permission flags. Key additions: `permissionMode`, `sessionId`, `mcpConfig`, `resume`. ```ts -import { ClaudeCodeAgent } from "smithers-orchestrator"; +import { ClaudeCodeAgent } from "smthrs"; new ClaudeCodeAgent({ permissionMode?: "acceptEdits" | "bypassPermissions" | "default" | "delegate" | "dontAsk" | "plan"; allowedTools?: string[]; disallowedTools?: string[]; disableSlashCommands?: boolean; @@ -226,7 +226,7 @@ new ClaudeCodeAgent({ `CodexAgent` extends the base with OpenAI Codex-specific flags. Key additions: `sandbox`, `config`, `outputSchema`. ```ts -import { CodexAgent } from "smithers-orchestrator"; +import { CodexAgent } from "smthrs"; new CodexAgent({ sandbox?: "read-only" | "workspace-write" | "danger-full-access"; fullAuto?: boolean; dangerouslyBypassApprovalsAndSandbox?: boolean; @@ -243,7 +243,7 @@ new CodexAgent({ `AntigravityAgent` wraps the Google `agy` CLI. Key additions: `allowedMcpServerNames`, `geminiDir`, `conversation`, `continue`, and `resume`. ```ts -import { AntigravityAgent } from "smithers-orchestrator"; +import { AntigravityAgent } from "smthrs"; new AntigravityAgent({ model?: string; sandbox?: boolean; yolo?: boolean; dangerouslySkipPermissions?: boolean; @@ -280,7 +280,7 @@ outside workflow launch through `agy plugin`. `PiAgent` wraps the Pi CLI and adds extension UI hook support. Key additions: `mode`, `onExtensionUiRequest`, `extension`, `thinking`. ```ts -import { PiAgent, type PiExtensionUiRequest, type PiExtensionUiResponse } from "smithers-orchestrator"; +import { PiAgent, type PiExtensionUiRequest, type PiExtensionUiResponse } from "smthrs"; new PiAgent({ provider?: string; apiKey?: string; appendSystemPrompt?: string; mode?: "text" | "json" | "rpc"; print?: boolean; continue?: boolean; resume?: boolean; session?: string; @@ -298,7 +298,7 @@ new PiAgent({ `KimiAgent` wraps the Moonshot Kimi CLI with automatic session isolation. Key additions: `thinking`, `agent`, `maxRalphIterations`. ```ts -import { KimiAgent } from "smithers-orchestrator"; +import { KimiAgent } from "smthrs"; new KimiAgent({ thinking?: boolean; outputFormat?: "text" | "stream-json"; finalMessageOnly?: boolean; quiet?: boolean; @@ -313,7 +313,7 @@ new KimiAgent({ `ForgeAgent` wraps the Forge CLI and supports 300+ models via provider/model strings. Key additions: `conversationId`, `provider`, `workflow`. ```ts -import { ForgeAgent } from "smithers-orchestrator"; +import { ForgeAgent } from "smthrs"; new ForgeAgent({ directory?: string; provider?: string; agent?: string; conversationId?: string; sandbox?: string; restricted?: boolean; @@ -324,7 +324,7 @@ new ForgeAgent({ `AmpAgent` wraps the Amp CLI in `--execute` headless mode. Key additions: `visibility`, `mcpConfig`, `dangerouslyAllowAll`. ```ts -import { AmpAgent } from "smithers-orchestrator"; +import { AmpAgent } from "smthrs"; new AmpAgent({ visibility?: "private" | "public" | "workspace" | "group"; mcpConfig?: string; settingsFile?: string; @@ -336,7 +336,7 @@ new AmpAgent({ `OpenCodeAgent` wraps the OpenCode CLI via `opencode run --format json`. Key additions: `agentName`, `continueSession`, `sessionId`. Note: native hijack support is not yet shipped. ```ts -import { OpenCodeAgent } from "smithers-orchestrator"; +import { OpenCodeAgent } from "smthrs"; new OpenCodeAgent({ model?: string; agentName?: string; attachFiles?: string[]; @@ -347,7 +347,7 @@ new OpenCodeAgent({ ## Hijack handoff -Most built-in CLI agents support `bunx smithers-orchestrator hijack <runId>`, which relaunches the agent in its native CLI session for interactive takeover. +Most built-in CLI agents support `bunx smthrs hijack <runId>`, which relaunches the agent in its native CLI session for interactive takeover. Smithers persists the native session or conversation id on each task event. On hijack, it waits for a safe boundary between blocking tool calls, then reopens the session via the vendor's resume flag: @@ -386,7 +386,7 @@ import { AnthropicAgent, OpenAIAgent, tools, -} from "smithers-orchestrator"; +} from "smthrs"; import { stepCountIs } from "ai"; ``` @@ -477,7 +477,7 @@ Use the `createOpenAI` path when you need provider-level configuration beyond `b [Hermes](https://github.com/NousResearch/hermes-agent) (Nous Research) exposes an OpenAI-compatible HTTP API, so `HermesAgent` is a convenience subclass of `OpenAIAgent` that points the provider at your Hermes server and disables native structured output by default (a local Hermes server may not honor JSON-schema response formats). ```ts -import { HermesAgent } from "smithers-orchestrator"; +import { HermesAgent } from "smthrs"; const hermes = new HermesAgent({ baseURL: "http://127.0.0.1:5123/v1", // or set HERMES_BASE_URL @@ -545,7 +545,7 @@ export const claude = useCli > Sandboxed file and shell tools for AI agent tasks, with exact input schemas, security policies, and usage examples. ```ts -import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadata } from "smithers-orchestrator"; +import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadata } from "smthrs"; ``` `tools` bundles all five tools keyed by name: @@ -554,7 +554,7 @@ import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadat const { read, write, edit, grep, bash } = tools; ``` -The `smithers-orchestrator/tools` subpath also exports lower-level helpers for advanced integrations: +The `smthrs/tools` subpath also exports lower-level helpers for advanced integrations: | Export | Purpose | |---|---| @@ -600,7 +600,7 @@ Every invocation is logged to `_smithers_tool_calls`: `defineTool()` wraps custom [AI SDK](https://ai-sdk.dev) tools with Smithers runtime context, deterministic idempotency keys, and durable tool-call logging. ```ts -import { defineTool } from "smithers-orchestrator"; +import { defineTool } from "smthrs"; import { z } from "zod"; const placeOrder = defineTool({ @@ -701,7 +701,7 @@ Returns file contents as UTF-8. Throws `"File too large"` if size exceeds `maxOu ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, grep } from "smithers-orchestrator"; +import { read, grep } from "smthrs"; const codeAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -734,7 +734,7 @@ Returns `"ok"`. Throws `"Content too large"` if content exceeds `maxOutputBytes` ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { write, read } from "smithers-orchestrator"; +import { write, read } from "smthrs"; const writerAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -821,7 +821,7 @@ Local git commands (`git status`, `git diff`, `git log`) are allowed. ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash } from "smithers-orchestrator"; +import { bash } from "smthrs"; const devAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -845,7 +845,7 @@ Pass tools to an [AI SDK](https://ai-sdk.dev) agent and assign the agent to a [` ```tsx import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { createSmithers, read, write, edit, grep, bash, Task } from "smithers-orchestrator"; +import { createSmithers, read, write, edit, grep, bash, Task } from "smthrs"; import { z } from "zod"; const codeAgent = new Agent({ @@ -872,7 +872,7 @@ The full bundle works too: ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { tools } from "smithers-orchestrator"; +import { tools } from "smthrs"; const fullAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -891,7 +891,7 @@ const fullAgent = new Agent({ ```ts import { Effect } from "effect"; -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; const result = await Effect.runPromise(runWorkflow(workflow, { input: { file: "src/auth.ts" }, @@ -1025,7 +1025,7 @@ Smithers provides deterministic orchestration (workflow graph, approvals, retrie ### 1) PI as Workflow Agent ```tsx -import { PiAgent } from "smithers-orchestrator"; +import { PiAgent } from "smthrs"; const pi = new PiAgent({ provider: "openai", @@ -1045,13 +1045,13 @@ PI sessions are first-class hijack targets. `smithers hijack <runId> --target pi ### 2) PI Server Client -Drive Smithers server APIs from a PI extension or any Node process via `@smithers-orchestrator/pi-plugin`: +Drive Smithers server APIs from a PI extension or any Node process via `@smthrs/pi-plugin`: ```ts -import { runWorkflow, approve, streamEvents } from "@smithers-orchestrator/pi-plugin"; +import { runWorkflow, approve, streamEvents } from "@smthrs/pi-plugin"; ``` -The older `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extension` subpaths were removed; use the scoped package directly. +The older `smthrs/pi-plugin` and `smthrs/pi-extension` subpaths were removed; use the scoped package directly. ### 3) Hybrid: PI Extensibility + Smithers Orchestration @@ -1061,7 +1061,7 @@ The older `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extens Patterns: 1. PI skill-driven coding task inside a Smithers `<Task>`. -2. PI extension command that starts/resumes Smithers workflows via server API or `@smithers-orchestrator/pi-plugin`. +2. PI extension command that starts/resumes Smithers workflows via server API or `@smthrs/pi-plugin`. 3. Smithers workflow output persisted to SQLite and consumed by later PI-assisted tasks. ## Hijacking PI Sessions @@ -1084,7 +1084,7 @@ Session persistence: 1. Install PI CLI and add to `PATH`. 2. Configure PI credentials via env/config (prefer over CLI args for API keys). 3. Instantiate `PiAgent` with explicit options in workflows. -4. For server-driven workflows, use `@smithers-orchestrator/pi-plugin`. +4. For server-driven workflows, use `@smthrs/pi-plugin`. ```bash # Verify PI is installed @@ -1100,4 +1100,4 @@ pi --version ## Limitations -Smithers does not provide a chat interface for PI. Chat UI integration is the responsibility of the host application using `@smithers-orchestrator/pi-plugin`. +Smithers does not provide a chat interface for PI. Chat UI integration is the responsibility of the host application using `@smthrs/pi-plugin`. diff --git a/docs/references/smithers/docs/llms-memory.txt b/docs/references/smithers/docs/llms-memory.txt index 3ceb1a3c4..7d6efcf9c 100644 --- a/docs/references/smithers/docs/llms-memory.txt +++ b/docs/references/smithers/docs/llms-memory.txt @@ -13,7 +13,7 @@ Memory persists state **across runs**. Task outputs are per-run; memory is per-n ## Three layers ```ts -import { createMemoryStore } from "smithers-orchestrator/memory"; +import { createMemoryStore } from "smthrs/memory"; import { Database } from "bun:sqlite"; const store = createMemoryStore(new Database("smithers.db")); @@ -58,7 +58,7 @@ Pick the kind to match the lifetime: `workflow` is scoped to a workflow definiti Maintenance jobs you run periodically: ```ts -import { TtlGarbageCollector, TokenLimiter, Summarizer } from "smithers-orchestrator/memory"; +import { TtlGarbageCollector, TokenLimiter, Summarizer } from "smthrs/memory"; const gc = TtlGarbageCollector(); // expire facts past their TTL const limiter = TokenLimiter(4000); // keep history under token budget @@ -72,7 +72,7 @@ await summarizer.process(store); ## Inspect from the CLI ```bash -bunx smithers-orchestrator memory list workflow:code-review -w workflow.tsx +bunx smthrs memory list workflow:code-review -w workflow.tsx ``` The CLI currently exposes fact listing. Use the store API for writes, deletes, threads, messages, and TTL cleanup. diff --git a/docs/references/smithers/docs/llms-observability.txt b/docs/references/smithers/docs/llms-observability.txt index cb7ef4d1b..cbc3ffbcf 100644 --- a/docs/references/smithers/docs/llms-observability.txt +++ b/docs/references/smithers/docs/llms-observability.txt @@ -13,7 +13,7 @@ ## Quick start ```ts -import { startServer } from "smithers-orchestrator"; +import { startServer } from "smthrs"; import { drizzle } from "drizzle-orm/bun-sqlite"; const server = startServer({ @@ -78,8 +78,8 @@ Errors use the envelope `{ "error": { "code", "message", "details" } }`. Common Tools resolve relative to `rootDir`. The example below exposes a workflow that uses the built-in `bash` tool through the server; clients call it via `POST /v1/runs`. ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { Task, Workflow, createSmithers, bash } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Task, Workflow, createSmithers, bash } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -124,7 +124,7 @@ Serve mode starts a Hono-based HTTP server alongside a running workflow. Every r ## CLI ```bash -bunx smithers-orchestrator up workflow.tsx --serve --port 3000 --host 0.0.0.0 +bunx smthrs up workflow.tsx --serve --port 3000 --host 0.0.0.0 ``` | Flag | Default | Description | @@ -140,13 +140,13 @@ The process stays alive after the workflow completes so final state remains quer Detached mode: ```bash -bunx smithers-orchestrator up workflow.tsx --serve --port 8080 -d +bunx smthrs up workflow.tsx --serve --port 8080 -d ``` ## Programmatic ```ts -import { createServeApp } from "smithers-orchestrator/serve"; +import { createServeApp } from "smthrs/serve"; const app = createServeApp({ workflow, @@ -307,7 +307,7 @@ Unknown routes return `404` with code `NOT_FOUND`. ```bash # Start a workflow with serve mode -bunx smithers-orchestrator up workflow.tsx --serve --port 8080 --auth-token sk-secret +bunx smthrs up workflow.tsx --serve --port 8080 --auth-token sk-secret # Status curl http://localhost:8080/ -H "Authorization: Bearer sk-secret" @@ -336,8 +336,8 @@ curl http://localhost:8080/health ## Quick start ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { Gateway, Task, Workflow, createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Gateway, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -383,7 +383,7 @@ ws.onopen = () => ws.send(JSON.stringify({ Programmatic clients — bots, schedulers, dashboards, third-party UIs — talk to the Gateway through the typed client SDK over the same RPC and WebSocket API. For the full custom-UI guide (declarative queries, pushed updates, stale guards, reconnect/resume, backpressure, optimistic mutations, auth, vanilla JS + React hooks) see [Custom UIs](/integrations/custom-ui). ```ts -import { SmithersGatewayClient } from "smithers-orchestrator/gateway-client"; +import { SmithersGatewayClient } from "smthrs/gateway-client"; const gateway = new SmithersGatewayClient(); const workflows = await gateway.listWorkflows(); @@ -399,8 +399,8 @@ Gateway client exports: | Package | Exports | |---|---| -| `smithers-orchestrator/gateway-client` | `SmithersGatewayClient`, `SmithersGatewayConnection`, `GatewayRpcError`, `gatewayBackoffDelay`, RPC frame/type-map types, `GatewayUiBootConfig`, `SmithersGatewayClientOptions` | -| `smithers-orchestrator/gateway-react` | `SmithersGatewayProvider`, `createGatewayReactRoot`, `useGatewayRun`, `useGatewayRuns`, `useGatewayWorkflows`, `useGatewayApprovals`, `useGatewayNodeOutput`, `useGatewayRunEvents`, `useGatewayActions`, `useGatewayRpc`, `useSmithersGateway` | +| `smthrs/gateway-client` | `SmithersGatewayClient`, `SmithersGatewayConnection`, `GatewayRpcError`, `gatewayBackoffDelay`, RPC frame/type-map types, `GatewayUiBootConfig`, `SmithersGatewayClientOptions` | +| `smthrs/gateway-react` | `SmithersGatewayProvider`, `createGatewayReactRoot`, `useGatewayRun`, `useGatewayRuns`, `useGatewayWorkflows`, `useGatewayApprovals`, `useGatewayNodeOutput`, `useGatewayRunEvents`, `useGatewayActions`, `useGatewayRpc`, `useSmithersGateway` | ## RPC methods (TOON) @@ -760,20 +760,20 @@ For clients that read JSON config directly: "mcpServers": { "smithers": { "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"] + "args": ["smthrs", "--mcp"] } } } ``` -Project-scoped install (e.g. a monorepo where Smithers is a dev dependency — ensure `smithers-orchestrator` is in the local `package.json`): +Project-scoped install (e.g. a monorepo where Smithers is a dev dependency — ensure `smthrs` is in the local `package.json`): ```json { "mcpServers": { "smithers": { "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"] + "args": ["smthrs", "--mcp"] } } } diff --git a/docs/references/smithers/docs/llms-openapi.txt b/docs/references/smithers/docs/llms-openapi.txt index e316f832d..19a336e23 100644 --- a/docs/references/smithers/docs/llms-openapi.txt +++ b/docs/references/smithers/docs/llms-openapi.txt @@ -11,7 +11,7 @@ `createOpenApiTools` parses an OpenAPI 3.x spec and returns AI SDK tools — one per operation, with Zod schemas converted from the spec's JSON schemas. ```ts -import { createOpenApiTools } from "smithers-orchestrator/openapi"; +import { createOpenApiTools } from "smthrs/openapi"; const tools = await createOpenApiTools("./petstore.json", { baseUrl: "https://api.petstore.example.com", @@ -56,7 +56,7 @@ Pass the spec itself as the first argument to `createOpenApiTools(input, options ## CLI preview ```bash -bunx smithers-orchestrator openapi list ./api/openapi.yaml +bunx smthrs openapi list ./api/openapi.yaml ``` Lists every operationId, method, path, and summary — useful for auditing what an agent will be able to call before wiring it up. @@ -82,7 +82,7 @@ For each operation: ## Observability -Each tool call emits an `OpenApiToolCalled` event with `operationId`, `method`, `path`, `durationMs`, `status`. Visible via `bunx smithers-orchestrator events <run-id> --type openapi`. +Each tool call emits an `OpenApiToolCalled` event with `operationId`, `method`, `path`, `durationMs`, `status`. Visible via `bunx smthrs events <run-id> --type openapi`. ## Notes diff --git a/docs/references/smithers/docs/llms.txt b/docs/references/smithers/docs/llms.txt index b2849b48f..af292c7c6 100644 --- a/docs/references/smithers/docs/llms.txt +++ b/docs/references/smithers/docs/llms.txt @@ -44,6 +44,6 @@ Examples: ## Pointers -- npm: smithers-orchestrator +- npm: smthrs - github: github.com/smithersai/smithers - changelogs: docs/changelogs/ on the site (not duplicated in llms files) diff --git a/docs/references/smithers/docs/quickstart.mdx b/docs/references/smithers/docs/quickstart.mdx index 23db9fd1a..a56b21124 100644 --- a/docs/references/smithers/docs/quickstart.mdx +++ b/docs/references/smithers/docs/quickstart.mdx @@ -4,25 +4,25 @@ description: Scaffold and run a Smithers workflow in two commands. --- ```bash -bunx smithers-orchestrator init -bunx smithers-orchestrator init --template idea-to-tickets -bunx smithers-orchestrator workflow run implement --prompt "Add rate limiting" +bunx smthrs init +bunx smthrs init --template idea-to-tickets +bunx smthrs workflow run implement --prompt "Add rate limiting" ``` -`init` scaffolds `.smithers/` (workflows, prompts, components, agent config). Add `--template <id>` when you want the init result to include the selected starter command and follow-up notes. Run `bunx smithers-orchestrator starters` to browse template IDs. +`init` scaffolds `.smithers/` (workflows, prompts, components, agent config). Add `--template <id>` when you want the init result to include the selected starter command and follow-up notes. Run `bunx smthrs starters` to browse template IDs. Inspect the run: ```bash -bunx smithers-orchestrator ps -bunx smithers-orchestrator inspect <run-id> -bunx smithers-orchestrator logs <run-id> --tail 20 +bunx smthrs ps +bunx smthrs inspect <run-id> +bunx smthrs logs <run-id> --tail 20 ``` Resume after a crash: ```bash -bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true +bunx smthrs up workflow.tsx --run-id <run-id> --resume true ``` Prefer to let your agent drive? [Install the agent skill](/installation#install-the-agent-skill) and just ask for the outcome — your coding agent runs Smithers for you. diff --git a/docs/references/smithers/docs/recipes.mdx b/docs/references/smithers/docs/recipes.mdx index e669d5a22..945552ca6 100644 --- a/docs/references/smithers/docs/recipes.mdx +++ b/docs/references/smithers/docs/recipes.mdx @@ -5,7 +5,7 @@ description: Tight, reusable patterns. Copy, paste, adapt. Each recipe is a working snippet plus one line of context. They compose freely. -If you want a ready-to-run outcome before writing workflow code, start with [Starters](/starters) or run `bunx smithers-orchestrator starters`. +If you want a ready-to-run outcome before writing workflow code, start with [Starters](/starters) or run `bunx smthrs starters`. ## Implement → review loop @@ -146,7 +146,7 @@ One context boundary per logical operation, not per step. Splitting too finely l ## Per-agent least-privilege tools ```tsx -import { AnthropicAgent } from "smithers-orchestrator"; +import { AnthropicAgent } from "smthrs"; const analyst = new AnthropicAgent({ model, system: "Return JSON" }); // no tools const reviewer = new AnthropicAgent({ model, system: "...", tools: { read, grep } }); // read-only @@ -160,7 +160,7 @@ Match the tool surface to the role. External mutations must mark themselves and use the runtime idempotency key. ```tsx -import { defineTool } from "smithers-orchestrator/tools"; +import { defineTool } from "smthrs/tools"; const createTicket = defineTool({ name: "jira.create", @@ -245,7 +245,7 @@ Workflow logic factors out into hooks the same way React UI logic does. Smithers records a jj change ID (or git SHA) per attempt. Revert any attempt to its exact workspace state: ```bash -bunx smithers-orchestrator revert workflow.tsx --run-id <id> --node-id implement --attempt 1 +bunx smthrs revert workflow.tsx --run-id <id> --node-id implement --attempt 1 ``` Useful when an experiment leaves the worktree in a bad state. @@ -253,10 +253,10 @@ Useful when an experiment leaves the worktree in a bad state. ## Time travel: fork, replay, diff ```bash -bunx smithers-orchestrator timeline <run-id> --tree -bunx smithers-orchestrator diff <run-id> <node-id> -bunx smithers-orchestrator fork workflow.tsx --run-id <id> --frame 5 --reset-node analyze --label exp1 -bunx smithers-orchestrator replay workflow.tsx --run-id <id> --frame 5 --restore-vcs +bunx smthrs timeline <run-id> --tree +bunx smthrs diff <run-id> <node-id> +bunx smthrs fork workflow.tsx --run-id <id> --frame 5 --reset-node analyze --label exp1 +bunx smthrs replay workflow.tsx --run-id <id> --frame 5 --restore-vcs ``` Fork makes a child run without starting it (add `--run` to start immediately); replay also makes a child run but immediately resumes it. `--restore-vcs` checks out the original revision so re-execution sees the same source. @@ -264,7 +264,7 @@ Fork makes a child run without starting it (add `--run` to start immediately); r ## Scoring tasks ```tsx -import { schemaAdherenceScorer, latencyScorer, llmJudge } from "smithers-orchestrator/scorers"; +import { schemaAdherenceScorer, latencyScorer, llmJudge } from "smthrs/scorers"; <Task id="analyze" @@ -293,7 +293,7 @@ Scorers run after the task and never block. Sample expensive scorers with `ratio ``` ```bash -bunx smithers-orchestrator eval workflow.tsx --cases evals/smoke.jsonl --suite smoke --force +bunx smthrs eval workflow.tsx --cases evals/smoke.jsonl --suite smoke --force ``` Use eval suites when you need repeatable workflow-level checks. Assertions support `status`, `output` (exact match), and `outputContains` (partial match). Reports land in `.smithers/evals/<suite>.json`; the command exits non-zero on failures. @@ -311,7 +311,7 @@ Avoids unbounded SQLite growth in long-lived loops. ## Hot reload while authoring ```bash -bunx smithers-orchestrator up workflow.tsx --hot +bunx smthrs up workflow.tsx --hot ``` Edits to the workflow source apply on the next render frame without losing in-flight task state. Schema changes still require a fresh run. diff --git a/docs/references/smithers/docs/reference/errors.mdx b/docs/references/smithers/docs/reference/errors.mdx index d456b5fc1..96e48cc77 100644 --- a/docs/references/smithers/docs/reference/errors.mdx +++ b/docs/references/smithers/docs/reference/errors.mdx @@ -15,12 +15,12 @@ import { isKnownSmithersErrorCode, isSmithersError, knownSmithersErrorCodes, -} from "smithers-orchestrator"; +} from "smthrs"; import type { KnownSmithersErrorCode, SmithersError, SmithersErrorCode, -} from "smithers-orchestrator"; +} from "smthrs"; ``` Every built-in `SmithersErrorInstance` carries three pieces of documentation metadata: @@ -49,7 +49,7 @@ Use `KnownSmithersErrorCode` for an exhaustive switch over built-in Smithers cod ```ts import { Effect } from "effect"; -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; try { await Effect.runPromise(runWorkflow(workflow, { input: {} })); diff --git a/docs/references/smithers/docs/reference/package-configuration.mdx b/docs/references/smithers/docs/reference/package-configuration.mdx index f31d3879e..e1d41d1c3 100644 --- a/docs/references/smithers/docs/reference/package-configuration.mdx +++ b/docs/references/smithers/docs/reference/package-configuration.mdx @@ -1,6 +1,6 @@ --- title: Package Configuration -description: Reference for the smithers-orchestrator package exports, TypeScript configuration, and Bun preload setup. +description: Reference for the smthrs package exports, TypeScript configuration, and Bun preload setup. --- This page covers: CLI binary usage, subpath export map, TypeScript compiler options, Bun preload and test config, and npm scripts. @@ -15,88 +15,88 @@ Use the subpath form to import only the surface you need. | Import path | Entry file | Purpose | |---|---|---| -| `smithers-orchestrator` | `./src/index.js` | Core API: `createSmithers`, components, `runWorkflow`, `renderMdx`, errors | -| `smithers-orchestrator/gateway` | `./src/gateway.js` | Gateway server primitives from `@smithers-orchestrator/server/gateway` | -| `smithers-orchestrator/gateway-client` | `./src/gateway-client.js` | Typed client helpers from `@smithers-orchestrator/gateway-client` | -| `smithers-orchestrator/gateway-react` | `./src/gateway-react.js` | React hooks and providers for gateway-backed UIs | -| `smithers-orchestrator/sandbox` | `./src/sandbox.js` | Sandbox provider contracts, bundles, and execution helpers | -| `smithers-orchestrator/jsx-runtime` | `./src/jsx-runtime.js` | JSX runtime (auto-resolved by `jsxImportSource`) | -| `smithers-orchestrator/jsx-dev-runtime` | `./src/jsx-runtime.js` | JSX dev runtime (auto-resolved in dev mode) | -| `smithers-orchestrator/tools` | `./src/tools.js` | Tool sandbox: `defineTool`, `read`, `grep`, `bash`, `edit`, `write` | -| `smithers-orchestrator/server` | `./src/server.js` | HTTP server for run management and event streaming | -| `smithers-orchestrator/observability` | `./src/observability.js` | OpenTelemetry traces, metrics, and Prometheus integration | -| `smithers-orchestrator/mdx-plugin` | `./src/mdx-plugin.js` | Bun preload plugin for `.mdx` imports | -| `smithers-orchestrator/dom/renderer` | `./src/dom/renderer.js` | Internal renderer (advanced use) | -| `smithers-orchestrator/serve` | `./src/serve.js` | Single-workflow HTTP server via `createServeApp` | -| `smithers-orchestrator/scorers` | `./src/scorers.js` | Eval scorers: `createScorer`, `llmJudge`, `aggregateScores` | -| `smithers-orchestrator/memory` | `./src/memory.js` | Cross-run facts, message history, processors, and metrics | -| `smithers-orchestrator/openapi` | `./src/openapi.js` | Generate AI SDK tools from OpenAPI specs | -| `smithers-orchestrator/control-plane` | `./src/control-plane.js` | Organization, project, billing, usage, secret-reference, and audit primitives | - -The PI plugin is published as the separate `@smithers-orchestrator/pi-plugin` package. The old `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extension` subpaths are no longer exported. +| `smthrs` | `./src/index.js` | Core API: `createSmithers`, components, `runWorkflow`, `renderMdx`, errors | +| `smthrs/gateway` | `./src/gateway.js` | Gateway server primitives from `@smthrs/server/gateway` | +| `smthrs/gateway-client` | `./src/gateway-client.js` | Typed client helpers from `@smthrs/gateway-client` | +| `smthrs/gateway-react` | `./src/gateway-react.js` | React hooks and providers for gateway-backed UIs | +| `smthrs/sandbox` | `./src/sandbox.js` | Sandbox provider contracts, bundles, and execution helpers | +| `smthrs/jsx-runtime` | `./src/jsx-runtime.js` | JSX runtime (auto-resolved by `jsxImportSource`) | +| `smthrs/jsx-dev-runtime` | `./src/jsx-runtime.js` | JSX dev runtime (auto-resolved in dev mode) | +| `smthrs/tools` | `./src/tools.js` | Tool sandbox: `defineTool`, `read`, `grep`, `bash`, `edit`, `write` | +| `smthrs/server` | `./src/server.js` | HTTP server for run management and event streaming | +| `smthrs/observability` | `./src/observability.js` | OpenTelemetry traces, metrics, and Prometheus integration | +| `smthrs/mdx-plugin` | `./src/mdx-plugin.js` | Bun preload plugin for `.mdx` imports | +| `smthrs/dom/renderer` | `./src/dom/renderer.js` | Internal renderer (advanced use) | +| `smthrs/serve` | `./src/serve.js` | Single-workflow HTTP server via `createServeApp` | +| `smthrs/scorers` | `./src/scorers.js` | Eval scorers: `createScorer`, `llmJudge`, `aggregateScores` | +| `smthrs/memory` | `./src/memory.js` | Cross-run facts, message history, processors, and metrics | +| `smthrs/openapi` | `./src/openapi.js` | Generate AI SDK tools from OpenAPI specs | +| `smthrs/control-plane` | `./src/control-plane.js` | Organization, project, billing, usage, secret-reference, and audit primitives | + +The PI plugin is published as the separate `@smthrs/pi-plugin` package. The old `smthrs/pi-plugin` and `smthrs/pi-extension` subpaths are no longer exported. ## Workspace Packages -Most applications should import from `smithers-orchestrator`. The scoped workspace packages below are published for advanced integrations, custom clients, and framework development. +Most applications should import from `smthrs`. The scoped workspace packages below are published for advanced integrations, custom clients, and framework development. | Package | Primary surface | Related docs | |---|---|---| -| `smithers-orchestrator` | Public facade for workflow authoring, components, agents, tools, server helpers, memory, OpenAPI tools, scorers, and JSX runtime setup | This page, [Types](/reference/types) | -| `@smithers-orchestrator/cli` | CLI entrypoint, MCP server, local workflow pack, account registry commands, DevTools commands, cron, alerts, and server commands | [CLI Overview](/cli/overview), [MCP Server](/integrations/mcp-server) | -| `@smithers-orchestrator/accounts` | Subscription and API-key account registry helpers: `listAccounts`, `addAccount`, `removeAccount`, `getAccount`, `accountToProviderEnv` | [CLI Agents](/integrations/cli-agents) | -| `@smithers-orchestrator/agents` | AI SDK and CLI agent adapters, CLI capability reports, agent contracts, and tool capability registry | [CLI Agents](/integrations/cli-agents), [SDK Agents](/integrations/sdk-agents) | -| `@smithers-orchestrator/components` | JSX workflow components such as `Task`, `Workflow`, `Approval`, `Sandbox`, `Timer`, `Signal`, and control-flow components | [Components](/concepts/control-flow) | -| `@smithers-orchestrator/control-plane` | Durable organization, project, team, billing, usage, secret-reference, and audit primitives for hosted deployments | [Control Plane](/deployment/control-plane) | -| `@smithers-orchestrator/db` | SQLite/Drizzle adapter, table setup, run-state derivation, schema helpers, and output tables | [Data Model](/concepts/data-model), [Run State](/runtime/run-state) | -| `@smithers-orchestrator/devtools` | Snapshot, tree, diff, node lookup, task collection, and DevTools run-store helpers behind the CLI inspect commands | [Debugging](/guides/debugging), [CLI Overview](/cli/overview) | -| `@smithers-orchestrator/driver` | Runtime driver contracts: `RunOptions`, `RunResult`, `RunStatus`, `SmithersCtx`, outputs, task runtime, interop, and child process helpers | [Run Workflow](/runtime/run-workflow), [Execution Model](/concepts/execution-model) | -| `@smithers-orchestrator/engine` | Workflow rendering/execution API: `runWorkflow`, `renderFrame`, `workflow`, `Smithers`, `fragment`, signals, and Effect versioning | [Render Frame](/runtime/render-frame), [Run Workflow](/runtime/run-workflow) | -| `@smithers-orchestrator/errors` | Error definitions, known codes, JSON serialization, docs URLs, and type guards | [Errors](/reference/errors) | -| `@smithers-orchestrator/gateway` | Stable Gateway RPC contracts, auth scopes, deployment metadata, and generated OpenAPI schema | [Gateway](/integrations/gateway), [RPC](/rpc/launch-run) | -| `@smithers-orchestrator/gateway-client` | Browser/client SDK for Gateway RPC requests and event streams | [Gateway](/integrations/gateway) | -| `@smithers-orchestrator/gateway-react` | React hooks and root helpers for Gateway-backed UIs | [Gateway](/integrations/gateway) | -| `@smithers-orchestrator/graph` | Framework-neutral workflow graph model, XML nodes, task descriptors, and graph snapshots | [Planner Internals](/concepts/planner-internals), [Types](/reference/types) | -| `@smithers-orchestrator/jj-darwin-arm64` | Vendored jj (Jujutsu) binary for darwin-arm64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | -| `@smithers-orchestrator/jj-darwin-x64` | Vendored jj (Jujutsu) binary for darwin-x64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | -| `@smithers-orchestrator/jj-linux-arm64` | Vendored jj (Jujutsu) binary for linux-arm64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | -| `@smithers-orchestrator/jj-linux-x64` | Vendored jj (Jujutsu) binary for linux-x64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | -| `@smithers-orchestrator/jj-win32-x64` | Vendored jj (Jujutsu) binary for win32-x64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | -| `@smithers-orchestrator/memory` | Cross-run facts, message history, processors, namespaces, service layer, and metrics | [Memory](/concepts/memory), [Memory Quickstart](/guides/memory-quickstart) | -| `@smithers-orchestrator/observability` | Event types, logging, tracing, metrics, Prometheus rendering, and runtime observability layers | [Events](/runtime/events), [Event Types](/reference/event-types) | -| `@smithers-orchestrator/openapi` | OpenAPI parsing, operation extraction, AI SDK tool generation, schema conversion, and metrics | [OpenAPI Tools](/concepts/openapi-tools), [OpenAPI Quickstart](/guides/openapi-tools-quickstart) | -| `@smithers-orchestrator/pi-plugin` | PI extension runtime, views, API wrappers, and workflow inspection integration | [PI Integration](/integrations/pi-integration) | -| `@smithers-orchestrator/protocol` | Shared contracts, small value types, and protocol-level errors for cross-package use | [Types](/reference/types), [Errors](/reference/errors) | -| `@smithers-orchestrator/react-reconciler` | Custom React reconciler, host context, DOM renderer, DevTools preload, driver, and JSX runtime internals | [Why React](/why-react), [Render Frame](/runtime/render-frame) | -| `@smithers-orchestrator/sandbox` | Sandbox bundle, execute, and transport primitives used by the `Sandbox` component | [Sandbox](/components/sandbox) | -| `@smithers-orchestrator/scheduler` | Pure workflow state machine: task state, scheduler decisions, retry/cache policies, wait reasons, and workflow session services | [Workflow State](/concepts/workflow-state), [Suspend and Resume](/concepts/suspend-and-resume) | -| `@smithers-orchestrator/scorers` | Scorer definitions, LLM judges, batch execution, aggregation, persistence schema, and metrics | [Evals](/concepts/evals), [Evals Quickstart](/guides/evals-quickstart) | -| `@smithers-orchestrator/server` | HTTP, WebSocket, Gateway, cron, webhook, metrics, and single-workflow serving APIs | [Server](/integrations/server), [Serve](/integrations/serve) | -| `@smithers-orchestrator/smithers` | Cerebras chat PWA and workflow graph demo application | [CLI Overview](/cli/overview) | -| `@smithers-orchestrator/smithers-demo` | Interactive Smithers workflow generator demo with React Flow visualization | [CLI Overview](/cli/overview) | -| `@smithers-orchestrator/smithers-studio-2` | Next Smithers Studio UI shell for browsing and driving workflow runs | [CLI Overview](/cli/overview) | -| `@smithers-orchestrator/smithers-tui-demo` | Private React TUI demo app for terminal workflow interaction experiments | [CLI Overview](/cli/overview) | -| `@smithers-orchestrator/time-travel` | Snapshots, diffs, forks, replay, timelines, VCS tags, rewind locks/audits, and time-travel metrics | [Time Travel](/concepts/time-travel), [Time Travel Quickstart](/guides/time-travel-quickstart) | -| `@smithers-orchestrator/tool-context` | AsyncLocalStorage tool-execution context (run/node/idempotency keys, durability snapshot hook) shared by the engine and `smithers-orchestrator` without a dependency cycle | [Execution Model](/concepts/execution-model) | -| `@smithers-orchestrator/usage` | Account quota and rate-limit usage reporting for Smithers providers | [CLI Overview](/cli/overview) | -| `@smithers-orchestrator/vcs` | VCS discovery and jj workspace operations such as `runJj`, `workspaceAdd`, `workspaceList`, and pointer reverts | [VCS Helpers](/reference/vcs-helpers), [VCS Guide](/guides/vcs) | +| `smthrs` | Public facade for workflow authoring, components, agents, tools, server helpers, memory, OpenAPI tools, scorers, and JSX runtime setup | This page, [Types](/reference/types) | +| `@smthrs/cli` | CLI entrypoint, MCP server, local workflow pack, account registry commands, DevTools commands, cron, alerts, and server commands | [CLI Overview](/cli/overview), [MCP Server](/integrations/mcp-server) | +| `@smthrs/accounts` | Subscription and API-key account registry helpers: `listAccounts`, `addAccount`, `removeAccount`, `getAccount`, `accountToProviderEnv` | [CLI Agents](/integrations/cli-agents) | +| `@smthrs/agents` | AI SDK and CLI agent adapters, CLI capability reports, agent contracts, and tool capability registry | [CLI Agents](/integrations/cli-agents), [SDK Agents](/integrations/sdk-agents) | +| `@smthrs/components` | JSX workflow components such as `Task`, `Workflow`, `Approval`, `Sandbox`, `Timer`, `Signal`, and control-flow components | [Components](/concepts/control-flow) | +| `@smthrs/control-plane` | Durable organization, project, team, billing, usage, secret-reference, and audit primitives for hosted deployments | [Control Plane](/deployment/control-plane) | +| `@smthrs/db` | SQLite/Drizzle adapter, table setup, run-state derivation, schema helpers, and output tables | [Data Model](/concepts/data-model), [Run State](/runtime/run-state) | +| `@smthrs/devtools` | Snapshot, tree, diff, node lookup, task collection, and DevTools run-store helpers behind the CLI inspect commands | [Debugging](/guides/debugging), [CLI Overview](/cli/overview) | +| `@smthrs/driver` | Runtime driver contracts: `RunOptions`, `RunResult`, `RunStatus`, `SmithersCtx`, outputs, task runtime, interop, and child process helpers | [Run Workflow](/runtime/run-workflow), [Execution Model](/concepts/execution-model) | +| `@smthrs/engine` | Workflow rendering/execution API: `runWorkflow`, `renderFrame`, `workflow`, `Smithers`, `fragment`, signals, and Effect versioning | [Render Frame](/runtime/render-frame), [Run Workflow](/runtime/run-workflow) | +| `@smthrs/errors` | Error definitions, known codes, JSON serialization, docs URLs, and type guards | [Errors](/reference/errors) | +| `@smthrs/gateway` | Stable Gateway RPC contracts, auth scopes, deployment metadata, and generated OpenAPI schema | [Gateway](/integrations/gateway), [RPC](/rpc/launch-run) | +| `@smthrs/gateway-client` | Browser/client SDK for Gateway RPC requests and event streams | [Gateway](/integrations/gateway) | +| `@smthrs/gateway-react` | React hooks and root helpers for Gateway-backed UIs | [Gateway](/integrations/gateway) | +| `@smthrs/graph` | Framework-neutral workflow graph model, XML nodes, task descriptors, and graph snapshots | [Planner Internals](/concepts/planner-internals), [Types](/reference/types) | +| `@smthrs/jj-darwin-arm64` | Vendored jj (Jujutsu) binary for darwin-arm64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | +| `@smthrs/jj-darwin-x64` | Vendored jj (Jujutsu) binary for darwin-x64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | +| `@smthrs/jj-linux-arm64` | Vendored jj (Jujutsu) binary for linux-arm64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | +| `@smthrs/jj-linux-x64` | Vendored jj (Jujutsu) binary for linux-x64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | +| `@smthrs/jj-win32-x64` | Vendored jj (Jujutsu) binary for win32-x64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | [VCS Guide](/guides/vcs) | +| `@smthrs/memory` | Cross-run facts, message history, processors, namespaces, service layer, and metrics | [Memory](/concepts/memory), [Memory Quickstart](/guides/memory-quickstart) | +| `@smthrs/observability` | Event types, logging, tracing, metrics, Prometheus rendering, and runtime observability layers | [Events](/runtime/events), [Event Types](/reference/event-types) | +| `@smthrs/openapi` | OpenAPI parsing, operation extraction, AI SDK tool generation, schema conversion, and metrics | [OpenAPI Tools](/concepts/openapi-tools), [OpenAPI Quickstart](/guides/openapi-tools-quickstart) | +| `@smthrs/pi-plugin` | PI extension runtime, views, API wrappers, and workflow inspection integration | [PI Integration](/integrations/pi-integration) | +| `@smthrs/protocol` | Shared contracts, small value types, and protocol-level errors for cross-package use | [Types](/reference/types), [Errors](/reference/errors) | +| `@smthrs/react-reconciler` | Custom React reconciler, host context, DOM renderer, DevTools preload, driver, and JSX runtime internals | [Why React](/why-react), [Render Frame](/runtime/render-frame) | +| `@smthrs/sandbox` | Sandbox bundle, execute, and transport primitives used by the `Sandbox` component | [Sandbox](/components/sandbox) | +| `@smthrs/scheduler` | Pure workflow state machine: task state, scheduler decisions, retry/cache policies, wait reasons, and workflow session services | [Workflow State](/concepts/workflow-state), [Suspend and Resume](/concepts/suspend-and-resume) | +| `@smthrs/scorers` | Scorer definitions, LLM judges, batch execution, aggregation, persistence schema, and metrics | [Evals](/concepts/evals), [Evals Quickstart](/guides/evals-quickstart) | +| `@smthrs/server` | HTTP, WebSocket, Gateway, cron, webhook, metrics, and single-workflow serving APIs | [Server](/integrations/server), [Serve](/integrations/serve) | +| `@smthrs/smithers` | Cerebras chat PWA and workflow graph demo application | [CLI Overview](/cli/overview) | +| `@smthrs/smithers-demo` | Interactive Smithers workflow generator demo with React Flow visualization | [CLI Overview](/cli/overview) | +| `@smthrs/smithers-studio-2` | Next Smithers Studio UI shell for browsing and driving workflow runs | [CLI Overview](/cli/overview) | +| `@smthrs/smithers-tui-demo` | Private React TUI demo app for terminal workflow interaction experiments | [CLI Overview](/cli/overview) | +| `@smthrs/time-travel` | Snapshots, diffs, forks, replay, timelines, VCS tags, rewind locks/audits, and time-travel metrics | [Time Travel](/concepts/time-travel), [Time Travel Quickstart](/guides/time-travel-quickstart) | +| `@smthrs/tool-context` | AsyncLocalStorage tool-execution context (run/node/idempotency keys, durability snapshot hook) shared by the engine and `smthrs` without a dependency cycle | [Execution Model](/concepts/execution-model) | +| `@smthrs/usage` | Account quota and rate-limit usage reporting for Smithers providers | [CLI Overview](/cli/overview) | +| `@smthrs/vcs` | VCS discovery and jj workspace operations such as `runJj`, `workspaceAdd`, `workspaceList`, and pointer reverts | [VCS Helpers](/reference/vcs-helpers), [VCS Guide](/guides/vcs) | ### Usage ```ts // Core API -import { createSmithers, runWorkflow } from "smithers-orchestrator"; +import { createSmithers, runWorkflow } from "smthrs"; // Tools -import { defineTool, bash, read, write } from "smithers-orchestrator/tools"; +import { defineTool, bash, read, write } from "smthrs/tools"; // Scorers -import { createScorer, llmJudge } from "smithers-orchestrator/scorers"; +import { createScorer, llmJudge } from "smthrs/scorers"; // MDX plugin (in preload.ts) -import { mdxPlugin } from "smithers-orchestrator/mdx-plugin"; +import { mdxPlugin } from "smthrs/mdx-plugin"; // Control-plane primitives -import { ControlPlaneStore } from "smithers-orchestrator/control-plane"; +import { ControlPlaneStore } from "smthrs/control-plane"; ``` ## TypeScript Configuration @@ -107,42 +107,42 @@ import { ControlPlaneStore } from "smithers-orchestrator/control-plane"; { "compilerOptions": { "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator" + "jsxImportSource": "smthrs" } } ``` -This tells TypeScript to resolve JSX transforms from `smithers-orchestrator/jsx-runtime` instead of `react/jsx-runtime`. The Smithers JSX runtime re-exports React's runtime, so component behavior is identical. This setting enables proper type resolution for Smithers workflow components. +This tells TypeScript to resolve JSX transforms from `smthrs/jsx-runtime` instead of `react/jsx-runtime`. The Smithers JSX runtime re-exports React's runtime, so component behavior is identical. This setting enables proper type resolution for Smithers workflow components. See [JSX Installation](/jsx/installation) for the complete TypeScript setup. ### Path Aliases -When developing inside the `smithers-orchestrator` monorepo, the root `tsconfig.json` defines path aliases so source imports resolve without a build step: +When developing inside the `smthrs` monorepo, the root `tsconfig.json` defines path aliases so source imports resolve without a build step: ```jsonc "paths": { - "smithers-orchestrator": ["./packages/smithers/src/index.js"], - "smithers-orchestrator/jsx-runtime": ["./packages/smithers/src/jsx-runtime.js"], - "smithers-orchestrator/jsx-dev-runtime": ["./packages/smithers/src/jsx-runtime.js"], - "smithers-orchestrator/tools": ["./packages/smithers/src/tools.js"], - "smithers-orchestrator/*": [ + "smthrs": ["./packages/smithers/src/index.js"], + "smthrs/jsx-runtime": ["./packages/smithers/src/jsx-runtime.js"], + "smthrs/jsx-dev-runtime": ["./packages/smithers/src/jsx-runtime.js"], + "smthrs/tools": ["./packages/smithers/src/tools.js"], + "smthrs/*": [ "./packages/smithers/src/*.js", "./packages/smithers/src/*/index.js" ], - "smithers-orchestrator/scorers": ["./packages/scorers/src/index.js"], - "@smithers-orchestrator/agents": ["./packages/agents/src/index.js"], - "@smithers-orchestrator/gateway-client": ["./packages/gateway-client/src/index.ts"], - "@smithers-orchestrator/gateway-react": ["./packages/gateway-react/src/index.ts"], - "@smithers-orchestrator/pi-plugin": ["./packages/pi-plugin/src/index.ts"], - "@smithers-orchestrator/server": ["./packages/server/src/index.js"] + "smthrs/scorers": ["./packages/scorers/src/index.js"], + "@smthrs/agents": ["./packages/agents/src/index.js"], + "@smthrs/gateway-client": ["./packages/gateway-client/src/index.ts"], + "@smthrs/gateway-react": ["./packages/gateway-react/src/index.ts"], + "@smthrs/pi-plugin": ["./packages/pi-plugin/src/index.ts"], + "@smthrs/server": ["./packages/server/src/index.js"] // The root tsconfig includes the same style of alias for each workspace package. } ``` -The root package is a private `smithers-monorepo`; `smithers-orchestrator` resolves to `packages/smithers`. +The root package is a private `smithers-monorepo`; `smthrs` resolves to `packages/smithers`. -**End users do not need path aliases** — only framework developers do. Installing `smithers-orchestrator` as a dependency lets Node/Bun module resolution handle import paths automatically. +**End users do not need path aliases** — only framework developers do. Installing `smthrs` as a dependency lets Node/Bun module resolution handle import paths automatically. ### Local Type Root Shims @@ -189,7 +189,7 @@ Defined in the root `package.json` for development: | Script | Command | Purpose | |---|---|---| | `typecheck` | `tsc --noEmit` | Type-check the `src/` and `tests/` trees against `tsconfig.json` | -| `typecheck:examples` | `tsc -p examples/tsconfig.json --noEmit` | Type-check example files against a separate config that maps `smithers-orchestrator` to `examples-entry.js` | +| `typecheck:examples` | `tsc -p examples/tsconfig.json --noEmit` | Type-check example files against a separate config that maps `smthrs` to `examples-entry.js` | | `lint` | `oxlint ... packages/*/src packages/*/tests` | Lint package source and tests with oxlint | | `lint:fix` | `oxlint ... --fix --fix-suggestions packages/*/src packages/*/tests` | Apply supported oxlint fixes | | `cli` | `bun run apps/cli/src/index.js` | Run the local development CLI entrypoint | diff --git a/docs/references/smithers/docs/reference/types.mdx b/docs/references/smithers/docs/reference/types.mdx index b10ba66d3..a04befa88 100644 --- a/docs/references/smithers/docs/reference/types.mdx +++ b/docs/references/smithers/docs/reference/types.mdx @@ -1,9 +1,9 @@ --- title: Types -description: Public TypeScript surface for smithers-orchestrator. +description: Public TypeScript surface for smthrs. --- -One source of truth: `tsc --emitDeclarationOnly` would produce something close to this. Import these types from `smithers-orchestrator` unless noted otherwise. +One source of truth: `tsc --emitDeclarationOnly` would produce something close to this. Import these types from `smthrs` unless noted otherwise. Major sections at a glance: - **Workflow / Context** — `SmithersWorkflow`, `SmithersCtx`, `RunOptions`, `RunResult` — the entry points for defining and running workflows. @@ -11,7 +11,7 @@ Major sections at a glance: - **Component props** — `WorkflowProps`, `ApprovalProps`, `SignalProps`, `LoopProps`, etc. — all JSX component interfaces. - **Errors** — `SmithersError`, `KnownSmithersErrorCode` — typed error codes; see [Errors](/reference/errors) for descriptions. - **Server / Gateway** — `ServerOptions`, `GatewayOptions`, `GatewayAuthConfig` — self-hosting configuration. -- **Scorers / Memory / OpenAPI / Observability** — sub-path imports (`smithers-orchestrator/scorers`, `/memory`, `/openapi`, `/observability`). +- **Scorers / Memory / OpenAPI / Observability** — sub-path imports (`smthrs/scorers`, `/memory`, `/openapi`, `/observability`). ```ts // ============================================================================= @@ -622,7 +622,7 @@ type GatewayOptions = { }; // ============================================================================= -// Scorers (smithers-orchestrator/scorers) +// Scorers (smthrs/scorers) // ============================================================================= type ScoreResult = { score: number; reason?: string; meta?: Record<string, unknown> }; @@ -647,7 +647,7 @@ type CreateScorerConfig = { }; // ============================================================================= -// Memory (smithers-orchestrator/memory) +// Memory (smthrs/memory) // ============================================================================= type MemoryFact = { namespace: string; key: string; valueJson: string; schemaSig?: string | null; createdAtMs: number; updatedAtMs: number; ttlMs?: number | null }; @@ -680,7 +680,7 @@ type MemoryStore = { }; // ============================================================================= -// OpenAPI tools (smithers-orchestrator/openapi) +// OpenAPI tools (smthrs/openapi) // ============================================================================= type OpenApiAuth = @@ -725,7 +725,7 @@ type CreateSmithersApi<Schema = any> = { }; // ============================================================================= -// Observability (smithers-orchestrator/observability) +// Observability (smthrs/observability) // ============================================================================= type SmithersLogFormat = "json" | "pretty"; @@ -734,4 +734,4 @@ type SmithersObservabilityOptions = { service?: SmithersObservabilityService; lo type ResolvedSmithersObservabilityOptions = SmithersObservabilityOptions & { metricsPort?: number; metricsPath?: string }; ``` -For canonical, machine-checked types, install `smithers-orchestrator` and use editor go-to-definition. For runtime errors, see [Errors](/reference/errors). +For canonical, machine-checked types, install `smthrs` and use editor go-to-definition. For runtime errors, see [Errors](/reference/errors). diff --git a/docs/references/smithers/docs/reference/vcs-helpers.mdx b/docs/references/smithers/docs/reference/vcs-helpers.mdx index b68f6e722..fc878c305 100644 --- a/docs/references/smithers/docs/reference/vcs-helpers.mdx +++ b/docs/references/smithers/docs/reference/vcs-helpers.mdx @@ -1,6 +1,6 @@ --- title: VCS Helper Reference -description: Public JJ helper APIs exported by smithers-orchestrator for repo detection, snapshot inspection, and workspace management. +description: Public JJ helper APIs exported by smthrs for repo detection, snapshot inspection, and workspace management. --- Smithers exports a small JJ helper surface for applications that inspect or manage Jujutsu state directly. @@ -22,7 +22,7 @@ import { workspaceAdd, workspaceList, workspaceClose, -} from "smithers-orchestrator"; +} from "smthrs"; ``` ## `runJj(args, opts?)` diff --git a/docs/references/smithers/docs/runtime/events.mdx b/docs/references/smithers/docs/runtime/events.mdx index e4d2b87fc..78f78d864 100644 --- a/docs/references/smithers/docs/runtime/events.mdx +++ b/docs/references/smithers/docs/runtime/events.mdx @@ -8,7 +8,7 @@ description: Subscribe to lifecycle events. Full event union lives in Types. ## Subscribe via `onProgress` ```ts -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; import { Effect } from "effect"; import workflow from "./workflow"; @@ -35,8 +35,8 @@ jq -r .type .smithers/executions/<run-id>/logs/stream.ndjson | sort | uniq -c | Or with the CLI: ```bash -bunx smithers-orchestrator events <run-id> --json -bunx smithers-orchestrator events <run-id> --type tool-call --node analyze +bunx smthrs events <run-id> --json +bunx smthrs events <run-id> --type tool-call --node analyze ``` ## Common fields @@ -51,7 +51,7 @@ Every event includes `type`, `runId`, `timestampMs`. Node-scoped events add `nod ## Event categories -Used by `bunx smithers-orchestrator events --type <category>` and the metrics layer. +Used by `bunx smthrs events --type <category>` and the metrics layer. | Category | Events | |---|---| @@ -84,4 +84,4 @@ Used by `bunx smithers-orchestrator events --type <category>` and the metrics la | `ApprovalGranted` / `ApprovalDenied` | Approval counters | | `TokenUsageReported` | Token usage counters per model/agent | -`trackSmithersEvent` from `smithers-orchestrator/observability` exposes this mapping for custom integrations. See [Observability](/guides/monitoring-logs) for the full OTLP/Prometheus setup. +`trackSmithersEvent` from `smthrs/observability` exposes this mapping for custom integrations. See [Observability](/guides/monitoring-logs) for the full OTLP/Prometheus setup. diff --git a/docs/references/smithers/docs/runtime/render-frame.mdx b/docs/references/smithers/docs/runtime/render-frame.mdx index b758854b7..22e8f68bf 100644 --- a/docs/references/smithers/docs/runtime/render-frame.mdx +++ b/docs/references/smithers/docs/runtime/render-frame.mdx @@ -6,8 +6,8 @@ description: Render a workflow tree to a GraphSnapshot without executing. Use `renderFrame` to preview the task graph — for CI validation, graph-inspection UIs, or dry-run checks — without executing or persisting anything. `runId` and `iteration` are arbitrary strings used only for snapshot identity. ```ts -import { renderFrame } from "smithers-orchestrator"; -import { SmithersCtx } from "@smithers-orchestrator/driver"; +import { renderFrame } from "smthrs"; +import { SmithersCtx } from "@smthrs/driver"; import { Effect } from "effect"; const ctx = new SmithersCtx({ runId: "preview", iteration: 0, input: { task: "preview" }, outputs: {} }); diff --git a/docs/references/smithers/docs/runtime/revert.mdx b/docs/references/smithers/docs/runtime/revert.mdx index f4ab45078..efd89be39 100644 --- a/docs/references/smithers/docs/runtime/revert.mdx +++ b/docs/references/smithers/docs/runtime/revert.mdx @@ -6,7 +6,7 @@ description: Restore the workspace to a previous task attempt's filesystem state Each successful task attempt captures the current [JJ](https://jj-vcs.github.io/jj/) change ID into `_smithers_attempts.jj_pointer`. `revert` restores the workspace to that state and discards any graph snapshots recorded after the attempt began, so the run's timeline rolls back to the point-in-time of that attempt. ```bash -bunx smithers-orchestrator revert workflow.tsx \ +bunx smthrs revert workflow.tsx \ --run-id <id> --node-id <node> [--attempt N=1] [--iteration N=0] ``` @@ -21,7 +21,7 @@ Revert restores files only — it doesn't alter JJ history; the restoration crea ## Programmatic ```ts -import { revertToAttempt } from "smithers-orchestrator"; +import { revertToAttempt } from "smthrs"; const result = await revertToAttempt(adapter, { runId: "abc123", diff --git a/docs/references/smithers/docs/runtime/run-state.mdx b/docs/references/smithers/docs/runtime/run-state.mdx index 97a38b9fe..998f24805 100644 --- a/docs/references/smithers/docs/runtime/run-state.mdx +++ b/docs/references/smithers/docs/runtime/run-state.mdx @@ -87,7 +87,7 @@ Terminal states (`succeeded`, `failed`, `cancelled`) carry neither. ## computeRunState ```ts -import { computeRunState } from "@smithers-orchestrator/db/runState"; +import { computeRunState } from "@smthrs/db/runState"; const view = await computeRunState(adapter, runId); view.state; // "running" | ... @@ -103,7 +103,7 @@ not run heuristics. when you already have the rows in memory: ```ts -import { deriveRunState } from "@smithers-orchestrator/db/runState"; +import { deriveRunState } from "@smthrs/db/runState"; const view = deriveRunState({ run, diff --git a/docs/references/smithers/docs/runtime/run-workflow.mdx b/docs/references/smithers/docs/runtime/run-workflow.mdx index eb9ecd89e..6399be48a 100644 --- a/docs/references/smithers/docs/runtime/run-workflow.mdx +++ b/docs/references/smithers/docs/runtime/run-workflow.mdx @@ -1,10 +1,10 @@ --- title: runWorkflow -description: Programmatic entry point. Equivalent to `bunx smithers-orchestrator up`. +description: Programmatic entry point. Equivalent to `bunx smthrs up`. --- ```ts -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; import { Effect } from "effect"; const result = await Effect.runPromise(runWorkflow(workflow, { @@ -52,7 +52,7 @@ All in-flight attempts are marked cancelled and `NodeCancelled` events are emitt ## Hijack handoff -If a CLI hijack happens mid-run (`bunx smithers-orchestrator hijack <id>`), the run ends `"cancelled"` and the latest attempt metadata stores `hijackHandoff`. On `resume: true`, Smithers waits for a safe handoff point and continues with the persisted CLI session id (see [CLI Agents](/integrations/cli-agents)) or the persisted message history (SDK agents). +If a CLI hijack happens mid-run (`bunx smthrs hijack <id>`), the run ends `"cancelled"` and the latest attempt metadata stores `hijackHandoff`. On `resume: true`, Smithers waits for a safe handoff point and continues with the persisted CLI session id (see [CLI Agents](/integrations/cli-agents)) or the persisted message history (SDK agents). ## `result.output` diff --git a/docs/references/smithers/docs/starters.mdx b/docs/references/smithers/docs/starters.mdx index f1c4f70d0..2ec7d564c 100644 --- a/docs/references/smithers/docs/starters.mdx +++ b/docs/references/smithers/docs/starters.mdx @@ -6,19 +6,19 @@ description: Choose a plain-English outcome and copy the Smithers command. Smithers ships with starter workflows for when you want a result before your agent writes any workflow code. Browse the starter gallery from any repo: ```bash -bunx smithers-orchestrator starters +bunx smthrs starters ``` First-time setup: ```bash -bunx smithers-orchestrator init --add-agents +bunx smthrs init --add-agents ``` Or initialize with guided next steps for one template: ```bash -bunx smithers-orchestrator init --template idea-to-tickets +bunx smthrs init --template idea-to-tickets ``` Template IDs: @@ -27,35 +27,35 @@ Pass any ID from this table to `init --template <id>` to scaffold that starter. | Starter | Best for | Workflow | Command | | --- | --- | --- | --- | -| `idea-to-prd` | founders, product | `write-a-prd` | `bunx smithers-orchestrator init --template idea-to-prd` | -| `idea-to-tickets` | founders, product, operations, engineering | `tickets-create` | `bunx smithers-orchestrator init --template idea-to-tickets` | -| `launch-checklist` | launch owners and operators | `plan` | `bunx smithers-orchestrator init --template launch-checklist` | -| `customer-incident` | support escalations | `debug` | `bunx smithers-orchestrator init --template customer-incident` | -| `nontechnical-research` | before-build decisions | `research` | `bunx smithers-orchestrator init --template nontechnical-research` | -| `requirements-interview` | vague stakeholder requests | `grill-me` | `bunx smithers-orchestrator init --template requirements-interview` | -| `quality-audit` | release readiness | `audit` | `bunx smithers-orchestrator init --template quality-audit` | -| `test-coverage` | regression prevention | `improve-test-coverage` | `bunx smithers-orchestrator init --template test-coverage` | -| `ship-a-change` | focused product improvements | `research-plan-implement` | `bunx smithers-orchestrator init --template ship-a-change` | -| `mission-mode` | larger approved milestones | `mission` | `bunx smithers-orchestrator init --template mission-mode` | +| `idea-to-prd` | founders, product | `write-a-prd` | `bunx smthrs init --template idea-to-prd` | +| `idea-to-tickets` | founders, product, operations, engineering | `tickets-create` | `bunx smthrs init --template idea-to-tickets` | +| `launch-checklist` | launch owners and operators | `plan` | `bunx smthrs init --template launch-checklist` | +| `customer-incident` | support escalations | `debug` | `bunx smthrs init --template customer-incident` | +| `nontechnical-research` | before-build decisions | `research` | `bunx smthrs init --template nontechnical-research` | +| `requirements-interview` | vague stakeholder requests | `grill-me` | `bunx smthrs init --template requirements-interview` | +| `quality-audit` | release readiness | `audit` | `bunx smthrs init --template quality-audit` | +| `test-coverage` | regression prevention | `improve-test-coverage` | `bunx smthrs init --template test-coverage` | +| `ship-a-change` | focused product improvements | `research-plan-implement` | `bunx smthrs init --template ship-a-change` | +| `mission-mode` | larger approved milestones | `mission` | `bunx smthrs init --template mission-mode` | Each detailed starter prints: - What outcome to expect - What context to gather before running -- The exact `bunx smithers-orchestrator workflow run ...` command +- The exact `bunx smthrs workflow run ...` command - Useful follow-up commands - When not to use that starter Filter by audience or goal: ```bash -bunx smithers-orchestrator starters --audience product -bunx smithers-orchestrator starters --goal quality -bunx smithers-orchestrator starters --workflow debug +bunx smthrs starters --audience product +bunx smthrs starters --goal quality +bunx smthrs starters --workflow debug ``` Use JSON when another tool needs the catalog: ```bash -bunx smithers-orchestrator starters --format json +bunx smthrs starters --format json ``` diff --git a/docs/references/smithers/docs/tour.mdx b/docs/references/smithers/docs/tour.mdx index 43ec4991a..4582bcf69 100644 --- a/docs/references/smithers/docs/tour.mdx +++ b/docs/references/smithers/docs/tour.mdx @@ -8,8 +8,8 @@ A code-review workflow built one capability at a time. Each step is a diff again ## 1. Install and scaffold ```bash -bunx smithers-orchestrator init -bun add smithers-orchestrator ai @ai-sdk/anthropic zod +bunx smthrs init +bun add smthrs ai @ai-sdk/anthropic zod bun add -d typescript @types/bun export ANTHROPIC_API_KEY="sk-ant-..." ``` @@ -25,7 +25,7 @@ A minimal `tsconfig.json`: "module": "ESNext", "moduleResolution": "bundler", "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", + "jsxImportSource": "smthrs", "strict": true, "noEmit": true, "skipLibCheck": true @@ -38,8 +38,8 @@ A minimal `tsconfig.json`: ## 2. One-task workflow ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -62,14 +62,14 @@ export default smithers((ctx) => ( This Task has no `agent`, just a literal value. Run it. ```bash -bunx smithers-orchestrator up workflow.tsx --input '{"name":"world"}' +bunx smthrs up workflow.tsx --input '{"name":"world"}' ``` Inspect: ```bash -bunx smithers-orchestrator ps # find the run id -bunx smithers-orchestrator inspect <run-id> # structured state +bunx smthrs ps # find the run id +bunx smthrs inspect <run-id> # structured state sqlite3 smithers.db "SELECT * FROM greeting;" # the persisted output ``` @@ -78,8 +78,8 @@ sqlite3 smithers.db "SELECT * FROM greeting;" # the persisted output Replace the literal Task with an agent Task whose output is structured. ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task, AnthropicAgent } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task, AnthropicAgent } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -117,8 +117,8 @@ The runtime injects a JSON-schema description of `outputs.analysis` into the pro Tasks see each other's outputs through `ctx.outputMaybe(...)`. An incomplete upstream returns `undefined`; on the next render frame the upstream output appears and the downstream Task mounts. ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task, AnthropicAgent } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task, AnthropicAgent } from "smthrs"; import { z } from "zod"; const AnalysisSchema = z.object({ @@ -193,7 +193,7 @@ Same shape works for branching, parallel groups, and loops: Pause for a human. The runtime persists the pending decision and exits cleanly; an operator approves or denies through the CLI; resume picks up from the gate. ```tsx -import { Approval } from "smithers-orchestrator"; +import { Approval } from "smthrs"; {analysis ? ( <Approval @@ -219,10 +219,10 @@ import { Approval } from "smithers-orchestrator"; Operator side: ```bash -bunx smithers-orchestrator ps --status waiting-approval # find paused runs -bunx smithers-orchestrator inspect <run-id> # see the request -bunx smithers-orchestrator approve <run-id> --node confirm-fix --by alice -bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true +bunx smthrs ps --status waiting-approval # find paused runs +bunx smthrs inspect <run-id> # see the request +bunx smthrs approve <run-id> --node confirm-fix --by alice +bunx smthrs up workflow.tsx --run-id <run-id> --resume true ``` `onDeny` controls behavior on rejection: `"fail"` aborts the run, `"continue"` proceeds without the approved branch, `"skip"` skips the gated tasks. @@ -232,10 +232,10 @@ bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true Every completed task's output sits in SQLite. A crash, kill, or restart loses no work — the next run with `--resume true` skips finished tasks. ```bash -bunx smithers-orchestrator up workflow.tsx --input '{"repo":"."}' --run-id review-1 +bunx smthrs up workflow.tsx --input '{"repo":"."}' --run-id review-1 # ...analyze finishes, fix is mid-flight, you Ctrl+C -bunx smithers-orchestrator up workflow.tsx --run-id review-1 --resume true +bunx smthrs up workflow.tsx --run-id review-1 --resume true # analyze is skipped (already in DB), fix re-runs from scratch (was incomplete) ``` @@ -244,14 +244,14 @@ In-flight attempts are marked stale and re-tried; finished tasks are not. Resume For unattended recovery, run the supervisor: ```bash -bunx smithers-orchestrator supervise --interval 30s --stale-threshold 1m +bunx smthrs supervise --interval 30s --stale-threshold 1m ``` It auto-resumes runs whose owner process died. ## What you skipped (and where to find it) -- **Time travel** (replay a frame, fork a run, diff two runs): `bunx smithers-orchestrator replay|fork|diff|timeline` — see [How It Works → Time travel](/how-it-works#time-travel). +- **Time travel** (replay a frame, fork a run, diff two runs): `bunx smthrs replay|fork|diff|timeline` — see [How It Works → Time travel](/how-it-works#time-travel). - **Scorers** (attach evaluators to Tasks): see [Recipes → Scoring tasks](/recipes#scoring-tasks). - **Memory** (cross-run facts and message history): see [llms-memory.txt](/llms-memory.txt). - **RAG**, **voice**, **OpenAPI tools**: opt-in fragments — see the index in [llms.txt](/llms.txt). diff --git a/docs/references/smithers/docs/why/background-agents.mdx b/docs/references/smithers/docs/why/background-agents.mdx index dccc1dbf6..3052654af 100644 --- a/docs/references/smithers/docs/why/background-agents.mdx +++ b/docs/references/smithers/docs/why/background-agents.mdx @@ -80,7 +80,7 @@ Smithers exists to be that layer. Underneath the JSX surface above is an Effect.ts runtime. For users who already think in `Effect.gen`, Smithers exposes a slightly lower-level [Effect API](/effect/overview) that gives full access to the substrate. The same review workflow: ```ts -import { Smithers } from "smithers-orchestrator"; +import { Smithers } from "smthrs"; import { Effect, Schema } from "effect"; const G = Smithers.workflow({ @@ -286,4 +286,4 @@ The substrate doesn't change. The authoring surface has to be legible to agents > Background agents aren't coming. They're here. The only question is whether your infrastructure is ready to let them run, or whether you're about to rebuild it again. -Our answer is the rest of these docs. Durable steps with retries by default. Prometheus and SQLite observability with no setup. Approval, Signal, HumanTask, Sandbox. Named composition components on top of the substrate, not in place of it. State-of-the-art default workflows from `bunx smithers-orchestrator init` ([Kanban](/workflows/kanban), [Mission](/workflows/mission), [Research-Plan-Implement](/workflows/research-plan-implement), [Grill-Me](/workflows/grill-me)) you can use today and fork tomorrow. A managed hub if you don't want to run the dashboard yourself. +Our answer is the rest of these docs. Durable steps with retries by default. Prometheus and SQLite observability with no setup. Approval, Signal, HumanTask, Sandbox. Named composition components on top of the substrate, not in place of it. State-of-the-art default workflows from `bunx smthrs init` ([Kanban](/workflows/kanban), [Mission](/workflows/mission), [Research-Plan-Implement](/workflows/research-plan-implement), [Grill-Me](/workflows/grill-me)) you can use today and fork tomorrow. A managed hub if you don't want to run the dashboard yourself. diff --git a/docs/references/smithers/docs/why/durable-open-orchestration.mdx b/docs/references/smithers/docs/why/durable-open-orchestration.mdx index 1cca3acad..bc6a60700 100644 --- a/docs/references/smithers/docs/why/durable-open-orchestration.mdx +++ b/docs/references/smithers/docs/why/durable-open-orchestration.mdx @@ -147,7 +147,7 @@ This is the claim a skeptic should test first, so we will be specific. The same </Frame> ```bash -bunx smithers-orchestrator init # scaffold the workflow pack +bunx smthrs init # scaffold the workflow pack smithers up workflow.tsx --serve --metrics # HTTP API, SSE stream, Prometheus smithers observability up # Grafana, Prometheus, Tempo, one command ``` diff --git a/docs/references/smithers/docs/workflows/audit.mdx b/docs/references/smithers/docs/workflows/audit.mdx index 8dd0a47d2..68b63cc4a 100644 --- a/docs/references/smithers/docs/workflows/audit.mdx +++ b/docs/references/smithers/docs/workflows/audit.mdx @@ -10,7 +10,7 @@ description: Audit feature groups for gaps and follow-up work. ``` ```bash -bunx smithers-orchestrator workflow run audit \ +bunx smthrs workflow run audit \ --input '{"features":{"GATEWAY":["GATEWAY_RPC_LIST_RUNS"]},"focus":"test coverage"}' ``` diff --git a/docs/references/smithers/docs/workflows/backpressure-plan.mdx b/docs/references/smithers/docs/workflows/backpressure-plan.mdx index dd5072db3..b987dc4dc 100644 --- a/docs/references/smithers/docs/workflows/backpressure-plan.mdx +++ b/docs/references/smithers/docs/workflows/backpressure-plan.mdx @@ -10,7 +10,7 @@ or running an automation so every "done" claim has to be proven by evidence inst of an agent declaring victory and moving on. ```bash -bunx smithers-orchestrator workflow run backpressure-plan \ +bunx smthrs workflow run backpressure-plan \ --prompt "The /login endpoint returns valid JSON, rejects bad credentials with 401, and stays under 200ms p95" ``` diff --git a/docs/references/smithers/docs/workflows/context-doctor.mdx b/docs/references/smithers/docs/workflows/context-doctor.mdx index 777147e01..0b2bb9412 100644 --- a/docs/references/smithers/docs/workflows/context-doctor.mdx +++ b/docs/references/smithers/docs/workflows/context-doctor.mdx @@ -11,7 +11,7 @@ for it before handing a contract to an agent, to catch missing inputs, ungated side effects, or absent acceptance criteria up front. ```bash -bunx smithers-orchestrator workflow run context-doctor \ +bunx smthrs workflow run context-doctor \ --input '{"contract":"{\"goal\":\"Add CSP headers\",\"acceptanceCriteria\":[{\"text\":\"headers present\",\"blocking\":true,\"verification\":\"curl -I\"}],\"inputs\":[{\"name\":\"repo\",\"required\":true,\"source\":\"arg\"}],\"sideEffects\":[{\"name\":\"deploy\",\"approval\":true}],\"outputSpec\":\"patch\",\"reportSpec\":\"summary\"}"}' ``` @@ -39,8 +39,8 @@ bunx smithers-orchestrator workflow run context-doctor \ ## Monitor it ```bash -bunx smithers-orchestrator workflow run context-doctor --input '{"contract":"…"}' -d # detach -bunx smithers-orchestrator ps # active / paused / recent -bunx smithers-orchestrator logs <runId> -f # follow events -bunx smithers-orchestrator output <runId> --node check # inspect the deterministic diagnosis +bunx smthrs workflow run context-doctor --input '{"contract":"…"}' -d # detach +bunx smthrs ps # active / paused / recent +bunx smthrs logs <runId> -f # follow events +bunx smthrs output <runId> --node check # inspect the deterministic diagnosis ``` diff --git a/docs/references/smithers/docs/workflows/context-engineer.mdx b/docs/references/smithers/docs/workflows/context-engineer.mdx index 6d6121983..baefc95b4 100644 --- a/docs/references/smithers/docs/workflows/context-engineer.mdx +++ b/docs/references/smithers/docs/workflows/context-engineer.mdx @@ -11,7 +11,7 @@ the right skills or durable workflow, builds a backpressure gate matrix, execute (or dispatches) the work, and writes a self-contained HTML report of the whole run. ```bash -bunx smithers-orchestrator workflow run context-engineer \ +bunx smthrs workflow run context-engineer \ --prompt "Clean up the flaky e2e tests and make CI green again" ``` @@ -40,10 +40,10 @@ or run autonomously with `--input '{"review":false}'`. ## Monitor it ```bash -bunx smithers-orchestrator workflow run context-engineer --prompt "…" -d # detach -bunx smithers-orchestrator ps # active / paused / recent -bunx smithers-orchestrator logs <runId> -f # follow events -bunx smithers-orchestrator approve <runId> --node approve-contract # clear the contract gate +bunx smthrs workflow run context-engineer --prompt "…" -d # detach +bunx smthrs ps # active / paused / recent +bunx smthrs logs <runId> -f # follow events +bunx smthrs approve <runId> --node approve-contract # clear the contract gate ``` Use this when you have a fuzzy ask and want Smithers to do the context diff --git a/docs/references/smithers/docs/workflows/create-skill.mdx b/docs/references/smithers/docs/workflows/create-skill.mdx index d965be3ed..c2e4408d4 100644 --- a/docs/references/smithers/docs/workflows/create-skill.mdx +++ b/docs/references/smithers/docs/workflows/create-skill.mdx @@ -10,7 +10,7 @@ docs, you describe what the skill should equip an agent to do and the workflow clarifies it, designs the structure, scaffolds the files, and documents the result. ```bash -bunx smithers-orchestrator workflow run create-skill \ +bunx smthrs workflow run create-skill \ --prompt "A skill that teaches an agent to triage flaky tests" ``` diff --git a/docs/references/smithers/docs/workflows/create-workflow.mdx b/docs/references/smithers/docs/workflows/create-workflow.mdx index d79814949..5a9ba84ac 100644 --- a/docs/references/smithers/docs/workflows/create-workflow.mdx +++ b/docs/references/smithers/docs/workflows/create-workflow.mdx @@ -10,7 +10,7 @@ workflow clarifies it, gathers the right docs and skills, designs the graph, sca the files, verifies the graph renders, and writes an agent-facing skill doc. ```bash -bunx smithers-orchestrator workflow run create-workflow \ +bunx smthrs workflow run create-workflow \ --prompt "A workflow that watches a landing request and auto-lands it once CI is green" ``` @@ -39,10 +39,10 @@ autonomously with `--input '{"review":false}'`. ## Monitor it ```bash -bunx smithers-orchestrator workflow run create-workflow --prompt "…" -d # detach -bunx smithers-orchestrator ps # active / paused / recent -bunx smithers-orchestrator logs <runId> -f # follow events -bunx smithers-orchestrator approve <runId> --node approve-design # clear the design gate +bunx smthrs workflow run create-workflow --prompt "…" -d # detach +bunx smthrs ps # active / paused / recent +bunx smthrs logs <runId> -f # follow events +bunx smthrs approve <runId> --node approve-design # clear the design gate ``` Use this when you want to add a new automation to your `.smithers/` pack without diff --git a/docs/references/smithers/docs/workflows/debug.mdx b/docs/references/smithers/docs/workflows/debug.mdx index 927b32fdf..b8bf604c8 100644 --- a/docs/references/smithers/docs/workflows/debug.mdx +++ b/docs/references/smithers/docs/workflows/debug.mdx @@ -6,7 +6,7 @@ description: Reproduce and fix a reported bug with validation. `debug` reuses the same `ValidationLoop` component as `implement`, but with a bug-focused default prompt. Unlike `implement`, `debug` does not pass early-exit (`done`) or prior-attempt feedback to the loop, so it runs all iterations (up to `maxIterations` = 3) rather than stopping as soon as validation passes and a reviewer approves. ```bash -bunx smithers-orchestrator workflow run debug --prompt "Fix the intermittent gateway reconnect failure" +bunx smthrs workflow run debug --prompt "Fix the intermittent gateway reconnect failure" ``` ## Inputs diff --git a/docs/references/smithers/docs/workflows/eval-author.mdx b/docs/references/smithers/docs/workflows/eval-author.mdx index a556d09f2..148477dc2 100644 --- a/docs/references/smithers/docs/workflows/eval-author.mdx +++ b/docs/references/smithers/docs/workflows/eval-author.mdx @@ -10,7 +10,7 @@ reports the exact `smithers eval` command to run it. Use it when you have a goal or acceptance criteria and want a repeatable, regression-safe check for a workflow. ```bash -bunx smithers-orchestrator workflow run eval-author \ +bunx smthrs workflow run eval-author \ --input '{"prompt":"Release notes must list every breaking change","workflow":".smithers/workflows/release.tsx"}' ``` diff --git a/docs/references/smithers/docs/workflows/extract-skill.mdx b/docs/references/smithers/docs/workflows/extract-skill.mdx index d3d117f0e..bf5b84a74 100644 --- a/docs/references/smithers/docs/workflows/extract-skill.mdx +++ b/docs/references/smithers/docs/workflows/extract-skill.mdx @@ -9,7 +9,7 @@ for a new workflow, and memory facts worth keeping. Reach for it right after a r when you notice yourself doing the same thing again. ```bash -bunx smithers-orchestrator workflow run extract-skill \ +bunx smthrs workflow run extract-skill \ --input '{"runId":"<run-id>","prompt":"Harvest the way we triage flaky tests into a reusable skill"}' ``` @@ -34,10 +34,10 @@ context. When the pattern is skill-shaped, the workflow writes the skill to ## Monitor it ```bash -bunx smithers-orchestrator workflow run extract-skill --input '{"runId":"<id>","prompt":"…"}' -d # detach -bunx smithers-orchestrator ps # active / paused / recent -bunx smithers-orchestrator logs <runId> -f # follow events -bunx smithers-orchestrator inspect <runId> # full run state +bunx smthrs workflow run extract-skill --input '{"runId":"<id>","prompt":"…"}' -d # detach +bunx smthrs ps # active / paused / recent +bunx smthrs logs <runId> -f # follow events +bunx smthrs inspect <runId> # full run state ``` Use this to close the loop after a run: instead of re-deriving the same approach diff --git a/docs/references/smithers/docs/workflows/feature-enum.mdx b/docs/references/smithers/docs/workflows/feature-enum.mdx index f581c68c1..8165fce04 100644 --- a/docs/references/smithers/docs/workflows/feature-enum.mdx +++ b/docs/references/smithers/docs/workflows/feature-enum.mdx @@ -6,7 +6,7 @@ description: Generate or refine a code-backed feature inventory. `feature-enum` scans the repository and produces grouped, SCREAMING_SNAKE_CASE feature names. It can also refine an existing inventory using prior feature groups and a previous commit hash. ```bash -bunx smithers-orchestrator workflow run feature-enum --input '{"refineIterations":3}' +bunx smthrs workflow run feature-enum --input '{"refineIterations":3}' ``` ## Inputs diff --git a/docs/references/smithers/docs/workflows/grill-me.mdx b/docs/references/smithers/docs/workflows/grill-me.mdx index e08a6149a..f1127d58d 100644 --- a/docs/references/smithers/docs/workflows/grill-me.mdx +++ b/docs/references/smithers/docs/workflows/grill-me.mdx @@ -6,7 +6,7 @@ description: Stress-test a vague idea with agent-led questions. `grill-me` runs an interview loop. The agent asks questions using `.smithers/scripts/ask-user.ts`, records answers, and keeps iterating until the request is clear enough to act on. Answers accumulate in the run context and are available to subsequent tasks in the same run, or can be passed as input to `tickets-create`. ```bash -bunx smithers-orchestrator workflow run grill-me --prompt "I want to improve onboarding" +bunx smthrs workflow run grill-me --prompt "I want to improve onboarding" ``` ## Inputs diff --git a/docs/references/smithers/docs/workflows/implement.mdx b/docs/references/smithers/docs/workflows/implement.mdx index e2b71a3fd..7c7232cac 100644 --- a/docs/references/smithers/docs/workflows/implement.mdx +++ b/docs/references/smithers/docs/workflows/implement.mdx @@ -6,7 +6,7 @@ description: Implement a change with validation and review. `implement` is the default coding workflow for a single change. It runs a shared `ValidationLoop`: implement the requested change, validate it, review it, and feed failures back into another iteration. ```bash -bunx smithers-orchestrator workflow run implement --prompt "Add rate limiting to the API" +bunx smthrs workflow run implement --prompt "Add rate limiting to the API" ``` ## Inputs diff --git a/docs/references/smithers/docs/workflows/improve-test-coverage.mdx b/docs/references/smithers/docs/workflows/improve-test-coverage.mdx index 2fc0ff386..489303cd2 100644 --- a/docs/references/smithers/docs/workflows/improve-test-coverage.mdx +++ b/docs/references/smithers/docs/workflows/improve-test-coverage.mdx @@ -6,7 +6,7 @@ description: Add missing tests and validate the result. `improve-test-coverage` runs the shared `ValidationLoop` with a prompt focused on finding and filling high-impact test gaps. ```bash -bunx smithers-orchestrator workflow run improve-test-coverage --prompt "Add regression coverage for webhook signature failures" +bunx smthrs workflow run improve-test-coverage --prompt "Add regression coverage for webhook signature failures" ``` ## Inputs diff --git a/docs/references/smithers/docs/workflows/kanban.mdx b/docs/references/smithers/docs/workflows/kanban.mdx index b96101b7a..1b9e41825 100644 --- a/docs/references/smithers/docs/workflows/kanban.mdx +++ b/docs/references/smithers/docs/workflows/kanban.mdx @@ -6,7 +6,7 @@ description: Implement ticket files from .smithers/tickets in parallel worktree `kanban` reads Markdown tickets from `.smithers/tickets/`, runs each ticket in its own worktree branch, then asks an agent to merge successful branches back into the main workspace. ```bash -bunx smithers-orchestrator workflow run kanban --input '{"maxConcurrency":3}' +bunx smthrs workflow run kanban --input '{"maxConcurrency":3}' ``` ## Inputs diff --git a/docs/references/smithers/docs/workflows/mission.mdx b/docs/references/smithers/docs/workflows/mission.mdx index 21465f88b..a16bab39c 100644 --- a/docs/references/smithers/docs/workflows/mission.mdx +++ b/docs/references/smithers/docs/workflows/mission.mdx @@ -6,7 +6,7 @@ description: Long-horizon workflow with planning, approval, milestone validation `mission` is for work that is too long or broad for one agent loop. It creates a milestone plan, optionally pauses for human approval, then executes one milestone at a time. Within the active milestone it can run multiple feature workers in parallel, integrate their work, validate the checkpoint, and repair failed validation before moving on. ```bash -bunx smithers-orchestrator workflow run mission --prompt "Migrate the dashboard to the new gateway APIs" +bunx smthrs workflow run mission --prompt "Migrate the dashboard to the new gateway APIs" ``` ## Inputs @@ -24,7 +24,7 @@ bunx smithers-orchestrator workflow run mission --prompt "Migrate the dashboard Example with worktree isolation: ```bash -bunx smithers-orchestrator workflow run mission \ +bunx smthrs workflow run mission \ --input '{"prompt":"Build import/export support","useWorktrees":true,"maxConcurrency":4}' ``` diff --git a/docs/references/smithers/docs/workflows/monitor-smithers.mdx b/docs/references/smithers/docs/workflows/monitor-smithers.mdx index 126c3d3da..cab09c9ae 100644 --- a/docs/references/smithers/docs/workflows/monitor-smithers.mdx +++ b/docs/references/smithers/docs/workflows/monitor-smithers.mdx @@ -10,7 +10,7 @@ which to cancel). Reach for it on a schedule or whenever you want a quick "is anything stuck?" sweep of in-flight runs. ```bash -bunx smithers-orchestrator workflow run monitor-smithers --input '{"staleMinutes":15}' +bunx smthrs workflow run monitor-smithers --input '{"staleMinutes":15}' ``` ## Stages @@ -33,10 +33,10 @@ bunx smithers-orchestrator workflow run monitor-smithers --input '{"staleMinutes ## Monitor it ```bash -bunx smithers-orchestrator workflow run monitor-smithers -d # detach -bunx smithers-orchestrator ps # active / paused / recent -bunx smithers-orchestrator logs <runId> -f # follow events -bunx smithers-orchestrator inspect <runId> # full run state + outputs +bunx smthrs workflow run monitor-smithers -d # detach +bunx smthrs ps # active / paused / recent +bunx smthrs logs <runId> -f # follow events +bunx smthrs inspect <runId> # full run state + outputs ``` A healthy fleet short-circuits before the expensive triage step, so a clean diff --git a/docs/references/smithers/docs/workflows/overview.mdx b/docs/references/smithers/docs/workflows/overview.mdx index 873be7054..7724e3c31 100644 --- a/docs/references/smithers/docs/workflows/overview.mdx +++ b/docs/references/smithers/docs/workflows/overview.mdx @@ -1,14 +1,14 @@ --- title: Default Workflows -description: The workflow pack scaffolded by bunx smithers-orchestrator init. +description: The workflow pack scaffolded by bunx smthrs init. --- -`bunx smithers-orchestrator init` creates a `.smithers/workflows/` directory with ready-to-run workflows for planning, implementation, review, tickets, audits, and long-running missions. These workflows are normal Smithers TSX files: run them as-is, edit them for your repo, or use them as examples for your own workflow pack. +`bunx smthrs init` creates a `.smithers/workflows/` directory with ready-to-run workflows for planning, implementation, review, tickets, audits, and long-running missions. These workflows are normal Smithers TSX files: run them as-is, edit them for your repo, or use them as examples for your own workflow pack. Run any default workflow by ID: ```bash -bunx smithers-orchestrator workflow run <workflow-id> --prompt "..." +bunx smthrs workflow run <workflow-id> --prompt "..." ``` Most prompt-driven workflows accept `--prompt` as shorthand for `--input '{"prompt":"..."}'`. Workflows with structured inputs also support `--input`. @@ -36,8 +36,8 @@ Most prompt-driven workflows accept `--prompt` as shorthand for `--input '{"prom ## Operational Notes -- Default workflow files are user-owned after scaffold. `bunx smithers-orchestrator init` will not overwrite edited files unless you pass `--force`. +- Default workflow files are user-owned after scaffold. `bunx smthrs init` will not overwrite edited files unless you pass `--force`. - Agent pools are defined in `.smithers/agents.ts`; edit that file to change which models each workflow uses. -- Run `bunx smithers-orchestrator workflow list` to see the workflows in the current repo, `bunx smithers-orchestrator workflow inspect <id>` to see metadata, and `bunx smithers-orchestrator workflow skills` to generate agent-facing docs under `.smithers/skills/`. -- Workflows can carry optional metadata comments (`smithers-display-name`, `smithers-description`, `smithers-tags`, `smithers-aliases`) that `bunx smithers-orchestrator workflow list` and `workflow-skill` use for display and discovery. +- Run `bunx smthrs workflow list` to see the workflows in the current repo, `bunx smthrs workflow inspect <id>` to see metadata, and `bunx smthrs workflow skills` to generate agent-facing docs under `.smithers/skills/`. +- Workflows can carry optional metadata comments (`smithers-display-name`, `smithers-description`, `smithers-tags`, `smithers-aliases`) that `bunx smthrs workflow list` and `workflow-skill` use for display and discovery. - Inspect and resume runs with the normal CLI: `inspect`, `logs`, `chat`, `events`, `why`, `approve`, and `up --resume`. diff --git a/docs/references/smithers/docs/workflows/plan.mdx b/docs/references/smithers/docs/workflows/plan.mdx index f2ab63581..0716b298b 100644 --- a/docs/references/smithers/docs/workflows/plan.mdx +++ b/docs/references/smithers/docs/workflows/plan.mdx @@ -6,7 +6,7 @@ description: Create a practical implementation plan. `plan` turns a request into a structured implementation plan without changing the repo. ```bash -bunx smithers-orchestrator workflow run plan --prompt "Add account-level billing limits" +bunx smthrs workflow run plan --prompt "Add account-level billing limits" ``` ## Inputs diff --git a/docs/references/smithers/docs/workflows/ralph.mdx b/docs/references/smithers/docs/workflows/ralph.mdx index fdd43d1c4..eb37ab844 100644 --- a/docs/references/smithers/docs/workflows/ralph.mdx +++ b/docs/references/smithers/docs/workflows/ralph.mdx @@ -6,7 +6,7 @@ description: Keep an agent continuously working on a prompt. `ralph` is the simplest continuous-work loop. It repeatedly runs the configured smart agent with the provided prompt. ```bash -bunx smithers-orchestrator workflow run ralph --prompt "Continue reducing flaky tests" +bunx smthrs workflow run ralph --prompt "Continue reducing flaky tests" ``` ## Inputs diff --git a/docs/references/smithers/docs/workflows/report-slideshow.mdx b/docs/references/smithers/docs/workflows/report-slideshow.mdx index c257747aa..1608109d3 100644 --- a/docs/references/smithers/docs/workflows/report-slideshow.mdx +++ b/docs/references/smithers/docs/workflows/report-slideshow.mdx @@ -10,7 +10,7 @@ and gates, failures and retries, and remaining issues — without scrolling the event log. ```bash -bunx smithers-orchestrator workflow run report-slideshow \ +bunx smthrs workflow run report-slideshow \ --input '{"runId":"<runId>","title":"Nightly build report"}' ``` diff --git a/docs/references/smithers/docs/workflows/research-plan-implement.mdx b/docs/references/smithers/docs/workflows/research-plan-implement.mdx index 3bea3a777..5e318ada9 100644 --- a/docs/references/smithers/docs/workflows/research-plan-implement.mdx +++ b/docs/references/smithers/docs/workflows/research-plan-implement.mdx @@ -6,7 +6,7 @@ description: Research, plan, implement, validate, and review in one run. `research-plan-implement` is a full pipeline for changes that need context before code. It asks one agent to research, another to plan, then passes the enriched prompt into the same `ValidationLoop` used by `implement`. ```bash -bunx smithers-orchestrator workflow run research-plan-implement --prompt "Replace the auth cookie format" +bunx smthrs workflow run research-plan-implement --prompt "Replace the auth cookie format" ``` ## Inputs @@ -21,7 +21,7 @@ When `tdd` is `true`, the planning task is instructed to start with test steps b Pass structured input when you want test-first planning: ```bash -bunx smithers-orchestrator workflow run research-plan-implement \ +bunx smthrs workflow run research-plan-implement \ --input '{"prompt":"Add invite-only signup","tdd":true}' ``` diff --git a/docs/references/smithers/docs/workflows/research.mdx b/docs/references/smithers/docs/workflows/research.mdx index 428de4b96..d62b61790 100644 --- a/docs/references/smithers/docs/workflows/research.mdx +++ b/docs/references/smithers/docs/workflows/research.mdx @@ -6,7 +6,7 @@ description: Gather repo and external context for a request. `research` asks a tool-capable agent to inspect the repo and gather relevant context before planning or implementation. ```bash -bunx smithers-orchestrator workflow run research --prompt "How should we add audit logs?" +bunx smthrs workflow run research --prompt "How should we add audit logs?" ``` ## Inputs diff --git a/docs/references/smithers/docs/workflows/review.mdx b/docs/references/smithers/docs/workflows/review.mdx index c8b0070aa..333928077 100644 --- a/docs/references/smithers/docs/workflows/review.mdx +++ b/docs/references/smithers/docs/workflows/review.mdx @@ -6,7 +6,7 @@ description: Review the current repository state with configured agents. `review` runs the shared `Review` component over the prompt and returns structured reviewer feedback, approval status, and issues. ```bash -bunx smithers-orchestrator workflow run review --prompt "Review the current repository changes" +bunx smthrs workflow run review --prompt "Review the current repository changes" ``` ## Inputs diff --git a/docs/references/smithers/docs/workflows/route-task.mdx b/docs/references/smithers/docs/workflows/route-task.mdx index 5dd8a7ad3..3f08e1285 100644 --- a/docs/references/smithers/docs/workflows/route-task.mdx +++ b/docs/references/smithers/docs/workflows/route-task.mdx @@ -9,7 +9,7 @@ just do, or a durable job that belongs in a real workflow — then it either run or hands you the best-fit workflow to run instead. ```bash -bunx smithers-orchestrator workflow run route-task \ +bunx smthrs workflow run route-task \ --prompt "Summarize what changed in the last 10 commits" ``` @@ -39,10 +39,10 @@ verdict. ## Monitor it ```bash -bunx smithers-orchestrator workflow run route-task --prompt "…" -d # detach -bunx smithers-orchestrator ps # active / paused / recent -bunx smithers-orchestrator logs <runId> -f # follow events +bunx smthrs workflow run route-task --prompt "…" -d # detach +bunx smthrs ps # active / paused / recent +bunx smthrs logs <runId> -f # follow events ``` When `route-task` recommends a durable workflow, run it directly — for example -`bunx smithers-orchestrator workflow run implement --prompt "…"`. +`bunx smthrs workflow run implement --prompt "…"`. diff --git a/docs/references/smithers/docs/workflows/ticket-create.mdx b/docs/references/smithers/docs/workflows/ticket-create.mdx index 2bc26c0e2..51e43416f 100644 --- a/docs/references/smithers/docs/workflows/ticket-create.mdx +++ b/docs/references/smithers/docs/workflows/ticket-create.mdx @@ -6,7 +6,7 @@ description: Turn a request into one structured implementation ticket. `ticket-create` turns a prompt into a single ticket with title, description, and acceptance criteria. ```bash -bunx smithers-orchestrator workflow run ticket-create --prompt "Add a settings page for API keys" +bunx smthrs workflow run ticket-create --prompt "Add a settings page for API keys" ``` ## Inputs diff --git a/docs/references/smithers/docs/workflows/tickets-create.mdx b/docs/references/smithers/docs/workflows/tickets-create.mdx index 75dba1da1..46ac4fe04 100644 --- a/docs/references/smithers/docs/workflows/tickets-create.mdx +++ b/docs/references/smithers/docs/workflows/tickets-create.mdx @@ -6,7 +6,7 @@ description: Break a request into multiple implementable tickets. `tickets-create` decomposes a broad request into a set of tickets. Each ticket includes title, description, and acceptance criteria. ```bash -bunx smithers-orchestrator workflow run tickets-create --prompt "Build the billing admin workflow" +bunx smthrs workflow run tickets-create --prompt "Build the billing admin workflow" ``` ## Inputs diff --git a/docs/references/smithers/docs/workflows/triage-run.mdx b/docs/references/smithers/docs/workflows/triage-run.mdx index 65017f04f..42142371d 100644 --- a/docs/references/smithers/docs/workflows/triage-run.mdx +++ b/docs/references/smithers/docs/workflows/triage-run.mdx @@ -9,7 +9,7 @@ rewind, retry, or escalate. Reach for it when a run failed or stalled and you want a grounded read plus a concrete command instead of eyeballing the logs. ```bash -bunx smithers-orchestrator workflow run triage-run --input '{"runId":"<runId>"}' +bunx smthrs workflow run triage-run --input '{"runId":"<runId>"}' ``` ## Stages @@ -29,8 +29,8 @@ It does not mutate the run — every stage is read-only, so the recommended comm ## Monitor it ```bash -bunx smithers-orchestrator workflow run triage-run --input '{"runId":"<runId>"}' -d # detach -bunx smithers-orchestrator ps # active / paused / recent -bunx smithers-orchestrator logs <runId> -f # follow events -bunx smithers-orchestrator output <runId> --node recommend # read the recommendation +bunx smthrs workflow run triage-run --input '{"runId":"<runId>"}' -d # detach +bunx smthrs ps # active / paused / recent +bunx smthrs logs <runId> -f # follow events +bunx smthrs output <runId> --node recommend # read the recommendation ``` diff --git a/docs/references/smithers/docs/workflows/vcs.mdx b/docs/references/smithers/docs/workflows/vcs.mdx index a3c397401..c4723cdaf 100644 --- a/docs/references/smithers/docs/workflows/vcs.mdx +++ b/docs/references/smithers/docs/workflows/vcs.mdx @@ -9,7 +9,7 @@ agent from the real diff and history. The Smithers UI launches it with an `actio but it runs from the CLI too. ```bash -bunx smithers-orchestrator workflow run vcs --input '{"action":"status","vcs":"jj"}' +bunx smthrs workflow run vcs --input '{"action":"status","vcs":"jj"}' ``` ## Actions diff --git a/docs/references/smithers/docs/workflows/workflow-skill.mdx b/docs/references/smithers/docs/workflows/workflow-skill.mdx index 4843c7415..ac2945b5e 100644 --- a/docs/references/smithers/docs/workflows/workflow-skill.mdx +++ b/docs/references/smithers/docs/workflows/workflow-skill.mdx @@ -8,13 +8,13 @@ description: Create or update agent-facing skill docs from local workflows. For deterministic, no-agent generation, use the CLI command: ```bash -bunx smithers-orchestrator workflow skills +bunx smthrs workflow skills ``` To generate skill docs through the agent (with prompt-driven customization), use: ```bash -bunx smithers-orchestrator workflow run workflow-skill --input '{"workflow":"mission"}' +bunx smthrs workflow run workflow-skill --input '{"workflow":"mission"}' ``` ## Inputs @@ -37,14 +37,14 @@ bunx smithers-orchestrator workflow run workflow-skill --input '{"workflow":"mis Generate one skill: ```bash -bunx smithers-orchestrator workflow run workflow-skill \ +bunx smthrs workflow run workflow-skill \ --input '{"workflow":"mission","output":".smithers/skills/mission.md"}' ``` Generate skills for every local workflow: ```bash -bunx smithers-orchestrator workflow run workflow-skill \ +bunx smthrs workflow run workflow-skill \ --input '{"workflow":"all","output":".smithers/skills"}' ``` diff --git a/docs/references/smithers/e2e/README.md b/docs/references/smithers/e2e/README.md index cd94a987a..3cc8f9dbf 100644 --- a/docs/references/smithers/e2e/README.md +++ b/docs/references/smithers/e2e/README.md @@ -1,4 +1,4 @@ -# @smithers-orchestrator/e2e +# @smthrs/e2e End-to-end fault-injection matrix for the smithers orchestrator. Implements the test surface required by [ticket 0022](../.smithers/tickets/smithers/0022-fault-injection-e2e-matrix.md): diff --git a/docs/references/smithers/e2e/faults/case01-kill-engine-mid-task.test.ts b/docs/references/smithers/e2e/faults/case01-kill-engine-mid-task.test.ts index a52bdad1f..141f758d0 100644 --- a/docs/references/smithers/e2e/faults/case01-kill-engine-mid-task.test.ts +++ b/docs/references/smithers/e2e/faults/case01-kill-engine-mid-task.test.ts @@ -1,7 +1,7 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; -import { deriveRunState } from "@smithers-orchestrator/db/runState/deriveRunState"; -import type { RunRow } from "@smithers-orchestrator/db/adapter/RunRow"; +import { deriveRunState } from "@smthrs/db/runState/deriveRunState"; +import type { RunRow } from "@smthrs/db/adapter/RunRow"; import { corruptHeartbeat } from "../harness/corruptHeartbeat.ts"; const STALE_THRESHOLD_MS = 30_000; diff --git a/docs/references/smithers/e2e/faults/case02-kill-sandbox-engine-alive.test.ts b/docs/references/smithers/e2e/faults/case02-kill-sandbox-engine-alive.test.ts index 587a926fb..d78d99479 100644 --- a/docs/references/smithers/e2e/faults/case02-kill-sandbox-engine-alive.test.ts +++ b/docs/references/smithers/e2e/faults/case02-kill-sandbox-engine-alive.test.ts @@ -3,10 +3,10 @@ import { existsSync, mkdtempSync, mkdirSync, rmSync, writeFileSync } from "node: import { tmpdir } from "node:os"; import { join } from "node:path"; import { Database } from "bun:sqlite"; -import { deriveRunState } from "@smithers-orchestrator/db/runState/deriveRunState"; -import { RUN_STATE_HEARTBEAT_STALE_MS } from "@smithers-orchestrator/db/runState/RUN_STATE_HEARTBEAT_STALE_MS"; -import type { RunRow } from "@smithers-orchestrator/db/adapter/RunRow"; -import type { SandboxHandle } from "@smithers-orchestrator/sandbox/SandboxHandle"; +import { deriveRunState } from "@smthrs/db/runState/deriveRunState"; +import { RUN_STATE_HEARTBEAT_STALE_MS } from "@smthrs/db/runState/RUN_STATE_HEARTBEAT_STALE_MS"; +import type { RunRow } from "@smthrs/db/adapter/RunRow"; +import type { SandboxHandle } from "@smthrs/sandbox/SandboxHandle"; import { stallSandbox } from "../harness/stallSandbox.ts"; import { corruptHeartbeat } from "../harness/corruptHeartbeat.ts"; diff --git a/docs/references/smithers/e2e/faults/case08-inspector-never-idle.test.ts b/docs/references/smithers/e2e/faults/case08-inspector-never-idle.test.ts index e9a557a75..9c80054ec 100644 --- a/docs/references/smithers/e2e/faults/case08-inspector-never-idle.test.ts +++ b/docs/references/smithers/e2e/faults/case08-inspector-never-idle.test.ts @@ -1,9 +1,9 @@ import { Database } from "bun:sqlite"; import { describe, expect, test } from "bun:test"; -import { deriveRunState } from "@smithers-orchestrator/db/runState/deriveRunState"; -import type { RunRow } from "@smithers-orchestrator/db/adapter/RunRow"; -import type { RunState } from "@smithers-orchestrator/db/runState/RunState"; -import type { RunStateView } from "@smithers-orchestrator/db/runState/RunStateView"; +import { deriveRunState } from "@smthrs/db/runState/deriveRunState"; +import type { RunRow } from "@smthrs/db/adapter/RunRow"; +import type { RunState } from "@smthrs/db/runState/RunState"; +import type { RunStateView } from "@smthrs/db/runState/RunStateView"; import { skewClock } from "../harness/skewClock.ts"; const STALE_THRESHOLD_MS = 30_000; diff --git a/docs/references/smithers/e2e/faults/case14-gateway-rpc-roundtrip.test.ts b/docs/references/smithers/e2e/faults/case14-gateway-rpc-roundtrip.test.ts index 535855b7d..c07bf4d47 100644 --- a/docs/references/smithers/e2e/faults/case14-gateway-rpc-roundtrip.test.ts +++ b/docs/references/smithers/e2e/faults/case14-gateway-rpc-roundtrip.test.ts @@ -852,7 +852,7 @@ describe("case 14: gateway authenticated RPC roundtrip", () => { test.skip("real engine workflow drives launch -> approve -> finished round-trip", () => { // SKIP: booting the real Gateway from packages/server inside the e2e - // package fails on `effect` / `@smithers-orchestrator/devtools` resolution + // package fails on `effect` / `@smthrs/devtools` resolution // because workspace symlinks bypass e2e's flat node_modules. The // packages/server gateway tests cover the engine-driven path; this case // exercises the auth + RPC dispatch + DB write contract over a real diff --git a/docs/references/smithers/e2e/faults/case17-webhook-bad-signature.test.ts b/docs/references/smithers/e2e/faults/case17-webhook-bad-signature.test.ts index c57a3790c..fad39b83a 100644 --- a/docs/references/smithers/e2e/faults/case17-webhook-bad-signature.test.ts +++ b/docs/references/smithers/e2e/faults/case17-webhook-bad-signature.test.ts @@ -445,7 +445,7 @@ describe("case 17: webhook signal with invalid signature is rejected and audited test.skip("uses production handler in packages/server/src/gateway.js (handleWebhook + computeWebhookSignature)", () => { // SKIP: importing the real Gateway from packages/server inside the e2e - // package fails on `effect` / `@smithers-orchestrator/devtools` resolution + // package fails on `effect` / `@smthrs/devtools` resolution // because workspace symlinks bypass e2e's flat node_modules (same blocker // documented in case14-gateway-rpc-roundtrip.test.ts). This test mirrors // the documented contract of `handleWebhook` at diff --git a/docs/references/smithers/e2e/faults/case24-replay-unsafe-approval.test.ts b/docs/references/smithers/e2e/faults/case24-replay-unsafe-approval.test.ts index d31cc4d11..8b1ed9742 100644 --- a/docs/references/smithers/e2e/faults/case24-replay-unsafe-approval.test.ts +++ b/docs/references/smithers/e2e/faults/case24-replay-unsafe-approval.test.ts @@ -1,6 +1,6 @@ import { Database } from "bun:sqlite"; import { describe, expect, test } from "bun:test"; -import { getDefinedToolMetadata } from "@smithers-orchestrator/engine/getDefinedToolMetadata"; +import { getDefinedToolMetadata } from "@smthrs/engine/getDefinedToolMetadata"; type ApprovalRow = { run_id: string; diff --git a/docs/references/smithers/e2e/faults/case25-approval-scope-denial.test.ts b/docs/references/smithers/e2e/faults/case25-approval-scope-denial.test.ts index 32210f1e4..f356cc5e6 100644 --- a/docs/references/smithers/e2e/faults/case25-approval-scope-denial.test.ts +++ b/docs/references/smithers/e2e/faults/case25-approval-scope-denial.test.ts @@ -4,15 +4,15 @@ import { tmpdir } from "node:os"; import { join } from "node:path"; import React from "react"; import { z } from "zod"; -import { createSmithers } from "smithers-orchestrator"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { hasGatewayScope } from "@smithers-orchestrator/gateway/auth/scopes"; -import { Gateway, type SmithersWorkflow } from "@smithers-orchestrator/server/gateway"; +import { createSmithers } from "smthrs"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { hasGatewayScope } from "@smthrs/gateway/auth/scopes"; +import { Gateway, type SmithersWorkflow } from "@smthrs/server/gateway"; // case25 — approval scope denial against the REAL gateway. // -// This drives @smithers-orchestrator/server's Gateway over its real HTTP +// This drives @smthrs/server's Gateway over its real HTTP // `/v1/rpc/<method>` surface with token-based auth. A viewer-scoped token // (run:read only) that calls `submitApproval` must hit the gateway's real // scope gate and receive a 403 FORBIDDEN whose `requiredScope` is diff --git a/docs/references/smithers/e2e/harness/stallSandbox.test.ts b/docs/references/smithers/e2e/harness/stallSandbox.test.ts index 51027da67..25840335f 100644 --- a/docs/references/smithers/e2e/harness/stallSandbox.test.ts +++ b/docs/references/smithers/e2e/harness/stallSandbox.test.ts @@ -2,7 +2,7 @@ import { describe, expect, test } from "bun:test"; import { existsSync, mkdtempSync, mkdirSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import type { SandboxHandle } from "@smithers-orchestrator/sandbox/SandboxHandle"; +import type { SandboxHandle } from "@smthrs/sandbox/SandboxHandle"; import { stallSandbox } from "./stallSandbox.ts"; function makeHandle(): { handle: SandboxHandle; cleanup: () => void } { diff --git a/docs/references/smithers/e2e/harness/stallSandbox.ts b/docs/references/smithers/e2e/harness/stallSandbox.ts index 55e488cc4..64cd954cf 100644 --- a/docs/references/smithers/e2e/harness/stallSandbox.ts +++ b/docs/references/smithers/e2e/harness/stallSandbox.ts @@ -1,5 +1,5 @@ import { rename } from "node:fs/promises"; -import type { SandboxHandle } from "@smithers-orchestrator/sandbox/SandboxHandle"; +import type { SandboxHandle } from "@smthrs/sandbox/SandboxHandle"; const STALL_SUFFIX = ".stalled"; diff --git a/docs/references/smithers/e2e/package.json b/docs/references/smithers/e2e/package.json index 967fe37ba..19e9e0435 100644 --- a/docs/references/smithers/e2e/package.json +++ b/docs/references/smithers/e2e/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/e2e", + "name": "@smthrs/e2e", "version": "0.0.0", "private": true, "type": "module", @@ -11,12 +11,12 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/engine": "workspace:*", - "@smithers-orchestrator/gateway": "workspace:*", - "@smithers-orchestrator/sandbox": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "@smithers-orchestrator/server": "workspace:*", + "@smthrs/db": "^0.33.0", + "@smthrs/engine": "^0.33.0", + "@smthrs/gateway": "^0.33.0", + "@smthrs/sandbox": "^0.33.0", + "@smthrs/scheduler": "^0.33.0", + "@smthrs/server": "^0.33.0", "better-sqlite3": "^11.5.0", "drizzle-orm": "^0.45.2", "effect": "^3.21.1", diff --git a/docs/references/smithers/examples/_example-kit.js b/docs/references/smithers/examples/_example-kit.js index 3c60556d7..fb14a42ea 100644 --- a/docs/references/smithers/examples/_example-kit.js +++ b/docs/references/smithers/examples/_example-kit.js @@ -1,4 +1,4 @@ -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { z } from "zod"; export const approvalSchema = z.object({ approved: z.boolean(), diff --git a/docs/references/smithers/examples/alert-suppressor.jsx b/docs/references/smithers/examples/alert-suppressor.jsx index aaf3e7654..410c5338d 100644 --- a/docs/references/smithers/examples/alert-suppressor.jsx +++ b/docs/references/smithers/examples/alert-suppressor.jsx @@ -5,11 +5,11 @@ * * Shape: alert stream → deduper/context lookup → classifier agent → page/ticket sink. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash, read, grep } from "smithers-orchestrator/tools"; +import { bash, read, grep } from "smthrs/tools"; import { z } from "zod"; import DedupePrompt from "./prompts/alert-suppressor/dedupe.mdx"; import ContextPrompt from "./prompts/alert-suppressor/context.mdx"; diff --git a/docs/references/smithers/examples/audit.jsx b/docs/references/smithers/examples/audit.jsx index 02afe547d..41267fd18 100644 --- a/docs/references/smithers/examples/audit.jsx +++ b/docs/references/smithers/examples/audit.jsx @@ -5,11 +5,11 @@ * Use cases: security audit, dependency audit, license audit, accessibility audit, * dead code audit, config drift audit. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ScanPrompt from "./prompts/audit/scan.mdx"; import InvestigatePrompt from "./prompts/audit/investigate.mdx"; diff --git a/docs/references/smithers/examples/benchmark-sheriff.jsx b/docs/references/smithers/examples/benchmark-sheriff.jsx index 32bd251eb..448817f01 100644 --- a/docs/references/smithers/examples/benchmark-sheriff.jsx +++ b/docs/references/smithers/examples/benchmark-sheriff.jsx @@ -5,11 +5,11 @@ * * Shape: benchmark runner → metric diff → threshold gate → analysis agent. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash } from "smithers-orchestrator/tools"; +import { bash } from "smthrs/tools"; import { z } from "zod"; import RunPrompt from "./prompts/benchmark-sheriff/run.mdx"; import AnalyzePrompt from "./prompts/benchmark-sheriff/analyze.mdx"; diff --git a/docs/references/smithers/examples/bisect-guide.jsx b/docs/references/smithers/examples/bisect-guide.jsx index 8993fc1be..e9fabbcb2 100644 --- a/docs/references/smithers/examples/bisect-guide.jsx +++ b/docs/references/smithers/examples/bisect-guide.jsx @@ -3,11 +3,11 @@ * <BisectGuide> — Orchestrate git bisect with an agent interpreting ambiguous outcomes at each step. * Shape: VCS controller ↔ test runner ↔ adjudicator agent. */ -import { Sequence, Loop } from "smithers-orchestrator"; +import { Sequence, Loop } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent, Output } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash, read, grep } from "smithers-orchestrator/tools"; +import { bash, read, grep } from "smthrs/tools"; import { z } from "zod"; import BisectStepPrompt from "./prompts/bisect-guide/bisect-step.mdx"; import AdjudicatePrompt from "./prompts/bisect-guide/adjudicate.mdx"; diff --git a/docs/references/smithers/examples/blog-analyzer-pipeline.jsx b/docs/references/smithers/examples/blog-analyzer-pipeline.jsx index 2eff2a252..37062ec0f 100644 --- a/docs/references/smithers/examples/blog-analyzer-pipeline.jsx +++ b/docs/references/smithers/examples/blog-analyzer-pipeline.jsx @@ -4,11 +4,11 @@ * Pattern: Content Ingester → Analyzer → Report Sink. * Use cases: blog categorization, content audits, editorial insights, topic clustering. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import IngestPrompt from "./prompts/blog-analyzer-pipeline/ingest.mdx"; import AnalyzePrompt from "./prompts/blog-analyzer-pipeline/analyze.mdx"; diff --git a/docs/references/smithers/examples/branch-doctor.jsx b/docs/references/smithers/examples/branch-doctor.jsx index ccf0db60a..177d9ad75 100644 --- a/docs/references/smithers/examples/branch-doctor.jsx +++ b/docs/references/smithers/examples/branch-doctor.jsx @@ -5,11 +5,11 @@ * * Shape: git inspector → diagnosis agent → command plan → optional execution. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash, read, grep } from "smithers-orchestrator/tools"; +import { bash, read, grep } from "smthrs/tools"; import { z } from "zod"; import InspectPrompt from "./prompts/branch-doctor/inspect.mdx"; import DiagnosePrompt from "./prompts/branch-doctor/diagnose.mdx"; diff --git a/docs/references/smithers/examples/bun-port-smithers/components/agents.ts b/docs/references/smithers/examples/bun-port-smithers/components/agents.ts index d373b533e..f91866768 100644 --- a/docs/references/smithers/examples/bun-port-smithers/components/agents.ts +++ b/docs/references/smithers/examples/bun-port-smithers/components/agents.ts @@ -1,4 +1,4 @@ -import { ClaudeCodeAgent, PiAgent } from "smithers-orchestrator"; +import { ClaudeCodeAgent, PiAgent } from "smthrs"; type AgentArgs = { prompt?: string; diff --git a/docs/references/smithers/examples/bun-port-smithers/components/scorers.ts b/docs/references/smithers/examples/bun-port-smithers/components/scorers.ts index 943e54eef..e71ef2a23 100644 --- a/docs/references/smithers/examples/bun-port-smithers/components/scorers.ts +++ b/docs/references/smithers/examples/bun-port-smithers/components/scorers.ts @@ -1,4 +1,4 @@ -import { latencyScorer, llmJudge, schemaAdherenceScorer } from "smithers-orchestrator/scorers"; +import { latencyScorer, llmJudge, schemaAdherenceScorer } from "smthrs/scorers"; import { agentsForRepo } from "./agents"; diff --git a/docs/references/smithers/examples/bun-port-smithers/workflow.tsx b/docs/references/smithers/examples/bun-port-smithers/workflow.tsx index e1f07e68b..eefc2cc27 100644 --- a/docs/references/smithers/examples/bun-port-smithers/workflow.tsx +++ b/docs/references/smithers/examples/bun-port-smithers/workflow.tsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ -import { ApprovalGate, HumanTask, Subflow, type SmithersWorkflow } from "@smithers-orchestrator/components"; -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { ApprovalGate, HumanTask, Subflow, type SmithersWorkflow } from "@smthrs/components"; +import { createSmithers } from "smthrs"; import type { z } from "zod"; import { diff --git a/docs/references/smithers/examples/bun-port-smithers/workflows/audit-sweeps.tsx b/docs/references/smithers/examples/bun-port-smithers/workflows/audit-sweeps.tsx index 3368f90ac..ab9de66fc 100644 --- a/docs/references/smithers/examples/bun-port-smithers/workflows/audit-sweeps.tsx +++ b/docs/references/smithers/examples/bun-port-smithers/workflows/audit-sweeps.tsx @@ -1,5 +1,5 @@ -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import type { z } from "zod"; import { agentsForRepo } from "../components/agents"; diff --git a/docs/references/smithers/examples/bun-port-smithers/workflows/crate-compile-bringup.tsx b/docs/references/smithers/examples/bun-port-smithers/workflows/crate-compile-bringup.tsx index ae0048a3e..5f2fa7a6a 100644 --- a/docs/references/smithers/examples/bun-port-smithers/workflows/crate-compile-bringup.tsx +++ b/docs/references/smithers/examples/bun-port-smithers/workflows/crate-compile-bringup.tsx @@ -1,5 +1,5 @@ -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import type { z } from "zod"; import { agentsForRepo } from "../components/agents"; diff --git a/docs/references/smithers/examples/bun-port-smithers/workflows/lifetime-classify.tsx b/docs/references/smithers/examples/bun-port-smithers/workflows/lifetime-classify.tsx index 735d3d808..58e91ef38 100644 --- a/docs/references/smithers/examples/bun-port-smithers/workflows/lifetime-classify.tsx +++ b/docs/references/smithers/examples/bun-port-smithers/workflows/lifetime-classify.tsx @@ -1,5 +1,5 @@ -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import type { z } from "zod"; import { agentsForRepo } from "../components/agents"; diff --git a/docs/references/smithers/examples/bun-port-smithers/workflows/panic-probe-swarm.tsx b/docs/references/smithers/examples/bun-port-smithers/workflows/panic-probe-swarm.tsx index 3244835cb..34b0a585c 100644 --- a/docs/references/smithers/examples/bun-port-smithers/workflows/panic-probe-swarm.tsx +++ b/docs/references/smithers/examples/bun-port-smithers/workflows/panic-probe-swarm.tsx @@ -1,5 +1,5 @@ -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import type { z } from "zod"; import { agentsForRepo } from "../components/agents"; diff --git a/docs/references/smithers/examples/bun-port-smithers/workflows/phase-a-port.tsx b/docs/references/smithers/examples/bun-port-smithers/workflows/phase-a-port.tsx index 7a082f989..68f9588d9 100644 --- a/docs/references/smithers/examples/bun-port-smithers/workflows/phase-a-port.tsx +++ b/docs/references/smithers/examples/bun-port-smithers/workflows/phase-a-port.tsx @@ -1,5 +1,5 @@ -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import type { z } from "zod"; import { agentsForRepo } from "../components/agents"; diff --git a/docs/references/smithers/examples/bun-port-smithers/workflows/test-swarm.tsx b/docs/references/smithers/examples/bun-port-smithers/workflows/test-swarm.tsx index 2c616b6d7..04f63b0d9 100644 --- a/docs/references/smithers/examples/bun-port-smithers/workflows/test-swarm.tsx +++ b/docs/references/smithers/examples/bun-port-smithers/workflows/test-swarm.tsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { resolve } from "node:path"; -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import type { z } from "zod"; import { agentsForRepo } from "../components/agents"; diff --git a/docs/references/smithers/examples/bun-port-smithers/workflows/ungate-proper-port.tsx b/docs/references/smithers/examples/bun-port-smithers/workflows/ungate-proper-port.tsx index 5bc55ae36..a107f22fe 100644 --- a/docs/references/smithers/examples/bun-port-smithers/workflows/ungate-proper-port.tsx +++ b/docs/references/smithers/examples/bun-port-smithers/workflows/ungate-proper-port.tsx @@ -1,5 +1,5 @@ -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import type { z } from "zod"; import { agentsForRepo } from "../components/agents"; diff --git a/docs/references/smithers/examples/canary-judge.jsx b/docs/references/smithers/examples/canary-judge.jsx index 759970895..ec4ec1585 100644 --- a/docs/references/smithers/examples/canary-judge.jsx +++ b/docs/references/smithers/examples/canary-judge.jsx @@ -6,11 +6,11 @@ * Pattern: telemetry collectors → comparator → judge agent → deploy control plane. * Use cases: canary deployments, progressive delivery, deployment safety gates. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import CollectStablePrompt from "./prompts/canary-judge/collect-stable.mdx"; import CollectCanaryPrompt from "./prompts/canary-judge/collect-canary.mdx"; diff --git a/docs/references/smithers/examples/change-blast-radius.jsx b/docs/references/smithers/examples/change-blast-radius.jsx index 2a172e382..19f9fe75d 100644 --- a/docs/references/smithers/examples/change-blast-radius.jsx +++ b/docs/references/smithers/examples/change-blast-radius.jsx @@ -4,11 +4,11 @@ * * Shape: diff parser -> dependency/context gatherer -> blast-radius agent. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ParsePrompt from "./prompts/change-blast-radius/parse.mdx"; import GatherPrompt from "./prompts/change-blast-radius/gather.mdx"; diff --git a/docs/references/smithers/examples/changelog.jsx b/docs/references/smithers/examples/changelog.jsx index 48a03404c..cc8463ff7 100644 --- a/docs/references/smithers/examples/changelog.jsx +++ b/docs/references/smithers/examples/changelog.jsx @@ -4,11 +4,11 @@ * Pattern: Read commits → classify → group → render formatted output. * Use cases: release notes, weekly digests, sprint summaries, contributor reports. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash, read, write } from "smithers-orchestrator/tools"; +import { bash, read, write } from "smthrs/tools"; import { z } from "zod"; import AnalyzePrompt from "./prompts/changelog/analyze.mdx"; import GeneratePrompt from "./prompts/changelog/generate.mdx"; diff --git a/docs/references/smithers/examples/chat-log-repro.jsx b/docs/references/smithers/examples/chat-log-repro.jsx index 646d578d3..5a2e51d11 100644 --- a/docs/references/smithers/examples/chat-log-repro.jsx +++ b/docs/references/smithers/examples/chat-log-repro.jsx @@ -3,13 +3,13 @@ * Run with: smithers up examples/chat-log-repro.jsx * Then check: smithers chat <run-id> --follow */ -import { Sequence, Parallel, ClaudeCodeAgent } from "smithers-orchestrator"; +import { Sequence, Parallel, ClaudeCodeAgent } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { z } from "zod"; let CodexAgent; try { - ({ CodexAgent } = await import("smithers-orchestrator")); + ({ CodexAgent } = await import("smthrs")); } catch { // CodexAgent may not be available } diff --git a/docs/references/smithers/examples/classifier-switchboard.jsx b/docs/references/smithers/examples/classifier-switchboard.jsx index 0599cd179..229386e2c 100644 --- a/docs/references/smithers/examples/classifier-switchboard.jsx +++ b/docs/references/smithers/examples/classifier-switchboard.jsx @@ -6,11 +6,11 @@ * Use cases: support ticket routing, message dispatching, file processing * pipelines, multi-domain intake systems. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import IntakePrompt from "./prompts/classifier-switchboard/intake.mdx"; import ClassifyPrompt from "./prompts/classifier-switchboard/classify.mdx"; diff --git a/docs/references/smithers/examples/code-review-loop.jsx b/docs/references/smithers/examples/code-review-loop.jsx index 138cac712..0ccb4b356 100644 --- a/docs/references/smithers/examples/code-review-loop.jsx +++ b/docs/references/smithers/examples/code-review-loop.jsx @@ -1,8 +1,8 @@ -import { Sequence, Ralph } from "smithers-orchestrator"; +import { Sequence, Ralph } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent, Output } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ReviewPrompt from "./prompts/code-review-loop/review.mdx"; import FixPrompt from "./prompts/code-review-loop/fix.mdx"; diff --git a/docs/references/smithers/examples/collector-probe.jsx b/docs/references/smithers/examples/collector-probe.jsx index e09782398..990351a42 100644 --- a/docs/references/smithers/examples/collector-probe.jsx +++ b/docs/references/smithers/examples/collector-probe.jsx @@ -5,11 +5,11 @@ * Shape: invocation -> collector -> anomaly detector / report. * Pattern: Loop monitors successive invocations, flags drift, emits report. */ -import { Sequence, Loop } from "smithers-orchestrator"; +import { Sequence, Loop } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import InvocationPrompt from "./prompts/collector-probe/invocation.mdx"; import CollectorPrompt from "./prompts/collector-probe/collector.mdx"; diff --git a/docs/references/smithers/examples/command-watchdog.jsx b/docs/references/smithers/examples/command-watchdog.jsx index 8e65bd820..ef8e86bb2 100644 --- a/docs/references/smithers/examples/command-watchdog.jsx +++ b/docs/references/smithers/examples/command-watchdog.jsx @@ -6,11 +6,11 @@ * Pattern: scheduler → command runner → anomaly/notability check → report agent. * Use cases: CI health watches, cron job monitoring, flaky-command alerting. */ -import { Sequence, Loop } from "smithers-orchestrator"; +import { Sequence, Loop } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash, read, grep } from "smithers-orchestrator/tools"; +import { bash, read, grep } from "smthrs/tools"; import { z } from "zod"; import RunPrompt from "./prompts/command-watchdog/run.mdx"; import DetectPrompt from "./prompts/command-watchdog/detect.mdx"; diff --git a/docs/references/smithers/examples/compliance-evidence-collector.jsx b/docs/references/smithers/examples/compliance-evidence-collector.jsx index e3f27a7ae..c2cd04191 100644 --- a/docs/references/smithers/examples/compliance-evidence-collector.jsx +++ b/docs/references/smithers/examples/compliance-evidence-collector.jsx @@ -7,11 +7,11 @@ * Use cases: SOC 2 evidence collection, ISO 27001 audits, PCI-DSS reviews, * regulatory compliance gathering. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, bash, grep } from "smthrs/tools"; import { z } from "zod"; import OrchestratorPrompt from "./prompts/compliance-evidence-collector/orchestrator.mdx"; import FetchPrompt from "./prompts/compliance-evidence-collector/fetch.mdx"; diff --git a/docs/references/smithers/examples/config-diff-explainer.jsx b/docs/references/smithers/examples/config-diff-explainer.jsx index fdeae78a9..255a15c6d 100644 --- a/docs/references/smithers/examples/config-diff-explainer.jsx +++ b/docs/references/smithers/examples/config-diff-explainer.jsx @@ -5,11 +5,11 @@ * * Shape: diff fetcher -> config-aware explainer agent -> approval/comment sink. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import FetchPrompt from "./prompts/config-diff-explainer/fetch.mdx"; import ExplainPrompt from "./prompts/config-diff-explainer/explain.mdx"; diff --git a/docs/references/smithers/examples/contract-drift-sentinel.jsx b/docs/references/smithers/examples/contract-drift-sentinel.jsx index 626e241a8..1f0e12eb9 100644 --- a/docs/references/smithers/examples/contract-drift-sentinel.jsx +++ b/docs/references/smithers/examples/contract-drift-sentinel.jsx @@ -6,11 +6,11 @@ * Pattern: schema loader → diff engine → analyst agent → PR/status output. * Use cases: API governance, contract-first development, consumer impact analysis. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import LoadPrompt from "./prompts/contract-drift-sentinel/load.mdx"; import DiffPrompt from "./prompts/contract-drift-sentinel/diff.mdx"; diff --git a/docs/references/smithers/examples/coverage-loop.jsx b/docs/references/smithers/examples/coverage-loop.jsx index a3f4feedf..c2a642110 100644 --- a/docs/references/smithers/examples/coverage-loop.jsx +++ b/docs/references/smithers/examples/coverage-loop.jsx @@ -4,11 +4,11 @@ * Pattern: Iterative quality improvement loop with measurable convergence. * Use cases: test coverage, type coverage, lint fixes, accessibility score. */ -import { Sequence, Loop } from "smithers-orchestrator"; +import { Sequence, Loop } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, bash, grep } from "smthrs/tools"; import { z } from "zod"; import MeasurePrompt from "./prompts/coverage-loop/measure.mdx"; import FixPrompt from "./prompts/coverage-loop/fix.mdx"; diff --git a/docs/references/smithers/examples/debate.jsx b/docs/references/smithers/examples/debate.jsx index 38c40251e..c40c04ee9 100644 --- a/docs/references/smithers/examples/debate.jsx +++ b/docs/references/smithers/examples/debate.jsx @@ -5,11 +5,11 @@ * Use cases: design decisions, architecture choices, trade-off analysis, * RFC evaluation, technology selection. */ -import { Sequence, Parallel, Loop } from "smithers-orchestrator"; +import { Sequence, Parallel, Loop } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, grep } from "smithers-orchestrator/tools"; +import { read, grep } from "smthrs/tools"; import { z } from "zod"; import ArgumentPrompt from "./prompts/debate/argument.mdx"; import VerdictPrompt from "./prompts/debate/verdict.mdx"; diff --git a/docs/references/smithers/examples/defending-code/README.md b/docs/references/smithers/examples/defending-code/README.md index b1daad88a..a50d95d8f 100644 --- a/docs/references/smithers/examples/defending-code/README.md +++ b/docs/references/smithers/examples/defending-code/README.md @@ -74,7 +74,7 @@ Prerequisites: in (run `claude` once, then `/login`). No install step is needed: the example runs in-place and resolves -`smithers-orchestrator` from the monorepo's workspace. +`smthrs` from the monorepo's workspace. ```sh cd examples/defending-code @@ -167,12 +167,12 @@ restore the isolation: - Wrap the executing stages in a Smithers `<Worktree>` or `<Sandbox>` so each agent works on an isolated copy. -- Smithers' own `bash` tool (`smithers-orchestrator/tools`) is network-isolated +- Smithers' own `bash` tool (`smthrs/tools`) is network-isolated on macOS: it wraps commands in `sandbox-exec` with network denied, the local analog of the reference harness's egress restriction. On Linux it currently falls back to a static command denylist, which is weaker than kernel-level egress denial, so add an OS-level sandbox (gVisor, containers) there. Drive the - find/patch stages with an `AnthropicAgent` (`@smithers-orchestrator/agents`) + find/patch stages with an `AnthropicAgent` (`@smthrs/agents`) plus that tool to keep agent-run code off the network. - Scope `ClaudeCodeAgent` tools with `allowedTools` / `disallowedTools` instead of `yolo`. diff --git a/docs/references/smithers/examples/defending-code/workflow.jsx b/docs/references/smithers/examples/defending-code/workflow.jsx index 7821f9157..92c75e4d3 100644 --- a/docs/references/smithers/examples/defending-code/workflow.jsx +++ b/docs/references/smithers/examples/defending-code/workflow.jsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ /** * defending-code: a Smithers port of Anthropic's * `defending-code-reference-harness`. @@ -27,8 +27,8 @@ * Run from this directory: smithers up workflow.jsx -c 3 * See README.md for setup, auth, and safety notes. */ -import { Sequence, Parallel } from "smithers-orchestrator"; -import { ClaudeCodeAgent } from "@smithers-orchestrator/agents"; +import { Sequence, Parallel } from "smthrs"; +import { ClaudeCodeAgent } from "@smthrs/agents"; import { z } from "zod"; import { createExampleSmithers } from "../_example-kit.js"; diff --git a/docs/references/smithers/examples/dependency-update.jsx b/docs/references/smithers/examples/dependency-update.jsx index c2d632a72..3303a4cbc 100644 --- a/docs/references/smithers/examples/dependency-update.jsx +++ b/docs/references/smithers/examples/dependency-update.jsx @@ -4,11 +4,11 @@ * Pattern: Scan → Risk assess → Apply updates → Run tests. * Use cases: npm update, cargo update, pip upgrade, go mod tidy. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, edit, bash, grep } from "smithers-orchestrator/tools"; +import { read, edit, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ScanPrompt from "./prompts/dependency-update/scan.mdx"; import UpdatePrompt from "./prompts/dependency-update/update.mdx"; diff --git a/docs/references/smithers/examples/discovery.jsx b/docs/references/smithers/examples/discovery.jsx index 09649d9c4..3dc75d8b1 100644 --- a/docs/references/smithers/examples/discovery.jsx +++ b/docs/references/smithers/examples/discovery.jsx @@ -4,11 +4,11 @@ * Pattern: Agent scans → structured categorization → stored to schema table. * Use cases: file audits, dependency scans, API endpoint discovery, dead code detection. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ScanPrompt from "./prompts/discovery/scan.mdx"; const findingSchema = z.object({ diff --git a/docs/references/smithers/examples/doc-sync.jsx b/docs/references/smithers/examples/doc-sync.jsx index 5bf0cdba5..a209cc885 100644 --- a/docs/references/smithers/examples/doc-sync.jsx +++ b/docs/references/smithers/examples/doc-sync.jsx @@ -4,11 +4,11 @@ * Pattern: Audit docs against source of truth → auto-fix → open PR. * Use cases: API docs sync, README updates, changelog generation, JSDoc sync. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, edit, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, edit, bash, grep } from "smthrs/tools"; import { z } from "zod"; import AuditPrompt from "./prompts/doc-sync/audit.mdx"; import FixPrompt from "./prompts/doc-sync/fix.mdx"; diff --git a/docs/references/smithers/examples/docs-fixup-bot.jsx b/docs/references/smithers/examples/docs-fixup-bot.jsx index 341911d4c..6f8f471b9 100644 --- a/docs/references/smithers/examples/docs-fixup-bot.jsx +++ b/docs/references/smithers/examples/docs-fixup-bot.jsx @@ -6,11 +6,11 @@ * Pattern: docs scanner -> repair agent -> verifier -> PR. * Use cases: broken code snippets, outdated imports, stale CLI examples, dead links. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash, read, write, grep } from "smithers-orchestrator/tools"; +import { bash, read, write, grep } from "smthrs/tools"; import { z } from "zod"; import ScanDocsPrompt from "./prompts/docs-fixup-bot/scan-docs.mdx"; import RepairPrompt from "./prompts/docs-fixup-bot/repair.mdx"; diff --git a/docs/references/smithers/examples/docs-patcher.jsx b/docs/references/smithers/examples/docs-patcher.jsx index 5bb1b209b..91d90b5e9 100644 --- a/docs/references/smithers/examples/docs-patcher.jsx +++ b/docs/references/smithers/examples/docs-patcher.jsx @@ -6,11 +6,11 @@ * Pattern: contract/diff detector -> docs patch agent -> verifier -> PR creator. * Use cases: API migration docs, CLI flag renames, SDK changelog snippets, README sync. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash, read, write, grep } from "smithers-orchestrator/tools"; +import { bash, read, write, grep } from "smthrs/tools"; import { z } from "zod"; import DetectDriftPrompt from "./prompts/docs-patcher/detect-drift.mdx"; import PatchDocsPrompt from "./prompts/docs-patcher/patch-docs.mdx"; diff --git a/docs/references/smithers/examples/dstack/package.json b/docs/references/smithers/examples/dstack/package.json index 1e47fe3bb..96fef5f51 100644 --- a/docs/references/smithers/examples/dstack/package.json +++ b/docs/references/smithers/examples/dstack/package.json @@ -13,7 +13,7 @@ "dependencies": { "@ai-sdk/openai": "^1.0.0", "ai": "^4.0.0", - "smithers-orchestrator": "file:../../packages/smithers", + "smthrs": "^0.33.0", "zod": "^3.23.0" } } diff --git a/docs/references/smithers/examples/dstack/workflow.jsx b/docs/references/smithers/examples/dstack/workflow.jsx index 3054a3c34..e253335dc 100644 --- a/docs/references/smithers/examples/dstack/workflow.jsx +++ b/docs/references/smithers/examples/dstack/workflow.jsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ /** * Smithers workflow that consumes a Kimi K2 endpoint hosted on GCP via dstack. * @@ -10,7 +10,7 @@ * KIMI_BASE_URL — e.g. https://kimi-k2.<gateway>.example.com/v1 * KIMI_API_KEY — dstack user token */ -import { Sequence, Task, Workflow } from "smithers-orchestrator"; +import { Sequence, Task, Workflow } from "smthrs"; import { ToolLoopAgent as Agent } from "ai"; import { createOpenAI } from "@ai-sdk/openai"; import { z } from "zod"; diff --git a/docs/references/smithers/examples/dynamic-schema-enricher.jsx b/docs/references/smithers/examples/dynamic-schema-enricher.jsx index 9264b63fc..8e314ab41 100644 --- a/docs/references/smithers/examples/dynamic-schema-enricher.jsx +++ b/docs/references/smithers/examples/dynamic-schema-enricher.jsx @@ -4,11 +4,11 @@ * * Shape: input/context → dynamic type resolver → extractor → typed output. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ContextPrompt from "./prompts/dynamic-schema-enricher/context.mdx"; import ResolvePrompt from "./prompts/dynamic-schema-enricher/resolve.mdx"; diff --git a/docs/references/smithers/examples/error-clusterer.jsx b/docs/references/smithers/examples/error-clusterer.jsx index eacaa109f..2999a9ce1 100644 --- a/docs/references/smithers/examples/error-clusterer.jsx +++ b/docs/references/smithers/examples/error-clusterer.jsx @@ -6,11 +6,11 @@ * Pattern: error ingester → clusterer → explainer agent → KB/ticket update. * Use cases: incident dedup, error triage dashboards, runbook linking, SRE knowledge bases. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash, read, write, grep } from "smithers-orchestrator/tools"; +import { bash, read, write, grep } from "smthrs/tools"; import { z } from "zod"; import IngestPrompt from "./prompts/error-clusterer/ingest.mdx"; import ClusterPrompt from "./prompts/error-clusterer/cluster.mdx"; diff --git a/docs/references/smithers/examples/etl.jsx b/docs/references/smithers/examples/etl.jsx index 3cc598475..2af84600a 100644 --- a/docs/references/smithers/examples/etl.jsx +++ b/docs/references/smithers/examples/etl.jsx @@ -4,11 +4,11 @@ * Pattern: Extract data from source → Transform/enrich with agent → Load to destination. * Use cases: data migration, API sync, content processing, log analysis. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ExtractPrompt from "./prompts/etl/extract.mdx"; import TransformPrompt from "./prompts/etl/transform.mdx"; diff --git a/docs/references/smithers/examples/extract-anything-workbench.jsx b/docs/references/smithers/examples/extract-anything-workbench.jsx index 6991b4f01..d7b91775d 100644 --- a/docs/references/smithers/examples/extract-anything-workbench.jsx +++ b/docs/references/smithers/examples/extract-anything-workbench.jsx @@ -4,11 +4,11 @@ * * Shape: arbitrary input → candidate extractors (parallel) → validator/preview. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ExtractPrompt from "./prompts/extract-anything-workbench/extract.mdx"; import ValidatePrompt from "./prompts/extract-anything-workbench/validate.mdx"; diff --git a/docs/references/smithers/examples/fail-only-report.jsx b/docs/references/smithers/examples/fail-only-report.jsx index c3e409aa8..586a1cc85 100644 --- a/docs/references/smithers/examples/fail-only-report.jsx +++ b/docs/references/smithers/examples/fail-only-report.jsx @@ -7,11 +7,11 @@ * Shape: trigger → shell runner → artifact collector → notable-event detector * → report agent → sink (PR comment, Slack, issue). */ -import { Sequence, Parallel, Branch } from "smithers-orchestrator"; +import { Sequence, Parallel, Branch } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash, read } from "smithers-orchestrator/tools"; +import { bash, read } from "smthrs/tools"; import { z } from "zod"; import RunPrompt from "./prompts/fail-only-report/run.mdx"; import AnalyzePrompt from "./prompts/fail-only-report/analyze.mdx"; diff --git a/docs/references/smithers/examples/failing-test-author.jsx b/docs/references/smithers/examples/failing-test-author.jsx index c4467b4aa..2191d18d3 100644 --- a/docs/references/smithers/examples/failing-test-author.jsx +++ b/docs/references/smithers/examples/failing-test-author.jsx @@ -5,11 +5,11 @@ * * Pattern: Issue reader → repro/test author agent → test runner → downstream handoff. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, bash, grep } from "smthrs/tools"; import { z } from "zod"; import AnalyzePrompt from "./prompts/failing-test-author/analyze.mdx"; import AuthorPrompt from "./prompts/failing-test-author/author.mdx"; diff --git a/docs/references/smithers/examples/fan-out-fan-in.jsx b/docs/references/smithers/examples/fan-out-fan-in.jsx index 5d37c2caf..16dae99a0 100644 --- a/docs/references/smithers/examples/fan-out-fan-in.jsx +++ b/docs/references/smithers/examples/fan-out-fan-in.jsx @@ -5,7 +5,7 @@ * Use cases: batch file processing, multi-file refactoring, parallel analysis, * map-reduce style operations. */ -import { Sequence, Parallel, ClaudeCodeAgent } from "smithers-orchestrator"; +import { Sequence, Parallel, ClaudeCodeAgent } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { z } from "zod"; import SplitPrompt from "./prompts/fan-out-fan-in/split.mdx"; diff --git a/docs/references/smithers/examples/feedback-pulse.jsx b/docs/references/smithers/examples/feedback-pulse.jsx index 3f0b28c0d..ee13ac507 100644 --- a/docs/references/smithers/examples/feedback-pulse.jsx +++ b/docs/references/smithers/examples/feedback-pulse.jsx @@ -5,11 +5,11 @@ * * Shape: feedback intake → sentiment/theme extractor → notifier/ticketer. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import IntakePrompt from "./prompts/feedback-pulse/intake.mdx"; import ExtractPrompt from "./prompts/feedback-pulse/extract.mdx"; diff --git a/docs/references/smithers/examples/financial-inbox-guard.jsx b/docs/references/smithers/examples/financial-inbox-guard.jsx index c8df9335f..947644b02 100644 --- a/docs/references/smithers/examples/financial-inbox-guard.jsx +++ b/docs/references/smithers/examples/financial-inbox-guard.jsx @@ -5,11 +5,11 @@ * Pattern: inbox trigger → classifier/extractor → finance-specific actions. * Use cases: AP automation, fraud detection, spend compliance, urgent approval routing. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import IngestPrompt from "./prompts/financial-inbox-guard/ingest.mdx"; import ClassifyPrompt from "./prompts/financial-inbox-guard/classify.mdx"; diff --git a/docs/references/smithers/examples/flake-hunter.jsx b/docs/references/smithers/examples/flake-hunter.jsx index 3edcd40e1..f8ed8e90d 100644 --- a/docs/references/smithers/examples/flake-hunter.jsx +++ b/docs/references/smithers/examples/flake-hunter.jsx @@ -6,11 +6,11 @@ * Pattern: command runner ↔ retry controller → evidence packer → analyst agent. * Use cases: CI flake detection, intermittent failure classification, test stability audits. */ -import { Sequence, Loop } from "smithers-orchestrator"; +import { Sequence, Loop } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import RunPrompt from "./prompts/flake-hunter/run.mdx"; import PackPrompt from "./prompts/flake-hunter/pack.mdx"; diff --git a/docs/references/smithers/examples/form-filler-assistant.jsx b/docs/references/smithers/examples/form-filler-assistant.jsx index 078f31b21..ecad72a67 100644 --- a/docs/references/smithers/examples/form-filler-assistant.jsx +++ b/docs/references/smithers/examples/form-filler-assistant.jsx @@ -5,11 +5,11 @@ * * Shape: source docs/user input → extractor → missing-field loop → form/API tool. */ -import { Sequence, Loop } from "smithers-orchestrator"; +import { Sequence, Loop } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ExtractPrompt from "./prompts/form-filler-assistant/extract.mdx"; import AskMissingPrompt from "./prompts/form-filler-assistant/ask-missing.mdx"; diff --git a/docs/references/smithers/examples/freestyle/provider.ts b/docs/references/smithers/examples/freestyle/provider.ts index b5c456caf..a275bab36 100644 --- a/docs/references/smithers/examples/freestyle/provider.ts +++ b/docs/references/smithers/examples/freestyle/provider.ts @@ -2,7 +2,7 @@ import type { SandboxProvider, SandboxProviderRequest, SandboxProviderResult, -} from "smithers-orchestrator/sandbox"; +} from "smthrs/sandbox"; type FreestyleFile = { content: string; diff --git a/docs/references/smithers/examples/freestyle/workflow.tsx b/docs/references/smithers/examples/freestyle/workflow.tsx index 65ffadfe4..418bffa17 100644 --- a/docs/references/smithers/examples/freestyle/workflow.tsx +++ b/docs/references/smithers/examples/freestyle/workflow.tsx @@ -1,5 +1,5 @@ -/** @jsxImportSource smithers-orchestrator */ -import { Sandbox, Workflow } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Sandbox, Workflow } from "smthrs"; import { z } from "zod"; import { createExampleSmithers } from "../_example-kit.js"; import { diff --git a/docs/references/smithers/examples/friday-bot.jsx b/docs/references/smithers/examples/friday-bot.jsx index 3424c62d4..5aa64ec7b 100644 --- a/docs/references/smithers/examples/friday-bot.jsx +++ b/docs/references/smithers/examples/friday-bot.jsx @@ -5,11 +5,11 @@ * * Shape: scheduler → data collectors → summarizer → message sink. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import SchedulePrompt from "./prompts/friday-bot/schedule.mdx"; import CollectGithubPrompt from "./prompts/friday-bot/collect-github.mdx"; diff --git a/docs/references/smithers/examples/gastown.jsx b/docs/references/smithers/examples/gastown.jsx index 4d034e2f4..d65f1b3e8 100644 --- a/docs/references/smithers/examples/gastown.jsx +++ b/docs/references/smithers/examples/gastown.jsx @@ -12,11 +12,11 @@ * Convoys (work batches) → Convoy bead tracking related work * gt done (self-clean) → Task completion + merge request creation */ -import { Sequence, Parallel, Loop, MergeQueue, Branch, Worktree } from "smithers-orchestrator"; +import { Sequence, Parallel, Loop, MergeQueue, Branch, Worktree } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, edit, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, edit, bash, grep } from "smthrs/tools"; import { z } from "zod"; import MayorPrompt from "./prompts/gastown/mayor.mdx"; import PolecatPrompt from "./prompts/gastown/polecat.mdx"; diff --git a/docs/references/smithers/examples/gate.jsx b/docs/references/smithers/examples/gate.jsx index 19376b53f..df662e677 100644 --- a/docs/references/smithers/examples/gate.jsx +++ b/docs/references/smithers/examples/gate.jsx @@ -5,11 +5,11 @@ * Use cases: CI status gates, deployment readiness, approval polling, * dependency availability, service health checks. */ -import { Sequence, Loop } from "smithers-orchestrator"; +import { Sequence, Loop } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash } from "smithers-orchestrator/tools"; +import { bash } from "smthrs/tools"; import { z } from "zod"; import CheckPrompt from "./prompts/gate/check.mdx"; const checkSchema = z.object({ diff --git a/docs/references/smithers/examples/invoice-approval-watch.jsx b/docs/references/smithers/examples/invoice-approval-watch.jsx index 475d46d85..ba571ba30 100644 --- a/docs/references/smithers/examples/invoice-approval-watch.jsx +++ b/docs/references/smithers/examples/invoice-approval-watch.jsx @@ -7,11 +7,11 @@ * Use cases: AP automation, fraud detection, duplicate invoice flagging, * threshold-based approval routing, vendor compliance checks. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ExtractPrompt from "./prompts/invoice-approval-watch/extract.mdx"; import ValidatePrompt from "./prompts/invoice-approval-watch/validate.mdx"; diff --git a/docs/references/smithers/examples/kanban.jsx b/docs/references/smithers/examples/kanban.jsx index 6e66af9ae..e420a3456 100644 --- a/docs/references/smithers/examples/kanban.jsx +++ b/docs/references/smithers/examples/kanban.jsx @@ -4,11 +4,11 @@ * Pattern: Plan tasks → Execute in parallel → Review each → Mark done or loop back. * Use cases: issue processing, PR queues, ticket triage, batch operations. */ -import { Sequence, Parallel, Loop } from "smithers-orchestrator"; +import { Sequence, Parallel, Loop } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, edit, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, edit, bash, grep } from "smthrs/tools"; import { z } from "zod"; import TriagePrompt from "./prompts/kanban/triage.mdx"; import WorkPrompt from "./prompts/kanban/work.mdx"; diff --git a/docs/references/smithers/examples/kimi-example.jsx b/docs/references/smithers/examples/kimi-example.jsx index dd48dc8d5..289b7d7ec 100644 --- a/docs/references/smithers/examples/kimi-example.jsx +++ b/docs/references/smithers/examples/kimi-example.jsx @@ -1,6 +1,6 @@ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; -import { KimiAgent } from "smithers-orchestrator"; +import { KimiAgent } from "smthrs"; import { z } from "zod"; import AnalysisPrompt from "./prompts/kimi-example/analysis.mdx"; import ReportPrompt from "./prompts/kimi-example/report.mdx"; diff --git a/docs/references/smithers/examples/kubernetes/README.md b/docs/references/smithers/examples/kubernetes/README.md index 588b54a46..55b697358 100644 --- a/docs/references/smithers/examples/kubernetes/README.md +++ b/docs/references/smithers/examples/kubernetes/README.md @@ -27,7 +27,7 @@ bun install bun run deploy # Watch it run -kubectl logs -f deployment/smithers-orchestrator -n smithers-system +kubectl logs -f deployment/smthrs -n smithers-system # Access the Gateway minikube service smithers-gateway -n smithers-system --url @@ -106,7 +106,7 @@ Your workflow code is identical to local Smithers — no changes needed: ```tsx // workflow.tsx -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, Workflow, Task, Sequence, outputs } = createSmithers({ @@ -180,7 +180,7 @@ kubectl scale deployment smithers-worker --replicas=10 -n smithers-system ```bash # Via kubectl -kubectl logs deployment/smithers-orchestrator -n smithers-system +kubectl logs deployment/smthrs -n smithers-system # Via Smithers CLI (pointing at the Gateway) export SMITHERS_GATEWAY_URL=$(minikube service smithers-gateway -n smithers-system --url) @@ -227,7 +227,7 @@ accordingly. [Fabrik](https://github.com/SamuelLHuber/local-isolated-ralph) by [Samuel Huber](https://github.com/SamuelLHuber) (dTech.vision) is a K3s-based Kubernetes layer for Smithers that takes a fundamentally different architectural -approach. It uses `smithers-orchestrator` as a direct dependency and wraps it +approach. It uses `smthrs` as a direct dependency and wraps it with Kubernetes-native job dispatch. **Key differences:** diff --git a/docs/references/smithers/examples/kubernetes/k8s/gateway.yaml b/docs/references/smithers/examples/kubernetes/k8s/gateway.yaml index 34382e576..cccc7f74f 100644 --- a/docs/references/smithers/examples/kubernetes/k8s/gateway.yaml +++ b/docs/references/smithers/examples/kubernetes/k8s/gateway.yaml @@ -6,7 +6,7 @@ metadata: spec: type: LoadBalancer selector: - app: smithers-orchestrator + app: smthrs ports: - name: http port: 80 diff --git a/docs/references/smithers/examples/kubernetes/k8s/orchestrator.yaml b/docs/references/smithers/examples/kubernetes/k8s/orchestrator.yaml index f0c625b18..0065538c8 100644 --- a/docs/references/smithers/examples/kubernetes/k8s/orchestrator.yaml +++ b/docs/references/smithers/examples/kubernetes/k8s/orchestrator.yaml @@ -1,21 +1,21 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: smithers-orchestrator + name: smthrs namespace: smithers-system spec: replicas: 1 selector: matchLabels: - app: smithers-orchestrator + app: smthrs template: metadata: labels: - app: smithers-orchestrator + app: smthrs spec: containers: - name: orchestrator - image: smithers-orchestrator:latest + image: smthrs:latest imagePullPolicy: IfNotPresent ports: - name: gateway @@ -64,11 +64,11 @@ spec: apiVersion: v1 kind: Service metadata: - name: smithers-orchestrator + name: smthrs namespace: smithers-system spec: selector: - app: smithers-orchestrator + app: smthrs ports: - name: gateway port: 3000 diff --git a/docs/references/smithers/examples/kubernetes/k8s/worker.yaml b/docs/references/smithers/examples/kubernetes/k8s/worker.yaml index 4a5be1f4b..5d9779b4c 100644 --- a/docs/references/smithers/examples/kubernetes/k8s/worker.yaml +++ b/docs/references/smithers/examples/kubernetes/k8s/worker.yaml @@ -24,7 +24,7 @@ spec: - name: SMITHERS_ROLE value: worker - name: SMITHERS_ORCHESTRATOR_URL - value: http://smithers-orchestrator.smithers-system.svc.cluster.local:3001 + value: http://smthrs.smithers-system.svc.cluster.local:3001 envFrom: - secretRef: name: smithers-api-keys diff --git a/docs/references/smithers/examples/kubernetes/package.json b/docs/references/smithers/examples/kubernetes/package.json index 07a12f5ad..d81680782 100644 --- a/docs/references/smithers/examples/kubernetes/package.json +++ b/docs/references/smithers/examples/kubernetes/package.json @@ -8,6 +8,6 @@ "teardown": "bun run scripts/teardown.js" }, "dependencies": { - "smithers-orchestrator": "file:../../packages/smithers" + "smthrs": "^0.33.0" } } diff --git a/docs/references/smithers/examples/kubernetes/scripts/build.js b/docs/references/smithers/examples/kubernetes/scripts/build.js index beb95c315..9dace48f4 100644 --- a/docs/references/smithers/examples/kubernetes/scripts/build.js +++ b/docs/references/smithers/examples/kubernetes/scripts/build.js @@ -6,7 +6,7 @@ const scriptDir = dirname(fileURLToPath(import.meta.url)); const exampleDir = resolve(scriptDir, ".."); const repoRoot = resolve(exampleDir, "../.."); const dockerfile = resolve(exampleDir, "Dockerfile"); -const orchestratorTag = `smithers-orchestrator:${tag}`; +const orchestratorTag = `smthrs:${tag}`; const workerTag = `smithers-worker:${tag}`; console.log(`Building ${orchestratorTag}...`); await $ `docker build -f ${dockerfile} --target orchestrator -t ${orchestratorTag} ${repoRoot}`; diff --git a/docs/references/smithers/examples/kubernetes/scripts/deploy.js b/docs/references/smithers/examples/kubernetes/scripts/deploy.js index 7c8a657d5..424273503 100644 --- a/docs/references/smithers/examples/kubernetes/scripts/deploy.js +++ b/docs/references/smithers/examples/kubernetes/scripts/deploy.js @@ -19,7 +19,7 @@ async function deploy() { await $ `bun run scripts/build.js`; // Load into minikube console.log("Loading images into minikube..."); - await $ `minikube image load smithers-orchestrator:latest`; + await $ `minikube image load smthrs:latest`; await $ `minikube image load smithers-worker:latest`; // Apply manifests in order console.log("Applying Kubernetes manifests..."); @@ -32,7 +32,7 @@ async function deploy() { await $ `kubectl apply -f k8s/worker.yaml`; await $ `kubectl apply -f k8s/gateway.yaml`; console.log("Waiting for orchestrator..."); - await $ `kubectl wait --for=condition=ready pod -l app=smithers-orchestrator -n smithers-system --timeout=120s`; + await $ `kubectl wait --for=condition=ready pod -l app=smthrs -n smithers-system --timeout=120s`; const url = await $ `minikube service smithers-gateway -n smithers-system --url`.text(); console.log(`\nDeployed! Gateway available at: ${url.trim()}`); console.log(`\nRun a workflow:\n smithers run workflow.tsx --gateway ${url.trim()}`); @@ -50,7 +50,7 @@ async function deploy() { await $ `kubectl apply -f k8s/worker.yaml`; await $ `kubectl apply -f k8s/gateway.yaml`; console.log("Waiting for orchestrator..."); - await $ `kubectl wait --for=condition=ready pod -l app=smithers-orchestrator -n smithers-system --timeout=120s`; + await $ `kubectl wait --for=condition=ready pod -l app=smthrs -n smithers-system --timeout=120s`; console.log("\nDeployed! Check status with:"); console.log(" kubectl get pods -n smithers-system"); break; diff --git a/docs/references/smithers/examples/kubernetes/workflow.jsx b/docs/references/smithers/examples/kubernetes/workflow.jsx index 0bb8f69ac..403ac48fa 100644 --- a/docs/references/smithers/examples/kubernetes/workflow.jsx +++ b/docs/references/smithers/examples/kubernetes/workflow.jsx @@ -4,7 +4,7 @@ * This runs identically locally (single process, SQLite) and on Kubernetes * (distributed orchestrator + workers, Postgres). No code changes needed. */ -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, Workflow, Task, Sequence, outputs } = createSmithers({ analysis: z.object({ diff --git a/docs/references/smithers/examples/lead-enricher.jsx b/docs/references/smithers/examples/lead-enricher.jsx index 7332a48b4..c25223a34 100644 --- a/docs/references/smithers/examples/lead-enricher.jsx +++ b/docs/references/smithers/examples/lead-enricher.jsx @@ -5,11 +5,11 @@ * * Shape: lead intake -> enrichment tools -> profiler agent -> CRM output. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import IntakePrompt from "./prompts/lead-enricher/intake.mdx"; import EnrichPrompt from "./prompts/lead-enricher/enrich.mdx"; diff --git a/docs/references/smithers/examples/lead-router-with-approval.jsx b/docs/references/smithers/examples/lead-router-with-approval.jsx index 340b80da2..8108d1d7f 100644 --- a/docs/references/smithers/examples/lead-router-with-approval.jsx +++ b/docs/references/smithers/examples/lead-router-with-approval.jsx @@ -7,11 +7,11 @@ * Use cases: inbound lead qualification, sales routing, partner onboarding, * deal desk triage, territory assignment. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import IntakePrompt from "./prompts/lead-router-with-approval/intake.mdx"; import ScorePrompt from "./prompts/lead-router-with-approval/score.mdx"; diff --git a/docs/references/smithers/examples/log-digest.jsx b/docs/references/smithers/examples/log-digest.jsx index 1f0297a33..e6569a946 100644 --- a/docs/references/smithers/examples/log-digest.jsx +++ b/docs/references/smithers/examples/log-digest.jsx @@ -5,11 +5,11 @@ * * Shape: shell/tool runner -> log collector -> summarizer agent. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import CollectPrompt from "./prompts/log-digest/collect.mdx"; import SummarizePrompt from "./prompts/log-digest/summarize.mdx"; diff --git a/docs/references/smithers/examples/mcp-health-probe.jsx b/docs/references/smithers/examples/mcp-health-probe.jsx index 70b901799..edf33f3ec 100644 --- a/docs/references/smithers/examples/mcp-health-probe.jsx +++ b/docs/references/smithers/examples/mcp-health-probe.jsx @@ -6,11 +6,11 @@ * Pattern: scheduler -> MCP probe set -> result checker -> report agent * Use cases: MCP fleet health monitoring, capability drift detection, outage alerting. */ -import { Sequence, Parallel, Loop } from "smithers-orchestrator"; +import { Sequence, Parallel, Loop } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, bash, grep } from "smthrs/tools"; import { z } from "zod"; import SchedulePrompt from "./prompts/mcp-health-probe/schedule.mdx"; import ProbePrompt from "./prompts/mcp-health-probe/probe.mdx"; diff --git a/docs/references/smithers/examples/mcp-integration/workflow.tsx b/docs/references/smithers/examples/mcp-integration/workflow.tsx index 88f8e6b0f..0b65d71ab 100644 --- a/docs/references/smithers/examples/mcp-integration/workflow.tsx +++ b/docs/references/smithers/examples/mcp-integration/workflow.tsx @@ -1,8 +1,8 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { resolve } from "node:path"; -import { AnthropicAgent } from "@smithers-orchestrator/agents"; -import { createMcpToolset } from "@smithers-orchestrator/agents/mcp/createMcpToolset"; -import { Task, Workflow } from "smithers-orchestrator"; +import { AnthropicAgent } from "@smthrs/agents"; +import { createMcpToolset } from "@smthrs/agents/mcp/createMcpToolset"; +import { Task, Workflow } from "smthrs"; import { z } from "zod"; import { createExampleSmithers } from "../_example-kit.js"; diff --git a/docs/references/smithers/examples/meeting-briefer.jsx b/docs/references/smithers/examples/meeting-briefer.jsx index 3de3c3a3c..8f96ec5e0 100644 --- a/docs/references/smithers/examples/meeting-briefer.jsx +++ b/docs/references/smithers/examples/meeting-briefer.jsx @@ -5,11 +5,11 @@ * * Shape: calendar/booking trigger → classifier → context gatherers → briefing agent. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import TriggerPrompt from "./prompts/meeting-briefer/trigger.mdx"; import ClassifyPrompt from "./prompts/meeting-briefer/classify.mdx"; diff --git a/docs/references/smithers/examples/memory-support-agent.jsx b/docs/references/smithers/examples/memory-support-agent.jsx index 7479a7163..3f8c749e7 100644 --- a/docs/references/smithers/examples/memory-support-agent.jsx +++ b/docs/references/smithers/examples/memory-support-agent.jsx @@ -7,11 +7,11 @@ * Use cases: customer support with recall, personalised troubleshooting, * account-aware help desks, tiered escalation with context carry-over. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import RecallPrompt from "./prompts/memory-support-agent/recall.mdx"; import RespondPrompt from "./prompts/memory-support-agent/respond.mdx"; diff --git a/docs/references/smithers/examples/merge-conflict-mediator.jsx b/docs/references/smithers/examples/merge-conflict-mediator.jsx index 8253605d1..b95e23397 100644 --- a/docs/references/smithers/examples/merge-conflict-mediator.jsx +++ b/docs/references/smithers/examples/merge-conflict-mediator.jsx @@ -6,11 +6,11 @@ * Pattern: git diff/conflict parser -> mediator agent -> optional apply step -> human reviewer. * Use cases: merge conflict triage, automated resolution proposals, team code integration. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ParsePrompt from "./prompts/merge-conflict-mediator/parse.mdx"; import MediatePrompt from "./prompts/merge-conflict-mediator/mediate.mdx"; diff --git a/docs/references/smithers/examples/migration.jsx b/docs/references/smithers/examples/migration.jsx index 651e96348..74ef354ec 100644 --- a/docs/references/smithers/examples/migration.jsx +++ b/docs/references/smithers/examples/migration.jsx @@ -7,11 +7,11 @@ * config format changes, database schema migrations. */ // @ts-nocheck -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, edit, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, edit, bash, grep } from "smthrs/tools"; import { z } from "zod"; import AnalyzePrompt from "./prompts/migration/analyze.mdx"; import MigratePrompt from "./prompts/migration/migrate.mdx"; diff --git a/docs/references/smithers/examples/milestone.jsx b/docs/references/smithers/examples/milestone.jsx index 7b22ef3a3..f54cad1db 100644 --- a/docs/references/smithers/examples/milestone.jsx +++ b/docs/references/smithers/examples/milestone.jsx @@ -6,11 +6,11 @@ * phased rollouts, tutorial progression. */ // @ts-nocheck -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, edit, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, edit, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ImplementPrompt from "./prompts/milestone/implement.mdx"; import ValidatePrompt from "./prompts/milestone/validate.mdx"; diff --git a/docs/references/smithers/examples/openapi-contract-agent.jsx b/docs/references/smithers/examples/openapi-contract-agent.jsx index 7ee7212d0..88d8f80ab 100644 --- a/docs/references/smithers/examples/openapi-contract-agent.jsx +++ b/docs/references/smithers/examples/openapi-contract-agent.jsx @@ -7,11 +7,11 @@ * Use cases: API client generation, structured extraction from specs, * contract-first tool scaffolding, schema-to-zod conversion. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ParseContractPrompt from "./prompts/openapi-contract-agent/parse-contract.mdx"; import GenerateInterfacesPrompt from "./prompts/openapi-contract-agent/generate-interfaces.mdx"; diff --git a/docs/references/smithers/examples/panel.jsx b/docs/references/smithers/examples/panel.jsx index 35dd26af5..c6a23e107 100644 --- a/docs/references/smithers/examples/panel.jsx +++ b/docs/references/smithers/examples/panel.jsx @@ -5,11 +5,11 @@ * Use cases: PR review (security + quality + architecture), design review, * RFC feedback, multi-perspective analysis. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, grep, bash } from "smithers-orchestrator/tools"; +import { read, grep, bash } from "smthrs/tools"; import { z } from "zod"; import ReviewPrompt from "./prompts/panel/review.mdx"; import SynthesisPrompt from "./prompts/panel/synthesis.mdx"; diff --git a/docs/references/smithers/examples/parallel-tickets.jsx b/docs/references/smithers/examples/parallel-tickets.jsx index 8a8b5a17d..ec2ad3a28 100644 --- a/docs/references/smithers/examples/parallel-tickets.jsx +++ b/docs/references/smithers/examples/parallel-tickets.jsx @@ -16,8 +16,8 @@ * Subscriptions: Claude roles run via the Claude Code CLI; the reviewer runs * via the Pi/Codex CLI — both use the user's existing subscriptions. */ -import { Sequence, Parallel, Loop, MergeQueue, Worktree } from "smithers-orchestrator"; -import { ClaudeCodeAgent, PiAgent } from "smithers-orchestrator"; +import { Sequence, Parallel, Loop, MergeQueue, Worktree } from "smthrs"; +import { ClaudeCodeAgent, PiAgent } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { z } from "zod"; import TriagePrompt from "./prompts/parallel-tickets/triage.mdx"; diff --git a/docs/references/smithers/examples/patch-plausibility-gate.jsx b/docs/references/smithers/examples/patch-plausibility-gate.jsx index 6b5941e63..f7449c66a 100644 --- a/docs/references/smithers/examples/patch-plausibility-gate.jsx +++ b/docs/references/smithers/examples/patch-plausibility-gate.jsx @@ -5,11 +5,11 @@ * Pattern: Code agent proposes patch → parallel lint/test/build → gate aggregates → comment/merge/update. * Use cases: PR quality gates, pre-merge verification, continuous integration plausibility checks. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash, read, grep } from "smithers-orchestrator/tools"; +import { bash, read, grep } from "smthrs/tools"; import { z } from "zod"; import PatchPrompt from "./prompts/patch-plausibility-gate/patch.mdx"; import LintPrompt from "./prompts/patch-plausibility-gate/lint.mdx"; diff --git a/docs/references/smithers/examples/pi-hello-world.jsx b/docs/references/smithers/examples/pi-hello-world.jsx index 528eafb0c..a488a18a3 100644 --- a/docs/references/smithers/examples/pi-hello-world.jsx +++ b/docs/references/smithers/examples/pi-hello-world.jsx @@ -1,5 +1,5 @@ -/** @jsxImportSource smithers-orchestrator */ -import { Task, Workflow, PiAgent } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Task, Workflow, PiAgent } from "smthrs"; import { z } from "zod"; import { createExampleSmithers } from "./_example-kit.js"; const HelloSchema = z.object({ diff --git a/docs/references/smithers/examples/pi-tools-workflow.jsx b/docs/references/smithers/examples/pi-tools-workflow.jsx index bb178afdb..8f0546b89 100644 --- a/docs/references/smithers/examples/pi-tools-workflow.jsx +++ b/docs/references/smithers/examples/pi-tools-workflow.jsx @@ -1,5 +1,5 @@ -/** @jsxImportSource smithers-orchestrator */ -import { Task, Workflow, PiAgent } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Task, Workflow, PiAgent } from "smthrs"; import { z } from "zod"; import { createExampleSmithers } from "./_example-kit.js"; const OutputSchema = z.object({ diff --git a/docs/references/smithers/examples/plan.jsx b/docs/references/smithers/examples/plan.jsx index 16a50797d..fa88d0519 100644 --- a/docs/references/smithers/examples/plan.jsx +++ b/docs/references/smithers/examples/plan.jsx @@ -4,11 +4,11 @@ * Pattern: Analyze requirements → decompose into tasks → prioritize → output plan. * Use cases: feature planning, sprint planning, migration planning, refactor strategy. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, grep, bash } from "smithers-orchestrator/tools"; +import { read, grep, bash } from "smthrs/tools"; import { z } from "zod"; import PlanPrompt from "./prompts/plan/plan.mdx"; const taskSchema = z.object({ diff --git a/docs/references/smithers/examples/pr-lifecycle.jsx b/docs/references/smithers/examples/pr-lifecycle.jsx index afbe67668..e70edb455 100644 --- a/docs/references/smithers/examples/pr-lifecycle.jsx +++ b/docs/references/smithers/examples/pr-lifecycle.jsx @@ -4,11 +4,11 @@ * Pattern: Shepherd a PR through its full lifecycle to merge. * Use cases: automated PR merging, PR finalization, CI-gated merge. */ -import { Sequence, Loop } from "smithers-orchestrator"; +import { Sequence, Loop } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash, read, grep } from "smithers-orchestrator/tools"; +import { bash, read, grep } from "smthrs/tools"; import { z } from "zod"; import RebasePrompt from "./prompts/pr-lifecycle/rebase.mdx"; import ReviewPrompt from "./prompts/pr-lifecycle/review.mdx"; diff --git a/docs/references/smithers/examples/pr-shepherd.jsx b/docs/references/smithers/examples/pr-shepherd.jsx index 138ba6800..0881a668c 100644 --- a/docs/references/smithers/examples/pr-shepherd.jsx +++ b/docs/references/smithers/examples/pr-shepherd.jsx @@ -3,11 +3,11 @@ * <PRShepherd> — Watch a PR move to ready-for-review, gather diffs/tests/context, * leave structured review comments, and optionally re-run after changes. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import GatherDiffPrompt from "./prompts/pr-shepherd/gather-diff.mdx"; import GatherTestsPrompt from "./prompts/pr-shepherd/gather-tests.mdx"; diff --git a/docs/references/smithers/examples/prompt-optimizer-harness.jsx b/docs/references/smithers/examples/prompt-optimizer-harness.jsx index 7e8427de1..1fa38cd8c 100644 --- a/docs/references/smithers/examples/prompt-optimizer-harness.jsx +++ b/docs/references/smithers/examples/prompt-optimizer-harness.jsx @@ -5,11 +5,11 @@ * Pattern: dataset/test cases → candidate prompt → evals/checks → optimize → regenerate. * Use cases: prompt engineering, A/B testing prompts, iterative prompt refinement. */ -import { Sequence, Loop } from "smithers-orchestrator"; +import { Sequence, Loop } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, bash, grep } from "smthrs/tools"; import { z } from "zod"; import GeneratePrompt from "./prompts/prompt-optimizer-harness/generate.mdx"; import EvaluatePrompt from "./prompts/prompt-optimizer-harness/evaluate.mdx"; diff --git a/docs/references/smithers/examples/ralph-loop.jsx b/docs/references/smithers/examples/ralph-loop.jsx index 8908be868..6b3e59aec 100644 --- a/docs/references/smithers/examples/ralph-loop.jsx +++ b/docs/references/smithers/examples/ralph-loop.jsx @@ -1,4 +1,4 @@ -import { Loop, ClaudeCodeAgent } from "smithers-orchestrator"; +import { Loop, ClaudeCodeAgent } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { z } from "zod"; import CheckPrompt from "./prompts/ralph-loop/check.mdx"; diff --git a/docs/references/smithers/examples/ransomware-isolation-coordinator.jsx b/docs/references/smithers/examples/ransomware-isolation-coordinator.jsx index 5c78e4c87..c85e95a81 100644 --- a/docs/references/smithers/examples/ransomware-isolation-coordinator.jsx +++ b/docs/references/smithers/examples/ransomware-isolation-coordinator.jsx @@ -5,11 +5,11 @@ * * Shape: detector → containment tools → approval/operator → reporting agent. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash } from "smithers-orchestrator/tools"; +import { bash } from "smthrs/tools"; import { z } from "zod"; import DetectPrompt from "./prompts/ransomware-isolation-coordinator/detect.mdx"; import ContainPrompt from "./prompts/ransomware-isolation-coordinator/contain.mdx"; diff --git a/docs/references/smithers/examples/receipt-stream-watcher.jsx b/docs/references/smithers/examples/receipt-stream-watcher.jsx index a00eee12a..1fb710c0d 100644 --- a/docs/references/smithers/examples/receipt-stream-watcher.jsx +++ b/docs/references/smithers/examples/receipt-stream-watcher.jsx @@ -7,11 +7,11 @@ * Use cases: receipt OCR streaming, invoice field extraction, real-time document * parsing with early exit, confidence-gated routing. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ExtractPrompt from "./prompts/receipt-stream-watcher/extract.mdx"; import ConsumePrompt from "./prompts/receipt-stream-watcher/consume.mdx"; diff --git a/docs/references/smithers/examples/refactor.jsx b/docs/references/smithers/examples/refactor.jsx index 7f729dd3e..89f9f99c7 100644 --- a/docs/references/smithers/examples/refactor.jsx +++ b/docs/references/smithers/examples/refactor.jsx @@ -5,11 +5,11 @@ * Use cases: rename across codebase, extract interfaces, convert patterns, * modernize syntax, split files, consolidate duplicates. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, edit, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, edit, bash, grep } from "smthrs/tools"; import { z } from "zod"; import AnalyzePrompt from "./prompts/refactor/analyze.mdx"; import RefactorPrompt from "./prompts/refactor/refactor.mdx"; diff --git a/docs/references/smithers/examples/repo-janitor.jsx b/docs/references/smithers/examples/repo-janitor.jsx index 8725b88ef..fed6d395d 100644 --- a/docs/references/smithers/examples/repo-janitor.jsx +++ b/docs/references/smithers/examples/repo-janitor.jsx @@ -6,11 +6,11 @@ * Pattern: scheduler → scanner commands → maintenance agent → PR creator. * Use cases: scheduled repo hygiene, automated cleanup PRs, maintenance backlog reduction. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep, write } from "smithers-orchestrator/tools"; +import { read, bash, grep, write } from "smthrs/tools"; import { z } from "zod"; import ScanPrompt from "./prompts/repo-janitor/scan.mdx"; import FixWarningsPrompt from "./prompts/repo-janitor/fix-warnings.mdx"; diff --git a/docs/references/smithers/examples/repro-harness-builder.jsx b/docs/references/smithers/examples/repro-harness-builder.jsx index 3675add42..50b3c0981 100644 --- a/docs/references/smithers/examples/repro-harness-builder.jsx +++ b/docs/references/smithers/examples/repro-harness-builder.jsx @@ -6,11 +6,11 @@ * Shape: issue reader → environment planner → Docker/code tool executor → repro validator. * Use cases: bug triage, pre-fix environment setup, CI reproduction pipelines. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep, write } from "smithers-orchestrator/tools"; +import { read, bash, grep, write } from "smthrs/tools"; import { z } from "zod"; import AnalyzePrompt from "./prompts/repro-harness-builder/analyze.mdx"; import PlanPrompt from "./prompts/repro-harness-builder/plan.mdx"; diff --git a/docs/references/smithers/examples/retry-budget-manager.jsx b/docs/references/smithers/examples/retry-budget-manager.jsx index 97073b4e2..95837dbc8 100644 --- a/docs/references/smithers/examples/retry-budget-manager.jsx +++ b/docs/references/smithers/examples/retry-budget-manager.jsx @@ -6,11 +6,11 @@ * Pattern: step runner ↔ retry policy controller → escalation/approval. * Use cases: API call retries, job queue resilience, payment processing retry logic. */ -import { Sequence, Loop } from "smithers-orchestrator"; +import { Sequence, Loop } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, bash, grep } from "smthrs/tools"; import { z } from "zod"; import StepRunnerPrompt from "./prompts/retry-budget-manager/step-runner.mdx"; import PolicyPrompt from "./prompts/retry-budget-manager/policy.mdx"; diff --git a/docs/references/smithers/examples/revenue-scout.jsx b/docs/references/smithers/examples/revenue-scout.jsx index c5eaae10f..14c826b16 100644 --- a/docs/references/smithers/examples/revenue-scout.jsx +++ b/docs/references/smithers/examples/revenue-scout.jsx @@ -7,11 +7,11 @@ * Use cases: upsell detection, expansion signals, churn-risk flagging, * cross-sell identification, renewal timing. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ClassifyPrompt from "./prompts/revenue-scout/classify.mdx"; import ExtractPrompt from "./prompts/revenue-scout/extract.mdx"; diff --git a/docs/references/smithers/examples/review-cycle.jsx b/docs/references/smithers/examples/review-cycle.jsx index 975f9dc5b..6c797a5b0 100644 --- a/docs/references/smithers/examples/review-cycle.jsx +++ b/docs/references/smithers/examples/review-cycle.jsx @@ -6,11 +6,11 @@ * Use cases: code generation with quality gate, writing with editorial review, * design iteration, any produce-then-critique loop. */ -import { Sequence, Loop } from "smithers-orchestrator"; +import { Sequence, Loop } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, edit, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, edit, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ImplementPrompt from "./prompts/review-cycle/implement.mdx"; import ReviewPrompt from "./prompts/review-cycle/review.mdx"; diff --git a/docs/references/smithers/examples/rollback-advisor.jsx b/docs/references/smithers/examples/rollback-advisor.jsx index e413a0a9b..dfe3e3dd0 100644 --- a/docs/references/smithers/examples/rollback-advisor.jsx +++ b/docs/references/smithers/examples/rollback-advisor.jsx @@ -5,11 +5,11 @@ * * Pattern: Deploy event → evidence gatherer → advisor agent → approval gate → action. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash, read, grep } from "smithers-orchestrator/tools"; +import { bash, read, grep } from "smthrs/tools"; import { z } from "zod"; import GatherEvidencePrompt from "./prompts/rollback-advisor/gather-evidence.mdx"; import AdvisePrompt from "./prompts/rollback-advisor/advise.mdx"; diff --git a/docs/references/smithers/examples/runbook-executor.jsx b/docs/references/smithers/examples/runbook-executor.jsx index cab957649..d9a8d1f36 100644 --- a/docs/references/smithers/examples/runbook-executor.jsx +++ b/docs/references/smithers/examples/runbook-executor.jsx @@ -6,11 +6,11 @@ * Use cases: incident response, maintenance windows, deployment runbooks, * infrastructure changes, database migrations with manual gates. */ -import { Sequence, Loop } from "smithers-orchestrator"; +import { Sequence, Loop } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ClassifyPrompt from "./prompts/runbook-executor/classify.mdx"; import ExecutePrompt from "./prompts/runbook-executor/execute.mdx"; diff --git a/docs/references/smithers/examples/scaffold.jsx b/docs/references/smithers/examples/scaffold.jsx index c71082c2d..8062e88d6 100644 --- a/docs/references/smithers/examples/scaffold.jsx +++ b/docs/references/smithers/examples/scaffold.jsx @@ -6,11 +6,11 @@ * Use cases: new project setup, feature scaffolding, component generation, * API endpoint generation, test file generation. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, bash, grep } from "smthrs/tools"; import { z } from "zod"; import BlueprintPrompt from "./prompts/scaffold/blueprint.mdx"; import GeneratePrompt from "./prompts/scaffold/generate.mdx"; diff --git a/docs/references/smithers/examples/schema-conformance-gate.jsx b/docs/references/smithers/examples/schema-conformance-gate.jsx index d8015769c..7a6824181 100644 --- a/docs/references/smithers/examples/schema-conformance-gate.jsx +++ b/docs/references/smithers/examples/schema-conformance-gate.jsx @@ -7,11 +7,11 @@ * Use cases: LLM output validation, ETL quality gates, API response conformance, * form submission validation, data pipeline integrity checks. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash, read } from "smithers-orchestrator/tools"; +import { bash, read } from "smthrs/tools"; import { z } from "zod"; import ValidatePrompt from "./prompts/schema-conformance-gate/validate.mdx"; import DiagnosePrompt from "./prompts/schema-conformance-gate/diagnose.mdx"; diff --git a/docs/references/smithers/examples/service-desk-dispatcher.jsx b/docs/references/smithers/examples/service-desk-dispatcher.jsx index 7cb757e69..2ee11a79c 100644 --- a/docs/references/smithers/examples/service-desk-dispatcher.jsx +++ b/docs/references/smithers/examples/service-desk-dispatcher.jsx @@ -7,11 +7,11 @@ * Use cases: IT help desk, internal service requests, policy FAQ routing, * incident management, request fulfillment. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import IntakePrompt from "./prompts/service-desk-dispatcher/intake.mdx"; import ClassifyPrompt from "./prompts/service-desk-dispatcher/classify.mdx"; diff --git a/docs/references/smithers/examples/simple-workflow.jsx b/docs/references/smithers/examples/simple-workflow.jsx index 25800642c..445d40c0e 100644 --- a/docs/references/smithers/examples/simple-workflow.jsx +++ b/docs/references/smithers/examples/simple-workflow.jsx @@ -1,4 +1,4 @@ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; diff --git a/docs/references/smithers/examples/slo-breach-explainer.jsx b/docs/references/smithers/examples/slo-breach-explainer.jsx index 56ebfc53b..17be84c0f 100644 --- a/docs/references/smithers/examples/slo-breach-explainer.jsx +++ b/docs/references/smithers/examples/slo-breach-explainer.jsx @@ -6,11 +6,11 @@ * Pattern: metrics trigger → trace/log fetchers (parallel) → synthesis agent → incident note. * Use cases: SLO breach triage, incident root-cause summaries, on-call handoff notes. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import TriggerPrompt from "./prompts/slo-breach-explainer/trigger.mdx"; import TracesPrompt from "./prompts/slo-breach-explainer/traces.mdx"; diff --git a/docs/references/smithers/examples/smoketest.jsx b/docs/references/smithers/examples/smoketest.jsx index 4d4c9b37f..49f57bbfe 100644 --- a/docs/references/smithers/examples/smoketest.jsx +++ b/docs/references/smithers/examples/smoketest.jsx @@ -4,11 +4,11 @@ * Pattern: Provision → Execute checks → Aggregate pass/fail → Report. * Use cases: release validation, deploy verification, environment health checks. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash, read } from "smithers-orchestrator/tools"; +import { bash, read } from "smthrs/tools"; import { z } from "zod"; import SetupPrompt from "./prompts/smoketest/setup.mdx"; import CheckPrompt from "./prompts/smoketest/check.mdx"; diff --git a/docs/references/smithers/examples/social-inbox-router.jsx b/docs/references/smithers/examples/social-inbox-router.jsx index 5a9cf7cad..0539ae717 100644 --- a/docs/references/smithers/examples/social-inbox-router.jsx +++ b/docs/references/smithers/examples/social-inbox-router.jsx @@ -5,11 +5,11 @@ * * Shape: social trigger -> classifier -> action router. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import TriggerPrompt from "./prompts/social-inbox-router/trigger.mdx"; import ClassifyPrompt from "./prompts/social-inbox-router/classify.mdx"; diff --git a/docs/references/smithers/examples/standards-reviewer.jsx b/docs/references/smithers/examples/standards-reviewer.jsx index 96065cc31..ba36adf65 100644 --- a/docs/references/smithers/examples/standards-reviewer.jsx +++ b/docs/references/smithers/examples/standards-reviewer.jsx @@ -5,11 +5,11 @@ * * Shape: PR diff → standards loader → reviewer agent → review output. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import LoadStandardsPrompt from "./prompts/standards-reviewer/load-standards.mdx"; import ReviewDiffPrompt from "./prompts/standards-reviewer/review-diff.mdx"; diff --git a/docs/references/smithers/examples/supervisor.jsx b/docs/references/smithers/examples/supervisor.jsx index 038b2b637..8ea2b381d 100644 --- a/docs/references/smithers/examples/supervisor.jsx +++ b/docs/references/smithers/examples/supervisor.jsx @@ -4,11 +4,11 @@ * Pattern: Supervisor plans → spawns workers → reviews results → re-delegates failures. * Use cases: project manager agent, team lead, dynamic task allocation. */ -import { Sequence, Parallel, Loop, Worktree } from "smithers-orchestrator"; +import { Sequence, Parallel, Loop, Worktree } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, edit, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, edit, bash, grep } from "smthrs/tools"; import { z } from "zod"; import DelegatePrompt from "./prompts/supervisor/delegate.mdx"; import WorkerPrompt from "./prompts/supervisor/worker.mdx"; diff --git a/docs/references/smithers/examples/support-deflector.jsx b/docs/references/smithers/examples/support-deflector.jsx index 26117272b..136cf4edf 100644 --- a/docs/references/smithers/examples/support-deflector.jsx +++ b/docs/references/smithers/examples/support-deflector.jsx @@ -7,11 +7,11 @@ * Use cases: support ticket deflection, knowledge-base self-service, tier-1 automation, * customer success auto-reply, FAQ routing. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ClassifyPrompt from "./prompts/support-deflector/classify.mdx"; import RetrievePrompt from "./prompts/support-deflector/retrieve.mdx"; diff --git a/docs/references/smithers/examples/survey-answerer-agent.jsx b/docs/references/smithers/examples/survey-answerer-agent.jsx index 743b9b857..4cebdef27 100644 --- a/docs/references/smithers/examples/survey-answerer-agent.jsx +++ b/docs/references/smithers/examples/survey-answerer-agent.jsx @@ -4,11 +4,11 @@ * * Shape: context gatherer → answer generator → validator. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import GatherContextPrompt from "./prompts/survey-answerer-agent/gather-context.mdx"; import GenerateAnswersPrompt from "./prompts/survey-answerer-agent/generate-answers.mdx"; diff --git a/docs/references/smithers/examples/swe-evo/run.ts b/docs/references/smithers/examples/swe-evo/run.ts index 6cdd3c8fa..42a4a687d 100644 --- a/docs/references/smithers/examples/swe-evo/run.ts +++ b/docs/references/smithers/examples/swe-evo/run.ts @@ -17,9 +17,9 @@ */ import { Effect } from "effect"; -import { runWorkflow } from "@smithers-orchestrator/engine"; -import { loadOutputs } from "@smithers-orchestrator/db/snapshot"; -import { Gateway } from "@smithers-orchestrator/server/gateway"; +import { runWorkflow } from "@smthrs/engine"; +import { loadOutputs } from "@smthrs/db/snapshot"; +import { Gateway } from "@smthrs/server/gateway"; import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "node:fs"; import { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; diff --git a/docs/references/smithers/examples/swe-evo/workflow/swe-evo.tsx b/docs/references/smithers/examples/swe-evo/workflow/swe-evo.tsx index dc6ee1d19..a9445152a 100644 --- a/docs/references/smithers/examples/swe-evo/workflow/swe-evo.tsx +++ b/docs/references/smithers/examples/swe-evo/workflow/swe-evo.tsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ /** * SWE-EVO benchmark workflow. * @@ -17,8 +17,8 @@ * suite in the instance's Docker image (see harness/score_instance.py). */ -import { createSmithers } from "smithers-orchestrator"; -import { ClaudeCodeAgent, CodexAgent } from "@smithers-orchestrator/agents"; +import { createSmithers } from "smthrs"; +import { ClaudeCodeAgent, CodexAgent } from "@smthrs/agents"; import { mkdirSync } from "node:fs"; import { dirname } from "node:path"; import { z } from "zod/v4"; diff --git a/docs/references/smithers/examples/test-sharder-judge.jsx b/docs/references/smithers/examples/test-sharder-judge.jsx index 9f7ea4144..140fcdade 100644 --- a/docs/references/smithers/examples/test-sharder-judge.jsx +++ b/docs/references/smithers/examples/test-sharder-judge.jsx @@ -5,11 +5,11 @@ * * Shape: change analyzer → test selector agent → sharded runners → result adjudicator. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import AnalyzePrompt from "./prompts/test-sharder-judge/analyze.mdx"; import SelectPrompt from "./prompts/test-sharder-judge/select.mdx"; diff --git a/docs/references/smithers/examples/threat-intel-enricher.jsx b/docs/references/smithers/examples/threat-intel-enricher.jsx index 6698847ca..d80ee8733 100644 --- a/docs/references/smithers/examples/threat-intel-enricher.jsx +++ b/docs/references/smithers/examples/threat-intel-enricher.jsx @@ -5,11 +5,11 @@ * * Shape: alert ingester -> enrichment tools/APIs -> analyst agent -> case system. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import IngestPrompt from "./prompts/threat-intel-enricher/ingest.mdx"; import ExternalEnrichPrompt from "./prompts/threat-intel-enricher/external-enrich.mdx"; diff --git a/docs/references/smithers/examples/trace-explainer.jsx b/docs/references/smithers/examples/trace-explainer.jsx index ef7360d85..573582ed5 100644 --- a/docs/references/smithers/examples/trace-explainer.jsx +++ b/docs/references/smithers/examples/trace-explainer.jsx @@ -5,11 +5,11 @@ * * Shape: trace store → analyzer agent → optimization report. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import IngestPrompt from "./prompts/trace-explainer/ingest.mdx"; import AnalyzePrompt from "./prompts/trace-explainer/analyze.mdx"; diff --git a/docs/references/smithers/examples/triage.jsx b/docs/references/smithers/examples/triage.jsx index 9840f8676..e7989be2a 100644 --- a/docs/references/smithers/examples/triage.jsx +++ b/docs/references/smithers/examples/triage.jsx @@ -5,11 +5,11 @@ * Use cases: bug triage, support ticket routing, PR labeling, alert handling, * email classification, content moderation. */ -import { Sequence, Parallel } from "smithers-orchestrator"; +import { Sequence, Parallel } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ClassifyPrompt from "./prompts/triage/classify.mdx"; import HandlePrompt from "./prompts/triage/handle.mdx"; diff --git a/docs/references/smithers/examples/trust-safety-moderator.jsx b/docs/references/smithers/examples/trust-safety-moderator.jsx index cfc8c544f..942b2d102 100644 --- a/docs/references/smithers/examples/trust-safety-moderator.jsx +++ b/docs/references/smithers/examples/trust-safety-moderator.jsx @@ -5,11 +5,11 @@ * Use cases: user-generated content moderation, AI output screening, policy enforcement, * abuse detection, compliance gating. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import IntakePrompt from "./prompts/trust-safety-moderator/intake.mdx"; import ModeratePrompt from "./prompts/trust-safety-moderator/moderate.mdx"; diff --git a/docs/references/smithers/examples/tsconfig.json b/docs/references/smithers/examples/tsconfig.json index 80fa12d4c..ab8151f61 100644 --- a/docs/references/smithers/examples/tsconfig.json +++ b/docs/references/smithers/examples/tsconfig.json @@ -2,178 +2,178 @@ "extends": "../tsconfig.json", "compilerOptions": { "paths": { - "smithers-orchestrator": [ + "smthrs": [ "../packages/smithers/src/examples-entry.js" ], - "smithers-orchestrator/jsx-runtime": [ + "smthrs/jsx-runtime": [ "../packages/smithers/src/jsx-runtime.js" ], - "smithers-orchestrator/jsx-dev-runtime": [ + "smthrs/jsx-dev-runtime": [ "../packages/smithers/src/jsx-runtime.js" ], - "smithers-orchestrator/tools": [ + "smthrs/tools": [ "../packages/smithers/src/tools.js" ], - "smithers-orchestrator/*": [ + "smthrs/*": [ "../packages/smithers/src/*.js", "../packages/smithers/src/*/index.js" ], - "smithers-orchestrator/scorers": [ + "smthrs/scorers": [ "../packages/scorers/src/index.js" ], - "@smithers-orchestrator/agents": [ + "@smthrs/agents": [ "../packages/agents/src/index.js" ], - "@smithers-orchestrator/agents/*": [ + "@smthrs/agents/*": [ "../packages/agents/src/*.ts", "../packages/agents/src/*.js", "../packages/agents/src/*/index.js" ], - "@smithers-orchestrator/components": [ + "@smthrs/components": [ "../packages/components/src/index.js" ], - "@smithers-orchestrator/components/*": [ + "@smthrs/components/*": [ "../packages/components/src/*.ts", "../packages/components/src/*.js", "../packages/components/src/*/index.js" ], - "@smithers-orchestrator/db": [ + "@smthrs/db": [ "../packages/db/src/index.ts", "../packages/db/src/index.js" ], - "@smithers-orchestrator/db/runState": [ + "@smthrs/db/runState": [ "../packages/db/src/runState-types.ts", "../packages/db/src/runState.js" ], - "@smithers-orchestrator/db/*": [ + "@smthrs/db/*": [ "../packages/db/src/*.ts", "../packages/db/src/*.js", "../packages/db/src/*/index.js" ], - "@smithers-orchestrator/devtools": [ + "@smthrs/devtools": [ "../packages/devtools/src/index.js" ], - "@smithers-orchestrator/devtools/*": [ + "@smthrs/devtools/*": [ "../packages/devtools/src/*.ts", "../packages/devtools/src/*.js", "../packages/devtools/src/*/index.js" ], - "@smithers-orchestrator/driver": [ + "@smthrs/driver": [ "../packages/driver/src/index.js" ], - "@smithers-orchestrator/driver/*": [ + "@smthrs/driver/*": [ "../packages/driver/src/*.ts", "../packages/driver/src/*.js", "../packages/driver/src/*/index.js" ], - "@smithers-orchestrator/engine": [ + "@smthrs/engine": [ "../packages/engine/src/index.js" ], - "@smithers-orchestrator/engine/*": [ + "@smthrs/engine/*": [ "../packages/engine/src/*.ts", "../packages/engine/src/*.js", "../packages/engine/src/*/index.js" ], - "@smithers-orchestrator/errors": [ + "@smthrs/errors": [ "../packages/errors/src/index.js" ], - "@smithers-orchestrator/errors/*": [ + "@smthrs/errors/*": [ "../packages/errors/src/*.ts", "../packages/errors/src/*.js", "../packages/errors/src/*/index.js" ], - "@smithers-orchestrator/graph": [ + "@smthrs/graph": [ "../packages/graph/src/index.js" ], - "@smithers-orchestrator/graph/*": [ + "@smthrs/graph/*": [ "../packages/graph/src/*.ts", "../packages/graph/src/*.js", "../packages/graph/src/*/index.js" ], - "@smithers-orchestrator/memory": [ + "@smthrs/memory": [ "../packages/memory/src/index.js" ], - "@smithers-orchestrator/memory/*": [ + "@smthrs/memory/*": [ "../packages/memory/src/*.ts", "../packages/memory/src/*.js", "../packages/memory/src/*/index.js" ], - "@smithers-orchestrator/observability": [ + "@smthrs/observability": [ "../apps/observability/src/index.js" ], - "@smithers-orchestrator/observability/*": [ + "@smthrs/observability/*": [ "../apps/observability/src/*.ts", "../apps/observability/src/*.js", "../apps/observability/src/*/index.js" ], - "@smithers-orchestrator/openapi": [ + "@smthrs/openapi": [ "../packages/openapi/src/index.js" ], - "@smithers-orchestrator/openapi/*": [ + "@smthrs/openapi/*": [ "../packages/openapi/src/*.ts", "../packages/openapi/src/*.js", "../packages/openapi/src/*/index.js" ], - "@smithers-orchestrator/protocol": [ + "@smthrs/protocol": [ "../packages/protocol/src/index.js" ], - "@smithers-orchestrator/protocol/*": [ + "@smthrs/protocol/*": [ "../packages/protocol/src/*.ts", "../packages/protocol/src/*.js", "../packages/protocol/src/*/index.js" ], - "@smithers-orchestrator/react-reconciler": [ + "@smthrs/react-reconciler": [ "../packages/react-reconciler/src/index.js" ], - "@smithers-orchestrator/react-reconciler/*": [ + "@smthrs/react-reconciler/*": [ "../packages/react-reconciler/src/*.ts", "../packages/react-reconciler/src/*.js", "../packages/react-reconciler/src/*/index.js" ], - "@smithers-orchestrator/sandbox": [ + "@smthrs/sandbox": [ "../packages/sandbox/src/index.js" ], - "@smithers-orchestrator/sandbox/*": [ + "@smthrs/sandbox/*": [ "../packages/sandbox/src/*.ts", "../packages/sandbox/src/*.js", "../packages/sandbox/src/*/index.js" ], - "@smithers-orchestrator/scheduler": [ + "@smthrs/scheduler": [ "../packages/scheduler/src/index.js" ], - "@smithers-orchestrator/scheduler/*": [ + "@smthrs/scheduler/*": [ "../packages/scheduler/src/*.ts", "../packages/scheduler/src/*.js", "../packages/scheduler/src/*/index.js" ], - "@smithers-orchestrator/scorers": [ + "@smthrs/scorers": [ "../packages/scorers/src/index.js" ], - "@smithers-orchestrator/scorers/*": [ + "@smthrs/scorers/*": [ "../packages/scorers/src/*.ts", "../packages/scorers/src/*.js", "../packages/scorers/src/*/index.js" ], - "@smithers-orchestrator/server": [ + "@smthrs/server": [ "../packages/server/src/index.js" ], - "@smithers-orchestrator/server/*": [ + "@smthrs/server/*": [ "../packages/server/src/*.ts", "../packages/server/src/*.js", "../packages/server/src/*/index.js" ], - "@smithers-orchestrator/time-travel": [ + "@smthrs/time-travel": [ "../packages/time-travel/src/index.js" ], - "@smithers-orchestrator/time-travel/*": [ + "@smthrs/time-travel/*": [ "../packages/time-travel/src/*.ts", "../packages/time-travel/src/*.js", "../packages/time-travel/src/*/index.js" ], - "@smithers-orchestrator/vcs": [ + "@smthrs/vcs": [ "../packages/vcs/src/index.js" ], - "@smithers-orchestrator/vcs/*": [ + "@smthrs/vcs/*": [ "../packages/vcs/src/*.ts", "../packages/vcs/src/*.js", "../packages/vcs/src/*/index.js" diff --git a/docs/references/smithers/examples/tweet-thread.jsx b/docs/references/smithers/examples/tweet-thread.jsx index 25dca2b99..7e7420d12 100644 --- a/docs/references/smithers/examples/tweet-thread.jsx +++ b/docs/references/smithers/examples/tweet-thread.jsx @@ -4,7 +4,7 @@ * Set these env vars: * X_API_KEY, X_API_SECRET, X_ACCESS_TOKEN, X_ACCESS_SECRET */ -import { Sequence, Timer } from "smithers-orchestrator"; +import { Sequence, Timer } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { z } from "zod"; diff --git a/docs/references/smithers/examples/typed-extractor-stage.jsx b/docs/references/smithers/examples/typed-extractor-stage.jsx index 227ab534d..6e803e222 100644 --- a/docs/references/smithers/examples/typed-extractor-stage.jsx +++ b/docs/references/smithers/examples/typed-extractor-stage.jsx @@ -4,11 +4,11 @@ * * Shape: raw input → extractor agent → typed state → next workflow step. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, bash, grep } from "smithers-orchestrator/tools"; +import { read, bash, grep } from "smthrs/tools"; import { z } from "zod"; import ExtractPrompt from "./prompts/typed-extractor-stage/extract.mdx"; import ValidatePrompt from "./prompts/typed-extractor-stage/validate.mdx"; diff --git a/docs/references/smithers/examples/visual-diff-explainer.jsx b/docs/references/smithers/examples/visual-diff-explainer.jsx index 0d5677fb2..8b2ea9fbb 100644 --- a/docs/references/smithers/examples/visual-diff-explainer.jsx +++ b/docs/references/smithers/examples/visual-diff-explainer.jsx @@ -5,11 +5,11 @@ * Pattern: Visual test runner → image pair collector → vision agent → report sink. * Use cases: visual regression triage, screenshot diff review, UI change attribution. */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash, read, write } from "smithers-orchestrator/tools"; +import { bash, read, write } from "smthrs/tools"; import { z } from "zod"; import RunTestsPrompt from "./prompts/visual-diff-explainer/run-tests.mdx"; import CollectPairsPrompt from "./prompts/visual-diff-explainer/collect-pairs.mdx"; diff --git a/docs/references/smithers/examples/waterfall.jsx b/docs/references/smithers/examples/waterfall.jsx index 14f2cba60..966db4cf6 100644 --- a/docs/references/smithers/examples/waterfall.jsx +++ b/docs/references/smithers/examples/waterfall.jsx @@ -5,11 +5,11 @@ * Use cases: multi-stage pipelines, progressive refinement, build pipelines, * content pipelines (outline → draft → edit → publish). */ -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; import { createExampleSmithers } from "./_example-kit.js"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, write, edit, bash, grep } from "smithers-orchestrator/tools"; +import { read, write, edit, bash, grep } from "smthrs/tools"; import { z } from "zod"; import OutlinePrompt from "./prompts/waterfall/outline.mdx"; import DraftPrompt from "./prompts/waterfall/draft.mdx"; diff --git a/docs/references/smithers/package.json b/docs/references/smithers/package.json index 58293d81a..19565df8e 100644 --- a/docs/references/smithers/package.json +++ b/docs/references/smithers/package.json @@ -61,7 +61,7 @@ "bun" ], "scripts": { - "dev": "pnpm --filter @smithers-orchestrator/smithers dev", + "dev": "pnpm --filter @smthrs/smithers dev", "dev:studio": "bun apps/smithers-studio-2/scripts/dev.ts", "typecheck": "tsc --noEmit", "typecheck:examples": "tsc -p examples/tsconfig.json --noEmit", @@ -69,8 +69,8 @@ "lint:fix": "oxlint --react-plugin --node-plugin --import-plugin --ignore-path .gitignore -A react/no-children-prop -A unicorn/no-thenable --ignore-pattern 'packages/*/src/**/*.d.ts' --fix --fix-suggestions packages/*/src packages/*/tests", "cli": "bun run apps/cli/src/index.js", "generate:init-pack": "bun scripts/generate-workflow-pack.ts", - "demo:smithers": "pnpm --filter @smithers-orchestrator/smithers-demo dev", - "demo:smithers:tui": "pnpm --filter @smithers-orchestrator/smithers-tui-demo tui", + "demo:smithers": "pnpm --filter @smthrs/smithers-demo dev", + "demo:smithers:tui": "pnpm --filter @smthrs/smithers-tui-demo tui", "test": "node scripts/check-single-effect-version.mjs && node scripts/check-dependency-boundaries.mjs && node scripts/check-llms.mjs && pnpm -r test", "check:effect": "node scripts/check-single-effect-version.mjs", "check:deps": "node scripts/check-dependency-boundaries.mjs", @@ -102,30 +102,30 @@ "@effect/workflow": "^0.18.0", "@happy-dom/global-registrator": "^20.9.0", "@mdx-js/esbuild": "^3.1.1", - "@smithers-orchestrator/agents": "workspace:*", - "@smithers-orchestrator/cli": "workspace:*", - "@smithers-orchestrator/components": "workspace:*", - "@smithers-orchestrator/control-plane": "workspace:*", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/devtools": "workspace:*", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/engine": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/gateway": "workspace:*", - "@smithers-orchestrator/gateway-client": "workspace:*", - "@smithers-orchestrator/gateway-react": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "@smithers-orchestrator/memory": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/openapi": "workspace:*", - "@smithers-orchestrator/protocol": "workspace:*", - "@smithers-orchestrator/react-reconciler": "workspace:*", - "@smithers-orchestrator/sandbox": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "@smithers-orchestrator/scorers": "workspace:*", - "@smithers-orchestrator/server": "workspace:*", - "@smithers-orchestrator/time-travel": "workspace:*", - "@smithers-orchestrator/vcs": "workspace:*", + "@smthrs/agents": "^0.33.0", + "@smthrs/cli": "^0.33.0", + "@smthrs/components": "^0.33.0", + "@smthrs/control-plane": "^0.33.0", + "@smthrs/db": "^0.33.0", + "@smthrs/devtools": "^0.33.0", + "@smthrs/driver": "^0.33.0", + "@smthrs/engine": "^0.33.0", + "@smthrs/errors": "^0.33.0", + "@smthrs/gateway": "^0.33.0", + "@smthrs/gateway-client": "^0.33.0", + "@smthrs/gateway-react": "^0.33.0", + "@smthrs/graph": "^0.33.0", + "@smthrs/memory": "^0.33.0", + "@smthrs/observability": "^0.33.0", + "@smthrs/openapi": "^0.33.0", + "@smthrs/protocol": "^0.33.0", + "@smthrs/react-reconciler": "^0.33.0", + "@smthrs/sandbox": "^0.33.0", + "@smthrs/scheduler": "^0.33.0", + "@smthrs/scorers": "^0.33.0", + "@smthrs/server": "^0.33.0", + "@smthrs/time-travel": "^0.33.0", + "@smthrs/vcs": "^0.33.0", "@tanstack/react-query": "^5.99.1", "@types/bun": "latest", "@types/mdx": "^2.0.13", @@ -141,7 +141,7 @@ "oxlint": "^1.60.0", "react": "^19.2.5", "react-dom": "^19.2.5", - "smithers-orchestrator": "workspace:*", + "smthrs": "^0.33.0", "tsup": "^8.5.1", "twitter-api-v2": "^1.29.0", "typescript": "~5.9.3", diff --git a/docs/references/smithers/packages/accounts/package.json b/docs/references/smithers/packages/accounts/package.json index 3b142ef14..14fd85683 100644 --- a/docs/references/smithers/packages/accounts/package.json +++ b/docs/references/smithers/packages/accounts/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/accounts", + "name": "@smthrs/accounts", "version": "0.23.0", "description": "Manage multiple Claude/Antigravity/Codex/Gemini/Kimi subscription and API-key accounts that Smithers agents can round-robin through.", "type": "module", @@ -25,7 +25,7 @@ "build": "tsup --dts-only" }, "dependencies": { - "@smithers-orchestrator/errors": "workspace:*" + "@smthrs/errors": "^0.33.0" }, "devDependencies": { "@types/bun": "latest", diff --git a/docs/references/smithers/packages/accounts/src/accountToProviderEnv.js b/docs/references/smithers/packages/accounts/src/accountToProviderEnv.js index bec500a95..a9a3477e8 100644 --- a/docs/references/smithers/packages/accounts/src/accountToProviderEnv.js +++ b/docs/references/smithers/packages/accounts/src/accountToProviderEnv.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** * Maps an account to the environment variables that the spawned CLI honors. diff --git a/docs/references/smithers/packages/accounts/src/addAccount.js b/docs/references/smithers/packages/accounts/src/addAccount.js index e23b88f2b..fbf6d9675 100644 --- a/docs/references/smithers/packages/accounts/src/addAccount.js +++ b/docs/references/smithers/packages/accounts/src/addAccount.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { readAccounts } from "./readAccounts.js"; import { writeAccounts } from "./writeAccounts.js"; import { API_KEY_PROVIDERS, SUBSCRIPTION_PROVIDERS, VALID_PROVIDERS } from "./parseAccountsFile.js"; diff --git a/docs/references/smithers/packages/accounts/src/defaultConfigDir.js b/docs/references/smithers/packages/accounts/src/defaultConfigDir.js index cc4eed619..7a5daee0f 100644 --- a/docs/references/smithers/packages/accounts/src/defaultConfigDir.js +++ b/docs/references/smithers/packages/accounts/src/defaultConfigDir.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { join, resolve } from "node:path"; import { accountsRoot } from "./accountsRoot.js"; diff --git a/docs/references/smithers/packages/accounts/src/parseAccountsFile.js b/docs/references/smithers/packages/accounts/src/parseAccountsFile.js index 7e2b0b11d..b5232ac9c 100644 --- a/docs/references/smithers/packages/accounts/src/parseAccountsFile.js +++ b/docs/references/smithers/packages/accounts/src/parseAccountsFile.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; const VALID_PROVIDERS = new Set([ "claude-code", diff --git a/docs/references/smithers/packages/accounts/src/removeAccount.js b/docs/references/smithers/packages/accounts/src/removeAccount.js index 5d16841a5..0e38a1dd4 100644 --- a/docs/references/smithers/packages/accounts/src/removeAccount.js +++ b/docs/references/smithers/packages/accounts/src/removeAccount.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { readAccounts } from "./readAccounts.js"; import { writeAccounts } from "./writeAccounts.js"; diff --git a/docs/references/smithers/packages/agents/package.json b/docs/references/smithers/packages/agents/package.json index 53fc65839..f34b2d4c3 100644 --- a/docs/references/smithers/packages/agents/package.json +++ b/docs/references/smithers/packages/agents/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/agents", + "name": "@smthrs/agents", "version": "0.23.0", "description": "AI SDK and CLI agent adapters for Smithers", "type": "module", @@ -53,9 +53,9 @@ "@ai-sdk/anthropic": "^3.0.71", "@ai-sdk/openai": "^3.0.53", "@modelcontextprotocol/sdk": "^1.29.0", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", + "@smthrs/driver": "^0.33.0", + "@smthrs/errors": "^0.33.0", + "@smthrs/observability": "^0.33.0", "ai": "^6.0.168", "effect": "^3.21.1", "zod": "^4.3.6" diff --git a/docs/references/smithers/packages/agents/src/AntigravityAgent.js b/docs/references/smithers/packages/agents/src/AntigravityAgent.js index 22f0bc53c..5c55387da 100644 --- a/docs/references/smithers/packages/agents/src/AntigravityAgent.js +++ b/docs/references/smithers/packages/agents/src/AntigravityAgent.js @@ -1,5 +1,5 @@ import { BaseCliAgent, pushFlag, pushList, isRecord, asString, truncate, toolKindFromName, createSyntheticIdGenerator, } from "./BaseCliAgent/index.js"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { normalizeCapabilityStringList, } from "./capability-registry/index.js"; import { getCliAgentSurfaceManifestEntry } from "./cli-surface/index.js"; /** @typedef {import("./capability-registry/AgentCapabilityRegistry.ts").AgentCapabilityRegistry} AgentCapabilityRegistry */ diff --git a/docs/references/smithers/packages/agents/src/BaseCliAgent/BaseCliAgent.js b/docs/references/smithers/packages/agents/src/BaseCliAgent/BaseCliAgent.js index b2de0bdaa..10e68e730 100644 --- a/docs/references/smithers/packages/agents/src/BaseCliAgent/BaseCliAgent.js +++ b/docs/references/smithers/packages/agents/src/BaseCliAgent/BaseCliAgent.js @@ -1,10 +1,10 @@ import { randomUUID } from "node:crypto"; import { promises as fs } from "node:fs"; import { Cause, Effect, Exit, Metric } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; -import { logDebug, logInfo, logWarning } from "@smithers-orchestrator/observability/logging"; -import { agentDurationMs, agentErrorsTotal, agentInvocationsTotal, agentRetriesTotal, agentTokensTotal, } from "@smithers-orchestrator/observability/metrics"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; +import { logDebug, logInfo, logWarning } from "@smthrs/observability/logging"; +import { agentDurationMs, agentErrorsTotal, agentInvocationsTotal, agentRetriesTotal, agentTokensTotal, } from "@smthrs/observability/metrics"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { launchDiagnostics, enrichReportWithErrorAnalysis, formatDiagnosticSummary } from "../diagnostics/index.js"; import { extractPrompt } from "./extractPrompt.js"; import { resolveTimeouts } from "./resolveTimeouts.js"; diff --git a/docs/references/smithers/packages/agents/src/BaseCliAgent/runCommandEffect.js b/docs/references/smithers/packages/agents/src/BaseCliAgent/runCommandEffect.js index 8ddff66e9..1532d488d 100644 --- a/docs/references/smithers/packages/agents/src/BaseCliAgent/runCommandEffect.js +++ b/docs/references/smithers/packages/agents/src/BaseCliAgent/runCommandEffect.js @@ -1,10 +1,10 @@ import { Effect } from "effect"; -import { spawnCaptureEffect } from "@smithers-orchestrator/driver/child-process"; +import { spawnCaptureEffect } from "@smthrs/driver/child-process"; /** * @typedef {{ cwd: string; env: Record<string, string>; input?: string; timeoutMs?: number; idleTimeoutMs?: number; signal?: AbortSignal; maxOutputBytes?: number; onStdout?: (chunk: string) => void; onStderr?: (chunk: string) => void; }} RunCommandOptions */ /** @typedef {import("./RunCommandResult.ts").RunCommandResult} RunCommandResult */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** * @param {string} command diff --git a/docs/references/smithers/packages/agents/src/BaseCliAgent/runRpcCommandEffect.js b/docs/references/smithers/packages/agents/src/BaseCliAgent/runRpcCommandEffect.js index 7ad812855..3cdc6b1c7 100644 --- a/docs/references/smithers/packages/agents/src/BaseCliAgent/runRpcCommandEffect.js +++ b/docs/references/smithers/packages/agents/src/BaseCliAgent/runRpcCommandEffect.js @@ -2,10 +2,10 @@ import { spawn } from "node:child_process"; import { randomUUID } from "node:crypto"; import { createInterface } from "node:readline"; import { Effect } from "effect"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; -import { logDebug, logWarning } from "@smithers-orchestrator/observability/logging"; -import { toolOutputTruncatedTotal } from "@smithers-orchestrator/observability/metrics"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; +import { logDebug, logWarning } from "@smthrs/observability/logging"; +import { toolOutputTruncatedTotal } from "@smthrs/observability/metrics"; import { Metric } from "effect"; import { extractTextFromJsonValue } from "./extractTextFromJsonValue.js"; import { truncateToBytes } from "./truncateToBytes.js"; diff --git a/docs/references/smithers/packages/agents/src/ClaudeCodeAgent.js b/docs/references/smithers/packages/agents/src/ClaudeCodeAgent.js index de030ffdb..57d35d1f8 100644 --- a/docs/references/smithers/packages/agents/src/ClaudeCodeAgent.js +++ b/docs/references/smithers/packages/agents/src/ClaudeCodeAgent.js @@ -1,6 +1,6 @@ import { BaseCliAgent, pushFlag, pushList, isRecord, asString, truncate, toolKindFromName, shouldSurfaceUnparsedStdout, isLikelyRuntimeMetadata, createSyntheticIdGenerator, } from "./BaseCliAgent/index.js"; import { normalizeCapabilityStringList, } from "./capability-registry/index.js"; -import { logWarning } from "@smithers-orchestrator/observability/logging"; +import { logWarning } from "@smthrs/observability/logging"; /** @typedef {import("./BaseCliAgent/BaseCliAgentOptions.ts").BaseCliAgentOptions} BaseCliAgentOptions */ /** @typedef {import("./capability-registry/AgentCapabilityRegistry.ts").AgentCapabilityRegistry} AgentCapabilityRegistry */ /** @typedef {import("./ClaudeCodeAgentOptions.ts").ClaudeCodeAgentOptions} ClaudeCodeAgentOptions */ diff --git a/docs/references/smithers/packages/agents/src/HermesAgent.js b/docs/references/smithers/packages/agents/src/HermesAgent.js index a0af5d235..6aecd61dd 100644 --- a/docs/references/smithers/packages/agents/src/HermesAgent.js +++ b/docs/references/smithers/packages/agents/src/HermesAgent.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { OpenAIAgent } from "./OpenAIAgent.js"; /** diff --git a/docs/references/smithers/packages/agents/src/KimiAgent.js b/docs/references/smithers/packages/agents/src/KimiAgent.js index a009be62f..24dccfdf0 100644 --- a/docs/references/smithers/packages/agents/src/KimiAgent.js +++ b/docs/references/smithers/packages/agents/src/KimiAgent.js @@ -4,7 +4,7 @@ import { join } from "node:path"; import { tmpdir, homedir } from "node:os"; import { BaseCliAgent, pushFlag, pushList, isRecord, asString, toolKindFromName, createSyntheticIdGenerator, } from "./BaseCliAgent/index.js"; import { normalizeCapabilityStringList, } from "./capability-registry/index.js"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** * The kimi CLI's OAuth refresh endpoint, mirroring the Python implementation @@ -77,8 +77,8 @@ async function refreshKimiTokenIfNeeded(credsDir, fileName) { "Content-Type": "application/x-www-form-urlencoded", "X-Msh-Platform": "kimi_cli", "X-Msh-Version": "1.37.0", - "X-Msh-Device-Name": "smithers-orchestrator", - "X-Msh-Device-Model": "smithers-orchestrator", + "X-Msh-Device-Name": "smthrs", + "X-Msh-Device-Model": "smthrs", "X-Msh-Os-Version": process.platform, }; try { diff --git a/docs/references/smithers/packages/agents/src/OpenAIAgent.js b/docs/references/smithers/packages/agents/src/OpenAIAgent.js index bdd277c88..e6d333efa 100644 --- a/docs/references/smithers/packages/agents/src/OpenAIAgent.js +++ b/docs/references/smithers/packages/agents/src/OpenAIAgent.js @@ -1,5 +1,5 @@ import { createOpenAI, openai } from "@ai-sdk/openai"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { Output, ToolLoopAgent, } from "ai"; import { resolveSdkModel } from "./resolveSdkModel.js"; import { streamResultToGenerateResult } from "./streamResultToGenerateResult.js"; diff --git a/docs/references/smithers/packages/agents/src/PiAgent.js b/docs/references/smithers/packages/agents/src/PiAgent.js index 39acd48af..0911e83ae 100644 --- a/docs/references/smithers/packages/agents/src/PiAgent.js +++ b/docs/references/smithers/packages/agents/src/PiAgent.js @@ -6,8 +6,8 @@ import { Effect } from "effect"; import { BaseCliAgent, buildGenerateResult, combineNonEmpty, extractPrompt, extractTextFromJsonValue, pushFlag, resolveTimeouts, runAgentPromise, runRpcCommandEffect, asString, truncate, toolKindFromName, } from "./BaseCliAgent/index.js"; import { normalizeCapabilityStringList, } from "./capability-registry/index.js"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { enrichReportWithErrorAnalysis, launchDiagnostics } from "./diagnostics/index.js"; /** @typedef {import("./capability-registry/AgentCapabilityRegistry.ts").AgentCapabilityRegistry} AgentCapabilityRegistry */ /** @typedef {import("./BaseCliAgent/CliOutputInterpreter.ts").CliOutputInterpreter} CliOutputInterpreter */ diff --git a/docs/references/smithers/packages/agents/src/diagnostics/runDiagnostics.js b/docs/references/smithers/packages/agents/src/diagnostics/runDiagnostics.js index 3a6bf540e..f1afcc1ce 100644 --- a/docs/references/smithers/packages/agents/src/diagnostics/runDiagnostics.js +++ b/docs/references/smithers/packages/agents/src/diagnostics/runDiagnostics.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** @typedef {import("./DiagnosticCheckId.ts").DiagnosticCheckId} DiagnosticCheckId */ /** diff --git a/docs/references/smithers/packages/agents/src/index.d.ts b/docs/references/smithers/packages/agents/src/index.d.ts index 0cccc670f..006566d23 100644 --- a/docs/references/smithers/packages/agents/src/index.d.ts +++ b/docs/references/smithers/packages/agents/src/index.d.ts @@ -1,7 +1,7 @@ import * as ai from 'ai'; import { ToolLoopAgent, ToolSet, ToolLoopAgentSettings } from 'ai'; import { Effect } from 'effect'; -import { SmithersError } from '@smithers-orchestrator/errors/SmithersError'; +import { SmithersError } from '@smthrs/errors/SmithersError'; import { openai } from '@ai-sdk/openai'; import { anthropic } from '@ai-sdk/anthropic'; import * as zod_v4_core from 'zod/v4/core'; diff --git a/docs/references/smithers/packages/agents/tests/agent-diagnostics.test.js b/docs/references/smithers/packages/agents/tests/agent-diagnostics.test.js index 3b80dee9b..788841740 100644 --- a/docs/references/smithers/packages/agents/tests/agent-diagnostics.test.js +++ b/docs/references/smithers/packages/agents/tests/agent-diagnostics.test.js @@ -1,7 +1,7 @@ import { describe, expect, test } from "bun:test"; import { runDiagnostics, getDiagnosticStrategy, enrichReportWithErrorAnalysis, formatDiagnosticSummary, launchDiagnostics, } from "../src/diagnostics/index.js"; import { BaseCliAgent } from "../src/BaseCliAgent/index.js"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; // --------------------------------------------------------------------------- // runDiagnostics // --------------------------------------------------------------------------- diff --git a/docs/references/smithers/packages/agents/tests/agent-integration.test.jsx b/docs/references/smithers/packages/agents/tests/agent-integration.test.jsx index ec626fbdb..30f758217 100644 --- a/docs/references/smithers/packages/agents/tests/agent-integration.test.jsx +++ b/docs/references/smithers/packages/agents/tests/agent-integration.test.jsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Workflow, Task, Sequence, runWorkflow } from "smithers-orchestrator"; +import { Workflow, Task, Sequence, runWorkflow } from "smthrs"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/agents/tests/capability-registry.test.js b/docs/references/smithers/packages/agents/tests/capability-registry.test.js index 74a8fcabd..de4b800f0 100644 --- a/docs/references/smithers/packages/agents/tests/capability-registry.test.js +++ b/docs/references/smithers/packages/agents/tests/capability-registry.test.js @@ -2,7 +2,7 @@ import { describe, expect, test } from "bun:test"; import React from "react"; import { z } from "zod"; import { mkdirSync, writeFileSync } from "node:fs"; -import { Workflow, Task, runWorkflow } from "smithers-orchestrator"; +import { Workflow, Task, runWorkflow } from "smthrs"; import { AntigravityAgent } from "../src/AntigravityAgent.js"; import { ClaudeCodeAgent } from "../src/ClaudeCodeAgent.js"; import { CodexAgent } from "../src/CodexAgent.js"; diff --git a/docs/references/smithers/packages/agents/tests/extract-usage.test.js b/docs/references/smithers/packages/agents/tests/extract-usage.test.js index fc0bc04eb..e87a6f58f 100644 --- a/docs/references/smithers/packages/agents/tests/extract-usage.test.js +++ b/docs/references/smithers/packages/agents/tests/extract-usage.test.js @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { extractUsageFromOutput } from "@smithers-orchestrator/agents/BaseCliAgent"; +import { extractUsageFromOutput } from "@smthrs/agents/BaseCliAgent"; describe("extractUsageFromOutput", () => { test("extracts tokens from Claude Code stream-json NDJSON", () => { diff --git a/docs/references/smithers/packages/components/package.json b/docs/references/smithers/packages/components/package.json index 5844ab3c4..d825aae24 100644 --- a/docs/references/smithers/packages/components/package.json +++ b/docs/references/smithers/packages/components/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/components", + "name": "@smthrs/components", "version": "0.23.0", "description": "React components for Smithers workflows", "type": "module", @@ -25,15 +25,15 @@ "build": "tsup --dts-only" }, "dependencies": { - "@smithers-orchestrator/agents": "workspace:*", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "@smithers-orchestrator/memory": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/react-reconciler": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", + "@smthrs/agents": "^0.33.0", + "@smthrs/db": "^0.33.0", + "@smthrs/driver": "^0.33.0", + "@smthrs/errors": "^0.33.0", + "@smthrs/graph": "^0.33.0", + "@smthrs/memory": "^0.33.0", + "@smthrs/observability": "^0.33.0", + "@smthrs/react-reconciler": "^0.33.0", + "@smthrs/scheduler": "^0.33.0", "bippy": "^0.5.39", "react": "^19.2.5", "react-dom": "^19.2.5", diff --git a/docs/references/smithers/packages/components/src/SmithersWorkflow.ts b/docs/references/smithers/packages/components/src/SmithersWorkflow.ts index 2cf50ad6e..0fe69b4b8 100644 --- a/docs/references/smithers/packages/components/src/SmithersWorkflow.ts +++ b/docs/references/smithers/packages/components/src/SmithersWorkflow.ts @@ -1 +1 @@ -export type { WorkflowDefinition as SmithersWorkflow } from "@smithers-orchestrator/driver/WorkflowDefinition"; +export type { WorkflowDefinition as SmithersWorkflow } from "@smthrs/driver/WorkflowDefinition"; diff --git a/docs/references/smithers/packages/components/src/components/Approval.js b/docs/references/smithers/packages/components/src/components/Approval.js index b8f5e8e74..46fcee2d7 100644 --- a/docs/references/smithers/packages/components/src/components/Approval.js +++ b/docs/references/smithers/packages/components/src/components/Approval.js @@ -7,10 +7,10 @@ import React from "react"; import { z } from "zod"; -import { SmithersContext } from "@smithers-orchestrator/react-reconciler/context"; -import { getTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersContext } from "@smthrs/react-reconciler/context"; +import { getTaskRuntime } from "@smthrs/driver/task-runtime"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** @typedef {import("./ApprovalAutoApprove.ts").ApprovalAutoApprove} ApprovalAutoApprove */ /** @typedef {import("./ApprovalMode.ts").ApprovalMode} ApprovalMode */ /** @typedef {import("./ApprovalOption.ts").ApprovalOption} ApprovalOption */ @@ -98,14 +98,14 @@ function normalizeOptions(options) { } /** * @param {ApprovalAutoApprove[keyof ApprovalAutoApprove]} callback - * @param {import("@smithers-orchestrator/driver").SmithersCtx<unknown> | null} ctx + * @param {import("@smthrs/driver").SmithersCtx<unknown> | null} ctx * @returns {boolean | undefined} */ function evaluateBooleanCallback(callback, ctx) { if (typeof callback !== "function") { return undefined; } - return Boolean(/** @type {(ctx: import("@smithers-orchestrator/driver").SmithersCtx<unknown> | null) => boolean} */ (callback)(ctx)); + return Boolean(/** @type {(ctx: import("@smthrs/driver").SmithersCtx<unknown> | null) => boolean} */ (callback)(ctx)); } /** * @template Row diff --git a/docs/references/smithers/packages/components/src/components/ApprovalAutoApprove.ts b/docs/references/smithers/packages/components/src/components/ApprovalAutoApprove.ts index 07831bb89..9d6b12a72 100644 --- a/docs/references/smithers/packages/components/src/components/ApprovalAutoApprove.ts +++ b/docs/references/smithers/packages/components/src/components/ApprovalAutoApprove.ts @@ -1,4 +1,4 @@ -import type { SmithersCtx } from "@smithers-orchestrator/driver"; +import type { SmithersCtx } from "@smthrs/driver"; export type ApprovalAutoApprove = { after?: number; diff --git a/docs/references/smithers/packages/components/src/components/ApprovalGateProps.ts b/docs/references/smithers/packages/components/src/components/ApprovalGateProps.ts index 437c3cbce..53f1df5d2 100644 --- a/docs/references/smithers/packages/components/src/components/ApprovalGateProps.ts +++ b/docs/references/smithers/packages/components/src/components/ApprovalGateProps.ts @@ -1,5 +1,5 @@ import type { ApprovalRequest } from "./ApprovalRequest.ts"; -import type { RetryPolicy } from "@smithers-orchestrator/scheduler/RetryPolicy"; +import type { RetryPolicy } from "@smthrs/scheduler/RetryPolicy"; import type { OutputTarget } from "./OutputTarget.ts"; export type ApprovalGateProps = { diff --git a/docs/references/smithers/packages/components/src/components/ApprovalProps.ts b/docs/references/smithers/packages/components/src/components/ApprovalProps.ts index d974e28a8..9f4d6b7e3 100644 --- a/docs/references/smithers/packages/components/src/components/ApprovalProps.ts +++ b/docs/references/smithers/packages/components/src/components/ApprovalProps.ts @@ -1,6 +1,6 @@ import type React from "react"; import type { z } from "zod"; -import type { SmithersCtx } from "@smithers-orchestrator/driver"; +import type { SmithersCtx } from "@smthrs/driver"; import type { ApprovalMode } from "./ApprovalMode.ts"; import type { ApprovalOption } from "./ApprovalOption.ts"; import type { ApprovalRequest } from "./ApprovalRequest.ts"; @@ -31,9 +31,9 @@ export type ApprovalProps<_Row = ApprovalDecision, Output extends OutputTarget = heartbeatTimeoutMs?: number; heartbeatTimeout?: number; retries?: number; - retryPolicy?: import("@smithers-orchestrator/scheduler/RetryPolicy").RetryPolicy; + retryPolicy?: import("@smthrs/scheduler/RetryPolicy").RetryPolicy; continueOnFail?: boolean; - cache?: import("@smithers-orchestrator/scheduler/CachePolicy").CachePolicy; + cache?: import("@smthrs/scheduler/CachePolicy").CachePolicy; label?: string; meta?: Record<string, unknown>; key?: string; diff --git a/docs/references/smithers/packages/components/src/components/CategoryConfig.ts b/docs/references/smithers/packages/components/src/components/CategoryConfig.ts index 26ef6a5ec..841f5a7b8 100644 --- a/docs/references/smithers/packages/components/src/components/CategoryConfig.ts +++ b/docs/references/smithers/packages/components/src/components/CategoryConfig.ts @@ -1,4 +1,4 @@ -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { OutputTarget } from "./OutputTarget.ts"; export type CategoryConfig = { diff --git a/docs/references/smithers/packages/components/src/components/CheckConfig.ts b/docs/references/smithers/packages/components/src/components/CheckConfig.ts index 6789053a2..0391304c7 100644 --- a/docs/references/smithers/packages/components/src/components/CheckConfig.ts +++ b/docs/references/smithers/packages/components/src/components/CheckConfig.ts @@ -1,4 +1,4 @@ -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; export type CheckConfig = { id: string; diff --git a/docs/references/smithers/packages/components/src/components/CheckSuite.js b/docs/references/smithers/packages/components/src/components/CheckSuite.js index 310eba5af..8cb03abf7 100644 --- a/docs/references/smithers/packages/components/src/components/CheckSuite.js +++ b/docs/references/smithers/packages/components/src/components/CheckSuite.js @@ -3,7 +3,7 @@ // @smithers-type-exports-end import React from "react"; -import { SmithersContext } from "@smithers-orchestrator/react-reconciler/context"; +import { SmithersContext } from "@smthrs/react-reconciler/context"; import { Sequence } from "./Sequence.js"; import { Parallel } from "./Parallel.js"; import { Task } from "./Task.js"; diff --git a/docs/references/smithers/packages/components/src/components/ClassifyAndRoute.js b/docs/references/smithers/packages/components/src/components/ClassifyAndRoute.js index 1b424478a..ae23adf1a 100644 --- a/docs/references/smithers/packages/components/src/components/ClassifyAndRoute.js +++ b/docs/references/smithers/packages/components/src/components/ClassifyAndRoute.js @@ -6,7 +6,7 @@ import React from "react"; import { Sequence } from "./Sequence.js"; import { Parallel } from "./Parallel.js"; import { Task } from "./Task.js"; -/** @typedef {import("@smithers-orchestrator/agents/AgentLike").AgentLike} AgentLike */ +/** @typedef {import("@smthrs/agents/AgentLike").AgentLike} AgentLike */ /** @typedef {import("./CategoryConfig.ts").CategoryConfig} CategoryConfig */ /** diff --git a/docs/references/smithers/packages/components/src/components/ClassifyAndRouteProps.ts b/docs/references/smithers/packages/components/src/components/ClassifyAndRouteProps.ts index 0463972df..da49cf7c8 100644 --- a/docs/references/smithers/packages/components/src/components/ClassifyAndRouteProps.ts +++ b/docs/references/smithers/packages/components/src/components/ClassifyAndRouteProps.ts @@ -1,5 +1,5 @@ import type React from "react"; -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { CategoryConfig } from "./CategoryConfig.ts"; import type { OutputTarget } from "./OutputTarget.ts"; diff --git a/docs/references/smithers/packages/components/src/components/ColumnDef.ts b/docs/references/smithers/packages/components/src/components/ColumnDef.ts index 937323798..6637eefc2 100644 --- a/docs/references/smithers/packages/components/src/components/ColumnDef.ts +++ b/docs/references/smithers/packages/components/src/components/ColumnDef.ts @@ -1,4 +1,4 @@ -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { TaskProps } from "./TaskProps.ts"; import type { OutputTarget } from "./OutputTarget.ts"; diff --git a/docs/references/smithers/packages/components/src/components/ContentPipelineStage.ts b/docs/references/smithers/packages/components/src/components/ContentPipelineStage.ts index 932a4cf0a..ef2632d47 100644 --- a/docs/references/smithers/packages/components/src/components/ContentPipelineStage.ts +++ b/docs/references/smithers/packages/components/src/components/ContentPipelineStage.ts @@ -1,4 +1,4 @@ -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { OutputTarget } from "./OutputTarget.ts"; export type ContentPipelineStage = { diff --git a/docs/references/smithers/packages/components/src/components/DebateProps.ts b/docs/references/smithers/packages/components/src/components/DebateProps.ts index 6f9b08c10..055b4b128 100644 --- a/docs/references/smithers/packages/components/src/components/DebateProps.ts +++ b/docs/references/smithers/packages/components/src/components/DebateProps.ts @@ -1,5 +1,5 @@ import type React from "react"; -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { OutputTarget } from "./OutputTarget.ts"; export type DebateProps = { diff --git a/docs/references/smithers/packages/components/src/components/DriftDetectorProps.ts b/docs/references/smithers/packages/components/src/components/DriftDetectorProps.ts index 6f27424f1..05d06e397 100644 --- a/docs/references/smithers/packages/components/src/components/DriftDetectorProps.ts +++ b/docs/references/smithers/packages/components/src/components/DriftDetectorProps.ts @@ -1,5 +1,5 @@ import type React from "react"; -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { OutputTarget } from "./OutputTarget.ts"; export type DriftDetectorProps = { diff --git a/docs/references/smithers/packages/components/src/components/EscalationChain.js b/docs/references/smithers/packages/components/src/components/EscalationChain.js index b6b8bf047..4fd4dbe0b 100644 --- a/docs/references/smithers/packages/components/src/components/EscalationChain.js +++ b/docs/references/smithers/packages/components/src/components/EscalationChain.js @@ -4,7 +4,7 @@ // @smithers-type-exports-end import React from "react"; -import { SmithersContext } from "@smithers-orchestrator/react-reconciler/context"; +import { SmithersContext } from "@smthrs/react-reconciler/context"; import { Sequence } from "./Sequence.js"; import { Branch } from "./Branch.js"; import { Task } from "./Task.js"; diff --git a/docs/references/smithers/packages/components/src/components/EscalationLevel.ts b/docs/references/smithers/packages/components/src/components/EscalationLevel.ts index 267bf3dd6..513c894b5 100644 --- a/docs/references/smithers/packages/components/src/components/EscalationLevel.ts +++ b/docs/references/smithers/packages/components/src/components/EscalationLevel.ts @@ -1,4 +1,4 @@ -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { OutputTarget } from "./OutputTarget.ts"; export type EscalationLevel = { diff --git a/docs/references/smithers/packages/components/src/components/GatherAndSynthesizeProps.ts b/docs/references/smithers/packages/components/src/components/GatherAndSynthesizeProps.ts index 3a3223457..823f38b54 100644 --- a/docs/references/smithers/packages/components/src/components/GatherAndSynthesizeProps.ts +++ b/docs/references/smithers/packages/components/src/components/GatherAndSynthesizeProps.ts @@ -1,5 +1,5 @@ import type React from "react"; -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { OutputTarget } from "./OutputTarget.ts"; import type { SourceDef } from "./SourceDef.ts"; diff --git a/docs/references/smithers/packages/components/src/components/HumanTask.js b/docs/references/smithers/packages/components/src/components/HumanTask.js index 357b199d2..23f48d797 100644 --- a/docs/references/smithers/packages/components/src/components/HumanTask.js +++ b/docs/references/smithers/packages/components/src/components/HumanTask.js @@ -1,9 +1,9 @@ import React from "react"; import { renderPromptToText } from "./Task.js"; -import { getTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { buildHumanRequestId } from "@smithers-orchestrator/db/buildHumanRequestId"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { getTaskRuntime } from "@smthrs/driver/task-runtime"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { buildHumanRequestId } from "@smthrs/db/buildHumanRequestId"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** @typedef {import("./HumanTaskProps.ts").HumanTaskProps} HumanTaskProps */ /** diff --git a/docs/references/smithers/packages/components/src/components/InferDeps.ts b/docs/references/smithers/packages/components/src/components/InferDeps.ts index 76280128c..45b35db57 100644 --- a/docs/references/smithers/packages/components/src/components/InferDeps.ts +++ b/docs/references/smithers/packages/components/src/components/InferDeps.ts @@ -1,5 +1,5 @@ import type { DepsSpec } from "./DepsSpec.ts"; -import type { InferOutputEntry } from "@smithers-orchestrator/driver/OutputAccessor"; +import type { InferOutputEntry } from "@smthrs/driver/OutputAccessor"; type InferDepValue<T> = T extends string ? unknown : InferOutputEntry<T>; diff --git a/docs/references/smithers/packages/components/src/components/KanbanProps.ts b/docs/references/smithers/packages/components/src/components/KanbanProps.ts index 46d4c1e4a..a121d2d4a 100644 --- a/docs/references/smithers/packages/components/src/components/KanbanProps.ts +++ b/docs/references/smithers/packages/components/src/components/KanbanProps.ts @@ -1,5 +1,5 @@ import type React from "react"; -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { ColumnDef } from "./ColumnDef.ts"; import type { OutputTarget } from "./OutputTarget.ts"; diff --git a/docs/references/smithers/packages/components/src/components/MergeQueue.js b/docs/references/smithers/packages/components/src/components/MergeQueue.js index cf13b8805..e97f0d078 100644 --- a/docs/references/smithers/packages/components/src/components/MergeQueue.js +++ b/docs/references/smithers/packages/components/src/components/MergeQueue.js @@ -1,5 +1,5 @@ import React from "react"; -import { DEFAULT_MERGE_QUEUE_CONCURRENCY } from "@smithers-orchestrator/graph/constants"; +import { DEFAULT_MERGE_QUEUE_CONCURRENCY } from "@smthrs/graph/constants"; /** @typedef {import("./MergeQueueProps.ts").MergeQueueProps} MergeQueueProps */ /** diff --git a/docs/references/smithers/packages/components/src/components/OptimizerProps.ts b/docs/references/smithers/packages/components/src/components/OptimizerProps.ts index 2f610976c..07b29b189 100644 --- a/docs/references/smithers/packages/components/src/components/OptimizerProps.ts +++ b/docs/references/smithers/packages/components/src/components/OptimizerProps.ts @@ -1,5 +1,5 @@ import type React from "react"; -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { OutputTarget } from "./OutputTarget.ts"; export type OptimizerProps = { diff --git a/docs/references/smithers/packages/components/src/components/Panel.js b/docs/references/smithers/packages/components/src/components/Panel.js index 6c7ef03ac..d10c4fdd5 100644 --- a/docs/references/smithers/packages/components/src/components/Panel.js +++ b/docs/references/smithers/packages/components/src/components/Panel.js @@ -6,7 +6,7 @@ import React from "react"; import { Sequence } from "./Sequence.js"; import { Parallel } from "./Parallel.js"; import { Task } from "./Task.js"; -/** @typedef {import("@smithers-orchestrator/agents/AgentLike").AgentLike} AgentLike */ +/** @typedef {import("@smthrs/agents/AgentLike").AgentLike} AgentLike */ /** @typedef {import("./PanelistConfig.ts").PanelistConfig} PanelistConfig */ /** diff --git a/docs/references/smithers/packages/components/src/components/PanelProps.ts b/docs/references/smithers/packages/components/src/components/PanelProps.ts index 8120bd930..02cb74869 100644 --- a/docs/references/smithers/packages/components/src/components/PanelProps.ts +++ b/docs/references/smithers/packages/components/src/components/PanelProps.ts @@ -1,5 +1,5 @@ import type React from "react"; -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { PanelistConfig } from "./PanelistConfig.ts"; import type { OutputTarget } from "./OutputTarget.ts"; diff --git a/docs/references/smithers/packages/components/src/components/PanelistConfig.ts b/docs/references/smithers/packages/components/src/components/PanelistConfig.ts index 4d681e8df..72247059e 100644 --- a/docs/references/smithers/packages/components/src/components/PanelistConfig.ts +++ b/docs/references/smithers/packages/components/src/components/PanelistConfig.ts @@ -1,4 +1,4 @@ -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; export type PanelistConfig = { agent: AgentLike; diff --git a/docs/references/smithers/packages/components/src/components/Poller.js b/docs/references/smithers/packages/components/src/components/Poller.js index b9379aa27..b8c2b91f1 100644 --- a/docs/references/smithers/packages/components/src/components/Poller.js +++ b/docs/references/smithers/packages/components/src/components/Poller.js @@ -1,5 +1,5 @@ import React from "react"; -import { SmithersContext } from "@smithers-orchestrator/react-reconciler/context"; +import { SmithersContext } from "@smthrs/react-reconciler/context"; import { Task } from "./Task.js"; import { Loop } from "./Ralph.js"; /** @typedef {import("./PollerProps.ts").PollerProps} PollerProps */ diff --git a/docs/references/smithers/packages/components/src/components/PollerProps.ts b/docs/references/smithers/packages/components/src/components/PollerProps.ts index 60047c4c3..3c37fffb3 100644 --- a/docs/references/smithers/packages/components/src/components/PollerProps.ts +++ b/docs/references/smithers/packages/components/src/components/PollerProps.ts @@ -1,5 +1,5 @@ import type React from "react"; -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { OutputTarget } from "./OutputTarget.ts"; export type PollerProps = { diff --git a/docs/references/smithers/packages/components/src/components/ReviewLoopProps.ts b/docs/references/smithers/packages/components/src/components/ReviewLoopProps.ts index 60798d1e7..693678024 100644 --- a/docs/references/smithers/packages/components/src/components/ReviewLoopProps.ts +++ b/docs/references/smithers/packages/components/src/components/ReviewLoopProps.ts @@ -1,5 +1,5 @@ import type React from "react"; -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { OutputTarget } from "./OutputTarget.ts"; export type ReviewLoopProps = { diff --git a/docs/references/smithers/packages/components/src/components/RunbookProps.ts b/docs/references/smithers/packages/components/src/components/RunbookProps.ts index 41d4e1407..6275a5252 100644 --- a/docs/references/smithers/packages/components/src/components/RunbookProps.ts +++ b/docs/references/smithers/packages/components/src/components/RunbookProps.ts @@ -1,4 +1,4 @@ -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { ApprovalRequest } from "./ApprovalRequest.ts"; import type { RunbookStep } from "./RunbookStep.ts"; import type { OutputTarget } from "./OutputTarget.ts"; diff --git a/docs/references/smithers/packages/components/src/components/RunbookStep.ts b/docs/references/smithers/packages/components/src/components/RunbookStep.ts index 7d35f8c1f..981bc3fd7 100644 --- a/docs/references/smithers/packages/components/src/components/RunbookStep.ts +++ b/docs/references/smithers/packages/components/src/components/RunbookStep.ts @@ -1,4 +1,4 @@ -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { OutputTarget } from "./OutputTarget.ts"; export type RunbookStep = { diff --git a/docs/references/smithers/packages/components/src/components/SandboxProps.ts b/docs/references/smithers/packages/components/src/components/SandboxProps.ts index f44de1566..89485d62a 100644 --- a/docs/references/smithers/packages/components/src/components/SandboxProps.ts +++ b/docs/references/smithers/packages/components/src/components/SandboxProps.ts @@ -1,6 +1,6 @@ import type React from "react"; -import type { CachePolicy } from "@smithers-orchestrator/scheduler/CachePolicy"; -import type { RetryPolicy } from "@smithers-orchestrator/scheduler/RetryPolicy"; +import type { CachePolicy } from "@smthrs/scheduler/CachePolicy"; +import type { RetryPolicy } from "@smthrs/scheduler/RetryPolicy"; import type { SmithersWorkflow } from "../SmithersWorkflow.ts"; import type { OutputTarget } from "./OutputTarget.ts"; import type { SandboxRuntime } from "./SandboxRuntime.ts"; diff --git a/docs/references/smithers/packages/components/src/components/ScanFixVerifyProps.ts b/docs/references/smithers/packages/components/src/components/ScanFixVerifyProps.ts index 88e731ec8..90339dac4 100644 --- a/docs/references/smithers/packages/components/src/components/ScanFixVerifyProps.ts +++ b/docs/references/smithers/packages/components/src/components/ScanFixVerifyProps.ts @@ -1,5 +1,5 @@ import type React from "react"; -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { OutputTarget } from "./OutputTarget.ts"; export type ScanFixVerifyProps = { diff --git a/docs/references/smithers/packages/components/src/components/Signal.js b/docs/references/smithers/packages/components/src/components/Signal.js index 44617adca..340135b47 100644 --- a/docs/references/smithers/packages/components/src/components/Signal.js +++ b/docs/references/smithers/packages/components/src/components/Signal.js @@ -1,7 +1,7 @@ import React from "react"; -import { SmithersContext } from "@smithers-orchestrator/react-reconciler/context"; -import { stripAutoColumns } from "@smithers-orchestrator/db/react-output"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersContext } from "@smthrs/react-reconciler/context"; +import { stripAutoColumns } from "@smthrs/db/react-output"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { WaitForEvent } from "./WaitForEvent.js"; /** * @template Schema diff --git a/docs/references/smithers/packages/components/src/components/SignalProps.ts b/docs/references/smithers/packages/components/src/components/SignalProps.ts index 3391fe949..38d4e63db 100644 --- a/docs/references/smithers/packages/components/src/components/SignalProps.ts +++ b/docs/references/smithers/packages/components/src/components/SignalProps.ts @@ -1,6 +1,6 @@ import type React from "react"; import type { z } from "zod"; -import type { SmithersCtx } from "@smithers-orchestrator/driver"; +import type { SmithersCtx } from "@smthrs/driver"; export type SignalProps<Schema extends z.ZodObject<z.ZodRawShape> = z.ZodObject<z.ZodRawShape>> = { id: string; diff --git a/docs/references/smithers/packages/components/src/components/SourceDef.ts b/docs/references/smithers/packages/components/src/components/SourceDef.ts index b6fdc105d..e8802ee05 100644 --- a/docs/references/smithers/packages/components/src/components/SourceDef.ts +++ b/docs/references/smithers/packages/components/src/components/SourceDef.ts @@ -1,5 +1,5 @@ import type React from "react"; -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { OutputTarget } from "./OutputTarget.ts"; export type SourceDef = { diff --git a/docs/references/smithers/packages/components/src/components/SubflowProps.ts b/docs/references/smithers/packages/components/src/components/SubflowProps.ts index 217a0246e..91cb5f565 100644 --- a/docs/references/smithers/packages/components/src/components/SubflowProps.ts +++ b/docs/references/smithers/packages/components/src/components/SubflowProps.ts @@ -1,6 +1,6 @@ import type React from "react"; -import type { CachePolicy } from "@smithers-orchestrator/scheduler/CachePolicy"; -import type { RetryPolicy } from "@smithers-orchestrator/scheduler/RetryPolicy"; +import type { CachePolicy } from "@smthrs/scheduler/CachePolicy"; +import type { RetryPolicy } from "@smthrs/scheduler/RetryPolicy"; import type { SmithersWorkflow } from "../SmithersWorkflow.ts"; import type { OutputTarget } from "./OutputTarget.ts"; diff --git a/docs/references/smithers/packages/components/src/components/SuperSmithersProps.ts b/docs/references/smithers/packages/components/src/components/SuperSmithersProps.ts index 03118582a..2ed17b002 100644 --- a/docs/references/smithers/packages/components/src/components/SuperSmithersProps.ts +++ b/docs/references/smithers/packages/components/src/components/SuperSmithersProps.ts @@ -1,5 +1,5 @@ import type React from "react"; -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { OutputTarget } from "./OutputTarget.ts"; export type SuperSmithersProps = { diff --git a/docs/references/smithers/packages/components/src/components/SupervisorProps.ts b/docs/references/smithers/packages/components/src/components/SupervisorProps.ts index 8361f693e..b16045ae0 100644 --- a/docs/references/smithers/packages/components/src/components/SupervisorProps.ts +++ b/docs/references/smithers/packages/components/src/components/SupervisorProps.ts @@ -1,5 +1,5 @@ import type React from "react"; -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { OutputTarget } from "./OutputTarget.ts"; export type SupervisorProps = { diff --git a/docs/references/smithers/packages/components/src/components/Task.js b/docs/references/smithers/packages/components/src/components/Task.js index 419776f7a..be9314715 100644 --- a/docs/references/smithers/packages/components/src/components/Task.js +++ b/docs/references/smithers/packages/components/src/components/Task.js @@ -10,14 +10,14 @@ import React from "react"; import { renderToStaticMarkup } from "react-dom/server"; import { markdownComponents } from "../markdownComponents.js"; import { zodSchemaToJsonExample } from "../zod-to-example.js"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { SmithersContext } from "@smithers-orchestrator/react-reconciler/context"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { SmithersContext } from "@smthrs/react-reconciler/context"; import { AspectContext } from "../aspects/AspectContext.js"; -import { AntigravityAgent } from "@smithers-orchestrator/agents/AntigravityAgent"; -import { ClaudeCodeAgent } from "@smithers-orchestrator/agents/ClaudeCodeAgent"; -import { GeminiAgent } from "@smithers-orchestrator/agents/GeminiAgent"; -import { PiAgent } from "@smithers-orchestrator/agents/PiAgent"; -/** @typedef {import("@smithers-orchestrator/agents/AgentLike").AgentLike} AgentLike */ +import { AntigravityAgent } from "@smthrs/agents/AntigravityAgent"; +import { ClaudeCodeAgent } from "@smthrs/agents/ClaudeCodeAgent"; +import { GeminiAgent } from "@smthrs/agents/GeminiAgent"; +import { PiAgent } from "@smthrs/agents/PiAgent"; +/** @typedef {import("@smthrs/agents/AgentLike").AgentLike} AgentLike */ /** @typedef {import("./DepsSpec.ts").DepsSpec} DepsSpec */ /** * @template Row, Output, D diff --git a/docs/references/smithers/packages/components/src/components/TaskProps.ts b/docs/references/smithers/packages/components/src/components/TaskProps.ts index acd78060b..f6c461df2 100644 --- a/docs/references/smithers/packages/components/src/components/TaskProps.ts +++ b/docs/references/smithers/packages/components/src/components/TaskProps.ts @@ -1,11 +1,11 @@ import type React from "react"; import type { z } from "zod"; -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; -import type { SmithersCtx } from "@smithers-orchestrator/driver"; -import type { CachePolicy } from "@smithers-orchestrator/scheduler/CachePolicy"; -import type { RetryPolicy } from "@smithers-orchestrator/scheduler/RetryPolicy"; -import type { ScorersMap } from "@smithers-orchestrator/graph/types"; -import type { TaskMemoryConfig } from "@smithers-orchestrator/memory/types"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; +import type { SmithersCtx } from "@smthrs/driver"; +import type { CachePolicy } from "@smthrs/scheduler/CachePolicy"; +import type { RetryPolicy } from "@smthrs/scheduler/RetryPolicy"; +import type { ScorersMap } from "@smthrs/graph/types"; +import type { TaskMemoryConfig } from "@smthrs/memory/types"; import type { OutputTarget } from "./OutputTarget.ts"; import type { DepsSpec } from "./DepsSpec.ts"; import type { InferDeps } from "./InferDeps.ts"; diff --git a/docs/references/smithers/packages/components/src/components/Timer.js b/docs/references/smithers/packages/components/src/components/Timer.js index b7ffbce8b..65623c152 100644 --- a/docs/references/smithers/packages/components/src/components/Timer.js +++ b/docs/references/smithers/packages/components/src/components/Timer.js @@ -1,5 +1,5 @@ import React from "react"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** @typedef {import("./TimerProps.ts").TimerProps} TimerProps */ /** diff --git a/docs/references/smithers/packages/components/src/components/TryCatchFinallyProps.ts b/docs/references/smithers/packages/components/src/components/TryCatchFinallyProps.ts index 2149aead2..52285cbe8 100644 --- a/docs/references/smithers/packages/components/src/components/TryCatchFinallyProps.ts +++ b/docs/references/smithers/packages/components/src/components/TryCatchFinallyProps.ts @@ -1,6 +1,6 @@ import type React from "react"; -import type { SmithersErrorCode } from "@smithers-orchestrator/errors/SmithersErrorCode"; -import type { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import type { SmithersErrorCode } from "@smthrs/errors/SmithersErrorCode"; +import type { SmithersError } from "@smthrs/errors/SmithersError"; export type TryCatchFinallyProps = { id?: string; diff --git a/docs/references/smithers/packages/components/src/components/Worktree.js b/docs/references/smithers/packages/components/src/components/Worktree.js index 22356d3ca..4e0aff984 100644 --- a/docs/references/smithers/packages/components/src/components/Worktree.js +++ b/docs/references/smithers/packages/components/src/components/Worktree.js @@ -1,6 +1,6 @@ import React from "react"; -import { WORKTREE_EMPTY_PATH_ERROR } from "@smithers-orchestrator/graph/constants"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { WORKTREE_EMPTY_PATH_ERROR } from "@smthrs/graph/constants"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** @typedef {import("./WorktreeProps.ts").WorktreeProps} WorktreeProps */ /** diff --git a/docs/references/smithers/packages/components/src/components/index.js b/docs/references/smithers/packages/components/src/components/index.js index e4caa8984..947341ab2 100644 --- a/docs/references/smithers/packages/components/src/components/index.js +++ b/docs/references/smithers/packages/components/src/components/index.js @@ -56,7 +56,7 @@ /** @typedef {import("./SandboxVolumeMount.ts").SandboxVolumeMount} SandboxVolumeMount */ /** @typedef {import("./SandboxWorkspaceSpec.ts").SandboxWorkspaceSpec} SandboxWorkspaceSpec */ /** @typedef {import("./ScanFixVerifyProps.ts").ScanFixVerifyProps} ScanFixVerifyProps */ -/** @typedef {import("@smithers-orchestrator/graph/types").ScorersMap} ScorersMap */ +/** @typedef {import("@smthrs/graph/types").ScorersMap} ScorersMap */ /** @typedef {import("./SequenceProps.ts").SequenceProps} SequenceProps */ /** * @template Schema diff --git a/docs/references/smithers/packages/components/src/index.d.ts b/docs/references/smithers/packages/components/src/index.d.ts index ed1306815..2f88c1f4b 100644 --- a/docs/references/smithers/packages/components/src/index.d.ts +++ b/docs/references/smithers/packages/components/src/index.d.ts @@ -1,31 +1,31 @@ -import * as _smithers_driver_workflow_types from '@smithers-orchestrator/driver/workflow-types'; -import * as _smithers_driver_WorkflowDriverOptions from '@smithers-orchestrator/driver/WorkflowDriverOptions'; -import * as _smithers_driver_WorkflowDefinition from '@smithers-orchestrator/driver/WorkflowDefinition'; -import { WorkflowDefinition } from '@smithers-orchestrator/driver/WorkflowDefinition'; -import * as _smithers_errors_SmithersErrorCode from '@smithers-orchestrator/errors/SmithersErrorCode'; -import { SmithersErrorCode as SmithersErrorCode$1 } from '@smithers-orchestrator/errors/SmithersErrorCode'; -import * as _smithers_scheduler_SmithersWorkflowOptions from '@smithers-orchestrator/scheduler/SmithersWorkflowOptions'; -import * as _smithers_db_SchemaRegistryEntry from '@smithers-orchestrator/db/SchemaRegistryEntry'; -import * as _smithers_driver from '@smithers-orchestrator/driver'; -import { SmithersCtx as SmithersCtx$1 } from '@smithers-orchestrator/driver'; -import * as _smithers_driver_RunAuthContext from '@smithers-orchestrator/driver/RunAuthContext'; -import * as _smithers_scheduler_RetryPolicy from '@smithers-orchestrator/scheduler/RetryPolicy'; -import { RetryPolicy as RetryPolicy$1 } from '@smithers-orchestrator/scheduler/RetryPolicy'; -import * as _smithers_driver_OutputKey from '@smithers-orchestrator/driver/OutputKey'; -import * as _smithers_driver_OutputAccessor from '@smithers-orchestrator/driver/OutputAccessor'; -import { InferOutputEntry as InferOutputEntry$1 } from '@smithers-orchestrator/driver/OutputAccessor'; -import * as _smithers_graph from '@smithers-orchestrator/graph'; -import * as _smithers_scheduler from '@smithers-orchestrator/scheduler'; -import * as _smithers_scheduler_CachePolicy from '@smithers-orchestrator/scheduler/CachePolicy'; -import { CachePolicy as CachePolicy$1 } from '@smithers-orchestrator/scheduler/CachePolicy'; +import * as _smithers_driver_workflow_types from '@smthrs/driver/workflow-types'; +import * as _smithers_driver_WorkflowDriverOptions from '@smthrs/driver/WorkflowDriverOptions'; +import * as _smithers_driver_WorkflowDefinition from '@smthrs/driver/WorkflowDefinition'; +import { WorkflowDefinition } from '@smthrs/driver/WorkflowDefinition'; +import * as _smithers_errors_SmithersErrorCode from '@smthrs/errors/SmithersErrorCode'; +import { SmithersErrorCode as SmithersErrorCode$1 } from '@smthrs/errors/SmithersErrorCode'; +import * as _smithers_scheduler_SmithersWorkflowOptions from '@smthrs/scheduler/SmithersWorkflowOptions'; +import * as _smithers_db_SchemaRegistryEntry from '@smthrs/db/SchemaRegistryEntry'; +import * as _smithers_driver from '@smthrs/driver'; +import { SmithersCtx as SmithersCtx$1 } from '@smthrs/driver'; +import * as _smithers_driver_RunAuthContext from '@smthrs/driver/RunAuthContext'; +import * as _smithers_scheduler_RetryPolicy from '@smthrs/scheduler/RetryPolicy'; +import { RetryPolicy as RetryPolicy$1 } from '@smthrs/scheduler/RetryPolicy'; +import * as _smithers_driver_OutputKey from '@smthrs/driver/OutputKey'; +import * as _smithers_driver_OutputAccessor from '@smthrs/driver/OutputAccessor'; +import { InferOutputEntry as InferOutputEntry$1 } from '@smthrs/driver/OutputAccessor'; +import * as _smithers_graph from '@smthrs/graph'; +import * as _smithers_scheduler from '@smthrs/scheduler'; +import * as _smithers_scheduler_CachePolicy from '@smthrs/scheduler/CachePolicy'; +import { CachePolicy as CachePolicy$1 } from '@smthrs/scheduler/CachePolicy'; import React from 'react'; import * as zod from 'zod'; import { z } from 'zod'; -import { SmithersError } from '@smithers-orchestrator/errors/SmithersError'; -import { AgentLike } from '@smithers-orchestrator/agents/AgentLike'; -import { ScorersMap as ScorersMap$1 } from '@smithers-orchestrator/graph/types'; -import { TaskMemoryConfig } from '@smithers-orchestrator/memory/types'; -import * as _smithers_errors from '@smithers-orchestrator/errors'; +import { SmithersError } from '@smthrs/errors/SmithersError'; +import { AgentLike } from '@smthrs/agents/AgentLike'; +import { ScorersMap as ScorersMap$1 } from '@smthrs/graph/types'; +import { TaskMemoryConfig } from '@smthrs/memory/types'; +import * as _smithers_errors from '@smthrs/errors'; import * as zod_v4_core from 'zod/v4/core'; type WorktreeProps$2 = { diff --git a/docs/references/smithers/packages/components/src/index.js b/docs/references/smithers/packages/components/src/index.js index fec316ec7..509983532 100644 --- a/docs/references/smithers/packages/components/src/index.js +++ b/docs/references/smithers/packages/components/src/index.js @@ -1,59 +1,59 @@ // @smithers-type-exports-begin /** * @template Ctx - * @typedef {import("@smithers-orchestrator/scheduler/CachePolicy").CachePolicy<Ctx>} CachePolicy + * @typedef {import("@smthrs/scheduler/CachePolicy").CachePolicy<Ctx>} CachePolicy */ -/** @typedef {import("@smithers-orchestrator/scheduler").EngineDecision} EngineDecision */ -/** @typedef {import("@smithers-orchestrator/graph").ExtractOptions} ExtractOptions */ -/** @typedef {import("@smithers-orchestrator/graph").HostElement} HostElement */ -/** @typedef {import("@smithers-orchestrator/graph").HostNode} HostNode */ -/** @typedef {import("@smithers-orchestrator/graph").HostText} HostText */ +/** @typedef {import("@smthrs/scheduler").EngineDecision} EngineDecision */ +/** @typedef {import("@smthrs/graph").ExtractOptions} ExtractOptions */ +/** @typedef {import("@smthrs/graph").HostElement} HostElement */ +/** @typedef {import("@smthrs/graph").HostNode} HostNode */ +/** @typedef {import("@smthrs/graph").HostText} HostText */ /** * @template T - * @typedef {import("@smithers-orchestrator/driver/OutputAccessor").InferOutputEntry<T>} InferOutputEntry + * @typedef {import("@smthrs/driver/OutputAccessor").InferOutputEntry<T>} InferOutputEntry */ /** * @template TTable - * @typedef {import("@smithers-orchestrator/driver/OutputAccessor").InferRow<TTable>} InferRow + * @typedef {import("@smthrs/driver/OutputAccessor").InferRow<TTable>} InferRow */ /** * @template Schema - * @typedef {import("@smithers-orchestrator/driver/OutputAccessor").OutputAccessor<Schema>} OutputAccessor + * @typedef {import("@smthrs/driver/OutputAccessor").OutputAccessor<Schema>} OutputAccessor */ -/** @typedef {import("@smithers-orchestrator/driver/OutputKey").OutputKey} OutputKey */ -/** @typedef {import("@smithers-orchestrator/scheduler").RenderContext} RenderContext */ -/** @typedef {import("@smithers-orchestrator/scheduler/RetryPolicy").RetryPolicy} RetryPolicy */ -/** @typedef {import("@smithers-orchestrator/driver/RunAuthContext").RunAuthContext} RunAuthContext */ -/** @typedef {import("@smithers-orchestrator/driver").RunOptions} RunOptions */ -/** @typedef {import("@smithers-orchestrator/driver").RunResult} RunResult */ -/** @typedef {import("@smithers-orchestrator/db/SchemaRegistryEntry").SchemaRegistryEntry} SchemaRegistryEntry */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertLabels} SmithersAlertLabels */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertPolicy} SmithersAlertPolicy */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertPolicyDefaults} SmithersAlertPolicyDefaults */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertPolicyRule} SmithersAlertPolicyRule */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertReaction} SmithersAlertReaction */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertReactionKind} SmithersAlertReactionKind */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertReactionRef} SmithersAlertReactionRef */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertSeverity} SmithersAlertSeverity */ -/** @typedef {import("@smithers-orchestrator/driver").SmithersCtx} SmithersCtx */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersErrorCode").SmithersErrorCode} SmithersErrorCode */ +/** @typedef {import("@smthrs/driver/OutputKey").OutputKey} OutputKey */ +/** @typedef {import("@smthrs/scheduler").RenderContext} RenderContext */ +/** @typedef {import("@smthrs/scheduler/RetryPolicy").RetryPolicy} RetryPolicy */ +/** @typedef {import("@smthrs/driver/RunAuthContext").RunAuthContext} RunAuthContext */ +/** @typedef {import("@smthrs/driver").RunOptions} RunOptions */ +/** @typedef {import("@smthrs/driver").RunResult} RunResult */ +/** @typedef {import("@smthrs/db/SchemaRegistryEntry").SchemaRegistryEntry} SchemaRegistryEntry */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertLabels} SmithersAlertLabels */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertPolicy} SmithersAlertPolicy */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertPolicyDefaults} SmithersAlertPolicyDefaults */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertPolicyRule} SmithersAlertPolicyRule */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertReaction} SmithersAlertReaction */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertReactionKind} SmithersAlertReactionKind */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertReactionRef} SmithersAlertReactionRef */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertSeverity} SmithersAlertSeverity */ +/** @typedef {import("@smthrs/driver").SmithersCtx} SmithersCtx */ +/** @typedef {import("@smthrs/errors/SmithersErrorCode").SmithersErrorCode} SmithersErrorCode */ /** * @template Schema - * @typedef {import("@smithers-orchestrator/driver/WorkflowDefinition").WorkflowDefinition<Schema>} SmithersWorkflow + * @typedef {import("@smthrs/driver/WorkflowDefinition").WorkflowDefinition<Schema>} SmithersWorkflow */ /** * @template Schema - * @typedef {import("@smithers-orchestrator/driver/WorkflowDriverOptions").WorkflowDriverOptions<Schema>} SmithersWorkflowDriverOptions + * @typedef {import("@smthrs/driver/WorkflowDriverOptions").WorkflowDriverOptions<Schema>} SmithersWorkflowDriverOptions */ -/** @typedef {import("@smithers-orchestrator/scheduler").SmithersWorkflowOptions} SmithersWorkflowOptions */ -/** @typedef {import("@smithers-orchestrator/graph").TaskDescriptor} TaskDescriptor */ -/** @typedef {import("@smithers-orchestrator/scheduler").WaitReason} WaitReason */ -/** @typedef {import("@smithers-orchestrator/graph").WorkflowGraph} WorkflowGraph */ -/** @typedef {import("@smithers-orchestrator/driver/workflow-types").WorkflowRuntime} WorkflowRuntime */ -/** @typedef {import("@smithers-orchestrator/driver/workflow-types").WorkflowSession} WorkflowSession */ -/** @typedef {import("@smithers-orchestrator/graph").XmlElement} XmlElement */ -/** @typedef {import("@smithers-orchestrator/graph").XmlNode} XmlNode */ -/** @typedef {import("@smithers-orchestrator/graph").XmlText} XmlText */ +/** @typedef {import("@smthrs/scheduler").SmithersWorkflowOptions} SmithersWorkflowOptions */ +/** @typedef {import("@smthrs/graph").TaskDescriptor} TaskDescriptor */ +/** @typedef {import("@smthrs/scheduler").WaitReason} WaitReason */ +/** @typedef {import("@smthrs/graph").WorkflowGraph} WorkflowGraph */ +/** @typedef {import("@smthrs/driver/workflow-types").WorkflowRuntime} WorkflowRuntime */ +/** @typedef {import("@smthrs/driver/workflow-types").WorkflowSession} WorkflowSession */ +/** @typedef {import("@smthrs/graph").XmlElement} XmlElement */ +/** @typedef {import("@smthrs/graph").XmlNode} XmlNode */ +/** @typedef {import("@smthrs/graph").XmlText} XmlText */ // @smithers-type-exports-end export * from "./components/index.js"; diff --git a/docs/references/smithers/packages/components/src/types.ts b/docs/references/smithers/packages/components/src/types.ts index 42c4f7062..a471ba8cd 100644 --- a/docs/references/smithers/packages/components/src/types.ts +++ b/docs/references/smithers/packages/components/src/types.ts @@ -1,14 +1,14 @@ -export type { WorkflowDefinition as SmithersWorkflow } from "@smithers-orchestrator/driver/WorkflowDefinition"; -export type { WorkflowDriverOptions as SmithersWorkflowDriverOptions } from "@smithers-orchestrator/driver/WorkflowDriverOptions"; +export type { WorkflowDefinition as SmithersWorkflow } from "@smthrs/driver/WorkflowDefinition"; +export type { WorkflowDriverOptions as SmithersWorkflowDriverOptions } from "@smthrs/driver/WorkflowDriverOptions"; export type { EngineDecision, RenderContext, WaitReason, SmithersWorkflowOptions, -} from "@smithers-orchestrator/scheduler"; -export type { RunOptions, RunResult, SmithersCtx } from "@smithers-orchestrator/driver"; -export type { WorkflowRuntime, WorkflowSession } from "@smithers-orchestrator/driver/workflow-types"; +} from "@smthrs/scheduler"; +export type { RunOptions, RunResult, SmithersCtx } from "@smthrs/driver"; +export type { WorkflowRuntime, WorkflowSession } from "@smthrs/driver/workflow-types"; export type { ExtractOptions, HostElement, @@ -19,4 +19,4 @@ export type { XmlElement, XmlNode, XmlText, -} from "@smithers-orchestrator/graph"; +} from "@smthrs/graph"; diff --git a/docs/references/smithers/packages/components/tests/approval-decided-at.test.jsx b/docs/references/smithers/packages/components/tests/approval-decided-at.test.jsx index 8d6fe409d..a8c6e08f1 100644 --- a/docs/references/smithers/packages/components/tests/approval-decided-at.test.jsx +++ b/docs/references/smithers/packages/components/tests/approval-decided-at.test.jsx @@ -1,9 +1,9 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { withTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; -import { SmithersRenderer } from "@smithers-orchestrator/react-reconciler/dom/renderer"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { withTaskRuntime } from "@smthrs/driver/task-runtime"; +import { SmithersRenderer } from "@smthrs/react-reconciler/dom/renderer"; import { Approval } from "../src/components/index.js"; import { createTestSmithers } from "./helpers.js"; diff --git a/docs/references/smithers/packages/components/tests/complex-control-flow.test.jsx b/docs/references/smithers/packages/components/tests/complex-control-flow.test.jsx index 3072eecad..0339619fc 100644 --- a/docs/references/smithers/packages/components/tests/complex-control-flow.test.jsx +++ b/docs/references/smithers/packages/components/tests/complex-control-flow.test.jsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Workflow, Task, Sequence, Parallel, Branch, Ralph, renderFrame, runWorkflow, } from "smithers-orchestrator"; +import { Workflow, Task, Sequence, Parallel, Branch, Ralph, renderFrame, runWorkflow, } from "smthrs"; import { createTestSmithers, sleep } from "./helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/components/tests/components-comprehensive.test.jsx b/docs/references/smithers/packages/components/tests/components-comprehensive.test.jsx index dd76ad5d2..3eeeff6ad 100644 --- a/docs/references/smithers/packages/components/tests/components-comprehensive.test.jsx +++ b/docs/references/smithers/packages/components/tests/components-comprehensive.test.jsx @@ -1,8 +1,8 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import React from "react"; import { Task, Workflow, Sequence, Parallel, Branch, Loop, Ralph, MergeQueue, Worktree, Approval, approvalDecisionSchema, } from "../src/components/index.js"; -import { SmithersRenderer } from "@smithers-orchestrator/react-reconciler/dom/renderer"; +import { SmithersRenderer } from "@smthrs/react-reconciler/dom/renderer"; /** * @param {React.ReactElement} el */ diff --git a/docs/references/smithers/packages/components/tests/components.test.js b/docs/references/smithers/packages/components/tests/components.test.js index dec6f9e21..b0dff7693 100644 --- a/docs/references/smithers/packages/components/tests/components.test.js +++ b/docs/references/smithers/packages/components/tests/components.test.js @@ -2,7 +2,7 @@ import { describe, expect, it } from "bun:test"; import React from "react"; import { z } from "zod"; import { Approval, ApprovalGate, Aspects, Branch, CheckSuite, ClassifyAndRoute, ContentPipeline, ContinueAsNew, Debate, DecisionTable, DriftDetector, EscalationChain, GatherAndSynthesize, HumanTask, Kanban, Loop, MergeQueue, Optimizer, Panel, Parallel, Poller, Ralph, ReviewLoop, Runbook, Saga, Sandbox, ScanFixVerify, Sequence, Signal, Subflow, SuperSmithers, Supervisor, Task, Timer, TryCatchFinally, WaitForEvent, Workflow, Worktree, } from "../src/components/index.js"; -import { SmithersRenderer } from "@smithers-orchestrator/react-reconciler"; +import { SmithersRenderer } from "@smthrs/react-reconciler"; /** * @param {HostNode | null} root * @returns {WorkflowGraph} @@ -117,7 +117,7 @@ describe("components", () => { expect(tags).not.toContain("smithers:parallel"); expect(tags).toContain("smithers:timer"); }); - it("passes task props through to @smithers-orchestrator/graph extraction", async () => { + it("passes task props through to @smthrs/graph extraction", async () => { const outputSchema = z.object({ value: z.number() }); const primary = { generate: async () => ({ value: 1 }) }; const fallback = { generate: async () => ({ value: 2 }) }; diff --git a/docs/references/smithers/packages/components/tests/composite-broken-tasks.test.jsx b/docs/references/smithers/packages/components/tests/composite-broken-tasks.test.jsx index 832c2ff94..4ed0d0b60 100644 --- a/docs/references/smithers/packages/components/tests/composite-broken-tasks.test.jsx +++ b/docs/references/smithers/packages/components/tests/composite-broken-tasks.test.jsx @@ -1,11 +1,11 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import React from "react"; import { z } from "zod"; import { CheckSuite, ScanFixVerify, Supervisor } from "../src/components/index.js"; -import { SmithersRenderer } from "@smithers-orchestrator/react-reconciler/dom/renderer"; -import { SmithersCtx } from "@smithers-orchestrator/react-reconciler/context"; -import { renderFrame } from "smithers-orchestrator"; +import { SmithersRenderer } from "@smthrs/react-reconciler/dom/renderer"; +import { SmithersCtx } from "@smthrs/react-reconciler/context"; +import { renderFrame } from "smthrs"; import { createTestSmithers } from "./helpers.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/components/tests/composite-coverage.test.jsx b/docs/references/smithers/packages/components/tests/composite-coverage.test.jsx index f2d6b5d74..0a8f2d1b9 100644 --- a/docs/references/smithers/packages/components/tests/composite-coverage.test.jsx +++ b/docs/references/smithers/packages/components/tests/composite-coverage.test.jsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import React from "react"; import { renderToStaticMarkup } from "react-dom/server"; @@ -29,7 +29,7 @@ import { } from "../src/components/index.js"; import { AspectContext, createAccumulator } from "../src/aspects/AspectContext.js"; import { zodSchemaToJsonExample } from "../src/zod-to-example.js"; -import { SmithersRenderer } from "@smithers-orchestrator/react-reconciler/dom/renderer"; +import { SmithersRenderer } from "@smthrs/react-reconciler/dom/renderer"; const agent = { id: "agent", generate: async () => ({ text: "ok" }) }; const otherAgent = { id: "other", generate: async () => ({ text: "ok" }) }; diff --git a/docs/references/smithers/packages/components/tests/context-comprehensive.test.js b/docs/references/smithers/packages/components/tests/context-comprehensive.test.js index 4edadc616..9d6a6f52d 100644 --- a/docs/references/smithers/packages/components/tests/context-comprehensive.test.js +++ b/docs/references/smithers/packages/components/tests/context-comprehensive.test.js @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { SmithersCtx, createSmithersContext } from "@smithers-orchestrator/react-reconciler/context"; +import { SmithersCtx, createSmithersContext } from "@smthrs/react-reconciler/context"; import { z } from "zod"; import React from "react"; import { renderToStaticMarkup } from "react-dom/server"; diff --git a/docs/references/smithers/packages/components/tests/context-loop-scoping.test.js b/docs/references/smithers/packages/components/tests/context-loop-scoping.test.js index 7b698968c..ad842c906 100644 --- a/docs/references/smithers/packages/components/tests/context-loop-scoping.test.js +++ b/docs/references/smithers/packages/components/tests/context-loop-scoping.test.js @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { SmithersCtx } from "@smithers-orchestrator/react-reconciler/context"; +import { SmithersCtx } from "@smthrs/react-reconciler/context"; describe("context loop scoping", () => { test("resolves scoped nodeId via current loop iteration", () => { // Simulate a workflow with an outer loop at iteration 2. diff --git a/docs/references/smithers/packages/components/tests/context.test.js b/docs/references/smithers/packages/components/tests/context.test.js index 7c3b81f9b..a58447cf2 100644 --- a/docs/references/smithers/packages/components/tests/context.test.js +++ b/docs/references/smithers/packages/components/tests/context.test.js @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { SmithersCtx } from "@smithers-orchestrator/react-reconciler/context"; +import { SmithersCtx } from "@smthrs/react-reconciler/context"; import { z } from "zod"; describe("SmithersCtx", () => { test("output throws when row is missing", () => { diff --git a/docs/references/smithers/packages/components/tests/continue-as-new.test.jsx b/docs/references/smithers/packages/components/tests/continue-as-new.test.jsx index 13d74c856..8b3b856d4 100644 --- a/docs/references/smithers/packages/components/tests/continue-as-new.test.jsx +++ b/docs/references/smithers/packages/components/tests/continue-as-new.test.jsx @@ -1,9 +1,9 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { eq } from "drizzle-orm"; import { Effect } from "effect"; import { z } from "zod"; -import { SmithersDb, runWorkflow } from "smithers-orchestrator"; +import { SmithersDb, runWorkflow } from "smthrs"; import { createTestSmithers } from "./helpers.js"; describe("continue-as-new", () => { test("splits long loop runs, carries state, and preserves ancestry", async () => { diff --git a/docs/references/smithers/packages/components/tests/devtools.test.js b/docs/references/smithers/packages/components/tests/devtools.test.js index 98accee8f..9aab3d56b 100644 --- a/docs/references/smithers/packages/components/tests/devtools.test.js +++ b/docs/references/smithers/packages/components/tests/devtools.test.js @@ -31,7 +31,7 @@ describe("devtools: bippy + custom reconciler", () => { const commits = []; beforeAll(async () => { // Import devtools FIRST so instrument() runs before renderer loads - const devtoolsMod = await import("@smithers-orchestrator/react-reconciler/devtools"); + const devtoolsMod = await import("@smthrs/react-reconciler/devtools"); devtools = new devtoolsMod.SmithersDevTools({ /** * @param {string} event @@ -44,7 +44,7 @@ describe("devtools: bippy + custom reconciler", () => { devtools.start(); // NOW import React/Smithers (reconciler will see the installed hook) const [rendererMod, componentsMod, schemaMod, reactMod] = await Promise.all([ - import("@smithers-orchestrator/react-reconciler/dom/renderer"), + import("@smthrs/react-reconciler/dom/renderer"), import("../src/components/index.js"), import("./schema.js"), import("react"), @@ -218,7 +218,7 @@ describe("devtools: bippy + custom reconciler", () => { // CHALLENGE 8: Smithers event bus integration — task execution tracking // --------------------------------------------------------------------------- test("challenge 8: tracks task execution state via EventBus", async () => { - const { EventBus } = await import("@smithers-orchestrator/engine/events"); + const { EventBus } = await import("@smthrs/engine/events"); const bus = new EventBus({}); // Attach devtools to the event bus devtools.attachEventBus(bus); @@ -254,7 +254,7 @@ describe("devtools: bippy + custom reconciler", () => { // CHALLENGE 9: Failure/retry tracking // --------------------------------------------------------------------------- test("challenge 9: tracks retries and failures", async () => { - const { EventBus } = await import("@smithers-orchestrator/engine/events"); + const { EventBus } = await import("@smthrs/engine/events"); const bus = new EventBus({}); devtools.attachEventBus(bus); const runId = "test-run-9"; @@ -274,7 +274,7 @@ describe("devtools: bippy + custom reconciler", () => { // CHALLENGE 10: Approval workflow tracking // --------------------------------------------------------------------------- test("challenge 10: tracks approval workflow state", async () => { - const { EventBus } = await import("@smithers-orchestrator/engine/events"); + const { EventBus } = await import("@smthrs/engine/events"); const bus = new EventBus({}); devtools.attachEventBus(bus); const runId = "test-run-10"; @@ -290,7 +290,7 @@ describe("devtools: bippy + custom reconciler", () => { // CHALLENGE 11: Frame tracking (re-renders after task completion) // --------------------------------------------------------------------------- test("challenge 11: tracks frame commits", async () => { - const { EventBus } = await import("@smithers-orchestrator/engine/events"); + const { EventBus } = await import("@smthrs/engine/events"); const bus = new EventBus({}); devtools.attachEventBus(bus); const runId = "test-run-11"; diff --git a/docs/references/smithers/packages/components/tests/driver.test.js b/docs/references/smithers/packages/components/tests/driver.test.js index dd89c0af8..575e343d1 100644 --- a/docs/references/smithers/packages/components/tests/driver.test.js +++ b/docs/references/smithers/packages/components/tests/driver.test.js @@ -1,6 +1,6 @@ import { describe, expect, it } from "bun:test"; import React from "react"; -import { ReactWorkflowDriver } from "@smithers-orchestrator/react-reconciler/driver"; +import { ReactWorkflowDriver } from "@smthrs/react-reconciler/driver"; /** * @param {Partial<TaskDescriptor>} overrides * @returns {TaskDescriptor} diff --git a/docs/references/smithers/packages/components/tests/escalation-chain-gating.test.jsx b/docs/references/smithers/packages/components/tests/escalation-chain-gating.test.jsx index 7f960bfc6..8f51bd80a 100644 --- a/docs/references/smithers/packages/components/tests/escalation-chain-gating.test.jsx +++ b/docs/references/smithers/packages/components/tests/escalation-chain-gating.test.jsx @@ -1,11 +1,11 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import React from "react"; import { SmithersContext, SmithersCtx, -} from "@smithers-orchestrator/react-reconciler/context"; -import { SmithersRenderer } from "@smithers-orchestrator/react-reconciler/dom/renderer"; +} from "@smthrs/react-reconciler/context"; +import { SmithersRenderer } from "@smthrs/react-reconciler/dom/renderer"; import { EscalationChain } from "../src/components/index.js"; const agent = { id: "agent", generate: async () => ({ text: "ok" }) }; diff --git a/docs/references/smithers/packages/components/tests/kanban-component.test.jsx b/docs/references/smithers/packages/components/tests/kanban-component.test.jsx index 616ab9695..e81c0c26c 100644 --- a/docs/references/smithers/packages/components/tests/kanban-component.test.jsx +++ b/docs/references/smithers/packages/components/tests/kanban-component.test.jsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Kanban, runWorkflow } from "smithers-orchestrator"; +import { Kanban, runWorkflow } from "smthrs"; import { createTestSmithers } from "./helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/components/tests/merge-queue.test.jsx b/docs/references/smithers/packages/components/tests/merge-queue.test.jsx index 5955898c5..0acd05b85 100644 --- a/docs/references/smithers/packages/components/tests/merge-queue.test.jsx +++ b/docs/references/smithers/packages/components/tests/merge-queue.test.jsx @@ -1,7 +1,7 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { SmithersRenderer } from "@smithers-orchestrator/react-reconciler/dom/renderer"; -import { MergeQueue, Parallel, Task, Workflow, runWorkflow, } from "smithers-orchestrator"; +import { SmithersRenderer } from "@smthrs/react-reconciler/dom/renderer"; +import { MergeQueue, Parallel, Task, Workflow, runWorkflow, } from "smthrs"; import { createTestSmithers, sleep } from "./helpers.js"; import { outputSchemas } from "./schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/components/tests/poller-component.test.jsx b/docs/references/smithers/packages/components/tests/poller-component.test.jsx index db82f0e40..7dd1da889 100644 --- a/docs/references/smithers/packages/components/tests/poller-component.test.jsx +++ b/docs/references/smithers/packages/components/tests/poller-component.test.jsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Poller, runWorkflow } from "smithers-orchestrator"; +import { Poller, runWorkflow } from "smthrs"; import { createTestSmithers } from "./helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/components/tests/react-hooks.test.jsx b/docs/references/smithers/packages/components/tests/react-hooks.test.jsx index 1d25927f2..b9ad18798 100644 --- a/docs/references/smithers/packages/components/tests/react-hooks.test.jsx +++ b/docs/references/smithers/packages/components/tests/react-hooks.test.jsx @@ -1,7 +1,7 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import React, { useState, useEffect, useMemo, useRef } from "react"; -import { Workflow, Task, Ralph, runWorkflow } from "smithers-orchestrator"; +import { Workflow, Task, Ralph, runWorkflow } from "smthrs"; import { QueryClient, QueryClientProvider, useQuery } from "@tanstack/react-query"; import { createTestSmithers } from "./helpers.js"; import { outputSchemas } from "./schema.js"; diff --git a/docs/references/smithers/packages/components/tests/reconciler.test.js b/docs/references/smithers/packages/components/tests/reconciler.test.js index 45e8847eb..74f5118eb 100644 --- a/docs/references/smithers/packages/components/tests/reconciler.test.js +++ b/docs/references/smithers/packages/components/tests/reconciler.test.js @@ -1,6 +1,6 @@ import { describe, expect, it } from "bun:test"; import React from "react"; -import { SmithersRenderer } from "@smithers-orchestrator/react-reconciler"; +import { SmithersRenderer } from "@smthrs/react-reconciler"; /** * @param {HostNode | null} root * @returns {WorkflowGraph} @@ -18,7 +18,7 @@ describe("SmithersRenderer", () => { expect(hook).toBeDefined(); expect(typeof hook.inject).toBe("function"); }); - it("uses @smithers-orchestrator/graph extractGraph by default", async () => { + it("uses @smthrs/graph extractGraph by default", async () => { const renderer = new SmithersRenderer(); const graph = await renderer.render(React.createElement("smithers:task", { id: "task-a", diff --git a/docs/references/smithers/packages/components/tests/remaining-coverage.test.jsx b/docs/references/smithers/packages/components/tests/remaining-coverage.test.jsx index 3de710763..1ae755263 100644 --- a/docs/references/smithers/packages/components/tests/remaining-coverage.test.jsx +++ b/docs/references/smithers/packages/components/tests/remaining-coverage.test.jsx @@ -1,16 +1,16 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import React from "react"; import { renderToStaticMarkup } from "react-dom/server"; import { z } from "zod"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { buildHumanRequestId } from "@smithers-orchestrator/db/buildHumanRequestId"; -import { withTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; -import { ClaudeCodeAgent } from "@smithers-orchestrator/agents/ClaudeCodeAgent"; -import { GeminiAgent } from "@smithers-orchestrator/agents/GeminiAgent"; -import { PiAgent } from "@smithers-orchestrator/agents/PiAgent"; -import { SmithersRenderer } from "@smithers-orchestrator/react-reconciler/dom/renderer"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { buildHumanRequestId } from "@smthrs/db/buildHumanRequestId"; +import { withTaskRuntime } from "@smthrs/driver/task-runtime"; +import { ClaudeCodeAgent } from "@smthrs/agents/ClaudeCodeAgent"; +import { GeminiAgent } from "@smthrs/agents/GeminiAgent"; +import { PiAgent } from "@smthrs/agents/PiAgent"; +import { SmithersRenderer } from "@smthrs/react-reconciler/dom/renderer"; import { Approval, Aspects, diff --git a/docs/references/smithers/packages/components/tests/saga-component.test.jsx b/docs/references/smithers/packages/components/tests/saga-component.test.jsx index 32b67fe08..3bf06443c 100644 --- a/docs/references/smithers/packages/components/tests/saga-component.test.jsx +++ b/docs/references/smithers/packages/components/tests/saga-component.test.jsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Saga, TryCatchFinally, runWorkflow } from "smithers-orchestrator"; +import { Saga, TryCatchFinally, runWorkflow } from "smthrs"; import { createTestSmithers } from "./helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/components/tests/schema-validation.test.jsx b/docs/references/smithers/packages/components/tests/schema-validation.test.jsx index 6ea58a524..d8f5ce4de 100644 --- a/docs/references/smithers/packages/components/tests/schema-validation.test.jsx +++ b/docs/references/smithers/packages/components/tests/schema-validation.test.jsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Workflow, Task, runWorkflow } from "smithers-orchestrator"; +import { Workflow, Task, runWorkflow } from "smthrs"; import { createTestSmithers } from "./helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/components/tests/signal-component.test.jsx b/docs/references/smithers/packages/components/tests/signal-component.test.jsx index b63ba5f97..75edd0311 100644 --- a/docs/references/smithers/packages/components/tests/signal-component.test.jsx +++ b/docs/references/smithers/packages/components/tests/signal-component.test.jsx @@ -1,10 +1,10 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { z } from "zod"; import { dirname } from "node:path"; -import { jsx, jsxs } from "smithers-orchestrator/jsx-runtime"; -import { SmithersDb, runWorkflow, signalRun } from "smithers-orchestrator"; -import { renderPrometheusMetrics } from "@smithers-orchestrator/observability"; +import { jsx, jsxs } from "smthrs/jsx-runtime"; +import { SmithersDb, runWorkflow, signalRun } from "smthrs"; +import { renderPrometheusMetrics } from "@smthrs/observability"; import { createTestSmithers } from "./helpers.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/components/tests/task-allow-tools.test.jsx b/docs/references/smithers/packages/components/tests/task-allow-tools.test.jsx index 89c41ee17..8930f0ebe 100644 --- a/docs/references/smithers/packages/components/tests/task-allow-tools.test.jsx +++ b/docs/references/smithers/packages/components/tests/task-allow-tools.test.jsx @@ -1,13 +1,13 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { z } from "zod"; -import { createSmithers } from "smithers-orchestrator"; -import { renderFrame } from "@smithers-orchestrator/engine"; -import { SmithersCtx } from "@smithers-orchestrator/react-reconciler/context"; -import { AntigravityAgent } from "@smithers-orchestrator/agents/AntigravityAgent"; -import { ClaudeCodeAgent } from "@smithers-orchestrator/agents/ClaudeCodeAgent"; -import { GeminiAgent } from "@smithers-orchestrator/agents/GeminiAgent"; -import { PiAgent } from "@smithers-orchestrator/agents/PiAgent"; +import { createSmithers } from "smthrs"; +import { renderFrame } from "@smthrs/engine"; +import { SmithersCtx } from "@smthrs/react-reconciler/context"; +import { AntigravityAgent } from "@smthrs/agents/AntigravityAgent"; +import { ClaudeCodeAgent } from "@smthrs/agents/ClaudeCodeAgent"; +import { GeminiAgent } from "@smthrs/agents/GeminiAgent"; +import { PiAgent } from "@smthrs/agents/PiAgent"; import { Effect } from "effect"; describe("Task allowTools", () => { test("passes an allowlist through to ClaudeCodeAgent tasks", async () => { diff --git a/docs/references/smithers/packages/components/tests/task-deps.test.jsx b/docs/references/smithers/packages/components/tests/task-deps.test.jsx index a10e8d62d..cb7bdae56 100644 --- a/docs/references/smithers/packages/components/tests/task-deps.test.jsx +++ b/docs/references/smithers/packages/components/tests/task-deps.test.jsx @@ -1,10 +1,10 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { SmithersCtx } from "@smithers-orchestrator/react-reconciler/context"; -import { renderFrame, runWorkflow } from "smithers-orchestrator"; +import { SmithersCtx } from "@smthrs/react-reconciler/context"; +import { renderFrame, runWorkflow } from "smthrs"; import { createTestSmithers } from "./helpers.js"; import { z } from "zod"; -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { mkdtempSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; diff --git a/docs/references/smithers/packages/components/tests/timer.test.jsx b/docs/references/smithers/packages/components/tests/timer.test.jsx index 7f8bd8ecf..5dda9439a 100644 --- a/docs/references/smithers/packages/components/tests/timer.test.jsx +++ b/docs/references/smithers/packages/components/tests/timer.test.jsx @@ -1,8 +1,8 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { Effect } from "effect"; -import { Parallel, Ralph, Sequence, Task, Timer, Workflow, runWorkflow } from "smithers-orchestrator"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { Parallel, Ralph, Sequence, Task, Timer, Workflow, runWorkflow } from "smthrs"; +import { SmithersDb } from "@smthrs/db/adapter"; import { createTestSmithers, sleep } from "./helpers.js"; import { z } from "zod"; import { dirname } from "node:path"; diff --git a/docs/references/smithers/packages/components/tests/type-inference.test.js b/docs/references/smithers/packages/components/tests/type-inference.test.js index e33ac70a5..017ee2526 100644 --- a/docs/references/smithers/packages/components/tests/type-inference.test.js +++ b/docs/references/smithers/packages/components/tests/type-inference.test.js @@ -6,7 +6,7 @@ * verify the types resolve to expected shapes at the value level too. */ import { describe, expect, test } from "bun:test"; -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { z } from "zod"; // ─── Schema fixtures ─────────────────────────────────────────────── const analysisSchema = z.object({ diff --git a/docs/references/smithers/packages/components/tests/worktree-hardcoded-main.test.jsx b/docs/references/smithers/packages/components/tests/worktree-hardcoded-main.test.jsx index cd0e3408e..3bb8c3279 100644 --- a/docs/references/smithers/packages/components/tests/worktree-hardcoded-main.test.jsx +++ b/docs/references/smithers/packages/components/tests/worktree-hardcoded-main.test.jsx @@ -1,11 +1,11 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { afterEach, describe, expect, test } from "bun:test"; import { existsSync } from "node:fs"; import { mkdtemp, rm, writeFile, mkdir } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join, resolve } from "node:path"; import { spawnSync } from "node:child_process"; -import { Task, Workflow, Worktree, createSmithers, runWorkflow, } from "smithers-orchestrator"; +import { Task, Workflow, Worktree, createSmithers, runWorkflow, } from "smthrs"; import { z } from "zod"; import { Effect } from "effect"; /** diff --git a/docs/references/smithers/packages/components/tests/worktree-runtime.test.jsx b/docs/references/smithers/packages/components/tests/worktree-runtime.test.jsx index e1bf38db1..452eed772 100644 --- a/docs/references/smithers/packages/components/tests/worktree-runtime.test.jsx +++ b/docs/references/smithers/packages/components/tests/worktree-runtime.test.jsx @@ -1,11 +1,11 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { afterEach, describe, expect, test } from "bun:test"; import { existsSync } from "node:fs"; import { mkdtemp, mkdir, rm, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join, resolve } from "node:path"; import { spawnSync } from "node:child_process"; -import { Task, Workflow, Worktree, createSmithers, runWorkflow, } from "smithers-orchestrator"; +import { Task, Workflow, Worktree, createSmithers, runWorkflow, } from "smthrs"; import { z } from "zod"; import { Effect } from "effect"; const tempRoots = []; diff --git a/docs/references/smithers/packages/components/tests/worktree.test.jsx b/docs/references/smithers/packages/components/tests/worktree.test.jsx index 8c0023345..3e14d7805 100644 --- a/docs/references/smithers/packages/components/tests/worktree.test.jsx +++ b/docs/references/smithers/packages/components/tests/worktree.test.jsx @@ -1,7 +1,7 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { WORKTREE_EMPTY_PATH_ERROR } from "@smithers-orchestrator/graph/constants"; -import { SmithersRenderer } from "@smithers-orchestrator/react-reconciler/dom/renderer"; +import { WORKTREE_EMPTY_PATH_ERROR } from "@smthrs/graph/constants"; +import { SmithersRenderer } from "@smthrs/react-reconciler/dom/renderer"; import { Sequence, Task, Worktree, Workflow, } from "../src/components/index.js"; import { outputSchemas } from "./schema.js"; describe("<Worktree>", () => { diff --git a/docs/references/smithers/packages/control-plane/package.json b/docs/references/smithers/packages/control-plane/package.json index fdac13dec..0361b00cf 100644 --- a/docs/references/smithers/packages/control-plane/package.json +++ b/docs/references/smithers/packages/control-plane/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/control-plane", + "name": "@smthrs/control-plane", "version": "0.23.0", "description": "Durable organization, project, billing, usage, secret-reference, and audit primitives for hosted Smithers control planes.", "type": "module", @@ -25,7 +25,7 @@ "build": "tsup --dts-only" }, "dependencies": { - "@smithers-orchestrator/errors": "workspace:*" + "@smthrs/errors": "^0.33.0" }, "devDependencies": { "@types/bun": "latest", diff --git a/docs/references/smithers/packages/control-plane/src/index.js b/docs/references/smithers/packages/control-plane/src/index.js index 8ee464826..0c25695a7 100644 --- a/docs/references/smithers/packages/control-plane/src/index.js +++ b/docs/references/smithers/packages/control-plane/src/index.js @@ -1,5 +1,5 @@ import { randomUUID } from "node:crypto"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** * @typedef {import("./index.d.ts").ControlPlaneSqlite} ControlPlaneSqlite diff --git a/docs/references/smithers/packages/db/package.json b/docs/references/smithers/packages/db/package.json index 9265ef85d..fa62355b5 100644 --- a/docs/references/smithers/packages/db/package.json +++ b/docs/references/smithers/packages/db/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/db", + "name": "@smthrs/db", "version": "0.23.0", "description": "SQLite and Drizzle persistence adapter for Smithers workflows", "type": "module", @@ -27,10 +27,10 @@ "dependencies": { "@effect/experimental": "^0.60.0", "@effect/sql": "^0.51.0", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", + "@smthrs/errors": "^0.33.0", + "@smthrs/graph": "^0.33.0", + "@smthrs/observability": "^0.33.0", + "@smthrs/scheduler": "^0.33.0", "drizzle-orm": "^0.45.2", "drizzle-zod": "^0.8.3", "effect": "^3.21.1", diff --git a/docs/references/smithers/packages/db/src/adapter.js b/docs/references/smithers/packages/db/src/adapter.js index 01d14bc37..fb15755d2 100644 --- a/docs/references/smithers/packages/db/src/adapter.js +++ b/docs/references/smithers/packages/db/src/adapter.js @@ -12,10 +12,10 @@ import { getTableName } from "drizzle-orm"; import { Effect, Exit, FiberId, Metric } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { getSqlMessageStorage } from "./sql-message-storage.js"; import { POSTGRES, beginTransactionSql } from "./dialect.js"; -import { alertsAcknowledgedTotal, alertsActive, alertsFiredTotal, dbQueryDuration, dbTransactionDuration, dbTransactionRollbacks, } from "@smithers-orchestrator/observability/metrics"; +import { alertsAcknowledgedTotal, alertsActive, alertsFiredTotal, dbQueryDuration, dbTransactionDuration, dbTransactionRollbacks, } from "@smthrs/observability/metrics"; import { assertOptionalStringMaxLength, assertPositiveFiniteNumber, } from "./input-bounds.js"; import { FRAME_KEYFRAME_INTERVAL, applyFrameDeltaJson, encodeFrameDelta, normalizeFrameEncoding, serializeFrameDelta, } from "./frame-codec.js"; import { getKeyColumns } from "./output.js"; @@ -33,7 +33,7 @@ import { camelToSnake } from "./utils/camelToSnake.js"; * @typedef {Effect.Effect<A, E> & PromiseLike<A>} RunnableEffect */ /** @typedef {import("./adapter/SignalQuery.ts").SignalQuery} SignalQuery */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** * @typedef {{ runId: string; frameNo: number; createdAtMs: number; xmlJson: string; xmlHash: string; encoding: string; mountedTaskIdsJson: string | null; taskIndexJson: string | null; note: string | null; }} FrameRow */ diff --git a/docs/references/smithers/packages/db/src/assertJsonPayloadWithinBounds.js b/docs/references/smithers/packages/db/src/assertJsonPayloadWithinBounds.js index 336573d56..1768af302 100644 --- a/docs/references/smithers/packages/db/src/assertJsonPayloadWithinBounds.js +++ b/docs/references/smithers/packages/db/src/assertJsonPayloadWithinBounds.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { assertMaxBytes } from "./assertMaxBytes.js"; import { assertMaxJsonDepth } from "./assertMaxJsonDepth.js"; /** @typedef {import("./JsonBounds.ts").JsonBounds} JsonBounds */ diff --git a/docs/references/smithers/packages/db/src/assertMaxBytes.js b/docs/references/smithers/packages/db/src/assertMaxBytes.js index 59f1cff01..67c06590c 100644 --- a/docs/references/smithers/packages/db/src/assertMaxBytes.js +++ b/docs/references/smithers/packages/db/src/assertMaxBytes.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** * @param {string} field * @param {string | ArrayBuffer | ArrayBufferView} value diff --git a/docs/references/smithers/packages/db/src/assertMaxJsonDepth.js b/docs/references/smithers/packages/db/src/assertMaxJsonDepth.js index 9f0294293..b623c43e2 100644 --- a/docs/references/smithers/packages/db/src/assertMaxJsonDepth.js +++ b/docs/references/smithers/packages/db/src/assertMaxJsonDepth.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** * @param {string} field * @param {unknown} value diff --git a/docs/references/smithers/packages/db/src/assertMaxStringLength.js b/docs/references/smithers/packages/db/src/assertMaxStringLength.js index 5c2235ee3..82ce55ebd 100644 --- a/docs/references/smithers/packages/db/src/assertMaxStringLength.js +++ b/docs/references/smithers/packages/db/src/assertMaxStringLength.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** * @param {string} field * @param {unknown} value diff --git a/docs/references/smithers/packages/db/src/assertOptionalArrayMaxLength.js b/docs/references/smithers/packages/db/src/assertOptionalArrayMaxLength.js index e2b8189dd..d06744d3d 100644 --- a/docs/references/smithers/packages/db/src/assertOptionalArrayMaxLength.js +++ b/docs/references/smithers/packages/db/src/assertOptionalArrayMaxLength.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** * @param {string} field * @param {unknown} value diff --git a/docs/references/smithers/packages/db/src/assertPositiveFiniteInteger.js b/docs/references/smithers/packages/db/src/assertPositiveFiniteInteger.js index 4d9f65c6d..09e231ef4 100644 --- a/docs/references/smithers/packages/db/src/assertPositiveFiniteInteger.js +++ b/docs/references/smithers/packages/db/src/assertPositiveFiniteInteger.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { assertPositiveFiniteNumber } from "./assertPositiveFiniteNumber.js"; /** * @param {string} field diff --git a/docs/references/smithers/packages/db/src/assertPositiveFiniteNumber.js b/docs/references/smithers/packages/db/src/assertPositiveFiniteNumber.js index 9104a1faf..fd5befe0e 100644 --- a/docs/references/smithers/packages/db/src/assertPositiveFiniteNumber.js +++ b/docs/references/smithers/packages/db/src/assertPositiveFiniteNumber.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** * @param {string} field * @param {unknown} value diff --git a/docs/references/smithers/packages/db/src/cache/nodeDiffCache.js b/docs/references/smithers/packages/db/src/cache/nodeDiffCache.js index 66690cae8..25f7cd4dc 100644 --- a/docs/references/smithers/packages/db/src/cache/nodeDiffCache.js +++ b/docs/references/smithers/packages/db/src/cache/nodeDiffCache.js @@ -1,4 +1,4 @@ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} _SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} _SmithersDb */ /** @typedef {import("../adapter/NodeDiffCacheRow.ts").NodeDiffCacheRow} _NodeDiffCacheRow */ /** @typedef {{ bundle: unknown; sizeBytes: number; cacheResult: "hit" | "miss" }} NodeDiffCacheResult */ diff --git a/docs/references/smithers/packages/db/src/ensure.js b/docs/references/smithers/packages/db/src/ensure.js index dff5a8c82..13df1b198 100644 --- a/docs/references/smithers/packages/db/src/ensure.js +++ b/docs/references/smithers/packages/db/src/ensure.js @@ -1,7 +1,7 @@ import { Effect } from "effect"; import { ensureSqlMessageStorageEffect } from "./sql-message-storage.js"; /** @typedef {import("drizzle-orm/bun-sqlite").BunSQLiteDatabase} _BunSQLiteDatabase */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} _SmithersError */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} _SmithersError */ /** * @param {_BunSQLiteDatabase<Record<string, unknown>>} db diff --git a/docs/references/smithers/packages/db/src/frame-codec.js b/docs/references/smithers/packages/db/src/frame-codec.js index 2123a1c7c..f64bd9c91 100644 --- a/docs/references/smithers/packages/db/src/frame-codec.js +++ b/docs/references/smithers/packages/db/src/frame-codec.js @@ -1,4 +1,4 @@ -import { canonicalizeXml, parseXmlJson } from "@smithers-orchestrator/graph/utils/xml"; +import { canonicalizeXml, parseXmlJson } from "@smthrs/graph/utils/xml"; /** @typedef {import("./frame-codec/FrameDelta.ts").FrameDelta} FrameDelta */ /** @typedef {import("./frame-codec/FrameDeltaOp.ts").FrameDeltaOp} FrameDeltaOp */ /** @typedef {import("./frame-codec/FrameEncoding.ts").FrameEncoding} FrameEncoding */ diff --git a/docs/references/smithers/packages/db/src/frame-codec/applyFrameDelta.js b/docs/references/smithers/packages/db/src/frame-codec/applyFrameDelta.js index 62ea76b68..23c7a7f59 100644 --- a/docs/references/smithers/packages/db/src/frame-codec/applyFrameDelta.js +++ b/docs/references/smithers/packages/db/src/frame-codec/applyFrameDelta.js @@ -1,4 +1,4 @@ -import { canonicalizeXml, parseXmlJson } from "@smithers-orchestrator/graph/utils/xml"; +import { canonicalizeXml, parseXmlJson } from "@smthrs/graph/utils/xml"; /** @typedef {import("./FrameDeltaOp.ts").FrameDeltaOp} FrameDeltaOp */ /** @typedef {import("./JsonPath.ts").JsonPath} JsonPath */ /** @typedef {import("./JsonPathSegment.ts").JsonPathSegment} JsonPathSegment */ diff --git a/docs/references/smithers/packages/db/src/frame-codec/encodeFrameDelta.js b/docs/references/smithers/packages/db/src/frame-codec/encodeFrameDelta.js index 12141c7e1..5fa48fc4c 100644 --- a/docs/references/smithers/packages/db/src/frame-codec/encodeFrameDelta.js +++ b/docs/references/smithers/packages/db/src/frame-codec/encodeFrameDelta.js @@ -1,4 +1,4 @@ -import { parseXmlJson } from "@smithers-orchestrator/graph/utils/xml"; +import { parseXmlJson } from "@smthrs/graph/utils/xml"; /** @typedef {import("./FrameDeltaOp.ts").FrameDeltaOp} FrameDeltaOp */ /** @typedef {import("./JsonPath.ts").JsonPath} JsonPath */ diff --git a/docs/references/smithers/packages/db/src/index.d.ts b/docs/references/smithers/packages/db/src/index.d.ts index 973ddc7fc..a1432334d 100644 --- a/docs/references/smithers/packages/db/src/index.d.ts +++ b/docs/references/smithers/packages/db/src/index.d.ts @@ -2,8 +2,8 @@ import * as zod from 'zod'; import { z } from 'zod'; import * as drizzle_orm from 'drizzle-orm'; import { Table as Table$1, and } from 'drizzle-orm'; -import * as _smithers_errors_SmithersError from '@smithers-orchestrator/errors/SmithersError'; -import { SmithersError as SmithersError$2 } from '@smithers-orchestrator/errors/SmithersError'; +import * as _smithers_errors_SmithersError from '@smthrs/errors/SmithersError'; +import { SmithersError as SmithersError$2 } from '@smthrs/errors/SmithersError'; import * as drizzle_orm_bun_sqlite from 'drizzle-orm/bun-sqlite'; import { Database } from 'bun:sqlite'; import * as SqlClient from '@effect/sql/SqlClient'; @@ -369,7 +369,7 @@ type SqliteParam = string | number | bigint | boolean | Uint8Array | null | unde * @typedef {Effect.Effect<A, E> & PromiseLike<A>} RunnableEffect */ /** @typedef {import("./adapter/SignalQuery.ts").SignalQuery} SignalQuery */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** * @typedef {{ runId: string; frameNo: number; createdAtMs: number; xmlJson: string; xmlHash: string; encoding: string; mountedTaskIdsJson: string | null; taskIndexJson: string | null; note: string | null; }} FrameRow */ @@ -1263,7 +1263,7 @@ type CacheRowLike = { }; /** @typedef {import("drizzle-orm/bun-sqlite").BunSQLiteDatabase} _BunSQLiteDatabase */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} _SmithersError */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} _SmithersError */ /** * @param {_BunSQLiteDatabase<Record<string, unknown>>} db * @returns {Effect.Effect<void, _SmithersError>} @@ -5105,7 +5105,7 @@ type NodeDiffCacheResult = { sizeBytes: number; cacheResult: "hit" | "miss"; }; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} _SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} _SmithersDb */ /** @typedef {import("../adapter/NodeDiffCacheRow.ts").NodeDiffCacheRow} _NodeDiffCacheRow */ /** @typedef {{ bundle: unknown; sizeBytes: number; cacheResult: "hit" | "miss" }} NodeDiffCacheResult */ declare const NODE_DIFF_MAX_BYTES: number; diff --git a/docs/references/smithers/packages/db/src/loadInputEffect.js b/docs/references/smithers/packages/db/src/loadInputEffect.js index f7bad1817..fe943de9c 100644 --- a/docs/references/smithers/packages/db/src/loadInputEffect.js +++ b/docs/references/smithers/packages/db/src/loadInputEffect.js @@ -1,8 +1,8 @@ import { eq } from "drizzle-orm"; import { getTableColumns } from "drizzle-orm/utils"; import { Effect } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** @typedef {import("drizzle-orm/bun-sqlite").BunSQLiteDatabase} BunSQLiteDatabase */ /** @typedef {import("drizzle-orm").Table} Table */ diff --git a/docs/references/smithers/packages/db/src/loadOutputsEffect.js b/docs/references/smithers/packages/db/src/loadOutputsEffect.js index 70a9c5fd2..2c12555cf 100644 --- a/docs/references/smithers/packages/db/src/loadOutputsEffect.js +++ b/docs/references/smithers/packages/db/src/loadOutputsEffect.js @@ -1,7 +1,7 @@ import { eq, getTableName } from "drizzle-orm"; import { getTableColumns } from "drizzle-orm/utils"; import { Effect, Option } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; /** @typedef {Record<string, Array<unknown>>} OutputSnapshot */ /** @typedef {import("drizzle-orm/bun-sqlite").BunSQLiteDatabase} BunSQLiteDatabase */ /** @typedef {import("drizzle-orm").Table} Table */ diff --git a/docs/references/smithers/packages/db/src/output.js b/docs/references/smithers/packages/db/src/output.js index fff5e064d..e247d202b 100644 --- a/docs/references/smithers/packages/db/src/output.js +++ b/docs/references/smithers/packages/db/src/output.js @@ -3,8 +3,8 @@ import { getTableColumns } from "drizzle-orm/utils"; import { createInsertSchema, createSelectSchema } from "drizzle-zod"; import { Effect } from "effect"; import { z } from "zod"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { getJsonColumnKeys, isPostgresDb, pgRowToDrizzle } from "./snapshot.js"; import { withSqliteWriteRetryEffect } from "./write-retry.js"; /** @typedef {import("drizzle-orm").AnyColumn} AnyColumn */ diff --git a/docs/references/smithers/packages/db/src/output/getKeyColumns.js b/docs/references/smithers/packages/db/src/output/getKeyColumns.js index 6f4ed56ca..1eca46303 100644 --- a/docs/references/smithers/packages/db/src/output/getKeyColumns.js +++ b/docs/references/smithers/packages/db/src/output/getKeyColumns.js @@ -1,5 +1,5 @@ import { getTableColumns } from "drizzle-orm/utils"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** @typedef {import("drizzle-orm").AnyColumn} AnyColumn */ /** @typedef {import("drizzle-orm").Table} Table */ diff --git a/docs/references/smithers/packages/db/src/output/selectOutputRowEffect.js b/docs/references/smithers/packages/db/src/output/selectOutputRowEffect.js index c452cff0c..d36699943 100644 --- a/docs/references/smithers/packages/db/src/output/selectOutputRowEffect.js +++ b/docs/references/smithers/packages/db/src/output/selectOutputRowEffect.js @@ -1,8 +1,8 @@ import { Effect } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { buildKeyWhere } from "./buildKeyWhere.js"; /** @typedef {import("./OutputKey.ts").OutputKey} OutputKey */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** @typedef {import("drizzle-orm").Table} Table */ /** @typedef {import("drizzle-orm/bun-sqlite").BunSQLiteDatabase} BunSQLiteDatabase */ diff --git a/docs/references/smithers/packages/db/src/output/upsertOutputRowEffect.js b/docs/references/smithers/packages/db/src/output/upsertOutputRowEffect.js index c2ad4adcb..0aac91f86 100644 --- a/docs/references/smithers/packages/db/src/output/upsertOutputRowEffect.js +++ b/docs/references/smithers/packages/db/src/output/upsertOutputRowEffect.js @@ -1,9 +1,9 @@ import { Effect } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { withSqliteWriteRetryEffect } from "../write-retry.js"; import { getKeyColumns } from "./getKeyColumns.js"; /** @typedef {import("./OutputKey.ts").OutputKey} OutputKey */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** @typedef {import("drizzle-orm").Table} Table */ /** @typedef {import("drizzle-orm/bun-sqlite").BunSQLiteDatabase} BunSQLiteDatabase */ diff --git a/docs/references/smithers/packages/db/src/runState/computeRunState.js b/docs/references/smithers/packages/db/src/runState/computeRunState.js index e9b0b6ab1..168c6968f 100644 --- a/docs/references/smithers/packages/db/src/runState/computeRunState.js +++ b/docs/references/smithers/packages/db/src/runState/computeRunState.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { computeRunStateFromRow } from "./computeRunStateFromRow.js"; /** @typedef {import("../adapter/SmithersDb.js").SmithersDb} SmithersDb */ diff --git a/docs/references/smithers/packages/db/src/snapshot.js b/docs/references/smithers/packages/db/src/snapshot.js index 5718579c0..0362f4c97 100644 --- a/docs/references/smithers/packages/db/src/snapshot.js +++ b/docs/references/smithers/packages/db/src/snapshot.js @@ -1,8 +1,8 @@ import { eq, getTableName } from "drizzle-orm"; import { getTableColumns } from "drizzle-orm/utils"; import { Effect, Option } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** @typedef {Record<string, Array<unknown>>} OutputSnapshot */ /** @typedef {import("drizzle-orm/bun-sqlite").BunSQLiteDatabase} BunSQLiteDatabase */ /** @typedef {import("drizzle-orm").Table} _Table */ diff --git a/docs/references/smithers/packages/db/src/withSqliteWriteRetryEffect.js b/docs/references/smithers/packages/db/src/withSqliteWriteRetryEffect.js index 96114108d..96bc2f47f 100644 --- a/docs/references/smithers/packages/db/src/withSqliteWriteRetryEffect.js +++ b/docs/references/smithers/packages/db/src/withSqliteWriteRetryEffect.js @@ -1,8 +1,8 @@ import { Duration, Effect, Metric, Schedule, ScheduleDecision, ScheduleIntervals, } from "effect"; -import { dbRetries } from "@smithers-orchestrator/observability/metrics"; -import { retryPolicyToSchedule } from "@smithers-orchestrator/scheduler/retryPolicyToSchedule"; +import { dbRetries } from "@smthrs/observability/metrics"; +import { retryPolicyToSchedule } from "@smthrs/scheduler/retryPolicyToSchedule"; import { isRetryableSqliteWriteError } from "./isRetryableSqliteWriteError.js"; -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** @typedef {import("./SqliteWriteRetryOptions.ts").SqliteWriteRetryOptions} SqliteWriteRetryOptions */ // Raised from 6→10 and 2000→10000: concurrent Worktree tasks can produce diff --git a/docs/references/smithers/packages/db/tests/alert-instances.test.js b/docs/references/smithers/packages/db/tests/alert-instances.test.js index 99045b3cb..1f7a91826 100644 --- a/docs/references/smithers/packages/db/tests/alert-instances.test.js +++ b/docs/references/smithers/packages/db/tests/alert-instances.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createTempRepo, runSmithers } from "../../../packages/smithers/tests/e2e-helpers.js"; const ALERT_CLI_TIMEOUT_MS = 45_000; function createAdapter() { diff --git a/docs/references/smithers/packages/db/tests/db-adapter.test.js b/docs/references/smithers/packages/db/tests/db-adapter.test.js index 08e80190c..6e2a7ecf8 100644 --- a/docs/references/smithers/packages/db/tests/db-adapter.test.js +++ b/docs/references/smithers/packages/db/tests/db-adapter.test.js @@ -3,7 +3,7 @@ import { SmithersDb } from "../src/adapter.js"; import { ensureSmithersTables } from "../src/ensure.js"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { canonicalizeXml } from "@smithers-orchestrator/graph/utils/xml"; +import { canonicalizeXml } from "@smthrs/graph/utils/xml"; function createTestDb() { const sqlite = new Database(":memory:"); const db = drizzle(sqlite); diff --git a/docs/references/smithers/packages/db/tests/db-concurrent.test.js b/docs/references/smithers/packages/db/tests/db-concurrent.test.js index f763e35dd..6a67f323f 100644 --- a/docs/references/smithers/packages/db/tests/db-concurrent.test.js +++ b/docs/references/smithers/packages/db/tests/db-concurrent.test.js @@ -12,7 +12,7 @@ import { drizzle } from "drizzle-orm/bun-sqlite"; import { Effect } from "effect"; import { SmithersDb } from "../src/adapter.js"; import { ensureSmithersTables } from "../src/ensure.js"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; function createSharedDb() { const sqlite = new Database(":memory:"); diff --git a/docs/references/smithers/packages/db/tests/db-frame-codec.test.js b/docs/references/smithers/packages/db/tests/db-frame-codec.test.js index a6c5cfc99..f67908c0a 100644 --- a/docs/references/smithers/packages/db/tests/db-frame-codec.test.js +++ b/docs/references/smithers/packages/db/tests/db-frame-codec.test.js @@ -1,6 +1,6 @@ import { describe, expect, test } from "bun:test"; import { applyFrameDelta, encodeFrameDelta, parseFrameDelta, serializeFrameDelta, } from "../src/frame-codec.js"; -import { canonicalizeXml } from "@smithers-orchestrator/graph/utils/xml"; +import { canonicalizeXml } from "@smthrs/graph/utils/xml"; /** * @param {XmlNode[]} children * @returns {XmlNode} diff --git a/docs/references/smithers/packages/db/tests/db-loadinput-missing-runid.test.js b/docs/references/smithers/packages/db/tests/db-loadinput-missing-runid.test.js index db7178eb9..4cededb6e 100644 --- a/docs/references/smithers/packages/db/tests/db-loadinput-missing-runid.test.js +++ b/docs/references/smithers/packages/db/tests/db-loadinput-missing-runid.test.js @@ -3,7 +3,7 @@ import { Effect, Exit } from "effect"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; import { sqliteTable, text } from "drizzle-orm/sqlite-core"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { loadInputEffect } from "../src/snapshot.js"; // Input table deliberately missing a `runId` column to exercise the diff --git a/docs/references/smithers/packages/db/tests/db-transaction.test.js b/docs/references/smithers/packages/db/tests/db-transaction.test.js index ea3eaa749..b37cf589c 100644 --- a/docs/references/smithers/packages/db/tests/db-transaction.test.js +++ b/docs/references/smithers/packages/db/tests/db-transaction.test.js @@ -4,7 +4,7 @@ import { drizzle } from "drizzle-orm/bun-sqlite"; import { Effect } from "effect"; import { SmithersDb } from "../src/adapter.js"; import { ensureSmithersTables } from "../src/ensure.js"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; function createTestDb() { const sqlite = new Database(":memory:"); const db = drizzle(sqlite); diff --git a/docs/references/smithers/packages/db/tests/effect-write-retry.test.js b/docs/references/smithers/packages/db/tests/effect-write-retry.test.js index 5191506c9..df7cf7a86 100644 --- a/docs/references/smithers/packages/db/tests/effect-write-retry.test.js +++ b/docs/references/smithers/packages/db/tests/effect-write-retry.test.js @@ -1,7 +1,7 @@ import { describe, expect, test } from "bun:test"; import { withSqliteWriteRetryEffect, isRetryableSqliteWriteError, } from "../src/write-retry.js"; import { Effect } from "effect"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; // --------------------------------------------------------------------------- // Helpers // --------------------------------------------------------------------------- diff --git a/docs/references/smithers/packages/db/tests/write-retry-comprehensive.test.js b/docs/references/smithers/packages/db/tests/write-retry-comprehensive.test.js index cf211a5a0..377f8ad36 100644 --- a/docs/references/smithers/packages/db/tests/write-retry-comprehensive.test.js +++ b/docs/references/smithers/packages/db/tests/write-retry-comprehensive.test.js @@ -1,6 +1,6 @@ import { describe, expect, test } from "bun:test"; import { isRetryableSqliteWriteError, withSqliteWriteRetry, } from "../src/write-retry.js"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; describe("isRetryableSqliteWriteError", () => { test("SQLITE_BUSY code is retryable", () => { const err = Object.assign(new Error("busy"), { code: "SQLITE_BUSY" }); diff --git a/docs/references/smithers/packages/devtools/package.json b/docs/references/smithers/packages/devtools/package.json index 53838b7e2..9fa496341 100644 --- a/docs/references/smithers/packages/devtools/package.json +++ b/docs/references/smithers/packages/devtools/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/devtools", + "name": "@smthrs/devtools", "version": "0.23.0", "description": "Devtools and debugging utilities for Smithers workflow inspection", "type": "module", diff --git a/docs/references/smithers/packages/driver/package.json b/docs/references/smithers/packages/driver/package.json index 4e928714d..dfe285b01 100644 --- a/docs/references/smithers/packages/driver/package.json +++ b/docs/references/smithers/packages/driver/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/driver", + "name": "@smthrs/driver", "version": "0.23.0", "description": "Workflow execution driver — runs tasks, acts on EngineDecisions, reports results", "type": "module", @@ -66,11 +66,11 @@ "build": "tsup --dts-only" }, "dependencies": { - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", + "@smthrs/db": "^0.33.0", + "@smthrs/errors": "^0.33.0", + "@smthrs/graph": "^0.33.0", + "@smthrs/observability": "^0.33.0", + "@smthrs/scheduler": "^0.33.0", "effect": "^3.21.1", "zod": "^4.3.6" }, diff --git a/docs/references/smithers/packages/driver/src/RunOptions.ts b/docs/references/smithers/packages/driver/src/RunOptions.ts index 7c0e3f185..000dd7504 100644 --- a/docs/references/smithers/packages/driver/src/RunOptions.ts +++ b/docs/references/smithers/packages/driver/src/RunOptions.ts @@ -1,5 +1,5 @@ import type { RunAuthContext } from "./RunAuthContext.ts"; -import type { SmithersEvent } from "@smithers-orchestrator/observability/SmithersEvent"; +import type { SmithersEvent } from "@smthrs/observability/SmithersEvent"; export type HotReloadOptions = { /** Root directory to watch for changes (default: auto-detect from workflow entry) */ diff --git a/docs/references/smithers/packages/driver/src/SchedulerWaitHandler.ts b/docs/references/smithers/packages/driver/src/SchedulerWaitHandler.ts index 31d0ddd12..4623dbf24 100644 --- a/docs/references/smithers/packages/driver/src/SchedulerWaitHandler.ts +++ b/docs/references/smithers/packages/driver/src/SchedulerWaitHandler.ts @@ -1,4 +1,4 @@ -import type { TaskDescriptor } from "@smithers-orchestrator/graph/types"; +import type { TaskDescriptor } from "@smthrs/graph/types"; export type SchedulerWaitHandler = ( durationMs: number, diff --git a/docs/references/smithers/packages/driver/src/SmithersCtx.js b/docs/references/smithers/packages/driver/src/SmithersCtx.js index 902c88a86..4c45d98fa 100644 --- a/docs/references/smithers/packages/driver/src/SmithersCtx.js +++ b/docs/references/smithers/packages/driver/src/SmithersCtx.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { buildCurrentScopes } from "./buildCurrentScopes.js"; import { filterRowsByNodeId } from "./filterRowsByNodeId.js"; import { normalizeInputRow } from "./normalizeInputRow.js"; diff --git a/docs/references/smithers/packages/driver/src/SmithersTaskRuntime.ts b/docs/references/smithers/packages/driver/src/SmithersTaskRuntime.ts index 2251b36a5..114e9b1a4 100644 --- a/docs/references/smithers/packages/driver/src/SmithersTaskRuntime.ts +++ b/docs/references/smithers/packages/driver/src/SmithersTaskRuntime.ts @@ -1,9 +1,9 @@ /** * Structural stand-in for the full `SmithersDb` class exported from - * `@smithers-orchestrator/db/adapter`. The generated `@smithers-orchestrator/db` index.d.ts does not + * `@smthrs/db/adapter`. The generated `@smthrs/db` index.d.ts does not * expose `SmithersDb` as a named export (it emits `SmithersDb$1` plus a * non-exported alias), and the package's wildcard subpath mapping sends every - * `@smithers-orchestrator/db/<sub>` type lookup back to that same bundle. Until the db + * `@smthrs/db/<sub>` type lookup back to that same bundle. Until the db * package fixes its public type surface, we keep the runtime `db` handle typed * as a branded record so consumers cannot treat it as arbitrary `any` while * still allowing a real `SmithersDb` instance to flow through. diff --git a/docs/references/smithers/packages/driver/src/TaskExecutor.ts b/docs/references/smithers/packages/driver/src/TaskExecutor.ts index ddfc56c9c..5c5d9dfb0 100644 --- a/docs/references/smithers/packages/driver/src/TaskExecutor.ts +++ b/docs/references/smithers/packages/driver/src/TaskExecutor.ts @@ -1,4 +1,4 @@ -import type { TaskDescriptor } from "@smithers-orchestrator/graph/types"; +import type { TaskDescriptor } from "@smthrs/graph/types"; import type { TaskExecutorContext } from "./TaskExecutorContext.ts"; export type TaskExecutor = ( diff --git a/docs/references/smithers/packages/driver/src/WaitHandler.ts b/docs/references/smithers/packages/driver/src/WaitHandler.ts index 06c828582..6aa3ed259 100644 --- a/docs/references/smithers/packages/driver/src/WaitHandler.ts +++ b/docs/references/smithers/packages/driver/src/WaitHandler.ts @@ -1,6 +1,6 @@ import type { RunOptions } from "./RunOptions.ts"; import type { RunResult } from "./RunResult.ts"; -import type { EngineDecision, WaitReason } from "@smithers-orchestrator/scheduler"; +import type { EngineDecision, WaitReason } from "@smthrs/scheduler"; export type WaitHandler = ( reason: WaitReason, diff --git a/docs/references/smithers/packages/driver/src/WorkflowDefinition.ts b/docs/references/smithers/packages/driver/src/WorkflowDefinition.ts index 3f4f4eefe..fb2765821 100644 --- a/docs/references/smithers/packages/driver/src/WorkflowDefinition.ts +++ b/docs/references/smithers/packages/driver/src/WorkflowDefinition.ts @@ -1,5 +1,5 @@ -import type { SmithersWorkflowOptions } from "@smithers-orchestrator/scheduler/SmithersWorkflowOptions"; -import type { SchemaRegistryEntry } from "@smithers-orchestrator/db/SchemaRegistryEntry"; +import type { SmithersWorkflowOptions } from "@smthrs/scheduler/SmithersWorkflowOptions"; +import type { SchemaRegistryEntry } from "@smthrs/db/SchemaRegistryEntry"; import type { z } from "zod"; import type { WorkflowElement } from "./WorkflowElement.ts"; diff --git a/docs/references/smithers/packages/driver/src/WorkflowDriver.js b/docs/references/smithers/packages/driver/src/WorkflowDriver.js index d8d78f00f..7a96d149f 100644 --- a/docs/references/smithers/packages/driver/src/WorkflowDriver.js +++ b/docs/references/smithers/packages/driver/src/WorkflowDriver.js @@ -12,13 +12,13 @@ import { withAbort } from "./withAbort.js"; /** @typedef {import("./ContinueAsNewHandler.ts").ContinueAsNewHandler} ContinueAsNewHandler */ /** @typedef {import("./RunOptions.ts").RunOptions} RunOptions */ -/** @typedef {import("@smithers-orchestrator/scheduler").RunResult} RunResult */ -/** @typedef {import("@smithers-orchestrator/scheduler").EngineDecision} EngineDecision */ -/** @typedef {import("@smithers-orchestrator/scheduler").RenderContext} RenderContext */ -/** @typedef {import("@smithers-orchestrator/scheduler").WaitReason} WaitReason */ -/** @typedef {import("@smithers-orchestrator/graph/types").TaskDescriptor} TaskDescriptor */ +/** @typedef {import("@smthrs/scheduler").RunResult} RunResult */ +/** @typedef {import("@smthrs/scheduler").EngineDecision} EngineDecision */ +/** @typedef {import("@smthrs/scheduler").RenderContext} RenderContext */ +/** @typedef {import("@smthrs/scheduler").WaitReason} WaitReason */ +/** @typedef {import("@smthrs/graph/types").TaskDescriptor} TaskDescriptor */ -const SCHEDULER_SPECIFIER = "@smithers-orchestrator/scheduler"; +const SCHEDULER_SPECIFIER = "@smthrs/scheduler"; const LOCAL_SCHEDULER_SPECIFIER = "../../scheduler/src/index.js"; function createRunId() { return `run_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`; @@ -223,7 +223,7 @@ export class WorkflowDriver { activeRunId = ""; /** @type {RunOptions | undefined} */ activeOptions; - /** @type {import("@smithers-orchestrator/graph").WorkflowGraph | undefined} */ + /** @type {import("@smthrs/graph").WorkflowGraph | undefined} */ lastGraph; /** @type {Map<string, string>} */ outputTablesByNodeId = new Map(); @@ -320,7 +320,7 @@ export class WorkflowDriver { async initializeSession(runId, options) { const createSession = this.createSession ?? (await loadCreateSession()); if (!createSession) { - throw new Error("WorkflowDriver requires a WorkflowSession or createSession from @smithers-orchestrator/scheduler."); + throw new Error("WorkflowDriver requires a WorkflowSession or createSession from @smthrs/scheduler."); } const created = createSession({ db: this.db, diff --git a/docs/references/smithers/packages/driver/src/WorkflowGraphRenderer.ts b/docs/references/smithers/packages/driver/src/WorkflowGraphRenderer.ts index ac5b4c02c..1b3bb8440 100644 --- a/docs/references/smithers/packages/driver/src/WorkflowGraphRenderer.ts +++ b/docs/references/smithers/packages/driver/src/WorkflowGraphRenderer.ts @@ -1,4 +1,4 @@ -import type { ExtractOptions, WorkflowGraph } from "@smithers-orchestrator/graph"; +import type { ExtractOptions, WorkflowGraph } from "@smthrs/graph"; import type { WorkflowElement } from "./WorkflowElement.ts"; export type WorkflowGraphRenderer = { diff --git a/docs/references/smithers/packages/driver/src/WorkflowSession.ts b/docs/references/smithers/packages/driver/src/WorkflowSession.ts index 0bad28e56..a45536361 100644 --- a/docs/references/smithers/packages/driver/src/WorkflowSession.ts +++ b/docs/references/smithers/packages/driver/src/WorkflowSession.ts @@ -1,4 +1,4 @@ -import type { WorkflowGraph } from "@smithers-orchestrator/graph/types"; +import type { WorkflowGraph } from "@smthrs/graph/types"; import type { TaskCompletedEvent } from "./TaskCompletedEvent.ts"; import type { TaskFailedEvent } from "./TaskFailedEvent.ts"; diff --git a/docs/references/smithers/packages/driver/src/child-process.js b/docs/references/smithers/packages/driver/src/child-process.js index 0849aee62..a3c2d9403 100644 --- a/docs/references/smithers/packages/driver/src/child-process.js +++ b/docs/references/smithers/packages/driver/src/child-process.js @@ -1,10 +1,10 @@ import { spawn } from "node:child_process"; import { Effect, Metric } from "effect"; import { ignoreSyncError } from "./interop.js"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { toolOutputTruncatedTotal } from "@smithers-orchestrator/observability/metrics"; -import { logDebug, logWarning } from "@smithers-orchestrator/observability/logging"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { toolOutputTruncatedTotal } from "@smthrs/observability/metrics"; +import { logDebug, logWarning } from "@smthrs/observability/logging"; /** @typedef {import("./SpawnCaptureOptions.ts").SpawnCaptureOptions} SpawnCaptureOptions */ /** @typedef {import("./SpawnCaptureResult.ts").SpawnCaptureResult} SpawnCaptureResult */ diff --git a/docs/references/smithers/packages/driver/src/defaultTaskExecutor.js b/docs/references/smithers/packages/driver/src/defaultTaskExecutor.js index 11d2c92b6..435ba4dea 100644 --- a/docs/references/smithers/packages/driver/src/defaultTaskExecutor.js +++ b/docs/references/smithers/packages/driver/src/defaultTaskExecutor.js @@ -1,5 +1,5 @@ import { withAbort } from "./withAbort.js"; -/** @typedef {import("@smithers-orchestrator/graph").TaskDescriptor} TaskDescriptor */ +/** @typedef {import("@smthrs/graph").TaskDescriptor} TaskDescriptor */ /** @typedef {import("./workflow-types.ts").TaskExecutorContext} TaskExecutorContext */ /** diff --git a/docs/references/smithers/packages/driver/src/index.d.ts b/docs/references/smithers/packages/driver/src/index.d.ts index 2b92bfba0..ec30d9f2b 100644 --- a/docs/references/smithers/packages/driver/src/index.d.ts +++ b/docs/references/smithers/packages/driver/src/index.d.ts @@ -1,13 +1,13 @@ -import * as _smithers_graph_types from '@smithers-orchestrator/graph/types'; -import { WorkflowGraph as WorkflowGraph$1, TaskDescriptor as TaskDescriptor$1 } from '@smithers-orchestrator/graph/types'; -import { SmithersEvent } from '@smithers-orchestrator/observability/SmithersEvent'; -import * as _smithers_scheduler from '@smithers-orchestrator/scheduler'; -import { WaitReason as WaitReason$1, EngineDecision as EngineDecision$1 } from '@smithers-orchestrator/scheduler'; +import * as _smithers_graph_types from '@smthrs/graph/types'; +import { WorkflowGraph as WorkflowGraph$1, TaskDescriptor as TaskDescriptor$1 } from '@smthrs/graph/types'; +import { SmithersEvent } from '@smthrs/observability/SmithersEvent'; +import * as _smithers_scheduler from '@smthrs/scheduler'; +import { WaitReason as WaitReason$1, EngineDecision as EngineDecision$1 } from '@smthrs/scheduler'; import { z } from 'zod'; -import { SmithersWorkflowOptions } from '@smithers-orchestrator/scheduler/SmithersWorkflowOptions'; -import { SchemaRegistryEntry } from '@smithers-orchestrator/db/SchemaRegistryEntry'; -import * as _smithers_graph from '@smithers-orchestrator/graph'; -import { ExtractOptions, WorkflowGraph } from '@smithers-orchestrator/graph'; +import { SmithersWorkflowOptions } from '@smthrs/scheduler/SmithersWorkflowOptions'; +import { SchemaRegistryEntry } from '@smthrs/db/SchemaRegistryEntry'; +import * as _smithers_graph from '@smthrs/graph'; +import { ExtractOptions, WorkflowGraph } from '@smthrs/graph'; type TaskCompletedEvent = { nodeId: string; @@ -333,7 +333,7 @@ declare class WorkflowDriver<Schema extends unknown = unknown> { activeRunId: string; /** @type {RunOptions | undefined} */ activeOptions: RunOptions$1 | undefined; - /** @type {import("@smithers-orchestrator/graph").WorkflowGraph | undefined} */ + /** @type {import("@smthrs/graph").WorkflowGraph | undefined} */ lastGraph: _smithers_graph.WorkflowGraph | undefined; /** @type {Map<string, string>} */ outputTablesByNodeId: Map<string, string>; diff --git a/docs/references/smithers/packages/driver/src/task-runtime.js b/docs/references/smithers/packages/driver/src/task-runtime.js index 044525b80..a4bdd133b 100644 --- a/docs/references/smithers/packages/driver/src/task-runtime.js +++ b/docs/references/smithers/packages/driver/src/task-runtime.js @@ -1,5 +1,5 @@ import { AsyncLocalStorage } from "node:async_hooks"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** @typedef {import("./SmithersTaskRuntime.ts").SmithersTaskRuntime} SmithersTaskRuntime */ const storage = new AsyncLocalStorage(); diff --git a/docs/references/smithers/packages/driver/src/workflow-types.ts b/docs/references/smithers/packages/driver/src/workflow-types.ts index 79e887f88..2db7b181b 100644 --- a/docs/references/smithers/packages/driver/src/workflow-types.ts +++ b/docs/references/smithers/packages/driver/src/workflow-types.ts @@ -3,8 +3,8 @@ export type { RenderContext, TaskOutput, WaitReason, -} from "@smithers-orchestrator/scheduler"; -export type { RunResult } from "@smithers-orchestrator/scheduler"; +} from "@smthrs/scheduler"; +export type { RunResult } from "@smthrs/scheduler"; export type { ContinueAsNewHandler } from "./ContinueAsNewHandler.ts"; export type { CreateWorkflowSession } from "./CreateWorkflowSession.ts"; export type { CreateWorkflowSessionOptions } from "./CreateWorkflowSessionOptions.ts"; diff --git a/docs/references/smithers/packages/engine/package.json b/docs/references/smithers/packages/engine/package.json index d7b943b53..14f85b941 100644 --- a/docs/references/smithers/packages/engine/package.json +++ b/docs/references/smithers/packages/engine/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/engine", + "name": "@smthrs/engine", "version": "0.23.0", "description": "Concrete Smithers workflow execution engine", "type": "module", @@ -32,20 +32,20 @@ "@effect/sql": "^0.51.0", "@effect/sql-sqlite-bun": "^0.52.0", "@effect/workflow": "^0.18.0", - "@smithers-orchestrator/agents": "workspace:*", - "@smithers-orchestrator/components": "workspace:*", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/react-reconciler": "workspace:*", - "@smithers-orchestrator/sandbox": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "@smithers-orchestrator/scorers": "workspace:*", - "@smithers-orchestrator/time-travel": "workspace:*", - "@smithers-orchestrator/tool-context": "workspace:*", - "@smithers-orchestrator/vcs": "workspace:*", + "@smthrs/agents": "^0.33.0", + "@smthrs/components": "^0.33.0", + "@smthrs/db": "^0.33.0", + "@smthrs/driver": "^0.33.0", + "@smthrs/errors": "^0.33.0", + "@smthrs/graph": "^0.33.0", + "@smthrs/observability": "^0.33.0", + "@smthrs/react-reconciler": "^0.33.0", + "@smthrs/sandbox": "^0.33.0", + "@smthrs/scheduler": "^0.33.0", + "@smthrs/scorers": "^0.33.0", + "@smthrs/time-travel": "^0.33.0", + "@smthrs/tool-context": "^0.33.0", + "@smthrs/vcs": "^0.33.0", "diff": "^9.0.0", "drizzle-orm": "^0.45.2", "effect": "^3.21.1", diff --git a/docs/references/smithers/packages/engine/src/AgentTraceCollector.js b/docs/references/smithers/packages/engine/src/AgentTraceCollector.js index 7e8590ea2..2743401f4 100644 --- a/docs/references/smithers/packages/engine/src/AgentTraceCollector.js +++ b/docs/references/smithers/packages/engine/src/AgentTraceCollector.js @@ -1,40 +1,40 @@ import { appendFile, mkdir, readFile, writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; -import { normalizeTokenUsage } from "@smithers-orchestrator/agents/BaseCliAgent"; -import { detectAgentFamily } from "@smithers-orchestrator/observability/detectAgentFamily"; -import { detectCaptureMode } from "@smithers-orchestrator/observability/detectCaptureMode"; -import { resolveAgentTraceCapabilities } from "@smithers-orchestrator/observability/resolveAgentTraceCapabilities"; -import { unsupportedKindsForCapabilities } from "@smithers-orchestrator/observability/unsupportedKindsForCapabilities"; -import { kindPhase } from "@smithers-orchestrator/observability/kindPhase"; -import { normalizeStructuredEvent } from "@smithers-orchestrator/observability/normalizeStructuredEvent"; -import { extractProviderSessionCorrelation } from "@smithers-orchestrator/observability/_traceEventNormalizers"; -import { redactValue } from "@smithers-orchestrator/observability/_traceRedaction"; -import { canonicalTraceEventToOtelLogRecord } from "@smithers-orchestrator/observability/canonicalTraceEventToOtelLogRecord"; -import { agentSessionEventToOtelLogRecord } from "@smithers-orchestrator/observability/agentSessionEventToOtelLogRecord"; -import { emitOtelLogRecord } from "@smithers-orchestrator/observability/emitOtelLogRecord"; -import { shouldExportTraceEventToOtel } from "@smithers-orchestrator/observability/_otelLogBuilders"; +import { nowMs } from "@smthrs/scheduler/nowMs"; +import { normalizeTokenUsage } from "@smthrs/agents/BaseCliAgent"; +import { detectAgentFamily } from "@smthrs/observability/detectAgentFamily"; +import { detectCaptureMode } from "@smthrs/observability/detectCaptureMode"; +import { resolveAgentTraceCapabilities } from "@smthrs/observability/resolveAgentTraceCapabilities"; +import { unsupportedKindsForCapabilities } from "@smthrs/observability/unsupportedKindsForCapabilities"; +import { kindPhase } from "@smthrs/observability/kindPhase"; +import { normalizeStructuredEvent } from "@smthrs/observability/normalizeStructuredEvent"; +import { extractProviderSessionCorrelation } from "@smthrs/observability/_traceEventNormalizers"; +import { redactValue } from "@smthrs/observability/_traceRedaction"; +import { canonicalTraceEventToOtelLogRecord } from "@smthrs/observability/canonicalTraceEventToOtelLogRecord"; +import { agentSessionEventToOtelLogRecord } from "@smthrs/observability/agentSessionEventToOtelLogRecord"; +import { emitOtelLogRecord } from "@smthrs/observability/emitOtelLogRecord"; +import { shouldExportTraceEventToOtel } from "@smthrs/observability/_otelLogBuilders"; import { resolveClaudeSessionFile, resolveCodexSessionFile, resolvePiSessionFile, -} from "@smithers-orchestrator/observability/_sessionFileResolvers"; +} from "@smthrs/observability/_sessionFileResolvers"; /** - * @typedef {import("@smithers-orchestrator/observability/SmithersEvent").SmithersEvent} SmithersEvent - * @typedef {import("@smithers-orchestrator/observability/agentTrace").AgentCaptureMode} AgentCaptureMode - * @typedef {import("@smithers-orchestrator/observability/agentTrace").AgentFamily} AgentFamily - * @typedef {import("@smithers-orchestrator/observability/agentTrace").AgentSessionTranscriptEvent} AgentSessionTranscriptEvent - * @typedef {import("@smithers-orchestrator/observability/agentTrace").AgentTraceCapabilityProfile} AgentTraceCapabilityProfile - * @typedef {import("@smithers-orchestrator/observability/agentTrace").AgentTraceSummary} AgentTraceSummary - * @typedef {import("@smithers-orchestrator/observability/agentTrace").CanonicalAgentTraceEvent} CanonicalAgentTraceEvent - * @typedef {import("@smithers-orchestrator/observability/agentTrace").CanonicalAgentTraceEventKind} CanonicalAgentTraceEventKind - * @typedef {import("@smithers-orchestrator/observability/agentTrace").TraceCompleteness} TraceCompleteness + * @typedef {import("@smthrs/observability/SmithersEvent").SmithersEvent} SmithersEvent + * @typedef {import("@smthrs/observability/agentTrace").AgentCaptureMode} AgentCaptureMode + * @typedef {import("@smthrs/observability/agentTrace").AgentFamily} AgentFamily + * @typedef {import("@smthrs/observability/agentTrace").AgentSessionTranscriptEvent} AgentSessionTranscriptEvent + * @typedef {import("@smthrs/observability/agentTrace").AgentTraceCapabilityProfile} AgentTraceCapabilityProfile + * @typedef {import("@smthrs/observability/agentTrace").AgentTraceSummary} AgentTraceSummary + * @typedef {import("@smthrs/observability/agentTrace").CanonicalAgentTraceEvent} CanonicalAgentTraceEvent + * @typedef {import("@smthrs/observability/agentTrace").CanonicalAgentTraceEventKind} CanonicalAgentTraceEventKind + * @typedef {import("@smthrs/observability/agentTrace").TraceCompleteness} TraceCompleteness * @typedef {import("./AgentTraceCollectorOptions.ts").AgentTraceCollectorOptions} AgentTraceCollectorOptions * @typedef {import("./events.js").EventBus} EventBus * - * @typedef {import("@smithers-orchestrator/observability/_traceEventNormalizers").NormalizedTraceBatch} NormalizedTraceBatch - * @typedef {import("@smithers-orchestrator/observability/_traceEventNormalizers").NormalizedTraceEvent} NormalizedTraceEvent + * @typedef {import("@smthrs/observability/_traceEventNormalizers").NormalizedTraceBatch} NormalizedTraceBatch + * @typedef {import("@smthrs/observability/_traceEventNormalizers").NormalizedTraceEvent} NormalizedTraceEvent */ /** diff --git a/docs/references/smithers/packages/engine/src/ChildWorkflowDefinition.ts b/docs/references/smithers/packages/engine/src/ChildWorkflowDefinition.ts index f64dd81bb..9bc8d429b 100644 --- a/docs/references/smithers/packages/engine/src/ChildWorkflowDefinition.ts +++ b/docs/references/smithers/packages/engine/src/ChildWorkflowDefinition.ts @@ -1,4 +1,4 @@ -import type { SmithersWorkflow } from "@smithers-orchestrator/components/SmithersWorkflow"; +import type { SmithersWorkflow } from "@smthrs/components/SmithersWorkflow"; export type ChildWorkflowDefinition = | SmithersWorkflow<unknown> diff --git a/docs/references/smithers/packages/engine/src/ScheduleResult.ts b/docs/references/smithers/packages/engine/src/ScheduleResult.ts index 0841ce1da..8ffe70f4a 100644 --- a/docs/references/smithers/packages/engine/src/ScheduleResult.ts +++ b/docs/references/smithers/packages/engine/src/ScheduleResult.ts @@ -1,4 +1,4 @@ -import type { TaskDescriptor } from "@smithers-orchestrator/graph/TaskDescriptor"; +import type { TaskDescriptor } from "@smthrs/graph/TaskDescriptor"; import type { RalphMeta } from "./RalphMeta.ts"; import type { ContinuationRequest } from "./ContinuationRequest.ts"; diff --git a/docs/references/smithers/packages/engine/src/alert-runtime.js b/docs/references/smithers/packages/engine/src/alert-runtime.js index ea7ecaea0..0c809b709 100644 --- a/docs/references/smithers/packages/engine/src/alert-runtime.js +++ b/docs/references/smithers/packages/engine/src/alert-runtime.js @@ -3,7 +3,7 @@ /** @typedef {import("./AlertRuntimeServices.ts").AlertRuntimeServices} AlertRuntimeServices */ // @smithers-type-exports-end -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertPolicy} SmithersAlertPolicy */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertPolicy} SmithersAlertPolicy */ export class AlertRuntime { /** @type {SmithersAlertPolicy} */ policy; diff --git a/docs/references/smithers/packages/engine/src/approvals.js b/docs/references/smithers/packages/engine/src/approvals.js index cd704d0c8..4e82a0f3b 100644 --- a/docs/references/smithers/packages/engine/src/approvals.js +++ b/docs/references/smithers/packages/engine/src/approvals.js @@ -1,8 +1,8 @@ import { Effect, Metric } from "effect"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; -import { approvalWaitDuration, trackEvent, updateAsyncExternalWaitPending, } from "@smithers-orchestrator/observability/metrics"; +import { nowMs } from "@smthrs/scheduler/nowMs"; +import { approvalWaitDuration, trackEvent, updateAsyncExternalWaitPending, } from "@smthrs/observability/metrics"; import { bridgeApprovalResolve } from "./effect/durable-deferred-bridge.js"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** * @param {string | null | undefined} currentStatus * @param {number} pendingApprovals diff --git a/docs/references/smithers/packages/engine/src/cache-policy.js b/docs/references/smithers/packages/engine/src/cache-policy.js index 49b14567e..6f235f84e 100644 --- a/docs/references/smithers/packages/engine/src/cache-policy.js +++ b/docs/references/smithers/packages/engine/src/cache-policy.js @@ -1,7 +1,7 @@ -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; +import { nowMs } from "@smthrs/scheduler/nowMs"; /** - * @typedef {import("@smithers-orchestrator/graph/TaskDescriptor").TaskDescriptor} TaskDescriptor + * @typedef {import("@smthrs/graph/TaskDescriptor").TaskDescriptor} TaskDescriptor */ /** diff --git a/docs/references/smithers/packages/engine/src/child-workflow.js b/docs/references/smithers/packages/engine/src/child-workflow.js index c40ca1d3b..2f475e7cb 100644 --- a/docs/references/smithers/packages/engine/src/child-workflow.js +++ b/docs/references/smithers/packages/engine/src/child-workflow.js @@ -1,15 +1,15 @@ import { Effect } from "effect"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { requireTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { requireTaskRuntime } from "@smthrs/driver/task-runtime"; import { getWorkflowMakeBridgeRuntime } from "./effect/workflow-make-bridge.js"; /** @typedef {import("./ChildWorkflowDefinition.ts").ChildWorkflowDefinition} ChildWorkflowDefinition */ /** @typedef {import("./ChildWorkflowExecuteOptions.ts").ChildWorkflowExecuteOptions} ChildWorkflowExecuteOptions */ -/** @typedef {import("@smithers-orchestrator/driver/RunResult").RunResult} RunResult */ +/** @typedef {import("@smthrs/driver/RunResult").RunResult} RunResult */ /** * @param {unknown} value - * @returns {value is import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow<any>} + * @returns {value is import("@smthrs/components/SmithersWorkflow").SmithersWorkflow<any>} */ function isWorkflowLike(value) { return Boolean(value && @@ -79,8 +79,8 @@ function buildChildWorkflowRunId(parentRunId, stepId, iteration) { } /** * @param {ChildWorkflowDefinition} definition - * @param {import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow<any>} [parentWorkflow] - * @returns {import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow<any>} + * @param {import("@smthrs/components/SmithersWorkflow").SmithersWorkflow<any>} [parentWorkflow] + * @returns {import("@smthrs/components/SmithersWorkflow").SmithersWorkflow<any>} */ function resolveChildWorkflow(definition, parentWorkflow) { const resolved = typeof definition === "function" ? definition() : definition; @@ -109,7 +109,7 @@ function resolveChildWorkflow(definition, parentWorkflow) { throw new SmithersError("INVALID_INPUT", "Child workflow must be a Smithers workflow object or function."); } /** - * @param {import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow<any> | undefined} parentWorkflow + * @param {import("@smthrs/components/SmithersWorkflow").SmithersWorkflow<any> | undefined} parentWorkflow * @param {ChildWorkflowExecuteOptions} options * @returns {Promise<{ runId: string; status: RunResult["status"]; output: unknown; }>} */ diff --git a/docs/references/smithers/packages/engine/src/effect/BuilderStepHandle.ts b/docs/references/smithers/packages/engine/src/effect/BuilderStepHandle.ts index 5ee62d083..c23dd24eb 100644 --- a/docs/references/smithers/packages/engine/src/effect/BuilderStepHandle.ts +++ b/docs/references/smithers/packages/engine/src/effect/BuilderStepHandle.ts @@ -1,7 +1,7 @@ import type { Effect, Schema } from "effect"; import type { SQLiteTable } from "drizzle-orm/sqlite-core"; -import type { CachePolicy } from "@smithers-orchestrator/scheduler/CachePolicy"; -import type { RetryPolicy } from "@smithers-orchestrator/scheduler/RetryPolicy"; +import type { CachePolicy } from "@smthrs/scheduler/CachePolicy"; +import type { RetryPolicy } from "@smthrs/scheduler/RetryPolicy"; type AnySchema = Schema.Schema<unknown, unknown, never>; type AnyEffect = unknown | Promise<unknown> | Effect.Effect<unknown, unknown, unknown>; diff --git a/docs/references/smithers/packages/engine/src/effect/LegacyExecuteTaskFn.ts b/docs/references/smithers/packages/engine/src/effect/LegacyExecuteTaskFn.ts index 8c78825d3..98749c349 100644 --- a/docs/references/smithers/packages/engine/src/effect/LegacyExecuteTaskFn.ts +++ b/docs/references/smithers/packages/engine/src/effect/LegacyExecuteTaskFn.ts @@ -1,7 +1,7 @@ import type { BunSQLiteDatabase } from "drizzle-orm/bun-sqlite"; import type { SQLiteTable } from "drizzle-orm/sqlite-core"; -import type { TaskDescriptor } from "@smithers-orchestrator/graph/TaskDescriptor"; -import type { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import type { TaskDescriptor } from "@smthrs/graph/TaskDescriptor"; +import type { SmithersDb } from "@smthrs/db/adapter"; import type { EventBus } from "../events.js"; import type { HijackState } from "../HijackState.ts"; import type { TaskBridgeToolConfig } from "./TaskBridgeToolConfig.ts"; diff --git a/docs/references/smithers/packages/engine/src/effect/activity-bridge.js b/docs/references/smithers/packages/engine/src/effect/activity-bridge.js index 82adb250d..393f355da 100644 --- a/docs/references/smithers/packages/engine/src/effect/activity-bridge.js +++ b/docs/references/smithers/packages/engine/src/effect/activity-bridge.js @@ -6,8 +6,8 @@ import * as Activity from "@effect/workflow/Activity"; import { Effect, Schema } from "effect"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} _SmithersDb */ -/** @typedef {import("@smithers-orchestrator/graph/TaskDescriptor").TaskDescriptor} _TaskDescriptor */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} _SmithersDb */ +/** @typedef {import("@smthrs/graph/TaskDescriptor").TaskDescriptor} _TaskDescriptor */ const adapterNamespaces = new WeakMap(); /** diff --git a/docs/references/smithers/packages/engine/src/effect/bridge-utils.js b/docs/references/smithers/packages/engine/src/effect/bridge-utils.js index 93da1bd94..c55091fc9 100644 --- a/docs/references/smithers/packages/engine/src/effect/bridge-utils.js +++ b/docs/references/smithers/packages/engine/src/effect/bridge-utils.js @@ -1,4 +1,4 @@ -import { TaskAborted } from "@smithers-orchestrator/errors/TaskAborted"; +import { TaskAborted } from "@smthrs/errors/TaskAborted"; /** * @returns {TaskAborted} */ diff --git a/docs/references/smithers/packages/engine/src/effect/builder.js b/docs/references/smithers/packages/engine/src/effect/builder.js index 940a1a343..6cc4a153d 100644 --- a/docs/references/smithers/packages/engine/src/effect/builder.js +++ b/docs/references/smithers/packages/engine/src/effect/builder.js @@ -4,13 +4,13 @@ import { and, desc, eq } from "drizzle-orm"; import { Context, Duration, Effect, Exit, Layer, Schedule, Schema, } from "effect"; import { integer, primaryKey, sqliteTable, text } from "drizzle-orm/sqlite-core"; import React from "react"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { SmithersDb } from "@smthrs/db/adapter"; import { runWorkflow } from "../engine.js"; -import { ignoreSyncError } from "@smithers-orchestrator/driver/interop"; -import { requireTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; -import { Branch, Loop, Parallel, Sequence, Task, Worktree, Workflow, } from "@smithers-orchestrator/components/components/index"; -import { camelToSnake } from "@smithers-orchestrator/db/utils/camelToSnake"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { ignoreSyncError } from "@smthrs/driver/interop"; +import { requireTaskRuntime } from "@smthrs/driver/task-runtime"; +import { Branch, Loop, Parallel, Sequence, Task, Worktree, Workflow, } from "@smthrs/components/components/index"; +import { camelToSnake } from "@smthrs/db/utils/camelToSnake"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** * @typedef {import("effect").Schema.Schema<unknown, unknown, never>} AnySchema */ @@ -25,7 +25,7 @@ import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; * @typedef {Record<string, unknown> & { input: unknown; executionId: string; stepId: string; attempt: number; signal: AbortSignal; iteration: number; heartbeat: (data?: unknown) => void; lastHeartbeat: unknown | null; }} BuilderStepContext */ /** @typedef {import("./BuilderStepHandle.ts").BuilderStepHandle} BuilderStepHandle */ -/** @typedef {import("@smithers-orchestrator/scheduler/RetryPolicy").RetryPolicy} RetryPolicy */ +/** @typedef {import("@smthrs/scheduler/RetryPolicy").RetryPolicy} RetryPolicy */ /** @typedef {import("./SmithersSqliteOptions.ts").SmithersSqliteOptions} SmithersSqliteOptions */ /** * @typedef {{ @@ -36,7 +36,7 @@ import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; * retryPolicy?: RetryPolicy; * timeout?: unknown; * skipIf?: (ctx: BuilderStepContext) => boolean; - * cache?: import("@smithers-orchestrator/scheduler/CachePolicy").CachePolicy; + * cache?: import("@smthrs/scheduler/CachePolicy").CachePolicy; * }} StepOptions */ /** diff --git a/docs/references/smithers/packages/engine/src/effect/compute-task-bridge.js b/docs/references/smithers/packages/engine/src/effect/compute-task-bridge.js index 916df5e8a..578abf79e 100644 --- a/docs/references/smithers/packages/engine/src/effect/compute-task-bridge.js +++ b/docs/references/smithers/packages/engine/src/effect/compute-task-bridge.js @@ -1,22 +1,22 @@ import { Cause, Duration, Effect, Either, Exit, Metric, Schedule } from "effect"; -import { buildOutputRow, stripAutoColumns, validateOutput } from "@smithers-orchestrator/db/output"; -import { TaskHeartbeatTimeout } from "@smithers-orchestrator/errors/TaskHeartbeatTimeout"; -import { TaskTimeout } from "@smithers-orchestrator/errors/TaskTimeout"; +import { buildOutputRow, stripAutoColumns, validateOutput } from "@smthrs/db/output"; +import { TaskHeartbeatTimeout } from "@smthrs/errors/TaskHeartbeatTimeout"; +import { TaskTimeout } from "@smthrs/errors/TaskTimeout"; import { makeAbortError, wireAbortSignal } from "./bridge-utils.js"; -import { withTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; -import { logDebug, logError, logInfo, logWarning } from "@smithers-orchestrator/observability/logging"; -import { attemptDuration, nodeDuration } from "@smithers-orchestrator/observability/metrics"; -import { errorToJson } from "@smithers-orchestrator/errors/errorToJson"; -import { fromTaggedError } from "@smithers-orchestrator/errors/fromTaggedError"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; -import { getJjPointer } from "@smithers-orchestrator/vcs/jj"; +import { withTaskRuntime } from "@smthrs/driver/task-runtime"; +import { logDebug, logError, logInfo, logWarning } from "@smthrs/observability/logging"; +import { attemptDuration, nodeDuration } from "@smthrs/observability/metrics"; +import { errorToJson } from "@smthrs/errors/errorToJson"; +import { fromTaggedError } from "@smthrs/errors/fromTaggedError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { nowMs } from "@smthrs/scheduler/nowMs"; +import { getJjPointer } from "@smthrs/vcs/jj"; import * as BunContext from "@effect/platform-bun/BunContext"; /** * @typedef {{ rootDir: string; }} ComputeTaskBridgeToolConfig */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} _SmithersDb */ -/** @typedef {import("@smithers-orchestrator/graph/TaskDescriptor").TaskDescriptor} _TaskDescriptor */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} _SmithersDb */ +/** @typedef {import("@smthrs/graph/TaskDescriptor").TaskDescriptor} _TaskDescriptor */ /** @typedef {import("drizzle-orm/bun-sqlite").BunSQLiteDatabase<Record<string, unknown>>} _BunSQLiteDatabase */ const TASK_HEARTBEAT_THROTTLE_MS = 500; diff --git a/docs/references/smithers/packages/engine/src/effect/deferred-state-bridge.js b/docs/references/smithers/packages/engine/src/effect/deferred-state-bridge.js index d10d1e5f0..27818161d 100644 --- a/docs/references/smithers/packages/engine/src/effect/deferred-state-bridge.js +++ b/docs/references/smithers/packages/engine/src/effect/deferred-state-bridge.js @@ -1,15 +1,15 @@ import React from "react"; import { renderToStaticMarkup } from "react-dom/server"; import { Effect, Exit } from "effect"; -import { buildOutputRow, describeSchemaShape, selectOutputRow, stripAutoColumns, validateExistingOutput, validateOutput, } from "@smithers-orchestrator/db/output"; +import { buildOutputRow, describeSchemaShape, selectOutputRow, stripAutoColumns, validateExistingOutput, validateOutput, } from "@smthrs/db/output"; import { awaitApprovalDurableDeferred, awaitWaitForEventDurableDeferred, bridgeApprovalResolve, bridgeWaitForEventResolve, } from "./durable-deferred-bridge.js"; import { buildHumanRequestId, getHumanTaskPrompt as getStoredHumanTaskPrompt, isHumanTaskMeta, } from "../human-requests.js"; import { parseAttemptMetaJson } from "./bridge-utils.js"; -import { updateAsyncExternalWaitPending } from "@smithers-orchestrator/observability/metrics"; -import { markdownComponents } from "@smithers-orchestrator/components/markdownComponents"; -import { errorToJson } from "@smithers-orchestrator/errors/errorToJson"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; +import { updateAsyncExternalWaitPending } from "@smthrs/observability/metrics"; +import { markdownComponents } from "@smthrs/components/markdownComponents"; +import { errorToJson } from "@smthrs/errors/errorToJson"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { nowMs } from "@smthrs/scheduler/nowMs"; /** * @typedef {"pending" | "waiting-approval" | "waiting-event" | "waiting-timer" | "finished" | "failed" | "skipped"} DeferredBridgeState */ @@ -19,9 +19,9 @@ import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; /** * @typedef {(state: "pending" | "failed" | "skipped") => Promise<void>} DeferredBridgeStateEmitter */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} _SmithersDb */ -/** @typedef {import("@smithers-orchestrator/db/adapter/ApprovalRow").ApprovalRow} ApprovalRow */ -/** @typedef {import("@smithers-orchestrator/graph/TaskDescriptor").TaskDescriptor} _TaskDescriptor */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} _SmithersDb */ +/** @typedef {import("@smthrs/db/adapter/ApprovalRow").ApprovalRow} ApprovalRow */ +/** @typedef {import("@smthrs/graph/TaskDescriptor").TaskDescriptor} _TaskDescriptor */ /** @typedef {import("drizzle-orm/bun-sqlite").BunSQLiteDatabase<Record<string, unknown>>} BunSQLiteDatabase */ const timerDurationMultipliers = { diff --git a/docs/references/smithers/packages/engine/src/effect/diff-bundle.js b/docs/references/smithers/packages/engine/src/effect/diff-bundle.js index 25ba03ae6..07ce23ed4 100644 --- a/docs/references/smithers/packages/engine/src/effect/diff-bundle.js +++ b/docs/references/smithers/packages/engine/src/effect/diff-bundle.js @@ -2,7 +2,7 @@ import { applyPatch as applyUnifiedPatch } from "diff"; import { spawn } from "node:child_process"; import { access, mkdir, readFile, rm, writeFile } from "node:fs/promises"; import { dirname, join } from "node:path"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** @typedef {import("./DiffBundle.ts").DiffBundle} DiffBundle */ /** @typedef {import("./FilePatch.ts").FilePatch} FilePatch */ diff --git a/docs/references/smithers/packages/engine/src/effect/durable-deferred-bridge.js b/docs/references/smithers/packages/engine/src/effect/durable-deferred-bridge.js index 725daddf1..f1c0692f6 100644 --- a/docs/references/smithers/packages/engine/src/effect/durable-deferred-bridge.js +++ b/docs/references/smithers/packages/engine/src/effect/durable-deferred-bridge.js @@ -7,11 +7,11 @@ import * as DurableDeferred from "@effect/workflow/DurableDeferred"; import * as Workflow from "@effect/workflow/Workflow"; import { resolve as resolvePath } from "node:path"; import { Effect, Exit, Schema } from "effect"; -import { updateAsyncExternalWaitPending } from "@smithers-orchestrator/observability/metrics"; +import { updateAsyncExternalWaitPending } from "@smthrs/observability/metrics"; /** * @typedef {{ _tag: "Complete"; exit: Exit.Exit<any, any>; } | { _tag: "Pending"; }} BridgeDeferredResult */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} _SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} _SmithersDb */ /** * @typedef {{ signalName: string; correlationId: string | null; payloadJson: string; seq: number; receivedAtMs: number; }} WaitForEventSignalInput */ diff --git a/docs/references/smithers/packages/engine/src/effect/entity-worker.js b/docs/references/smithers/packages/engine/src/effect/entity-worker.js index 99a4e83ed..cbb100657 100644 --- a/docs/references/smithers/packages/engine/src/effect/entity-worker.js +++ b/docs/references/smithers/packages/engine/src/effect/entity-worker.js @@ -12,7 +12,7 @@ import * as Entity from "@effect/cluster/Entity"; import * as Rpc from "@effect/rpc/Rpc"; import { Schema } from "effect"; -/** @typedef {import("@smithers-orchestrator/graph/TaskDescriptor").TaskDescriptor} _TaskDescriptor */ +/** @typedef {import("@smthrs/graph/TaskDescriptor").TaskDescriptor} _TaskDescriptor */ export const WorkerTaskKind = Schema.Literal("agent", "compute", "static"); export const WorkerDispatchKind = Schema.Literal("compute", "static", "legacy"); diff --git a/docs/references/smithers/packages/engine/src/effect/http-runner.js b/docs/references/smithers/packages/engine/src/effect/http-runner.js index ec6b5c68c..c0cbe4953 100644 --- a/docs/references/smithers/packages/engine/src/effect/http-runner.js +++ b/docs/references/smithers/packages/engine/src/effect/http-runner.js @@ -1,2 +1,2 @@ // Preserve the engine subpath while using the canonical sandbox implementation. -export * from "@smithers-orchestrator/sandbox/effect/http-runner"; +export * from "@smthrs/sandbox/effect/http-runner"; diff --git a/docs/references/smithers/packages/engine/src/effect/single-runner.js b/docs/references/smithers/packages/engine/src/effect/single-runner.js index e319b8d30..7121c0543 100644 --- a/docs/references/smithers/packages/engine/src/effect/single-runner.js +++ b/docs/references/smithers/packages/engine/src/effect/single-runner.js @@ -1,8 +1,8 @@ import * as SingleRunner from "@effect/cluster/SingleRunner"; import * as SqliteClient from "@effect/sql-sqlite-bun/SqliteClient"; import { Effect, Layer, Scope } from "effect"; -import { fromTaggedErrorPayload } from "@smithers-orchestrator/errors/fromTaggedErrorPayload"; -import { toTaggedErrorPayload } from "@smithers-orchestrator/errors/toTaggedErrorPayload"; +import { fromTaggedErrorPayload } from "@smthrs/errors/fromTaggedErrorPayload"; +import { toTaggedErrorPayload } from "@smthrs/errors/toTaggedErrorPayload"; import { isUnknownWorkerError, isTaskResultFailure, TaskWorkerEntity, } from "./entity-worker.js"; /** * @typedef {(task: WorkerTask) => void} TaskWorkerDispatchSubscriber diff --git a/docs/references/smithers/packages/engine/src/effect/sql-message-storage.js b/docs/references/smithers/packages/engine/src/effect/sql-message-storage.js index 34b1841ab..fb3cea705 100644 --- a/docs/references/smithers/packages/engine/src/effect/sql-message-storage.js +++ b/docs/references/smithers/packages/engine/src/effect/sql-message-storage.js @@ -1,2 +1,2 @@ // Preserve the engine subpath while using the canonical DB implementation. -export * from "@smithers-orchestrator/db/sql-message-storage"; +export * from "@smthrs/db/sql-message-storage"; diff --git a/docs/references/smithers/packages/engine/src/effect/static-task-bridge.js b/docs/references/smithers/packages/engine/src/effect/static-task-bridge.js index a56c04054..0ec443fc1 100644 --- a/docs/references/smithers/packages/engine/src/effect/static-task-bridge.js +++ b/docs/references/smithers/packages/engine/src/effect/static-task-bridge.js @@ -1,18 +1,18 @@ import { Effect, Metric } from "effect"; -import { buildOutputRow, stripAutoColumns, validateOutput } from "@smithers-orchestrator/db/output"; +import { buildOutputRow, stripAutoColumns, validateOutput } from "@smthrs/db/output"; import { makeAbortError, wireAbortSignal } from "./bridge-utils.js"; -import { logDebug, logError, logInfo } from "@smithers-orchestrator/observability/logging"; -import { attemptDuration, nodeDuration } from "@smithers-orchestrator/observability/metrics"; -import { errorToJson } from "@smithers-orchestrator/errors/errorToJson"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; -import { getJjPointer } from "@smithers-orchestrator/vcs/jj"; +import { logDebug, logError, logInfo } from "@smthrs/observability/logging"; +import { attemptDuration, nodeDuration } from "@smthrs/observability/metrics"; +import { errorToJson } from "@smthrs/errors/errorToJson"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { nowMs } from "@smthrs/scheduler/nowMs"; +import { getJjPointer } from "@smthrs/vcs/jj"; import * as BunContext from "@effect/platform-bun/BunContext"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} _SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} _SmithersDb */ /** * @typedef {{ rootDir: string; }} StaticTaskBridgeToolConfig */ -/** @typedef {import("@smithers-orchestrator/graph/TaskDescriptor").TaskDescriptor} _TaskDescriptor */ +/** @typedef {import("@smthrs/graph/TaskDescriptor").TaskDescriptor} _TaskDescriptor */ /** * @param {unknown} err diff --git a/docs/references/smithers/packages/engine/src/effect/workflow-bridge.js b/docs/references/smithers/packages/engine/src/effect/workflow-bridge.js index adba2d510..4690e7dd2 100644 --- a/docs/references/smithers/packages/engine/src/effect/workflow-bridge.js +++ b/docs/references/smithers/packages/engine/src/effect/workflow-bridge.js @@ -1,5 +1,5 @@ import { Effect } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { makeWorkerTask, } from "./entity-worker.js"; import { executeTaskActivity, makeTaskBridgeKey, RetriableTaskFailure, } from "./activity-bridge.js"; import { parseAttemptMetaJson } from "./bridge-utils.js"; @@ -9,7 +9,7 @@ import { dispatchWorkerTask } from "./single-runner.js"; /** @typedef {import("../HijackState.ts").HijackState} HijackState */ /** @typedef {import("./LegacyExecuteTaskFn.ts").LegacyExecuteTaskFn} LegacyExecuteTaskFn */ /** @typedef {import("./TaskBridgeToolConfig.ts").TaskBridgeToolConfig} TaskBridgeToolConfig */ -/** @typedef {import("@smithers-orchestrator/graph/TaskDescriptor").TaskDescriptor} _TaskDescriptor */ +/** @typedef {import("@smthrs/graph/TaskDescriptor").TaskDescriptor} _TaskDescriptor */ /** @typedef {import("./TaskActivityContext.ts").TaskActivityContext} _TaskActivityContext */ /** @typedef {import("drizzle-orm/bun-sqlite").BunSQLiteDatabase<Record<string, unknown>>} _BunSQLiteDatabase */ /** @typedef {import("drizzle-orm/sqlite-core").SQLiteTable} SQLiteTable */ @@ -21,9 +21,9 @@ export { bridgeApprovalResolve, bridgeSignalResolve, bridgeWaitForEventResolve, export { cancelPendingTimersBridge, isBridgeManagedTimerTask, isBridgeManagedWaitForEventTask, resolveDeferredTaskStateBridge, } from "./deferred-state-bridge.js"; export { createSchedulerWakeQueue, getWorkflowMakeBridgeRuntime, runWorkflowWithMakeBridge, withWorkflowMakeBridgeRuntime, } from "./workflow-make-bridge.js"; export { SqlMessageStorage, ensureSqlMessageStorage, ensureSqlMessageStorageEffect, getSqlMessageStorage, } from "./sql-message-storage.js"; -export { SandboxEntity, SandboxEntityExecutor, makeSandboxEntityId, makeSandboxTransportServiceEffect, } from "@smithers-orchestrator/sandbox/effect/sandbox-entity"; +export { SandboxEntity, SandboxEntityExecutor, makeSandboxEntityId, makeSandboxTransportServiceEffect, } from "@smthrs/sandbox/effect/sandbox-entity"; export { CodeplaneSandboxExecutorLive, DockerSandboxExecutorLive, SandboxHttpRunner, } from "./http-runner.js"; -export { BubblewrapSandboxExecutorLive, SandboxSocketRunner, } from "@smithers-orchestrator/sandbox/effect/socket-runner"; +export { BubblewrapSandboxExecutorLive, SandboxSocketRunner, } from "@smthrs/sandbox/effect/socket-runner"; export { isTaskResultFailure, makeWorkerTask, TaskResult, WorkerDispatchKind, WorkerTask, WorkerTaskKind, TaskWorkerEntity, } from "./entity-worker.js"; export { dispatchWorkerTask, subscribeTaskWorkerDispatches, } from "./single-runner.js"; /** @@ -257,7 +257,7 @@ export const executeTaskBridge = (adapter, db, runId, desc, descriptorMap, input * @param {AbortController} [runAbortController] * @param {HijackState} [hijackState] * @param {LegacyExecuteTaskFn} [legacyExecuteTaskFn] - * @returns {Effect.Effect<void, import("@smithers-orchestrator/errors/SmithersError").SmithersError, never>} + * @returns {Effect.Effect<void, import("@smthrs/errors/SmithersError").SmithersError, never>} */ export const executeTaskBridgeEffect = (adapter, db, runId, desc, descriptorMap, inputTable, eventBus, toolConfig, workflowName, cacheEnabled, signal, disabledAgents, runAbortController, hijackState, legacyExecuteTaskFn) => Effect.tryPromise({ try: () => executeTaskBridge(adapter, db, runId, desc, descriptorMap, inputTable, eventBus, toolConfig, workflowName, cacheEnabled, signal, disabledAgents, runAbortController, hijackState, legacyExecuteTaskFn), diff --git a/docs/references/smithers/packages/engine/src/effect/workflow-make-bridge.js b/docs/references/smithers/packages/engine/src/effect/workflow-make-bridge.js index 26bd36ef5..22e6e6045 100644 --- a/docs/references/smithers/packages/engine/src/effect/workflow-make-bridge.js +++ b/docs/references/smithers/packages/engine/src/effect/workflow-make-bridge.js @@ -2,7 +2,7 @@ import * as Workflow from "@effect/workflow/Workflow"; import * as WorkflowEngine from "@effect/workflow/WorkflowEngine"; import { Effect, Exit, Layer, Schema, Scope } from "effect"; import { AsyncLocalStorage } from "node:async_hooks"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { SmithersDb } from "@smthrs/db/adapter"; /** * @typedef {RunResult | (RunResult & { status: "continued"; nextRunId: string; })} RunBodyResult */ @@ -10,12 +10,12 @@ import { SmithersDb } from "@smithers-orchestrator/db/adapter"; /** * @typedef {<Schema>(workflow: SmithersWorkflow<Schema>, opts: RunOptions) => Promise<RunBodyResult>} RunBodyExecutor */ -/** @typedef {import("@smithers-orchestrator/driver/RunOptions").RunOptions} RunOptions */ -/** @typedef {import("@smithers-orchestrator/driver/RunResult").RunResult} RunResult */ +/** @typedef {import("@smthrs/driver/RunOptions").RunOptions} RunOptions */ +/** @typedef {import("@smthrs/driver/RunResult").RunResult} RunResult */ /** * @typedef {{ notify(): void; wait(): Promise<void>; }} SchedulerWakeQueue */ -/** @typedef {import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow} SmithersWorkflow */ +/** @typedef {import("@smthrs/components/SmithersWorkflow").SmithersWorkflow} SmithersWorkflow */ /** @typedef {import("effect").Context.Context<WorkflowEngine.WorkflowEngine>} WorkflowEngineContext */ /** * @typedef {{ readonly engineContext: WorkflowEngineContext; readonly scope: Scope.CloseableScope; readonly parentInstance: WorkflowEngine.WorkflowInstance["Type"]; readonly executeBody: RunBodyExecutor; executeChildWorkflow: <Schema>(workflow: SmithersWorkflow<Schema>, opts: RunOptions & { runId: string; }) => Promise<RunResult>; }} WorkflowMakeBridgeRuntime diff --git a/docs/references/smithers/packages/engine/src/engine.js b/docs/references/smithers/packages/engine/src/engine.js index 1bd34014a..6a23b1586 100644 --- a/docs/references/smithers/packages/engine/src/engine.js +++ b/docs/references/smithers/packages/engine/src/engine.js @@ -1,71 +1,71 @@ -import { makeWorkflowSession, } from "@smithers-orchestrator/scheduler"; -import { ReactWorkflowDriver } from "@smithers-orchestrator/react-reconciler/driver"; -import { SmithersRenderer } from "@smithers-orchestrator/react-reconciler/dom/renderer"; -import { SmithersCtx } from "@smithers-orchestrator/driver/SmithersCtx"; -import { loadInput, loadOutputs, loadRunOutputRowsEffect } from "@smithers-orchestrator/db/snapshot"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { selectOutputRow, validateOutput, validateExistingOutput, describeSchemaShape, buildOutputRow, stripAutoColumns, } from "@smithers-orchestrator/db/output"; -import { validateInput } from "@smithers-orchestrator/db/input"; -import { schemaSignature } from "@smithers-orchestrator/db/schema-signature"; -import { withSqliteWriteRetry } from "@smithers-orchestrator/db/write-retry"; -import { canonicalizeXml } from "@smithers-orchestrator/graph/utils/xml"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; -import { errorToJson } from "@smithers-orchestrator/errors/errorToJson"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { assertJsonPayloadWithinBounds, assertOptionalStringMaxLength, assertPositiveFiniteInteger, } from "@smithers-orchestrator/db/input-bounds"; -import { retryPolicyToSchedule } from "@smithers-orchestrator/scheduler/retryPolicyToSchedule"; -import { retryScheduleDelayMs } from "@smithers-orchestrator/scheduler/retryScheduleDelayMs"; +import { makeWorkflowSession, } from "@smthrs/scheduler"; +import { ReactWorkflowDriver } from "@smthrs/react-reconciler/driver"; +import { SmithersRenderer } from "@smthrs/react-reconciler/dom/renderer"; +import { SmithersCtx } from "@smthrs/driver/SmithersCtx"; +import { loadInput, loadOutputs, loadRunOutputRowsEffect } from "@smthrs/db/snapshot"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { selectOutputRow, validateOutput, validateExistingOutput, describeSchemaShape, buildOutputRow, stripAutoColumns, } from "@smthrs/db/output"; +import { validateInput } from "@smthrs/db/input"; +import { schemaSignature } from "@smthrs/db/schema-signature"; +import { withSqliteWriteRetry } from "@smthrs/db/write-retry"; +import { canonicalizeXml } from "@smthrs/graph/utils/xml"; +import { nowMs } from "@smthrs/scheduler/nowMs"; +import { errorToJson } from "@smthrs/errors/errorToJson"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { assertJsonPayloadWithinBounds, assertOptionalStringMaxLength, assertPositiveFiniteInteger, } from "@smthrs/db/input-bounds"; +import { retryPolicyToSchedule } from "@smthrs/scheduler/retryPolicyToSchedule"; +import { retryScheduleDelayMs } from "@smthrs/scheduler/retryScheduleDelayMs"; import { buildPlanTree, scheduleTasks, buildStateKey, } from "./scheduler.js"; import { resolveForkSessionMessages } from "./resolveForkSessionMessages.js"; import { getDefinedToolMetadata } from "./getDefinedToolMetadata.js"; -import { captureSnapshotEffect, loadLatestSnapshot, parseSnapshot, } from "@smithers-orchestrator/time-travel/snapshot"; +import { captureSnapshotEffect, loadLatestSnapshot, parseSnapshot, } from "@smthrs/time-travel/snapshot"; import { EventBus } from "./events.js"; import { AgentTraceCollector } from "./AgentTraceCollector.js"; -import { getJjPointer, runJj, workspaceAdd } from "@smithers-orchestrator/vcs/jj"; -import { findVcsRoot } from "@smithers-orchestrator/vcs/find-root"; +import { getJjPointer, runJj, workspaceAdd } from "@smthrs/vcs/jj"; +import { findVcsRoot } from "@smthrs/vcs/find-root"; import { startDurability } from "./startDurability.js"; import { restoreWorkspaceToLatestCheckpoint } from "./restoreWorkspace.js"; -import { runWithToolContext } from "@smithers-orchestrator/tool-context"; -import { vcsToolingStatus } from "@smithers-orchestrator/vcs/vcsToolingStatus"; +import { runWithToolContext } from "@smthrs/tool-context"; +import { vcsToolingStatus } from "@smthrs/vcs/vcsToolingStatus"; import * as BunContext from "@effect/platform-bun/BunContext"; import { eq, getTableName } from "drizzle-orm"; import { getTableColumns } from "drizzle-orm/utils"; import { Cause, Chunk, Duration, Effect, Exit, Fiber, Metric, Queue, Schedule } from "effect"; -import { attemptDuration, cacheHits, cacheMisses, nodeDuration, promptSizeBytes, responseSizeBytes, runDuration, runsResumedTotal, schedulerConcurrencyUtilization, schedulerQueueDepth, schedulerWaitDuration, trackEvent, } from "@smithers-orchestrator/observability/metrics"; -import { runScorersAsync } from "@smithers-orchestrator/scorers/run-scorers"; +import { attemptDuration, cacheHits, cacheMisses, nodeDuration, promptSizeBytes, responseSizeBytes, runDuration, runsResumedTotal, schedulerConcurrencyUtilization, schedulerQueueDepth, schedulerWaitDuration, trackEvent, } from "@smthrs/observability/metrics"; +import { runScorersAsync } from "@smthrs/scorers/run-scorers"; import { dirname, resolve } from "node:path"; import { existsSync } from "node:fs"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; -import { logDebug, logError, logInfo, logWarning } from "@smithers-orchestrator/observability/logging"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; +import { logDebug, logError, logInfo, logWarning } from "@smthrs/observability/logging"; import { isPidAlive, parseRuntimeOwnerPid } from "./runtime-owner.js"; import { HotWorkflowController } from "./hot/index.js"; import { spawn as nodeSpawn } from "node:child_process"; import { randomUUID } from "node:crypto"; import { platform } from "node:os"; -import { annotateSmithersTrace, smithersSpanNames, withSmithersSpan, } from "@smithers-orchestrator/observability"; -import { withTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; -import { hashCapabilityRegistry } from "@smithers-orchestrator/agents/capability-registry"; +import { annotateSmithersTrace, smithersSpanNames, withSmithersSpan, } from "@smthrs/observability"; +import { withTaskRuntime } from "@smthrs/driver/task-runtime"; +import { hashCapabilityRegistry } from "@smthrs/agents/capability-registry"; import { cancelPendingTimersBridge, executeTaskBridgeEffect, isBridgeManagedTimerTask as isTimerTask, resolveDeferredTaskStateBridge, } from "./effect/workflow-bridge.js"; import { AlertRuntime } from "./alert-runtime.js"; import { attachSandboxComputeFns, attachSubflowComputeFns } from "./task-compute-fns.js"; import { buildCacheScopeIdentity, isFreshCacheRow, normalizeCacheScope } from "./cache-policy.js"; import { runWorkflowWithMakeBridge } from "./effect/workflow-make-bridge.js"; import { createWorkflowVersioningRuntime, getWorkflowPatchDecisions, withWorkflowVersioningRuntime, } from "./effect/versioning.js"; -import { runWithCorrelationContext, updateCurrentCorrelationContext, withCorrelationContext, } from "@smithers-orchestrator/observability/correlation"; +import { runWithCorrelationContext, updateCurrentCorrelationContext, withCorrelationContext, } from "@smthrs/observability/correlation"; import { extractWorkflowImportSpecifiers, getWorkflowImportScanLoader, readWorkflowEntryHash, readWorkflowGraphHash, resolveWorkflowImport, sha256Hex, } from "./workflow-hash.js"; import { applyOptimizationArtifactToTasks } from "./optimization-artifact.js"; import { extractBalancedJson, extractLastBalancedJson } from "./json-extraction.js"; -/** @typedef {import("@smithers-orchestrator/graph/GraphSnapshot").GraphSnapshot} GraphSnapshot */ +/** @typedef {import("@smthrs/graph/GraphSnapshot").GraphSnapshot} GraphSnapshot */ /** @typedef {import("./HijackState.ts").HijackState} HijackState */ -/** @typedef {import("@smithers-orchestrator/driver/RunOptions").RunOptions} RunOptions */ -/** @typedef {import("@smithers-orchestrator/driver/RunResult").RunResult} RunResult */ -/** @typedef {import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow} SmithersWorkflow */ -/** @typedef {import("@smithers-orchestrator/graph/TaskDescriptor").TaskDescriptor} TaskDescriptor */ -/** @typedef {import("@smithers-orchestrator/scheduler").TaskStateMap} TaskStateMap */ -/** @typedef {import("@smithers-orchestrator/db/adapter/ApprovalRow").ApprovalRow} ApprovalRow */ -/** @typedef {import("@smithers-orchestrator/db/adapter/RunRow").RunRow} RunRow */ -/** @typedef {import("@smithers-orchestrator/graph/XmlNode").XmlNode} XmlNode */ +/** @typedef {import("@smthrs/driver/RunOptions").RunOptions} RunOptions */ +/** @typedef {import("@smthrs/driver/RunResult").RunResult} RunResult */ +/** @typedef {import("@smthrs/components/SmithersWorkflow").SmithersWorkflow} SmithersWorkflow */ +/** @typedef {import("@smthrs/graph/TaskDescriptor").TaskDescriptor} TaskDescriptor */ +/** @typedef {import("@smthrs/scheduler").TaskStateMap} TaskStateMap */ +/** @typedef {import("@smthrs/db/adapter/ApprovalRow").ApprovalRow} ApprovalRow */ +/** @typedef {import("@smthrs/db/adapter/RunRow").RunRow} RunRow */ +/** @typedef {import("@smthrs/graph/XmlNode").XmlNode} XmlNode */ /** @typedef {import("drizzle-orm/bun-sqlite").BunSQLiteDatabase<Record<string, unknown>>} BunSQLiteDatabase */ /** @typedef {import("drizzle-orm/sqlite-core").SQLiteTable} SQLiteTable */ @@ -596,7 +596,7 @@ async function ensureWorktree(rootDir, worktreePath, branch, baseBranch) { // Distinguish "no VCS tooling installed" from "tooling present, but not // inside a repo" so the error tells the user what to actually fix. if (!vcsToolingStatus().ok) { - throw new SmithersError("VCS_NOT_FOUND", `Cannot create worktree: no jj or git found. Smithers bundles jj via the optional @smithers-orchestrator/jj-<platform> package; if it could not install for your platform, install jj (https://github.com/jj-vcs/jj) or git, or set SMITHERS_JJ_PATH.`, { rootDir }); + throw new SmithersError("VCS_NOT_FOUND", `Cannot create worktree: no jj or git found. Smithers bundles jj via the optional @smthrs/jj-<platform> package; if it could not install for your platform, install jj (https://github.com/jj-vcs/jj) or git, or set SMITHERS_JJ_PATH.`, { rootDir }); } throw new SmithersError("VCS_NOT_FOUND", `Cannot create worktree: no git or jj repository found from ${rootDir}. Run Smithers inside a git or jj repository (or initialize one first).`, { rootDir }); } diff --git a/docs/references/smithers/packages/engine/src/events.js b/docs/references/smithers/packages/engine/src/events.js index 3aad14a3d..6b129c88b 100644 --- a/docs/references/smithers/packages/engine/src/events.js +++ b/docs/references/smithers/packages/engine/src/events.js @@ -2,15 +2,15 @@ import { EventEmitter } from "node:events"; import { appendFile, mkdir } from "node:fs/promises"; import { join } from "node:path"; import { Effect } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; -import { trackEvent } from "@smithers-orchestrator/observability/metrics"; -import { correlationContextToLogAnnotations, getCurrentCorrelationContext, mergeCorrelationContext, withCurrentCorrelationContext, } from "@smithers-orchestrator/observability/correlation"; -/** @typedef {import("@smithers-orchestrator/observability/correlation").CorrelationContext} CorrelationContext */ +import { toSmithersError } from "@smthrs/errors/toSmithersError"; +import { trackEvent } from "@smthrs/observability/metrics"; +import { correlationContextToLogAnnotations, getCurrentCorrelationContext, mergeCorrelationContext, withCurrentCorrelationContext, } from "@smthrs/observability/correlation"; +/** @typedef {import("@smthrs/observability/correlation").CorrelationContext} CorrelationContext */ /** * @typedef {SmithersEvent & { correlation?: CorrelationContext; }} CorrelatedSmithersEvent */ -/** @typedef {import("@smithers-orchestrator/observability/SmithersEvent").SmithersEvent} SmithersEvent */ +/** @typedef {import("@smthrs/observability/SmithersEvent").SmithersEvent} SmithersEvent */ /** @typedef {import("drizzle-orm/bun-sqlite").BunSQLiteDatabase<Record<string, unknown>>} _BunSQLiteDatabase */ export class EventBus extends EventEmitter { diff --git a/docs/references/smithers/packages/engine/src/hot/HotReloadEvent.ts b/docs/references/smithers/packages/engine/src/hot/HotReloadEvent.ts index 36f690c6f..dda939398 100644 --- a/docs/references/smithers/packages/engine/src/hot/HotReloadEvent.ts +++ b/docs/references/smithers/packages/engine/src/hot/HotReloadEvent.ts @@ -1,4 +1,4 @@ -import type { SmithersWorkflow } from "@smithers-orchestrator/components/SmithersWorkflow"; +import type { SmithersWorkflow } from "@smthrs/components/SmithersWorkflow"; export type HotReloadEvent = | { diff --git a/docs/references/smithers/packages/engine/src/hot/HotWorkflowController.js b/docs/references/smithers/packages/engine/src/hot/HotWorkflowController.js index 82a839f8a..a59de46f6 100644 --- a/docs/references/smithers/packages/engine/src/hot/HotWorkflowController.js +++ b/docs/references/smithers/packages/engine/src/hot/HotWorkflowController.js @@ -9,11 +9,11 @@ import { Effect } from "effect"; import { WatchTree } from "./watch.js"; import { buildOverlayEffect, cleanupGenerationsEffect, resolveOverlayEntry, } from "./overlay.js"; import { Metric } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; -import { logInfo, logWarning } from "@smithers-orchestrator/observability/logging"; -import { hotReloads, hotReloadFailures, hotReloadDuration } from "@smithers-orchestrator/observability/metrics"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -/** @typedef {import("@smithers-orchestrator/driver/RunOptions").HotReloadOptions} HotReloadOptions */ +import { toSmithersError } from "@smthrs/errors/toSmithersError"; +import { logInfo, logWarning } from "@smthrs/observability/logging"; +import { hotReloads, hotReloadFailures, hotReloadDuration } from "@smthrs/observability/metrics"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +/** @typedef {import("@smthrs/driver/RunOptions").HotReloadOptions} HotReloadOptions */ const DEFAULT_MAX_GENERATIONS = 3; const DEFAULT_DEBOUNCE_MS = 100; diff --git a/docs/references/smithers/packages/engine/src/hot/overlay.js b/docs/references/smithers/packages/engine/src/hot/overlay.js index 2fb5f7417..88ab8a844 100644 --- a/docs/references/smithers/packages/engine/src/hot/overlay.js +++ b/docs/references/smithers/packages/engine/src/hot/overlay.js @@ -2,9 +2,9 @@ import { readdir, mkdir, link, copyFile, rm } from "node:fs/promises"; import { resolve, relative, join, dirname } from "node:path"; import { existsSync } from "node:fs"; import { Effect } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; /** @typedef {import("./OverlayOptions.ts").OverlayOptions} OverlayOptions */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ const DEFAULT_EXCLUDE = [ "node_modules", diff --git a/docs/references/smithers/packages/engine/src/hot/watch.js b/docs/references/smithers/packages/engine/src/hot/watch.js index 690800e2b..81b6a9384 100644 --- a/docs/references/smithers/packages/engine/src/hot/watch.js +++ b/docs/references/smithers/packages/engine/src/hot/watch.js @@ -2,8 +2,8 @@ import { watch } from "node:fs"; import { readdir, stat } from "node:fs/promises"; import { basename, resolve } from "node:path"; import { Effect } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; -import { logDebug, logInfo } from "@smithers-orchestrator/observability/logging"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; +import { logDebug, logInfo } from "@smthrs/observability/logging"; /** @typedef {import("./WatchTreeOptions.ts").WatchTreeOptions} WatchTreeOptions */ const DEFAULT_IGNORE = [ diff --git a/docs/references/smithers/packages/engine/src/index.d.ts b/docs/references/smithers/packages/engine/src/index.d.ts index 7d604f353..ad5306d2b 100644 --- a/docs/references/smithers/packages/engine/src/index.d.ts +++ b/docs/references/smithers/packages/engine/src/index.d.ts @@ -1,33 +1,33 @@ -import * as _smithers_components_SmithersWorkflow from '@smithers-orchestrator/components/SmithersWorkflow'; -import { SmithersWorkflow as SmithersWorkflow$2 } from '@smithers-orchestrator/components/SmithersWorkflow'; -import * as _smithers_scheduler_SmithersWorkflowOptions from '@smithers-orchestrator/scheduler/SmithersWorkflowOptions'; -import * as _smithers_db_adapter from '@smithers-orchestrator/db/adapter'; -import { SmithersDb } from '@smithers-orchestrator/db/adapter'; +import * as _smithers_components_SmithersWorkflow from '@smthrs/components/SmithersWorkflow'; +import { SmithersWorkflow as SmithersWorkflow$2 } from '@smthrs/components/SmithersWorkflow'; +import * as _smithers_scheduler_SmithersWorkflowOptions from '@smthrs/scheduler/SmithersWorkflowOptions'; +import * as _smithers_db_adapter from '@smthrs/db/adapter'; +import { SmithersDb } from '@smthrs/db/adapter'; import * as effect from 'effect'; import { Schema, Effect, Layer, ManagedRuntime, Exit, Scope } from 'effect'; -import * as _smithers_errors_SmithersError from '@smithers-orchestrator/errors/SmithersError'; -import { SmithersError } from '@smithers-orchestrator/errors/SmithersError'; -import * as _smithers_driver_RunResult from '@smithers-orchestrator/driver/RunResult'; -import * as _smithers_observability_SmithersEvent from '@smithers-orchestrator/observability/SmithersEvent'; -import * as _smithers_observability_correlation from '@smithers-orchestrator/observability/correlation'; +import * as _smithers_errors_SmithersError from '@smthrs/errors/SmithersError'; +import { SmithersError } from '@smthrs/errors/SmithersError'; +import * as _smithers_driver_RunResult from '@smthrs/driver/RunResult'; +import * as _smithers_observability_SmithersEvent from '@smthrs/observability/SmithersEvent'; +import * as _smithers_observability_correlation from '@smthrs/observability/correlation'; import { EventEmitter } from 'node:events'; -import * as _smithers_graph_XmlNode from '@smithers-orchestrator/graph/XmlNode'; -import * as _smithers_graph_TaskDescriptor from '@smithers-orchestrator/graph/TaskDescriptor'; -import { TaskDescriptor } from '@smithers-orchestrator/graph/TaskDescriptor'; -import * as _smithers_scheduler from '@smithers-orchestrator/scheduler'; -export { Scheduler, SchedulerLive, buildStateKey, cloneTaskStateMap, isTerminalState, parseStateKey } from '@smithers-orchestrator/scheduler'; +import * as _smithers_graph_XmlNode from '@smthrs/graph/XmlNode'; +import * as _smithers_graph_TaskDescriptor from '@smthrs/graph/TaskDescriptor'; +import { TaskDescriptor } from '@smthrs/graph/TaskDescriptor'; +import * as _smithers_scheduler from '@smthrs/scheduler'; +export { Scheduler, SchedulerLive, buildStateKey, cloneTaskStateMap, isTerminalState, parseStateKey } from '@smthrs/scheduler'; import * as drizzle_orm_sqlite_core from 'drizzle-orm/sqlite-core'; import { SQLiteTable as SQLiteTable$1 } from 'drizzle-orm/sqlite-core'; import * as drizzle_orm_bun_sqlite from 'drizzle-orm/bun-sqlite'; import { BunSQLiteDatabase as BunSQLiteDatabase$3 } from 'drizzle-orm/bun-sqlite'; -import { TaskAborted } from '@smithers-orchestrator/errors/TaskAborted'; -import * as _smithers_scheduler_RetryPolicy from '@smithers-orchestrator/scheduler/RetryPolicy'; -import { RetryPolicy as RetryPolicy$1 } from '@smithers-orchestrator/scheduler/RetryPolicy'; -import { CachePolicy } from '@smithers-orchestrator/scheduler/CachePolicy'; -import * as _smithers_driver_RunOptions from '@smithers-orchestrator/driver/RunOptions'; -import * as _smithers_graph_GraphSnapshot from '@smithers-orchestrator/graph/GraphSnapshot'; -import { SmithersCtx } from '@smithers-orchestrator/driver/SmithersCtx'; -import * as _smithers_errors_toSmithersError from '@smithers-orchestrator/errors/toSmithersError'; +import { TaskAborted } from '@smthrs/errors/TaskAborted'; +import * as _smithers_scheduler_RetryPolicy from '@smthrs/scheduler/RetryPolicy'; +import { RetryPolicy as RetryPolicy$1 } from '@smthrs/scheduler/RetryPolicy'; +import { CachePolicy } from '@smthrs/scheduler/CachePolicy'; +import * as _smithers_driver_RunOptions from '@smthrs/driver/RunOptions'; +import * as _smithers_graph_GraphSnapshot from '@smthrs/graph/GraphSnapshot'; +import { SmithersCtx } from '@smthrs/driver/SmithersCtx'; +import * as _smithers_errors_toSmithersError from '@smthrs/errors/toSmithersError'; import { Database } from 'bun:sqlite'; type ChildWorkflowDefinition$1 = SmithersWorkflow$2<unknown> | (() => SmithersWorkflow$2<unknown> | unknown); @@ -52,7 +52,7 @@ type AlertRuntimeServices$1 = { /** @typedef {import("./AlertHumanRequestOptions.ts").AlertHumanRequestOptions} AlertHumanRequestOptions */ /** @typedef {import("./AlertRuntimeServices.ts").AlertRuntimeServices} AlertRuntimeServices */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertPolicy} SmithersAlertPolicy */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertPolicy} SmithersAlertPolicy */ declare class AlertRuntime { /** * @param {SmithersAlertPolicy} policy @@ -108,7 +108,7 @@ type ChildWorkflowExecuteOptions$1 = { }; /** - * @param {import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow<any> | undefined} parentWorkflow + * @param {import("@smthrs/components/SmithersWorkflow").SmithersWorkflow<any> | undefined} parentWorkflow * @param {ChildWorkflowExecuteOptions} options * @returns {Promise<{ runId: string; status: RunResult["status"]; output: unknown; }>} */ @@ -120,11 +120,11 @@ declare function executeChildWorkflow(parentWorkflow: _smithers_components_Smith type ChildWorkflowExecuteOptions = ChildWorkflowExecuteOptions$1; type RunResult$2 = _smithers_driver_RunResult.RunResult; -/** @typedef {import("@smithers-orchestrator/observability/correlation").CorrelationContext} CorrelationContext */ +/** @typedef {import("@smthrs/observability/correlation").CorrelationContext} CorrelationContext */ /** * @typedef {SmithersEvent & { correlation?: CorrelationContext; }} CorrelatedSmithersEvent */ -/** @typedef {import("@smithers-orchestrator/observability/SmithersEvent").SmithersEvent} SmithersEvent */ +/** @typedef {import("@smthrs/observability/SmithersEvent").SmithersEvent} SmithersEvent */ /** @typedef {import("drizzle-orm/bun-sqlite").BunSQLiteDatabase<Record<string, unknown>>} _BunSQLiteDatabase */ declare class EventBus extends EventEmitter<any> { /** @@ -987,7 +987,7 @@ declare function makeWorkerTask(bridgeKey: string, workflowName: string, runId: */ declare function isTaskResultFailure(result: TaskResult): result is TaskFailure; type WorkerTaskKind = WorkerTaskKind$1; -/** @typedef {import("@smithers-orchestrator/graph/TaskDescriptor").TaskDescriptor} _TaskDescriptor */ +/** @typedef {import("@smthrs/graph/TaskDescriptor").TaskDescriptor} _TaskDescriptor */ declare const WorkerTaskKind: Schema.Literal<["agent", "compute", "static"]>; type WorkerDispatchKind = WorkerDispatchKind$1; declare const WorkerDispatchKind: Schema.Literal<["compute", "static", "legacy"]>; diff --git a/docs/references/smithers/packages/engine/src/optimization-artifact.js b/docs/references/smithers/packages/engine/src/optimization-artifact.js index 978493fc9..54af29a52 100644 --- a/docs/references/smithers/packages/engine/src/optimization-artifact.js +++ b/docs/references/smithers/packages/engine/src/optimization-artifact.js @@ -1,6 +1,6 @@ import { existsSync, readFileSync, statSync } from "node:fs"; import { resolve } from "node:path"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; const OPTIMIZATION_ARTIFACT_ENV = "SMITHERS_OPTIMIZATION_ARTIFACT"; @@ -57,7 +57,7 @@ function promptPatchesFromArtifact(artifact) { } /** - * @param {import("@smithers-orchestrator/graph/TaskDescriptor").TaskDescriptor[]} tasks + * @param {import("@smthrs/graph/TaskDescriptor").TaskDescriptor[]} tasks * @param {unknown} [artifact] */ export function applyOptimizationArtifactToTasks(tasks, artifact = loadOptimizationArtifact()) { diff --git a/docs/references/smithers/packages/engine/src/resolveForkSessionMessages.js b/docs/references/smithers/packages/engine/src/resolveForkSessionMessages.js index c23a5105f..6b193a822 100644 --- a/docs/references/smithers/packages/engine/src/resolveForkSessionMessages.js +++ b/docs/references/smithers/packages/engine/src/resolveForkSessionMessages.js @@ -1,6 +1,6 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; -/** @typedef {import("@smithers-orchestrator/db/adapter/AttemptRow").AttemptRow} AttemptRow */ +/** @typedef {import("@smthrs/db/adapter/AttemptRow").AttemptRow} AttemptRow */ /** * Strip the loop-scope suffix (`@@ralph=0,...`) from a node id to recover the diff --git a/docs/references/smithers/packages/engine/src/restoreWorkspace.js b/docs/references/smithers/packages/engine/src/restoreWorkspace.js index 3bed9af02..8b23091cc 100644 --- a/docs/references/smithers/packages/engine/src/restoreWorkspace.js +++ b/docs/references/smithers/packages/engine/src/restoreWorkspace.js @@ -8,7 +8,7 @@ import { Effect } from "effect"; import * as BunContext from "@effect/platform-bun/BunContext"; -import { revertToJjPointer } from "@smithers-orchestrator/vcs/jj"; +import { revertToJjPointer } from "@smthrs/vcs/jj"; /** * @param {string} commitId diff --git a/docs/references/smithers/packages/engine/src/scheduler.js b/docs/references/smithers/packages/engine/src/scheduler.js index bcc91126c..f7b226cde 100644 --- a/docs/references/smithers/packages/engine/src/scheduler.js +++ b/docs/references/smithers/packages/engine/src/scheduler.js @@ -4,21 +4,21 @@ /** @typedef {import("./RalphMeta.ts").RalphMeta} RalphMeta */ /** @typedef {import("./RalphState.ts").RalphState} RalphState */ /** @typedef {import("./RalphStateMap.ts").RalphStateMap} RalphStateMap */ -/** @typedef {import("@smithers-orchestrator/scheduler").ReadonlyTaskStateMap} ReadonlyTaskStateMap */ -/** @typedef {import("@smithers-orchestrator/scheduler").RetryWaitMap} RetryWaitMap */ +/** @typedef {import("@smthrs/scheduler").ReadonlyTaskStateMap} ReadonlyTaskStateMap */ +/** @typedef {import("@smthrs/scheduler").RetryWaitMap} RetryWaitMap */ /** @typedef {import("./ScheduleResult.ts").ScheduleResult} ScheduleResult */ -/** @typedef {import("@smithers-orchestrator/scheduler").ScheduleSnapshot} ScheduleSnapshot */ -/** @typedef {import("@smithers-orchestrator/scheduler").TaskRecord} TaskRecord */ -/** @typedef {import("@smithers-orchestrator/scheduler").TaskState} TaskState */ -/** @typedef {import("@smithers-orchestrator/scheduler").TaskStateMap} TaskStateMap */ -/** @typedef {import("@smithers-orchestrator/graph/TaskDescriptor").TaskDescriptor} _TaskDescriptor */ -/** @typedef {import("@smithers-orchestrator/graph/XmlNode").XmlNode} XmlNode */ +/** @typedef {import("@smthrs/scheduler").ScheduleSnapshot} ScheduleSnapshot */ +/** @typedef {import("@smthrs/scheduler").TaskRecord} TaskRecord */ +/** @typedef {import("@smthrs/scheduler").TaskState} TaskState */ +/** @typedef {import("@smthrs/scheduler").TaskStateMap} TaskStateMap */ +/** @typedef {import("@smthrs/graph/TaskDescriptor").TaskDescriptor} _TaskDescriptor */ +/** @typedef {import("@smthrs/graph/XmlNode").XmlNode} XmlNode */ // @smithers-type-exports-end -import { buildPlanTree as coreBuildPlanTree, scheduleTasks as coreScheduleTasks, } from "@smithers-orchestrator/scheduler"; -export { buildStateKey } from "@smithers-orchestrator/scheduler"; -export { Scheduler, SchedulerLive } from "@smithers-orchestrator/scheduler"; -export { cloneTaskStateMap, isTerminalState, parseStateKey, } from "@smithers-orchestrator/scheduler"; +import { buildPlanTree as coreBuildPlanTree, scheduleTasks as coreScheduleTasks, } from "@smthrs/scheduler"; +export { buildStateKey } from "@smthrs/scheduler"; +export { Scheduler, SchedulerLive } from "@smthrs/scheduler"; +export { cloneTaskStateMap, isTerminalState, parseStateKey, } from "@smthrs/scheduler"; /** * @type {(xml: XmlNode | null, ralphState?: RalphStateMap) => { plan: PlanNode | null; ralphs: RalphMeta[] }} diff --git a/docs/references/smithers/packages/engine/src/signals.js b/docs/references/smithers/packages/engine/src/signals.js index e5b50eb27..cb72693fa 100644 --- a/docs/references/smithers/packages/engine/src/signals.js +++ b/docs/references/smithers/packages/engine/src/signals.js @@ -1,7 +1,7 @@ import { Effect } from "effect"; import { bridgeSignalResolve } from "./effect/durable-deferred-bridge.js"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { nowMs } from "@smthrs/scheduler/nowMs"; /** @typedef {import("./SignalRunOptions.ts").SignalRunOptions} SignalRunOptions */ /** diff --git a/docs/references/smithers/packages/engine/src/startDurability.js b/docs/references/smithers/packages/engine/src/startDurability.js index 5718e37bc..47fa7e1bb 100644 --- a/docs/references/smithers/packages/engine/src/startDurability.js +++ b/docs/references/smithers/packages/engine/src/startDurability.js @@ -8,7 +8,7 @@ import { Effect } from "effect"; import * as BunContext from "@effect/platform-bun/BunContext"; -import { captureWorkspaceSnapshot, isJjRepo } from "@smithers-orchestrator/vcs/jj"; +import { captureWorkspaceSnapshot, isJjRepo } from "@smthrs/vcs/jj"; import { createSnapshotService } from "./snapshotService.js"; import { createWorkspaceWatcher } from "./workspaceWatcher.js"; import { pruneWorkspaceDurability } from "./pruneWorkspaceDurability.js"; diff --git a/docs/references/smithers/packages/engine/src/task-compute-fns.js b/docs/references/smithers/packages/engine/src/task-compute-fns.js index 66a161f96..a8b28b7cc 100644 --- a/docs/references/smithers/packages/engine/src/task-compute-fns.js +++ b/docs/references/smithers/packages/engine/src/task-compute-fns.js @@ -1,10 +1,10 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { executeSandbox } from "@smithers-orchestrator/sandbox/execute"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { executeSandbox } from "@smthrs/sandbox/execute"; import { executeChildWorkflow } from "./child-workflow.js"; import { applyDiffBundle } from "./effect/diff-bundle.js"; -/** @typedef {import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow} SmithersWorkflow */ -/** @typedef {import("@smithers-orchestrator/graph/TaskDescriptor").TaskDescriptor} TaskDescriptor */ +/** @typedef {import("@smthrs/components/SmithersWorkflow").SmithersWorkflow} SmithersWorkflow */ +/** @typedef {import("@smthrs/graph/TaskDescriptor").TaskDescriptor} TaskDescriptor */ /** * @param {TaskDescriptor[]} tasks diff --git a/docs/references/smithers/packages/engine/src/workflow-hash.js b/docs/references/smithers/packages/engine/src/workflow-hash.js index 4eaba0d45..c5820739b 100644 --- a/docs/references/smithers/packages/engine/src/workflow-hash.js +++ b/docs/references/smithers/packages/engine/src/workflow-hash.js @@ -2,7 +2,7 @@ import { existsSync, statSync } from "node:fs"; import { readFile } from "node:fs/promises"; import { dirname, resolve } from "node:path"; import { createHash } from "node:crypto"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; const STATIC_IMPORT_RE = /\b(?:import|export)\s+(?:[^"'`]*?\s+from\s*)?["']([^"']+)["']/g; const DYNAMIC_IMPORT_RE = /\bimport\s*\(\s*["']([^"']+)["']\s*\)/g; diff --git a/docs/references/smithers/packages/engine/tests/activity-contract.test.js b/docs/references/smithers/packages/engine/tests/activity-contract.test.js index 84d4f2afb..56b4b3b3a 100644 --- a/docs/references/smithers/packages/engine/tests/activity-contract.test.js +++ b/docs/references/smithers/packages/engine/tests/activity-contract.test.js @@ -1,9 +1,9 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { z } from "zod"; -import { SmithersDb, Task, Workflow, runWorkflow } from "smithers-orchestrator"; -import { smithersCache } from "@smithers-orchestrator/db/internal-schema"; -import { jsx } from "smithers-orchestrator/jsx-runtime"; +import { SmithersDb, Task, Workflow, runWorkflow } from "smthrs"; +import { smithersCache } from "@smthrs/db/internal-schema"; +import { jsx } from "smthrs/jsx-runtime"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { Effect } from "effect"; const contractSchemas = { diff --git a/docs/references/smithers/packages/engine/tests/agent-ask.test.js b/docs/references/smithers/packages/engine/tests/agent-ask.test.js index 3c6fc036c..ba8813a15 100644 --- a/docs/references/smithers/packages/engine/tests/agent-ask.test.js +++ b/docs/references/smithers/packages/engine/tests/agent-ask.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { buildAgentAskRequestId, buildAgentAskRequestRow, diff --git a/docs/references/smithers/packages/engine/tests/approval-auto-approve-conditions.test.jsx b/docs/references/smithers/packages/engine/tests/approval-auto-approve-conditions.test.jsx index f849e7f3e..7d5c4dd86 100644 --- a/docs/references/smithers/packages/engine/tests/approval-auto-approve-conditions.test.jsx +++ b/docs/references/smithers/packages/engine/tests/approval-auto-approve-conditions.test.jsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { dirname } from "node:path"; import { @@ -6,9 +6,9 @@ import { Workflow, runWorkflow, approvalDecisionSchema, -} from "smithers-orchestrator"; +} from "smthrs"; import { approveNode } from "../src/approvals.js"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { SmithersDb } from "@smthrs/db/adapter"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/approval-component.test.jsx b/docs/references/smithers/packages/engine/tests/approval-component.test.jsx index 125c52ecf..f4c42ec23 100644 --- a/docs/references/smithers/packages/engine/tests/approval-component.test.jsx +++ b/docs/references/smithers/packages/engine/tests/approval-component.test.jsx @@ -1,9 +1,9 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { z } from "zod"; -import { Approval, Sequence, Task, Workflow, approvalDecisionSchema, approvalRankingSchema, approvalSelectionSchema, renderFrame, runWorkflow, } from "smithers-orchestrator"; +import { Approval, Sequence, Task, Workflow, approvalDecisionSchema, approvalRankingSchema, approvalSelectionSchema, renderFrame, runWorkflow, } from "smthrs"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { SmithersDb } from "@smthrs/db/adapter"; import { denyNode } from "../src/approvals.js"; import { Effect } from "effect"; const APPROVAL_TEST_TIMEOUT_MS = 15_000; diff --git a/docs/references/smithers/packages/engine/tests/approval-extended.test.jsx b/docs/references/smithers/packages/engine/tests/approval-extended.test.jsx index 21c8f8410..9f7604f8a 100644 --- a/docs/references/smithers/packages/engine/tests/approval-extended.test.jsx +++ b/docs/references/smithers/packages/engine/tests/approval-extended.test.jsx @@ -1,10 +1,10 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { dirname } from "node:path"; -import { Approval, Workflow, Task, Sequence, runWorkflow, approvalDecisionSchema, approvalRankingSchema, approvalSelectionSchema, } from "smithers-orchestrator"; +import { Approval, Workflow, Task, Sequence, runWorkflow, approvalDecisionSchema, approvalRankingSchema, approvalSelectionSchema, } from "smthrs"; import { approveNode, denyNode } from "../src/approvals.js"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { renderPrometheusMetrics } from "@smithers-orchestrator/observability"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { renderPrometheusMetrics } from "@smthrs/observability"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/approval-observability.test.jsx b/docs/references/smithers/packages/engine/tests/approval-observability.test.jsx index d6f200660..71b88bf15 100644 --- a/docs/references/smithers/packages/engine/tests/approval-observability.test.jsx +++ b/docs/references/smithers/packages/engine/tests/approval-observability.test.jsx @@ -1,9 +1,9 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Workflow, Task, runWorkflow } from "smithers-orchestrator"; +import { Workflow, Task, runWorkflow } from "smthrs"; import { approveNode, denyNode } from "../src/approvals.js"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { renderPrometheusMetrics } from "@smithers-orchestrator/observability"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { renderPrometheusMetrics } from "@smthrs/observability"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/cache-policy-ttl-scope.test.jsx b/docs/references/smithers/packages/engine/tests/cache-policy-ttl-scope.test.jsx index 50f8c7e6a..0cdb2bfd0 100644 --- a/docs/references/smithers/packages/engine/tests/cache-policy-ttl-scope.test.jsx +++ b/docs/references/smithers/packages/engine/tests/cache-policy-ttl-scope.test.jsx @@ -1,9 +1,9 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { z } from "zod"; import { Effect } from "effect"; -import { Workflow, Task, runWorkflow } from "smithers-orchestrator"; +import { Workflow, Task, runWorkflow } from "smthrs"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; function outputShape() { diff --git a/docs/references/smithers/packages/engine/tests/cache-workflow.test.jsx b/docs/references/smithers/packages/engine/tests/cache-workflow.test.jsx index 44a30b43e..76fb77c4a 100644 --- a/docs/references/smithers/packages/engine/tests/cache-workflow.test.jsx +++ b/docs/references/smithers/packages/engine/tests/cache-workflow.test.jsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Workflow, Task, runWorkflow } from "smithers-orchestrator"; +import { Workflow, Task, runWorkflow } from "smthrs"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/child-workflow.test.js b/docs/references/smithers/packages/engine/tests/child-workflow.test.js index e66c6c8c3..add7b0413 100644 --- a/docs/references/smithers/packages/engine/tests/child-workflow.test.js +++ b/docs/references/smithers/packages/engine/tests/child-workflow.test.js @@ -1,6 +1,6 @@ import { describe, expect, test } from "bun:test"; -import { withTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { withTaskRuntime } from "@smthrs/driver/task-runtime"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { diff --git a/docs/references/smithers/packages/engine/tests/compute-task-bridge-internals.test.js b/docs/references/smithers/packages/engine/tests/compute-task-bridge-internals.test.js index e1891fa1e..0a9bc1070 100644 --- a/docs/references/smithers/packages/engine/tests/compute-task-bridge-internals.test.js +++ b/docs/references/smithers/packages/engine/tests/compute-task-bridge-internals.test.js @@ -1,11 +1,11 @@ import { describe, expect, test } from "bun:test"; import { Effect } from "effect"; import { z } from "zod"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { requireTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { TaskHeartbeatTimeout } from "@smithers-orchestrator/errors/TaskHeartbeatTimeout"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { requireTaskRuntime } from "@smthrs/driver/task-runtime"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { TaskHeartbeatTimeout } from "@smthrs/errors/TaskHeartbeatTimeout"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { diff --git a/docs/references/smithers/packages/engine/tests/concurrent-safety.test.jsx b/docs/references/smithers/packages/engine/tests/concurrent-safety.test.jsx index e077db5cf..f93396ed5 100644 --- a/docs/references/smithers/packages/engine/tests/concurrent-safety.test.jsx +++ b/docs/references/smithers/packages/engine/tests/concurrent-safety.test.jsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Workflow, Task, Parallel, runWorkflow } from "smithers-orchestrator"; +import { Workflow, Task, Parallel, runWorkflow } from "smthrs"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/crash-recovery.test.js b/docs/references/smithers/packages/engine/tests/crash-recovery.test.js index 30d25a27c..89163e3b2 100644 --- a/docs/references/smithers/packages/engine/tests/crash-recovery.test.js +++ b/docs/references/smithers/packages/engine/tests/crash-recovery.test.js @@ -18,8 +18,8 @@ import { join } from "node:path"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; import { Effect } from "effect"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { EventBus } from "../src/events.js"; function createDiskDb() { diff --git a/docs/references/smithers/packages/engine/tests/create-smithers-postgres.test.jsx b/docs/references/smithers/packages/engine/tests/create-smithers-postgres.test.jsx index a0fb99b59..f67c2873d 100644 --- a/docs/references/smithers/packages/engine/tests/create-smithers-postgres.test.jsx +++ b/docs/references/smithers/packages/engine/tests/create-smithers-postgres.test.jsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ /** * PostgreSQL/PGlite coverage for the createSmithers JSX API * (createSmithersPostgres). The JSX API differs from the Effect-native builder: @@ -14,10 +14,10 @@ import { describe, expect, setDefaultTimeout, test } from "bun:test"; import { z } from "zod"; import { Effect } from "effect"; -import { ContinueAsNew, Ralph, Sequence, Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { ContinueAsNew, Ralph, Sequence, Task, Workflow, runWorkflow } from "smthrs"; import { createSmithersPostgres } from "../../smithers/src/create.js"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { loadRunOutputRowsEffect } from "@smithers-orchestrator/db/snapshot"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { loadRunOutputRowsEffect } from "@smthrs/db/snapshot"; setDefaultTimeout(180_000); diff --git a/docs/references/smithers/packages/engine/tests/deferred-contract.test.js b/docs/references/smithers/packages/engine/tests/deferred-contract.test.js index 6115d224b..0cc091ff0 100644 --- a/docs/references/smithers/packages/engine/tests/deferred-contract.test.js +++ b/docs/references/smithers/packages/engine/tests/deferred-contract.test.js @@ -1,8 +1,8 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { z } from "zod"; -import { jsx, jsxs } from "smithers-orchestrator/jsx-runtime"; -import { Approval, Sequence, SmithersDb, Task, Timer, WaitForEvent, Workflow, runWorkflow, signalRun, } from "smithers-orchestrator"; +import { jsx, jsxs } from "smthrs/jsx-runtime"; +import { Approval, Sequence, SmithersDb, Task, Timer, WaitForEvent, Workflow, runWorkflow, signalRun, } from "smthrs"; import { approveNode, denyNode } from "../src/approvals.js"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/deferred-state-bridge-internals.test.js b/docs/references/smithers/packages/engine/tests/deferred-state-bridge-internals.test.js index 362d2b303..9b54f22b9 100644 --- a/docs/references/smithers/packages/engine/tests/deferred-state-bridge-internals.test.js +++ b/docs/references/smithers/packages/engine/tests/deferred-state-bridge-internals.test.js @@ -2,8 +2,8 @@ import { describe, expect, test } from "bun:test"; import React from "react"; import { Effect } from "effect"; import { z } from "zod"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { buildHumanRequestId } from "../src/human-requests.js"; diff --git a/docs/references/smithers/packages/engine/tests/duplicate-output-schemas.test.jsx b/docs/references/smithers/packages/engine/tests/duplicate-output-schemas.test.jsx index 6c27eadd8..25ad10ffb 100644 --- a/docs/references/smithers/packages/engine/tests/duplicate-output-schemas.test.jsx +++ b/docs/references/smithers/packages/engine/tests/duplicate-output-schemas.test.jsx @@ -1,7 +1,7 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { expect, test } from "bun:test"; import { Effect } from "effect"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { Task, Workflow, runWorkflow } from "smthrs"; import { z } from "zod"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; diff --git a/docs/references/smithers/packages/engine/tests/durability-snapshots.e2e.test.jsx b/docs/references/smithers/packages/engine/tests/durability-snapshots.e2e.test.jsx index a62b3544f..c321cac98 100644 --- a/docs/references/smithers/packages/engine/tests/durability-snapshots.e2e.test.jsx +++ b/docs/references/smithers/packages/engine/tests/durability-snapshots.e2e.test.jsx @@ -1,12 +1,12 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { mkdtempSync, rmSync, writeFileSync } from "node:fs"; import { join } from "node:path"; import { tmpdir } from "node:os"; import { spawnSync } from "node:child_process"; import { Effect } from "effect"; -import { runWorkflow, Task, Workflow } from "smithers-orchestrator"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { runWorkflow, Task, Workflow } from "smthrs"; +import { SmithersDb } from "@smthrs/db/adapter"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; diff --git a/docs/references/smithers/packages/engine/tests/durability.test.jsx b/docs/references/smithers/packages/engine/tests/durability.test.jsx index db732de37..e6bd47b8b 100644 --- a/docs/references/smithers/packages/engine/tests/durability.test.jsx +++ b/docs/references/smithers/packages/engine/tests/durability.test.jsx @@ -1,13 +1,13 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { mkdtempSync, rmSync, writeFileSync } from "node:fs"; import { join } from "node:path"; import { tmpdir } from "node:os"; import { EventBus } from "../src/events.js"; -import { runWorkflow, Task, Workflow } from "smithers-orchestrator"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; +import { runWorkflow, Task, Workflow } from "smthrs"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { nowMs } from "@smthrs/scheduler/nowMs"; import { createTestDb, createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { ddl, outputSchemas, schema } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/durable-deferred-contract.test.js b/docs/references/smithers/packages/engine/tests/durable-deferred-contract.test.js index 82d404e2e..235b93648 100644 --- a/docs/references/smithers/packages/engine/tests/durable-deferred-contract.test.js +++ b/docs/references/smithers/packages/engine/tests/durable-deferred-contract.test.js @@ -1,8 +1,8 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { z } from "zod"; -import { jsx, jsxs } from "smithers-orchestrator/jsx-runtime"; -import { Approval, Sequence, SmithersDb, Task, WaitForEvent, Workflow, approvalDecisionSchema, runWorkflow, signalRun, } from "smithers-orchestrator"; +import { jsx, jsxs } from "smthrs/jsx-runtime"; +import { Approval, Sequence, SmithersDb, Task, WaitForEvent, Workflow, approvalDecisionSchema, runWorkflow, signalRun, } from "smthrs"; import { approveNode, denyNode } from "../src/approvals.js"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/effect-builder-runtime.test.js b/docs/references/smithers/packages/engine/tests/effect-builder-runtime.test.js index 26e6200bc..8ada56718 100644 --- a/docs/references/smithers/packages/engine/tests/effect-builder-runtime.test.js +++ b/docs/references/smithers/packages/engine/tests/effect-builder-runtime.test.js @@ -3,9 +3,9 @@ import { mkdtempSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { Context, Duration, Effect, Schedule, Schema } from "effect"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { withTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { withTaskRuntime } from "@smthrs/driver/task-runtime"; import { Smithers, __builderInternals as I } from "../src/effect/builder.js"; const inputSchema = Schema.Struct({ diff --git a/docs/references/smithers/packages/engine/tests/engine-approvals.test.js b/docs/references/smithers/packages/engine/tests/engine-approvals.test.js index 3cb4fd076..bcac6f6eb 100644 --- a/docs/references/smithers/packages/engine/tests/engine-approvals.test.js +++ b/docs/references/smithers/packages/engine/tests/engine-approvals.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { Effect } from "effect"; import { approveNode, denyNode, } from "../src/approvals.js"; function createTestDb() { diff --git a/docs/references/smithers/packages/engine/tests/engine-concurrent-runs.test.jsx b/docs/references/smithers/packages/engine/tests/engine-concurrent-runs.test.jsx index 9c33b2310..30364becf 100644 --- a/docs/references/smithers/packages/engine/tests/engine-concurrent-runs.test.jsx +++ b/docs/references/smithers/packages/engine/tests/engine-concurrent-runs.test.jsx @@ -1,8 +1,8 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { Task, Workflow, runWorkflow } from "smthrs"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/engine-edge-cases.test.jsx b/docs/references/smithers/packages/engine/tests/engine-edge-cases.test.jsx index ae36996b4..2431be1df 100644 --- a/docs/references/smithers/packages/engine/tests/engine-edge-cases.test.jsx +++ b/docs/references/smithers/packages/engine/tests/engine-edge-cases.test.jsx @@ -1,11 +1,11 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { z } from "zod"; -import { SmithersDb, runWorkflow } from "smithers-orchestrator"; +import { SmithersDb, runWorkflow } from "smthrs"; import { approveNode } from "../src/approvals.js"; import { createTestDb, createTestSmithers } from "../../smithers/tests/helpers.js"; import { ddl, schema } from "../../smithers/tests/schema.js"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { Effect } from "effect"; describe("engine edge cases", () => { test("resume rejects runs that were never started", async () => { diff --git a/docs/references/smithers/packages/engine/tests/engine-internals.test.js b/docs/references/smithers/packages/engine/tests/engine-internals.test.js index ab105056d..16686e9a2 100644 --- a/docs/references/smithers/packages/engine/tests/engine-internals.test.js +++ b/docs/references/smithers/packages/engine/tests/engine-internals.test.js @@ -6,9 +6,9 @@ import { join, resolve as resolvePath } from "node:path"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; import { integer, sqliteTable, text } from "drizzle-orm/sqlite-core"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { __engineInternals as I } from "../src/engine.js"; const inputPayloadTable = sqliteTable("input_payload", { diff --git a/docs/references/smithers/packages/engine/tests/engine-legacy-mode.test.jsx b/docs/references/smithers/packages/engine/tests/engine-legacy-mode.test.jsx index f4e8bb508..8fd1a833b 100644 --- a/docs/references/smithers/packages/engine/tests/engine-legacy-mode.test.jsx +++ b/docs/references/smithers/packages/engine/tests/engine-legacy-mode.test.jsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { Effect } from "effect"; import { @@ -9,9 +9,9 @@ import { Task, Workflow, runWorkflow, -} from "smithers-orchestrator"; +} from "smthrs"; import { approveNode } from "../src/approvals.js"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { SmithersDb } from "@smthrs/db/adapter"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; diff --git a/docs/references/smithers/packages/engine/tests/engine-observability.test.jsx b/docs/references/smithers/packages/engine/tests/engine-observability.test.jsx index 9b9fff537..cd70e2706 100644 --- a/docs/references/smithers/packages/engine/tests/engine-observability.test.jsx +++ b/docs/references/smithers/packages/engine/tests/engine-observability.test.jsx @@ -1,7 +1,7 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Workflow, Task, runWorkflow } from "smithers-orchestrator"; -import { renderPrometheusMetrics } from "@smithers-orchestrator/observability"; +import { Workflow, Task, runWorkflow } from "smthrs"; +import { renderPrometheusMetrics } from "@smthrs/observability"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/engine-regressions.test.jsx b/docs/references/smithers/packages/engine/tests/engine-regressions.test.jsx index 969de94b9..9e7b597fe 100644 --- a/docs/references/smithers/packages/engine/tests/engine-regressions.test.jsx +++ b/docs/references/smithers/packages/engine/tests/engine-regressions.test.jsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { Task, Workflow, runWorkflow } from "smthrs"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/engine-transactional-writes.test.jsx b/docs/references/smithers/packages/engine/tests/engine-transactional-writes.test.jsx index 8b59bc6e9..f8de0b35c 100644 --- a/docs/references/smithers/packages/engine/tests/engine-transactional-writes.test.jsx +++ b/docs/references/smithers/packages/engine/tests/engine-transactional-writes.test.jsx @@ -1,7 +1,7 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Parallel, Task, Timer, Workflow, runWorkflow, } from "smithers-orchestrator"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { Parallel, Task, Timer, Workflow, runWorkflow, } from "smthrs"; +import { SmithersDb } from "@smthrs/db/adapter"; import { approveNode } from "../src/approvals.js"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; diff --git a/docs/references/smithers/packages/engine/tests/engine-workflow.test.jsx b/docs/references/smithers/packages/engine/tests/engine-workflow.test.jsx index beff476e1..053238d7d 100644 --- a/docs/references/smithers/packages/engine/tests/engine-workflow.test.jsx +++ b/docs/references/smithers/packages/engine/tests/engine-workflow.test.jsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Workflow, Task, Sequence, Parallel, Branch, Loop, MergeQueue, runWorkflow, } from "smithers-orchestrator"; +import { Workflow, Task, Sequence, Parallel, Branch, Loop, MergeQueue, runWorkflow, } from "smthrs"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/engine.test.jsx b/docs/references/smithers/packages/engine/tests/engine.test.jsx index 2b3ef10e9..1f32fc69e 100644 --- a/docs/references/smithers/packages/engine/tests/engine.test.jsx +++ b/docs/references/smithers/packages/engine/tests/engine.test.jsx @@ -1,8 +1,8 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Parallel, Ralph, Sequence, Task, Workflow, runWorkflow, } from "smithers-orchestrator"; +import { Parallel, Ralph, Sequence, Task, Workflow, runWorkflow, } from "smthrs"; import { approveNode } from "../src/approvals.js"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { SmithersDb } from "@smthrs/db/adapter"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/entity-worker-contract.test.js b/docs/references/smithers/packages/engine/tests/entity-worker-contract.test.js index 62304e88d..7c6cc6e5f 100644 --- a/docs/references/smithers/packages/engine/tests/entity-worker-contract.test.js +++ b/docs/references/smithers/packages/engine/tests/entity-worker-contract.test.js @@ -1,10 +1,10 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { Effect, Schema } from "effect"; import { z } from "zod"; -import { jsx, jsxs } from "smithers-orchestrator/jsx-runtime"; +import { jsx, jsxs } from "smthrs/jsx-runtime"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; -import { runWorkflow, } from "smithers-orchestrator"; +import { runWorkflow, } from "smthrs"; import { isTaskResultFailure, isUnknownWorkerError, makeWorkerTask, TaskResult, WorkerTask, } from "../src/effect/entity-worker.js"; import { subscribeTaskWorkerDispatches, } from "../src/effect/single-runner.js"; const contractSchemas = { diff --git a/docs/references/smithers/packages/engine/tests/events-bus.test.js b/docs/references/smithers/packages/engine/tests/events-bus.test.js index 2b25a72e6..c17683fff 100644 --- a/docs/references/smithers/packages/engine/tests/events-bus.test.js +++ b/docs/references/smithers/packages/engine/tests/events-bus.test.js @@ -1,7 +1,7 @@ import { describe, expect, test } from "bun:test"; import { Effect } from "effect"; import { EventBus } from "../src/events.js"; -import { renderPrometheusMetrics } from "@smithers-orchestrator/observability"; +import { renderPrometheusMetrics } from "@smthrs/observability"; /** * @param {string} type * @param {any} [overrides] diff --git a/docs/references/smithers/packages/engine/tests/failure-retryable-false.e2e.test.jsx b/docs/references/smithers/packages/engine/tests/failure-retryable-false.e2e.test.jsx index f7b3b57d9..f2541d582 100644 --- a/docs/references/smithers/packages/engine/tests/failure-retryable-false.e2e.test.jsx +++ b/docs/references/smithers/packages/engine/tests/failure-retryable-false.e2e.test.jsx @@ -1,8 +1,8 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { Task, Workflow, runWorkflow } from "smthrs"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; @@ -201,7 +201,7 @@ describe("failureRetryable=false short-circuits engine retries", () => { * effectiveError?.details?.failureRetryable === false || * effectiveError?.code === "AGENT_CONFIG_INVALID" */ -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { EventBus as BridgeEventBus } from "../src/events.js"; import { executeTaskBridge as bridgeExecuteTaskBridge } from "../src/effect/workflow-bridge.js"; import { z as bridgeZ } from "zod"; diff --git a/docs/references/smithers/packages/engine/tests/fork-session.e2e.test.jsx b/docs/references/smithers/packages/engine/tests/fork-session.e2e.test.jsx index 5bb248ddd..10328aa58 100644 --- a/docs/references/smithers/packages/engine/tests/fork-session.e2e.test.jsx +++ b/docs/references/smithers/packages/engine/tests/fork-session.e2e.test.jsx @@ -1,8 +1,8 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Parallel, Sequence, Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { Parallel, Sequence, Task, Workflow, runWorkflow } from "smthrs"; import { approveNode } from "../src/approvals.js"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { SmithersDb } from "@smthrs/db/adapter"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/heartbeat-bounds.test.jsx b/docs/references/smithers/packages/engine/tests/heartbeat-bounds.test.jsx index f73b312fb..f0dc972dd 100644 --- a/docs/references/smithers/packages/engine/tests/heartbeat-bounds.test.jsx +++ b/docs/references/smithers/packages/engine/tests/heartbeat-bounds.test.jsx @@ -1,8 +1,8 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; -import { requireTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { Task, Workflow, runWorkflow } from "smthrs"; +import { requireTaskRuntime } from "@smthrs/driver/task-runtime"; +import { SmithersDb } from "@smthrs/db/adapter"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/hijack-auto-prop.test.jsx b/docs/references/smithers/packages/engine/tests/hijack-auto-prop.test.jsx index 6e6987ab6..0a3a57b3f 100644 --- a/docs/references/smithers/packages/engine/tests/hijack-auto-prop.test.jsx +++ b/docs/references/smithers/packages/engine/tests/hijack-auto-prop.test.jsx @@ -1,7 +1,7 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { expect, test } from "bun:test"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { Task, Workflow, runWorkflow } from "smthrs"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/hijack-command.test.js b/docs/references/smithers/packages/engine/tests/hijack-command.test.js index b02b52c29..50524a003 100644 --- a/docs/references/smithers/packages/engine/tests/hijack-command.test.js +++ b/docs/references/smithers/packages/engine/tests/hijack-command.test.js @@ -1,8 +1,8 @@ import { expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createExecutableDir, createTempRepo, prependPath, runSmithers, writeExecutable, } from "../../smithers/tests/e2e-helpers.js"; /** * @param {ReturnType<typeof createTempRepo>} repo diff --git a/docs/references/smithers/packages/engine/tests/hijack-e2e.test.jsx b/docs/references/smithers/packages/engine/tests/hijack-e2e.test.jsx index b400846f7..0623b32d6 100644 --- a/docs/references/smithers/packages/engine/tests/hijack-e2e.test.jsx +++ b/docs/references/smithers/packages/engine/tests/hijack-e2e.test.jsx @@ -1,7 +1,7 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { Task, Workflow, runWorkflow } from "smthrs"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/hijack-runtime.test.jsx b/docs/references/smithers/packages/engine/tests/hijack-runtime.test.jsx index e1683967b..b12d63a61 100644 --- a/docs/references/smithers/packages/engine/tests/hijack-runtime.test.jsx +++ b/docs/references/smithers/packages/engine/tests/hijack-runtime.test.jsx @@ -1,7 +1,7 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { expect, test } from "bun:test"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { Task, Workflow, runWorkflow } from "smthrs"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/human-request-validation.test.js b/docs/references/smithers/packages/engine/tests/human-request-validation.test.js index 9d5993e94..675f1e884 100644 --- a/docs/references/smithers/packages/engine/tests/human-request-validation.test.js +++ b/docs/references/smithers/packages/engine/tests/human-request-validation.test.js @@ -2,12 +2,12 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; import { z } from "zod"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { resolveDeferredTaskStateBridge } from "../src/effect/deferred-state-bridge.js"; import { buildHumanRequestId, isHumanRequestPastTimeout, validateHumanRequestValue, } from "../src/human-requests.js"; -import { zodToCreateTableSQL } from "@smithers-orchestrator/db/zodToCreateTableSQL"; -import { zodToTable } from "@smithers-orchestrator/db/zodToTable"; +import { zodToCreateTableSQL } from "@smthrs/db/zodToCreateTableSQL"; +import { zodToTable } from "@smthrs/db/zodToTable"; /** * @param {z.ZodObject<any>} schema */ diff --git a/docs/references/smithers/packages/engine/tests/human-requests.test.js b/docs/references/smithers/packages/engine/tests/human-requests.test.js index 7d2aef154..c57570661 100644 --- a/docs/references/smithers/packages/engine/tests/human-requests.test.js +++ b/docs/references/smithers/packages/engine/tests/human-requests.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { buildHumanRequestId } from "../src/human-requests.js"; import { createTempRepo, runSmithers } from "../../smithers/tests/e2e-helpers.js"; function createAdapter() { diff --git a/docs/references/smithers/packages/engine/tests/human-task-prompt.test.jsx b/docs/references/smithers/packages/engine/tests/human-task-prompt.test.jsx index f64fdf8ac..31813ad70 100644 --- a/docs/references/smithers/packages/engine/tests/human-task-prompt.test.jsx +++ b/docs/references/smithers/packages/engine/tests/human-task-prompt.test.jsx @@ -1,8 +1,8 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { z } from "zod"; -import { SmithersDb, Workflow, runWorkflow, } from "smithers-orchestrator"; -import { HumanTask } from "@smithers-orchestrator/components/components/index"; +import { SmithersDb, Workflow, runWorkflow, } from "smthrs"; +import { HumanTask } from "@smthrs/components/components/index"; import { buildHumanRequestId } from "../src/human-requests.js"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/infinite-retry-default.e2e.test.jsx b/docs/references/smithers/packages/engine/tests/infinite-retry-default.e2e.test.jsx index 203844fd4..1778e4d6f 100644 --- a/docs/references/smithers/packages/engine/tests/infinite-retry-default.e2e.test.jsx +++ b/docs/references/smithers/packages/engine/tests/infinite-retry-default.e2e.test.jsx @@ -1,7 +1,7 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { Task, Workflow, runWorkflow } from "smthrs"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/input-handling.test.jsx b/docs/references/smithers/packages/engine/tests/input-handling.test.jsx index 790d4a42a..f46456a6c 100644 --- a/docs/references/smithers/packages/engine/tests/input-handling.test.jsx +++ b/docs/references/smithers/packages/engine/tests/input-handling.test.jsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Workflow, Task, runWorkflow } from "smithers-orchestrator"; +import { Workflow, Task, runWorkflow } from "smthrs"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/loop-until-reeval.test.jsx b/docs/references/smithers/packages/engine/tests/loop-until-reeval.test.jsx index 13c066c63..06b4ed86a 100644 --- a/docs/references/smithers/packages/engine/tests/loop-until-reeval.test.jsx +++ b/docs/references/smithers/packages/engine/tests/loop-until-reeval.test.jsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ /** * Regression test: Loop `until` must re-evaluate from fresh DB data * after each iteration completes. @@ -11,7 +11,7 @@ * - The Loop should exit */ import { describe, expect, test } from "bun:test"; -import { Loop, Sequence, Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { Loop, Sequence, Task, Workflow, runWorkflow } from "smthrs"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/nested-loop-runtime.test.jsx b/docs/references/smithers/packages/engine/tests/nested-loop-runtime.test.jsx index 6b0cfe8fe..4ceed2820 100644 --- a/docs/references/smithers/packages/engine/tests/nested-loop-runtime.test.jsx +++ b/docs/references/smithers/packages/engine/tests/nested-loop-runtime.test.jsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ /** * Regression tests for https://github.com/jjhub-ai/smithers/issues/117 * @@ -7,7 +7,7 @@ * 2. Loop-owned task reuses cache across iterations */ import { describe, expect, test } from "bun:test"; -import { Loop, Sequence, Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { Loop, Sequence, Task, Workflow, runWorkflow } from "smthrs"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/output-error-messages.test.jsx b/docs/references/smithers/packages/engine/tests/output-error-messages.test.jsx index 628838b76..3407ba39b 100644 --- a/docs/references/smithers/packages/engine/tests/output-error-messages.test.jsx +++ b/docs/references/smithers/packages/engine/tests/output-error-messages.test.jsx @@ -1,8 +1,8 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { expect, test } from "bun:test"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { SmithersDb } from "@smthrs/db/adapter"; import { Effect } from "effect"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { Task, Workflow, runWorkflow } from "smthrs"; import { z } from "zod"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; diff --git a/docs/references/smithers/packages/engine/tests/parallel-edges.test.jsx b/docs/references/smithers/packages/engine/tests/parallel-edges.test.jsx index caa7cf917..3564ec76a 100644 --- a/docs/references/smithers/packages/engine/tests/parallel-edges.test.jsx +++ b/docs/references/smithers/packages/engine/tests/parallel-edges.test.jsx @@ -1,7 +1,7 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { SmithersRenderer } from "@smithers-orchestrator/react-reconciler/dom/renderer"; -import { Parallel, Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { SmithersRenderer } from "@smthrs/react-reconciler/dom/renderer"; +import { Parallel, Task, Workflow, runWorkflow } from "smthrs"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/reconciler-graph-roundtrip.test.jsx b/docs/references/smithers/packages/engine/tests/reconciler-graph-roundtrip.test.jsx index b382f71fe..801c90907 100644 --- a/docs/references/smithers/packages/engine/tests/reconciler-graph-roundtrip.test.jsx +++ b/docs/references/smithers/packages/engine/tests/reconciler-graph-roundtrip.test.jsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ // Round-trip integration tests: React component tree → host tree → // extracted task plan → engine schedule + execute. // @@ -9,9 +9,9 @@ import { describe, expect, test } from "bun:test"; import { z } from "zod"; import { Effect } from "effect"; -import { Sandbox, Task, Workflow, runWorkflow } from "smithers-orchestrator"; -import { SmithersRenderer } from "@smithers-orchestrator/react-reconciler/dom/renderer"; -import { extractFromHost } from "@smithers-orchestrator/graph/dom/extract"; +import { Sandbox, Task, Workflow, runWorkflow } from "smthrs"; +import { SmithersRenderer } from "@smthrs/react-reconciler/dom/renderer"; +import { extractFromHost } from "@smthrs/graph/dom/extract"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; describe("reconciler→graph→engine pipeline", () => { diff --git a/docs/references/smithers/packages/engine/tests/restore-workspace.test.js b/docs/references/smithers/packages/engine/tests/restore-workspace.test.js index 3be3fca42..49ab47e72 100644 --- a/docs/references/smithers/packages/engine/tests/restore-workspace.test.js +++ b/docs/references/smithers/packages/engine/tests/restore-workspace.test.js @@ -7,9 +7,9 @@ import { Effect } from "effect"; import * as BunContext from "@effect/platform-bun/BunContext"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { captureWorkspaceSnapshot } from "@smithers-orchestrator/vcs/jj"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { captureWorkspaceSnapshot } from "@smthrs/vcs/jj"; import { createSnapshotService } from "../src/snapshotService.js"; import { restoreWorkspaceToLatestCheckpoint } from "../src/restoreWorkspace.js"; diff --git a/docs/references/smithers/packages/engine/tests/resume-no-time-travel.e2e.test.jsx b/docs/references/smithers/packages/engine/tests/resume-no-time-travel.e2e.test.jsx index 54e594a5d..801a15077 100644 --- a/docs/references/smithers/packages/engine/tests/resume-no-time-travel.e2e.test.jsx +++ b/docs/references/smithers/packages/engine/tests/resume-no-time-travel.e2e.test.jsx @@ -1,11 +1,11 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { existsSync, readFileSync, writeFileSync } from "node:fs"; import { resolve } from "node:path"; import { spawn } from "node:child_process"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { SmithersDb } from "@smthrs/db/adapter"; import { Effect } from "effect"; -import { Sequence, Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { Sequence, Task, Workflow, runWorkflow } from "smthrs"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; /** diff --git a/docs/references/smithers/packages/engine/tests/resume-with-time-travel.e2e.test.jsx b/docs/references/smithers/packages/engine/tests/resume-with-time-travel.e2e.test.jsx index e84ab0ecf..1598eec35 100644 --- a/docs/references/smithers/packages/engine/tests/resume-with-time-travel.e2e.test.jsx +++ b/docs/references/smithers/packages/engine/tests/resume-with-time-travel.e2e.test.jsx @@ -1,10 +1,10 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { eq } from "drizzle-orm"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; -import { captureSnapshot, loadSnapshot, listSnapshots, parseSnapshot, } from "@smithers-orchestrator/time-travel/snapshot"; -import { replayFromCheckpoint } from "@smithers-orchestrator/time-travel/replay"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { Task, Workflow, runWorkflow } from "smthrs"; +import { captureSnapshot, loadSnapshot, listSnapshots, parseSnapshot, } from "@smthrs/time-travel/snapshot"; +import { replayFromCheckpoint } from "@smthrs/time-travel/replay"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/run-input-bounds.test.jsx b/docs/references/smithers/packages/engine/tests/run-input-bounds.test.jsx index f65fae9a8..f773b0a03 100644 --- a/docs/references/smithers/packages/engine/tests/run-input-bounds.test.jsx +++ b/docs/references/smithers/packages/engine/tests/run-input-bounds.test.jsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { Task, Workflow, runWorkflow } from "smthrs"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/schema-retries.test.jsx b/docs/references/smithers/packages/engine/tests/schema-retries.test.jsx index 1c3b591db..90dd30980 100644 --- a/docs/references/smithers/packages/engine/tests/schema-retries.test.jsx +++ b/docs/references/smithers/packages/engine/tests/schema-retries.test.jsx @@ -1,7 +1,7 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { Task, Workflow, runWorkflow } from "smthrs"; +import { SmithersDb } from "@smthrs/db/adapter"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/sdk-hijack-runtime.test.jsx b/docs/references/smithers/packages/engine/tests/sdk-hijack-runtime.test.jsx index 75f015564..9516a64f6 100644 --- a/docs/references/smithers/packages/engine/tests/sdk-hijack-runtime.test.jsx +++ b/docs/references/smithers/packages/engine/tests/sdk-hijack-runtime.test.jsx @@ -1,7 +1,7 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { expect, test } from "bun:test"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { Task, Workflow, runWorkflow } from "smthrs"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/sdk-structured-output.test.jsx b/docs/references/smithers/packages/engine/tests/sdk-structured-output.test.jsx index e493deeb4..3a61b82d4 100644 --- a/docs/references/smithers/packages/engine/tests/sdk-structured-output.test.jsx +++ b/docs/references/smithers/packages/engine/tests/sdk-structured-output.test.jsx @@ -1,7 +1,7 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { expect, test } from "bun:test"; import { Effect } from "effect"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { Task, Workflow, runWorkflow } from "smthrs"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; diff --git a/docs/references/smithers/packages/engine/tests/snapshot-service.test.js b/docs/references/smithers/packages/engine/tests/snapshot-service.test.js index 6504fbefe..32e6b3386 100644 --- a/docs/references/smithers/packages/engine/tests/snapshot-service.test.js +++ b/docs/references/smithers/packages/engine/tests/snapshot-service.test.js @@ -7,9 +7,9 @@ import { Effect } from "effect"; import * as BunContext from "@effect/platform-bun/BunContext"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { captureWorkspaceSnapshot } from "@smithers-orchestrator/vcs/jj"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { captureWorkspaceSnapshot } from "@smthrs/vcs/jj"; import { createSnapshotService } from "../src/snapshotService.js"; /** A fake adapter that records rows in memory, for deterministic logic tests. */ diff --git a/docs/references/smithers/packages/engine/tests/sql-message-storage-contract.test.js b/docs/references/smithers/packages/engine/tests/sql-message-storage-contract.test.js index 4f2b802b5..2141adfdf 100644 --- a/docs/references/smithers/packages/engine/tests/sql-message-storage-contract.test.js +++ b/docs/references/smithers/packages/engine/tests/sql-message-storage-contract.test.js @@ -1,10 +1,10 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { z } from "zod"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { getSqlMessageStorage } from "../src/effect/sql-message-storage.js"; -import { SmithersDb, Task, Workflow, runWorkflow } from "smithers-orchestrator"; -import { jsx } from "smithers-orchestrator/jsx-runtime"; +import { SmithersDb, Task, Workflow, runWorkflow } from "smthrs"; +import { jsx } from "smthrs/jsx-runtime"; import { createTestDb, createTestSmithers } from "../../smithers/tests/helpers.js"; import { ddl, schema } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/static-task-bridge-internals.test.js b/docs/references/smithers/packages/engine/tests/static-task-bridge-internals.test.js index 28e1f6367..ef0db662a 100644 --- a/docs/references/smithers/packages/engine/tests/static-task-bridge-internals.test.js +++ b/docs/references/smithers/packages/engine/tests/static-task-bridge-internals.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { z } from "zod"; import { Effect } from "effect"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { __staticTaskBridgeInternals as I, diff --git a/docs/references/smithers/packages/engine/tests/task-heartbeats.test.jsx b/docs/references/smithers/packages/engine/tests/task-heartbeats.test.jsx index 3bb1b4db5..22ceebf6f 100644 --- a/docs/references/smithers/packages/engine/tests/task-heartbeats.test.jsx +++ b/docs/references/smithers/packages/engine/tests/task-heartbeats.test.jsx @@ -1,8 +1,8 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; -import { requireTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { Task, Workflow, runWorkflow } from "smthrs"; +import { requireTaskRuntime } from "@smthrs/driver/task-runtime"; +import { SmithersDb } from "@smthrs/db/adapter"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/time-travel-postgres.test.js b/docs/references/smithers/packages/engine/tests/time-travel-postgres.test.js index b654cf4b6..998f2e5c8 100644 --- a/docs/references/smithers/packages/engine/tests/time-travel-postgres.test.js +++ b/docs/references/smithers/packages/engine/tests/time-travel-postgres.test.js @@ -17,11 +17,11 @@ import { describe, expect, setDefaultTimeout, test } from "bun:test"; import React from "react"; import { Context, Effect, Schema } from "effect"; -import { Workflow } from "@smithers-orchestrator/components/components/index"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { captureSnapshot, listSnapshots, loadSnapshot, parseSnapshot } from "@smithers-orchestrator/time-travel/snapshot"; -import { replayFromCheckpoint } from "@smithers-orchestrator/time-travel/replay"; -import { forkRunEffect, listBranchesEffect } from "@smithers-orchestrator/time-travel/fork"; +import { Workflow } from "@smthrs/components/components/index"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { captureSnapshot, listSnapshots, loadSnapshot, parseSnapshot } from "@smthrs/time-travel/snapshot"; +import { replayFromCheckpoint } from "@smthrs/time-travel/replay"; +import { forkRunEffect, listBranchesEffect } from "@smthrs/time-travel/fork"; import { runWorkflow } from "../src/engine.js"; import { Smithers, __builderInternals as I } from "../src/effect/builder.js"; diff --git a/docs/references/smithers/packages/engine/tests/workflow-bridge-compute.test.js b/docs/references/smithers/packages/engine/tests/workflow-bridge-compute.test.js index 4c1148137..b3894a746 100644 --- a/docs/references/smithers/packages/engine/tests/workflow-bridge-compute.test.js +++ b/docs/references/smithers/packages/engine/tests/workflow-bridge-compute.test.js @@ -1,9 +1,9 @@ import { describe, expect, test } from "bun:test"; import { z } from "zod"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { EventBus } from "../src/events.js"; -import { requireTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; +import { requireTaskRuntime } from "@smthrs/driver/task-runtime"; import { executeTaskBridge } from "../src/effect/workflow-bridge.js"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; /** diff --git a/docs/references/smithers/packages/engine/tests/workflow-bridge-deferred.test.js b/docs/references/smithers/packages/engine/tests/workflow-bridge-deferred.test.js index 0e7e39d3f..9babff563 100644 --- a/docs/references/smithers/packages/engine/tests/workflow-bridge-deferred.test.js +++ b/docs/references/smithers/packages/engine/tests/workflow-bridge-deferred.test.js @@ -1,11 +1,11 @@ import { describe, expect, test } from "bun:test"; import { z } from "zod"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { EventBus } from "../src/events.js"; import { signalRun } from "../src/signals.js"; import { cancelPendingTimersBridge, resolveDeferredTaskStateBridge, } from "../src/effect/workflow-bridge.js"; -import { approvalDecisionSchema } from "@smithers-orchestrator/components/components/Approval"; +import { approvalDecisionSchema } from "@smthrs/components/components/Approval"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { Effect } from "effect"; /** diff --git a/docs/references/smithers/packages/engine/tests/workflow-bridge-static.test.js b/docs/references/smithers/packages/engine/tests/workflow-bridge-static.test.js index 13c525cfd..650a3baee 100644 --- a/docs/references/smithers/packages/engine/tests/workflow-bridge-static.test.js +++ b/docs/references/smithers/packages/engine/tests/workflow-bridge-static.test.js @@ -1,7 +1,7 @@ import { describe, expect, test } from "bun:test"; import { z } from "zod"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { EventBus } from "../src/events.js"; import { executeTaskBridge } from "../src/effect/workflow-bridge.js"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; diff --git a/docs/references/smithers/packages/engine/tests/workflow-command.e2e.test.js b/docs/references/smithers/packages/engine/tests/workflow-command.e2e.test.js index 64a6199dc..6a4ef28dc 100644 --- a/docs/references/smithers/packages/engine/tests/workflow-command.e2e.test.js +++ b/docs/references/smithers/packages/engine/tests/workflow-command.e2e.test.js @@ -189,8 +189,8 @@ test("workflow create scaffolds a workflow that runs immediately", () => { test("workflow path can pause on WaitForEvent, accept a signal, and resume", () => { const repo = createTempRepo(); repo.write("workflow.tsx", [ - "/** @jsxImportSource smithers-orchestrator */", - 'import { createSmithers, WaitForEvent, Workflow } from "smithers-orchestrator";', + "/** @jsxImportSource smthrs */", + 'import { createSmithers, WaitForEvent, Workflow } from "smthrs";', 'import { z } from "zod";', "", "const { smithers, outputs } = createSmithers({", diff --git a/docs/references/smithers/packages/engine/tests/workflow-events.test.jsx b/docs/references/smithers/packages/engine/tests/workflow-events.test.jsx index 51f62fd74..8c1944819 100644 --- a/docs/references/smithers/packages/engine/tests/workflow-events.test.jsx +++ b/docs/references/smithers/packages/engine/tests/workflow-events.test.jsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { Workflow, Task, runWorkflow } from "smithers-orchestrator"; +import { Workflow, Task, runWorkflow } from "smthrs"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; import { z } from "zod"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/engine/tests/workflow-make-contract.test.jsx b/docs/references/smithers/packages/engine/tests/workflow-make-contract.test.jsx index 12cc17e36..d6b8d533b 100644 --- a/docs/references/smithers/packages/engine/tests/workflow-make-contract.test.jsx +++ b/docs/references/smithers/packages/engine/tests/workflow-make-contract.test.jsx @@ -1,12 +1,12 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { existsSync, readFileSync, writeFileSync } from "node:fs"; import { resolve } from "node:path"; import { spawn } from "node:child_process"; import { Effect } from "effect"; import { z } from "zod"; -import { Approval, Sequence, SmithersDb, Task, Workflow, runWorkflow, usePatched, } from "smithers-orchestrator"; -import { Subflow } from "@smithers-orchestrator/components/components/index"; +import { Approval, Sequence, SmithersDb, Task, Workflow, runWorkflow, usePatched, } from "smthrs"; +import { Subflow } from "@smthrs/components/components/index"; import { approveNode } from "../src/approvals.js"; import { createTestSmithers, sleep } from "../../smithers/tests/helpers.js"; const contractSchemas = { diff --git a/docs/references/smithers/packages/errors/package.json b/docs/references/smithers/packages/errors/package.json index cc009cb1d..21e97ef52 100644 --- a/docs/references/smithers/packages/errors/package.json +++ b/docs/references/smithers/packages/errors/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/errors", + "name": "@smthrs/errors", "version": "0.23.0", "description": "Error types, tagged errors, and error utilities for Smithers", "type": "module", diff --git a/docs/references/smithers/packages/gateway-client/package.json b/docs/references/smithers/packages/gateway-client/package.json index 8a2835057..3a737dd71 100644 --- a/docs/references/smithers/packages/gateway-client/package.json +++ b/docs/references/smithers/packages/gateway-client/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/gateway-client", + "name": "@smthrs/gateway-client", "version": "0.23.0", "description": "Browser-first client SDK for the Smithers Gateway RPC and event stream APIs", "type": "module", @@ -25,7 +25,7 @@ "test": "bun test tests" }, "dependencies": { - "@smithers-orchestrator/gateway": "workspace:*" + "@smthrs/gateway": "^0.33.0" }, "devDependencies": { "@types/bun": "latest", diff --git a/docs/references/smithers/packages/gateway-client/src/GatewayRpcTypeMap.ts b/docs/references/smithers/packages/gateway-client/src/GatewayRpcTypeMap.ts index 237d541e0..03c8bdc4b 100644 --- a/docs/references/smithers/packages/gateway-client/src/GatewayRpcTypeMap.ts +++ b/docs/references/smithers/packages/gateway-client/src/GatewayRpcTypeMap.ts @@ -26,7 +26,7 @@ import type { SubmitApprovalResponse, SubmitSignalRequest, GetRunRequest, -} from "@smithers-orchestrator/gateway/rpc"; +} from "@smthrs/gateway/rpc"; export type GatewayRpcRequestMap = { launchRun: LaunchRunRequest; diff --git a/docs/references/smithers/packages/gateway-client/src/SmithersGatewayClient.ts b/docs/references/smithers/packages/gateway-client/src/SmithersGatewayClient.ts index 6b36ae110..f10b8d809 100644 --- a/docs/references/smithers/packages/gateway-client/src/SmithersGatewayClient.ts +++ b/docs/references/smithers/packages/gateway-client/src/SmithersGatewayClient.ts @@ -1,4 +1,4 @@ -import type { GatewayRpcMethod } from "@smithers-orchestrator/gateway/rpc"; +import type { GatewayRpcMethod } from "@smthrs/gateway/rpc"; import { GatewayRpcError } from "./GatewayRpcError.ts"; import type { GatewayEventFrame } from "./GatewayEventFrame.ts"; import type { GatewayResponseFrame } from "./GatewayResponseFrame.ts"; diff --git a/docs/references/smithers/packages/gateway-client/src/SmithersGatewayConnection.ts b/docs/references/smithers/packages/gateway-client/src/SmithersGatewayConnection.ts index 176da2f61..ef849d8f2 100644 --- a/docs/references/smithers/packages/gateway-client/src/SmithersGatewayConnection.ts +++ b/docs/references/smithers/packages/gateway-client/src/SmithersGatewayConnection.ts @@ -1,4 +1,4 @@ -import type { GatewayRpcMethod } from "@smithers-orchestrator/gateway/rpc"; +import type { GatewayRpcMethod } from "@smthrs/gateway/rpc"; import { GatewayRpcError } from "./GatewayRpcError.ts"; import type { GatewayEventFrame } from "./GatewayEventFrame.ts"; import type { GatewayResponseFrame } from "./GatewayResponseFrame.ts"; diff --git a/docs/references/smithers/packages/gateway-client/src/index.ts b/docs/references/smithers/packages/gateway-client/src/index.ts index 00591474e..9a52ad9c2 100644 --- a/docs/references/smithers/packages/gateway-client/src/index.ts +++ b/docs/references/smithers/packages/gateway-client/src/index.ts @@ -29,7 +29,7 @@ export type { // Declarative sync SDK: typed cache keys, vanilla cache + subscription hub, and // the gateway-backed transport wiring. The React surface lives in -// `@smithers-orchestrator/gateway-react` so the core stays framework-free. +// `@smthrs/gateway-react` so the core stays framework-free. export { SyncCache } from "./sync/SyncCache.ts"; export type { SyncCacheEntry, SyncCacheOptions, SyncCacheStatus } from "./sync/SyncCache.ts"; export { SyncClient } from "./sync/SyncClient.ts"; diff --git a/docs/references/smithers/packages/gateway-react/package.json b/docs/references/smithers/packages/gateway-react/package.json index 2541d91ea..61e2af6d0 100644 --- a/docs/references/smithers/packages/gateway-react/package.json +++ b/docs/references/smithers/packages/gateway-react/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/gateway-react", + "name": "@smthrs/gateway-react", "version": "0.23.0", "description": "React hooks and root helpers for Smithers Gateway UIs", "type": "module", @@ -25,8 +25,8 @@ "test": "bun test tests" }, "dependencies": { - "@smithers-orchestrator/gateway": "workspace:*", - "@smithers-orchestrator/gateway-client": "workspace:*" + "@smthrs/gateway": "^0.33.0", + "@smthrs/gateway-client": "^0.33.0" }, "peerDependencies": { "react": "^19.0.0", diff --git a/docs/references/smithers/packages/gateway-react/src/SmithersGatewayContext.ts b/docs/references/smithers/packages/gateway-react/src/SmithersGatewayContext.ts index e9e37d972..314d27a64 100644 --- a/docs/references/smithers/packages/gateway-react/src/SmithersGatewayContext.ts +++ b/docs/references/smithers/packages/gateway-react/src/SmithersGatewayContext.ts @@ -1,4 +1,4 @@ import { createContext } from "react"; -import type { SmithersGatewayClient } from "@smithers-orchestrator/gateway-client"; +import type { SmithersGatewayClient } from "@smthrs/gateway-client"; export const SmithersGatewayContext = createContext<SmithersGatewayClient | null>(null); diff --git a/docs/references/smithers/packages/gateway-react/src/SmithersGatewayProvider.ts b/docs/references/smithers/packages/gateway-react/src/SmithersGatewayProvider.ts index 9e2069537..b620802a8 100644 --- a/docs/references/smithers/packages/gateway-react/src/SmithersGatewayProvider.ts +++ b/docs/references/smithers/packages/gateway-react/src/SmithersGatewayProvider.ts @@ -1,5 +1,5 @@ import { createElement, useMemo, type ReactNode } from "react"; -import { SmithersGatewayClient, type SmithersGatewayClientOptions } from "@smithers-orchestrator/gateway-client"; +import { SmithersGatewayClient, type SmithersGatewayClientOptions } from "@smthrs/gateway-client"; import { SmithersGatewayContext } from "./SmithersGatewayContext.ts"; export function SmithersGatewayProvider(props: { diff --git a/docs/references/smithers/packages/gateway-react/src/createGatewayReactRoot.ts b/docs/references/smithers/packages/gateway-react/src/createGatewayReactRoot.ts index 21d87c701..29bd4beeb 100644 --- a/docs/references/smithers/packages/gateway-react/src/createGatewayReactRoot.ts +++ b/docs/references/smithers/packages/gateway-react/src/createGatewayReactRoot.ts @@ -1,6 +1,6 @@ import { createElement, type ReactElement } from "react"; import { createRoot } from "react-dom/client"; -import { SmithersGatewayClient, type SmithersGatewayClientOptions } from "@smithers-orchestrator/gateway-client"; +import { SmithersGatewayClient, type SmithersGatewayClientOptions } from "@smthrs/gateway-client"; import { SmithersGatewayProvider } from "./SmithersGatewayProvider.ts"; export function createGatewayReactRoot( diff --git a/docs/references/smithers/packages/gateway-react/src/index.d.ts b/docs/references/smithers/packages/gateway-react/src/index.d.ts index d6741c371..8f395d98b 100644 --- a/docs/references/smithers/packages/gateway-react/src/index.d.ts +++ b/docs/references/smithers/packages/gateway-react/src/index.d.ts @@ -1,9 +1,9 @@ import * as react from 'react'; import { ReactNode, ReactElement } from 'react'; -import * as _smithers_orchestrator_gateway_client from '@smithers-orchestrator/gateway-client'; -import { SmithersGatewayClient, SmithersGatewayClientOptions, GatewayRpcParams, GatewayRpcPayload, GatewayEventFrame } from '@smithers-orchestrator/gateway-client'; -import * as _smithers_orchestrator_gateway_rpc from '@smithers-orchestrator/gateway/rpc'; -import { ListApprovalsRequest, GatewayRpcMethod, ListRunsRequest, ListWorkflowsRequest } from '@smithers-orchestrator/gateway/rpc'; +import * as _smithers_orchestrator_gateway_client from '@smthrs/gateway-client'; +import { SmithersGatewayClient, SmithersGatewayClientOptions, GatewayRpcParams, GatewayRpcPayload, GatewayEventFrame } from '@smthrs/gateway-client'; +import * as _smithers_orchestrator_gateway_rpc from '@smthrs/gateway/rpc'; +import { ListApprovalsRequest, GatewayRpcMethod, ListRunsRequest, ListWorkflowsRequest } from '@smthrs/gateway/rpc'; declare function createGatewayReactRoot(element: ReactElement, options?: SmithersGatewayClientOptions & { rootId?: string; diff --git a/docs/references/smithers/packages/gateway-react/src/index.ts b/docs/references/smithers/packages/gateway-react/src/index.ts index 57a14464c..4b2818240 100644 --- a/docs/references/smithers/packages/gateway-react/src/index.ts +++ b/docs/references/smithers/packages/gateway-react/src/index.ts @@ -16,7 +16,7 @@ export { useGatewayExtensionStream, type GatewayExtensionStreamState } from "./u export type { GatewayAsyncState } from "./GatewayAsyncState.ts"; // Declarative sync SDK React surface. The vanilla core lives in -// `@smithers-orchestrator/gateway-client`; this layer adds the React context, +// `@smthrs/gateway-client`; this layer adds the React context, // provider, and hooks (`useSyncQuery` / `useSyncMutation` / `useSyncSubscription` // + typed gateway shortcuts) backed by `useSyncExternalStore`. export { SyncContext } from "./sync/SyncContext.ts"; diff --git a/docs/references/smithers/packages/gateway-react/src/sync/SyncContext.ts b/docs/references/smithers/packages/gateway-react/src/sync/SyncContext.ts index 55ec6fda7..5aba7615e 100644 --- a/docs/references/smithers/packages/gateway-react/src/sync/SyncContext.ts +++ b/docs/references/smithers/packages/gateway-react/src/sync/SyncContext.ts @@ -1,5 +1,5 @@ import { createContext } from "react"; -import type { SyncClient } from "@smithers-orchestrator/gateway-client"; +import type { SyncClient } from "@smthrs/gateway-client"; /** * The React context that hands a `SyncClient` to every hook. The default is diff --git a/docs/references/smithers/packages/gateway-react/src/sync/SyncProvider.ts b/docs/references/smithers/packages/gateway-react/src/sync/SyncProvider.ts index 03a3bfd0f..8e2b2b7b2 100644 --- a/docs/references/smithers/packages/gateway-react/src/sync/SyncProvider.ts +++ b/docs/references/smithers/packages/gateway-react/src/sync/SyncProvider.ts @@ -1,5 +1,5 @@ import { createElement, type ReactNode } from "react"; -import type { SyncClient } from "@smithers-orchestrator/gateway-client"; +import type { SyncClient } from "@smthrs/gateway-client"; import { SyncContext } from "./SyncContext.ts"; /** diff --git a/docs/references/smithers/packages/gateway-react/src/sync/useGatewayMutation.ts b/docs/references/smithers/packages/gateway-react/src/sync/useGatewayMutation.ts index 462ac1d7b..1076f1672 100644 --- a/docs/references/smithers/packages/gateway-react/src/sync/useGatewayMutation.ts +++ b/docs/references/smithers/packages/gateway-react/src/sync/useGatewayMutation.ts @@ -1,5 +1,5 @@ import { useMemo } from "react"; -import type { SyncMutationOptions } from "@smithers-orchestrator/gateway-client"; +import type { SyncMutationOptions } from "@smthrs/gateway-client"; import { useSyncClient } from "./useSyncClient.ts"; import { useSyncMutation, type UseSyncMutationResult } from "./useSyncMutation.ts"; diff --git a/docs/references/smithers/packages/gateway-react/src/sync/useGatewayQuery.ts b/docs/references/smithers/packages/gateway-react/src/sync/useGatewayQuery.ts index 8414e60c8..05b6ea901 100644 --- a/docs/references/smithers/packages/gateway-react/src/sync/useGatewayQuery.ts +++ b/docs/references/smithers/packages/gateway-react/src/sync/useGatewayQuery.ts @@ -1,5 +1,5 @@ import { useMemo } from "react"; -import { syncKeyFingerprint, type SyncKey } from "@smithers-orchestrator/gateway-client"; +import { syncKeyFingerprint, type SyncKey } from "@smthrs/gateway-client"; import { useSyncClient } from "./useSyncClient.ts"; import { useSyncQuery, type UseSyncQueryOptions, type UseSyncQueryResult } from "./useSyncQuery.ts"; diff --git a/docs/references/smithers/packages/gateway-react/src/sync/useGatewayRunStream.ts b/docs/references/smithers/packages/gateway-react/src/sync/useGatewayRunStream.ts index 7769d479a..a65165ed1 100644 --- a/docs/references/smithers/packages/gateway-react/src/sync/useGatewayRunStream.ts +++ b/docs/references/smithers/packages/gateway-react/src/sync/useGatewayRunStream.ts @@ -1,5 +1,5 @@ import { useMemo } from "react"; -import { gatewayKeys } from "@smithers-orchestrator/gateway-client"; +import { gatewayKeys } from "@smthrs/gateway-client"; import { useSyncSubscription, type UseSyncSubscriptionResult } from "./useSyncSubscription.ts"; /** diff --git a/docs/references/smithers/packages/gateway-react/src/sync/useSyncClient.ts b/docs/references/smithers/packages/gateway-react/src/sync/useSyncClient.ts index 411cea0b7..3745bd9ea 100644 --- a/docs/references/smithers/packages/gateway-react/src/sync/useSyncClient.ts +++ b/docs/references/smithers/packages/gateway-react/src/sync/useSyncClient.ts @@ -1,5 +1,5 @@ import { useContext } from "react"; -import type { SyncClient } from "@smithers-orchestrator/gateway-client"; +import type { SyncClient } from "@smthrs/gateway-client"; import { SyncContext } from "./SyncContext.ts"; /** diff --git a/docs/references/smithers/packages/gateway-react/src/sync/useSyncMutation.ts b/docs/references/smithers/packages/gateway-react/src/sync/useSyncMutation.ts index e7d2833db..57eb1d798 100644 --- a/docs/references/smithers/packages/gateway-react/src/sync/useSyncMutation.ts +++ b/docs/references/smithers/packages/gateway-react/src/sync/useSyncMutation.ts @@ -1,5 +1,5 @@ import { useCallback, useRef, useSyncExternalStore } from "react"; -import type { SyncMutationOptions } from "@smithers-orchestrator/gateway-client"; +import type { SyncMutationOptions } from "@smthrs/gateway-client"; import { useSyncClient } from "./useSyncClient.ts"; /** diff --git a/docs/references/smithers/packages/gateway-react/src/sync/useSyncQuery.ts b/docs/references/smithers/packages/gateway-react/src/sync/useSyncQuery.ts index e3eba373f..27498e80e 100644 --- a/docs/references/smithers/packages/gateway-react/src/sync/useSyncQuery.ts +++ b/docs/references/smithers/packages/gateway-react/src/sync/useSyncQuery.ts @@ -1,5 +1,5 @@ import { useCallback, useMemo, useRef, useSyncExternalStore } from "react"; -import { syncKeyFingerprint, type SyncKey } from "@smithers-orchestrator/gateway-client"; +import { syncKeyFingerprint, type SyncKey } from "@smthrs/gateway-client"; import { useSyncClient } from "./useSyncClient.ts"; /** diff --git a/docs/references/smithers/packages/gateway-react/src/sync/useSyncSubscription.ts b/docs/references/smithers/packages/gateway-react/src/sync/useSyncSubscription.ts index 08b85d9f4..1557b69fa 100644 --- a/docs/references/smithers/packages/gateway-react/src/sync/useSyncSubscription.ts +++ b/docs/references/smithers/packages/gateway-react/src/sync/useSyncSubscription.ts @@ -1,5 +1,5 @@ import { useCallback, useMemo, useRef, useSyncExternalStore } from "react"; -import { syncKeyFingerprint, type SyncKey, type SyncStreamFrame } from "@smithers-orchestrator/gateway-client"; +import { syncKeyFingerprint, type SyncKey, type SyncStreamFrame } from "@smthrs/gateway-client"; import { useSyncClient } from "./useSyncClient.ts"; /** diff --git a/docs/references/smithers/packages/gateway-react/src/useGatewayApprovals.ts b/docs/references/smithers/packages/gateway-react/src/useGatewayApprovals.ts index a5182cbec..cf8365722 100644 --- a/docs/references/smithers/packages/gateway-react/src/useGatewayApprovals.ts +++ b/docs/references/smithers/packages/gateway-react/src/useGatewayApprovals.ts @@ -1,4 +1,4 @@ -import type { ListApprovalsRequest } from "@smithers-orchestrator/gateway/rpc"; +import type { ListApprovalsRequest } from "@smthrs/gateway/rpc"; import { useGatewayRpc } from "./useGatewayRpc.ts"; export function useGatewayApprovals(params: ListApprovalsRequest = {}) { diff --git a/docs/references/smithers/packages/gateway-react/src/useGatewayExtensionStream.ts b/docs/references/smithers/packages/gateway-react/src/useGatewayExtensionStream.ts index 659a23149..d1721566d 100644 --- a/docs/references/smithers/packages/gateway-react/src/useGatewayExtensionStream.ts +++ b/docs/references/smithers/packages/gateway-react/src/useGatewayExtensionStream.ts @@ -1,5 +1,5 @@ import { useEffect, useMemo, useState } from "react"; -import { gatewayBackoffDelay, type GatewayBackoffOptions } from "@smithers-orchestrator/gateway-client"; +import { gatewayBackoffDelay, type GatewayBackoffOptions } from "@smthrs/gateway-client"; import { useSmithersGateway } from "./useSmithersGateway.ts"; const DEFAULT_MAX_FRAMES = 1000; diff --git a/docs/references/smithers/packages/gateway-react/src/useGatewayRpc.ts b/docs/references/smithers/packages/gateway-react/src/useGatewayRpc.ts index c72c51846..93d058237 100644 --- a/docs/references/smithers/packages/gateway-react/src/useGatewayRpc.ts +++ b/docs/references/smithers/packages/gateway-react/src/useGatewayRpc.ts @@ -1,6 +1,6 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react"; -import type { GatewayRpcMethod } from "@smithers-orchestrator/gateway/rpc"; -import type { GatewayRpcParams, GatewayRpcPayload } from "@smithers-orchestrator/gateway-client"; +import type { GatewayRpcMethod } from "@smthrs/gateway/rpc"; +import type { GatewayRpcParams, GatewayRpcPayload } from "@smthrs/gateway-client"; import { useSmithersGateway } from "./useSmithersGateway.ts"; import type { GatewayAsyncState } from "./GatewayAsyncState.ts"; diff --git a/docs/references/smithers/packages/gateway-react/src/useGatewayRunEvents.ts b/docs/references/smithers/packages/gateway-react/src/useGatewayRunEvents.ts index 94bf35259..c47f9e48b 100644 --- a/docs/references/smithers/packages/gateway-react/src/useGatewayRunEvents.ts +++ b/docs/references/smithers/packages/gateway-react/src/useGatewayRunEvents.ts @@ -1,5 +1,5 @@ import { useEffect, useState } from "react"; -import type { GatewayEventFrame } from "@smithers-orchestrator/gateway-client"; +import type { GatewayEventFrame } from "@smthrs/gateway-client"; import { useSmithersGateway } from "./useSmithersGateway.ts"; const DEFAULT_MAX_EVENTS = 1000; diff --git a/docs/references/smithers/packages/gateway-react/src/useGatewayRuns.ts b/docs/references/smithers/packages/gateway-react/src/useGatewayRuns.ts index 0ae6e0e11..689d947e3 100644 --- a/docs/references/smithers/packages/gateway-react/src/useGatewayRuns.ts +++ b/docs/references/smithers/packages/gateway-react/src/useGatewayRuns.ts @@ -1,4 +1,4 @@ -import type { ListRunsRequest } from "@smithers-orchestrator/gateway/rpc"; +import type { ListRunsRequest } from "@smthrs/gateway/rpc"; import { useGatewayRpc } from "./useGatewayRpc.ts"; export function useGatewayRuns(params: ListRunsRequest = {}) { diff --git a/docs/references/smithers/packages/gateway-react/src/useGatewayWorkflows.ts b/docs/references/smithers/packages/gateway-react/src/useGatewayWorkflows.ts index 1094ecaa0..643d86c65 100644 --- a/docs/references/smithers/packages/gateway-react/src/useGatewayWorkflows.ts +++ b/docs/references/smithers/packages/gateway-react/src/useGatewayWorkflows.ts @@ -1,4 +1,4 @@ -import type { ListWorkflowsRequest } from "@smithers-orchestrator/gateway/rpc"; +import type { ListWorkflowsRequest } from "@smthrs/gateway/rpc"; import { useGatewayRpc } from "./useGatewayRpc.ts"; export function useGatewayWorkflows(params: ListWorkflowsRequest = {}) { diff --git a/docs/references/smithers/packages/gateway-react/tests/SmithersGatewayProvider.test.ts b/docs/references/smithers/packages/gateway-react/tests/SmithersGatewayProvider.test.ts index 3991effe7..adfeaee0f 100644 --- a/docs/references/smithers/packages/gateway-react/tests/SmithersGatewayProvider.test.ts +++ b/docs/references/smithers/packages/gateway-react/tests/SmithersGatewayProvider.test.ts @@ -1,7 +1,7 @@ import { describe, expect, test } from "bun:test"; import { createElement } from "react"; import { renderToString } from "react-dom/server"; -import { SmithersGatewayClient } from "@smithers-orchestrator/gateway-client"; +import { SmithersGatewayClient } from "@smthrs/gateway-client"; import { SmithersGatewayProvider, useSmithersGateway } from "../src/index.ts"; function Probe() { diff --git a/docs/references/smithers/packages/gateway-react/tests/docsExamplesCompile.test.ts b/docs/references/smithers/packages/gateway-react/tests/docsExamplesCompile.test.ts index efcb42fbd..f3eb6ae8f 100644 --- a/docs/references/smithers/packages/gateway-react/tests/docsExamplesCompile.test.ts +++ b/docs/references/smithers/packages/gateway-react/tests/docsExamplesCompile.test.ts @@ -9,8 +9,8 @@ import { fileURLToPath } from "node:url"; // matching the real package types (e.g. `listApprovals` returning an array // instead of `{ approvals: [...] }`). We extract the first code block from the // MDX file, drop it into a temp project that aliases the same `paths` the docs -// snippets import (`smithers-orchestrator/gateway-react`, -// `smithers-orchestrator/gateway-client`), and shell out to `tsc --noEmit`. +// snippets import (`smthrs/gateway-react`, +// `smthrs/gateway-client`), and shell out to `tsc --noEmit`. // // If you update an example, run the test — a type error here means the snippet // no longer compiles against the real packages. @@ -50,8 +50,8 @@ function compile(opts: { jsx: opts.jsx ? "react-jsx" : undefined, baseUrl: REPO_ROOT, paths: { - "smithers-orchestrator/gateway-react": ["packages/gateway-react/src/index.ts"], - "smithers-orchestrator/gateway-client": ["packages/gateway-client/src/index.ts"], + "smthrs/gateway-react": ["packages/gateway-react/src/index.ts"], + "smthrs/gateway-client": ["packages/gateway-client/src/index.ts"], }, typeRoots: [resolve(REPO_ROOT, "node_modules", "@types")], }, diff --git a/docs/references/smithers/packages/gateway-react/tests/extension-hooks.test.ts b/docs/references/smithers/packages/gateway-react/tests/extension-hooks.test.ts index 88a3e1948..1a79ce1f3 100644 --- a/docs/references/smithers/packages/gateway-react/tests/extension-hooks.test.ts +++ b/docs/references/smithers/packages/gateway-react/tests/extension-hooks.test.ts @@ -11,7 +11,7 @@ try { GlobalRegistrator.register(); } catch { /* already registered */ } import { describe, expect, test } from "bun:test"; import { act, createElement, type ReactElement } from "react"; import { createRoot, type Root } from "react-dom/client"; -import type { SmithersGatewayClient } from "@smithers-orchestrator/gateway-client"; +import type { SmithersGatewayClient } from "@smthrs/gateway-client"; import { SmithersGatewayProvider, useGatewayExtensionAction, diff --git a/docs/references/smithers/packages/gateway-react/tests/gateway-react.test.ts b/docs/references/smithers/packages/gateway-react/tests/gateway-react.test.ts index 8a9664759..2985c1ec6 100644 --- a/docs/references/smithers/packages/gateway-react/tests/gateway-react.test.ts +++ b/docs/references/smithers/packages/gateway-react/tests/gateway-react.test.ts @@ -15,7 +15,7 @@ import { useGatewayWorkflows, useSmithersGateway, } from "../src/index.ts"; -import type { SmithersGatewayClient } from "@smithers-orchestrator/gateway-client"; +import type { SmithersGatewayClient } from "@smthrs/gateway-client"; function createSpyClient() { const calls: string[] = []; diff --git a/docs/references/smithers/packages/gateway-react/tests/gatewayReactBehavior.test.ts b/docs/references/smithers/packages/gateway-react/tests/gatewayReactBehavior.test.ts index e81c71a8e..67855f659 100644 --- a/docs/references/smithers/packages/gateway-react/tests/gatewayReactBehavior.test.ts +++ b/docs/references/smithers/packages/gateway-react/tests/gatewayReactBehavior.test.ts @@ -11,8 +11,8 @@ try { GlobalRegistrator.register(); } catch { /* already registered */ } import { describe, expect, test } from "bun:test"; import { act, createElement, useEffect, useState, type ReactElement } from "react"; import { createRoot, type Root } from "react-dom/client"; -import type { GatewayEventFrame, SmithersGatewayClient } from "@smithers-orchestrator/gateway-client"; -import { SmithersGatewayClient as RealSmithersGatewayClient } from "@smithers-orchestrator/gateway-client"; +import type { GatewayEventFrame, SmithersGatewayClient } from "@smthrs/gateway-client"; +import { SmithersGatewayClient as RealSmithersGatewayClient } from "@smthrs/gateway-client"; import { SmithersGatewayContext, SmithersGatewayProvider, diff --git a/docs/references/smithers/packages/gateway-react/tests/sync/sync.test.ts b/docs/references/smithers/packages/gateway-react/tests/sync/sync.test.ts index f962be8c6..1ef28926b 100644 --- a/docs/references/smithers/packages/gateway-react/tests/sync/sync.test.ts +++ b/docs/references/smithers/packages/gateway-react/tests/sync/sync.test.ts @@ -18,7 +18,7 @@ import { type SyncStreamFrame, type SyncStreamOptions, type SyncTransport, -} from "@smithers-orchestrator/gateway-client"; +} from "@smthrs/gateway-client"; import { SyncProvider, useGatewayQuery, diff --git a/docs/references/smithers/packages/gateway/package.json b/docs/references/smithers/packages/gateway/package.json index 7da729de4..3062795ab 100644 --- a/docs/references/smithers/packages/gateway/package.json +++ b/docs/references/smithers/packages/gateway/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/gateway", + "name": "@smthrs/gateway", "version": "0.23.0", "description": "Stable Smithers Gateway RPC contracts, auth scopes, and deployment metadata", "type": "module", diff --git a/docs/references/smithers/packages/gateway/scripts/generate-openapi.ts b/docs/references/smithers/packages/gateway/scripts/generate-openapi.ts index e1fd8b486..3d2c443d1 100644 --- a/docs/references/smithers/packages/gateway/scripts/generate-openapi.ts +++ b/docs/references/smithers/packages/gateway/scripts/generate-openapi.ts @@ -255,7 +255,7 @@ const rendered = `${toYaml(buildOpenApiDocument())}\n`; if (process.argv.includes("--check")) { const current = readFileSync(outPath, "utf8"); if (current !== rendered) { - console.error("packages/gateway/openapi.yaml is out of date. Run `pnpm --filter @smithers-orchestrator/gateway generate:openapi`."); + console.error("packages/gateway/openapi.yaml is out of date. Run `pnpm --filter @smthrs/gateway generate:openapi`."); process.exit(1); } process.exit(0); diff --git a/docs/references/smithers/packages/graph/package.json b/docs/references/smithers/packages/graph/package.json index f9e712afb..399b9aef4 100644 --- a/docs/references/smithers/packages/graph/package.json +++ b/docs/references/smithers/packages/graph/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/graph", + "name": "@smthrs/graph", "version": "0.23.0", "description": "Framework-neutral Smithers workflow graph model and extraction helpers", "type": "module", @@ -25,7 +25,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@smithers-orchestrator/errors": "workspace:*", + "@smthrs/errors": "^0.33.0", "drizzle-orm": "^0.45.2", "zod": "^4.3.6" }, diff --git a/docs/references/smithers/packages/graph/src/dom/extract.js b/docs/references/smithers/packages/graph/src/dom/extract.js index 417254848..4db198b25 100644 --- a/docs/references/smithers/packages/graph/src/dom/extract.js +++ b/docs/references/smithers/packages/graph/src/dom/extract.js @@ -3,11 +3,11 @@ /** @typedef {import("../HostText.ts").HostText} HostText */ // @smithers-type-exports-end -import { resolveStableId } from "@smithers-orchestrator/graph/utils/tree-ids"; +import { resolveStableId } from "@smthrs/graph/utils/tree-ids"; import { isAbsolute, resolve as resolvePath } from "node:path"; import { getTableName } from "drizzle-orm"; -import { DEFAULT_MERGE_QUEUE_CONCURRENCY, WORKTREE_EMPTY_PATH_ERROR, } from "@smithers-orchestrator/graph/constants"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { DEFAULT_MERGE_QUEUE_CONCURRENCY, WORKTREE_EMPTY_PATH_ERROR, } from "@smthrs/graph/constants"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** @typedef {import("../ExtractOptions.ts").ExtractOptions} ExtractOptions */ /** @typedef {import("../ExtractResult.ts").ExtractResult} ExtractResult */ @@ -15,7 +15,7 @@ import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; /** @typedef {import("../XmlNode.ts").XmlNode} XmlNode */ // TODO(migration): Delegate extractFromHost to -// @smithers-orchestrator/graph.extractGraph once core extraction reaches full +// @smthrs/graph.extractGraph once core extraction reaches full // legacy parity. Current blockers: // - <Subflow> and <Sandbox> descriptors here attach runtime computeFn handlers // that call executeChildWorkflow/executeSandbox; core extractGraph currently @@ -334,7 +334,7 @@ export function extractFromHost(root, opts) { prompt: undefined, staticPayload: undefined, computeFn: async () => { - const { executeChildWorkflow } = await loadRuntimeModule("@smithers-orchestrator/engine/child-workflow"); + const { executeChildWorkflow } = await loadRuntimeModule("@smthrs/engine/child-workflow"); const result = await executeChildWorkflow(undefined, { workflow: raw.__smithersSubflowWorkflow, input: raw.__smithersSubflowInput, @@ -434,9 +434,9 @@ export function extractFromHost(root, opts) { { executeChildWorkflow }, { applyDiffBundle }, ] = await Promise.all([ - loadRuntimeModule("@smithers-orchestrator/sandbox/execute"), - loadRuntimeModule("@smithers-orchestrator/engine/child-workflow"), - loadRuntimeModule("@smithers-orchestrator/engine/effect/diff-bundle"), + loadRuntimeModule("@smthrs/sandbox/execute"), + loadRuntimeModule("@smthrs/engine/child-workflow"), + loadRuntimeModule("@smthrs/engine/effect/diff-bundle"), ]); if (!workflowDef) { throw new SmithersError("INVALID_INPUT", `Sandbox ${nodeId} is missing workflow definition.`, { nodeId }); diff --git a/docs/references/smithers/packages/graph/src/extract.js b/docs/references/smithers/packages/graph/src/extract.js index 64d0c4435..c9fe0d6b2 100644 --- a/docs/references/smithers/packages/graph/src/extract.js +++ b/docs/references/smithers/packages/graph/src/extract.js @@ -1,6 +1,6 @@ import { isAbsolute, resolve as resolvePath } from "node:path"; import { getTableName } from "drizzle-orm"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { validateForkSources } from "./validateForkSources.js"; /** @typedef {import("./TaskDescriptor.ts").TaskDescriptor} TaskDescriptor */ /** @typedef {import("./XmlNode.ts").XmlNode} XmlNode */ diff --git a/docs/references/smithers/packages/graph/src/validateForkSources.js b/docs/references/smithers/packages/graph/src/validateForkSources.js index 394952d78..55f1a7621 100644 --- a/docs/references/smithers/packages/graph/src/validateForkSources.js +++ b/docs/references/smithers/packages/graph/src/validateForkSources.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** @typedef {import("./TaskDescriptor.ts").TaskDescriptor} TaskDescriptor */ diff --git a/docs/references/smithers/packages/graph/tests/dom-extract.test.jsx b/docs/references/smithers/packages/graph/tests/dom-extract.test.jsx index 7202495f5..54e82b06e 100644 --- a/docs/references/smithers/packages/graph/tests/dom-extract.test.jsx +++ b/docs/references/smithers/packages/graph/tests/dom-extract.test.jsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { extractFromHost, } from "../src/dom/extract.js"; import { z } from "zod"; diff --git a/docs/references/smithers/packages/graph/tests/extract-output-drizzle.test.jsx b/docs/references/smithers/packages/graph/tests/extract-output-drizzle.test.jsx index 991266153..c003c3623 100644 --- a/docs/references/smithers/packages/graph/tests/extract-output-drizzle.test.jsx +++ b/docs/references/smithers/packages/graph/tests/extract-output-drizzle.test.jsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { sqliteTable, text } from "drizzle-orm/sqlite-core"; import { extractGraph } from "../src/extract.js"; diff --git a/docs/references/smithers/packages/graph/tests/extract.test.jsx b/docs/references/smithers/packages/graph/tests/extract.test.jsx index b67567068..1534f1880 100644 --- a/docs/references/smithers/packages/graph/tests/extract.test.jsx +++ b/docs/references/smithers/packages/graph/tests/extract.test.jsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { sqliteTable, text } from "drizzle-orm/sqlite-core"; import { z } from "zod"; diff --git a/docs/references/smithers/packages/jj-darwin-arm64/README.md b/docs/references/smithers/packages/jj-darwin-arm64/README.md index fe08dd760..2962bdc1f 100644 --- a/docs/references/smithers/packages/jj-darwin-arm64/README.md +++ b/docs/references/smithers/packages/jj-darwin-arm64/README.md @@ -1,7 +1,7 @@ -# @smithers-orchestrator/jj-darwin-arm64 +# @smthrs/jj-darwin-arm64 The [jj (Jujutsu)](https://github.com/jj-vcs/jj) binary for `darwin-arm64`, vendored so Smithers works without a system jj install. -`@smithers-orchestrator/vcs` lists this as an `optionalDependency`; your package manager installs only the package matching your platform. `resolveJjBinary()` finds the binary here, falling back to a system `jj` on `PATH` when no bundled package is present. +`@smthrs/vcs` lists this as an `optionalDependency`; your package manager installs only the package matching your platform. `resolveJjBinary()` finds the binary here, falling back to a system `jj` on `PATH` when no bundled package is present. The binary is built and released by the upstream Jujutsu project under the Apache-2.0 license. It is downloaded into `bin/` at release time by `pnpm fetch:jj`; it is not committed to the repository. diff --git a/docs/references/smithers/packages/jj-darwin-arm64/package.json b/docs/references/smithers/packages/jj-darwin-arm64/package.json index caab2d262..8b9a7a064 100644 --- a/docs/references/smithers/packages/jj-darwin-arm64/package.json +++ b/docs/references/smithers/packages/jj-darwin-arm64/package.json @@ -1,7 +1,7 @@ { - "name": "@smithers-orchestrator/jj-darwin-arm64", + "name": "@smthrs/jj-darwin-arm64", "version": "0.23.0", - "description": "Vendored jj (Jujutsu) binary for darwin-arm64, used by @smithers-orchestrator/vcs. Installed automatically as an optional dependency; not meant to be depended on directly.", + "description": "Vendored jj (Jujutsu) binary for darwin-arm64, used by @smthrs/vcs. Installed automatically as an optional dependency; not meant to be depended on directly.", "license": "Apache-2.0", "os": [ "darwin" diff --git a/docs/references/smithers/packages/jj-darwin-x64/README.md b/docs/references/smithers/packages/jj-darwin-x64/README.md index aca6ac7eb..71eb99d58 100644 --- a/docs/references/smithers/packages/jj-darwin-x64/README.md +++ b/docs/references/smithers/packages/jj-darwin-x64/README.md @@ -1,7 +1,7 @@ -# @smithers-orchestrator/jj-darwin-x64 +# @smthrs/jj-darwin-x64 The [jj (Jujutsu)](https://github.com/jj-vcs/jj) binary for `darwin-x64`, vendored so Smithers works without a system jj install. -`@smithers-orchestrator/vcs` lists this as an `optionalDependency`; your package manager installs only the package matching your platform. `resolveJjBinary()` finds the binary here, falling back to a system `jj` on `PATH` when no bundled package is present. +`@smthrs/vcs` lists this as an `optionalDependency`; your package manager installs only the package matching your platform. `resolveJjBinary()` finds the binary here, falling back to a system `jj` on `PATH` when no bundled package is present. The binary is built and released by the upstream Jujutsu project under the Apache-2.0 license. It is downloaded into `bin/` at release time by `pnpm fetch:jj`; it is not committed to the repository. diff --git a/docs/references/smithers/packages/jj-darwin-x64/package.json b/docs/references/smithers/packages/jj-darwin-x64/package.json index 8e9a4e76a..afd1c5d2f 100644 --- a/docs/references/smithers/packages/jj-darwin-x64/package.json +++ b/docs/references/smithers/packages/jj-darwin-x64/package.json @@ -1,7 +1,7 @@ { - "name": "@smithers-orchestrator/jj-darwin-x64", + "name": "@smthrs/jj-darwin-x64", "version": "0.23.0", - "description": "Vendored jj (Jujutsu) binary for darwin-x64, used by @smithers-orchestrator/vcs. Installed automatically as an optional dependency; not meant to be depended on directly.", + "description": "Vendored jj (Jujutsu) binary for darwin-x64, used by @smthrs/vcs. Installed automatically as an optional dependency; not meant to be depended on directly.", "license": "Apache-2.0", "os": [ "darwin" diff --git a/docs/references/smithers/packages/jj-linux-arm64/README.md b/docs/references/smithers/packages/jj-linux-arm64/README.md index 358c2b990..23a5f1fc5 100644 --- a/docs/references/smithers/packages/jj-linux-arm64/README.md +++ b/docs/references/smithers/packages/jj-linux-arm64/README.md @@ -1,7 +1,7 @@ -# @smithers-orchestrator/jj-linux-arm64 +# @smthrs/jj-linux-arm64 The [jj (Jujutsu)](https://github.com/jj-vcs/jj) binary for `linux-arm64`, vendored so Smithers works without a system jj install. -`@smithers-orchestrator/vcs` lists this as an `optionalDependency`; your package manager installs only the package matching your platform. `resolveJjBinary()` finds the binary here, falling back to a system `jj` on `PATH` when no bundled package is present. +`@smthrs/vcs` lists this as an `optionalDependency`; your package manager installs only the package matching your platform. `resolveJjBinary()` finds the binary here, falling back to a system `jj` on `PATH` when no bundled package is present. The binary is built and released by the upstream Jujutsu project under the Apache-2.0 license. It is downloaded into `bin/` at release time by `pnpm fetch:jj`; it is not committed to the repository. diff --git a/docs/references/smithers/packages/jj-linux-arm64/package.json b/docs/references/smithers/packages/jj-linux-arm64/package.json index 8ab358d6a..bac95944e 100644 --- a/docs/references/smithers/packages/jj-linux-arm64/package.json +++ b/docs/references/smithers/packages/jj-linux-arm64/package.json @@ -1,7 +1,7 @@ { - "name": "@smithers-orchestrator/jj-linux-arm64", + "name": "@smthrs/jj-linux-arm64", "version": "0.23.0", - "description": "Vendored jj (Jujutsu) binary for linux-arm64, used by @smithers-orchestrator/vcs. Installed automatically as an optional dependency; not meant to be depended on directly.", + "description": "Vendored jj (Jujutsu) binary for linux-arm64, used by @smthrs/vcs. Installed automatically as an optional dependency; not meant to be depended on directly.", "license": "Apache-2.0", "os": [ "linux" diff --git a/docs/references/smithers/packages/jj-linux-x64/README.md b/docs/references/smithers/packages/jj-linux-x64/README.md index e6fb682c4..548d8ed2a 100644 --- a/docs/references/smithers/packages/jj-linux-x64/README.md +++ b/docs/references/smithers/packages/jj-linux-x64/README.md @@ -1,7 +1,7 @@ -# @smithers-orchestrator/jj-linux-x64 +# @smthrs/jj-linux-x64 The [jj (Jujutsu)](https://github.com/jj-vcs/jj) binary for `linux-x64`, vendored so Smithers works without a system jj install. -`@smithers-orchestrator/vcs` lists this as an `optionalDependency`; your package manager installs only the package matching your platform. `resolveJjBinary()` finds the binary here, falling back to a system `jj` on `PATH` when no bundled package is present. +`@smthrs/vcs` lists this as an `optionalDependency`; your package manager installs only the package matching your platform. `resolveJjBinary()` finds the binary here, falling back to a system `jj` on `PATH` when no bundled package is present. The binary is built and released by the upstream Jujutsu project under the Apache-2.0 license. It is downloaded into `bin/` at release time by `pnpm fetch:jj`; it is not committed to the repository. diff --git a/docs/references/smithers/packages/jj-linux-x64/package.json b/docs/references/smithers/packages/jj-linux-x64/package.json index d81578247..ea0ce6a4f 100644 --- a/docs/references/smithers/packages/jj-linux-x64/package.json +++ b/docs/references/smithers/packages/jj-linux-x64/package.json @@ -1,7 +1,7 @@ { - "name": "@smithers-orchestrator/jj-linux-x64", + "name": "@smthrs/jj-linux-x64", "version": "0.23.0", - "description": "Vendored jj (Jujutsu) binary for linux-x64, used by @smithers-orchestrator/vcs. Installed automatically as an optional dependency; not meant to be depended on directly.", + "description": "Vendored jj (Jujutsu) binary for linux-x64, used by @smthrs/vcs. Installed automatically as an optional dependency; not meant to be depended on directly.", "license": "Apache-2.0", "os": [ "linux" diff --git a/docs/references/smithers/packages/jj-win32-x64/README.md b/docs/references/smithers/packages/jj-win32-x64/README.md index 2984539ea..3692d8b17 100644 --- a/docs/references/smithers/packages/jj-win32-x64/README.md +++ b/docs/references/smithers/packages/jj-win32-x64/README.md @@ -1,7 +1,7 @@ -# @smithers-orchestrator/jj-win32-x64 +# @smthrs/jj-win32-x64 The [jj (Jujutsu)](https://github.com/jj-vcs/jj) binary for `win32-x64`, vendored so Smithers works without a system jj install. -`@smithers-orchestrator/vcs` lists this as an `optionalDependency`; your package manager installs only the package matching your platform. `resolveJjBinary()` finds the binary here, falling back to a system `jj` on `PATH` when no bundled package is present. +`@smthrs/vcs` lists this as an `optionalDependency`; your package manager installs only the package matching your platform. `resolveJjBinary()` finds the binary here, falling back to a system `jj` on `PATH` when no bundled package is present. The binary is built and released by the upstream Jujutsu project under the Apache-2.0 license. It is downloaded into `bin/` at release time by `pnpm fetch:jj`; it is not committed to the repository. diff --git a/docs/references/smithers/packages/jj-win32-x64/package.json b/docs/references/smithers/packages/jj-win32-x64/package.json index 08dc50447..4a62bf588 100644 --- a/docs/references/smithers/packages/jj-win32-x64/package.json +++ b/docs/references/smithers/packages/jj-win32-x64/package.json @@ -1,7 +1,7 @@ { - "name": "@smithers-orchestrator/jj-win32-x64", + "name": "@smthrs/jj-win32-x64", "version": "0.23.0", - "description": "Vendored jj (Jujutsu) binary for win32-x64, used by @smithers-orchestrator/vcs. Installed automatically as an optional dependency; not meant to be depended on directly.", + "description": "Vendored jj (Jujutsu) binary for win32-x64, used by @smthrs/vcs. Installed automatically as an optional dependency; not meant to be depended on directly.", "license": "Apache-2.0", "os": [ "win32" diff --git a/docs/references/smithers/packages/memory/package.json b/docs/references/smithers/packages/memory/package.json index 9928a9613..74c0dcb40 100644 --- a/docs/references/smithers/packages/memory/package.json +++ b/docs/references/smithers/packages/memory/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/memory", + "name": "@smthrs/memory", "version": "0.23.0", "description": "Persistent and semantic memory services for Smithers", "type": "module", @@ -40,11 +40,11 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", + "@smthrs/db": "^0.33.0", + "@smthrs/errors": "^0.33.0", + "@smthrs/graph": "^0.33.0", + "@smthrs/observability": "^0.33.0", + "@smthrs/scheduler": "^0.33.0", "drizzle-orm": "^0.45.2", "effect": "^3.21.1", "zod": "^4.3.6" diff --git a/docs/references/smithers/packages/memory/src/MemoryProcessor.ts b/docs/references/smithers/packages/memory/src/MemoryProcessor.ts index 32e7500b1..51379f298 100644 --- a/docs/references/smithers/packages/memory/src/MemoryProcessor.ts +++ b/docs/references/smithers/packages/memory/src/MemoryProcessor.ts @@ -1,5 +1,5 @@ import type { Effect } from "effect"; -import type { SmithersError } from "@smithers-orchestrator/errors"; +import type { SmithersError } from "@smthrs/errors"; import type { MemoryStore } from "./store/MemoryStore"; export type MemoryProcessor = { diff --git a/docs/references/smithers/packages/memory/src/MemoryServiceApi.ts b/docs/references/smithers/packages/memory/src/MemoryServiceApi.ts index f0eba74ba..dacaeb4c8 100644 --- a/docs/references/smithers/packages/memory/src/MemoryServiceApi.ts +++ b/docs/references/smithers/packages/memory/src/MemoryServiceApi.ts @@ -1,5 +1,5 @@ import type { Effect } from "effect"; -import type { SmithersError } from "@smithers-orchestrator/errors"; +import type { SmithersError } from "@smthrs/errors"; import type { MemoryNamespace } from "./MemoryNamespace"; import type { MemoryFact } from "./MemoryFact"; import type { MemoryThread } from "./MemoryThread"; diff --git a/docs/references/smithers/packages/memory/src/index.d.ts b/docs/references/smithers/packages/memory/src/index.d.ts index 517124bb1..70ed69e42 100644 --- a/docs/references/smithers/packages/memory/src/index.d.ts +++ b/docs/references/smithers/packages/memory/src/index.d.ts @@ -2,7 +2,7 @@ import * as zod from 'zod'; import { z } from 'zod'; import * as zod_v4_core from 'zod/v4/core'; import { Effect, Context, Layer, Metric } from 'effect'; -import { SmithersError } from '@smithers-orchestrator/errors'; +import { SmithersError } from '@smthrs/errors'; import * as drizzle_orm_bun_sqlite from 'drizzle-orm/bun-sqlite'; import { BunSQLiteDatabase as BunSQLiteDatabase$1 } from 'drizzle-orm/bun-sqlite'; import * as effect_MetricState from 'effect/MetricState'; diff --git a/docs/references/smithers/packages/memory/src/memoryFactReads.js b/docs/references/smithers/packages/memory/src/memoryFactReads.js index 04cb2688b..d64eae27a 100644 --- a/docs/references/smithers/packages/memory/src/memoryFactReads.js +++ b/docs/references/smithers/packages/memory/src/memoryFactReads.js @@ -1 +1 @@ -export { memoryFactReads } from "@smithers-orchestrator/observability/metrics"; +export { memoryFactReads } from "@smthrs/observability/metrics"; diff --git a/docs/references/smithers/packages/memory/src/memoryFactWrites.js b/docs/references/smithers/packages/memory/src/memoryFactWrites.js index 8b97649e1..0ff3e5951 100644 --- a/docs/references/smithers/packages/memory/src/memoryFactWrites.js +++ b/docs/references/smithers/packages/memory/src/memoryFactWrites.js @@ -1 +1 @@ -export { memoryFactWrites } from "@smithers-orchestrator/observability/metrics"; +export { memoryFactWrites } from "@smthrs/observability/metrics"; diff --git a/docs/references/smithers/packages/memory/src/memoryMessageSaves.js b/docs/references/smithers/packages/memory/src/memoryMessageSaves.js index c854f85a7..b9264745f 100644 --- a/docs/references/smithers/packages/memory/src/memoryMessageSaves.js +++ b/docs/references/smithers/packages/memory/src/memoryMessageSaves.js @@ -1 +1 @@ -export { memoryMessageSaves } from "@smithers-orchestrator/observability/metrics"; +export { memoryMessageSaves } from "@smthrs/observability/metrics"; diff --git a/docs/references/smithers/packages/memory/src/memoryRecallDuration.js b/docs/references/smithers/packages/memory/src/memoryRecallDuration.js index d9b9e1a01..38efe4a77 100644 --- a/docs/references/smithers/packages/memory/src/memoryRecallDuration.js +++ b/docs/references/smithers/packages/memory/src/memoryRecallDuration.js @@ -1 +1 @@ -export { memoryRecallDuration } from "@smithers-orchestrator/observability/metrics"; +export { memoryRecallDuration } from "@smthrs/observability/metrics"; diff --git a/docs/references/smithers/packages/memory/src/memoryRecallQueries.js b/docs/references/smithers/packages/memory/src/memoryRecallQueries.js index 6c3a49dd5..72fd7090f 100644 --- a/docs/references/smithers/packages/memory/src/memoryRecallQueries.js +++ b/docs/references/smithers/packages/memory/src/memoryRecallQueries.js @@ -1 +1 @@ -export { memoryRecallQueries } from "@smithers-orchestrator/observability/metrics"; +export { memoryRecallQueries } from "@smthrs/observability/metrics"; diff --git a/docs/references/smithers/packages/memory/src/react-types.ts b/docs/references/smithers/packages/memory/src/react-types.ts index c486bc385..52e0d8360 100644 --- a/docs/references/smithers/packages/memory/src/react-types.ts +++ b/docs/references/smithers/packages/memory/src/react-types.ts @@ -1 +1 @@ -export type { TaskMemoryConfig } from "@smithers-orchestrator/graph/types"; +export type { TaskMemoryConfig } from "@smthrs/graph/types"; diff --git a/docs/references/smithers/packages/memory/src/schema.js b/docs/references/smithers/packages/memory/src/schema.js index 0e36e12ca..514251d80 100644 --- a/docs/references/smithers/packages/memory/src/schema.js +++ b/docs/references/smithers/packages/memory/src/schema.js @@ -2,4 +2,4 @@ export { smithersMemoryFacts, smithersMemoryThreads, smithersMemoryMessages, -} from "@smithers-orchestrator/db/internal-schema"; +} from "@smthrs/db/internal-schema"; diff --git a/docs/references/smithers/packages/memory/src/store/MemoryStore.ts b/docs/references/smithers/packages/memory/src/store/MemoryStore.ts index 687e16ff2..f54f5fe68 100644 --- a/docs/references/smithers/packages/memory/src/store/MemoryStore.ts +++ b/docs/references/smithers/packages/memory/src/store/MemoryStore.ts @@ -1,5 +1,5 @@ import type { Effect } from "effect"; -import type { SmithersError } from "@smithers-orchestrator/errors"; +import type { SmithersError } from "@smthrs/errors"; import type { MemoryNamespace } from "../MemoryNamespace"; import type { MemoryFact } from "../MemoryFact"; import type { MemoryThread } from "../MemoryThread"; diff --git a/docs/references/smithers/packages/memory/src/store/MemoryStoreLive.js b/docs/references/smithers/packages/memory/src/store/MemoryStoreLive.js index 7140a9e5a..812b8f3ab 100644 --- a/docs/references/smithers/packages/memory/src/store/MemoryStoreLive.js +++ b/docs/references/smithers/packages/memory/src/store/MemoryStoreLive.js @@ -1,8 +1,8 @@ import { and, eq, sql } from "drizzle-orm"; import { Effect, Layer, Metric } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; -import { dbQueryDuration } from "@smithers-orchestrator/observability/metrics"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; +import { dbQueryDuration } from "@smthrs/observability/metrics"; +import { nowMs } from "@smthrs/scheduler/nowMs"; import { namespaceToString } from "../namespaceToString.js"; import { smithersMemoryFacts, smithersMemoryThreads, smithersMemoryMessages, } from "../schema.js"; import { memoryFactReads } from "../memoryFactReads.js"; @@ -15,7 +15,7 @@ import { MemoryStoreService } from "./MemoryStoreService.js"; /** @typedef {import("../MemoryFact.ts").MemoryFact} MemoryFact */ /** @typedef {import("../MemoryMessage.ts").MemoryMessage} MemoryMessage */ /** @typedef {import("../MemoryThread.ts").MemoryThread} MemoryThread */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** @typedef {import("drizzle-orm/bun-sqlite").BunSQLiteDatabase} BunSQLiteDatabase */ diff --git a/docs/references/smithers/packages/memory/tests/e2e.test.js b/docs/references/smithers/packages/memory/tests/e2e.test.js index 3d7b3178e..bce1974d6 100644 --- a/docs/references/smithers/packages/memory/tests/e2e.test.js +++ b/docs/references/smithers/packages/memory/tests/e2e.test.js @@ -1,7 +1,7 @@ import { describe, expect, test, beforeEach } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createMemoryStore } from "../src/store/index.js"; import { TtlGarbageCollector } from "../src/processors.js"; const WF_NS = { kind: "workflow", id: "e2e-test" }; diff --git a/docs/references/smithers/packages/memory/tests/processors.test.js b/docs/references/smithers/packages/memory/tests/processors.test.js index 90215f320..aa30596b2 100644 --- a/docs/references/smithers/packages/memory/tests/processors.test.js +++ b/docs/references/smithers/packages/memory/tests/processors.test.js @@ -1,7 +1,7 @@ import { describe, expect, test, beforeEach } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createMemoryStore } from "../src/store/index.js"; import { TtlGarbageCollector, TokenLimiter, Summarizer, } from "../src/processors.js"; const WF_NS = { kind: "workflow", id: "test-proc" }; diff --git a/docs/references/smithers/packages/memory/tests/service.test.js b/docs/references/smithers/packages/memory/tests/service.test.js index 8fb943a5a..a25cb5de8 100644 --- a/docs/references/smithers/packages/memory/tests/service.test.js +++ b/docs/references/smithers/packages/memory/tests/service.test.js @@ -2,7 +2,7 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; import { Effect } from "effect"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { MemoryService, createMemoryLayer } from "../src/service.js"; const WF_NS = { kind: "workflow", id: "test-service" }; function createTestDb() { diff --git a/docs/references/smithers/packages/memory/tests/store-concurrent.test.js b/docs/references/smithers/packages/memory/tests/store-concurrent.test.js index 111c96130..bea39b873 100644 --- a/docs/references/smithers/packages/memory/tests/store-concurrent.test.js +++ b/docs/references/smithers/packages/memory/tests/store-concurrent.test.js @@ -10,7 +10,7 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createMemoryStore } from "../src/store/createMemoryStore.js"; import { namespaceToString } from "../src/namespaceToString.js"; import { parseNamespace } from "../src/parseNamespace.js"; diff --git a/docs/references/smithers/packages/memory/tests/store.test.js b/docs/references/smithers/packages/memory/tests/store.test.js index effc80e27..8f05ebe95 100644 --- a/docs/references/smithers/packages/memory/tests/store.test.js +++ b/docs/references/smithers/packages/memory/tests/store.test.js @@ -1,7 +1,7 @@ import { describe, expect, test, beforeEach } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createMemoryStore } from "../src/store/index.js"; function createTestDb() { const sqlite = new Database(":memory:"); diff --git a/docs/references/smithers/packages/openapi/package.json b/docs/references/smithers/packages/openapi/package.json index 259b51d5b..1374d3cba 100644 --- a/docs/references/smithers/packages/openapi/package.json +++ b/docs/references/smithers/packages/openapi/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/openapi", + "name": "@smthrs/openapi", "version": "0.23.0", "description": "OpenAPI parsing and AI SDK tool generation for Smithers", "type": "module", @@ -30,9 +30,9 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", + "@smthrs/errors": "^0.33.0", + "@smthrs/observability": "^0.33.0", + "@smthrs/scheduler": "^0.33.0", "ai": "^6.0.168", "effect": "^3.21.1", "yaml": "^2.8.3", diff --git a/docs/references/smithers/packages/openapi/src/loadSpecEffect.js b/docs/references/smithers/packages/openapi/src/loadSpecEffect.js index c52f8a1c1..7cf4bb5e5 100644 --- a/docs/references/smithers/packages/openapi/src/loadSpecEffect.js +++ b/docs/references/smithers/packages/openapi/src/loadSpecEffect.js @@ -3,7 +3,7 @@ // --------------------------------------------------------------------------- import { readFileSync } from "node:fs"; import { Effect } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { parseSpecText } from "./_specHelpers.js"; /** @typedef {import("./OpenApiSpec.ts").OpenApiSpec} OpenApiSpec */ diff --git a/docs/references/smithers/packages/openapi/src/metrics.js b/docs/references/smithers/packages/openapi/src/metrics.js index cd8163935..5ea42335c 100644 --- a/docs/references/smithers/packages/openapi/src/metrics.js +++ b/docs/references/smithers/packages/openapi/src/metrics.js @@ -2,4 +2,4 @@ export { openApiToolCallsTotal, openApiToolCallErrorsTotal, openApiToolDuration, -} from "@smithers-orchestrator/observability/metrics"; +} from "@smthrs/observability/metrics"; diff --git a/docs/references/smithers/packages/openapi/src/tool-factory/_helpers.js b/docs/references/smithers/packages/openapi/src/tool-factory/_helpers.js index 2c6b21676..a1664626d 100644 --- a/docs/references/smithers/packages/openapi/src/tool-factory/_helpers.js +++ b/docs/references/smithers/packages/openapi/src/tool-factory/_helpers.js @@ -3,7 +3,7 @@ // --------------------------------------------------------------------------- import { tool, zodSchema } from "ai"; import { Effect, Metric } from "effect"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; +import { nowMs } from "@smthrs/scheduler/nowMs"; import { openApiToolCallsTotal, openApiToolCallErrorsTotal, openApiToolDuration, } from "../metrics.js"; import { buildOperationSchema } from "../schema-converter.js"; import { extractOperations } from "../spec-parser.js"; diff --git a/docs/references/smithers/packages/pi-plugin/package.json b/docs/references/smithers/packages/pi-plugin/package.json index 7d6e4b485..7d8e0d129 100644 --- a/docs/references/smithers/packages/pi-plugin/package.json +++ b/docs/references/smithers/packages/pi-plugin/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/pi-plugin", + "name": "@smthrs/pi-plugin", "version": "0.23.0", "description": "PI coding agent integration for Smithers workflow inspection", "type": "module", @@ -49,11 +49,11 @@ "@mariozechner/pi-tui": "^0.70.2", "@modelcontextprotocol/sdk": "^1.29.0", "@sinclair/typebox": "^0.34.49", - "@smithers-orchestrator/agents": "workspace:*", - "@smithers-orchestrator/cli": "workspace:*", - "@smithers-orchestrator/devtools": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/protocol": "workspace:*", + "@smthrs/agents": "^0.33.0", + "@smthrs/cli": "^0.33.0", + "@smthrs/devtools": "^0.33.0", + "@smthrs/errors": "^0.33.0", + "@smthrs/protocol": "^0.33.0", "ws": "^8.20.0" }, "devDependencies": { diff --git a/docs/references/smithers/packages/pi-plugin/src/api/SmithersPiHttpClient.ts b/docs/references/smithers/packages/pi-plugin/src/api/SmithersPiHttpClient.ts index a69821cb4..02ab86c00 100644 --- a/docs/references/smithers/packages/pi-plugin/src/api/SmithersPiHttpClient.ts +++ b/docs/references/smithers/packages/pi-plugin/src/api/SmithersPiHttpClient.ts @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; type RequestOptions = { baseUrl?: string; diff --git a/docs/references/smithers/packages/pi-plugin/src/buildSmithersPiSystemPrompt.ts b/docs/references/smithers/packages/pi-plugin/src/buildSmithersPiSystemPrompt.ts index 96b587cb7..d5ced5435 100644 --- a/docs/references/smithers/packages/pi-plugin/src/buildSmithersPiSystemPrompt.ts +++ b/docs/references/smithers/packages/pi-plugin/src/buildSmithersPiSystemPrompt.ts @@ -1,7 +1,7 @@ import { renderSmithersAgentPromptGuidance, type SmithersAgentContract, -} from "@smithers-orchestrator/agents/agent-contract"; +} from "@smthrs/agents/agent-contract"; import type { SmithersPiRunContext } from "./SmithersPiRunContext.js"; function toolRef(contract: SmithersAgentContract, name: string, prefix = "smithers_") { diff --git a/docs/references/smithers/packages/pi-plugin/src/extension.ts b/docs/references/smithers/packages/pi-plugin/src/extension.ts index bc62a7557..9e1a5701b 100644 --- a/docs/references/smithers/packages/pi-plugin/src/extension.ts +++ b/docs/references/smithers/packages/pi-plugin/src/extension.ts @@ -10,8 +10,8 @@ import { Type } from "@sinclair/typebox"; import { createSmithersAgentContract, type SmithersAgentContract, -} from "@smithers-orchestrator/agents/agent-contract"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +} from "@smthrs/agents/agent-contract"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { buildSmithersPiSystemPrompt } from "./buildSmithersPiSystemPrompt.js"; import { DevToolsClient } from "./runtime/DevToolsClient.js"; import { DevToolsStore } from "./runtime/DevToolsStore.js"; @@ -78,7 +78,7 @@ function loadSmithersDocs() { const candidates = [ resolve(thisDir, "../../../docs/llms-full.txt"), resolve(process.cwd(), "docs/llms-full.txt"), - resolve(process.cwd(), "node_modules/smithers-orchestrator/docs/llms-full.txt"), + resolve(process.cwd(), "node_modules/smthrs/docs/llms-full.txt"), ]; for (const candidate of candidates) { try { @@ -91,7 +91,7 @@ function loadSmithersDocs() { const fallbacks = [ resolve(thisDir, "../../../docs/llms.txt"), resolve(process.cwd(), "docs/llms.txt"), - resolve(process.cwd(), "node_modules/smithers-orchestrator/docs/llms.txt"), + resolve(process.cwd(), "node_modules/smthrs/docs/llms.txt"), ]; for (const candidate of fallbacks) { try { @@ -107,7 +107,7 @@ function loadSmithersDocs() { function resolveCliPath() { try { - return requireFromHere.resolve("@smithers-orchestrator/cli"); + return requireFromHere.resolve("@smthrs/cli"); } catch { return resolve(dirname(fileURLToPath(import.meta.url)), "../../../apps/cli/src/index.js"); } diff --git a/docs/references/smithers/packages/pi-plugin/src/index.d.ts b/docs/references/smithers/packages/pi-plugin/src/index.d.ts index 30af7a413..cbb2931f0 100644 --- a/docs/references/smithers/packages/pi-plugin/src/index.d.ts +++ b/docs/references/smithers/packages/pi-plugin/src/index.d.ts @@ -1,6 +1,6 @@ -import { SmithersAgentContract } from '@smithers-orchestrator/agents/agent-contract'; +import { SmithersAgentContract } from '@smthrs/agents/agent-contract'; import { ExtensionAPI as ExtensionAPI$1 } from '@mariozechner/pi-coding-agent'; -import { DevToolsSnapshot, DevToolsDelta, DevToolsNode } from '@smithers-orchestrator/protocol'; +import { DevToolsSnapshot, DevToolsDelta, DevToolsNode } from '@smthrs/protocol'; type ApproveArgs = { runId: string; diff --git a/docs/references/smithers/packages/pi-plugin/src/runtime/DevToolsClient.ts b/docs/references/smithers/packages/pi-plugin/src/runtime/DevToolsClient.ts index 353b27db2..fac3daf6d 100644 --- a/docs/references/smithers/packages/pi-plugin/src/runtime/DevToolsClient.ts +++ b/docs/references/smithers/packages/pi-plugin/src/runtime/DevToolsClient.ts @@ -1,7 +1,7 @@ import { randomUUID } from "node:crypto"; import { WebSocket } from "ws"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import type { DevToolsDelta, DevToolsSnapshot } from "@smithers-orchestrator/protocol"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import type { DevToolsDelta, DevToolsSnapshot } from "@smthrs/protocol"; type RequestOptions = { baseUrl?: string; diff --git a/docs/references/smithers/packages/pi-plugin/src/runtime/DevToolsStore.ts b/docs/references/smithers/packages/pi-plugin/src/runtime/DevToolsStore.ts index 45c01653a..246711888 100644 --- a/docs/references/smithers/packages/pi-plugin/src/runtime/DevToolsStore.ts +++ b/docs/references/smithers/packages/pi-plugin/src/runtime/DevToolsStore.ts @@ -1,6 +1,6 @@ -import { applyDelta } from "@smithers-orchestrator/devtools"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import type { DevToolsDelta, DevToolsNode, DevToolsSnapshot } from "@smithers-orchestrator/protocol"; +import { applyDelta } from "@smthrs/devtools"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import type { DevToolsDelta, DevToolsNode, DevToolsSnapshot } from "@smthrs/protocol"; import { DevToolsClient } from "./DevToolsClient.js"; type DevToolsGapResync = { diff --git a/docs/references/smithers/packages/pi-plugin/src/views/NodeInspector.ts b/docs/references/smithers/packages/pi-plugin/src/views/NodeInspector.ts index 1c1920994..b77cf0250 100644 --- a/docs/references/smithers/packages/pi-plugin/src/views/NodeInspector.ts +++ b/docs/references/smithers/packages/pi-plugin/src/views/NodeInspector.ts @@ -1,5 +1,5 @@ import { matchesKey, truncateToWidth } from "@mariozechner/pi-tui"; -import type { DevToolsNode } from "@smithers-orchestrator/protocol"; +import type { DevToolsNode } from "@smthrs/protocol"; import type { DevToolsStore } from "../runtime/DevToolsStore.js"; type Theme = { diff --git a/docs/references/smithers/packages/pi-plugin/src/views/RunTree.ts b/docs/references/smithers/packages/pi-plugin/src/views/RunTree.ts index 3b1734439..063398c28 100644 --- a/docs/references/smithers/packages/pi-plugin/src/views/RunTree.ts +++ b/docs/references/smithers/packages/pi-plugin/src/views/RunTree.ts @@ -1,5 +1,5 @@ import { matchesKey, truncateToWidth } from "@mariozechner/pi-tui"; -import type { DevToolsNode } from "@smithers-orchestrator/protocol"; +import type { DevToolsNode } from "@smthrs/protocol"; import type { DevToolsStore } from "../runtime/DevToolsStore.js"; type Theme = { diff --git a/docs/references/smithers/packages/pi-plugin/tests/DevToolsStore.test.ts b/docs/references/smithers/packages/pi-plugin/tests/DevToolsStore.test.ts index 77498b756..9c5a9022c 100644 --- a/docs/references/smithers/packages/pi-plugin/tests/DevToolsStore.test.ts +++ b/docs/references/smithers/packages/pi-plugin/tests/DevToolsStore.test.ts @@ -1,10 +1,10 @@ import { afterEach, describe, expect, test } from "bun:test"; import { WebSocketServer } from "ws"; -import { diffSnapshots } from "@smithers-orchestrator/devtools"; +import { diffSnapshots } from "@smthrs/devtools"; import { DevToolsClient } from "../src/runtime/DevToolsClient.js"; import { DevToolsStore } from "../src/runtime/DevToolsStore.js"; import { RunInspector } from "../src/views/RunInspector.js"; -import type { DevToolsNode, DevToolsSnapshot } from "@smithers-orchestrator/protocol"; +import type { DevToolsNode, DevToolsSnapshot } from "@smthrs/protocol"; function task(id: number, nodeId: string, state: string, extraProps: Record<string, unknown> = {}): DevToolsNode { return { diff --git a/docs/references/smithers/packages/pi-plugin/tests/buildSmithersPiSystemPrompt.test.ts b/docs/references/smithers/packages/pi-plugin/tests/buildSmithersPiSystemPrompt.test.ts index a52ff1ce9..03adef4f5 100644 --- a/docs/references/smithers/packages/pi-plugin/tests/buildSmithersPiSystemPrompt.test.ts +++ b/docs/references/smithers/packages/pi-plugin/tests/buildSmithersPiSystemPrompt.test.ts @@ -2,12 +2,12 @@ import { describe, expect, test } from "bun:test"; import { createSmithersAgentContract, renderSmithersAgentPromptGuidance, -} from "@smithers-orchestrator/agents/agent-contract"; +} from "@smthrs/agents/agent-contract"; import { buildSmithersPiSystemPrompt } from "../src/buildSmithersPiSystemPrompt.js"; describe("buildSmithersPiSystemPrompt", () => { test("standalone extension export resolves from the package path", async () => { - const mod = await import("@smithers-orchestrator/pi-plugin/extension"); + const mod = await import("@smthrs/pi-plugin/extension"); expect(typeof mod.extension).toBe("function"); }); diff --git a/docs/references/smithers/packages/protocol/package.json b/docs/references/smithers/packages/protocol/package.json index 6d299583f..55216aada 100644 --- a/docs/references/smithers/packages/protocol/package.json +++ b/docs/references/smithers/packages/protocol/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/protocol", + "name": "@smthrs/protocol", "version": "0.23.0", "description": "Shared Smithers contracts, errors, and small value types", "type": "module", diff --git a/docs/references/smithers/packages/react-reconciler/package.json b/docs/references/smithers/packages/react-reconciler/package.json index ec18d0dde..fdc4bdb22 100644 --- a/docs/references/smithers/packages/react-reconciler/package.json +++ b/docs/references/smithers/packages/react-reconciler/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/react-reconciler", + "name": "@smthrs/react-reconciler", "version": "0.23.0", "description": "Custom React reconciler that renders Smithers host trees", "type": "module", @@ -49,10 +49,10 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@smithers-orchestrator/devtools": "workspace:*", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", + "@smthrs/devtools": "^0.33.0", + "@smthrs/driver": "^0.33.0", + "@smthrs/errors": "^0.33.0", + "@smthrs/graph": "^0.33.0", "bippy": "^0.5.39", "react": "^19.2.5", "react-reconciler": "^0.33.0" diff --git a/docs/references/smithers/packages/react-reconciler/src/HostContainer.ts b/docs/references/smithers/packages/react-reconciler/src/HostContainer.ts index 32926594d..cd67be31d 100644 --- a/docs/references/smithers/packages/react-reconciler/src/HostContainer.ts +++ b/docs/references/smithers/packages/react-reconciler/src/HostContainer.ts @@ -1,4 +1,4 @@ -import type { HostNode } from "@smithers-orchestrator/graph/types"; +import type { HostNode } from "@smthrs/graph/types"; export type HostContainer = { root: HostNode | null; diff --git a/docs/references/smithers/packages/react-reconciler/src/OutputSnapshot.ts b/docs/references/smithers/packages/react-reconciler/src/OutputSnapshot.ts index 31e258280..85df44687 100644 --- a/docs/references/smithers/packages/react-reconciler/src/OutputSnapshot.ts +++ b/docs/references/smithers/packages/react-reconciler/src/OutputSnapshot.ts @@ -1,3 +1,3 @@ -import type { OutputSnapshot as DriverOutputSnapshot } from "@smithers-orchestrator/driver/OutputSnapshot"; +import type { OutputSnapshot as DriverOutputSnapshot } from "@smthrs/driver/OutputSnapshot"; export type OutputSnapshot = DriverOutputSnapshot; diff --git a/docs/references/smithers/packages/react-reconciler/src/SmithersCtxOptions.ts b/docs/references/smithers/packages/react-reconciler/src/SmithersCtxOptions.ts index 0c8b1c36b..e6c071861 100644 --- a/docs/references/smithers/packages/react-reconciler/src/SmithersCtxOptions.ts +++ b/docs/references/smithers/packages/react-reconciler/src/SmithersCtxOptions.ts @@ -1 +1 @@ -export type { SmithersCtxOptions } from "@smithers-orchestrator/driver/SmithersCtx"; +export type { SmithersCtxOptions } from "@smthrs/driver/SmithersCtx"; diff --git a/docs/references/smithers/packages/react-reconciler/src/SmithersRendererOptions.ts b/docs/references/smithers/packages/react-reconciler/src/SmithersRendererOptions.ts index 8da118593..39bcb817a 100644 --- a/docs/references/smithers/packages/react-reconciler/src/SmithersRendererOptions.ts +++ b/docs/references/smithers/packages/react-reconciler/src/SmithersRendererOptions.ts @@ -1,4 +1,4 @@ -import type { ExtractGraph } from "@smithers-orchestrator/graph/types"; +import type { ExtractGraph } from "@smthrs/graph/types"; export type SmithersRendererOptions = { extractGraph?: ExtractGraph; diff --git a/docs/references/smithers/packages/react-reconciler/src/context.js b/docs/references/smithers/packages/react-reconciler/src/context.js index 852a9677b..474c77d1a 100644 --- a/docs/references/smithers/packages/react-reconciler/src/context.js +++ b/docs/references/smithers/packages/react-reconciler/src/context.js @@ -4,9 +4,9 @@ // @smithers-type-exports-end import React from "react"; -import { SmithersCtx } from "@smithers-orchestrator/driver/SmithersCtx"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -export { SmithersCtx } from "@smithers-orchestrator/driver/SmithersCtx"; +import { SmithersCtx } from "@smthrs/driver/SmithersCtx"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +export { SmithersCtx } from "@smthrs/driver/SmithersCtx"; /** @type {React.Context<SmithersCtx<any> | null>} */ export const SmithersContext = React.createContext(null); SmithersContext.displayName = "SmithersContext"; diff --git a/docs/references/smithers/packages/react-reconciler/src/core-peer.js b/docs/references/smithers/packages/react-reconciler/src/core-peer.js index 802665ba2..2516823c5 100644 --- a/docs/references/smithers/packages/react-reconciler/src/core-peer.js +++ b/docs/references/smithers/packages/react-reconciler/src/core-peer.js @@ -1,6 +1,6 @@ -/** @typedef {import("@smithers-orchestrator/graph/types").ExtractGraph} ExtractGraph */ -const GRAPH_SPECIFIER = "@smithers-orchestrator/graph"; +/** @typedef {import("@smthrs/graph/types").ExtractGraph} ExtractGraph */ +const GRAPH_SPECIFIER = "@smthrs/graph"; const LOCAL_GRAPH_SPECIFIER = "../../graph/src/index.js"; /** * @param {string} specifier @@ -28,6 +28,6 @@ export async function resolveExtractGraph() { return fn; } } - throw new Error("Unable to load extractGraph from @smithers-orchestrator/graph. " + - "Install @smithers-orchestrator/graph and ensure it exports extractGraph."); + throw new Error("Unable to load extractGraph from @smthrs/graph. " + + "Install @smthrs/graph and ensure it exports extractGraph."); } diff --git a/docs/references/smithers/packages/react-reconciler/src/core-types.js b/docs/references/smithers/packages/react-reconciler/src/core-types.js index ae7fd38ed..0dfca45dc 100644 --- a/docs/references/smithers/packages/react-reconciler/src/core-types.js +++ b/docs/references/smithers/packages/react-reconciler/src/core-types.js @@ -1 +1 @@ -export * from "@smithers-orchestrator/graph"; +export * from "@smthrs/graph"; diff --git a/docs/references/smithers/packages/react-reconciler/src/devtools/SmithersDevTools.js b/docs/references/smithers/packages/react-reconciler/src/devtools/SmithersDevTools.js index 15ef48b00..a6274b859 100644 --- a/docs/references/smithers/packages/react-reconciler/src/devtools/SmithersDevTools.js +++ b/docs/references/smithers/packages/react-reconciler/src/devtools/SmithersDevTools.js @@ -1,17 +1,17 @@ // @smithers-type-exports-begin -/** @typedef {import("@smithers-orchestrator/devtools").DevToolsEventBus} DevToolsEventBus */ -/** @typedef {import("@smithers-orchestrator/devtools").DevToolsEventHandler} DevToolsEventHandler */ -/** @typedef {import("@smithers-orchestrator/devtools").DevToolsSnapshot} DevToolsSnapshot */ -/** @typedef {import("@smithers-orchestrator/devtools").RunExecutionState} RunExecutionState */ -/** @typedef {import("@smithers-orchestrator/devtools").SmithersNodeType} SmithersNodeType */ -/** @typedef {import("@smithers-orchestrator/devtools").TaskExecutionState} TaskExecutionState */ +/** @typedef {import("@smthrs/devtools").DevToolsEventBus} DevToolsEventBus */ +/** @typedef {import("@smthrs/devtools").DevToolsEventHandler} DevToolsEventHandler */ +/** @typedef {import("@smthrs/devtools").DevToolsSnapshot} DevToolsSnapshot */ +/** @typedef {import("@smthrs/devtools").RunExecutionState} RunExecutionState */ +/** @typedef {import("@smthrs/devtools").SmithersNodeType} SmithersNodeType */ +/** @typedef {import("@smthrs/devtools").TaskExecutionState} TaskExecutionState */ // @smithers-type-exports-end import { instrument, secure, installRDTHook, traverseFiber, getDisplayName, isHostFiber, getFiberId, setFiberId, } from "bippy"; -import { SmithersDevToolsCore, printTree, } from "@smithers-orchestrator/devtools"; -/** @typedef {import("@smithers-orchestrator/devtools").DevToolsNode} DevToolsNode */ -/** @typedef {import("@smithers-orchestrator/devtools").SmithersDevToolsCore} SmithersDevToolsCoreType */ -/** @typedef {import("@smithers-orchestrator/devtools").SmithersDevToolsOptions} SmithersDevToolsOptions */ +import { SmithersDevToolsCore, printTree, } from "@smthrs/devtools"; +/** @typedef {import("@smthrs/devtools").DevToolsNode} DevToolsNode */ +/** @typedef {import("@smthrs/devtools").SmithersDevToolsCore} SmithersDevToolsCoreType */ +/** @typedef {import("@smthrs/devtools").SmithersDevToolsOptions} SmithersDevToolsOptions */ /** @typedef {import("bippy").Fiber} Fiber */ /** @typedef {import("bippy").FiberRoot} FiberRoot */ diff --git a/docs/references/smithers/packages/react-reconciler/src/devtools/index.js b/docs/references/smithers/packages/react-reconciler/src/devtools/index.js index fe6e940be..31d80642f 100644 --- a/docs/references/smithers/packages/react-reconciler/src/devtools/index.js +++ b/docs/references/smithers/packages/react-reconciler/src/devtools/index.js @@ -1,12 +1,12 @@ // @smithers-type-exports-begin -/** @typedef {import("@smithers-orchestrator/devtools").DevToolsEventBus} DevToolsEventBus */ -/** @typedef {import("@smithers-orchestrator/devtools").DevToolsEventHandler} DevToolsEventHandler */ -/** @typedef {import("@smithers-orchestrator/devtools").DevToolsNode} DevToolsNode */ -/** @typedef {import("@smithers-orchestrator/devtools").DevToolsSnapshot} DevToolsSnapshot */ -/** @typedef {import("@smithers-orchestrator/devtools").RunExecutionState} RunExecutionState */ -/** @typedef {import("@smithers-orchestrator/devtools").SmithersDevToolsOptions} SmithersDevToolsOptions */ -/** @typedef {import("@smithers-orchestrator/devtools").SmithersNodeType} SmithersNodeType */ -/** @typedef {import("@smithers-orchestrator/devtools").TaskExecutionState} TaskExecutionState */ +/** @typedef {import("@smthrs/devtools").DevToolsEventBus} DevToolsEventBus */ +/** @typedef {import("@smthrs/devtools").DevToolsEventHandler} DevToolsEventHandler */ +/** @typedef {import("@smthrs/devtools").DevToolsNode} DevToolsNode */ +/** @typedef {import("@smthrs/devtools").DevToolsSnapshot} DevToolsSnapshot */ +/** @typedef {import("@smthrs/devtools").RunExecutionState} RunExecutionState */ +/** @typedef {import("@smthrs/devtools").SmithersDevToolsOptions} SmithersDevToolsOptions */ +/** @typedef {import("@smthrs/devtools").SmithersNodeType} SmithersNodeType */ +/** @typedef {import("@smthrs/devtools").TaskExecutionState} TaskExecutionState */ // @smithers-type-exports-end export { SmithersDevTools } from "./SmithersDevTools.js"; diff --git a/docs/references/smithers/packages/react-reconciler/src/driver.js b/docs/references/smithers/packages/react-reconciler/src/driver.js index 095ef6fa8..3a70d42ad 100644 --- a/docs/references/smithers/packages/react-reconciler/src/driver.js +++ b/docs/references/smithers/packages/react-reconciler/src/driver.js @@ -1,4 +1,4 @@ -import { WorkflowDriver, } from "@smithers-orchestrator/driver"; +import { WorkflowDriver, } from "@smthrs/driver"; import { SmithersRenderer } from "./reconciler.js"; /** @@ -7,7 +7,7 @@ import { SmithersRenderer } from "./reconciler.js"; */ export class ReactWorkflowDriver extends WorkflowDriver { /** - * @param {import("@smithers-orchestrator/driver").WorkflowDriverOptions<Schema>} options + * @param {import("@smthrs/driver").WorkflowDriverOptions<Schema>} options */ constructor(options) { const renderer = options.renderer ?? new SmithersRenderer(); diff --git a/docs/references/smithers/packages/react-reconciler/src/index.d.ts b/docs/references/smithers/packages/react-reconciler/src/index.d.ts index 7f1a602e2..f4ebf84d9 100644 --- a/docs/references/smithers/packages/react-reconciler/src/index.d.ts +++ b/docs/references/smithers/packages/react-reconciler/src/index.d.ts @@ -1,10 +1,10 @@ -import * as _smithers_orchestrator_graph_types from '@smithers-orchestrator/graph/types'; -import { ExtractGraph as ExtractGraph$1, HostNode as HostNode$1 } from '@smithers-orchestrator/graph/types'; +import * as _smithers_orchestrator_graph_types from '@smthrs/graph/types'; +import { ExtractGraph as ExtractGraph$1, HostNode as HostNode$1 } from '@smthrs/graph/types'; import * as React$1 from 'react'; import React__default from 'react'; -import { WorkflowDriver } from '@smithers-orchestrator/driver'; -import { SmithersCtx } from '@smithers-orchestrator/driver/SmithersCtx'; -export { SmithersCtx } from '@smithers-orchestrator/driver/SmithersCtx'; +import { WorkflowDriver } from '@smthrs/driver'; +import { SmithersCtx } from '@smthrs/driver/SmithersCtx'; +export { SmithersCtx } from '@smthrs/driver/SmithersCtx'; type SmithersRendererOptions$1 = { extractGraph?: ExtractGraph$1; diff --git a/docs/references/smithers/packages/react-reconciler/src/reconciler.js b/docs/references/smithers/packages/react-reconciler/src/reconciler.js index 4ce98aa5e..2eb947d7e 100644 --- a/docs/references/smithers/packages/react-reconciler/src/reconciler.js +++ b/docs/references/smithers/packages/react-reconciler/src/reconciler.js @@ -1,15 +1,15 @@ import Reconciler from "react-reconciler"; import { installRDTHook } from "bippy"; import { resolveExtractGraph } from "./core-peer.js"; -/** @typedef {import("@smithers-orchestrator/graph/types").ExtractGraph} ExtractGraph */ -/** @typedef {import("@smithers-orchestrator/graph/types").ExtractOptions} ExtractOptions */ +/** @typedef {import("@smthrs/graph/types").ExtractGraph} ExtractGraph */ +/** @typedef {import("@smthrs/graph/types").ExtractOptions} ExtractOptions */ /** @typedef {import("./HostContainer.ts").HostContainer} HostContainer */ -/** @typedef {import("@smithers-orchestrator/graph/types").HostElement & { props: Record<string, string>; rawProps: Record<string, unknown>; children: HostNode[] }} MutableHostElement */ -/** @typedef {import("@smithers-orchestrator/graph/types").HostNode} HostNode */ -/** @typedef {import("@smithers-orchestrator/graph/types").HostText & { text: string }} MutableHostText */ +/** @typedef {import("@smthrs/graph/types").HostElement & { props: Record<string, string>; rawProps: Record<string, unknown>; children: HostNode[] }} MutableHostElement */ +/** @typedef {import("@smthrs/graph/types").HostNode} HostNode */ +/** @typedef {import("@smthrs/graph/types").HostText & { text: string }} MutableHostText */ /** @typedef {import("react").default} React */ /** @typedef {import("./SmithersRendererOptions.ts").SmithersRendererOptions} SmithersRendererOptions */ -/** @typedef {import("@smithers-orchestrator/graph/types").WorkflowGraph} WorkflowGraph */ +/** @typedef {import("@smthrs/graph/types").WorkflowGraph} WorkflowGraph */ /** * Minimal local shape for a react-reconciler instance. `@types/react-reconciler` * is not installed here, so we describe only the methods we call. @@ -405,7 +405,7 @@ if (!hookHost.__REACT_DEVTOOLS_GLOBAL_HOOK__) { reconciler.injectIntoDevTools({ bundleType: typeof process !== "undefined" && process.env.NODE_ENV === "production" ? 0 : 1, version: "0.0.0", - rendererPackageName: "@smithers-orchestrator/core-react", + rendererPackageName: "@smthrs/core-react", findFiberByHostInstance: () => null, }); export class SmithersRenderer { diff --git a/docs/references/smithers/packages/react-reconciler/tests/external-host-node.test.js b/docs/references/smithers/packages/react-reconciler/tests/external-host-node.test.js index 389ece9fe..7eba8e62c 100644 --- a/docs/references/smithers/packages/react-reconciler/tests/external-host-node.test.js +++ b/docs/references/smithers/packages/react-reconciler/tests/external-host-node.test.js @@ -1,9 +1,9 @@ import { describe, expect, test } from "bun:test"; import React from "react"; -import { extractFromHost } from "@smithers-orchestrator/graph/dom/extract"; +import { extractFromHost } from "@smthrs/graph/dom/extract"; import { SmithersRenderer } from "../src/dom/renderer.js"; import { Effect } from "effect"; -import { runWorkflow } from "@smithers-orchestrator/engine"; +import { runWorkflow } from "@smthrs/engine"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { z } from "zod"; const schemas = { diff --git a/docs/references/smithers/packages/react-reconciler/tests/jsx-ai-fixtures.test.jsx b/docs/references/smithers/packages/react-reconciler/tests/jsx-ai-fixtures.test.jsx index 3e3646d1f..ea21b4fa2 100644 --- a/docs/references/smithers/packages/react-reconciler/tests/jsx-ai-fixtures.test.jsx +++ b/docs/references/smithers/packages/react-reconciler/tests/jsx-ai-fixtures.test.jsx @@ -1,7 +1,7 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { Effect } from "effect"; -import { runWorkflow } from "@smithers-orchestrator/engine"; +import { runWorkflow } from "@smthrs/engine"; import workflow from "../../smithers/tests/fixtures/jsx-ai-release-notes.jsx"; describe("JSX AI fixtures", () => { test("release notes agent summarizes changelog", async () => { diff --git a/docs/references/smithers/packages/react-reconciler/tests/renderer-comprehensive.test.jsx b/docs/references/smithers/packages/react-reconciler/tests/renderer-comprehensive.test.jsx index ac4c3c2a0..ff00368db 100644 --- a/docs/references/smithers/packages/react-reconciler/tests/renderer-comprehensive.test.jsx +++ b/docs/references/smithers/packages/react-reconciler/tests/renderer-comprehensive.test.jsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { SmithersRenderer } from "../src/dom/renderer.js"; import React from "react"; diff --git a/docs/references/smithers/packages/react-reconciler/tests/renderer.test.jsx b/docs/references/smithers/packages/react-reconciler/tests/renderer.test.jsx index 275fbff22..f371ecc99 100644 --- a/docs/references/smithers/packages/react-reconciler/tests/renderer.test.jsx +++ b/docs/references/smithers/packages/react-reconciler/tests/renderer.test.jsx @@ -1,7 +1,7 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { SmithersRenderer } from "../src/dom/renderer.js"; -import { Task, Workflow } from "@smithers-orchestrator/components/components/index"; +import { Task, Workflow } from "@smthrs/components/components/index"; import { outputSchemas } from "../../smithers/tests/schema.js"; describe("renderer updates", () => { test("commitUpdate applies new props", async () => { diff --git a/docs/references/smithers/packages/sandbox/package.json b/docs/references/smithers/packages/sandbox/package.json index 4efb9e8c3..b5131f82d 100644 --- a/docs/references/smithers/packages/sandbox/package.json +++ b/docs/references/smithers/packages/sandbox/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/sandbox", + "name": "@smthrs/sandbox", "version": "0.23.0", "description": "Sandbox bundle, execution, and transport integration for Smithers", "type": "module", @@ -27,11 +27,11 @@ "dependencies": { "@effect/cluster": "^0.58.0", "@effect/rpc": "^0.75.0", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", + "@smthrs/db": "^0.33.0", + "@smthrs/driver": "^0.33.0", + "@smthrs/errors": "^0.33.0", + "@smthrs/observability": "^0.33.0", + "@smthrs/scheduler": "^0.33.0", "effect": "^3.21.1" }, "devDependencies": { diff --git a/docs/references/smithers/packages/sandbox/src/SandboxTransportService.ts b/docs/references/smithers/packages/sandbox/src/SandboxTransportService.ts index 8dd90f63e..753a78826 100644 --- a/docs/references/smithers/packages/sandbox/src/SandboxTransportService.ts +++ b/docs/references/smithers/packages/sandbox/src/SandboxTransportService.ts @@ -1,5 +1,5 @@ import type { Effect } from "effect"; -import type { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import type { SmithersError } from "@smthrs/errors/SmithersError"; import type { SandboxTransportConfig } from "./SandboxTransportConfig.ts"; import type { SandboxHandle } from "./SandboxHandle.ts"; import type { SandboxBundleResult } from "./SandboxBundleResult.ts"; diff --git a/docs/references/smithers/packages/sandbox/src/bundle.js b/docs/references/smithers/packages/sandbox/src/bundle.js index ef2182f07..c3068185a 100644 --- a/docs/references/smithers/packages/sandbox/src/bundle.js +++ b/docs/references/smithers/packages/sandbox/src/bundle.js @@ -1,7 +1,7 @@ import { lstat, mkdir, readFile, readdir, stat, writeFile } from "node:fs/promises"; import { dirname, join, relative } from "node:path"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { assertJsonPayloadWithinBounds, assertOptionalArrayMaxLength, assertOptionalStringMaxLength, } from "@smithers-orchestrator/db/input-bounds"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { assertJsonPayloadWithinBounds, assertOptionalArrayMaxLength, assertOptionalStringMaxLength, } from "@smthrs/db/input-bounds"; import { resolveSandboxPath } from "./sandboxPath.js"; /** @typedef {import("./SandboxBundleManifest.ts").SandboxBundleManifest} SandboxBundleManifest */ /** @typedef {import("./ValidatedSandboxBundle.ts").ValidatedSandboxBundle} ValidatedSandboxBundle */ diff --git a/docs/references/smithers/packages/sandbox/src/effect/http-runner.js b/docs/references/smithers/packages/sandbox/src/effect/http-runner.js index 33db527f6..2db634a2a 100644 --- a/docs/references/smithers/packages/sandbox/src/effect/http-runner.js +++ b/docs/references/smithers/packages/sandbox/src/effect/http-runner.js @@ -2,9 +2,9 @@ import { HttpRunner } from "@effect/cluster"; import { mkdir, cp, rm } from "node:fs/promises"; import { join } from "node:path"; import { Effect, Layer } from "effect"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { spawnCaptureEffect } from "@smithers-orchestrator/driver/child-process"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { spawnCaptureEffect } from "@smthrs/driver/child-process"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { SandboxEntityExecutor } from "./sandbox-entity.js"; import { dockerArgs, normalizeSandboxHandleControls, sandboxRunnerEnv, spawnSandboxCommand } from "./process-runner.js"; /** @typedef {import("../SandboxTransportConfig.ts").SandboxTransportConfig} SandboxTransportConfig */ diff --git a/docs/references/smithers/packages/sandbox/src/effect/process-runner.js b/docs/references/smithers/packages/sandbox/src/effect/process-runner.js index 6e7ea7bfe..58ce210b4 100644 --- a/docs/references/smithers/packages/sandbox/src/effect/process-runner.js +++ b/docs/references/smithers/packages/sandbox/src/effect/process-runner.js @@ -1,7 +1,7 @@ import { existsSync } from "node:fs"; import { isAbsolute, join } from "node:path"; -import { spawnCaptureEffect } from "@smithers-orchestrator/driver/child-process"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { spawnCaptureEffect } from "@smthrs/driver/child-process"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { Effect } from "effect"; const DEFAULT_SANDBOX_COMMAND_TIMEOUT_MS = 10 * 60 * 1000; diff --git a/docs/references/smithers/packages/sandbox/src/effect/sandbox-entity.js b/docs/references/smithers/packages/sandbox/src/effect/sandbox-entity.js index 83cc9d9f2..3e705a198 100644 --- a/docs/references/smithers/packages/sandbox/src/effect/sandbox-entity.js +++ b/docs/references/smithers/packages/sandbox/src/effect/sandbox-entity.js @@ -1,7 +1,7 @@ import { Entity, ShardingConfig } from "@effect/cluster"; import * as Rpc from "@effect/rpc/Rpc"; import { Context, Effect, Layer, Schema } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; const SandboxRuntimeSchema = Schema.Literal("bubblewrap", "docker", "codeplane"); const SandboxEnvSchema = Schema.Record({ key: Schema.String, diff --git a/docs/references/smithers/packages/sandbox/src/effect/socket-runner.js b/docs/references/smithers/packages/sandbox/src/effect/socket-runner.js index 61d61eeb0..8b820febf 100644 --- a/docs/references/smithers/packages/sandbox/src/effect/socket-runner.js +++ b/docs/references/smithers/packages/sandbox/src/effect/socket-runner.js @@ -2,8 +2,8 @@ import { SocketRunner } from "@effect/cluster"; import { mkdir, cp, rm } from "node:fs/promises"; import { join } from "node:path"; import { Effect, Layer } from "effect"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { SandboxEntityExecutor } from "./sandbox-entity.js"; import { bubblewrapArgs, normalizeSandboxHandleControls, sandboxExecArgs, spawnSandboxCommand } from "./process-runner.js"; /** @typedef {import("../SandboxTransportConfig.ts").SandboxTransportConfig} SandboxTransportConfig */ diff --git a/docs/references/smithers/packages/sandbox/src/execute.js b/docs/references/smithers/packages/sandbox/src/execute.js index c7e8a18eb..3a30b8b52 100644 --- a/docs/references/smithers/packages/sandbox/src/execute.js +++ b/docs/references/smithers/packages/sandbox/src/execute.js @@ -2,12 +2,12 @@ import { AsyncLocalStorage } from "node:async_hooks"; import { mkdir, stat, writeFile } from "node:fs/promises"; import { join } from "node:path"; import { Effect, Metric } from "effect"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { trackEvent, sandboxTransportDurationMs } from "@smithers-orchestrator/observability/metrics"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { errorToJson } from "@smithers-orchestrator/errors/errorToJson"; -import { requireTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { trackEvent, sandboxTransportDurationMs } from "@smthrs/observability/metrics"; +import { nowMs } from "@smthrs/scheduler/nowMs"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { errorToJson } from "@smthrs/errors/errorToJson"; +import { requireTaskRuntime } from "@smthrs/driver/task-runtime"; import { validateSandboxBundle, writeSandboxBundle } from "./bundle.js"; import { SandboxTransport, layerForSandboxRuntime, resolveSandboxRuntime, } from "./transport.js"; /** @typedef {import("./ExecuteSandboxOptions.ts").ExecuteSandboxOptions} ExecuteSandboxOptions */ @@ -17,7 +17,7 @@ import { SandboxTransport, layerForSandboxRuntime, resolveSandboxRuntime, } from /** @typedef {import("./SandboxProvider.ts").SandboxProvider} SandboxProvider */ /** @typedef {import("./SandboxProvider.ts").SandboxProviderRequest} SandboxProviderRequest */ /** @typedef {import("./SandboxProvider.ts").SandboxProviderResult} SandboxProviderResult */ -/** @typedef {import("@smithers-orchestrator/observability/SmithersEvent").SmithersEvent} SmithersEvent */ +/** @typedef {import("@smthrs/observability/SmithersEvent").SmithersEvent} SmithersEvent */ const DEFAULT_MAX_CONCURRENT_SANDBOXES = 10; const sandboxProviderRegistry = new Map(); diff --git a/docs/references/smithers/packages/sandbox/src/index.d.ts b/docs/references/smithers/packages/sandbox/src/index.d.ts index 22f92edea..9445d39de 100644 --- a/docs/references/smithers/packages/sandbox/src/index.d.ts +++ b/docs/references/smithers/packages/sandbox/src/index.d.ts @@ -1,6 +1,6 @@ -import * as _smithers_observability_SmithersEvent from '@smithers-orchestrator/observability/SmithersEvent'; +import * as _smithers_observability_SmithersEvent from '@smthrs/observability/SmithersEvent'; import { Context, Effect, Layer } from 'effect'; -import { SmithersError } from '@smithers-orchestrator/errors/SmithersError'; +import { SmithersError } from '@smthrs/errors/SmithersError'; type SandboxBundleManifest$1 = { outputs: unknown; diff --git a/docs/references/smithers/packages/sandbox/src/sandboxPath.js b/docs/references/smithers/packages/sandbox/src/sandboxPath.js index 632cd9117..5e183b4b0 100644 --- a/docs/references/smithers/packages/sandbox/src/sandboxPath.js +++ b/docs/references/smithers/packages/sandbox/src/sandboxPath.js @@ -1,8 +1,8 @@ import { resolve, isAbsolute, sep, dirname } from "node:path"; import { realpath } from "node:fs/promises"; import { Effect } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** * @param {string} rootDir * @param {string} inputPath diff --git a/docs/references/smithers/packages/sandbox/src/transport.js b/docs/references/smithers/packages/sandbox/src/transport.js index 1192097bc..42127d600 100644 --- a/docs/references/smithers/packages/sandbox/src/transport.js +++ b/docs/references/smithers/packages/sandbox/src/transport.js @@ -6,7 +6,7 @@ // @smithers-type-exports-end import { Context, Effect, Layer } from "effect"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { CodeplaneSandboxExecutorLive, DockerSandboxExecutorLive, } from "./effect/http-runner.js"; import { makeSandboxTransportServiceEffect, } from "./effect/sandbox-entity.js"; import { BubblewrapSandboxExecutorLive } from "./effect/socket-runner.js"; diff --git a/docs/references/smithers/packages/sandbox/tests/execute.test.js b/docs/references/smithers/packages/sandbox/tests/execute.test.js index 88cb4d16b..3088c2735 100644 --- a/docs/references/smithers/packages/sandbox/tests/execute.test.js +++ b/docs/references/smithers/packages/sandbox/tests/execute.test.js @@ -4,9 +4,9 @@ import { tmpdir } from "node:os"; import { join } from "node:path"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { withTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { withTaskRuntime } from "@smthrs/driver/task-runtime"; import { __executeSandboxInternals, executeSandbox, registerSandboxProvider } from "../src/execute.js"; /** diff --git a/docs/references/smithers/packages/scheduler/package.json b/docs/references/smithers/packages/scheduler/package.json index 846e5cf95..6774c4d12 100644 --- a/docs/references/smithers/packages/scheduler/package.json +++ b/docs/references/smithers/packages/scheduler/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/scheduler", + "name": "@smthrs/scheduler", "version": "0.23.0", "description": "Pure decision engine: session, scheduler, and task state management for Smithers workflows", "type": "module", @@ -180,8 +180,8 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", + "@smthrs/errors": "^0.33.0", + "@smthrs/graph": "^0.33.0", "effect": "^3.21.1" }, "devDependencies": { diff --git a/docs/references/smithers/packages/scheduler/src/EngineDecision.ts b/docs/references/smithers/packages/scheduler/src/EngineDecision.ts index 08d29d861..d93691119 100644 --- a/docs/references/smithers/packages/scheduler/src/EngineDecision.ts +++ b/docs/references/smithers/packages/scheduler/src/EngineDecision.ts @@ -1,4 +1,4 @@ -import type { TaskDescriptor } from "@smithers-orchestrator/graph"; +import type { TaskDescriptor } from "@smthrs/graph"; import type { ContinueAsNewTransition } from "./ContinueAsNewTransition.ts"; import type { RenderContext } from "./RenderContext.ts"; import type { RunResult } from "./RunResult.ts"; diff --git a/docs/references/smithers/packages/scheduler/src/RenderContext.ts b/docs/references/smithers/packages/scheduler/src/RenderContext.ts index 882959548..ab7949693 100644 --- a/docs/references/smithers/packages/scheduler/src/RenderContext.ts +++ b/docs/references/smithers/packages/scheduler/src/RenderContext.ts @@ -1,4 +1,4 @@ -import type { WorkflowGraph } from "@smithers-orchestrator/graph"; +import type { WorkflowGraph } from "@smthrs/graph"; import type { TaskOutput } from "./TaskOutput.ts"; export type RenderContext = { diff --git a/docs/references/smithers/packages/scheduler/src/ScheduleResult.ts b/docs/references/smithers/packages/scheduler/src/ScheduleResult.ts index a8f095a43..c1c46694a 100644 --- a/docs/references/smithers/packages/scheduler/src/ScheduleResult.ts +++ b/docs/references/smithers/packages/scheduler/src/ScheduleResult.ts @@ -1,4 +1,4 @@ -import type { TaskDescriptor } from "@smithers-orchestrator/graph"; +import type { TaskDescriptor } from "@smthrs/graph"; import type { ContinuationRequest } from "./ContinuationRequest.ts"; import type { RalphMeta } from "./RalphMeta.ts"; diff --git a/docs/references/smithers/packages/scheduler/src/Scheduler.js b/docs/references/smithers/packages/scheduler/src/Scheduler.js index 08bf56a76..2d7fbe65a 100644 --- a/docs/references/smithers/packages/scheduler/src/Scheduler.js +++ b/docs/references/smithers/packages/scheduler/src/Scheduler.js @@ -1,5 +1,5 @@ import { Context } from "effect"; -/** @typedef {import("@smithers-orchestrator/graph").TaskDescriptor} TaskDescriptor */ +/** @typedef {import("@smthrs/graph").TaskDescriptor} TaskDescriptor */ /** @typedef {import("./TaskStateMap.ts").TaskStateMap} TaskStateMap */ /** @typedef {import("./PlanNode.ts").PlanNode} PlanNode */ /** @typedef {import("./RalphStateMap.ts").RalphStateMap} RalphStateMap */ diff --git a/docs/references/smithers/packages/scheduler/src/TaskRecord.ts b/docs/references/smithers/packages/scheduler/src/TaskRecord.ts index c6cc28b59..04fd8a25a 100644 --- a/docs/references/smithers/packages/scheduler/src/TaskRecord.ts +++ b/docs/references/smithers/packages/scheduler/src/TaskRecord.ts @@ -1,4 +1,4 @@ -import type { TaskDescriptor } from "@smithers-orchestrator/graph"; +import type { TaskDescriptor } from "@smthrs/graph"; import type { TaskState } from "./TaskState.ts"; export type TaskRecord = { diff --git a/docs/references/smithers/packages/scheduler/src/WorkflowSessionService.ts b/docs/references/smithers/packages/scheduler/src/WorkflowSessionService.ts index 582209b44..d454014b4 100644 --- a/docs/references/smithers/packages/scheduler/src/WorkflowSessionService.ts +++ b/docs/references/smithers/packages/scheduler/src/WorkflowSessionService.ts @@ -1,5 +1,5 @@ import type { Effect } from "effect"; -import type { WorkflowGraph } from "@smithers-orchestrator/graph"; +import type { WorkflowGraph } from "@smthrs/graph"; import type { TaskStateMap } from "./TaskStateMap.ts"; import type { ApprovalResolution } from "./ApprovalResolution.ts"; import type { ScheduleSnapshot } from "./ScheduleSnapshot.ts"; diff --git a/docs/references/smithers/packages/scheduler/src/buildPlanTree.js b/docs/references/smithers/packages/scheduler/src/buildPlanTree.js index 8dcc6f29a..7fa8a3146 100644 --- a/docs/references/smithers/packages/scheduler/src/buildPlanTree.js +++ b/docs/references/smithers/packages/scheduler/src/buildPlanTree.js @@ -1,8 +1,8 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** @typedef {import("./PlanNode.ts").PlanNode} PlanNode */ /** @typedef {import("./RalphMeta.ts").RalphMeta} RalphMeta */ /** @typedef {import("./RalphStateMap.ts").RalphStateMap} RalphStateMap */ -/** @typedef {import("@smithers-orchestrator/graph").XmlNode} XmlNode */ +/** @typedef {import("@smthrs/graph").XmlNode} XmlNode */ /** * @param {string} prefix diff --git a/docs/references/smithers/packages/scheduler/src/index.d.ts b/docs/references/smithers/packages/scheduler/src/index.d.ts index 8207bb678..1802500e3 100644 --- a/docs/references/smithers/packages/scheduler/src/index.d.ts +++ b/docs/references/smithers/packages/scheduler/src/index.d.ts @@ -1,7 +1,7 @@ import * as effect from 'effect'; import { Context, Layer, Effect, Schedule } from 'effect'; -import * as _smithers_graph from '@smithers-orchestrator/graph'; -import { TaskDescriptor as TaskDescriptor$3, WorkflowGraph } from '@smithers-orchestrator/graph'; +import * as _smithers_graph from '@smthrs/graph'; +import { TaskDescriptor as TaskDescriptor$3, WorkflowGraph } from '@smthrs/graph'; type TaskState$2 = "pending" | "waiting-approval" | "waiting-event" | "waiting-timer" | "in-progress" | "finished" | "failed" | "cancelled" | "skipped"; @@ -307,7 +307,7 @@ declare function cloneTaskStateMap(states: ReadonlyTaskStateMap$1): TaskStateMap type ReadonlyTaskStateMap$1 = ReadonlyTaskStateMap$2; type TaskStateMap$3 = TaskStateMap$4; -/** @typedef {import("@smithers-orchestrator/graph").TaskDescriptor} TaskDescriptor */ +/** @typedef {import("@smthrs/graph").TaskDescriptor} TaskDescriptor */ /** @typedef {import("./TaskState.ts").TaskState} TaskState */ /** * @param {TaskState} state diff --git a/docs/references/smithers/packages/scheduler/src/isTerminalState.js b/docs/references/smithers/packages/scheduler/src/isTerminalState.js index 85efabbe9..24301b8a4 100644 --- a/docs/references/smithers/packages/scheduler/src/isTerminalState.js +++ b/docs/references/smithers/packages/scheduler/src/isTerminalState.js @@ -1,5 +1,5 @@ -/** @typedef {import("@smithers-orchestrator/graph").TaskDescriptor} TaskDescriptor */ +/** @typedef {import("@smthrs/graph").TaskDescriptor} TaskDescriptor */ /** @typedef {import("./TaskState.ts").TaskState} TaskState */ /** * @param {TaskState} state diff --git a/docs/references/smithers/packages/scheduler/src/makeWorkflowSession.js b/docs/references/smithers/packages/scheduler/src/makeWorkflowSession.js index 62f89b544..233dc412e 100644 --- a/docs/references/smithers/packages/scheduler/src/makeWorkflowSession.js +++ b/docs/references/smithers/packages/scheduler/src/makeWorkflowSession.js @@ -1,6 +1,6 @@ import { Effect } from "effect"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { buildPlanTree } from "./buildPlanTree.js"; import { buildStateKey } from "./buildStateKey.js"; import { cloneTaskStateMap } from "./cloneTaskStateMap.js"; diff --git a/docs/references/smithers/packages/scheduler/src/scheduleTasks.js b/docs/references/smithers/packages/scheduler/src/scheduleTasks.js index 4218dc44b..316da278c 100644 --- a/docs/references/smithers/packages/scheduler/src/scheduleTasks.js +++ b/docs/references/smithers/packages/scheduler/src/scheduleTasks.js @@ -5,7 +5,7 @@ import { buildStateKey } from "./buildStateKey.js"; /** @typedef {import("./RalphStateMap.ts").RalphStateMap} RalphStateMap */ /** @typedef {import("./RetryWaitMap.ts").RetryWaitMap} RetryWaitMap */ /** @typedef {import("./ScheduleResult.ts").ScheduleResult} ScheduleResult */ -/** @typedef {import("@smithers-orchestrator/graph").TaskDescriptor} TaskDescriptor */ +/** @typedef {import("@smthrs/graph").TaskDescriptor} TaskDescriptor */ /** @typedef {import("./TaskStateMap.ts").TaskStateMap} TaskStateMap */ /** diff --git a/docs/references/smithers/packages/scorers/package.json b/docs/references/smithers/packages/scorers/package.json index 21e826b88..016e8145d 100644 --- a/docs/references/smithers/packages/scorers/package.json +++ b/docs/references/smithers/packages/scorers/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/scorers", + "name": "@smthrs/scorers", "version": "0.23.0", "description": "Smithers scorer definitions, execution, aggregation, and persistence helpers", "type": "module", @@ -35,12 +35,12 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "dependencies": { - "@smithers-orchestrator/agents": "workspace:*", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", + "@smthrs/agents": "^0.33.0", + "@smthrs/db": "^0.33.0", + "@smthrs/errors": "^0.33.0", + "@smthrs/graph": "^0.33.0", + "@smthrs/observability": "^0.33.0", + "@smthrs/scheduler": "^0.33.0", "drizzle-orm": "^0.45.2", "effect": "^3.21.1", "zod": "^4.3.6" diff --git a/docs/references/smithers/packages/scorers/src/LlmJudgeConfig.ts b/docs/references/smithers/packages/scorers/src/LlmJudgeConfig.ts index 0b7d79c45..125be2e1a 100644 --- a/docs/references/smithers/packages/scorers/src/LlmJudgeConfig.ts +++ b/docs/references/smithers/packages/scorers/src/LlmJudgeConfig.ts @@ -1,4 +1,4 @@ -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { ScorerInput } from "./types"; export type LlmJudgeConfig = { diff --git a/docs/references/smithers/packages/scorers/src/aggregate.js b/docs/references/smithers/packages/scorers/src/aggregate.js index e386fa5ad..0840dcea7 100644 --- a/docs/references/smithers/packages/scorers/src/aggregate.js +++ b/docs/references/smithers/packages/scorers/src/aggregate.js @@ -1,7 +1,7 @@ // @smithers-type-exports-begin /** @typedef {import("./AggregateOptions.js").AggregateOptions} AggregateOptions */ /** @typedef {import("./types.js").AggregateScore} AggregateScore */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ // @smithers-type-exports-end /** diff --git a/docs/references/smithers/packages/scorers/src/faithfulnessScorer.js b/docs/references/smithers/packages/scorers/src/faithfulnessScorer.js index 66d19bc83..d2043b0ff 100644 --- a/docs/references/smithers/packages/scorers/src/faithfulnessScorer.js +++ b/docs/references/smithers/packages/scorers/src/faithfulnessScorer.js @@ -1,5 +1,5 @@ import { llmJudge } from "./llmJudge.js"; -/** @typedef {import("@smithers-orchestrator/agents/AgentLike").AgentLike} AgentLike */ +/** @typedef {import("@smthrs/agents/AgentLike").AgentLike} AgentLike */ /** @typedef {import("./types.js").Scorer} Scorer */ /** diff --git a/docs/references/smithers/packages/scorers/src/index.d.ts b/docs/references/smithers/packages/scorers/src/index.d.ts index 47b9a3e97..08ae684ef 100644 --- a/docs/references/smithers/packages/scorers/src/index.d.ts +++ b/docs/references/smithers/packages/scorers/src/index.d.ts @@ -1,7 +1,7 @@ -import * as _smithers_agents_AgentLike from '@smithers-orchestrator/agents/AgentLike'; -import { AgentLike as AgentLike$3 } from '@smithers-orchestrator/agents/AgentLike'; +import * as _smithers_agents_AgentLike from '@smthrs/agents/AgentLike'; +import { AgentLike as AgentLike$3 } from '@smthrs/agents/AgentLike'; import { ZodObject } from 'zod'; -import * as _smithers_db_adapter from '@smithers-orchestrator/db/adapter'; +import * as _smithers_db_adapter from '@smthrs/db/adapter'; import * as effect_MetricState from 'effect/MetricState'; import * as effect_MetricKeyType from 'effect/MetricKeyType'; import { Metric } from 'effect'; @@ -134,7 +134,7 @@ type AggregateOptions$2 = { /** @typedef {import("./AggregateOptions.js").AggregateOptions} AggregateOptions */ /** @typedef {import("./types.js").AggregateScore} AggregateScore */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * Computes aggregate statistics for scorer results. * @@ -210,7 +210,7 @@ declare function llmJudge(config: LlmJudgeConfig$1): Scorer$6; type LlmJudgeConfig$1 = LlmJudgeConfig$2; type Scorer$6 = Scorer$8; -/** @typedef {import("@smithers-orchestrator/agents/AgentLike").AgentLike} AgentLike */ +/** @typedef {import("@smthrs/agents/AgentLike").AgentLike} AgentLike */ /** @typedef {import("./types.js").Scorer} Scorer */ /** * Creates a relevancy scorer that uses an LLM judge to evaluate whether @@ -223,7 +223,7 @@ declare function relevancyScorer(judge: AgentLike$2): Scorer$5; type AgentLike$2 = _smithers_agents_AgentLike.AgentLike; type Scorer$5 = Scorer$8; -/** @typedef {import("@smithers-orchestrator/agents/AgentLike").AgentLike} AgentLike */ +/** @typedef {import("@smthrs/agents/AgentLike").AgentLike} AgentLike */ /** @typedef {import("./types.js").Scorer} Scorer */ /** * Creates a toxicity scorer that uses an LLM judge to detect toxic, @@ -236,7 +236,7 @@ declare function toxicityScorer(judge: AgentLike$1): Scorer$4; type AgentLike$1 = _smithers_agents_AgentLike.AgentLike; type Scorer$4 = Scorer$8; -/** @typedef {import("@smithers-orchestrator/agents/AgentLike").AgentLike} AgentLike */ +/** @typedef {import("@smthrs/agents/AgentLike").AgentLike} AgentLike */ /** @typedef {import("./types.js").Scorer} Scorer */ /** * Creates a faithfulness scorer that uses an LLM judge to check whether diff --git a/docs/references/smithers/packages/scorers/src/metrics.js b/docs/references/smithers/packages/scorers/src/metrics.js index 1b9d85926..ea48bf91e 100644 --- a/docs/references/smithers/packages/scorers/src/metrics.js +++ b/docs/references/smithers/packages/scorers/src/metrics.js @@ -3,4 +3,4 @@ export { scorersFailed, scorersFinished, scorersStarted, -} from "@smithers-orchestrator/observability/metrics"; +} from "@smthrs/observability/metrics"; diff --git a/docs/references/smithers/packages/scorers/src/react-types.ts b/docs/references/smithers/packages/scorers/src/react-types.ts index d4c9ea606..f4d54afb6 100644 --- a/docs/references/smithers/packages/scorers/src/react-types.ts +++ b/docs/references/smithers/packages/scorers/src/react-types.ts @@ -1 +1 @@ -export type { ScorersMap } from "@smithers-orchestrator/graph/types"; +export type { ScorersMap } from "@smthrs/graph/types"; diff --git a/docs/references/smithers/packages/scorers/src/relevancyScorer.js b/docs/references/smithers/packages/scorers/src/relevancyScorer.js index 391fc7f63..a7054a281 100644 --- a/docs/references/smithers/packages/scorers/src/relevancyScorer.js +++ b/docs/references/smithers/packages/scorers/src/relevancyScorer.js @@ -1,5 +1,5 @@ import { llmJudge } from "./llmJudge.js"; -/** @typedef {import("@smithers-orchestrator/agents/AgentLike").AgentLike} AgentLike */ +/** @typedef {import("@smthrs/agents/AgentLike").AgentLike} AgentLike */ /** @typedef {import("./types.js").Scorer} Scorer */ /** diff --git a/docs/references/smithers/packages/scorers/src/run-scorers.js b/docs/references/smithers/packages/scorers/src/run-scorers.js index f4cbb23c4..a28b719af 100644 --- a/docs/references/smithers/packages/scorers/src/run-scorers.js +++ b/docs/references/smithers/packages/scorers/src/run-scorers.js @@ -1,15 +1,15 @@ import { Effect, Metric } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { scorerDuration, scorersFinished, scorersFailed, scorersStarted } from "./metrics.js"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; +import { nowMs } from "@smthrs/scheduler/nowMs"; import crypto from "node:crypto"; /** @typedef {{ emit: (eventName: "event", event: unknown) => unknown }} EventBus */ /** @typedef {import("./types.js").ScoreResult} ScoreResult */ /** @typedef {import("./types.js").ScorerContext} ScorerContext */ /** @typedef {import("./types.js").ScorerBinding} ScorerBinding */ /** @typedef {import("./types.js").ScorersMap} ScorersMap */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ // --------------------------------------------------------------------------- // Sampling diff --git a/docs/references/smithers/packages/scorers/src/schema.js b/docs/references/smithers/packages/scorers/src/schema.js index 45358ec25..1b8e46fbd 100644 --- a/docs/references/smithers/packages/scorers/src/schema.js +++ b/docs/references/smithers/packages/scorers/src/schema.js @@ -1 +1 @@ -export { smithersScorers } from "@smithers-orchestrator/db/internal-schema"; +export { smithersScorers } from "@smthrs/db/internal-schema"; diff --git a/docs/references/smithers/packages/scorers/src/toxicityScorer.js b/docs/references/smithers/packages/scorers/src/toxicityScorer.js index 2cbb56a61..19e667a58 100644 --- a/docs/references/smithers/packages/scorers/src/toxicityScorer.js +++ b/docs/references/smithers/packages/scorers/src/toxicityScorer.js @@ -1,5 +1,5 @@ import { llmJudge } from "./llmJudge.js"; -/** @typedef {import("@smithers-orchestrator/agents/AgentLike").AgentLike} AgentLike */ +/** @typedef {import("@smthrs/agents/AgentLike").AgentLike} AgentLike */ /** @typedef {import("./types.js").Scorer} Scorer */ /** diff --git a/docs/references/smithers/packages/scorers/tests/aggregate.test.js b/docs/references/smithers/packages/scorers/tests/aggregate.test.js index 19885637c..12d1843c6 100644 --- a/docs/references/smithers/packages/scorers/tests/aggregate.test.js +++ b/docs/references/smithers/packages/scorers/tests/aggregate.test.js @@ -1,8 +1,8 @@ import { describe, expect, it, beforeEach } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { aggregateScores } from "../src/aggregate.js"; import crypto from "node:crypto"; describe("aggregateScores", () => { diff --git a/docs/references/smithers/packages/scorers/tests/e2e.test.js b/docs/references/smithers/packages/scorers/tests/e2e.test.js index 7fdce867e..8bbd6460c 100644 --- a/docs/references/smithers/packages/scorers/tests/e2e.test.js +++ b/docs/references/smithers/packages/scorers/tests/e2e.test.js @@ -1,8 +1,8 @@ import { describe, expect, it, beforeEach, mock } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { createScorer } from "../src/create-scorer.js"; import { schemaAdherenceScorer, latencyScorer } from "../src/builtins.js"; import { runScorersBatch } from "../src/run-scorers.js"; diff --git a/docs/references/smithers/packages/server/package.json b/docs/references/smithers/packages/server/package.json index cd67cfabe..2c721e78a 100644 --- a/docs/references/smithers/packages/server/package.json +++ b/docs/references/smithers/packages/server/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/server", + "name": "@smthrs/server", "version": "0.23.0", "description": "HTTP, WebSocket, gateway, cron, webhook, and metrics servers for Smithers", "type": "module", @@ -26,17 +26,17 @@ }, "dependencies": { "@effect/workflow": "^0.18.0", - "@smithers-orchestrator/components": "workspace:*", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/devtools": "workspace:*", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/engine": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/gateway": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/protocol": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "@smithers-orchestrator/time-travel": "workspace:*", + "@smthrs/components": "^0.33.0", + "@smthrs/db": "^0.33.0", + "@smthrs/devtools": "^0.33.0", + "@smthrs/driver": "^0.33.0", + "@smthrs/engine": "^0.33.0", + "@smthrs/errors": "^0.33.0", + "@smthrs/gateway": "^0.33.0", + "@smthrs/observability": "^0.33.0", + "@smthrs/protocol": "^0.33.0", + "@smthrs/scheduler": "^0.33.0", + "@smthrs/time-travel": "^0.33.0", "cron-parser": "^5.5.0", "drizzle-orm": "^0.45.2", "effect": "^3.21.1", @@ -44,7 +44,7 @@ "ws": "^8.20.0" }, "devDependencies": { - "@smithers-orchestrator/graph": "workspace:*", + "@smthrs/graph": "^0.33.0", "@types/bun": "latest", "react": "^19.2.5", "typescript": "~5.9.3", diff --git a/docs/references/smithers/packages/server/src/GatewayExtensions.js b/docs/references/smithers/packages/server/src/GatewayExtensions.js index 597e48049..25f6fd0ec 100644 --- a/docs/references/smithers/packages/server/src/GatewayExtensions.js +++ b/docs/references/smithers/packages/server/src/GatewayExtensions.js @@ -15,7 +15,7 @@ // Namespace ownership is one-shot per registry: re-registering a namespace // throws so two extensions cannot silently overwrite each other's keys. -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; const EXTENSION_METHOD_PREFIX = "ext."; const EXTENSION_STREAM_METHOD_PREFIX = "ext.stream."; diff --git a/docs/references/smithers/packages/server/src/ServeOptions.ts b/docs/references/smithers/packages/server/src/ServeOptions.ts index 5e467179c..42af4bb01 100644 --- a/docs/references/smithers/packages/server/src/ServeOptions.ts +++ b/docs/references/smithers/packages/server/src/ServeOptions.ts @@ -1,5 +1,5 @@ -import type { SmithersWorkflow } from "@smithers-orchestrator/components/SmithersWorkflow"; -import type { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import type { SmithersWorkflow } from "@smthrs/components/SmithersWorkflow"; +import type { SmithersDb } from "@smthrs/db/adapter"; export type ServeOptions = { workflow: SmithersWorkflow<unknown>; diff --git a/docs/references/smithers/packages/server/src/gateway.js b/docs/references/smithers/packages/server/src/gateway.js index 26adf211c..747576ad9 100644 --- a/docs/references/smithers/packages/server/src/gateway.js +++ b/docs/references/smithers/packages/server/src/gateway.js @@ -13,32 +13,32 @@ import { resolve } from "node:path"; import { CronExpressionParser } from "cron-parser"; import { Effect, Metric } from "effect"; import { WebSocketServer } from "ws"; -import { runWorkflow } from "@smithers-orchestrator/engine"; -import { approveNode, denyNode } from "@smithers-orchestrator/engine/approvals"; -import { signalRun } from "@smithers-orchestrator/engine/signals"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { computeRunStateFromRow } from "@smithers-orchestrator/db/runState"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { devtoolsActiveSubscribers, devtoolsBackpressureDisconnectTotal, devtoolsDeltaBuildMs, devtoolsEventBytes, devtoolsEventTotal, devtoolsSnapshotBuildMs, devtoolsSubscribeTotal, gatewayApprovalDecisionsTotal, gatewayAuthEventsTotal, gatewayConnectionsActive, gatewayConnectionsClosedTotal, gatewayConnectionsTotal, gatewayCronTriggersTotal, gatewayErrorsTotal, gatewayHeartbeatTicksTotal, gatewayMessagesReceivedTotal, gatewayMessagesSentTotal, gatewayRpcCallsTotal, gatewayRpcDuration, gatewayRunsCompletedTotal, gatewayRunsStartedTotal, gatewaySignalsTotal, gatewayWebhooksReceivedTotal, gatewayWebhooksRejectedTotal, gatewayWebhooksVerifiedTotal, } from "@smithers-orchestrator/observability/metrics"; +import { runWorkflow } from "@smthrs/engine"; +import { approveNode, denyNode } from "@smthrs/engine/approvals"; +import { signalRun } from "@smthrs/engine/signals"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { computeRunStateFromRow } from "@smthrs/db/runState"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { devtoolsActiveSubscribers, devtoolsBackpressureDisconnectTotal, devtoolsDeltaBuildMs, devtoolsEventBytes, devtoolsEventTotal, devtoolsSnapshotBuildMs, devtoolsSubscribeTotal, gatewayApprovalDecisionsTotal, gatewayAuthEventsTotal, gatewayConnectionsActive, gatewayConnectionsClosedTotal, gatewayConnectionsTotal, gatewayCronTriggersTotal, gatewayErrorsTotal, gatewayHeartbeatTicksTotal, gatewayMessagesReceivedTotal, gatewayMessagesSentTotal, gatewayRpcCallsTotal, gatewayRpcDuration, gatewayRunsCompletedTotal, gatewayRunsStartedTotal, gatewaySignalsTotal, gatewayWebhooksReceivedTotal, gatewayWebhooksRejectedTotal, gatewayWebhooksVerifiedTotal, } from "@smthrs/observability/metrics"; import { runFork, runPromise } from "./smithersRuntime.js"; -import { prometheusContentType, renderPrometheusMetrics } from "@smithers-orchestrator/observability"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; -import { errorToJson } from "@smithers-orchestrator/errors/errorToJson"; -import { isSmithersError } from "@smithers-orchestrator/errors/isSmithersError"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { assertJsonPayloadWithinBounds, assertOptionalStringMaxLength, assertPositiveFiniteInteger, } from "@smithers-orchestrator/db/input-bounds"; -import { loadLatestSnapshot } from "@smithers-orchestrator/time-travel/snapshot"; -import { diffRawSnapshots } from "@smithers-orchestrator/time-travel/diff"; +import { prometheusContentType, renderPrometheusMetrics } from "@smthrs/observability"; +import { nowMs } from "@smthrs/scheduler/nowMs"; +import { errorToJson } from "@smthrs/errors/errorToJson"; +import { isSmithersError } from "@smthrs/errors/isSmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { assertJsonPayloadWithinBounds, assertOptionalStringMaxLength, assertPositiveFiniteInteger, } from "@smthrs/db/input-bounds"; +import { loadLatestSnapshot } from "@smthrs/time-travel/snapshot"; +import { diffRawSnapshots } from "@smthrs/time-travel/diff"; import { getNodeOutputRoute } from "./gatewayRoutes/getNodeOutput.js"; import { NodeOutputRouteError } from "./gatewayRoutes/NodeOutputRouteError.js"; import { getNodeDiffRoute } from "./gatewayRoutes/getNodeDiff.js"; import { DevToolsRouteError, getDevToolsSnapshotRoute, validateFrameNoInput, validateFromSeqInput, validateRunId } from "./gatewayRoutes/getDevToolsSnapshot.js"; import { streamDevToolsRoute } from "./gatewayRoutes/streamDevTools.js"; import { jumpToFrameRoute, JumpToFrameError } from "./gatewayRoutes/jumpToFrame.js"; -import { writeRewindAuditRow } from "@smithers-orchestrator/time-travel/writeRewindAuditRow"; -import { recoverInProgressRewindAudits } from "@smithers-orchestrator/time-travel/recoverInProgressRewindAudits"; -import { GATEWAY_EVENT_WINDOW_DEFAULT, SMITHERS_API_VERSION, getRequiredScopeForGatewayMethod, } from "@smithers-orchestrator/gateway/rpc"; -import { hasGatewayScope } from "@smithers-orchestrator/gateway/auth/scopes"; +import { writeRewindAuditRow } from "@smthrs/time-travel/writeRewindAuditRow"; +import { recoverInProgressRewindAudits } from "@smthrs/time-travel/recoverInProgressRewindAudits"; +import { GATEWAY_EVENT_WINDOW_DEFAULT, SMITHERS_API_VERSION, getRequiredScopeForGatewayMethod, } from "@smthrs/gateway/rpc"; +import { hasGatewayScope } from "@smthrs/gateway/auth/scopes"; import { EXTENSION_BACKPRESSURE_DISCONNECT_CODE, EXTENSION_METHOD_NOT_FOUND_CODE, EXTENSION_PAYLOAD_MAX_BYTES, EXTENSION_STREAM_OUTBOUND_QUEUE_LIMIT, EXTENSION_WS_BUFFERED_HIGH_WATER_BYTES, GatewayExtensions, isExtensionMethod, } from "./GatewayExtensions.js"; import { createGatewayUiApp } from "./gatewayUi/createGatewayUiApp.js"; import { renderDefaultConsoleClient } from "./gatewayUi/defaultConsole.js"; @@ -56,8 +56,8 @@ import { DEFAULT_OPERATOR_UI_ENTRY } from "./gatewayUi/defaultOperatorUi.js"; /** @typedef {import("./RequestFrame.js").RequestFrame} RequestFrame */ /** @typedef {import("./ResponseFrame.js").ResponseFrame} ResponseFrame */ /** @typedef {import("node:http").ServerResponse} ServerResponse */ -/** @typedef {import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow<unknown>} SmithersWorkflow */ -/** @typedef {import("@smithers-orchestrator/observability/SmithersEvent").SmithersEvent} SmithersEvent */ +/** @typedef {import("@smthrs/components/SmithersWorkflow").SmithersWorkflow<unknown>} SmithersWorkflow */ +/** @typedef {import("@smthrs/observability/SmithersEvent").SmithersEvent} SmithersEvent */ /** @typedef {Record<string, string | number | null | undefined>} GatewayMetricLabels */ /** @typedef {"ws" | "http"} GatewayTransport */ /** @@ -628,7 +628,7 @@ function responseError(id, code, message, details = {}) { /** * @param {string} id * @param {string} method - * @param {{ requiredScopeForMethod?: (method: string) => import("@smithers-orchestrator/gateway/auth/scopes").GatewayScope | undefined }} [registry] + * @param {{ requiredScopeForMethod?: (method: string) => import("@smthrs/gateway/auth/scopes").GatewayScope | undefined }} [registry] * @returns {ResponseFrame} */ function responseForbidden(id, method, registry) { @@ -849,8 +849,8 @@ function normalizeGrantedScope(scope) { } /** * @param {string} method - * @param {{ requiredScopeForMethod?: (method: string) => import("@smithers-orchestrator/gateway/auth/scopes").GatewayScope | undefined }} [registry] - * @returns {import("@smithers-orchestrator/gateway/auth/scopes").GatewayScope} + * @param {{ requiredScopeForMethod?: (method: string) => import("@smthrs/gateway/auth/scopes").GatewayScope | undefined }} [registry] + * @returns {import("@smthrs/gateway/auth/scopes").GatewayScope} */ function requiredScopeForMethod(method, registry) { if (method === "run:read" || @@ -877,7 +877,7 @@ function requiredScopeForMethod(method, registry) { /** * @param {string[]} scopes * @param {string} method - * @param {{ requiredScopeForMethod?: (method: string) => import("@smithers-orchestrator/gateway/auth/scopes").GatewayScope | undefined }} [registry] + * @param {{ requiredScopeForMethod?: (method: string) => import("@smthrs/gateway/auth/scopes").GatewayScope | undefined }} [registry] * @returns {boolean} */ function hasScope(scopes, method, registry) { diff --git a/docs/references/smithers/packages/server/src/gatewayRoutes/GetNodeDiffRouteResult.ts b/docs/references/smithers/packages/server/src/gatewayRoutes/GetNodeDiffRouteResult.ts index 4a0e344a5..6d4a7e8d6 100644 --- a/docs/references/smithers/packages/server/src/gatewayRoutes/GetNodeDiffRouteResult.ts +++ b/docs/references/smithers/packages/server/src/gatewayRoutes/GetNodeDiffRouteResult.ts @@ -1,4 +1,4 @@ -import type { DiffBundle } from "@smithers-orchestrator/engine/effect/DiffBundle"; +import type { DiffBundle } from "@smthrs/engine/effect/DiffBundle"; import type { DiffSummary } from "./DiffSummary"; export type GetNodeDiffStatPayload = { diff --git a/docs/references/smithers/packages/server/src/gatewayRoutes/NodeOutputRouteError.js b/docs/references/smithers/packages/server/src/gatewayRoutes/NodeOutputRouteError.js index 9d362ed73..abaaae985 100644 --- a/docs/references/smithers/packages/server/src/gatewayRoutes/NodeOutputRouteError.js +++ b/docs/references/smithers/packages/server/src/gatewayRoutes/NodeOutputRouteError.js @@ -1,4 +1,4 @@ -/** @typedef {import("@smithers-orchestrator/protocol/errors").NodeOutputErrorCode} NodeOutputErrorCode */ +/** @typedef {import("@smthrs/protocol/errors").NodeOutputErrorCode} NodeOutputErrorCode */ export class NodeOutputRouteError extends Error { /** diff --git a/docs/references/smithers/packages/server/src/gatewayRoutes/getDevToolsSnapshot.js b/docs/references/smithers/packages/server/src/gatewayRoutes/getDevToolsSnapshot.js index 9d07c825b..4a23cc144 100644 --- a/docs/references/smithers/packages/server/src/gatewayRoutes/getDevToolsSnapshot.js +++ b/docs/references/smithers/packages/server/src/gatewayRoutes/getDevToolsSnapshot.js @@ -1,11 +1,11 @@ -import { SmithersDevToolsCore, snapshotSerialize } from "@smithers-orchestrator/devtools"; -import { computeRunStateFromRow } from "@smithers-orchestrator/db/runState"; +import { SmithersDevToolsCore, snapshotSerialize } from "@smthrs/devtools"; +import { computeRunStateFromRow } from "@smthrs/db/runState"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/protocol/devtools").DevToolsNode} DevToolsNode */ -/** @typedef {import("@smithers-orchestrator/protocol/devtools").DevToolsSnapshot} DevToolsSnapshot */ -/** @typedef {import("@smithers-orchestrator/protocol/devtools").DevToolsNodeType} DevToolsNodeType */ -/** @typedef {import("@smithers-orchestrator/devtools/snapshotSerializer").SnapshotSerializerWarning} SnapshotSerializerWarning */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/protocol/devtools").DevToolsNode} DevToolsNode */ +/** @typedef {import("@smthrs/protocol/devtools").DevToolsSnapshot} DevToolsSnapshot */ +/** @typedef {import("@smthrs/protocol/devtools").DevToolsNodeType} DevToolsNodeType */ +/** @typedef {import("@smthrs/devtools/snapshotSerializer").SnapshotSerializerWarning} SnapshotSerializerWarning */ export const DEVTOOLS_RUN_ID_PATTERN = /^[a-z0-9_-]{1,64}$/; export const DEVTOOLS_MAX_FRAME_NO = 2_147_483_647; diff --git a/docs/references/smithers/packages/server/src/gatewayRoutes/getNodeDiff.js b/docs/references/smithers/packages/server/src/gatewayRoutes/getNodeDiff.js index 69625b7b5..7bdbec99a 100644 --- a/docs/references/smithers/packages/server/src/gatewayRoutes/getNodeDiff.js +++ b/docs/references/smithers/packages/server/src/gatewayRoutes/getNodeDiff.js @@ -1,11 +1,11 @@ import { spawn } from "node:child_process"; import { Effect, Metric } from "effect"; -import { NodeDiffCache, NodeDiffTooLargeError } from "@smithers-orchestrator/db/cache/nodeDiffCache"; -import { computeDiffBundleBetweenRefs } from "@smithers-orchestrator/engine/effect/diff-bundle"; +import { NodeDiffCache, NodeDiffTooLargeError } from "@smthrs/db/cache/nodeDiffCache"; +import { computeDiffBundleBetweenRefs } from "@smthrs/engine/effect/diff-bundle"; import { runPromise } from "../smithersRuntime.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/db/adapter").AttemptRow} AttemptRow */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").AttemptRow} AttemptRow */ /** @typedef {import("./GetNodeDiffRouteResult.js").GetNodeDiffRouteResult} GetNodeDiffRouteResult */ /** @typedef {import("./DiffSummary.js").DiffSummary} DiffSummary */ const RUN_ID_PATTERN = /^[a-z0-9_-]{1,64}$/; @@ -255,8 +255,8 @@ function scheduleCacheRowGauge(cache, emitEffect, nowMs) { * iteration: unknown; * resolveRun: (runId: string) => Promise<{ adapter: SmithersDb } | null>; * emitEffect?: (effect: Effect.Effect<void>) => Promise<unknown>; - * computeDiffBundleImpl?: (baseRef: string, cwd: string, seq?: number) => Promise<import("@smithers-orchestrator/engine/effect/DiffBundle").DiffBundle>; - * computeDiffBundleBetweenRefsImpl?: (baseRef: string, targetRef: string, cwd: string, seq?: number) => Promise<import("@smithers-orchestrator/engine/effect/DiffBundle").DiffBundle>; + * computeDiffBundleImpl?: (baseRef: string, cwd: string, seq?: number) => Promise<import("@smthrs/engine/effect/DiffBundle").DiffBundle>; + * computeDiffBundleBetweenRefsImpl?: (baseRef: string, targetRef: string, cwd: string, seq?: number) => Promise<import("@smthrs/engine/effect/DiffBundle").DiffBundle>; * getCurrentPointerImpl?: (cwd: string) => Promise<string | null>; * resolveCommitPointerImpl?: (pointer: string, cwd: string) => Promise<string | null>; * restorePointerImpl?: (pointer: string, cwd: string) => Promise<{ success: boolean; error?: string }>; diff --git a/docs/references/smithers/packages/server/src/gatewayRoutes/getNodeOutput.js b/docs/references/smithers/packages/server/src/gatewayRoutes/getNodeOutput.js index f0eee2abf..13ea752bd 100644 --- a/docs/references/smithers/packages/server/src/gatewayRoutes/getNodeOutput.js +++ b/docs/references/smithers/packages/server/src/gatewayRoutes/getNodeOutput.js @@ -1,7 +1,7 @@ import { getTableName } from "drizzle-orm"; import { Effect, Metric, MetricBoundaries } from "effect"; -import { getAgentOutputSchema, selectOutputRow, stripAutoColumns } from "@smithers-orchestrator/db/output"; -import { buildOutputSchemaDescriptor } from "@smithers-orchestrator/db/output-schema-descriptor"; +import { getAgentOutputSchema, selectOutputRow, stripAutoColumns } from "@smthrs/db/output"; +import { buildOutputSchemaDescriptor } from "@smthrs/db/output-schema-descriptor"; import { runPromise } from "../smithersRuntime.js"; import { NodeOutputRouteError } from "./NodeOutputRouteError.js"; import { NODE_OUTPUT_WARN_BYTES } from "./NODE_OUTPUT_WARN_BYTES.js"; @@ -75,7 +75,7 @@ async function swallow(run) { * runId: unknown; * nodeId: unknown; * iteration: unknown; - * resolveRun: (runId: string) => Promise<{ workflow: import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow<unknown>; adapter: import("@smithers-orchestrator/db/adapter").SmithersDb } | null>; + * resolveRun: (runId: string) => Promise<{ workflow: import("@smthrs/components/SmithersWorkflow").SmithersWorkflow<unknown>; adapter: import("@smthrs/db/adapter").SmithersDb } | null>; * selectOutputRowImpl?: typeof selectOutputRow; * emitEffect?: (effect: Effect.Effect<void>) => Promise<unknown>; * }} params diff --git a/docs/references/smithers/packages/server/src/gatewayRoutes/jumpToFrame.js b/docs/references/smithers/packages/server/src/gatewayRoutes/jumpToFrame.js index 339b9358d..fa8a5ddf1 100644 --- a/docs/references/smithers/packages/server/src/gatewayRoutes/jumpToFrame.js +++ b/docs/references/smithers/packages/server/src/gatewayRoutes/jumpToFrame.js @@ -1,8 +1,8 @@ -import { jumpToFrame, JumpToFrameError } from "@smithers-orchestrator/time-travel/jumpToFrame"; +import { jumpToFrame, JumpToFrameError } from "@smthrs/time-travel/jumpToFrame"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/observability/SmithersEvent").SmithersEvent} SmithersEvent */ -/** @typedef {import("@smithers-orchestrator/time-travel/jumpToFrame").JumpResult} JumpResult */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/observability/SmithersEvent").SmithersEvent} SmithersEvent */ +/** @typedef {import("@smthrs/time-travel/jumpToFrame").JumpResult} JumpResult */ /** * Gateway wrapper around time-travel jump orchestration. diff --git a/docs/references/smithers/packages/server/src/gatewayRoutes/streamDevTools.js b/docs/references/smithers/packages/server/src/gatewayRoutes/streamDevTools.js index 201fc7b86..458c31bfb 100644 --- a/docs/references/smithers/packages/server/src/gatewayRoutes/streamDevTools.js +++ b/docs/references/smithers/packages/server/src/gatewayRoutes/streamDevTools.js @@ -1,5 +1,5 @@ import { Effect } from "effect"; -import { diffSnapshots } from "@smithers-orchestrator/devtools"; +import { diffSnapshots } from "@smthrs/devtools"; import { runPromise } from "../smithersRuntime.js"; import { DevToolsRouteError, @@ -8,10 +8,10 @@ import { validateRunId, } from "./getDevToolsSnapshot.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/protocol/devtools").DevToolsEvent} DevToolsEvent */ -/** @typedef {import("@smithers-orchestrator/protocol/devtools").DevToolsSnapshot} DevToolsSnapshot */ -/** @typedef {import("@smithers-orchestrator/devtools/snapshotSerializer").SnapshotSerializerWarning} SnapshotSerializerWarning */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/protocol/devtools").DevToolsEvent} DevToolsEvent */ +/** @typedef {import("@smthrs/protocol/devtools").DevToolsSnapshot} DevToolsSnapshot */ +/** @typedef {import("@smthrs/devtools/snapshotSerializer").SnapshotSerializerWarning} SnapshotSerializerWarning */ export const DEVTOOLS_REBASELINE_INTERVAL = 50; export const DEVTOOLS_BACKPRESSURE_LIMIT = 1_000; diff --git a/docs/references/smithers/packages/server/src/gatewayUi/bundle.js b/docs/references/smithers/packages/server/src/gatewayUi/bundle.js index d5f034ee0..73277e9bf 100644 --- a/docs/references/smithers/packages/server/src/gatewayUi/bundle.js +++ b/docs/references/smithers/packages/server/src/gatewayUi/bundle.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** * @param {Record<string, unknown>} config diff --git a/docs/references/smithers/packages/server/src/index.d.ts b/docs/references/smithers/packages/server/src/index.d.ts index ab26df641..0ec51f64f 100644 --- a/docs/references/smithers/packages/server/src/index.d.ts +++ b/docs/references/smithers/packages/server/src/index.d.ts @@ -1,23 +1,23 @@ -import * as _smithers_orchestrator_db_adapter_RunRow from '@smithers-orchestrator/db/adapter/RunRow'; +import * as _smithers_orchestrator_db_adapter_RunRow from '@smthrs/db/adapter/RunRow'; import * as node_http from 'node:http'; -import * as _smithers_orchestrator_observability_SmithersEvent from '@smithers-orchestrator/observability/SmithersEvent'; -import * as _smithers_orchestrator_components_SmithersWorkflow from '@smithers-orchestrator/components/SmithersWorkflow'; -import { SmithersWorkflow as SmithersWorkflow$1 } from '@smithers-orchestrator/components/SmithersWorkflow'; +import * as _smithers_orchestrator_observability_SmithersEvent from '@smthrs/observability/SmithersEvent'; +import * as _smithers_orchestrator_components_SmithersWorkflow from '@smthrs/components/SmithersWorkflow'; +import { SmithersWorkflow as SmithersWorkflow$1 } from '@smthrs/components/SmithersWorkflow'; import * as hono from 'hono'; import { Hono } from 'hono'; import * as hono_types from 'hono/types'; import { Effect } from 'effect'; -import * as _smithers_orchestrator_db_adapter from '@smithers-orchestrator/db/adapter'; -import { SmithersDb as SmithersDb$4 } from '@smithers-orchestrator/db/adapter'; +import * as _smithers_orchestrator_db_adapter from '@smthrs/db/adapter'; +import { SmithersDb as SmithersDb$4 } from '@smthrs/db/adapter'; import * as effect_Fiber from 'effect/Fiber'; -import * as _smithers_orchestrator_protocol_errors from '@smithers-orchestrator/protocol/errors'; -import * as _smithers_orchestrator_devtools_snapshotSerializer from '@smithers-orchestrator/devtools/snapshotSerializer'; -import * as _smithers_orchestrator_protocol_devtools from '@smithers-orchestrator/protocol/devtools'; -import * as _smithers_orchestrator_engine_effect_DiffBundle from '@smithers-orchestrator/engine/effect/DiffBundle'; -import { DiffBundle } from '@smithers-orchestrator/engine/effect/DiffBundle'; -import { selectOutputRow } from '@smithers-orchestrator/db/output'; -import * as _smithers_orchestrator_time_travel_jumpToFrame from '@smithers-orchestrator/time-travel/jumpToFrame'; -export { JumpToFrameError } from '@smithers-orchestrator/time-travel/jumpToFrame'; +import * as _smithers_orchestrator_protocol_errors from '@smthrs/protocol/errors'; +import * as _smithers_orchestrator_devtools_snapshotSerializer from '@smthrs/devtools/snapshotSerializer'; +import * as _smithers_orchestrator_protocol_devtools from '@smthrs/protocol/devtools'; +import * as _smithers_orchestrator_engine_effect_DiffBundle from '@smthrs/engine/effect/DiffBundle'; +import { DiffBundle } from '@smthrs/engine/effect/DiffBundle'; +import { selectOutputRow } from '@smthrs/db/output'; +import * as _smithers_orchestrator_time_travel_jumpToFrame from '@smthrs/time-travel/jumpToFrame'; +export { JumpToFrameError } from '@smthrs/time-travel/jumpToFrame'; type ServerOptions$1 = { port?: number; @@ -1162,7 +1162,7 @@ declare const NODE_OUTPUT_MAX_BYTES: number; declare const NODE_OUTPUT_WARN_BYTES: 1048576; -/** @typedef {import("@smithers-orchestrator/protocol/errors").NodeOutputErrorCode} NodeOutputErrorCode */ +/** @typedef {import("@smthrs/protocol/errors").NodeOutputErrorCode} NodeOutputErrorCode */ declare class NodeOutputRouteError extends Error { /** * @param {NodeOutputErrorCode} code @@ -1240,11 +1240,11 @@ declare function getDevToolsSnapshotRoute(input: { frameNo?: number; onWarning?: (warning: SnapshotSerializerWarning$1) => void; }): Promise<DevToolsSnapshot>; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/protocol/devtools").DevToolsNode} DevToolsNode */ -/** @typedef {import("@smithers-orchestrator/protocol/devtools").DevToolsSnapshot} DevToolsSnapshot */ -/** @typedef {import("@smithers-orchestrator/protocol/devtools").DevToolsNodeType} DevToolsNodeType */ -/** @typedef {import("@smithers-orchestrator/devtools/snapshotSerializer").SnapshotSerializerWarning} SnapshotSerializerWarning */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/protocol/devtools").DevToolsNode} DevToolsNode */ +/** @typedef {import("@smthrs/protocol/devtools").DevToolsSnapshot} DevToolsSnapshot */ +/** @typedef {import("@smthrs/protocol/devtools").DevToolsNodeType} DevToolsNodeType */ +/** @typedef {import("@smthrs/devtools/snapshotSerializer").SnapshotSerializerWarning} SnapshotSerializerWarning */ declare const DEVTOOLS_RUN_ID_PATTERN: RegExp; declare const DEVTOOLS_MAX_FRAME_NO: 2147483647; declare const DEVTOOLS_TREE_MAX_DEPTH: 256; @@ -1300,8 +1300,8 @@ type GetNodeDiffRouteResult$1 = { * iteration: unknown; * resolveRun: (runId: string) => Promise<{ adapter: SmithersDb } | null>; * emitEffect?: (effect: Effect.Effect<void>) => Promise<unknown>; - * computeDiffBundleImpl?: (baseRef: string, cwd: string, seq?: number) => Promise<import("@smithers-orchestrator/engine/effect/DiffBundle").DiffBundle>; - * computeDiffBundleBetweenRefsImpl?: (baseRef: string, targetRef: string, cwd: string, seq?: number) => Promise<import("@smithers-orchestrator/engine/effect/DiffBundle").DiffBundle>; + * computeDiffBundleImpl?: (baseRef: string, cwd: string, seq?: number) => Promise<import("@smthrs/engine/effect/DiffBundle").DiffBundle>; + * computeDiffBundleBetweenRefsImpl?: (baseRef: string, targetRef: string, cwd: string, seq?: number) => Promise<import("@smthrs/engine/effect/DiffBundle").DiffBundle>; * getCurrentPointerImpl?: (cwd: string) => Promise<string | null>; * resolveCommitPointerImpl?: (pointer: string, cwd: string) => Promise<string | null>; * restorePointerImpl?: (pointer: string, cwd: string) => Promise<{ success: boolean; error?: string }>; @@ -1334,8 +1334,8 @@ type AttemptRow = _smithers_orchestrator_db_adapter.AttemptRow; type GetNodeDiffRouteResult = GetNodeDiffRouteResult$1; type DiffSummary = DiffSummary$1; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/db/adapter").AttemptRow} AttemptRow */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").AttemptRow} AttemptRow */ /** @typedef {import("./GetNodeDiffRouteResult.js").GetNodeDiffRouteResult} GetNodeDiffRouteResult */ /** @typedef {import("./DiffSummary.js").DiffSummary} DiffSummary */ declare const RUN_ID_PATTERN: RegExp; @@ -1379,7 +1379,7 @@ type NodeOutputResponse$1 = { * runId: unknown; * nodeId: unknown; * iteration: unknown; - * resolveRun: (runId: string) => Promise<{ workflow: import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow<unknown>; adapter: import("@smithers-orchestrator/db/adapter").SmithersDb } | null>; + * resolveRun: (runId: string) => Promise<{ workflow: import("@smthrs/components/SmithersWorkflow").SmithersWorkflow<unknown>; adapter: import("@smthrs/db/adapter").SmithersDb } | null>; * selectOutputRowImpl?: typeof selectOutputRow; * emitEffect?: (effect: Effect.Effect<void>) => Promise<unknown>; * }} params @@ -1398,9 +1398,9 @@ declare function getNodeOutputRoute(params: { }): Promise<NodeOutputResponse>; type NodeOutputResponse = NodeOutputResponse$1; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/observability/SmithersEvent").SmithersEvent} SmithersEvent */ -/** @typedef {import("@smithers-orchestrator/time-travel/jumpToFrame").JumpResult} JumpResult */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/observability/SmithersEvent").SmithersEvent} SmithersEvent */ +/** @typedef {import("@smthrs/time-travel/jumpToFrame").JumpResult} JumpResult */ /** * Gateway wrapper around time-travel jump orchestration. * @@ -1485,10 +1485,10 @@ declare function streamDevToolsRoute(input: { errorCode?: string; }) => void; }): AsyncIterable<DevToolsEvent>; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/protocol/devtools").DevToolsEvent} DevToolsEvent */ -/** @typedef {import("@smithers-orchestrator/protocol/devtools").DevToolsSnapshot} DevToolsSnapshot */ -/** @typedef {import("@smithers-orchestrator/devtools/snapshotSerializer").SnapshotSerializerWarning} SnapshotSerializerWarning */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/protocol/devtools").DevToolsEvent} DevToolsEvent */ +/** @typedef {import("@smthrs/protocol/devtools").DevToolsSnapshot} DevToolsSnapshot */ +/** @typedef {import("@smthrs/devtools/snapshotSerializer").SnapshotSerializerWarning} SnapshotSerializerWarning */ declare const DEVTOOLS_REBASELINE_INTERVAL: 50; declare const DEVTOOLS_BACKPRESSURE_LIMIT: 1000; declare const DEVTOOLS_POLL_INTERVAL_MS: 25; diff --git a/docs/references/smithers/packages/server/src/index.js b/docs/references/smithers/packages/server/src/index.js index 7ccd25670..844d8c33e 100644 --- a/docs/references/smithers/packages/server/src/index.js +++ b/docs/references/smithers/packages/server/src/index.js @@ -4,22 +4,22 @@ import { createHash } from "node:crypto"; import { pathToFileURL } from "node:url"; import { resolve, dirname, sep, basename } from "node:path"; import { Effect } from "effect"; -import { isRunHeartbeatFresh, runWorkflow } from "@smithers-orchestrator/engine"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { computeRunStateFromRow } from "@smithers-orchestrator/db/runState"; +import { isRunHeartbeatFresh, runWorkflow } from "@smthrs/engine"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { computeRunStateFromRow } from "@smthrs/db/runState"; import { Metric } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; -import { logError, logInfo, logWarning } from "@smithers-orchestrator/observability/logging"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; +import { logError, logInfo, logWarning } from "@smthrs/observability/logging"; import { runPromise, runSync } from "./smithersRuntime.js"; -import { httpRequests, httpRequestDuration, trackEvent } from "@smithers-orchestrator/observability/metrics"; -import { approveNode, denyNode } from "@smithers-orchestrator/engine/approvals"; -import { signalRun } from "@smithers-orchestrator/engine/signals"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; -import { errorToJson } from "@smithers-orchestrator/errors/errorToJson"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { assertMaxBytes, assertMaxJsonDepth } from "@smithers-orchestrator/db/input-bounds"; -import { prometheusContentType, renderPrometheusMetrics, } from "@smithers-orchestrator/observability"; +import { httpRequests, httpRequestDuration, trackEvent } from "@smthrs/observability/metrics"; +import { approveNode, denyNode } from "@smthrs/engine/approvals"; +import { signalRun } from "@smthrs/engine/signals"; +import { nowMs } from "@smthrs/scheduler/nowMs"; +import { errorToJson } from "@smthrs/errors/errorToJson"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { assertMaxBytes, assertMaxJsonDepth } from "@smthrs/db/input-bounds"; +import { prometheusContentType, renderPrometheusMetrics, } from "@smthrs/observability"; /** @typedef {import("node:http").ServerResponse} ServerResponse */ /** @typedef {import("./ServerOptions.js").ServerOptions} ServerOptions */ @@ -233,12 +233,12 @@ function sendJson(res, status, payload) { res.setHeader("X-Content-Type-Options", "nosniff"); res.end(JSON.stringify(payload)); } -/** @typedef {import("@smithers-orchestrator/db/adapter/RunRow").RunRow} RunRow */ +/** @typedef {import("@smthrs/db/adapter/RunRow").RunRow} RunRow */ /** * @param {SmithersDb} adapter * @param {RunRow} run - * @returns {Promise<RunRow | (RunRow & { runState: import("@smithers-orchestrator/db/runState/RunStateView").RunStateView })>} + * @returns {Promise<RunRow | (RunRow & { runState: import("@smthrs/db/runState/RunStateView").RunStateView })>} */ async function withRunState(adapter, run) { const runState = await computeRunStateFromRow(adapter, run).catch(() => undefined); diff --git a/docs/references/smithers/packages/server/src/serve.js b/docs/references/smithers/packages/server/src/serve.js index ed34e0d58..50e7667ac 100644 --- a/docs/references/smithers/packages/server/src/serve.js +++ b/docs/references/smithers/packages/server/src/serve.js @@ -1,13 +1,13 @@ import { Hono } from "hono"; import { streamSSE } from "hono/streaming"; import { Effect, Metric } from "effect"; -import { approveNode, denyNode } from "@smithers-orchestrator/engine/approvals"; -import { isRunHeartbeatFresh } from "@smithers-orchestrator/engine"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; -import { prometheusContentType, renderPrometheusMetrics, } from "@smithers-orchestrator/observability"; -import { logWarning } from "@smithers-orchestrator/observability/logging"; +import { approveNode, denyNode } from "@smthrs/engine/approvals"; +import { isRunHeartbeatFresh } from "@smthrs/engine"; +import { nowMs } from "@smthrs/scheduler/nowMs"; +import { prometheusContentType, renderPrometheusMetrics, } from "@smthrs/observability"; +import { logWarning } from "@smthrs/observability/logging"; import { runPromise } from "./smithersRuntime.js"; -import { httpRequests, httpRequestDuration, trackEvent } from "@smithers-orchestrator/observability/metrics"; +import { httpRequests, httpRequestDuration, trackEvent } from "@smthrs/observability/metrics"; /** @typedef {import("./ServeOptions.js").ServeOptions} ServeOptions */ class HttpError extends Error { diff --git a/docs/references/smithers/packages/server/src/smithersRuntime.js b/docs/references/smithers/packages/server/src/smithersRuntime.js index 773e717f4..218127dac 100644 --- a/docs/references/smithers/packages/server/src/smithersRuntime.js +++ b/docs/references/smithers/packages/server/src/smithersRuntime.js @@ -1,8 +1,8 @@ import * as WorkflowEngine from "@effect/workflow/WorkflowEngine"; import { Cause, Effect, Exit, Layer, ManagedRuntime } from "effect"; -import { SchedulerLive, WorkflowSessionLive } from "@smithers-orchestrator/scheduler"; -import { CorrelationContextLive, MetricsServiceLive, TracingServiceLive, createSmithersRuntimeLayer, getCurrentSmithersTraceAnnotations, getCurrentSmithersTraceSpan, } from "@smithers-orchestrator/observability"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { SchedulerLive, WorkflowSessionLive } from "@smthrs/scheduler"; +import { CorrelationContextLive, MetricsServiceLive, TracingServiceLive, createSmithersRuntimeLayer, getCurrentSmithersTraceAnnotations, getCurrentSmithersTraceSpan, } from "@smthrs/observability"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; const ObservabilityLayer = Layer.mergeAll(CorrelationContextLive, MetricsServiceLive, TracingServiceLive); const SmithersCoreLayer = Layer.mergeAll(ObservabilityLayer, SchedulerLive.pipe(Layer.provide(ObservabilityLayer)), WorkflowSessionLive); const SmithersWorkflowEngineLayer = Layer.suspend(() => WorkflowEngine.layerMemory); diff --git a/docs/references/smithers/packages/server/tests/gateway-concurrent-rpc.test.ts b/docs/references/smithers/packages/server/tests/gateway-concurrent-rpc.test.ts index 2935cf4ef..2b0d3f167 100644 --- a/docs/references/smithers/packages/server/tests/gateway-concurrent-rpc.test.ts +++ b/docs/references/smithers/packages/server/tests/gateway-concurrent-rpc.test.ts @@ -9,7 +9,7 @@ import { join } from "node:path"; import { tmpdir } from "node:os"; import React from "react"; import { z } from "zod"; -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { Gateway } from "../src/gateway.js"; import { sleep } from "../../smithers/tests/helpers.js"; diff --git a/docs/references/smithers/packages/server/tests/gateway-edge.e2e.test.jsx b/docs/references/smithers/packages/server/tests/gateway-edge.e2e.test.jsx index 62e553d2f..ba3c03fa4 100644 --- a/docs/references/smithers/packages/server/tests/gateway-edge.e2e.test.jsx +++ b/docs/references/smithers/packages/server/tests/gateway-edge.e2e.test.jsx @@ -1,11 +1,11 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { afterEach, describe, expect, test } from "bun:test"; import { rmSync } from "node:fs"; import { join } from "node:path"; import { tmpdir } from "node:os"; import { z } from "zod"; -import { createSmithers } from "smithers-orchestrator"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { createSmithers } from "smthrs"; +import { SmithersDb } from "@smthrs/db/adapter"; import { Gateway } from "../src/gateway.js"; import { sleep } from "../../smithers/tests/helpers.js"; /** diff --git a/docs/references/smithers/packages/server/tests/gateway-shared-db.test.jsx b/docs/references/smithers/packages/server/tests/gateway-shared-db.test.jsx index 1ea5adf32..9e509d03f 100644 --- a/docs/references/smithers/packages/server/tests/gateway-shared-db.test.jsx +++ b/docs/references/smithers/packages/server/tests/gateway-shared-db.test.jsx @@ -1,10 +1,10 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { afterEach, describe, expect, test } from "bun:test"; import { rmSync } from "node:fs"; import { join } from "node:path"; import { tmpdir } from "node:os"; import { z } from "zod"; -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { Gateway } from "../src/gateway.js"; /** diff --git a/docs/references/smithers/packages/server/tests/gateway-ui.test.jsx b/docs/references/smithers/packages/server/tests/gateway-ui.test.jsx index 264642b7f..8f5fdaf6b 100644 --- a/docs/references/smithers/packages/server/tests/gateway-ui.test.jsx +++ b/docs/references/smithers/packages/server/tests/gateway-ui.test.jsx @@ -1,9 +1,9 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { afterEach, describe, expect, test } from "bun:test"; import { mkdtempSync, rmSync, writeFileSync } from "node:fs"; import { join } from "node:path"; import { z } from "zod"; -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { Gateway } from "../src/gateway.js"; function getPort(server) { diff --git a/docs/references/smithers/packages/server/tests/gateway-v1-contract.test.jsx b/docs/references/smithers/packages/server/tests/gateway-v1-contract.test.jsx index c6574729f..ba2640332 100644 --- a/docs/references/smithers/packages/server/tests/gateway-v1-contract.test.jsx +++ b/docs/references/smithers/packages/server/tests/gateway-v1-contract.test.jsx @@ -1,14 +1,14 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { afterEach, beforeEach, describe, expect, test } from "bun:test"; import { rmSync } from "node:fs"; import { join } from "node:path"; import { tmpdir } from "node:os"; import { WebSocket } from "ws"; import { z } from "zod"; -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { Gateway } from "../src/gateway.js"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { sleep } from "../../smithers/tests/helpers.js"; function getPort(server) { diff --git a/docs/references/smithers/packages/server/tests/gateway-webhooks.test.jsx b/docs/references/smithers/packages/server/tests/gateway-webhooks.test.jsx index 90b0b798f..f8c27d417 100644 --- a/docs/references/smithers/packages/server/tests/gateway-webhooks.test.jsx +++ b/docs/references/smithers/packages/server/tests/gateway-webhooks.test.jsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { afterEach, beforeAll, beforeEach, describe, expect, test } from "bun:test"; import { createHmac } from "node:crypto"; import { rmSync } from "node:fs"; @@ -90,10 +90,10 @@ describe("Gateway webhook ingestion", () => { let server; let dbPaths = []; beforeAll(async () => { - createSmithers = (await import("smithers-orchestrator/create")).createSmithers; + createSmithers = (await import("smthrs/create")).createSmithers; Gateway = (await import("../src/gateway.js")).Gateway; - SmithersDb = (await import("@smithers-orchestrator/db/adapter")).SmithersDb; - WaitForEvent = (await import("@smithers-orchestrator/components/components/WaitForEvent")).WaitForEvent; + SmithersDb = (await import("@smthrs/db/adapter")).SmithersDb; + WaitForEvent = (await import("@smthrs/components/components/WaitForEvent")).WaitForEvent; }); beforeEach(() => { gateway = undefined; diff --git a/docs/references/smithers/packages/server/tests/gateway.test.jsx b/docs/references/smithers/packages/server/tests/gateway.test.jsx index d21d7103b..e46804282 100644 --- a/docs/references/smithers/packages/server/tests/gateway.test.jsx +++ b/docs/references/smithers/packages/server/tests/gateway.test.jsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { afterEach, beforeEach, describe, expect, test } from "bun:test"; import { createHmac } from "node:crypto"; import { rmSync } from "node:fs"; @@ -6,9 +6,9 @@ import { join } from "node:path"; import { tmpdir } from "node:os"; import { WebSocket } from "ws"; import { z } from "zod"; -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { Gateway } from "../src/gateway.js"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { SmithersDb } from "@smthrs/db/adapter"; import { sleep } from "../../smithers/tests/helpers.js"; /** * @param {Record<string, unknown>} value diff --git a/docs/references/smithers/packages/server/tests/getDevToolsSnapshot.test.tsx b/docs/references/smithers/packages/server/tests/getDevToolsSnapshot.test.tsx index 28f141ece..ec7c21891 100644 --- a/docs/references/smithers/packages/server/tests/getDevToolsSnapshot.test.tsx +++ b/docs/references/smithers/packages/server/tests/getDevToolsSnapshot.test.tsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { afterEach, beforeEach, describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; @@ -7,10 +7,10 @@ import { rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { WebSocket } from "ws"; import { z } from "zod"; -import { createSmithers } from "smithers-orchestrator"; -import { canonicalizeXml } from "@smithers-orchestrator/graph/utils/xml"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { createSmithers } from "smthrs"; +import { canonicalizeXml } from "@smthrs/graph/utils/xml"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { Gateway } from "../src/gateway.js"; import { getDevToolsSnapshotRoute } from "../src/gatewayRoutes/getDevToolsSnapshot.js"; import { sleep } from "../../smithers/tests/helpers.js"; diff --git a/docs/references/smithers/packages/server/tests/getNodeDiff.integration.test.js b/docs/references/smithers/packages/server/tests/getNodeDiff.integration.test.js index 85ff3ac42..5d0c9a2ac 100644 --- a/docs/references/smithers/packages/server/tests/getNodeDiff.integration.test.js +++ b/docs/references/smithers/packages/server/tests/getNodeDiff.integration.test.js @@ -5,8 +5,8 @@ import { join } from "node:path"; import { tmpdir } from "node:os"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { getNodeDiffRoute } from "../src/gatewayRoutes/getNodeDiff.js"; function run(cwd, cmd, args) { const res = spawnSync(cmd, args, { diff --git a/docs/references/smithers/packages/server/tests/getNodeDiff.test.js b/docs/references/smithers/packages/server/tests/getNodeDiff.test.js index c80f24748..c0a66aa46 100644 --- a/docs/references/smithers/packages/server/tests/getNodeDiff.test.js +++ b/docs/references/smithers/packages/server/tests/getNodeDiff.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { getNodeDiffRoute } from "../src/gatewayRoutes/getNodeDiff.js"; function createTestDb() { const sqlite = new Database(":memory:"); diff --git a/docs/references/smithers/packages/server/tests/getNodeOutput.integration.test.ts b/docs/references/smithers/packages/server/tests/getNodeOutput.integration.test.ts index e14d817e8..99b13c60a 100644 --- a/docs/references/smithers/packages/server/tests/getNodeOutput.integration.test.ts +++ b/docs/references/smithers/packages/server/tests/getNodeOutput.integration.test.ts @@ -4,8 +4,8 @@ import { join } from "node:path"; import { tmpdir } from "node:os"; import React from "react"; import { z } from "zod"; -import { createSmithers } from "smithers-orchestrator"; -import { requireTaskRuntime } from "@smithers-orchestrator/driver/task-runtime"; +import { createSmithers } from "smthrs"; +import { requireTaskRuntime } from "@smthrs/driver/task-runtime"; import { Gateway } from "../src/gateway.js"; import { sleep } from "../../smithers/tests/helpers.js"; diff --git a/docs/references/smithers/packages/server/tests/getNodeOutput.test.ts b/docs/references/smithers/packages/server/tests/getNodeOutput.test.ts index 0730c11b9..37bcb4fd8 100644 --- a/docs/references/smithers/packages/server/tests/getNodeOutput.test.ts +++ b/docs/references/smithers/packages/server/tests/getNodeOutput.test.ts @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Effect } from "effect"; import { z } from "zod"; -import { zodToTable } from "@smithers-orchestrator/db/zodToTable"; -import { renderPrometheusMetrics } from "@smithers-orchestrator/observability"; +import { zodToTable } from "@smthrs/db/zodToTable"; +import { renderPrometheusMetrics } from "@smthrs/observability"; import { getNodeOutputRoute } from "../src/gatewayRoutes/getNodeOutput.js"; import { NodeOutputRouteError } from "../src/gatewayRoutes/NodeOutputRouteError.js"; import { NODE_OUTPUT_MAX_BYTES } from "../src/gatewayRoutes/NODE_OUTPUT_MAX_BYTES.js"; diff --git a/docs/references/smithers/packages/server/tests/jumpToFrame.auth.test.ts b/docs/references/smithers/packages/server/tests/jumpToFrame.auth.test.ts index 4e82dcb78..ffbda3b18 100644 --- a/docs/references/smithers/packages/server/tests/jumpToFrame.auth.test.ts +++ b/docs/references/smithers/packages/server/tests/jumpToFrame.auth.test.ts @@ -1,12 +1,12 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { afterEach, describe, expect, test } from "bun:test"; import { rmSync } from "node:fs"; import { join } from "node:path"; import { tmpdir } from "node:os"; import React from "react"; import { z } from "zod"; -import { createSmithers } from "smithers-orchestrator"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { createSmithers } from "smthrs"; +import { SmithersDb } from "@smthrs/db/adapter"; import { Gateway } from "../src/gateway.js"; function makeDbPath(name: string) { diff --git a/docs/references/smithers/packages/server/tests/serve.test.js b/docs/references/smithers/packages/server/tests/serve.test.js index 1a8410877..e8b163c80 100644 --- a/docs/references/smithers/packages/server/tests/serve.test.js +++ b/docs/references/smithers/packages/server/tests/serve.test.js @@ -1,15 +1,15 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test, afterEach, beforeEach } from "bun:test"; import { resolve } from "node:path"; import { writeFileSync, mkdirSync, rmSync } from "node:fs"; import { pathToFileURL } from "node:url"; import { sleep } from "../../smithers/tests/helpers.js"; import { createServeApp } from "../src/serve.js"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { Effect } from "effect"; -import { runWorkflow } from "@smithers-orchestrator/engine"; -import { renderPrometheusMetrics } from "@smithers-orchestrator/observability"; +import { runWorkflow } from "@smthrs/engine"; +import { renderPrometheusMetrics } from "@smthrs/observability"; // --------------------------------------------------------------------------- // Prometheus helpers // --------------------------------------------------------------------------- @@ -140,8 +140,8 @@ const fakeAgent = { : ""; const agentProp = options.slow ? " agent={fakeAgent}" : ""; const approvalProp = options.needsApproval ? " needsApproval" : ""; - writeFileSync(workflowPath, `/** @jsxImportSource smithers-orchestrator */ -import { createSmithers } from "smithers-orchestrator"; + writeFileSync(workflowPath, `/** @jsxImportSource smthrs */ +import { createSmithers } from "smthrs"; import { z } from "zod"; ${slowAgent} diff --git a/docs/references/smithers/packages/server/tests/server.test.js b/docs/references/smithers/packages/server/tests/server.test.js index 6a04db13f..2cdf79d07 100644 --- a/docs/references/smithers/packages/server/tests/server.test.js +++ b/docs/references/smithers/packages/server/tests/server.test.js @@ -1,11 +1,11 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test, afterEach, beforeEach } from "bun:test"; import { Database } from "bun:sqlite"; import { startServer } from "../src/index.js"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { createTestDb, sleep } from "../../smithers/tests/helpers.js"; import { ddl, schema } from "../../smithers/tests/schema.js"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { SmithersDb } from "@smthrs/db/adapter"; import { resolve } from "node:path"; import { writeFileSync, mkdirSync, rmSync } from "node:fs"; function buildDb() { @@ -153,8 +153,8 @@ const fakeAgent = { const agentProp = options.slow ? " agent={fakeAgent}" : ""; const approvalProp = options.needsApproval ? " needsApproval" : ""; const outputValue = options.value ?? 42; - writeFileSync(workflowPath, `/** @jsxImportSource smithers-orchestrator */ - import { createSmithers } from "smithers-orchestrator"; + writeFileSync(workflowPath, `/** @jsxImportSource smthrs */ + import { createSmithers } from "smthrs"; import { z } from "zod"; ${slowAgent} diff --git a/docs/references/smithers/packages/server/tests/streamDevTools.soak.test.ts b/docs/references/smithers/packages/server/tests/streamDevTools.soak.test.ts index 99ab6a373..9093c8cd9 100644 --- a/docs/references/smithers/packages/server/tests/streamDevTools.soak.test.ts +++ b/docs/references/smithers/packages/server/tests/streamDevTools.soak.test.ts @@ -4,9 +4,9 @@ import { drizzle } from "drizzle-orm/bun-sqlite"; import { rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { canonicalizeXml } from "@smithers-orchestrator/graph/utils/xml"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { canonicalizeXml } from "@smthrs/graph/utils/xml"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { streamDevToolsRoute } from "../src/gatewayRoutes/streamDevTools.js"; const soakEnabled = process.env.SMITHERS_SOAK === "1"; diff --git a/docs/references/smithers/packages/server/tests/streamDevTools.test.tsx b/docs/references/smithers/packages/server/tests/streamDevTools.test.tsx index d7b9cd0f0..8650987d6 100644 --- a/docs/references/smithers/packages/server/tests/streamDevTools.test.tsx +++ b/docs/references/smithers/packages/server/tests/streamDevTools.test.tsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { afterEach, beforeEach, describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; @@ -7,14 +7,14 @@ import { rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { WebSocket } from "ws"; import { z } from "zod"; -import { createSmithers } from "smithers-orchestrator"; -import { canonicalizeXml } from "@smithers-orchestrator/graph/utils/xml"; -import { renderPrometheusMetrics } from "@smithers-orchestrator/observability"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +import { createSmithers } from "smthrs"; +import { canonicalizeXml } from "@smthrs/graph/utils/xml"; +import { renderPrometheusMetrics } from "@smthrs/observability"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; import { Gateway } from "../src/gateway.js"; import { streamDevToolsRoute } from "../src/gatewayRoutes/streamDevTools.js"; -import { diffSnapshots } from "@smithers-orchestrator/devtools"; +import { diffSnapshots } from "@smthrs/devtools"; import { sleep } from "../../smithers/tests/helpers.js"; function now() { diff --git a/docs/references/smithers/packages/smithers/package.json b/docs/references/smithers/packages/smithers/package.json index 147d8669e..1713eae28 100644 --- a/docs/references/smithers/packages/smithers/package.json +++ b/docs/references/smithers/packages/smithers/package.json @@ -1,5 +1,5 @@ { - "name": "smithers-orchestrator", + "name": "smthrs", "version": "0.23.0", "description": "Public Smithers facade for durable coding-agent workflows and Gateway operation", "type": "module", @@ -57,28 +57,28 @@ "build": "tsup --dts-only" }, "dependencies": { - "@smithers-orchestrator/agents": "workspace:*", - "@smithers-orchestrator/cli": "workspace:*", - "@smithers-orchestrator/components": "workspace:*", - "@smithers-orchestrator/control-plane": "workspace:*", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/driver": "workspace:*", - "@smithers-orchestrator/engine": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/gateway-client": "workspace:*", - "@smithers-orchestrator/gateway-react": "workspace:*", - "@smithers-orchestrator/graph": "workspace:*", - "@smithers-orchestrator/memory": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/openapi": "workspace:*", - "@smithers-orchestrator/react-reconciler": "workspace:*", - "@smithers-orchestrator/sandbox": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "@smithers-orchestrator/scorers": "workspace:*", - "@smithers-orchestrator/server": "workspace:*", - "@smithers-orchestrator/time-travel": "workspace:*", - "@smithers-orchestrator/tool-context": "workspace:*", - "@smithers-orchestrator/vcs": "workspace:*", + "@smthrs/agents": "^0.33.0", + "@smthrs/cli": "^0.33.0", + "@smthrs/components": "^0.33.0", + "@smthrs/control-plane": "^0.33.0", + "@smthrs/db": "^0.33.0", + "@smthrs/driver": "^0.33.0", + "@smthrs/engine": "^0.33.0", + "@smthrs/errors": "^0.33.0", + "@smthrs/gateway-client": "^0.33.0", + "@smthrs/gateway-react": "^0.33.0", + "@smthrs/graph": "^0.33.0", + "@smthrs/memory": "^0.33.0", + "@smthrs/observability": "^0.33.0", + "@smthrs/openapi": "^0.33.0", + "@smthrs/react-reconciler": "^0.33.0", + "@smthrs/sandbox": "^0.33.0", + "@smthrs/scheduler": "^0.33.0", + "@smthrs/scorers": "^0.33.0", + "@smthrs/server": "^0.33.0", + "@smthrs/time-travel": "^0.33.0", + "@smthrs/tool-context": "^0.33.0", + "@smthrs/vcs": "^0.33.0", "@mdx-js/esbuild": "^3.1.1", "ai": "^6.0.168", "diff": "^9.0.0", diff --git a/docs/references/smithers/packages/smithers/src/CreateSmithersApi.ts b/docs/references/smithers/packages/smithers/src/CreateSmithersApi.ts index 04e9fbb18..1a9d06167 100644 --- a/docs/references/smithers/packages/smithers/src/CreateSmithersApi.ts +++ b/docs/references/smithers/packages/smithers/src/CreateSmithersApi.ts @@ -11,16 +11,16 @@ import type { continueAsNew as baseContinueAsNew, Worktree as BaseWorktree, Timer as BaseTimer, -} from "@smithers-orchestrator/components"; -import type { ApprovalProps } from "@smithers-orchestrator/components/components/ApprovalProps"; -import type { DepsSpec } from "@smithers-orchestrator/components/components/DepsSpec"; -import type { SandboxProps } from "@smithers-orchestrator/components/components/SandboxProps"; -import type { SignalProps } from "@smithers-orchestrator/components/components/SignalProps"; -import type { TaskProps } from "@smithers-orchestrator/components/components/TaskProps"; -import type { WorkflowProps } from "@smithers-orchestrator/components/components/WorkflowProps"; -import type { SmithersWorkflow } from "@smithers-orchestrator/components/SmithersWorkflow"; -import type { SmithersWorkflowOptions } from "@smithers-orchestrator/scheduler/SmithersWorkflowOptions"; -import type { SmithersCtx } from "@smithers-orchestrator/driver/SmithersCtx"; +} from "@smthrs/components"; +import type { ApprovalProps } from "@smthrs/components/components/ApprovalProps"; +import type { DepsSpec } from "@smthrs/components/components/DepsSpec"; +import type { SandboxProps } from "@smthrs/components/components/SandboxProps"; +import type { SignalProps } from "@smthrs/components/components/SignalProps"; +import type { TaskProps } from "@smthrs/components/components/TaskProps"; +import type { WorkflowProps } from "@smthrs/components/components/WorkflowProps"; +import type { SmithersWorkflow } from "@smthrs/components/SmithersWorkflow"; +import type { SmithersWorkflowOptions } from "@smthrs/scheduler/SmithersWorkflowOptions"; +import type { SmithersCtx } from "@smthrs/driver/SmithersCtx"; import type { z } from "zod"; /** Union of all Zod schema values registered in the schema, constrained to ZodObject. */ diff --git a/docs/references/smithers/packages/smithers/src/CreateSmithersOptions.ts b/docs/references/smithers/packages/smithers/src/CreateSmithersOptions.ts index 081e3be47..4585ed888 100644 --- a/docs/references/smithers/packages/smithers/src/CreateSmithersOptions.ts +++ b/docs/references/smithers/packages/smithers/src/CreateSmithersOptions.ts @@ -1,4 +1,4 @@ -import type { SmithersAlertPolicy } from "@smithers-orchestrator/scheduler/SmithersWorkflowOptions"; +import type { SmithersAlertPolicy } from "@smthrs/scheduler/SmithersWorkflowOptions"; export type CreateSmithersOptions = { readableName?: string; diff --git a/docs/references/smithers/packages/smithers/src/__type-tests__/task-fork-jsx.test.tsx b/docs/references/smithers/packages/smithers/src/__type-tests__/task-fork-jsx.test.tsx index 5a5fb49b0..4bd174ee4 100644 --- a/docs/references/smithers/packages/smithers/src/__type-tests__/task-fork-jsx.test.tsx +++ b/docs/references/smithers/packages/smithers/src/__type-tests__/task-fork-jsx.test.tsx @@ -1,6 +1,6 @@ import { createSmithers } from "../index.js"; import { z } from "zod"; -import type { AgentLike } from "@smithers-orchestrator/agents"; +import type { AgentLike } from "@smthrs/agents"; const agent = { generate: async () => ({ ok: true }), diff --git a/docs/references/smithers/packages/smithers/src/bin/smithers.js b/docs/references/smithers/packages/smithers/src/bin/smithers.js index 1dd9f7f74..183eff6a0 100755 --- a/docs/references/smithers/packages/smithers/src/bin/smithers.js +++ b/docs/references/smithers/packages/smithers/src/bin/smithers.js @@ -57,7 +57,7 @@ function getExplicitWorkflowPath(args) { } /** - * Resolve the local `smithers-orchestrator` package's bin JS file under + * Resolve the local `smthrs` package's bin JS file under * `<directory>/node_modules/`. Going through `package.json` (instead of the * `.bin/smithers` shell shim npm/pnpm generate) is the whole point: the shim * is `#!/bin/sh` and re-execing it with `process.execPath` (bun) makes bun @@ -67,7 +67,7 @@ function getExplicitWorkflowPath(args) { * @param {string} directory */ function resolveLocalSmithersBinJs(directory) { - const pkgJsonPath = resolve(directory, "node_modules/smithers-orchestrator/package.json"); + const pkgJsonPath = resolve(directory, "node_modules/smthrs/package.json"); if (!existsSync(pkgJsonPath)) return null; let pkg; @@ -135,5 +135,5 @@ function delegateToLocalCliIfPresent() { } if (!delegateToLocalCliIfPresent()) { - await import("@smithers-orchestrator/cli"); + await import("@smthrs/cli"); } diff --git a/docs/references/smithers/packages/smithers/src/control-plane.d.ts b/docs/references/smithers/packages/smithers/src/control-plane.d.ts index dd3c33c1d..d2c7efb39 100644 --- a/docs/references/smithers/packages/smithers/src/control-plane.d.ts +++ b/docs/references/smithers/packages/smithers/src/control-plane.d.ts @@ -1 +1 @@ -export * from "@smithers-orchestrator/control-plane"; +export * from "@smthrs/control-plane"; diff --git a/docs/references/smithers/packages/smithers/src/control-plane.js b/docs/references/smithers/packages/smithers/src/control-plane.js index dd3c33c1d..d2c7efb39 100644 --- a/docs/references/smithers/packages/smithers/src/control-plane.js +++ b/docs/references/smithers/packages/smithers/src/control-plane.js @@ -1 +1 @@ -export * from "@smithers-orchestrator/control-plane"; +export * from "@smthrs/control-plane"; diff --git a/docs/references/smithers/packages/smithers/src/create.js b/docs/references/smithers/packages/smithers/src/create.js index c08692406..192b90b76 100644 --- a/docs/references/smithers/packages/smithers/src/create.js +++ b/docs/references/smithers/packages/smithers/src/create.js @@ -9,31 +9,31 @@ import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; import { sqliteTable, text } from "drizzle-orm/sqlite-core"; import React from "react"; -import { createSmithersContext, SmithersContext as GlobalSmithersContext } from "@smithers-orchestrator/react-reconciler/context"; -import { Approval as BaseApproval, Workflow as BaseWorkflow, Task as BaseTask, Sequence as BaseSequence, Parallel as BaseParallel, MergeQueue as BaseMergeQueue, Branch as BaseBranch, Loop as BaseLoop, Ralph as BaseRalph, ContinueAsNew as BaseContinueAsNew, continueAsNew as baseContinueAsNew, Worktree as BaseWorktree, Sandbox as BaseSandbox, Signal as BaseSignal, Timer as BaseTimer, } from "@smithers-orchestrator/components"; -import { zodToTable } from "@smithers-orchestrator/db/zodToTable"; -import { zodToCreateTableSQL, syncZodTableSchema } from "@smithers-orchestrator/db/zodToCreateTableSQL"; -import { camelToSnake } from "@smithers-orchestrator/db/utils/camelToSnake"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { POSTGRES } from "@smithers-orchestrator/db/dialect"; +import { createSmithersContext, SmithersContext as GlobalSmithersContext } from "@smthrs/react-reconciler/context"; +import { Approval as BaseApproval, Workflow as BaseWorkflow, Task as BaseTask, Sequence as BaseSequence, Parallel as BaseParallel, MergeQueue as BaseMergeQueue, Branch as BaseBranch, Loop as BaseLoop, Ralph as BaseRalph, ContinueAsNew as BaseContinueAsNew, continueAsNew as baseContinueAsNew, Worktree as BaseWorktree, Sandbox as BaseSandbox, Signal as BaseSignal, Timer as BaseTimer, } from "@smthrs/components"; +import { zodToTable } from "@smthrs/db/zodToTable"; +import { zodToCreateTableSQL, syncZodTableSchema } from "@smthrs/db/zodToCreateTableSQL"; +import { camelToSnake } from "@smthrs/db/utils/camelToSnake"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { POSTGRES } from "@smthrs/db/dialect"; import { resolve } from "node:path"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -/** @typedef {import("@smithers-orchestrator/components").ApprovalProps<any, any>} ApprovalProps */ -/** @typedef {import("@smithers-orchestrator/components").SandboxProps} SandboxProps */ -/** @typedef {import("@smithers-orchestrator/components").SignalProps<any>} SignalProps */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertPolicy} SmithersAlertPolicy */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertPolicyDefaults} SmithersAlertPolicyDefaults */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertPolicyRule} SmithersAlertPolicyRule */ +import { SmithersError } from "@smthrs/errors/SmithersError"; +/** @typedef {import("@smthrs/components").ApprovalProps<any, any>} ApprovalProps */ +/** @typedef {import("@smthrs/components").SandboxProps} SandboxProps */ +/** @typedef {import("@smthrs/components").SignalProps<any>} SignalProps */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertPolicy} SmithersAlertPolicy */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertPolicyDefaults} SmithersAlertPolicyDefaults */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertPolicyRule} SmithersAlertPolicyRule */ /** * @template Schema - * @typedef {import("@smithers-orchestrator/driver/SmithersCtx").SmithersCtx<Schema>} SmithersCtx + * @typedef {import("@smthrs/driver/SmithersCtx").SmithersCtx<Schema>} SmithersCtx */ /** * @template Schema - * @typedef {import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow<Schema>} SmithersWorkflow + * @typedef {import("@smthrs/components/SmithersWorkflow").SmithersWorkflow<Schema>} SmithersWorkflow */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersWorkflowOptions} SmithersWorkflowOptions */ -/** @typedef {import("@smithers-orchestrator/components").WorkflowProps} WorkflowProps */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersWorkflowOptions} SmithersWorkflowOptions */ +/** @typedef {import("@smthrs/components").WorkflowProps} WorkflowProps */ /** @typedef {import("./CreateSmithersOptions.ts").CreateSmithersOptions} CreateSmithersOptions */ const hotCache = new Map(); diff --git a/docs/references/smithers/packages/smithers/src/dom/renderer.js b/docs/references/smithers/packages/smithers/src/dom/renderer.js index 279740a02..a481c9fd4 100644 --- a/docs/references/smithers/packages/smithers/src/dom/renderer.js +++ b/docs/references/smithers/packages/smithers/src/dom/renderer.js @@ -1 +1 @@ -export * from "@smithers-orchestrator/react-reconciler/dom/renderer"; +export * from "@smthrs/react-reconciler/dom/renderer"; diff --git a/docs/references/smithers/packages/smithers/src/examples-entry.js b/docs/references/smithers/packages/smithers/src/examples-entry.js index 17dc7198d..106d01e93 100644 --- a/docs/references/smithers/packages/smithers/src/examples-entry.js +++ b/docs/references/smithers/packages/smithers/src/examples-entry.js @@ -1,29 +1,29 @@ // @smithers-type-exports-begin -/** @typedef {import("@smithers-orchestrator/agents/AgentLike").AgentLike} AgentLike */ -/** @typedef {import("@smithers-orchestrator/components").ApprovalDecision} ApprovalDecision */ -/** @typedef {import("@smithers-orchestrator/components").ApprovalProps} ApprovalProps */ -/** @typedef {import("@smithers-orchestrator/components").ApprovalRequest} ApprovalRequest */ +/** @typedef {import("@smthrs/agents/AgentLike").AgentLike} AgentLike */ +/** @typedef {import("@smthrs/components").ApprovalDecision} ApprovalDecision */ +/** @typedef {import("@smthrs/components").ApprovalProps} ApprovalProps */ +/** @typedef {import("@smthrs/components").ApprovalRequest} ApprovalRequest */ /** * @template Schema * @typedef {import("./CreateSmithersApi.ts").CreateSmithersApi<Schema>} CreateSmithersApi */ -/** @typedef {import("@smithers-orchestrator/components").DepsSpec} DepsSpec */ -/** @typedef {import("@smithers-orchestrator/components").InferDeps} InferDeps */ -/** @typedef {import("@smithers-orchestrator/components").OutputTarget} OutputTarget */ -/** @typedef {import("@smithers-orchestrator/driver/SmithersCtx").SmithersCtx} SmithersCtx */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/components").DepsSpec} DepsSpec */ +/** @typedef {import("@smthrs/components").InferDeps} InferDeps */ +/** @typedef {import("@smthrs/components").OutputTarget} OutputTarget */ +/** @typedef {import("@smthrs/driver/SmithersCtx").SmithersCtx} SmithersCtx */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** * @template Schema - * @typedef {import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow<Schema>} SmithersWorkflow + * @typedef {import("@smthrs/components/SmithersWorkflow").SmithersWorkflow<Schema>} SmithersWorkflow */ -/** @typedef {import("@smithers-orchestrator/components").TaskProps} TaskProps */ -/** @typedef {import("@smithers-orchestrator/components").WaitForEventProps} WaitForEventProps */ +/** @typedef {import("@smthrs/components").TaskProps} TaskProps */ +/** @typedef {import("@smthrs/components").WaitForEventProps} WaitForEventProps */ // @smithers-type-exports-end -export { Approval, approvalDecisionSchema, Workflow, Task, Sequence, Parallel, MergeQueue, Branch, Loop, Ralph, Worktree, Sandbox, } from "@smithers-orchestrator/components"; -export { Timer } from "@smithers-orchestrator/components"; -export { ClaudeCodeAgent } from "@smithers-orchestrator/agents/ClaudeCodeAgent"; -export { KimiAgent } from "@smithers-orchestrator/agents/KimiAgent"; -export { PiAgent } from "@smithers-orchestrator/agents/PiAgent"; +export { Approval, approvalDecisionSchema, Workflow, Task, Sequence, Parallel, MergeQueue, Branch, Loop, Ralph, Worktree, Sandbox, } from "@smthrs/components"; +export { Timer } from "@smthrs/components"; +export { ClaudeCodeAgent } from "@smthrs/agents/ClaudeCodeAgent"; +export { KimiAgent } from "@smthrs/agents/KimiAgent"; +export { PiAgent } from "@smthrs/agents/PiAgent"; export { createSmithers } from "./create.js"; -export { runWorkflow, renderFrame } from "@smithers-orchestrator/engine"; +export { runWorkflow, renderFrame } from "@smthrs/engine"; diff --git a/docs/references/smithers/packages/smithers/src/external/ExternalSmithersConfig.ts b/docs/references/smithers/packages/smithers/src/external/ExternalSmithersConfig.ts index 3a36f4b35..fd04485a2 100644 --- a/docs/references/smithers/packages/smithers/src/external/ExternalSmithersConfig.ts +++ b/docs/references/smithers/packages/smithers/src/external/ExternalSmithersConfig.ts @@ -1,4 +1,4 @@ -import type { AgentLike } from "@smithers-orchestrator/agents/AgentLike"; +import type { AgentLike } from "@smthrs/agents/AgentLike"; import type { z } from "zod"; import type { SerializedCtx } from "./SerializedCtx.ts"; import type { HostNodeJson } from "./HostNodeJson.ts"; diff --git a/docs/references/smithers/packages/smithers/src/external/SerializedCtx.ts b/docs/references/smithers/packages/smithers/src/external/SerializedCtx.ts index 3745ea2ff..55fc69dce 100644 --- a/docs/references/smithers/packages/smithers/src/external/SerializedCtx.ts +++ b/docs/references/smithers/packages/smithers/src/external/SerializedCtx.ts @@ -1,4 +1,4 @@ -import type { OutputSnapshot } from "@smithers-orchestrator/driver/OutputSnapshot"; +import type { OutputSnapshot } from "@smthrs/driver/OutputSnapshot"; export type SerializedCtx = { runId: string; diff --git a/docs/references/smithers/packages/smithers/src/external/create-external-smithers.js b/docs/references/smithers/packages/smithers/src/external/create-external-smithers.js index 5402f00b3..d3342d479 100644 --- a/docs/references/smithers/packages/smithers/src/external/create-external-smithers.js +++ b/docs/references/smithers/packages/smithers/src/external/create-external-smithers.js @@ -11,18 +11,18 @@ import React from "react"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; import { sqliteTable, text } from "drizzle-orm/sqlite-core"; -import { zodToTable } from "@smithers-orchestrator/db/zodToTable"; -import { syncZodTableSchema } from "@smithers-orchestrator/db/zodToCreateTableSQL"; -import { camelToSnake } from "@smithers-orchestrator/db/utils/camelToSnake"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { zodToTable } from "@smthrs/db/zodToTable"; +import { syncZodTableSchema } from "@smthrs/db/zodToCreateTableSQL"; +import { camelToSnake } from "@smthrs/db/utils/camelToSnake"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { mkdtempSync } from "node:fs"; import { tmpdir } from "node:os"; import { join, resolve } from "node:path"; -/** @typedef {import("@smithers-orchestrator/agents/AgentLike").AgentLike} AgentLike */ -/** @typedef {import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow<any>} SmithersWorkflow */ +/** @typedef {import("@smthrs/agents/AgentLike").AgentLike} AgentLike */ +/** @typedef {import("@smthrs/components/SmithersWorkflow").SmithersWorkflow<any>} SmithersWorkflow */ /** * Serialize a SmithersCtx into a plain JSON-safe object for external processes. - * @param {import("@smithers-orchestrator/driver/SmithersCtx").SmithersCtx<any>} ctx + * @param {import("@smthrs/driver/SmithersCtx").SmithersCtx<any>} ctx * @returns {SerializedCtx} */ export function serializeCtx(ctx) { @@ -99,7 +99,7 @@ function prepareOutputSchemas(schemas) { * * @template {Record<string, import("zod").ZodObject<any>>} S * @param {ExternalSmithersConfig<S>} config - * @returns {import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow<S> & { tables: Record<string, any>; cleanup: () => void }} + * @returns {import("@smthrs/components/SmithersWorkflow").SmithersWorkflow<S> & { tables: Record<string, any>; cleanup: () => void }} */ export function createExternalSmithers(config) { const { schemas, agents, buildFn } = config; diff --git a/docs/references/smithers/packages/smithers/src/gateway-client.d.ts b/docs/references/smithers/packages/smithers/src/gateway-client.d.ts index 4e5d5c7c3..3422cb04f 100644 --- a/docs/references/smithers/packages/smithers/src/gateway-client.d.ts +++ b/docs/references/smithers/packages/smithers/src/gateway-client.d.ts @@ -1 +1 @@ -export * from "@smithers-orchestrator/gateway-client"; +export * from "@smthrs/gateway-client"; diff --git a/docs/references/smithers/packages/smithers/src/gateway-client.js b/docs/references/smithers/packages/smithers/src/gateway-client.js index 4e5d5c7c3..3422cb04f 100644 --- a/docs/references/smithers/packages/smithers/src/gateway-client.js +++ b/docs/references/smithers/packages/smithers/src/gateway-client.js @@ -1 +1 @@ -export * from "@smithers-orchestrator/gateway-client"; +export * from "@smthrs/gateway-client"; diff --git a/docs/references/smithers/packages/smithers/src/gateway-react.d.ts b/docs/references/smithers/packages/smithers/src/gateway-react.d.ts index 717cb22f8..91e5aebdc 100644 --- a/docs/references/smithers/packages/smithers/src/gateway-react.d.ts +++ b/docs/references/smithers/packages/smithers/src/gateway-react.d.ts @@ -1 +1 @@ -export * from "@smithers-orchestrator/gateway-react"; +export * from "@smthrs/gateway-react"; diff --git a/docs/references/smithers/packages/smithers/src/gateway-react.js b/docs/references/smithers/packages/smithers/src/gateway-react.js index 717cb22f8..91e5aebdc 100644 --- a/docs/references/smithers/packages/smithers/src/gateway-react.js +++ b/docs/references/smithers/packages/smithers/src/gateway-react.js @@ -1 +1 @@ -export * from "@smithers-orchestrator/gateway-react"; +export * from "@smthrs/gateway-react"; diff --git a/docs/references/smithers/packages/smithers/src/gateway.js b/docs/references/smithers/packages/smithers/src/gateway.js index de30db3cf..6aa6e2ef7 100644 --- a/docs/references/smithers/packages/smithers/src/gateway.js +++ b/docs/references/smithers/packages/smithers/src/gateway.js @@ -1 +1 @@ -export * from "@smithers-orchestrator/server/gateway"; +export * from "@smthrs/server/gateway"; diff --git a/docs/references/smithers/packages/smithers/src/ide/SmithersIdeService.js b/docs/references/smithers/packages/smithers/src/ide/SmithersIdeService.js index 1a41ceb7b..fc9bd3436 100644 --- a/docs/references/smithers/packages/smithers/src/ide/SmithersIdeService.js +++ b/docs/references/smithers/packages/smithers/src/ide/SmithersIdeService.js @@ -12,8 +12,8 @@ import { accessSync, constants } from "node:fs"; import { delimiter, isAbsolute, join } from "node:path"; import { Context, Effect, Layer } from "effect"; -import { spawnCaptureEffect } from "@smithers-orchestrator/driver/child-process"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { spawnCaptureEffect } from "@smthrs/driver/child-process"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** @typedef {import("./SmithersIdeOverlayOptions.ts").SmithersIdeOverlayOptions} SmithersIdeOverlayOptions */ /** @typedef {import("./SmithersIdeOverlayType.ts").SmithersIdeOverlayType} SmithersIdeOverlayType */ /** @typedef {import("./SmithersIdeResolvedConfig.ts").SmithersIdeResolvedConfig} SmithersIdeResolvedConfig */ diff --git a/docs/references/smithers/packages/smithers/src/ide/SmithersIdeServiceApi.ts b/docs/references/smithers/packages/smithers/src/ide/SmithersIdeServiceApi.ts index e6b19464b..6383126d0 100644 --- a/docs/references/smithers/packages/smithers/src/ide/SmithersIdeServiceApi.ts +++ b/docs/references/smithers/packages/smithers/src/ide/SmithersIdeServiceApi.ts @@ -1,5 +1,5 @@ import type { Effect } from "effect"; -import type { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import type { SmithersError } from "@smthrs/errors/SmithersError"; import type { SmithersIdeResolvedConfig } from "./SmithersIdeResolvedConfig.ts"; import type { SmithersIdeAskUserResult } from "./SmithersIdeAskUserResult.ts"; import type { SmithersIdeAvailability } from "./SmithersIdeAvailability.ts"; diff --git a/docs/references/smithers/packages/smithers/src/index.d.ts b/docs/references/smithers/packages/smithers/src/index.d.ts index 6e71209f1..1ffe0acf0 100644 --- a/docs/references/smithers/packages/smithers/src/index.d.ts +++ b/docs/references/smithers/packages/smithers/src/index.d.ts @@ -1,85 +1,85 @@ import * as ai from 'ai'; import { Tool } from 'ai'; -import * as _smithers_graph_XmlNode from '@smithers-orchestrator/graph/XmlNode'; -import * as _smithers_time_travel_timetravel from '@smithers-orchestrator/time-travel/timetravel'; -import * as _smithers_graph_TaskDescriptor from '@smithers-orchestrator/graph/TaskDescriptor'; -import * as _smithers_components_SmithersWorkflow from '@smithers-orchestrator/components/SmithersWorkflow'; -import { SmithersWorkflow as SmithersWorkflow$1 } from '@smithers-orchestrator/components/SmithersWorkflow'; -import * as _smithers_observability_SmithersEvent from '@smithers-orchestrator/observability/SmithersEvent'; -import { SmithersEvent as SmithersEvent$1 } from '@smithers-orchestrator/observability/SmithersEvent'; -import * as _smithers_errors_SmithersErrorCode from '@smithers-orchestrator/errors/SmithersErrorCode'; -import * as _smithers_errors_SmithersError from '@smithers-orchestrator/errors/SmithersError'; -export { SmithersError as SmithersErrorInstance } from '@smithers-orchestrator/errors/SmithersError'; -import * as _smithers_driver_SmithersCtx from '@smithers-orchestrator/driver/SmithersCtx'; -import { SmithersCtx as SmithersCtx$1 } from '@smithers-orchestrator/driver/SmithersCtx'; -import * as _smithers_scheduler_SmithersWorkflowOptions from '@smithers-orchestrator/scheduler/SmithersWorkflowOptions'; -import { SmithersWorkflowOptions as SmithersWorkflowOptions$1, SmithersAlertPolicy as SmithersAlertPolicy$1 } from '@smithers-orchestrator/scheduler/SmithersWorkflowOptions'; -import * as _smithers_server from '@smithers-orchestrator/server'; -export { startServer } from '@smithers-orchestrator/server'; -import * as _smithers_server_serve from '@smithers-orchestrator/server/serve'; -export { createServeApp } from '@smithers-orchestrator/server/serve'; -import { OutputSnapshot } from '@smithers-orchestrator/driver/OutputSnapshot'; -import * as _smithers_db_SchemaRegistryEntry from '@smithers-orchestrator/db/SchemaRegistryEntry'; -import * as _smithers_driver_RunStatus from '@smithers-orchestrator/driver/RunStatus'; -import * as _smithers_driver_RunResult from '@smithers-orchestrator/driver/RunResult'; -import * as _smithers_driver_RunOptions from '@smithers-orchestrator/driver/RunOptions'; -import * as _smithers_time_travel_revert from '@smithers-orchestrator/time-travel/revert'; -import * as _smithers_observability from '@smithers-orchestrator/observability'; -export { SmithersObservability, activeNodes, activeRuns, approvalsDenied, approvalsGranted, approvalsRequested, attemptDuration, cacheHits, cacheMisses, createSmithersObservabilityLayer, createSmithersOtelLayer, createSmithersRuntimeLayer, dbQueryDuration, dbRetries, dbTransactionDuration, dbTransactionRetries, dbTransactionRollbacks, externalWaitAsyncPending, hotReloadDuration, hotReloadFailures, hotReloads, httpRequestDuration, httpRequests, nodeDuration, nodesFailed, nodesFinished, nodesStarted, prometheusContentType, renderPrometheusMetrics, resolveSmithersObservabilityOptions, runsTotal, sandboxActive, sandboxBundleSizeBytes, sandboxCompletedTotal, sandboxCreatedTotal, sandboxDurationMs, sandboxPatchCount, sandboxTransportDurationMs, schedulerQueueDepth, smithersMetrics, timerDelayDuration, timersCancelled, timersCreated, timersFired, timersPending, toolCallsTotal, toolDuration, trackSmithersEvent, vcsDuration } from '@smithers-orchestrator/observability'; -import * as _smithers_driver_OutputKey from '@smithers-orchestrator/driver/OutputKey'; -import * as _smithers_openapi from '@smithers-orchestrator/openapi'; -export { createOpenApiTool, createOpenApiToolSync, createOpenApiTools, createOpenApiToolsSync, listOperations, openApiToolCallErrorsTotal, openApiToolCallsTotal, openApiToolDuration } from '@smithers-orchestrator/openapi'; -import * as _smithers_memory from '@smithers-orchestrator/memory'; -export { MemoryService, Summarizer, TokenLimiter, TtlGarbageCollector, createMemoryLayer, createMemoryStore, memoryFactReads, memoryFactWrites, memoryMessageSaves, memoryRecallDuration, memoryRecallQueries, namespaceToString, parseNamespace } from '@smithers-orchestrator/memory'; -import * as _smithers_errors_KnownSmithersErrorCode from '@smithers-orchestrator/errors/KnownSmithersErrorCode'; -import * as _smithers_vcs_jj from '@smithers-orchestrator/vcs/jj'; -export { getJjPointer, isJjRepo, revertToJjPointer, runJj, workspaceAdd, workspaceClose, workspaceList } from '@smithers-orchestrator/vcs/jj'; -import * as _smithers_driver_OutputAccessor from '@smithers-orchestrator/driver/OutputAccessor'; -import * as _smithers_react_reconciler_dom_renderer from '@smithers-orchestrator/react-reconciler/dom/renderer'; -export { SmithersRenderer } from '@smithers-orchestrator/react-reconciler/dom/renderer'; -import * as _smithers_graph_GraphSnapshot from '@smithers-orchestrator/graph/GraphSnapshot'; -import * as _smithers_agents_AgentLike from '@smithers-orchestrator/agents/AgentLike'; -import { AgentLike as AgentLike$1 } from '@smithers-orchestrator/agents/AgentLike'; +import * as _smithers_graph_XmlNode from '@smthrs/graph/XmlNode'; +import * as _smithers_time_travel_timetravel from '@smthrs/time-travel/timetravel'; +import * as _smithers_graph_TaskDescriptor from '@smthrs/graph/TaskDescriptor'; +import * as _smithers_components_SmithersWorkflow from '@smthrs/components/SmithersWorkflow'; +import { SmithersWorkflow as SmithersWorkflow$1 } from '@smthrs/components/SmithersWorkflow'; +import * as _smithers_observability_SmithersEvent from '@smthrs/observability/SmithersEvent'; +import { SmithersEvent as SmithersEvent$1 } from '@smthrs/observability/SmithersEvent'; +import * as _smithers_errors_SmithersErrorCode from '@smthrs/errors/SmithersErrorCode'; +import * as _smithers_errors_SmithersError from '@smthrs/errors/SmithersError'; +export { SmithersError as SmithersErrorInstance } from '@smthrs/errors/SmithersError'; +import * as _smithers_driver_SmithersCtx from '@smthrs/driver/SmithersCtx'; +import { SmithersCtx as SmithersCtx$1 } from '@smthrs/driver/SmithersCtx'; +import * as _smithers_scheduler_SmithersWorkflowOptions from '@smthrs/scheduler/SmithersWorkflowOptions'; +import { SmithersWorkflowOptions as SmithersWorkflowOptions$1, SmithersAlertPolicy as SmithersAlertPolicy$1 } from '@smthrs/scheduler/SmithersWorkflowOptions'; +import * as _smithers_server from '@smthrs/server'; +export { startServer } from '@smthrs/server'; +import * as _smithers_server_serve from '@smthrs/server/serve'; +export { createServeApp } from '@smthrs/server/serve'; +import { OutputSnapshot } from '@smthrs/driver/OutputSnapshot'; +import * as _smithers_db_SchemaRegistryEntry from '@smthrs/db/SchemaRegistryEntry'; +import * as _smithers_driver_RunStatus from '@smthrs/driver/RunStatus'; +import * as _smithers_driver_RunResult from '@smthrs/driver/RunResult'; +import * as _smithers_driver_RunOptions from '@smthrs/driver/RunOptions'; +import * as _smithers_time_travel_revert from '@smthrs/time-travel/revert'; +import * as _smithers_observability from '@smthrs/observability'; +export { SmithersObservability, activeNodes, activeRuns, approvalsDenied, approvalsGranted, approvalsRequested, attemptDuration, cacheHits, cacheMisses, createSmithersObservabilityLayer, createSmithersOtelLayer, createSmithersRuntimeLayer, dbQueryDuration, dbRetries, dbTransactionDuration, dbTransactionRetries, dbTransactionRollbacks, externalWaitAsyncPending, hotReloadDuration, hotReloadFailures, hotReloads, httpRequestDuration, httpRequests, nodeDuration, nodesFailed, nodesFinished, nodesStarted, prometheusContentType, renderPrometheusMetrics, resolveSmithersObservabilityOptions, runsTotal, sandboxActive, sandboxBundleSizeBytes, sandboxCompletedTotal, sandboxCreatedTotal, sandboxDurationMs, sandboxPatchCount, sandboxTransportDurationMs, schedulerQueueDepth, smithersMetrics, timerDelayDuration, timersCancelled, timersCreated, timersFired, timersPending, toolCallsTotal, toolDuration, trackSmithersEvent, vcsDuration } from '@smthrs/observability'; +import * as _smithers_driver_OutputKey from '@smthrs/driver/OutputKey'; +import * as _smithers_openapi from '@smthrs/openapi'; +export { createOpenApiTool, createOpenApiToolSync, createOpenApiTools, createOpenApiToolsSync, listOperations, openApiToolCallErrorsTotal, openApiToolCallsTotal, openApiToolDuration } from '@smthrs/openapi'; +import * as _smithers_memory from '@smthrs/memory'; +export { MemoryService, Summarizer, TokenLimiter, TtlGarbageCollector, createMemoryLayer, createMemoryStore, memoryFactReads, memoryFactWrites, memoryMessageSaves, memoryRecallDuration, memoryRecallQueries, namespaceToString, parseNamespace } from '@smthrs/memory'; +import * as _smithers_errors_KnownSmithersErrorCode from '@smthrs/errors/KnownSmithersErrorCode'; +import * as _smithers_vcs_jj from '@smthrs/vcs/jj'; +export { getJjPointer, isJjRepo, revertToJjPointer, runJj, workspaceAdd, workspaceClose, workspaceList } from '@smthrs/vcs/jj'; +import * as _smithers_driver_OutputAccessor from '@smthrs/driver/OutputAccessor'; +import * as _smithers_react_reconciler_dom_renderer from '@smthrs/react-reconciler/dom/renderer'; +export { SmithersRenderer } from '@smthrs/react-reconciler/dom/renderer'; +import * as _smithers_graph_GraphSnapshot from '@smthrs/graph/GraphSnapshot'; +import * as _smithers_agents_AgentLike from '@smthrs/agents/AgentLike'; +import { AgentLike as AgentLike$1 } from '@smthrs/agents/AgentLike'; import * as zod from 'zod'; import { z } from 'zod'; import React from 'react'; import { BunSQLiteDatabase } from 'drizzle-orm/bun-sqlite'; -import * as _smithers_components from '@smithers-orchestrator/components'; -import { Sequence, Parallel, MergeQueue, Branch, Loop, Ralph, ContinueAsNew, continueAsNew, Worktree, Timer } from '@smithers-orchestrator/components'; -export { Approval, ApprovalGate, ApprovalGateProps, Aspects, AspectsProps, Branch, CheckSuite, CheckSuiteProps, ClassifyAndRoute, ClassifyAndRouteProps, ContentPipeline, ContentPipelineProps, ContentPipelineStage, ContinueAsNew, Debate, DebateProps, DecisionTable, DecisionTableProps, DriftDetector, DriftDetectorProps, EscalationChain, EscalationChainProps, EscalationLevel, GatherAndSynthesize, GatherAndSynthesizeProps, HumanTask, HumanTaskProps, Kanban, Loop, MergeQueue, Optimizer, OptimizerProps, Panel, PanelProps, PanelistConfig, Parallel, Poller, Ralph, ReviewLoop, ReviewLoopProps, Runbook, RunbookProps, RunbookStep, Saga, Sandbox, ScanFixVerify, ScanFixVerifyProps, Sequence, Signal, Subflow, SubflowProps, SuperSmithers, SuperSmithersProps, Supervisor, SupervisorProps, Task, Timer, TryCatchFinally, WaitForEvent, Workflow, Worktree, approvalDecisionSchema, approvalRankingSchema, approvalSelectionSchema, continueAsNew } from '@smithers-orchestrator/components'; -import { ApprovalProps as ApprovalProps$1 } from '@smithers-orchestrator/components/components/ApprovalProps'; -import { DepsSpec as DepsSpec$1 } from '@smithers-orchestrator/components/components/DepsSpec'; -import { SandboxProps as SandboxProps$1 } from '@smithers-orchestrator/components/components/SandboxProps'; -import { SignalProps as SignalProps$1 } from '@smithers-orchestrator/components/components/SignalProps'; -import { TaskProps as TaskProps$1 } from '@smithers-orchestrator/components/components/TaskProps'; -import { WorkflowProps } from '@smithers-orchestrator/components/components/WorkflowProps'; -import * as _smithers_server_gateway from '@smithers-orchestrator/server/gateway'; -export { Gateway } from '@smithers-orchestrator/server/gateway'; -import * as _smithers_agents from '@smithers-orchestrator/agents'; -export { AmpAgent, AnthropicAgent, AntigravityAgent, ClaudeCodeAgent, CodexAgent, ForgeAgent, GeminiAgent, HermesAgent, KimiAgent, OpenAIAgent, OpenCodeAgent, PiAgent } from '@smithers-orchestrator/agents'; -import * as _smithers_scorers from '@smithers-orchestrator/scorers'; -export { aggregateScores, createScorer, faithfulnessScorer, latencyScorer, llmJudge, relevancyScorer, runScorersAsync, runScorersBatch, schemaAdherenceScorer, smithersScorers, toxicityScorer } from '@smithers-orchestrator/scorers'; -import * as _smithers_agents_capability_registry from '@smithers-orchestrator/agents/capability-registry'; -export { hashCapabilityRegistry } from '@smithers-orchestrator/agents/capability-registry'; -export { ERROR_REFERENCE_URL } from '@smithers-orchestrator/errors/ERROR_REFERENCE_URL'; -export { errorToJson } from '@smithers-orchestrator/errors/errorToJson'; -export { getSmithersErrorDefinition } from '@smithers-orchestrator/errors/getSmithersErrorDefinition'; -export { getSmithersErrorDocsUrl } from '@smithers-orchestrator/errors/getSmithersErrorDocsUrl'; -export { isKnownSmithersErrorCode } from '@smithers-orchestrator/errors/isKnownSmithersErrorCode'; -export { isSmithersError } from '@smithers-orchestrator/errors/isSmithersError'; -export { knownSmithersErrorCodes } from '@smithers-orchestrator/errors/knownSmithersErrorCodes'; -export { signalRun } from '@smithers-orchestrator/engine/signals'; -export { usePatched } from '@smithers-orchestrator/engine/effect/versioning'; -export { ensureSmithersTables } from '@smithers-orchestrator/db/ensure'; -export { markdownComponents } from '@smithers-orchestrator/components/markdownComponents'; -export { renderMdx } from '@smithers-orchestrator/components/renderMdx'; -export { zodToTable } from '@smithers-orchestrator/db/zodToTable'; -export { syncZodTableSchema, zodSchemaColumns, zodToCreateTableSQL } from '@smithers-orchestrator/db/zodToCreateTableSQL'; -export { camelToSnake } from '@smithers-orchestrator/db/utils/camelToSnake'; -export { unwrapZodType } from '@smithers-orchestrator/db/unwrapZodType'; -export { zodSchemaToJsonExample } from '@smithers-orchestrator/components/zod-to-example'; -export { BuilderApi, BuiltSmithersWorkflow, Smithers, StepOptions, fragment, renderFrame, runWorkflow, workflow } from '@smithers-orchestrator/engine'; -import { SmithersDb } from '@smithers-orchestrator/db/adapter'; +import * as _smithers_components from '@smthrs/components'; +import { Sequence, Parallel, MergeQueue, Branch, Loop, Ralph, ContinueAsNew, continueAsNew, Worktree, Timer } from '@smthrs/components'; +export { Approval, ApprovalGate, ApprovalGateProps, Aspects, AspectsProps, Branch, CheckSuite, CheckSuiteProps, ClassifyAndRoute, ClassifyAndRouteProps, ContentPipeline, ContentPipelineProps, ContentPipelineStage, ContinueAsNew, Debate, DebateProps, DecisionTable, DecisionTableProps, DriftDetector, DriftDetectorProps, EscalationChain, EscalationChainProps, EscalationLevel, GatherAndSynthesize, GatherAndSynthesizeProps, HumanTask, HumanTaskProps, Kanban, Loop, MergeQueue, Optimizer, OptimizerProps, Panel, PanelProps, PanelistConfig, Parallel, Poller, Ralph, ReviewLoop, ReviewLoopProps, Runbook, RunbookProps, RunbookStep, Saga, Sandbox, ScanFixVerify, ScanFixVerifyProps, Sequence, Signal, Subflow, SubflowProps, SuperSmithers, SuperSmithersProps, Supervisor, SupervisorProps, Task, Timer, TryCatchFinally, WaitForEvent, Workflow, Worktree, approvalDecisionSchema, approvalRankingSchema, approvalSelectionSchema, continueAsNew } from '@smthrs/components'; +import { ApprovalProps as ApprovalProps$1 } from '@smthrs/components/components/ApprovalProps'; +import { DepsSpec as DepsSpec$1 } from '@smthrs/components/components/DepsSpec'; +import { SandboxProps as SandboxProps$1 } from '@smthrs/components/components/SandboxProps'; +import { SignalProps as SignalProps$1 } from '@smthrs/components/components/SignalProps'; +import { TaskProps as TaskProps$1 } from '@smthrs/components/components/TaskProps'; +import { WorkflowProps } from '@smthrs/components/components/WorkflowProps'; +import * as _smithers_server_gateway from '@smthrs/server/gateway'; +export { Gateway } from '@smthrs/server/gateway'; +import * as _smithers_agents from '@smthrs/agents'; +export { AmpAgent, AnthropicAgent, AntigravityAgent, ClaudeCodeAgent, CodexAgent, ForgeAgent, GeminiAgent, HermesAgent, KimiAgent, OpenAIAgent, OpenCodeAgent, PiAgent } from '@smthrs/agents'; +import * as _smithers_scorers from '@smthrs/scorers'; +export { aggregateScores, createScorer, faithfulnessScorer, latencyScorer, llmJudge, relevancyScorer, runScorersAsync, runScorersBatch, schemaAdherenceScorer, smithersScorers, toxicityScorer } from '@smthrs/scorers'; +import * as _smithers_agents_capability_registry from '@smthrs/agents/capability-registry'; +export { hashCapabilityRegistry } from '@smthrs/agents/capability-registry'; +export { ERROR_REFERENCE_URL } from '@smthrs/errors/ERROR_REFERENCE_URL'; +export { errorToJson } from '@smthrs/errors/errorToJson'; +export { getSmithersErrorDefinition } from '@smthrs/errors/getSmithersErrorDefinition'; +export { getSmithersErrorDocsUrl } from '@smthrs/errors/getSmithersErrorDocsUrl'; +export { isKnownSmithersErrorCode } from '@smthrs/errors/isKnownSmithersErrorCode'; +export { isSmithersError } from '@smthrs/errors/isSmithersError'; +export { knownSmithersErrorCodes } from '@smthrs/errors/knownSmithersErrorCodes'; +export { signalRun } from '@smthrs/engine/signals'; +export { usePatched } from '@smthrs/engine/effect/versioning'; +export { ensureSmithersTables } from '@smthrs/db/ensure'; +export { markdownComponents } from '@smthrs/components/markdownComponents'; +export { renderMdx } from '@smthrs/components/renderMdx'; +export { zodToTable } from '@smthrs/db/zodToTable'; +export { syncZodTableSchema, zodSchemaColumns, zodToCreateTableSQL } from '@smthrs/db/zodToCreateTableSQL'; +export { camelToSnake } from '@smthrs/db/utils/camelToSnake'; +export { unwrapZodType } from '@smthrs/db/unwrapZodType'; +export { zodSchemaToJsonExample } from '@smthrs/components/zod-to-example'; +export { BuilderApi, BuiltSmithersWorkflow, Smithers, StepOptions, fragment, renderFrame, runWorkflow, workflow } from '@smthrs/engine'; +import { SmithersDb } from '@smthrs/db/adapter'; type SerializedCtx$1 = { runId: string; @@ -183,7 +183,7 @@ type CreateSmithersOptions = CreateSmithersOptions$1; * * @template {Record<string, import("zod").ZodObject<any>>} S * @param {ExternalSmithersConfig<S>} config - * @returns {import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow<S> & { tables: Record<string, any>; cleanup: () => void }} + * @returns {import("@smthrs/components/SmithersWorkflow").SmithersWorkflow<S> & { tables: Record<string, any>; cleanup: () => void }} */ declare function createExternalSmithers<S extends Record<string, zod.ZodObject<any>>>(config: ExternalSmithersConfig$1<S>): _smithers_components_SmithersWorkflow.SmithersWorkflow<S> & { tables: Record<string, any>; diff --git a/docs/references/smithers/packages/smithers/src/index.js b/docs/references/smithers/packages/smithers/src/index.js index e7897fed5..22ad17133 100644 --- a/docs/references/smithers/packages/smithers/src/index.js +++ b/docs/references/smithers/packages/smithers/src/index.js @@ -1,179 +1,179 @@ // @smithers-type-exports-begin -/** @typedef {import("@smithers-orchestrator/agents/capability-registry").AgentCapabilityRegistry} AgentCapabilityRegistry */ -/** @typedef {import("@smithers-orchestrator/agents/AgentLike").AgentLike} AgentLike */ -/** @typedef {import("@smithers-orchestrator/agents/capability-registry").AgentToolDescriptor} AgentToolDescriptor */ -/** @typedef {import("@smithers-orchestrator/scorers").AggregateOptions} AggregateOptions */ -/** @typedef {import("@smithers-orchestrator/scorers").AggregateScore} AggregateScore */ +/** @typedef {import("@smthrs/agents/capability-registry").AgentCapabilityRegistry} AgentCapabilityRegistry */ +/** @typedef {import("@smthrs/agents/AgentLike").AgentLike} AgentLike */ +/** @typedef {import("@smthrs/agents/capability-registry").AgentToolDescriptor} AgentToolDescriptor */ +/** @typedef {import("@smthrs/scorers").AggregateOptions} AggregateOptions */ +/** @typedef {import("@smthrs/scorers").AggregateScore} AggregateScore */ /** * @template CALL_OPTIONS * @template TOOLS - * @typedef {import("@smithers-orchestrator/agents").AnthropicAgentOptions<CALL_OPTIONS, TOOLS>} AnthropicAgentOptions + * @typedef {import("@smthrs/agents").AnthropicAgentOptions<CALL_OPTIONS, TOOLS>} AnthropicAgentOptions */ -/** @typedef {import("@smithers-orchestrator/components").ApprovalAutoApprove} ApprovalAutoApprove */ -/** @typedef {import("@smithers-orchestrator/components").ApprovalDecision} ApprovalDecision */ -/** @typedef {import("@smithers-orchestrator/components").ApprovalMode} ApprovalMode */ -/** @typedef {import("@smithers-orchestrator/components").ApprovalOption} ApprovalOption */ -/** @typedef {import("@smithers-orchestrator/components").ApprovalProps} ApprovalProps */ -/** @typedef {import("@smithers-orchestrator/components").ApprovalRanking} ApprovalRanking */ -/** @typedef {import("@smithers-orchestrator/components").ApprovalRequest} ApprovalRequest */ -/** @typedef {import("@smithers-orchestrator/components").ApprovalSelection} ApprovalSelection */ -/** @typedef {import("@smithers-orchestrator/components").ColumnDef} ColumnDef */ -/** @typedef {import("@smithers-orchestrator/server/gateway").ConnectRequest} ConnectRequest */ -/** @typedef {import("@smithers-orchestrator/components").ContinueAsNewProps} ContinueAsNewProps */ -/** @typedef {import("@smithers-orchestrator/scorers").CreateScorerConfig} CreateScorerConfig */ +/** @typedef {import("@smthrs/components").ApprovalAutoApprove} ApprovalAutoApprove */ +/** @typedef {import("@smthrs/components").ApprovalDecision} ApprovalDecision */ +/** @typedef {import("@smthrs/components").ApprovalMode} ApprovalMode */ +/** @typedef {import("@smthrs/components").ApprovalOption} ApprovalOption */ +/** @typedef {import("@smthrs/components").ApprovalProps} ApprovalProps */ +/** @typedef {import("@smthrs/components").ApprovalRanking} ApprovalRanking */ +/** @typedef {import("@smthrs/components").ApprovalRequest} ApprovalRequest */ +/** @typedef {import("@smthrs/components").ApprovalSelection} ApprovalSelection */ +/** @typedef {import("@smthrs/components").ColumnDef} ColumnDef */ +/** @typedef {import("@smthrs/server/gateway").ConnectRequest} ConnectRequest */ +/** @typedef {import("@smthrs/components").ContinueAsNewProps} ContinueAsNewProps */ +/** @typedef {import("@smthrs/scorers").CreateScorerConfig} CreateScorerConfig */ /** * @template Schema * @typedef {import("./CreateSmithersApi.ts").CreateSmithersApi<Schema>} CreateSmithersApi */ -/** @typedef {import("@smithers-orchestrator/components").DepsSpec} DepsSpec */ -/** @typedef {import("@smithers-orchestrator/server/gateway").EventFrame} EventFrame */ +/** @typedef {import("@smthrs/components").DepsSpec} DepsSpec */ +/** @typedef {import("@smthrs/server/gateway").EventFrame} EventFrame */ /** * @template S * @typedef {import("./external/ExternalSmithersConfig.ts").ExternalSmithersConfig<S>} ExternalSmithersConfig */ -/** @typedef {import("@smithers-orchestrator/server/gateway").GatewayAuthConfig} GatewayAuthConfig */ -/** @typedef {import("@smithers-orchestrator/server/gateway").GatewayDefaults} GatewayDefaults */ -/** @typedef {import("@smithers-orchestrator/server/gateway").GatewayOptions} GatewayOptions */ -/** @typedef {import("@smithers-orchestrator/server/gateway").GatewayTokenGrant} GatewayTokenGrant */ -/** @typedef {import("@smithers-orchestrator/graph/GraphSnapshot").GraphSnapshot} GraphSnapshot */ -/** @typedef {import("@smithers-orchestrator/server/gateway").HelloResponse} HelloResponse */ -/** @typedef {import("@smithers-orchestrator/react-reconciler/dom/renderer").HostContainer} HostContainer */ +/** @typedef {import("@smthrs/server/gateway").GatewayAuthConfig} GatewayAuthConfig */ +/** @typedef {import("@smthrs/server/gateway").GatewayDefaults} GatewayDefaults */ +/** @typedef {import("@smthrs/server/gateway").GatewayOptions} GatewayOptions */ +/** @typedef {import("@smthrs/server/gateway").GatewayTokenGrant} GatewayTokenGrant */ +/** @typedef {import("@smthrs/graph/GraphSnapshot").GraphSnapshot} GraphSnapshot */ +/** @typedef {import("@smthrs/server/gateway").HelloResponse} HelloResponse */ +/** @typedef {import("@smthrs/react-reconciler/dom/renderer").HostContainer} HostContainer */ /** @typedef {import("./external/HostNodeJson.ts").HostNodeJson} HostNodeJson */ -/** @typedef {import("@smithers-orchestrator/components").InferDeps} InferDeps */ +/** @typedef {import("@smthrs/components").InferDeps} InferDeps */ /** * @template T - * @typedef {import("@smithers-orchestrator/driver/OutputAccessor").InferOutputEntry<T>} InferOutputEntry + * @typedef {import("@smthrs/driver/OutputAccessor").InferOutputEntry<T>} InferOutputEntry */ /** * @template TTable - * @typedef {import("@smithers-orchestrator/driver/OutputAccessor").InferRow<TTable>} InferRow + * @typedef {import("@smthrs/driver/OutputAccessor").InferRow<TTable>} InferRow */ -/** @typedef {import("@smithers-orchestrator/vcs/jj").JjRevertResult} JjRevertResult */ -/** @typedef {import("@smithers-orchestrator/components").KanbanProps} KanbanProps */ -/** @typedef {import("@smithers-orchestrator/errors/KnownSmithersErrorCode").KnownSmithersErrorCode} KnownSmithersErrorCode */ -/** @typedef {import("@smithers-orchestrator/scorers").LlmJudgeConfig} LlmJudgeConfig */ -/** @typedef {import("@smithers-orchestrator/memory").MemoryFact} MemoryFact */ -/** @typedef {import("@smithers-orchestrator/memory").MemoryLayerConfig} MemoryLayerConfig */ -/** @typedef {import("@smithers-orchestrator/memory").MemoryMessage} MemoryMessage */ -/** @typedef {import("@smithers-orchestrator/memory").MemoryNamespace} MemoryNamespace */ -/** @typedef {import("@smithers-orchestrator/memory").MemoryNamespaceKind} MemoryNamespaceKind */ -/** @typedef {import("@smithers-orchestrator/memory").MemoryProcessor} MemoryProcessor */ -/** @typedef {import("@smithers-orchestrator/memory").MemoryProcessorConfig} MemoryProcessorConfig */ -/** @typedef {import("@smithers-orchestrator/memory").MemoryServiceApi} MemoryServiceApi */ -/** @typedef {import("@smithers-orchestrator/memory").MemoryStore} MemoryStore */ -/** @typedef {import("@smithers-orchestrator/memory").MemoryThread} MemoryThread */ -/** @typedef {import("@smithers-orchestrator/memory").MessageHistoryConfig} MessageHistoryConfig */ +/** @typedef {import("@smthrs/vcs/jj").JjRevertResult} JjRevertResult */ +/** @typedef {import("@smthrs/components").KanbanProps} KanbanProps */ +/** @typedef {import("@smthrs/errors/KnownSmithersErrorCode").KnownSmithersErrorCode} KnownSmithersErrorCode */ +/** @typedef {import("@smthrs/scorers").LlmJudgeConfig} LlmJudgeConfig */ +/** @typedef {import("@smthrs/memory").MemoryFact} MemoryFact */ +/** @typedef {import("@smthrs/memory").MemoryLayerConfig} MemoryLayerConfig */ +/** @typedef {import("@smthrs/memory").MemoryMessage} MemoryMessage */ +/** @typedef {import("@smthrs/memory").MemoryNamespace} MemoryNamespace */ +/** @typedef {import("@smthrs/memory").MemoryNamespaceKind} MemoryNamespaceKind */ +/** @typedef {import("@smthrs/memory").MemoryProcessor} MemoryProcessor */ +/** @typedef {import("@smthrs/memory").MemoryProcessorConfig} MemoryProcessorConfig */ +/** @typedef {import("@smthrs/memory").MemoryServiceApi} MemoryServiceApi */ +/** @typedef {import("@smthrs/memory").MemoryStore} MemoryStore */ +/** @typedef {import("@smthrs/memory").MemoryThread} MemoryThread */ +/** @typedef {import("@smthrs/memory").MessageHistoryConfig} MessageHistoryConfig */ /** * @template [CALL_OPTIONS=never] * @template [TOOLS=import("ai").ToolSet] - * @typedef {import("@smithers-orchestrator/agents").OpenAIAgentOptions<CALL_OPTIONS, TOOLS>} OpenAIAgentOptions + * @typedef {import("@smthrs/agents").OpenAIAgentOptions<CALL_OPTIONS, TOOLS>} OpenAIAgentOptions */ /** * @template [CALL_OPTIONS=never] * @template [TOOLS=import("ai").ToolSet] - * @typedef {import("@smithers-orchestrator/agents").HermesAgentOptions<CALL_OPTIONS, TOOLS>} HermesAgentOptions + * @typedef {import("@smthrs/agents").HermesAgentOptions<CALL_OPTIONS, TOOLS>} HermesAgentOptions */ -/** @typedef {import("@smithers-orchestrator/openapi").OpenApiAuth} OpenApiAuth */ -/** @typedef {import("@smithers-orchestrator/openapi").OpenApiSpec} OpenApiSpec */ -/** @typedef {import("@smithers-orchestrator/openapi").OpenApiToolsOptions} OpenApiToolsOptions */ +/** @typedef {import("@smthrs/openapi").OpenApiAuth} OpenApiAuth */ +/** @typedef {import("@smthrs/openapi").OpenApiSpec} OpenApiSpec */ +/** @typedef {import("@smthrs/openapi").OpenApiToolsOptions} OpenApiToolsOptions */ /** * @template Schema - * @typedef {import("@smithers-orchestrator/driver/OutputAccessor").OutputAccessor<Schema>} OutputAccessor + * @typedef {import("@smthrs/driver/OutputAccessor").OutputAccessor<Schema>} OutputAccessor */ -/** @typedef {import("@smithers-orchestrator/driver/OutputKey").OutputKey} OutputKey */ -/** @typedef {import("@smithers-orchestrator/components").OutputTarget} OutputTarget */ -/** @typedef {import("@smithers-orchestrator/agents").PiAgentOptions} PiAgentOptions */ -/** @typedef {import("@smithers-orchestrator/agents").PiExtensionUiRequest} PiExtensionUiRequest */ -/** @typedef {import("@smithers-orchestrator/agents").PiExtensionUiResponse} PiExtensionUiResponse */ -/** @typedef {import("@smithers-orchestrator/agents").OpenCodeAgentOptions} OpenCodeAgentOptions */ -/** @typedef {import("@smithers-orchestrator/components").PollerProps} PollerProps */ -/** @typedef {import("@smithers-orchestrator/server/gateway").RequestFrame} RequestFrame */ -/** @typedef {import("@smithers-orchestrator/observability").ResolvedSmithersObservabilityOptions} ResolvedSmithersObservabilityOptions */ -/** @typedef {import("@smithers-orchestrator/server/gateway").ResponseFrame} ResponseFrame */ -/** @typedef {import("@smithers-orchestrator/time-travel/revert").RevertOptions} RevertOptions */ -/** @typedef {import("@smithers-orchestrator/time-travel/revert").RevertResult} RevertResult */ -/** @typedef {import("@smithers-orchestrator/vcs/jj").RunJjOptions} RunJjOptions */ -/** @typedef {import("@smithers-orchestrator/vcs/jj").RunJjResult} RunJjResult */ -/** @typedef {import("@smithers-orchestrator/driver/RunOptions").RunOptions} RunOptions */ -/** @typedef {import("@smithers-orchestrator/driver/RunResult").RunResult} RunResult */ -/** @typedef {import("@smithers-orchestrator/driver/RunStatus").RunStatus} RunStatus */ -/** @typedef {import("@smithers-orchestrator/components").SagaProps} SagaProps */ -/** @typedef {import("@smithers-orchestrator/components").SagaStepDef} SagaStepDef */ -/** @typedef {import("@smithers-orchestrator/components").SagaStepProps} SagaStepProps */ -/** @typedef {import("@smithers-orchestrator/scorers").SamplingConfig} SamplingConfig */ -/** @typedef {import("@smithers-orchestrator/components").SandboxProps} SandboxProps */ -/** @typedef {import("@smithers-orchestrator/components").SandboxRuntime} SandboxRuntime */ -/** @typedef {import("@smithers-orchestrator/components").SandboxVolumeMount} SandboxVolumeMount */ -/** @typedef {import("@smithers-orchestrator/components").SandboxWorkspaceSpec} SandboxWorkspaceSpec */ -/** @typedef {import("@smithers-orchestrator/db/SchemaRegistryEntry").SchemaRegistryEntry} SchemaRegistryEntry */ -/** @typedef {import("@smithers-orchestrator/scorers").Scorer} Scorer */ -/** @typedef {import("@smithers-orchestrator/scorers").ScorerBinding} ScorerBinding */ -/** @typedef {import("@smithers-orchestrator/scorers").ScorerContext} ScorerContext */ -/** @typedef {import("@smithers-orchestrator/scorers").ScoreResult} ScoreResult */ -/** @typedef {import("@smithers-orchestrator/scorers").ScorerFn} ScorerFn */ -/** @typedef {import("@smithers-orchestrator/scorers").ScorerInput} ScorerInput */ -/** @typedef {import("@smithers-orchestrator/scorers").ScoreRow} ScoreRow */ -/** @typedef {import("@smithers-orchestrator/scorers").ScorersMap} ScorersMap */ -/** @typedef {import("@smithers-orchestrator/memory").SemanticRecallConfig} SemanticRecallConfig */ +/** @typedef {import("@smthrs/driver/OutputKey").OutputKey} OutputKey */ +/** @typedef {import("@smthrs/components").OutputTarget} OutputTarget */ +/** @typedef {import("@smthrs/agents").PiAgentOptions} PiAgentOptions */ +/** @typedef {import("@smthrs/agents").PiExtensionUiRequest} PiExtensionUiRequest */ +/** @typedef {import("@smthrs/agents").PiExtensionUiResponse} PiExtensionUiResponse */ +/** @typedef {import("@smthrs/agents").OpenCodeAgentOptions} OpenCodeAgentOptions */ +/** @typedef {import("@smthrs/components").PollerProps} PollerProps */ +/** @typedef {import("@smthrs/server/gateway").RequestFrame} RequestFrame */ +/** @typedef {import("@smthrs/observability").ResolvedSmithersObservabilityOptions} ResolvedSmithersObservabilityOptions */ +/** @typedef {import("@smthrs/server/gateway").ResponseFrame} ResponseFrame */ +/** @typedef {import("@smthrs/time-travel/revert").RevertOptions} RevertOptions */ +/** @typedef {import("@smthrs/time-travel/revert").RevertResult} RevertResult */ +/** @typedef {import("@smthrs/vcs/jj").RunJjOptions} RunJjOptions */ +/** @typedef {import("@smthrs/vcs/jj").RunJjResult} RunJjResult */ +/** @typedef {import("@smthrs/driver/RunOptions").RunOptions} RunOptions */ +/** @typedef {import("@smthrs/driver/RunResult").RunResult} RunResult */ +/** @typedef {import("@smthrs/driver/RunStatus").RunStatus} RunStatus */ +/** @typedef {import("@smthrs/components").SagaProps} SagaProps */ +/** @typedef {import("@smthrs/components").SagaStepDef} SagaStepDef */ +/** @typedef {import("@smthrs/components").SagaStepProps} SagaStepProps */ +/** @typedef {import("@smthrs/scorers").SamplingConfig} SamplingConfig */ +/** @typedef {import("@smthrs/components").SandboxProps} SandboxProps */ +/** @typedef {import("@smthrs/components").SandboxRuntime} SandboxRuntime */ +/** @typedef {import("@smthrs/components").SandboxVolumeMount} SandboxVolumeMount */ +/** @typedef {import("@smthrs/components").SandboxWorkspaceSpec} SandboxWorkspaceSpec */ +/** @typedef {import("@smthrs/db/SchemaRegistryEntry").SchemaRegistryEntry} SchemaRegistryEntry */ +/** @typedef {import("@smthrs/scorers").Scorer} Scorer */ +/** @typedef {import("@smthrs/scorers").ScorerBinding} ScorerBinding */ +/** @typedef {import("@smthrs/scorers").ScorerContext} ScorerContext */ +/** @typedef {import("@smthrs/scorers").ScoreResult} ScoreResult */ +/** @typedef {import("@smthrs/scorers").ScorerFn} ScorerFn */ +/** @typedef {import("@smthrs/scorers").ScorerInput} ScorerInput */ +/** @typedef {import("@smthrs/scorers").ScoreRow} ScoreRow */ +/** @typedef {import("@smthrs/scorers").ScorersMap} ScorersMap */ +/** @typedef {import("@smthrs/memory").SemanticRecallConfig} SemanticRecallConfig */ /** @typedef {import("./external/SerializedCtx.ts").SerializedCtx} SerializedCtx */ -/** @typedef {import("@smithers-orchestrator/server/serve").ServeOptions} ServeOptions */ -/** @typedef {import("@smithers-orchestrator/server").ServerOptions} ServerOptions */ -/** @typedef {import("@smithers-orchestrator/components").SignalProps} SignalProps */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertLabels} SmithersAlertLabels */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertPolicy} SmithersAlertPolicy */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertPolicyDefaults} SmithersAlertPolicyDefaults */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertPolicyRule} SmithersAlertPolicyRule */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertReaction} SmithersAlertReaction */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertReactionKind} SmithersAlertReactionKind */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertReactionRef} SmithersAlertReactionRef */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersAlertSeverity} SmithersAlertSeverity */ -/** @typedef {import("@smithers-orchestrator/driver/SmithersCtx").SmithersCtx} SmithersCtx */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersErrorCode").SmithersErrorCode} SmithersErrorCode */ -/** @typedef {import("@smithers-orchestrator/observability/SmithersEvent").SmithersEvent} SmithersEvent */ -/** @typedef {import("@smithers-orchestrator/observability").SmithersLogFormat} SmithersLogFormat */ -/** @typedef {import("@smithers-orchestrator/observability").SmithersObservabilityOptions} SmithersObservabilityOptions */ -/** @typedef {import("@smithers-orchestrator/observability").SmithersObservabilityService} SmithersObservabilityService */ +/** @typedef {import("@smthrs/server/serve").ServeOptions} ServeOptions */ +/** @typedef {import("@smthrs/server").ServerOptions} ServerOptions */ +/** @typedef {import("@smthrs/components").SignalProps} SignalProps */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertLabels} SmithersAlertLabels */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertPolicy} SmithersAlertPolicy */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertPolicyDefaults} SmithersAlertPolicyDefaults */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertPolicyRule} SmithersAlertPolicyRule */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertReaction} SmithersAlertReaction */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertReactionKind} SmithersAlertReactionKind */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertReactionRef} SmithersAlertReactionRef */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersAlertSeverity} SmithersAlertSeverity */ +/** @typedef {import("@smthrs/driver/SmithersCtx").SmithersCtx} SmithersCtx */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/errors/SmithersErrorCode").SmithersErrorCode} SmithersErrorCode */ +/** @typedef {import("@smthrs/observability/SmithersEvent").SmithersEvent} SmithersEvent */ +/** @typedef {import("@smthrs/observability").SmithersLogFormat} SmithersLogFormat */ +/** @typedef {import("@smthrs/observability").SmithersObservabilityOptions} SmithersObservabilityOptions */ +/** @typedef {import("@smthrs/observability").SmithersObservabilityService} SmithersObservabilityService */ /** * @template Schema - * @typedef {import("@smithers-orchestrator/components/SmithersWorkflow").SmithersWorkflow<Schema>} SmithersWorkflow + * @typedef {import("@smthrs/components/SmithersWorkflow").SmithersWorkflow<Schema>} SmithersWorkflow */ -/** @typedef {import("@smithers-orchestrator/scheduler/SmithersWorkflowOptions").SmithersWorkflowOptions} SmithersWorkflowOptions */ -/** @typedef {import("@smithers-orchestrator/graph/TaskDescriptor").TaskDescriptor} TaskDescriptor */ -/** @typedef {import("@smithers-orchestrator/memory").TaskMemoryConfig} TaskMemoryConfig */ -/** @typedef {import("@smithers-orchestrator/components").TaskProps} TaskProps */ -/** @typedef {import("@smithers-orchestrator/components").TimerProps} TimerProps */ -/** @typedef {import("@smithers-orchestrator/time-travel/timetravel").TimeTravelOptions} TimeTravelOptions */ -/** @typedef {import("@smithers-orchestrator/time-travel/timetravel").TimeTravelResult} TimeTravelResult */ -/** @typedef {import("@smithers-orchestrator/components").TryCatchFinallyProps} TryCatchFinallyProps */ -/** @typedef {import("@smithers-orchestrator/components").WaitForEventProps} WaitForEventProps */ +/** @typedef {import("@smthrs/scheduler/SmithersWorkflowOptions").SmithersWorkflowOptions} SmithersWorkflowOptions */ +/** @typedef {import("@smthrs/graph/TaskDescriptor").TaskDescriptor} TaskDescriptor */ +/** @typedef {import("@smthrs/memory").TaskMemoryConfig} TaskMemoryConfig */ +/** @typedef {import("@smthrs/components").TaskProps} TaskProps */ +/** @typedef {import("@smthrs/components").TimerProps} TimerProps */ +/** @typedef {import("@smthrs/time-travel/timetravel").TimeTravelOptions} TimeTravelOptions */ +/** @typedef {import("@smthrs/time-travel/timetravel").TimeTravelResult} TimeTravelResult */ +/** @typedef {import("@smthrs/components").TryCatchFinallyProps} TryCatchFinallyProps */ +/** @typedef {import("@smthrs/components").WaitForEventProps} WaitForEventProps */ /** * @template T - * @typedef {import("@smithers-orchestrator/memory").WorkingMemoryConfig<T>} WorkingMemoryConfig + * @typedef {import("@smthrs/memory").WorkingMemoryConfig<T>} WorkingMemoryConfig */ -/** @typedef {import("@smithers-orchestrator/vcs/jj").WorkspaceAddOptions} WorkspaceAddOptions */ -/** @typedef {import("@smithers-orchestrator/vcs/jj").WorkspaceInfo} WorkspaceInfo */ -/** @typedef {import("@smithers-orchestrator/vcs/jj").WorkspaceResult} WorkspaceResult */ -/** @typedef {import("@smithers-orchestrator/graph/XmlNode").XmlElement} XmlElement */ -/** @typedef {import("@smithers-orchestrator/graph/XmlNode").XmlNode} XmlNode */ -/** @typedef {import("@smithers-orchestrator/graph/XmlNode").XmlText} XmlText */ +/** @typedef {import("@smthrs/vcs/jj").WorkspaceAddOptions} WorkspaceAddOptions */ +/** @typedef {import("@smthrs/vcs/jj").WorkspaceInfo} WorkspaceInfo */ +/** @typedef {import("@smthrs/vcs/jj").WorkspaceResult} WorkspaceResult */ +/** @typedef {import("@smthrs/graph/XmlNode").XmlElement} XmlElement */ +/** @typedef {import("@smthrs/graph/XmlNode").XmlNode} XmlNode */ +/** @typedef {import("@smthrs/graph/XmlNode").XmlText} XmlText */ // @smithers-type-exports-end -export { hashCapabilityRegistry } from "@smithers-orchestrator/agents/capability-registry"; -export { ERROR_REFERENCE_URL, } from "@smithers-orchestrator/errors/ERROR_REFERENCE_URL"; -export { SmithersError as SmithersErrorInstance, } from "@smithers-orchestrator/errors/SmithersError"; -export { errorToJson } from "@smithers-orchestrator/errors/errorToJson"; -export { getSmithersErrorDefinition } from "@smithers-orchestrator/errors/getSmithersErrorDefinition"; -export { getSmithersErrorDocsUrl } from "@smithers-orchestrator/errors/getSmithersErrorDocsUrl"; -export { isKnownSmithersErrorCode } from "@smithers-orchestrator/errors/isKnownSmithersErrorCode"; -export { isSmithersError } from "@smithers-orchestrator/errors/isSmithersError"; -export { knownSmithersErrorCodes } from "@smithers-orchestrator/errors/knownSmithersErrorCodes"; +export { hashCapabilityRegistry } from "@smthrs/agents/capability-registry"; +export { ERROR_REFERENCE_URL, } from "@smthrs/errors/ERROR_REFERENCE_URL"; +export { SmithersError as SmithersErrorInstance, } from "@smthrs/errors/SmithersError"; +export { errorToJson } from "@smthrs/errors/errorToJson"; +export { getSmithersErrorDefinition } from "@smthrs/errors/getSmithersErrorDefinition"; +export { getSmithersErrorDocsUrl } from "@smthrs/errors/getSmithersErrorDocsUrl"; +export { isKnownSmithersErrorCode } from "@smthrs/errors/isKnownSmithersErrorCode"; +export { isSmithersError } from "@smthrs/errors/isSmithersError"; +export { knownSmithersErrorCodes } from "@smthrs/errors/knownSmithersErrorCodes"; // Components -export { Approval, ApprovalGate, Aspects, Branch, CheckSuite, ClassifyAndRoute, ContentPipeline, ContinueAsNew, Debate, DecisionTable, DriftDetector, EscalationChain, GatherAndSynthesize, HumanTask, Kanban, Loop, MergeQueue, Optimizer, Panel, Parallel, Poller, Ralph, ReviewLoop, Runbook, Saga, Sandbox, ScanFixVerify, Sequence, Signal, Subflow, SuperSmithers, Supervisor, Task, Timer, TryCatchFinally, WaitForEvent, Workflow, Worktree, approvalDecisionSchema, approvalRankingSchema, approvalSelectionSchema, continueAsNew, } from "@smithers-orchestrator/components"; +export { Approval, ApprovalGate, Aspects, Branch, CheckSuite, ClassifyAndRoute, ContentPipeline, ContinueAsNew, Debate, DecisionTable, DriftDetector, EscalationChain, GatherAndSynthesize, HumanTask, Kanban, Loop, MergeQueue, Optimizer, Panel, Parallel, Poller, Ralph, ReviewLoop, Runbook, Saga, Sandbox, ScanFixVerify, Sequence, Signal, Subflow, SuperSmithers, Supervisor, Task, Timer, TryCatchFinally, WaitForEvent, Workflow, Worktree, approvalDecisionSchema, approvalRankingSchema, approvalSelectionSchema, continueAsNew, } from "@smthrs/components"; // Agents -export { AnthropicAgent, OpenAIAgent, HermesAgent, AmpAgent, AntigravityAgent, ClaudeCodeAgent, CodexAgent, GeminiAgent, PiAgent, KimiAgent, ForgeAgent, OpenCodeAgent, } from "@smithers-orchestrator/agents"; +export { AnthropicAgent, OpenAIAgent, HermesAgent, AmpAgent, AntigravityAgent, ClaudeCodeAgent, CodexAgent, GeminiAgent, PiAgent, KimiAgent, ForgeAgent, OpenCodeAgent, } from "@smthrs/agents"; // VCS -export { runJj, getJjPointer, revertToJjPointer, isJjRepo, workspaceAdd, workspaceList, workspaceClose, } from "@smithers-orchestrator/vcs/jj"; +export { runJj, getJjPointer, revertToJjPointer, isJjRepo, workspaceAdd, workspaceList, workspaceClose, } from "@smthrs/vcs/jj"; // Core API export { createSmithers, createSmithersPostgres } from "./create.js"; export { @@ -182,9 +182,9 @@ export { runWorkflow, Smithers, workflow, -} from "@smithers-orchestrator/engine"; -export { signalRun } from "@smithers-orchestrator/engine/signals"; -export { usePatched } from "@smithers-orchestrator/engine/effect/versioning"; +} from "@smthrs/engine"; +export { signalRun } from "@smthrs/engine/signals"; +export { usePatched } from "@smthrs/engine/effect/versioning"; // Tools export { bash, @@ -197,34 +197,34 @@ export { write, } from "./tools.js"; // Server -export { startServer } from "@smithers-orchestrator/server"; -export { Gateway } from "@smithers-orchestrator/server/gateway"; +export { startServer } from "@smthrs/server"; +export { Gateway } from "@smthrs/server/gateway"; // Serve (Hono-based single-workflow HTTP server) -export { createServeApp } from "@smithers-orchestrator/server/serve"; +export { createServeApp } from "@smthrs/server/serve"; // Observability -export { SmithersObservability, createSmithersObservabilityLayer, createSmithersOtelLayer, createSmithersRuntimeLayer, smithersMetrics, trackSmithersEvent, activeNodes, activeRuns, externalWaitAsyncPending, approvalsDenied, approvalsGranted, approvalsRequested, timerDelayDuration, timersCancelled, timersCreated, timersFired, timersPending, attemptDuration, cacheHits, cacheMisses, dbQueryDuration, dbRetries, dbTransactionDuration, dbTransactionRetries, dbTransactionRollbacks, hotReloadDuration, hotReloadFailures, hotReloads, httpRequestDuration, httpRequests, nodeDuration, nodesFailed, nodesFinished, nodesStarted, prometheusContentType, renderPrometheusMetrics, resolveSmithersObservabilityOptions, runsTotal, sandboxActive, sandboxBundleSizeBytes, sandboxCompletedTotal, sandboxCreatedTotal, sandboxDurationMs, sandboxPatchCount, sandboxTransportDurationMs, schedulerQueueDepth, toolCallsTotal, toolDuration, vcsDuration, } from "@smithers-orchestrator/observability"; +export { SmithersObservability, createSmithersObservabilityLayer, createSmithersOtelLayer, createSmithersRuntimeLayer, smithersMetrics, trackSmithersEvent, activeNodes, activeRuns, externalWaitAsyncPending, approvalsDenied, approvalsGranted, approvalsRequested, timerDelayDuration, timersCancelled, timersCreated, timersFired, timersPending, attemptDuration, cacheHits, cacheMisses, dbQueryDuration, dbRetries, dbTransactionDuration, dbTransactionRetries, dbTransactionRollbacks, hotReloadDuration, hotReloadFailures, hotReloads, httpRequestDuration, httpRequests, nodeDuration, nodesFailed, nodesFinished, nodesStarted, prometheusContentType, renderPrometheusMetrics, resolveSmithersObservabilityOptions, runsTotal, sandboxActive, sandboxBundleSizeBytes, sandboxCompletedTotal, sandboxCreatedTotal, sandboxDurationMs, sandboxPatchCount, sandboxTransportDurationMs, schedulerQueueDepth, toolCallsTotal, toolDuration, vcsDuration, } from "@smthrs/observability"; // DB -export { SmithersDb } from "@smithers-orchestrator/db/adapter"; -export { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; +export { SmithersDb } from "@smthrs/db/adapter"; +export { ensureSmithersTables } from "@smthrs/db/ensure"; // Renderer -export { SmithersRenderer } from "@smithers-orchestrator/react-reconciler/dom/renderer"; +export { SmithersRenderer } from "@smthrs/react-reconciler/dom/renderer"; // External / multi-language export { createExternalSmithers } from "./external/index.js"; // Revert -export { revertToAttempt } from "@smithers-orchestrator/time-travel/revert"; -export { timeTravel } from "@smithers-orchestrator/time-travel/timetravel"; +export { revertToAttempt } from "@smthrs/time-travel/revert"; +export { timeTravel } from "@smthrs/time-travel/timetravel"; // Scorers -export { createScorer, llmJudge, relevancyScorer, toxicityScorer, faithfulnessScorer, schemaAdherenceScorer, latencyScorer, runScorersAsync, runScorersBatch, aggregateScores, smithersScorers, } from "@smithers-orchestrator/scorers"; +export { createScorer, llmJudge, relevancyScorer, toxicityScorer, faithfulnessScorer, schemaAdherenceScorer, latencyScorer, runScorersAsync, runScorersBatch, aggregateScores, smithersScorers, } from "@smthrs/scorers"; // Memory -export { createMemoryStore, createMemoryLayer, MemoryService, TtlGarbageCollector, TokenLimiter, Summarizer, namespaceToString, parseNamespace, memoryFactReads, memoryFactWrites, memoryRecallQueries, memoryMessageSaves, memoryRecallDuration, } from "@smithers-orchestrator/memory"; +export { createMemoryStore, createMemoryLayer, MemoryService, TtlGarbageCollector, TokenLimiter, Summarizer, namespaceToString, parseNamespace, memoryFactReads, memoryFactWrites, memoryRecallQueries, memoryMessageSaves, memoryRecallDuration, } from "@smthrs/memory"; // OpenAPI Tools -export { createOpenApiTools, createOpenApiToolsSync, createOpenApiTool, createOpenApiToolSync, listOperations, openApiToolCallsTotal, openApiToolCallErrorsTotal, openApiToolDuration, } from "@smithers-orchestrator/openapi"; +export { createOpenApiTools, createOpenApiToolsSync, createOpenApiTool, createOpenApiToolSync, listOperations, openApiToolCallsTotal, openApiToolCallErrorsTotal, openApiToolDuration, } from "@smthrs/openapi"; // Utilities export { mdxPlugin } from "./mdx-plugin.js"; -export { markdownComponents } from "@smithers-orchestrator/components/markdownComponents"; -export { renderMdx } from "@smithers-orchestrator/components/renderMdx"; -export { zodToTable } from "@smithers-orchestrator/db/zodToTable"; -export { syncZodTableSchema, zodSchemaColumns, zodToCreateTableSQL } from "@smithers-orchestrator/db/zodToCreateTableSQL"; -export { camelToSnake } from "@smithers-orchestrator/db/utils/camelToSnake"; -export { unwrapZodType } from "@smithers-orchestrator/db/unwrapZodType"; -export { zodSchemaToJsonExample } from "@smithers-orchestrator/components/zod-to-example"; +export { markdownComponents } from "@smthrs/components/markdownComponents"; +export { renderMdx } from "@smthrs/components/renderMdx"; +export { zodToTable } from "@smthrs/db/zodToTable"; +export { syncZodTableSchema, zodSchemaColumns, zodToCreateTableSQL } from "@smthrs/db/zodToCreateTableSQL"; +export { camelToSnake } from "@smthrs/db/utils/camelToSnake"; +export { unwrapZodType } from "@smthrs/db/unwrapZodType"; +export { zodSchemaToJsonExample } from "@smthrs/components/zod-to-example"; diff --git a/docs/references/smithers/packages/smithers/src/jsx-runtime.js b/docs/references/smithers/packages/smithers/src/jsx-runtime.js index 43b45d5fc..6bae346a8 100644 --- a/docs/references/smithers/packages/smithers/src/jsx-runtime.js +++ b/docs/references/smithers/packages/smithers/src/jsx-runtime.js @@ -1,3 +1,3 @@ /** @typedef {import("react").ReactElement} JSX.Element */ -export { jsx, jsxs, Fragment } from "@smithers-orchestrator/react-reconciler/jsx-runtime"; -export { jsxDEV } from "@smithers-orchestrator/react-reconciler/jsx-runtime"; +export { jsx, jsxs, Fragment } from "@smthrs/react-reconciler/jsx-runtime"; +export { jsxDEV } from "@smthrs/react-reconciler/jsx-runtime"; diff --git a/docs/references/smithers/packages/smithers/src/memory.js b/docs/references/smithers/packages/smithers/src/memory.js index 8e93d227b..8f8cf8a01 100644 --- a/docs/references/smithers/packages/smithers/src/memory.js +++ b/docs/references/smithers/packages/smithers/src/memory.js @@ -1 +1 @@ -export * from "@smithers-orchestrator/memory"; +export * from "@smthrs/memory"; diff --git a/docs/references/smithers/packages/smithers/src/observability.js b/docs/references/smithers/packages/smithers/src/observability.js index 846c06b54..efda86d8c 100644 --- a/docs/references/smithers/packages/smithers/src/observability.js +++ b/docs/references/smithers/packages/smithers/src/observability.js @@ -1 +1 @@ -export * from "@smithers-orchestrator/observability"; +export * from "@smthrs/observability"; diff --git a/docs/references/smithers/packages/smithers/src/openapi.js b/docs/references/smithers/packages/smithers/src/openapi.js index 28e2a9e4c..2a05b1b3b 100644 --- a/docs/references/smithers/packages/smithers/src/openapi.js +++ b/docs/references/smithers/packages/smithers/src/openapi.js @@ -1 +1 @@ -export * from "@smithers-orchestrator/openapi"; +export * from "@smthrs/openapi"; diff --git a/docs/references/smithers/packages/smithers/src/sandbox.d.ts b/docs/references/smithers/packages/smithers/src/sandbox.d.ts index 173013dea..75799a349 100644 --- a/docs/references/smithers/packages/smithers/src/sandbox.d.ts +++ b/docs/references/smithers/packages/smithers/src/sandbox.d.ts @@ -1 +1 @@ -export * from "@smithers-orchestrator/sandbox"; +export * from "@smthrs/sandbox"; diff --git a/docs/references/smithers/packages/smithers/src/sandbox.js b/docs/references/smithers/packages/smithers/src/sandbox.js index 173013dea..75799a349 100644 --- a/docs/references/smithers/packages/smithers/src/sandbox.js +++ b/docs/references/smithers/packages/smithers/src/sandbox.js @@ -1 +1 @@ -export * from "@smithers-orchestrator/sandbox"; +export * from "@smthrs/sandbox"; diff --git a/docs/references/smithers/packages/smithers/src/scorers.js b/docs/references/smithers/packages/smithers/src/scorers.js index 5e9e42a2e..3f90b18fb 100644 --- a/docs/references/smithers/packages/smithers/src/scorers.js +++ b/docs/references/smithers/packages/smithers/src/scorers.js @@ -1 +1 @@ -export * from "@smithers-orchestrator/scorers"; +export * from "@smthrs/scorers"; diff --git a/docs/references/smithers/packages/smithers/src/serve.js b/docs/references/smithers/packages/smithers/src/serve.js index b6e0e3191..53ece1547 100644 --- a/docs/references/smithers/packages/smithers/src/serve.js +++ b/docs/references/smithers/packages/smithers/src/serve.js @@ -1 +1 @@ -export * from "@smithers-orchestrator/server/serve"; +export * from "@smthrs/server/serve"; diff --git a/docs/references/smithers/packages/smithers/src/server.js b/docs/references/smithers/packages/smithers/src/server.js index f7be04741..d245fc6f1 100644 --- a/docs/references/smithers/packages/smithers/src/server.js +++ b/docs/references/smithers/packages/smithers/src/server.js @@ -1 +1 @@ -export * from "@smithers-orchestrator/server"; +export * from "@smthrs/server"; diff --git a/docs/references/smithers/packages/smithers/src/tools.d.ts b/docs/references/smithers/packages/smithers/src/tools.d.ts index 4df69aae9..d9193259d 100644 --- a/docs/references/smithers/packages/smithers/src/tools.d.ts +++ b/docs/references/smithers/packages/smithers/src/tools.d.ts @@ -1,6 +1,6 @@ import type { Tool } from "ai"; -import type { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import type { SmithersEvent } from "@smithers-orchestrator/observability/SmithersEvent"; +import type { SmithersDb } from "@smthrs/db/adapter"; +import type { SmithersEvent } from "@smthrs/observability/SmithersEvent"; import type { z } from "zod"; export type ToolContext = { diff --git a/docs/references/smithers/packages/smithers/src/tools/bash.js b/docs/references/smithers/packages/smithers/src/tools/bash.js index 9baeb7df1..240900e41 100644 --- a/docs/references/smithers/packages/smithers/src/tools/bash.js +++ b/docs/references/smithers/packages/smithers/src/tools/bash.js @@ -1,5 +1,5 @@ import { z } from "zod"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { defineTool } from "./defineTool.js"; import { captureProcess, diff --git a/docs/references/smithers/packages/smithers/src/tools/context.js b/docs/references/smithers/packages/smithers/src/tools/context.js index 04b6ce9e9..9d92caee5 100644 --- a/docs/references/smithers/packages/smithers/src/tools/context.js +++ b/docs/references/smithers/packages/smithers/src/tools/context.js @@ -7,4 +7,4 @@ export { getToolContext, getToolIdempotencyKey, nextToolSeq, -} from "@smithers-orchestrator/tool-context"; +} from "@smthrs/tool-context"; diff --git a/docs/references/smithers/packages/smithers/src/tools/edit.js b/docs/references/smithers/packages/smithers/src/tools/edit.js index 9852c160c..7b9cc3b5b 100644 --- a/docs/references/smithers/packages/smithers/src/tools/edit.js +++ b/docs/references/smithers/packages/smithers/src/tools/edit.js @@ -1,7 +1,7 @@ import { readFile, writeFile } from "node:fs/promises"; import { applyPatch } from "diff"; import { z } from "zod"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { defineTool } from "./defineTool.js"; import { assertReadableFileWithinLimit, diff --git a/docs/references/smithers/packages/smithers/src/tools/grep.js b/docs/references/smithers/packages/smithers/src/tools/grep.js index c1321d411..dbbf5d99a 100644 --- a/docs/references/smithers/packages/smithers/src/tools/grep.js +++ b/docs/references/smithers/packages/smithers/src/tools/grep.js @@ -1,5 +1,5 @@ import { z } from "zod"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { defineTool } from "./defineTool.js"; import { captureProcess, diff --git a/docs/references/smithers/packages/smithers/src/tools/utils.js b/docs/references/smithers/packages/smithers/src/tools/utils.js index 4fa7ec010..161cc8c8d 100644 --- a/docs/references/smithers/packages/smithers/src/tools/utils.js +++ b/docs/references/smithers/packages/smithers/src/tools/utils.js @@ -2,11 +2,11 @@ import { spawn } from "node:child_process"; import { createHash } from "node:crypto"; import { dirname } from "node:path"; import { mkdir, realpath, stat } from "node:fs/promises"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { assertPathWithinRoot, resolveSandboxPath, -} from "@smithers-orchestrator/sandbox/sandboxPath"; +} from "@smthrs/sandbox/sandboxPath"; import { getToolContext } from "./context.js"; export const DEFAULT_MAX_OUTPUT_BYTES = 200_000; diff --git a/docs/references/smithers/packages/smithers/src/tools/write.js b/docs/references/smithers/packages/smithers/src/tools/write.js index c2e63bffa..1c4a26e9b 100644 --- a/docs/references/smithers/packages/smithers/src/tools/write.js +++ b/docs/references/smithers/packages/smithers/src/tools/write.js @@ -1,6 +1,6 @@ import { writeFile } from "node:fs/promises"; import { z } from "zod"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { defineTool } from "./defineTool.js"; import { ensureParentDir, diff --git a/docs/references/smithers/packages/smithers/tests/define-tool-durability.test.js b/docs/references/smithers/packages/smithers/tests/define-tool-durability.test.js index 9dcc031c2..8008ab9ed 100644 --- a/docs/references/smithers/packages/smithers/tests/define-tool-durability.test.js +++ b/docs/references/smithers/packages/smithers/tests/define-tool-durability.test.js @@ -1,6 +1,6 @@ import { describe, expect, test } from "bun:test"; import { z } from "zod"; -import { runWithToolContext } from "@smithers-orchestrator/tool-context"; +import { runWithToolContext } from "@smthrs/tool-context"; import { defineTool } from "../src/tools/defineTool.js"; describe("defineTool durability snapshot (Tier 1 in-process wrap)", () => { diff --git a/docs/references/smithers/packages/smithers/tests/e2e-helpers.js b/docs/references/smithers/packages/smithers/tests/e2e-helpers.js index d8b364483..491addf94 100644 --- a/docs/references/smithers/packages/smithers/tests/e2e-helpers.js +++ b/docs/references/smithers/packages/smithers/tests/e2e-helpers.js @@ -55,7 +55,7 @@ function linkRepoRuntimeDeps(repoDir) { const binDir = join(nodeModulesDir, ".bin"); ensureDir(nodeModulesDir); ensureDir(binDir); - symlinkIfMissing(resolve(REPO_ROOT, "packages/smithers"), join(nodeModulesDir, "smithers-orchestrator")); + symlinkIfMissing(resolve(REPO_ROOT, "packages/smithers"), join(nodeModulesDir, "smthrs")); symlinkIfMissing(resolve(ROOT_NODE_MODULES, "zod"), join(nodeModulesDir, "zod")); symlinkIfMissing(resolve(ROOT_NODE_MODULES, "react"), join(nodeModulesDir, "react")); symlinkIfMissing(resolve(ROOT_NODE_MODULES, "react-dom"), join(nodeModulesDir, "react-dom")); @@ -169,8 +169,8 @@ export function prependPath(dir, env) { */ export function writeTestWorkflow(repo, relativePath = "workflow.tsx") { return repo.write(relativePath, [ - "/** @jsxImportSource smithers-orchestrator */", - 'import { createSmithers, Workflow, Task } from "smithers-orchestrator";', + "/** @jsxImportSource smthrs */", + 'import { createSmithers, Workflow, Task } from "smthrs";', 'import { z } from "zod";', "", "const { smithers, outputs } = createSmithers({", diff --git a/docs/references/smithers/packages/smithers/tests/fixtures/jsx-ai-release-notes.jsx b/docs/references/smithers/packages/smithers/tests/fixtures/jsx-ai-release-notes.jsx index 7fc952d6f..139b18d61 100644 --- a/docs/references/smithers/packages/smithers/tests/fixtures/jsx-ai-release-notes.jsx +++ b/docs/references/smithers/packages/smithers/tests/fixtures/jsx-ai-release-notes.jsx @@ -1,5 +1,5 @@ -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Task, Workflow } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Task, Workflow } from "smthrs"; import { z } from "zod"; import { join } from "node:path"; import { mkdtempSync } from "node:fs"; diff --git a/docs/references/smithers/packages/time-travel/package.json b/docs/references/smithers/packages/time-travel/package.json index 08634e05b..b48b398d0 100644 --- a/docs/references/smithers/packages/time-travel/package.json +++ b/docs/references/smithers/packages/time-travel/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/time-travel", + "name": "@smthrs/time-travel", "version": "0.23.0", "description": "Smithers snapshots, diffs, forks, replay, timelines, and VCS-tagged run history", "type": "module", @@ -52,11 +52,11 @@ "dependencies": { "@effect/platform": "^0.96.0", "@effect/platform-bun": "^0.89.0", - "@smithers-orchestrator/db": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*", - "@smithers-orchestrator/observability": "workspace:*", - "@smithers-orchestrator/scheduler": "workspace:*", - "@smithers-orchestrator/vcs": "workspace:*", + "@smthrs/db": "^0.33.0", + "@smthrs/errors": "^0.33.0", + "@smthrs/observability": "^0.33.0", + "@smthrs/scheduler": "^0.33.0", + "@smthrs/vcs": "^0.33.0", "drizzle-orm": "^0.45.2", "effect": "^3.21.1", "picocolors": "^1.1.1" diff --git a/docs/references/smithers/packages/time-travel/src/JumpToFrameInput.ts b/docs/references/smithers/packages/time-travel/src/JumpToFrameInput.ts index dd4c0f2e7..85a28030a 100644 --- a/docs/references/smithers/packages/time-travel/src/JumpToFrameInput.ts +++ b/docs/references/smithers/packages/time-travel/src/JumpToFrameInput.ts @@ -1,5 +1,5 @@ -import type { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import type { SmithersEvent } from "@smithers-orchestrator/observability/SmithersEvent"; +import type { SmithersDb } from "@smthrs/db/adapter"; +import type { SmithersEvent } from "@smthrs/observability/SmithersEvent"; import type { JumpStepName } from "./JumpStepName"; export type JumpToFrameInput = { diff --git a/docs/references/smithers/packages/time-travel/src/RetryTaskOptions.ts b/docs/references/smithers/packages/time-travel/src/RetryTaskOptions.ts index 61e1246b9..df06320b9 100644 --- a/docs/references/smithers/packages/time-travel/src/RetryTaskOptions.ts +++ b/docs/references/smithers/packages/time-travel/src/RetryTaskOptions.ts @@ -1,4 +1,4 @@ -import type { SmithersEvent } from "@smithers-orchestrator/observability/SmithersEvent"; +import type { SmithersEvent } from "@smthrs/observability/SmithersEvent"; export type RetryTaskOptions = { runId: string; diff --git a/docs/references/smithers/packages/time-travel/src/RevertOptions.ts b/docs/references/smithers/packages/time-travel/src/RevertOptions.ts index 831652e1d..533449cf0 100644 --- a/docs/references/smithers/packages/time-travel/src/RevertOptions.ts +++ b/docs/references/smithers/packages/time-travel/src/RevertOptions.ts @@ -1,4 +1,4 @@ -import type { SmithersEvent } from "@smithers-orchestrator/observability/SmithersEvent"; +import type { SmithersEvent } from "@smthrs/observability/SmithersEvent"; export type RevertOptions = { runId: string; diff --git a/docs/references/smithers/packages/time-travel/src/TimeTravelOptions.ts b/docs/references/smithers/packages/time-travel/src/TimeTravelOptions.ts index 34dcedc1b..2a17274cc 100644 --- a/docs/references/smithers/packages/time-travel/src/TimeTravelOptions.ts +++ b/docs/references/smithers/packages/time-travel/src/TimeTravelOptions.ts @@ -1,4 +1,4 @@ -import type { SmithersEvent } from "@smithers-orchestrator/observability/SmithersEvent"; +import type { SmithersEvent } from "@smthrs/observability/SmithersEvent"; export type TimeTravelOptions = { runId: string; diff --git a/docs/references/smithers/packages/time-travel/src/countRecentRewindAuditRows.js b/docs/references/smithers/packages/time-travel/src/countRecentRewindAuditRows.js index f80ac8a50..16643b54e 100644 --- a/docs/references/smithers/packages/time-travel/src/countRecentRewindAuditRows.js +++ b/docs/references/smithers/packages/time-travel/src/countRecentRewindAuditRows.js @@ -1,6 +1,6 @@ import { resolveRewindAuditClient } from "./resolveRewindAuditClient.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * Count audit rows for one caller and run in a time window. diff --git a/docs/references/smithers/packages/time-travel/src/evaluateRewindRateLimit.js b/docs/references/smithers/packages/time-travel/src/evaluateRewindRateLimit.js index 9512a0fef..ca834a664 100644 --- a/docs/references/smithers/packages/time-travel/src/evaluateRewindRateLimit.js +++ b/docs/references/smithers/packages/time-travel/src/evaluateRewindRateLimit.js @@ -2,7 +2,7 @@ import { countRecentRewindAuditRows } from "./countRecentRewindAuditRows.js"; import { REWIND_RATE_LIMIT_MAX } from "./REWIND_RATE_LIMIT_MAX.js"; import { REWIND_RATE_LIMIT_WINDOW_MS } from "./REWIND_RATE_LIMIT_WINDOW_MS.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * Evaluate caller-scoped rewind quota for one run. diff --git a/docs/references/smithers/packages/time-travel/src/fork/forkRunEffect.js b/docs/references/smithers/packages/time-travel/src/fork/forkRunEffect.js index 39323d20a..61c7f0cd9 100644 --- a/docs/references/smithers/packages/time-travel/src/fork/forkRunEffect.js +++ b/docs/references/smithers/packages/time-travel/src/fork/forkRunEffect.js @@ -1,7 +1,7 @@ import { Effect, Metric } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; +import { nowMs } from "@smthrs/scheduler/nowMs"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { smithersBranches, smithersSnapshots } from "../schema.js"; import { loadSnapshot } from "../snapshot/loadSnapshotEffect.js"; import { parseSnapshot } from "../snapshot/parseSnapshot.js"; @@ -10,7 +10,7 @@ import { runForksCreated } from "../runForksCreated.js"; import { expandResetSet } from "./_helpers.js"; /** @typedef {import("../BranchInfo.ts").BranchInfo} BranchInfo */ /** @typedef {import("../ForkParams.ts").ForkParams} ForkParams */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** @typedef {import("../snapshot/Snapshot.ts").Snapshot} Snapshot */ /** diff --git a/docs/references/smithers/packages/time-travel/src/fork/getBranchInfoEffect.js b/docs/references/smithers/packages/time-travel/src/fork/getBranchInfoEffect.js index 8585bcc25..5ed368627 100644 --- a/docs/references/smithers/packages/time-travel/src/fork/getBranchInfoEffect.js +++ b/docs/references/smithers/packages/time-travel/src/fork/getBranchInfoEffect.js @@ -1,10 +1,10 @@ import { eq } from "drizzle-orm"; import { Effect } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { smithersBranches } from "../schema.js"; /** @typedef {import("../BranchInfo.ts").BranchInfo} BranchInfo */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** * @param {SmithersDb} adapter diff --git a/docs/references/smithers/packages/time-travel/src/fork/index.js b/docs/references/smithers/packages/time-travel/src/fork/index.js index d35f5fe12..b715a221c 100644 --- a/docs/references/smithers/packages/time-travel/src/fork/index.js +++ b/docs/references/smithers/packages/time-travel/src/fork/index.js @@ -4,7 +4,7 @@ import { getBranchInfo as getBranchInfoEffect } from "./getBranchInfoEffect.js"; import { listBranches as listBranchesEffect } from "./listBranchesEffect.js"; export { forkRunEffect, getBranchInfoEffect, listBranchesEffect, }; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** @typedef {import("../BranchInfo.ts").BranchInfo} BranchInfo */ /** @typedef {import("../ForkParams.ts").ForkParams} ForkParams */ /** @typedef {import("../snapshot/Snapshot.ts").Snapshot} Snapshot */ diff --git a/docs/references/smithers/packages/time-travel/src/fork/listBranchesEffect.js b/docs/references/smithers/packages/time-travel/src/fork/listBranchesEffect.js index 05a9db87e..69e7e8587 100644 --- a/docs/references/smithers/packages/time-travel/src/fork/listBranchesEffect.js +++ b/docs/references/smithers/packages/time-travel/src/fork/listBranchesEffect.js @@ -1,10 +1,10 @@ import { eq } from "drizzle-orm"; import { Effect } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { smithersBranches } from "../schema.js"; /** @typedef {import("../BranchInfo.ts").BranchInfo} BranchInfo */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** * @param {SmithersDb} adapter diff --git a/docs/references/smithers/packages/time-travel/src/index.d.ts b/docs/references/smithers/packages/time-travel/src/index.d.ts index 6fd440661..0cb4760cd 100644 --- a/docs/references/smithers/packages/time-travel/src/index.d.ts +++ b/docs/references/smithers/packages/time-travel/src/index.d.ts @@ -1,6 +1,6 @@ -import * as _smithers_db_adapter from '@smithers-orchestrator/db/adapter'; -import { SmithersDb as SmithersDb$b } from '@smithers-orchestrator/db/adapter'; -import { SmithersEvent } from '@smithers-orchestrator/observability/SmithersEvent'; +import * as _smithers_db_adapter from '@smthrs/db/adapter'; +import { SmithersDb as SmithersDb$b } from '@smthrs/db/adapter'; +import { SmithersEvent } from '@smthrs/observability/SmithersEvent'; import * as drizzle_orm_sqlite_core from 'drizzle-orm/sqlite-core'; type RewindAuditResult$4 = "success" | "failed" | "partial" | "in_progress"; @@ -234,7 +234,7 @@ type ForkParams$2 = { forkDescription?: string; }; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** @typedef {import("./ReplayParams.ts").ReplayParams} ReplayParams */ /** * Fork a run from a checkpoint and optionally restore the VCS working copy. @@ -267,7 +267,7 @@ declare function parseSnapshot(snapshot: Snapshot$4): ParsedSnapshot$2; type ParsedSnapshot$2 = ParsedSnapshot$3; type Snapshot$4 = Snapshot$5; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * Capture a snapshot row for a run at a given frame. * @@ -345,7 +345,7 @@ type ParsedSnapshot$1 = ParsedSnapshot$3; type Snapshot$2 = Snapshot$5; type SnapshotDiff$1 = SnapshotDiff$2; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** @typedef {import("../BranchInfo.ts").BranchInfo} BranchInfo */ /** @typedef {import("../ForkParams.ts").ForkParams} ForkParams */ /** @typedef {import("../snapshot/Snapshot.ts").Snapshot} Snapshot */ @@ -382,7 +382,7 @@ type BranchInfo$1 = BranchInfo$2; type ForkParams$1 = ForkParams$2; type Snapshot$1 = Snapshot$5; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * Record the current VCS revision for a run/frame pair. * @@ -452,7 +452,7 @@ type TimelineTree$3 = TimelineTree$4; declare function formatTimelineAsJson(tree: TimelineTree$2): object; type TimelineTree$2 = TimelineTree$4; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** @typedef {import("../RunTimeline.ts").RunTimeline} RunTimeline */ /** @typedef {import("../TimelineTree.ts").TimelineTree} TimelineTree */ /** @@ -1007,7 +1007,7 @@ declare const REWIND_RATE_LIMIT_MAX: 10; declare const REWIND_RATE_LIMIT_WINDOW_MS: number; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * Evaluate caller-scoped rewind quota for one run. * @@ -1037,7 +1037,7 @@ declare function evaluateRewindRateLimit(input: { }>; type SmithersDb$5 = _smithers_db_adapter.SmithersDb; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** @typedef {import("./RewindAuditResult.ts").RewindAuditResult} RewindAuditResult */ /** * Persist one audit row for a jump-to-frame attempt. @@ -1066,7 +1066,7 @@ declare function writeRewindAuditRow(adapter: SmithersDb$4, row: { type SmithersDb$4 = _smithers_db_adapter.SmithersDb; type RewindAuditResult$3 = RewindAuditResult$4; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** @typedef {import("./RewindAuditResult.ts").RewindAuditResult} RewindAuditResult */ /** * Update an existing rewind audit row's result and duration. @@ -1084,7 +1084,7 @@ declare function updateRewindAuditRow(adapter: SmithersDb$3, row: { type SmithersDb$3 = _smithers_db_adapter.SmithersDb; type RewindAuditResult$2 = RewindAuditResult$4; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * Count audit rows for one caller and run in a time window. * Only counts terminal (non-in_progress) rows so that a live attempt @@ -1125,7 +1125,7 @@ type RewindAuditRow = { durationMs: number | null; }; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * On startup, find rewind audit rows left in `in_progress` by a prior crash, * mark them as `partial`, and flag the associated runs as `needs_attention`. diff --git a/docs/references/smithers/packages/time-travel/src/jumpToFrame.js b/docs/references/smithers/packages/time-travel/src/jumpToFrame.js index ae48a3828..ba0a7344a 100644 --- a/docs/references/smithers/packages/time-travel/src/jumpToFrame.js +++ b/docs/references/smithers/packages/time-travel/src/jumpToFrame.js @@ -1,13 +1,13 @@ import { Effect, Metric } from "effect"; import * as BunContext from "@effect/platform-bun/BunContext"; -import { getJjPointer, revertToJjPointer } from "@smithers-orchestrator/vcs/jj"; +import { getJjPointer, revertToJjPointer } from "@smthrs/vcs/jj"; import { rewindTotal, rewindRollbackTotal, rewindDurationMs, rewindFramesDeleted, rewindSandboxesReverted, -} from "@smithers-orchestrator/observability/metrics"; +} from "@smthrs/observability/metrics"; import { JUMP_RUN_ID_PATTERN } from "./JUMP_RUN_ID_PATTERN.js"; import { JUMP_MAX_FRAME_NO } from "./JUMP_MAX_FRAME_NO.js"; import { JumpToFrameError } from "./JumpToFrameError.js"; @@ -24,8 +24,8 @@ export { JumpToFrameError }; export { validateJumpRunId }; export { validateJumpFrameNo }; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/observability/SmithersEvent").SmithersEvent} SmithersEvent */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/observability/SmithersEvent").SmithersEvent} SmithersEvent */ /** @typedef {import("./JumpResult.ts").JumpResult} JumpResult */ /** @typedef {import("./JumpToFrameInput.ts").JumpToFrameInput} JumpToFrameInput */ /** @typedef {import("./JumpStepName.ts").JumpStepName} JumpStepName */ @@ -417,7 +417,7 @@ async function rollbackSandboxPointers(revertedSandboxes, revertToPointerImpl) { return failures; } -/** @typedef {import("@smithers-orchestrator/db").AttemptRow} AttemptRow */ +/** @typedef {import("@smthrs/db").AttemptRow} AttemptRow */ /** * @param {ReadonlyArray<AttemptRow>} attemptsForRun diff --git a/docs/references/smithers/packages/time-travel/src/listRewindAuditRows.js b/docs/references/smithers/packages/time-travel/src/listRewindAuditRows.js index e4d31e445..d357e8d8f 100644 --- a/docs/references/smithers/packages/time-travel/src/listRewindAuditRows.js +++ b/docs/references/smithers/packages/time-travel/src/listRewindAuditRows.js @@ -1,6 +1,6 @@ import { resolveRewindAuditClient } from "./resolveRewindAuditClient.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** @typedef {import("./RewindAuditResult.ts").RewindAuditResult} RewindAuditResult */ /** diff --git a/docs/references/smithers/packages/time-travel/src/recoverInProgressRewindAudits.js b/docs/references/smithers/packages/time-travel/src/recoverInProgressRewindAudits.js index 16c55df21..f926330f5 100644 --- a/docs/references/smithers/packages/time-travel/src/recoverInProgressRewindAudits.js +++ b/docs/references/smithers/packages/time-travel/src/recoverInProgressRewindAudits.js @@ -1,6 +1,6 @@ import { resolveRewindAuditClient } from "./resolveRewindAuditClient.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * On startup, find rewind audit rows left in `in_progress` by a prior crash, diff --git a/docs/references/smithers/packages/time-travel/src/replay.js b/docs/references/smithers/packages/time-travel/src/replay.js index e87560d66..85866f020 100644 --- a/docs/references/smithers/packages/time-travel/src/replay.js +++ b/docs/references/smithers/packages/time-travel/src/replay.js @@ -7,7 +7,7 @@ import * as BunContext from "@effect/platform-bun/BunContext"; import { replayFromCheckpoint as replayFromCheckpointEffect } from "./replayFromCheckpointEffect.js"; export { replayFromCheckpointEffect }; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** @typedef {import("./ReplayParams.ts").ReplayParams} ReplayParams */ /** diff --git a/docs/references/smithers/packages/time-travel/src/replayFromCheckpointEffect.js b/docs/references/smithers/packages/time-travel/src/replayFromCheckpointEffect.js index 74217c6f8..e32db002a 100644 --- a/docs/references/smithers/packages/time-travel/src/replayFromCheckpointEffect.js +++ b/docs/references/smithers/packages/time-travel/src/replayFromCheckpointEffect.js @@ -3,7 +3,7 @@ import { forkRun as forkRunEffect } from "./fork/forkRunEffect.js"; import { rerunAtRevision as rerunAtRevisionEffect } from "./vcs-version/rerunAtRevisionEffect.js"; import { replaysStarted } from "./replaysStarted.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** @typedef {import("./ReplayParams.ts").ReplayParams} ReplayParams */ /** @typedef {import("./ReplayResult.ts").ReplayResult} ReplayResult */ diff --git a/docs/references/smithers/packages/time-travel/src/replaysStarted.js b/docs/references/smithers/packages/time-travel/src/replaysStarted.js index de478134c..a85fa4282 100644 --- a/docs/references/smithers/packages/time-travel/src/replaysStarted.js +++ b/docs/references/smithers/packages/time-travel/src/replaysStarted.js @@ -1 +1 @@ -export { replaysStarted } from "@smithers-orchestrator/observability/metrics"; +export { replaysStarted } from "@smthrs/observability/metrics"; diff --git a/docs/references/smithers/packages/time-travel/src/resolveRewindAuditClient.js b/docs/references/smithers/packages/time-travel/src/resolveRewindAuditClient.js index 181b0d32e..8820457ef 100644 --- a/docs/references/smithers/packages/time-travel/src/resolveRewindAuditClient.js +++ b/docs/references/smithers/packages/time-travel/src/resolveRewindAuditClient.js @@ -1,4 +1,4 @@ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * Minimal Bun SQLite client surface used by the rewind audit helpers. diff --git a/docs/references/smithers/packages/time-travel/src/retry-task.js b/docs/references/smithers/packages/time-travel/src/retry-task.js index 95f006bb9..63be5e6c9 100644 --- a/docs/references/smithers/packages/time-travel/src/retry-task.js +++ b/docs/references/smithers/packages/time-travel/src/retry-task.js @@ -1,8 +1,8 @@ import { Effect } from "effect"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; +import { nowMs } from "@smthrs/scheduler/nowMs"; /** @typedef {import("./RetryTaskOptions.ts").RetryTaskOptions} RetryTaskOptions */ /** @typedef {import("./RetryTaskResult.ts").RetryTaskResult} RetryTaskResult */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * @param {string} nodeId diff --git a/docs/references/smithers/packages/time-travel/src/revert.js b/docs/references/smithers/packages/time-travel/src/revert.js index 6781fd97d..64718efb9 100644 --- a/docs/references/smithers/packages/time-travel/src/revert.js +++ b/docs/references/smithers/packages/time-travel/src/revert.js @@ -1,10 +1,10 @@ import { Effect } from "effect"; -import { revertToJjPointer } from "@smithers-orchestrator/vcs/jj"; +import { revertToJjPointer } from "@smthrs/vcs/jj"; import * as BunContext from "@effect/platform-bun/BunContext"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; +import { nowMs } from "@smthrs/scheduler/nowMs"; /** @typedef {import("./RevertOptions.ts").RevertOptions} RevertOptions */ /** @typedef {import("./RevertResult.ts").RevertResult} RevertResult */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * @param {SmithersDb} adapter diff --git a/docs/references/smithers/packages/time-travel/src/runForksCreated.js b/docs/references/smithers/packages/time-travel/src/runForksCreated.js index 4d0f9e2e8..c247d9720 100644 --- a/docs/references/smithers/packages/time-travel/src/runForksCreated.js +++ b/docs/references/smithers/packages/time-travel/src/runForksCreated.js @@ -1 +1 @@ -export { runForksCreated } from "@smithers-orchestrator/observability/metrics"; +export { runForksCreated } from "@smthrs/observability/metrics"; diff --git a/docs/references/smithers/packages/time-travel/src/snapshot/captureSnapshotEffect.js b/docs/references/smithers/packages/time-travel/src/snapshot/captureSnapshotEffect.js index da06ca374..d025ee404 100644 --- a/docs/references/smithers/packages/time-travel/src/snapshot/captureSnapshotEffect.js +++ b/docs/references/smithers/packages/time-travel/src/snapshot/captureSnapshotEffect.js @@ -1,12 +1,12 @@ import { Effect, Metric } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { createHash } from "node:crypto"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; +import { nowMs } from "@smthrs/scheduler/nowMs"; import { smithersSnapshots } from "../schema.js"; import { snapshotsCaptured } from "../snapshotsCaptured.js"; import { snapshotDuration } from "../snapshotDuration.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** @typedef {import("./Snapshot.ts").Snapshot} Snapshot */ /** @typedef {import("./SnapshotData.ts").SnapshotData} SnapshotData */ diff --git a/docs/references/smithers/packages/time-travel/src/snapshot/index.js b/docs/references/smithers/packages/time-travel/src/snapshot/index.js index 8efa51e07..99f1a965b 100644 --- a/docs/references/smithers/packages/time-travel/src/snapshot/index.js +++ b/docs/references/smithers/packages/time-travel/src/snapshot/index.js @@ -10,7 +10,7 @@ import { listSnapshots as listSnapshotsEffect } from "./listSnapshotsEffect.js"; export { parseSnapshot } from "./parseSnapshot.js"; export { captureSnapshotEffect, listSnapshotsEffect, loadLatestSnapshotEffect, loadSnapshotEffect, }; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * Capture a snapshot row for a run at a given frame. diff --git a/docs/references/smithers/packages/time-travel/src/snapshot/listSnapshotsEffect.js b/docs/references/smithers/packages/time-travel/src/snapshot/listSnapshotsEffect.js index 4537d2e9f..c4500d15f 100644 --- a/docs/references/smithers/packages/time-travel/src/snapshot/listSnapshotsEffect.js +++ b/docs/references/smithers/packages/time-travel/src/snapshot/listSnapshotsEffect.js @@ -1,9 +1,9 @@ import { eq } from "drizzle-orm"; import { Effect } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { smithersSnapshots } from "../schema.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** @typedef {import("./Snapshot.ts").Snapshot} Snapshot */ /** diff --git a/docs/references/smithers/packages/time-travel/src/snapshot/loadSnapshotEffect.js b/docs/references/smithers/packages/time-travel/src/snapshot/loadSnapshotEffect.js index a03ef75b6..629b6c073 100644 --- a/docs/references/smithers/packages/time-travel/src/snapshot/loadSnapshotEffect.js +++ b/docs/references/smithers/packages/time-travel/src/snapshot/loadSnapshotEffect.js @@ -1,9 +1,9 @@ import { and, desc, eq } from "drizzle-orm"; import { Effect } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { smithersSnapshots } from "../schema.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** @typedef {import("./Snapshot.ts").Snapshot} Snapshot */ /** diff --git a/docs/references/smithers/packages/time-travel/src/snapshot/parseSnapshotJson.js b/docs/references/smithers/packages/time-travel/src/snapshot/parseSnapshotJson.js index ee1dec5f6..d762029c5 100644 --- a/docs/references/smithers/packages/time-travel/src/snapshot/parseSnapshotJson.js +++ b/docs/references/smithers/packages/time-travel/src/snapshot/parseSnapshotJson.js @@ -1,4 +1,4 @@ -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { SmithersError } from "@smthrs/errors/SmithersError"; /** * Parse a JSON column persisted in a snapshot row, converting a malformed diff --git a/docs/references/smithers/packages/time-travel/src/snapshotDuration.js b/docs/references/smithers/packages/time-travel/src/snapshotDuration.js index ba76a83a3..b513affd5 100644 --- a/docs/references/smithers/packages/time-travel/src/snapshotDuration.js +++ b/docs/references/smithers/packages/time-travel/src/snapshotDuration.js @@ -1 +1 @@ -export { snapshotDuration } from "@smithers-orchestrator/observability/metrics"; +export { snapshotDuration } from "@smthrs/observability/metrics"; diff --git a/docs/references/smithers/packages/time-travel/src/snapshotsCaptured.js b/docs/references/smithers/packages/time-travel/src/snapshotsCaptured.js index 4c7f6d7bb..64ae9c7e4 100644 --- a/docs/references/smithers/packages/time-travel/src/snapshotsCaptured.js +++ b/docs/references/smithers/packages/time-travel/src/snapshotsCaptured.js @@ -1 +1 @@ -export { snapshotsCaptured } from "@smithers-orchestrator/observability/metrics"; +export { snapshotsCaptured } from "@smthrs/observability/metrics"; diff --git a/docs/references/smithers/packages/time-travel/src/timeline/buildTimelineEffect.js b/docs/references/smithers/packages/time-travel/src/timeline/buildTimelineEffect.js index cf58e10b8..dc4b45da7 100644 --- a/docs/references/smithers/packages/time-travel/src/timeline/buildTimelineEffect.js +++ b/docs/references/smithers/packages/time-travel/src/timeline/buildTimelineEffect.js @@ -3,8 +3,8 @@ import { listSnapshots } from "../snapshot/listSnapshotsEffect.js"; import { listBranches } from "../fork/listBranchesEffect.js"; import { getBranchInfo } from "../fork/getBranchInfoEffect.js"; /** @typedef {import("../RunTimeline.ts").RunTimeline} RunTimeline */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** * @param {SmithersDb} adapter diff --git a/docs/references/smithers/packages/time-travel/src/timeline/buildTimelineTreeEffect.js b/docs/references/smithers/packages/time-travel/src/timeline/buildTimelineTreeEffect.js index 7d648a07c..0f0efe71d 100644 --- a/docs/references/smithers/packages/time-travel/src/timeline/buildTimelineTreeEffect.js +++ b/docs/references/smithers/packages/time-travel/src/timeline/buildTimelineTreeEffect.js @@ -1,7 +1,7 @@ import { Effect } from "effect"; import { buildTimeline } from "./buildTimelineEffect.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** @typedef {import("../TimelineTree.ts").TimelineTree} TimelineTree */ /** diff --git a/docs/references/smithers/packages/time-travel/src/timeline/index.js b/docs/references/smithers/packages/time-travel/src/timeline/index.js index ea03482f9..11af6848c 100644 --- a/docs/references/smithers/packages/time-travel/src/timeline/index.js +++ b/docs/references/smithers/packages/time-travel/src/timeline/index.js @@ -5,7 +5,7 @@ export { formatTimelineForTui } from "./formatTimelineForTui.js"; export { formatTimelineAsJson } from "./formatTimelineAsJson.js"; export { buildTimelineEffect, buildTimelineTreeEffect, }; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** @typedef {import("../RunTimeline.ts").RunTimeline} RunTimeline */ /** @typedef {import("../TimelineTree.ts").TimelineTree} TimelineTree */ diff --git a/docs/references/smithers/packages/time-travel/src/timetravel.js b/docs/references/smithers/packages/time-travel/src/timetravel.js index a4acc1067..bbf3d1a40 100644 --- a/docs/references/smithers/packages/time-travel/src/timetravel.js +++ b/docs/references/smithers/packages/time-travel/src/timetravel.js @@ -1,8 +1,8 @@ import { Effect } from "effect"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; -import { revertToJjPointer } from "@smithers-orchestrator/vcs/jj"; +import { nowMs } from "@smthrs/scheduler/nowMs"; +import { revertToJjPointer } from "@smthrs/vcs/jj"; import * as BunContext from "@effect/platform-bun/BunContext"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** @typedef {import("./TimeTravelOptions.ts").TimeTravelOptions} TimeTravelOptions */ /** @typedef {import("./TimeTravelResult.ts").TimeTravelResult} TimeTravelResult */ diff --git a/docs/references/smithers/packages/time-travel/src/types.ts b/docs/references/smithers/packages/time-travel/src/types.ts index e995e8d7f..db67f58eb 100644 --- a/docs/references/smithers/packages/time-travel/src/types.ts +++ b/docs/references/smithers/packages/time-travel/src/types.ts @@ -1,4 +1,4 @@ -// Barrel re-export for backward compatibility with @smithers-orchestrator/time-travel/types imports +// Barrel re-export for backward compatibility with @smthrs/time-travel/types imports export type { Snapshot } from "./snapshot/Snapshot"; export type { ParsedSnapshot } from "./ParsedSnapshot"; export type { NodeSnapshot } from "./NodeSnapshot"; diff --git a/docs/references/smithers/packages/time-travel/src/updateRewindAuditRow.js b/docs/references/smithers/packages/time-travel/src/updateRewindAuditRow.js index 8e7ba85a5..4d95ffbec 100644 --- a/docs/references/smithers/packages/time-travel/src/updateRewindAuditRow.js +++ b/docs/references/smithers/packages/time-travel/src/updateRewindAuditRow.js @@ -1,6 +1,6 @@ import { resolveRewindAuditClient } from "./resolveRewindAuditClient.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** @typedef {import("./RewindAuditResult.ts").RewindAuditResult} RewindAuditResult */ /** diff --git a/docs/references/smithers/packages/time-travel/src/vcs-version/index.js b/docs/references/smithers/packages/time-travel/src/vcs-version/index.js index c6db4e252..9be217401 100644 --- a/docs/references/smithers/packages/time-travel/src/vcs-version/index.js +++ b/docs/references/smithers/packages/time-travel/src/vcs-version/index.js @@ -10,7 +10,7 @@ import { resolveWorkflowAtRevision as resolveWorkflowAtRevisionEffect } from "./ import { tagSnapshotVcs as tagSnapshotVcsEffect } from "./tagSnapshotVcsEffect.js"; export { loadVcsTagEffect, rerunAtRevisionEffect, resolveWorkflowAtRevisionEffect, tagSnapshotVcsEffect, }; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * Record the current VCS revision for a run/frame pair. diff --git a/docs/references/smithers/packages/time-travel/src/vcs-version/loadVcsTagEffect.js b/docs/references/smithers/packages/time-travel/src/vcs-version/loadVcsTagEffect.js index fa32e0be7..4b02b3d8e 100644 --- a/docs/references/smithers/packages/time-travel/src/vcs-version/loadVcsTagEffect.js +++ b/docs/references/smithers/packages/time-travel/src/vcs-version/loadVcsTagEffect.js @@ -1,9 +1,9 @@ import { eq, and } from "drizzle-orm"; import { Effect } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; import { smithersVcsTags } from "../schema.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** @typedef {import("./VcsTag.ts").VcsTag} VcsTag */ /** diff --git a/docs/references/smithers/packages/time-travel/src/vcs-version/rerunAtRevisionEffect.js b/docs/references/smithers/packages/time-travel/src/vcs-version/rerunAtRevisionEffect.js index 6cf66b517..8bd071f94 100644 --- a/docs/references/smithers/packages/time-travel/src/vcs-version/rerunAtRevisionEffect.js +++ b/docs/references/smithers/packages/time-travel/src/vcs-version/rerunAtRevisionEffect.js @@ -1,7 +1,7 @@ import { Effect } from "effect"; -import { revertToJjPointer } from "@smithers-orchestrator/vcs/jj"; +import { revertToJjPointer } from "@smthrs/vcs/jj"; import { loadVcsTag } from "./loadVcsTagEffect.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * @param {SmithersDb} adapter diff --git a/docs/references/smithers/packages/time-travel/src/vcs-version/resolveWorkflowAtRevisionEffect.js b/docs/references/smithers/packages/time-travel/src/vcs-version/resolveWorkflowAtRevisionEffect.js index 0dae5a21d..52d76b197 100644 --- a/docs/references/smithers/packages/time-travel/src/vcs-version/resolveWorkflowAtRevisionEffect.js +++ b/docs/references/smithers/packages/time-travel/src/vcs-version/resolveWorkflowAtRevisionEffect.js @@ -1,9 +1,9 @@ import { Effect } from "effect"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; -import { workspaceAdd } from "@smithers-orchestrator/vcs/jj"; +import { SmithersError } from "@smthrs/errors/SmithersError"; +import { workspaceAdd } from "@smthrs/vcs/jj"; import { loadVcsTag } from "./loadVcsTagEffect.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** * Create a jj workspace at the revision recorded for a specific snapshot. diff --git a/docs/references/smithers/packages/time-travel/src/vcs-version/tagSnapshotVcsEffect.js b/docs/references/smithers/packages/time-travel/src/vcs-version/tagSnapshotVcsEffect.js index cf4e1b5a0..02f11c4e9 100644 --- a/docs/references/smithers/packages/time-travel/src/vcs-version/tagSnapshotVcsEffect.js +++ b/docs/references/smithers/packages/time-travel/src/vcs-version/tagSnapshotVcsEffect.js @@ -1,11 +1,11 @@ import { Effect } from "effect"; -import { toSmithersError } from "@smithers-orchestrator/errors/toSmithersError"; -import { nowMs } from "@smithers-orchestrator/scheduler/nowMs"; +import { toSmithersError } from "@smthrs/errors/toSmithersError"; +import { nowMs } from "@smthrs/scheduler/nowMs"; import { smithersVcsTags } from "../schema.js"; -import { getJjPointer, runJj, } from "@smithers-orchestrator/vcs/jj"; +import { getJjPointer, runJj, } from "@smthrs/vcs/jj"; /** @typedef {import("@effect/platform/CommandExecutor").CommandExecutor} CommandExecutor */ -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ -/** @typedef {import("@smithers-orchestrator/errors/SmithersError").SmithersError} SmithersError */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/errors/SmithersError").SmithersError} SmithersError */ /** @typedef {import("./VcsTag.ts").VcsTag} VcsTag */ /** diff --git a/docs/references/smithers/packages/time-travel/src/writeRewindAuditRow.js b/docs/references/smithers/packages/time-travel/src/writeRewindAuditRow.js index abf19ddf7..815544705 100644 --- a/docs/references/smithers/packages/time-travel/src/writeRewindAuditRow.js +++ b/docs/references/smithers/packages/time-travel/src/writeRewindAuditRow.js @@ -1,6 +1,6 @@ import { resolveRewindAuditClient } from "./resolveRewindAuditClient.js"; -/** @typedef {import("@smithers-orchestrator/db/adapter").SmithersDb} SmithersDb */ +/** @typedef {import("@smthrs/db/adapter").SmithersDb} SmithersDb */ /** @typedef {import("./RewindAuditResult.ts").RewindAuditResult} RewindAuditResult */ /** diff --git a/docs/references/smithers/packages/time-travel/tests/diff.test.js b/docs/references/smithers/packages/time-travel/tests/diff.test.js index c47386fdb..31d984b3d 100644 --- a/docs/references/smithers/packages/time-travel/tests/diff.test.js +++ b/docs/references/smithers/packages/time-travel/tests/diff.test.js @@ -2,8 +2,8 @@ import { describe, expect, test } from "bun:test"; import { diffSnapshots, diffRawSnapshots, formatDiffForTui, formatDiffAsJson, } from "../src/diff.js"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { captureSnapshot } from "../src/snapshot/index.js"; /** * @param {Partial<ParsedSnapshot>} [overrides] diff --git a/docs/references/smithers/packages/time-travel/tests/e2e.test.js b/docs/references/smithers/packages/time-travel/tests/e2e.test.js index 1e82bdb0d..190c2d365 100644 --- a/docs/references/smithers/packages/time-travel/tests/e2e.test.js +++ b/docs/references/smithers/packages/time-travel/tests/e2e.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { captureSnapshot, loadSnapshot, parseSnapshot, listSnapshots } from "../src/snapshot/index.js"; import { forkRun, getBranchInfo } from "../src/fork/index.js"; import { diffRawSnapshots, formatDiffForTui, formatDiffAsJson } from "../src/diff.js"; diff --git a/docs/references/smithers/packages/time-travel/tests/fork-recovery.test.js b/docs/references/smithers/packages/time-travel/tests/fork-recovery.test.js index 58e8adae8..3120caad7 100644 --- a/docs/references/smithers/packages/time-travel/tests/fork-recovery.test.js +++ b/docs/references/smithers/packages/time-travel/tests/fork-recovery.test.js @@ -11,8 +11,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { captureSnapshot } from "../src/snapshot/index.js"; import { forkRun, getBranchInfo, listBranches } from "../src/fork/index.js"; diff --git a/docs/references/smithers/packages/time-travel/tests/fork.test.js b/docs/references/smithers/packages/time-travel/tests/fork.test.js index d41ea99f8..a214806aa 100644 --- a/docs/references/smithers/packages/time-travel/tests/fork.test.js +++ b/docs/references/smithers/packages/time-travel/tests/fork.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { captureSnapshot } from "../src/snapshot/index.js"; import { forkRun, listBranches, getBranchInfo } from "../src/fork/index.js"; import { parseSnapshot, loadSnapshot } from "../src/snapshot/index.js"; diff --git a/docs/references/smithers/packages/time-travel/tests/jumpToFrame.integration.test.ts b/docs/references/smithers/packages/time-travel/tests/jumpToFrame.integration.test.ts index 76f6ea57f..ade8fab1b 100644 --- a/docs/references/smithers/packages/time-travel/tests/jumpToFrame.integration.test.ts +++ b/docs/references/smithers/packages/time-travel/tests/jumpToFrame.integration.test.ts @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import React from "react"; import { Effect } from "effect"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { Task, Workflow, runWorkflow } from "smthrs"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { jumpToFrame } from "../src/jumpToFrame.js"; diff --git a/docs/references/smithers/packages/time-travel/tests/jumpToFrame.test.ts b/docs/references/smithers/packages/time-travel/tests/jumpToFrame.test.ts index 4ff991cfc..934a49a86 100644 --- a/docs/references/smithers/packages/time-travel/tests/jumpToFrame.test.ts +++ b/docs/references/smithers/packages/time-travel/tests/jumpToFrame.test.ts @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { JumpToFrameError, jumpToFrame, diff --git a/docs/references/smithers/packages/time-travel/tests/malformed-json.test.js b/docs/references/smithers/packages/time-travel/tests/malformed-json.test.js index 4231ee053..0dc8bb9e0 100644 --- a/docs/references/smithers/packages/time-travel/tests/malformed-json.test.js +++ b/docs/references/smithers/packages/time-travel/tests/malformed-json.test.js @@ -1,9 +1,9 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { SmithersError } from "@smithers-orchestrator/errors/SmithersError"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { SmithersError } from "@smthrs/errors/SmithersError"; import { Cause, Effect, Exit } from "effect"; import { parseSnapshot } from "../src/snapshot/index.js"; import { forkRunEffect } from "../src/fork/index.js"; diff --git a/docs/references/smithers/packages/time-travel/tests/recoverInProgressRewindAudits.test.ts b/docs/references/smithers/packages/time-travel/tests/recoverInProgressRewindAudits.test.ts index e3c236b1f..364bf59af 100644 --- a/docs/references/smithers/packages/time-travel/tests/recoverInProgressRewindAudits.test.ts +++ b/docs/references/smithers/packages/time-travel/tests/recoverInProgressRewindAudits.test.ts @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { writeRewindAuditRow } from "../src/writeRewindAuditRow.js"; import { listRewindAuditRows } from "../src/listRewindAuditRows.js"; import { recoverInProgressRewindAudits } from "../src/recoverInProgressRewindAudits.js"; diff --git a/docs/references/smithers/packages/time-travel/tests/replay-edges.test.js b/docs/references/smithers/packages/time-travel/tests/replay-edges.test.js index 49b6b7002..ac2390cf1 100644 --- a/docs/references/smithers/packages/time-travel/tests/replay-edges.test.js +++ b/docs/references/smithers/packages/time-travel/tests/replay-edges.test.js @@ -9,8 +9,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { JumpToFrameError, jumpToFrame } from "../src/jumpToFrame.js"; import { listRewindAuditRows } from "../src/rewindAudit.js"; diff --git a/docs/references/smithers/packages/time-travel/tests/retry-task.e2e.test.jsx b/docs/references/smithers/packages/time-travel/tests/retry-task.e2e.test.jsx index 47a37ac38..123b9a12b 100644 --- a/docs/references/smithers/packages/time-travel/tests/retry-task.e2e.test.jsx +++ b/docs/references/smithers/packages/time-travel/tests/retry-task.e2e.test.jsx @@ -1,8 +1,8 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { SmithersDb } from "@smthrs/db/adapter"; import { retryTask } from "../src/retry-task.js"; -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/time-travel/tests/revert.test.js b/docs/references/smithers/packages/time-travel/tests/revert.test.js index f9ed1f4de..faf936c71 100644 --- a/docs/references/smithers/packages/time-travel/tests/revert.test.js +++ b/docs/references/smithers/packages/time-travel/tests/revert.test.js @@ -1,7 +1,7 @@ import { describe, expect, test } from "bun:test"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { revertToJjPointer } from "@smithers-orchestrator/vcs/jj"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { revertToJjPointer } from "@smthrs/vcs/jj"; import * as BunContext from "@effect/platform-bun/BunContext"; import { Effect } from "effect"; import { revertToAttempt } from "../src/revert.js"; diff --git a/docs/references/smithers/packages/time-travel/tests/rewindRollback.test.ts b/docs/references/smithers/packages/time-travel/tests/rewindRollback.test.ts index 9b48d1258..4c74773c4 100644 --- a/docs/references/smithers/packages/time-travel/tests/rewindRollback.test.ts +++ b/docs/references/smithers/packages/time-travel/tests/rewindRollback.test.ts @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { jumpToFrame } from "../src/jumpToFrame.js"; import { listRewindAuditRows } from "../src/rewindAudit.js"; import { resetRewindLocksForTests } from "../src/resetRewindLocksForTests.js"; diff --git a/docs/references/smithers/packages/time-travel/tests/snapshot.test.js b/docs/references/smithers/packages/time-travel/tests/snapshot.test.js index 37f439b67..58021a4d9 100644 --- a/docs/references/smithers/packages/time-travel/tests/snapshot.test.js +++ b/docs/references/smithers/packages/time-travel/tests/snapshot.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { captureSnapshot, loadSnapshot, loadLatestSnapshot, listSnapshots, parseSnapshot, } from "../src/snapshot/index.js"; function createTestDb() { const sqlite = new Database(":memory:"); diff --git a/docs/references/smithers/packages/time-travel/tests/time-travel-replay.test.js b/docs/references/smithers/packages/time-travel/tests/time-travel-replay.test.js index ee7437295..9612c4f90 100644 --- a/docs/references/smithers/packages/time-travel/tests/time-travel-replay.test.js +++ b/docs/references/smithers/packages/time-travel/tests/time-travel-replay.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { captureSnapshot } from "../src/snapshot/index.js"; import { replayFromCheckpoint, } from "../src/replay.js"; import { loadSnapshot, parseSnapshot } from "../src/snapshot/index.js"; diff --git a/docs/references/smithers/packages/time-travel/tests/timeline.test.js b/docs/references/smithers/packages/time-travel/tests/timeline.test.js index 47213be29..947c4849c 100644 --- a/docs/references/smithers/packages/time-travel/tests/timeline.test.js +++ b/docs/references/smithers/packages/time-travel/tests/timeline.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { captureSnapshot } from "../src/snapshot/index.js"; import { forkRun } from "../src/fork/index.js"; import { buildTimeline, buildTimelineTree, formatTimelineForTui, formatTimelineAsJson, } from "../src/timeline/index.js"; diff --git a/docs/references/smithers/packages/time-travel/tests/timetravel.e2e.test.jsx b/docs/references/smithers/packages/time-travel/tests/timetravel.e2e.test.jsx index 0a821cb46..812d8e636 100644 --- a/docs/references/smithers/packages/time-travel/tests/timetravel.e2e.test.jsx +++ b/docs/references/smithers/packages/time-travel/tests/timetravel.e2e.test.jsx @@ -1,12 +1,12 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ import { describe, expect, test } from "bun:test"; import { execFileSync } from "node:child_process"; import { mkdtempSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { Task, Workflow, runWorkflow } from "smithers-orchestrator"; +import { SmithersDb } from "@smthrs/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { Task, Workflow, runWorkflow } from "smthrs"; import { createTestSmithers } from "../../smithers/tests/helpers.js"; import { outputSchemas } from "../../smithers/tests/schema.js"; import { Effect } from "effect"; diff --git a/docs/references/smithers/packages/time-travel/tests/vcs-version.test.js b/docs/references/smithers/packages/time-travel/tests/vcs-version.test.js index 7db3cd273..31386b7a8 100644 --- a/docs/references/smithers/packages/time-travel/tests/vcs-version.test.js +++ b/docs/references/smithers/packages/time-travel/tests/vcs-version.test.js @@ -1,8 +1,8 @@ import { describe, expect, test } from "bun:test"; import { Database } from "bun:sqlite"; import { drizzle } from "drizzle-orm/bun-sqlite"; -import { ensureSmithersTables } from "@smithers-orchestrator/db/ensure"; -import { SmithersDb } from "@smithers-orchestrator/db/adapter"; +import { ensureSmithersTables } from "@smthrs/db/ensure"; +import { SmithersDb } from "@smthrs/db/adapter"; import { loadVcsTag } from "../src/vcs-version/index.js"; function createTestDb() { const sqlite = new Database(":memory:"); diff --git a/docs/references/smithers/packages/tool-context/package.json b/docs/references/smithers/packages/tool-context/package.json index 5018f9c20..b4d921249 100644 --- a/docs/references/smithers/packages/tool-context/package.json +++ b/docs/references/smithers/packages/tool-context/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/tool-context", + "name": "@smthrs/tool-context", "version": "0.23.0", "description": "AsyncLocalStorage tool-execution context for Smithers (run/node/idempotency), extracted so both engine and smithers can depend on it without a cycle", "type": "module", diff --git a/docs/references/smithers/packages/usage/README.md b/docs/references/smithers/packages/usage/README.md index 5d2e2da29..12d7caee3 100644 --- a/docs/references/smithers/packages/usage/README.md +++ b/docs/references/smithers/packages/usage/README.md @@ -1,4 +1,4 @@ -# @smithers-orchestrator/usage +# @smthrs/usage Report how much rate limit or subscription quota each registered Smithers account has consumed. Powers `smithers usage`. @@ -35,7 +35,7 @@ report with a readable reason, never an exception. ## Design - `getAccountUsage(account)` is the dispatcher. It switches on `account.provider`, - mirroring `accountToProviderEnv` in `@smithers-orchestrator/accounts`. + mirroring `accountToProviderEnv` in `@smthrs/accounts`. - `getUsageForAccounts(accounts, opts)` fans out in parallel through an on-disk cache (`usage-cache.json`). Cached reports come back with `stale: true`. The cache enforces a hard 180s floor for `claude-code` because its usage endpoint diff --git a/docs/references/smithers/packages/usage/package.json b/docs/references/smithers/packages/usage/package.json index 207922108..94c03c402 100644 --- a/docs/references/smithers/packages/usage/package.json +++ b/docs/references/smithers/packages/usage/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/usage", + "name": "@smthrs/usage", "version": "0.23.0", "description": "Report how much rate limit or subscription quota each registered Smithers account has consumed, across Claude, Codex, OpenAI, Anthropic, and Google providers.", "type": "module", @@ -25,8 +25,8 @@ "build": "tsup --dts-only" }, "dependencies": { - "@smithers-orchestrator/accounts": "workspace:*", - "@smithers-orchestrator/errors": "workspace:*" + "@smthrs/accounts": "^0.33.0", + "@smthrs/errors": "^0.33.0" }, "devDependencies": { "@types/bun": "latest", diff --git a/docs/references/smithers/packages/usage/src/UsageReport.ts b/docs/references/smithers/packages/usage/src/UsageReport.ts index d7e4463aa..ebf0f751a 100644 --- a/docs/references/smithers/packages/usage/src/UsageReport.ts +++ b/docs/references/smithers/packages/usage/src/UsageReport.ts @@ -1,4 +1,4 @@ -import type { AccountProvider } from "@smithers-orchestrator/accounts"; +import type { AccountProvider } from "@smthrs/accounts"; import type { UsageSource } from "./UsageSource"; import type { UsageWindow } from "./UsageWindow"; diff --git a/docs/references/smithers/packages/usage/src/buildUsageReport.js b/docs/references/smithers/packages/usage/src/buildUsageReport.js index c4a1e1a40..cfb27c4c0 100644 --- a/docs/references/smithers/packages/usage/src/buildUsageReport.js +++ b/docs/references/smithers/packages/usage/src/buildUsageReport.js @@ -1,6 +1,6 @@ -import { API_KEY_PROVIDERS } from "@smithers-orchestrator/accounts"; +import { API_KEY_PROVIDERS } from "@smthrs/accounts"; -/** @typedef {import("@smithers-orchestrator/accounts").Account} Account */ +/** @typedef {import("@smthrs/accounts").Account} Account */ /** @typedef {import("./UsageReport.ts").UsageReport} UsageReport */ /** @typedef {import("./UsageWindow.ts").UsageWindow} UsageWindow */ diff --git a/docs/references/smithers/packages/usage/src/getAccountUsage.js b/docs/references/smithers/packages/usage/src/getAccountUsage.js index 7ddf1227e..9d951c5ea 100644 --- a/docs/references/smithers/packages/usage/src/getAccountUsage.js +++ b/docs/references/smithers/packages/usage/src/getAccountUsage.js @@ -5,7 +5,7 @@ import { codexWhamUsage } from "./codexWhamUsage.js"; import { googleUsage } from "./googleUsage.js"; import { openaiHeaderUsage } from "./openaiHeaderUsage.js"; -/** @typedef {import("@smithers-orchestrator/accounts").Account} Account */ +/** @typedef {import("@smthrs/accounts").Account} Account */ /** @typedef {import("./UsageReport.ts").UsageReport} UsageReport */ /** diff --git a/docs/references/smithers/packages/usage/src/getUsageForAccounts.js b/docs/references/smithers/packages/usage/src/getUsageForAccounts.js index 4e0bc5f27..85240c74f 100644 --- a/docs/references/smithers/packages/usage/src/getUsageForAccounts.js +++ b/docs/references/smithers/packages/usage/src/getUsageForAccounts.js @@ -1,7 +1,7 @@ import { getAccountUsage } from "./getAccountUsage.js"; import { readUsageCache, writeUsageCache } from "./usageCache.js"; -/** @typedef {import("@smithers-orchestrator/accounts").Account} Account */ +/** @typedef {import("@smthrs/accounts").Account} Account */ /** @typedef {import("./UsageReport.ts").UsageReport} UsageReport */ /** diff --git a/docs/references/smithers/packages/usage/src/index.d.ts b/docs/references/smithers/packages/usage/src/index.d.ts index 4772e0b9c..dc8aabc91 100644 --- a/docs/references/smithers/packages/usage/src/index.d.ts +++ b/docs/references/smithers/packages/usage/src/index.d.ts @@ -1,5 +1,5 @@ -import * as _smithers_orchestrator_accounts from '@smithers-orchestrator/accounts'; -import { AccountProvider } from '@smithers-orchestrator/accounts'; +import * as _smithers_orchestrator_accounts from '@smthrs/accounts'; +import { AccountProvider } from '@smthrs/accounts'; /** * Where a usage report's numbers came from. @@ -74,7 +74,7 @@ type UsageReport$5 = { error?: string; }; -/** @typedef {import("@smithers-orchestrator/accounts").Account} Account */ +/** @typedef {import("@smthrs/accounts").Account} Account */ /** @typedef {import("./UsageReport.ts").UsageReport} UsageReport */ /** * Routes an account to its usage adapter and returns a normalized report. This @@ -108,7 +108,7 @@ declare function getUsageForAccounts(accounts: Account$1[], options?: { type Account$1 = _smithers_orchestrator_accounts.Account; type UsageReport$3 = UsageReport$5; -/** @typedef {import("@smithers-orchestrator/accounts").Account} Account */ +/** @typedef {import("@smthrs/accounts").Account} Account */ /** @typedef {import("./UsageReport.ts").UsageReport} UsageReport */ /** @typedef {import("./UsageWindow.ts").UsageWindow} UsageWindow */ /** diff --git a/docs/references/smithers/packages/usage/src/usageCache.js b/docs/references/smithers/packages/usage/src/usageCache.js index 3c7d36811..b85a5fd0b 100644 --- a/docs/references/smithers/packages/usage/src/usageCache.js +++ b/docs/references/smithers/packages/usage/src/usageCache.js @@ -1,6 +1,6 @@ import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs"; import { join } from "node:path"; -import { accountsRoot } from "@smithers-orchestrator/accounts"; +import { accountsRoot } from "@smthrs/accounts"; /** @typedef {import("./UsageReport.ts").UsageReport} UsageReport */ /** @typedef {{ version: 1; entries: Record<string, { report: UsageReport }> }} UsageCacheFile */ diff --git a/docs/references/smithers/packages/vcs/package.json b/docs/references/smithers/packages/vcs/package.json index b1cda21dc..5bb5d7454 100644 --- a/docs/references/smithers/packages/vcs/package.json +++ b/docs/references/smithers/packages/vcs/package.json @@ -1,5 +1,5 @@ { - "name": "@smithers-orchestrator/vcs", + "name": "@smthrs/vcs", "version": "0.23.0", "description": "VCS discovery and jj workspace operations for Smithers", "type": "module", @@ -26,7 +26,7 @@ }, "dependencies": { "@effect/platform": "^0.96.0", - "@smithers-orchestrator/observability": "workspace:*", + "@smthrs/observability": "^0.33.0", "effect": "^3.21.1" }, "devDependencies": { @@ -35,10 +35,10 @@ "typescript": "~5.9.3" }, "optionalDependencies": { - "@smithers-orchestrator/jj-darwin-arm64": "workspace:*", - "@smithers-orchestrator/jj-darwin-x64": "workspace:*", - "@smithers-orchestrator/jj-linux-arm64": "workspace:*", - "@smithers-orchestrator/jj-linux-x64": "workspace:*", - "@smithers-orchestrator/jj-win32-x64": "workspace:*" + "@smthrs/jj-darwin-arm64": "^0.33.0", + "@smthrs/jj-darwin-x64": "^0.33.0", + "@smthrs/jj-linux-arm64": "^0.33.0", + "@smthrs/jj-linux-x64": "^0.33.0", + "@smthrs/jj-win32-x64": "^0.33.0" } } diff --git a/docs/references/smithers/packages/vcs/src/ResolvedBinary.ts b/docs/references/smithers/packages/vcs/src/ResolvedBinary.ts index 03ca9303e..214db7da3 100644 --- a/docs/references/smithers/packages/vcs/src/ResolvedBinary.ts +++ b/docs/references/smithers/packages/vcs/src/ResolvedBinary.ts @@ -2,7 +2,7 @@ * A resolved VCS executable plus where Smithers found it. * * - `env`: an explicit override (e.g. `SMITHERS_JJ_PATH`) - * - `bundled`: a binary shipped inside a `@smithers-orchestrator/jj-<platform>` package + * - `bundled`: a binary shipped inside a `@smthrs/jj-<platform>` package * - `path`: the bare command name, left for the OS to resolve against `PATH` */ export type ResolvedBinary = { diff --git a/docs/references/smithers/packages/vcs/src/index.d.ts b/docs/references/smithers/packages/vcs/src/index.d.ts index eac9ab2d7..125fef4bd 100644 --- a/docs/references/smithers/packages/vcs/src/index.d.ts +++ b/docs/references/smithers/packages/vcs/src/index.d.ts @@ -120,7 +120,7 @@ type WorkspaceResult = WorkspaceResult$1; * A resolved VCS executable plus where Smithers found it. * * - `env`: an explicit override (e.g. `SMITHERS_JJ_PATH`) - * - `bundled`: a binary shipped inside a `@smithers-orchestrator/jj-<platform>` package + * - `bundled`: a binary shipped inside a `@smthrs/jj-<platform>` package * - `path`: the bare command name, left for the OS to resolve against `PATH` */ type ResolvedBinary$3 = { @@ -149,7 +149,7 @@ type ResolvedBinary$2 = ResolvedBinary$3; * * Order of preference: * 1. `SMITHERS_JJ_PATH` — an explicit override pointing at a real file. - * 2. A binary bundled via `@smithers-orchestrator/jj-<platform>`. + * 2. A binary bundled via `@smthrs/jj-<platform>`. * 3. The bare `"jj"`, left for the OS to resolve against `PATH`. * * Always returns a spawnable command. When jj is genuinely absent the bare diff --git a/docs/references/smithers/packages/vcs/src/jj.js b/docs/references/smithers/packages/vcs/src/jj.js index 331c83c55..6f1b6215f 100644 --- a/docs/references/smithers/packages/vcs/src/jj.js +++ b/docs/references/smithers/packages/vcs/src/jj.js @@ -10,7 +10,7 @@ import * as Command from "@effect/platform/Command"; import { Duration, Effect, Fiber, Metric, Stream } from "effect"; -import { vcsDuration } from "@smithers-orchestrator/observability/metrics"; +import { vcsDuration } from "@smthrs/observability/metrics"; import { resolveJjBinary } from "./resolveJjBinary.js"; const JJ_POINTER_TIMEOUT_MS = 1_500; diff --git a/docs/references/smithers/packages/vcs/src/resolveJjBinary.js b/docs/references/smithers/packages/vcs/src/resolveJjBinary.js index 0c17c7799..6ffac3461 100644 --- a/docs/references/smithers/packages/vcs/src/resolveJjBinary.js +++ b/docs/references/smithers/packages/vcs/src/resolveJjBinary.js @@ -13,16 +13,16 @@ const require = createRequire(import.meta.url); * `bin/jj` (`bin/jj.exe` on Windows). * * Kept in sync with the platform packages under `packages/jj-binaries/` and the - * `optionalDependencies` of `@smithers-orchestrator/vcs`. + * `optionalDependencies` of `@smthrs/vcs`. * * @type {Record<string, string>} */ const BUNDLED_PACKAGES = { - "darwin-arm64": "@smithers-orchestrator/jj-darwin-arm64", - "darwin-x64": "@smithers-orchestrator/jj-darwin-x64", - "linux-arm64": "@smithers-orchestrator/jj-linux-arm64", - "linux-x64": "@smithers-orchestrator/jj-linux-x64", - "win32-x64": "@smithers-orchestrator/jj-win32-x64", + "darwin-arm64": "@smthrs/jj-darwin-arm64", + "darwin-x64": "@smthrs/jj-darwin-x64", + "linux-arm64": "@smthrs/jj-linux-arm64", + "linux-x64": "@smthrs/jj-linux-x64", + "win32-x64": "@smthrs/jj-win32-x64", }; /** @@ -51,7 +51,7 @@ function bundledJjPath() { * * Order of preference: * 1. `SMITHERS_JJ_PATH` — an explicit override pointing at a real file. - * 2. A binary bundled via `@smithers-orchestrator/jj-<platform>`. + * 2. A binary bundled via `@smthrs/jj-<platform>`. * 3. The bare `"jj"`, left for the OS to resolve against `PATH`. * * Always returns a spawnable command. When jj is genuinely absent the bare diff --git a/docs/references/smithers/pnpm-lock.yaml b/docs/references/smithers/pnpm-lock.yaml index 2e636fccc..40355adda 100644 --- a/docs/references/smithers/pnpm-lock.yaml +++ b/docs/references/smithers/pnpm-lock.yaml @@ -32,78 +32,78 @@ importers: '@mdx-js/esbuild': specifier: ^3.1.1 version: 3.1.1(esbuild@0.27.7) - '@smithers-orchestrator/agents': - specifier: workspace:* - version: link:packages/agents - '@smithers-orchestrator/cli': - specifier: workspace:* - version: link:apps/cli - '@smithers-orchestrator/components': - specifier: workspace:* - version: link:packages/components - '@smithers-orchestrator/control-plane': - specifier: workspace:* - version: link:packages/control-plane - '@smithers-orchestrator/db': - specifier: workspace:* - version: link:packages/db - '@smithers-orchestrator/devtools': - specifier: workspace:* - version: link:packages/devtools - '@smithers-orchestrator/driver': - specifier: workspace:* - version: link:packages/driver - '@smithers-orchestrator/engine': - specifier: workspace:* - version: link:packages/engine - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:packages/errors - '@smithers-orchestrator/gateway': - specifier: workspace:* - version: link:packages/gateway - '@smithers-orchestrator/gateway-client': - specifier: workspace:* - version: link:packages/gateway-client - '@smithers-orchestrator/gateway-react': - specifier: workspace:* - version: link:packages/gateway-react - '@smithers-orchestrator/graph': - specifier: workspace:* - version: link:packages/graph - '@smithers-orchestrator/memory': - specifier: workspace:* - version: link:packages/memory - '@smithers-orchestrator/observability': - specifier: workspace:* - version: link:apps/observability - '@smithers-orchestrator/openapi': - specifier: workspace:* - version: link:packages/openapi - '@smithers-orchestrator/protocol': - specifier: workspace:* - version: link:packages/protocol - '@smithers-orchestrator/react-reconciler': - specifier: workspace:* - version: link:packages/react-reconciler - '@smithers-orchestrator/sandbox': - specifier: workspace:* - version: link:packages/sandbox - '@smithers-orchestrator/scheduler': - specifier: workspace:* - version: link:packages/scheduler - '@smithers-orchestrator/scorers': - specifier: workspace:* - version: link:packages/scorers - '@smithers-orchestrator/server': - specifier: workspace:* - version: link:packages/server - '@smithers-orchestrator/time-travel': - specifier: workspace:* - version: link:packages/time-travel - '@smithers-orchestrator/vcs': - specifier: workspace:* - version: link:packages/vcs + '@smthrs/agents': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/cli': + specifier: ^0.33.0 + version: 0.33.0(d2237bd59aae63d5da93fabc6c021679) + '@smthrs/components': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/control-plane': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/db': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/devtools': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/driver': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/engine': + specifier: ^0.33.0 + version: 0.33.0(2bd4a45a89215b1f4c1f82b421f3ab0a) + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/gateway': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/gateway-client': + specifier: ^0.33.0 + version: 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.5)(typescript@5.9.3) + '@smthrs/gateway-react': + specifier: ^0.33.0 + version: 0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3) + '@smthrs/graph': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/memory': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/observability': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/openapi': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/protocol': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/react-reconciler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/sandbox': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/scheduler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/scorers': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/server': + specifier: ^0.33.0 + version: 0.33.0(12a1814c31fccbb15dacb15fd445f471) + '@smthrs/time-travel': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/vcs': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) '@tanstack/react-query': specifier: ^5.99.1 version: 5.99.1(react@19.2.5) @@ -136,7 +136,7 @@ importers: version: 9.0.0 drizzle-orm: specifier: ^0.45.2 - version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.21.0) + version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) effect: specifier: 3.21.1 version: 3.21.1 @@ -149,12 +149,12 @@ importers: react-dom: specifier: ^19.2.5 version: 19.2.5(react@19.2.5) - smithers-orchestrator: - specifier: workspace:* - version: link:packages/smithers + smthrs: + specifier: ^0.33.0 + version: 0.33.0(9304875a6b8dc177c5e141719530354a) tsup: specifier: ^8.5.1 - version: 8.5.1(postcss@8.5.15)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.8.3) + version: 8.5.1(postcss@8.5.25)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.8.3) twitter-api-v2: specifier: ^1.29.0 version: 1.29.0 @@ -170,12 +170,12 @@ importers: .smithers: dependencies: - '@smithers-orchestrator/scorers': - specifier: workspace:* - version: link:../packages/scorers - smithers-orchestrator: - specifier: workspace:* - version: link:../packages/smithers + '@smthrs/scorers': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + smthrs: + specifier: ^0.33.0 + version: 0.33.0(f6a5d034f82bcd1c1f4566f49e131737) zod: specifier: 4.3.6 version: 4.3.6 @@ -210,63 +210,63 @@ importers: '@modelcontextprotocol/sdk': specifier: ^1.29.0 version: 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6) - '@smithers-orchestrator/accounts': - specifier: workspace:* - version: link:../../packages/accounts - '@smithers-orchestrator/agents': - specifier: workspace:* - version: link:../../packages/agents - '@smithers-orchestrator/components': - specifier: workspace:* - version: link:../../packages/components - '@smithers-orchestrator/db': - specifier: workspace:* - version: link:../../packages/db - '@smithers-orchestrator/devtools': - specifier: workspace:* - version: link:../../packages/devtools - '@smithers-orchestrator/driver': - specifier: workspace:* - version: link:../../packages/driver - '@smithers-orchestrator/engine': - specifier: workspace:* - version: link:../../packages/engine - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../../packages/errors - '@smithers-orchestrator/memory': - specifier: workspace:* - version: link:../../packages/memory - '@smithers-orchestrator/observability': - specifier: workspace:* - version: link:../observability - '@smithers-orchestrator/openapi': - specifier: workspace:* - version: link:../../packages/openapi - '@smithers-orchestrator/protocol': - specifier: workspace:* - version: link:../../packages/protocol - '@smithers-orchestrator/scheduler': - specifier: workspace:* - version: link:../../packages/scheduler - '@smithers-orchestrator/server': - specifier: workspace:* - version: link:../../packages/server - '@smithers-orchestrator/time-travel': - specifier: workspace:* - version: link:../../packages/time-travel - '@smithers-orchestrator/usage': - specifier: workspace:* - version: link:../../packages/usage - '@smithers-orchestrator/vcs': - specifier: workspace:* - version: link:../../packages/vcs + '@smthrs/accounts': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/agents': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/components': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/devtools': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/driver': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/engine': + specifier: ^0.33.0 + version: 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/memory': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/openapi': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/protocol': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/scheduler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/server': + specifier: ^0.33.0 + version: 0.33.0(93b66ce10cabb9c10d3fc395cfa203e8) + '@smthrs/time-travel': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/usage': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/vcs': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) cron-parser: specifier: ^5.5.0 version: 5.5.0 drizzle-orm: specifier: ^0.45.2 - version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) effect: specifier: 3.21.1 version: 3.21.1 @@ -279,9 +279,9 @@ importers: react: specifier: ^19.2.5 version: 19.2.5 - smithers-orchestrator: - specifier: workspace:* - version: link:../../packages/smithers + smthrs: + specifier: ^0.33.0 + version: 0.33.0(3d47cf8b07e70894a63ab5b0b7edc291) yaml: specifier: ^2.8.3 version: 2.8.3 @@ -307,9 +307,9 @@ importers: '@effect/platform-bun': specifier: ^0.89.0 version: 0.89.0(@effect/cluster@0.58.0(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/workflow@0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1) - '@smithers-orchestrator/agents': - specifier: workspace:* - version: link:../../packages/agents + '@smthrs/agents': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) effect: specifier: 3.21.1 version: 3.21.1 @@ -323,18 +323,18 @@ importers: apps/smithers: dependencies: - '@smithers-orchestrator/gateway-client': - specifier: workspace:* - version: link:../../packages/gateway-client - '@smithers-orchestrator/gateway-react': - specifier: workspace:* - version: link:../../packages/gateway-react + '@smthrs/gateway-client': + specifier: ^0.33.0 + version: 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.5)(typescript@5.9.3) + '@smthrs/gateway-react': + specifier: ^0.33.0 + version: 0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3) '@tanstack/ai': specifier: ^0.27.0 version: 0.27.0(@opentelemetry/api@1.9.0) '@tanstack/ai-openai': specifier: ^0.13.0 - version: 0.13.0(@tanstack/ai-client@0.16.2(@opentelemetry/api@1.9.0))(@tanstack/ai@0.27.0(@opentelemetry/api@1.9.0))(ws@8.20.1)(zod@4.3.6) + version: 0.13.0(@tanstack/ai-client@0.16.2(@opentelemetry/api@1.9.0))(@tanstack/ai@0.27.0(@opentelemetry/api@1.9.0))(ws@8.21.1)(zod@4.4.3) '@tanstack/ai-react': specifier: ^0.15.3 version: 0.15.3(@opentelemetry/api@1.9.0)(@tanstack/ai@0.27.0(@opentelemetry/api@1.9.0))(@types/react@19.2.14)(react@19.2.5) @@ -343,7 +343,7 @@ importers: version: 1.170.12(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@xyflow/react': specifier: ^12.10.2 - version: 12.10.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 12.10.2(@types/react@19.2.14)(immer@11.1.15)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) dagre: specifier: ^0.8.5 version: 0.8.5 @@ -355,11 +355,11 @@ importers: version: 19.2.5(react@19.2.5) zustand: specifier: ^5.0.13 - version: 5.0.14(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) + version: 5.0.14(@types/react@19.2.14)(immer@11.1.15)(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) devDependencies: '@cloudflare/vite-plugin': specifier: ^1.39.2 - version: 1.39.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3))(workerd@1.20260601.1)(wrangler@4.97.0(@cloudflare/workers-types@4.20260604.1)) + version: 1.39.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0))(workerd@1.20260601.1)(wrangler@4.97.0(@cloudflare/workers-types@4.20260604.1)) '@cloudflare/workers-types': specifier: ^4.20260604.1 version: 4.20260604.1 @@ -380,10 +380,10 @@ importers: version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': specifier: ^6.0.2 - version: 6.0.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3)) + version: 6.0.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0)) alchemy: specifier: ^0.93.11 - version: 0.93.11(@cloudflare/vite-plugin@1.39.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3))(workerd@1.20260601.1)(wrangler@4.97.0(@cloudflare/workers-types@4.20260604.1)))(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0)(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3))(workerd@1.20260601.1) + version: 0.93.11(@cloudflare/vite-plugin@1.39.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0))(workerd@1.20260601.1)(wrangler@4.97.0(@cloudflare/workers-types@4.20260604.1)))(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0))(workerd@1.20260601.1) cloudflare: specifier: ^6.3.0 version: 6.3.0 @@ -398,13 +398,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.14 - version: 8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3) + version: 8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0) apps/smithers-demo: dependencies: '@xyflow/react': specifier: ^12.10.2 - version: 12.10.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 12.10.2(@types/react@19.2.14)(immer@11.1.15)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) dagre: specifier: ^0.8.5 version: 0.8.5 @@ -423,28 +423,28 @@ importers: version: 0.7.54 '@vitejs/plugin-react': specifier: ^6.0.2 - version: 6.0.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3)) + version: 6.0.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0)) vite: specifier: ^8.0.14 - version: 8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3) + version: 8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0) vitest: specifier: ^4.0.16 - version: 4.1.7(@opentelemetry/api@1.9.0)(@types/node@25.6.0)(happy-dom@20.9.0)(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3)) + version: 4.1.7(@opentelemetry/api@1.9.0)(@types/node@25.6.0)(happy-dom@20.9.0)(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0)) apps/smithers-studio-2: dependencies: - '@smithers-orchestrator/devtools': - specifier: workspace:* - version: link:../../packages/devtools - '@smithers-orchestrator/gateway-client': - specifier: workspace:* - version: link:../../packages/gateway-client + '@smthrs/devtools': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/gateway-client': + specifier: ^0.33.0 + version: 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.5)(typescript@5.9.3) '@uidotdev/usehooks': specifier: ^2.4.1 version: 2.4.1(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@vitejs/plugin-react': specifier: ^6.0.2 - version: 6.0.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3)) + version: 6.0.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0)) '@wterm/dom': specifier: 0.3.0 version: 0.3.0 @@ -471,10 +471,10 @@ importers: version: 5.9.3 vite: specifier: ^8.0.14 - version: 8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3) + version: 8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0) zustand: specifier: ^5.0.13 - version: 5.0.14(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) + version: 5.0.14(@types/react@19.2.14)(immer@11.1.15)(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)) devDependencies: '@playwright/test': specifier: ^1.60.0 @@ -503,30 +503,30 @@ importers: e2e: dependencies: - '@smithers-orchestrator/db': - specifier: workspace:* - version: link:../packages/db - '@smithers-orchestrator/engine': - specifier: workspace:* - version: link:../packages/engine - '@smithers-orchestrator/gateway': - specifier: workspace:* - version: link:../packages/gateway - '@smithers-orchestrator/sandbox': - specifier: workspace:* - version: link:../packages/sandbox - '@smithers-orchestrator/scheduler': - specifier: workspace:* - version: link:../packages/scheduler - '@smithers-orchestrator/server': - specifier: workspace:* - version: link:../packages/server + '@smthrs/db': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/engine': + specifier: ^0.33.0 + version: 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/gateway': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/sandbox': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/scheduler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/server': + specifier: ^0.33.0 + version: 0.33.0(93b66ce10cabb9c10d3fc395cfa203e8) better-sqlite3: specifier: ^11.5.0 version: 11.10.0 drizzle-orm: specifier: ^0.45.2 - version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) effect: specifier: 3.21.1 version: 3.21.1 @@ -549,9 +549,9 @@ importers: packages/accounts: dependencies: - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 devDependencies: '@types/bun': specifier: latest @@ -571,15 +571,15 @@ importers: '@modelcontextprotocol/sdk': specifier: ^1.29.0 version: 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6) - '@smithers-orchestrator/driver': - specifier: workspace:* - version: link:../driver - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors - '@smithers-orchestrator/observability': - specifier: workspace:* - version: link:../../apps/observability + '@smthrs/driver': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/observability': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) ai: specifier: ^6.0.168 version: 6.0.168(zod@4.3.6) @@ -602,33 +602,33 @@ importers: packages/components: dependencies: - '@smithers-orchestrator/agents': - specifier: workspace:* - version: link:../agents - '@smithers-orchestrator/db': - specifier: workspace:* - version: link:../db - '@smithers-orchestrator/driver': - specifier: workspace:* - version: link:../driver - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors - '@smithers-orchestrator/graph': - specifier: workspace:* - version: link:../graph - '@smithers-orchestrator/memory': - specifier: workspace:* - version: link:../memory - '@smithers-orchestrator/observability': - specifier: workspace:* - version: link:../../apps/observability - '@smithers-orchestrator/react-reconciler': - specifier: workspace:* - version: link:../react-reconciler - '@smithers-orchestrator/scheduler': - specifier: workspace:* - version: link:../scheduler + '@smthrs/agents': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/driver': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/graph': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/memory': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/react-reconciler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/scheduler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) bippy: specifier: ^0.5.39 version: 0.5.39(react@19.2.5) @@ -650,7 +650,7 @@ importers: version: 1.3.14 drizzle-orm: specifier: ^0.45.2 - version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) effect: specifier: 3.21.1 version: 3.21.1 @@ -660,9 +660,9 @@ importers: packages/control-plane: dependencies: - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 devDependencies: '@types/bun': specifier: latest @@ -679,18 +679,18 @@ importers: '@effect/sql': specifier: ^0.51.0 version: 0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors - '@smithers-orchestrator/graph': - specifier: workspace:* - version: link:../graph - '@smithers-orchestrator/observability': - specifier: workspace:* - version: link:../../apps/observability - '@smithers-orchestrator/scheduler': - specifier: workspace:* - version: link:../scheduler + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/graph': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/observability': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) drizzle-orm: specifier: ^0.45.2 version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) @@ -731,21 +731,21 @@ importers: packages/driver: dependencies: - '@smithers-orchestrator/db': - specifier: workspace:* - version: link:../db - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors - '@smithers-orchestrator/graph': - specifier: workspace:* - version: link:../graph - '@smithers-orchestrator/observability': - specifier: workspace:* - version: link:../../apps/observability - '@smithers-orchestrator/scheduler': - specifier: workspace:* - version: link:../scheduler + '@smthrs/db': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/graph': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) effect: specifier: 3.21.1 version: 3.21.1 @@ -783,48 +783,48 @@ importers: '@effect/workflow': specifier: ^0.18.0 version: 0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1) - '@smithers-orchestrator/agents': - specifier: workspace:* - version: link:../agents - '@smithers-orchestrator/components': - specifier: workspace:* - version: link:../components - '@smithers-orchestrator/db': - specifier: workspace:* - version: link:../db - '@smithers-orchestrator/driver': - specifier: workspace:* - version: link:../driver - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors - '@smithers-orchestrator/graph': - specifier: workspace:* - version: link:../graph - '@smithers-orchestrator/observability': - specifier: workspace:* - version: link:../../apps/observability - '@smithers-orchestrator/react-reconciler': - specifier: workspace:* - version: link:../react-reconciler - '@smithers-orchestrator/sandbox': - specifier: workspace:* - version: link:../sandbox - '@smithers-orchestrator/scheduler': - specifier: workspace:* - version: link:../scheduler - '@smithers-orchestrator/scorers': - specifier: workspace:* - version: link:../scorers - '@smithers-orchestrator/time-travel': - specifier: workspace:* - version: link:../time-travel - '@smithers-orchestrator/tool-context': - specifier: workspace:* - version: link:../tool-context - '@smithers-orchestrator/vcs': - specifier: workspace:* - version: link:../vcs + '@smthrs/agents': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/components': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/db': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/driver': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/graph': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/observability': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/react-reconciler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/sandbox': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/scheduler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/scorers': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/time-travel': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/tool-context': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/vcs': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) diff: specifier: ^9.0.0 version: 9.0.0 @@ -885,9 +885,9 @@ importers: packages/gateway-client: dependencies: - '@smithers-orchestrator/gateway': - specifier: workspace:* - version: link:../gateway + '@smthrs/gateway': + specifier: ^0.33.0 + version: 0.33.0 devDependencies: '@types/bun': specifier: latest @@ -898,12 +898,12 @@ importers: packages/gateway-react: dependencies: - '@smithers-orchestrator/gateway': - specifier: workspace:* - version: link:../gateway - '@smithers-orchestrator/gateway-client': - specifier: workspace:* - version: link:../gateway-client + '@smthrs/gateway': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/gateway-client': + specifier: ^0.33.0 + version: 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.5)(typescript@5.9.3) devDependencies: '@happy-dom/global-registrator': specifier: ^20.9.0 @@ -929,12 +929,12 @@ importers: packages/graph: dependencies: - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 drizzle-orm: specifier: ^0.45.2 - version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) zod: specifier: ^4.3.6 version: 4.3.6 @@ -958,24 +958,24 @@ importers: packages/memory: dependencies: - '@smithers-orchestrator/db': - specifier: workspace:* - version: link:../db - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors - '@smithers-orchestrator/graph': - specifier: workspace:* - version: link:../graph - '@smithers-orchestrator/observability': - specifier: workspace:* - version: link:../../apps/observability - '@smithers-orchestrator/scheduler': - specifier: workspace:* - version: link:../scheduler + '@smthrs/db': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/graph': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) drizzle-orm: specifier: ^0.45.2 - version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) effect: specifier: 3.21.1 version: 3.21.1 @@ -992,15 +992,15 @@ importers: packages/openapi: dependencies: - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors - '@smithers-orchestrator/observability': - specifier: workspace:* - version: link:../../apps/observability - '@smithers-orchestrator/scheduler': - specifier: workspace:* - version: link:../scheduler + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/observability': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) ai: specifier: ^6.0.168 version: 6.0.168(zod@4.3.6) @@ -1035,21 +1035,21 @@ importers: '@sinclair/typebox': specifier: ^0.34.49 version: 0.34.49 - '@smithers-orchestrator/agents': - specifier: workspace:* - version: link:../agents - '@smithers-orchestrator/cli': - specifier: workspace:* - version: link:../../apps/cli - '@smithers-orchestrator/devtools': - specifier: workspace:* - version: link:../devtools - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors - '@smithers-orchestrator/protocol': - specifier: workspace:* - version: link:../protocol + '@smthrs/agents': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/cli': + specifier: ^0.33.0 + version: 0.33.0(a96c41cc1fb65031925b6fce44da1061) + '@smthrs/devtools': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/protocol': + specifier: ^0.33.0 + version: 0.33.0 ws: specifier: ^8.20.0 version: 8.20.0 @@ -1075,18 +1075,18 @@ importers: packages/react-reconciler: dependencies: - '@smithers-orchestrator/devtools': - specifier: workspace:* - version: link:../devtools - '@smithers-orchestrator/driver': - specifier: workspace:* - version: link:../driver - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors - '@smithers-orchestrator/graph': - specifier: workspace:* - version: link:../graph + '@smthrs/devtools': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/driver': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/graph': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) bippy: specifier: ^0.5.39 version: 0.5.39(react@19.2.5) @@ -1118,21 +1118,21 @@ importers: '@effect/rpc': specifier: ^0.75.0 version: 0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) - '@smithers-orchestrator/db': - specifier: workspace:* - version: link:../db - '@smithers-orchestrator/driver': - specifier: workspace:* - version: link:../driver - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors - '@smithers-orchestrator/observability': - specifier: workspace:* - version: link:../../apps/observability - '@smithers-orchestrator/scheduler': - specifier: workspace:* - version: link:../scheduler + '@smthrs/db': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/driver': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/observability': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) effect: specifier: 3.21.1 version: 3.21.1 @@ -1146,12 +1146,12 @@ importers: packages/scheduler: dependencies: - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors - '@smithers-orchestrator/graph': - specifier: workspace:* - version: link:../graph + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/graph': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) effect: specifier: 3.21.1 version: 3.21.1 @@ -1165,27 +1165,27 @@ importers: packages/scorers: dependencies: - '@smithers-orchestrator/agents': - specifier: workspace:* - version: link:../agents - '@smithers-orchestrator/db': - specifier: workspace:* - version: link:../db - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors - '@smithers-orchestrator/graph': - specifier: workspace:* - version: link:../graph - '@smithers-orchestrator/observability': - specifier: workspace:* - version: link:../../apps/observability - '@smithers-orchestrator/scheduler': - specifier: workspace:* - version: link:../scheduler + '@smthrs/agents': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/graph': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) drizzle-orm: specifier: ^0.45.2 - version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) effect: specifier: 3.21.1 version: 3.21.1 @@ -1205,45 +1205,45 @@ importers: '@effect/workflow': specifier: ^0.18.0 version: 0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1) - '@smithers-orchestrator/components': - specifier: workspace:* - version: link:../components - '@smithers-orchestrator/db': - specifier: workspace:* - version: link:../db - '@smithers-orchestrator/devtools': - specifier: workspace:* - version: link:../devtools - '@smithers-orchestrator/driver': - specifier: workspace:* - version: link:../driver - '@smithers-orchestrator/engine': - specifier: workspace:* - version: link:../engine - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors - '@smithers-orchestrator/gateway': - specifier: workspace:* - version: link:../gateway - '@smithers-orchestrator/observability': - specifier: workspace:* - version: link:../../apps/observability - '@smithers-orchestrator/protocol': - specifier: workspace:* - version: link:../protocol - '@smithers-orchestrator/scheduler': - specifier: workspace:* - version: link:../scheduler - '@smithers-orchestrator/time-travel': - specifier: workspace:* - version: link:../time-travel + '@smthrs/components': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/devtools': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/driver': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/engine': + specifier: ^0.33.0 + version: 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/gateway': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/observability': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/protocol': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/scheduler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/time-travel': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) cron-parser: specifier: ^5.5.0 version: 5.5.0 drizzle-orm: specifier: ^0.45.2 - version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) effect: specifier: 3.21.1 version: 3.21.1 @@ -1254,9 +1254,9 @@ importers: specifier: ^8.20.0 version: 8.20.0 devDependencies: - '@smithers-orchestrator/graph': - specifier: workspace:* - version: link:../graph + '@smthrs/graph': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) '@types/bun': specifier: latest version: 1.3.14 @@ -1275,72 +1275,72 @@ importers: '@mdx-js/esbuild': specifier: ^3.1.1 version: 3.1.1(esbuild@0.28.0) - '@smithers-orchestrator/agents': - specifier: workspace:* - version: link:../agents - '@smithers-orchestrator/cli': - specifier: workspace:* - version: link:../../apps/cli - '@smithers-orchestrator/components': - specifier: workspace:* - version: link:../components - '@smithers-orchestrator/control-plane': - specifier: workspace:* - version: link:../control-plane - '@smithers-orchestrator/db': - specifier: workspace:* - version: link:../db - '@smithers-orchestrator/driver': - specifier: workspace:* - version: link:../driver - '@smithers-orchestrator/engine': - specifier: workspace:* - version: link:../engine - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors - '@smithers-orchestrator/gateway-client': - specifier: workspace:* - version: link:../gateway-client - '@smithers-orchestrator/gateway-react': - specifier: workspace:* - version: link:../gateway-react - '@smithers-orchestrator/graph': - specifier: workspace:* - version: link:../graph - '@smithers-orchestrator/memory': - specifier: workspace:* - version: link:../memory - '@smithers-orchestrator/observability': - specifier: workspace:* - version: link:../../apps/observability - '@smithers-orchestrator/openapi': - specifier: workspace:* - version: link:../openapi - '@smithers-orchestrator/react-reconciler': - specifier: workspace:* - version: link:../react-reconciler - '@smithers-orchestrator/sandbox': - specifier: workspace:* - version: link:../sandbox - '@smithers-orchestrator/scheduler': - specifier: workspace:* - version: link:../scheduler - '@smithers-orchestrator/scorers': - specifier: workspace:* - version: link:../scorers - '@smithers-orchestrator/server': - specifier: workspace:* - version: link:../server - '@smithers-orchestrator/time-travel': - specifier: workspace:* - version: link:../time-travel - '@smithers-orchestrator/tool-context': - specifier: workspace:* - version: link:../tool-context - '@smithers-orchestrator/vcs': - specifier: workspace:* - version: link:../vcs + '@smthrs/agents': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/cli': + specifier: ^0.33.0 + version: 0.33.0(e86b058e229b52fcf7011889fa9d4ade) + '@smthrs/components': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/control-plane': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/db': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/driver': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/engine': + specifier: ^0.33.0 + version: 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/gateway-client': + specifier: ^0.33.0 + version: 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.5)(typescript@5.9.3) + '@smthrs/gateway-react': + specifier: ^0.33.0 + version: 0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.8(react@19.2.5))(react@19.2.5)(typescript@5.9.3) + '@smthrs/graph': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/memory': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/observability': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/openapi': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/react-reconciler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/sandbox': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/scheduler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/scorers': + specifier: ^0.33.0 + version: 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/server': + specifier: ^0.33.0 + version: 0.33.0(d9bea7ae02389fc191ed2098da0df859) + '@smthrs/time-travel': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/tool-context': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/vcs': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) ai: specifier: ^6.0.168 version: 6.0.168(zod@4.3.6) @@ -1375,7 +1375,7 @@ importers: version: 0.5.1 '@electric-sql/pglite-socket': specifier: 0.2.1 - version: 0.2.1(@electric-sql/pglite-age@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pg_hashids@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pg_ivm@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pg_textsearch@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pg_uuidv7@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pgtap@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pgvector@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite@0.5.1) + version: 0.2.1(@electric-sql/pglite-age@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_hashids@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_ivm@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_textsearch@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_uuidv7@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pgtap@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pgvector@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite@0.5.1) pg: specifier: ^8.13.1 version: 8.21.0 @@ -1388,24 +1388,24 @@ importers: '@effect/platform-bun': specifier: ^0.89.0 version: 0.89.0(@effect/cluster@0.58.0(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/workflow@0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1) - '@smithers-orchestrator/db': - specifier: workspace:* - version: link:../db - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors - '@smithers-orchestrator/observability': - specifier: workspace:* - version: link:../../apps/observability - '@smithers-orchestrator/scheduler': - specifier: workspace:* - version: link:../scheduler - '@smithers-orchestrator/vcs': - specifier: workspace:* - version: link:../vcs + '@smthrs/db': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/observability': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': + specifier: ^0.33.0 + version: 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/vcs': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) drizzle-orm: specifier: ^0.45.2 - version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + version: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) effect: specifier: 3.21.1 version: 3.21.1 @@ -1434,12 +1434,12 @@ importers: packages/usage: dependencies: - '@smithers-orchestrator/accounts': - specifier: workspace:* - version: link:../accounts - '@smithers-orchestrator/errors': - specifier: workspace:* - version: link:../errors + '@smthrs/accounts': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/errors': + specifier: ^0.33.0 + version: 0.33.0 devDependencies: '@types/bun': specifier: latest @@ -1453,9 +1453,9 @@ importers: '@effect/platform': specifier: ^0.96.0 version: 0.96.0(effect@3.21.1) - '@smithers-orchestrator/observability': - specifier: workspace:* - version: link:../../apps/observability + '@smthrs/observability': + specifier: ^0.33.0 + version: 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) effect: specifier: 3.21.1 version: 3.21.1 @@ -1470,21 +1470,21 @@ importers: specifier: ~5.9.3 version: 5.9.3 optionalDependencies: - '@smithers-orchestrator/jj-darwin-arm64': - specifier: workspace:* - version: link:../jj-darwin-arm64 - '@smithers-orchestrator/jj-darwin-x64': - specifier: workspace:* - version: link:../jj-darwin-x64 - '@smithers-orchestrator/jj-linux-arm64': - specifier: workspace:* - version: link:../jj-linux-arm64 - '@smithers-orchestrator/jj-linux-x64': - specifier: workspace:* - version: link:../jj-linux-x64 - '@smithers-orchestrator/jj-win32-x64': - specifier: workspace:* - version: link:../jj-win32-x64 + '@smthrs/jj-darwin-arm64': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/jj-darwin-x64': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/jj-linux-arm64': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/jj-linux-x64': + specifier: ^0.33.0 + version: 0.33.0 + '@smthrs/jj-win32-x64': + specifier: ^0.33.0 + version: 0.33.0 packages: @@ -1497,28 +1497,59 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/anthropic@4.0.27': + resolution: {integrity: sha512-ecrPWkYf+sHDLHErHAU/yjJfNevUzT0i6TuoQLb58oadnquSHcLQ5NMLLWjbr6d1rxYdzI7ftulIJ03VH9yM3w==} + engines: {node: '>=22'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/gateway@3.0.104': resolution: {integrity: sha512-ZKX5n74io8VIRlhIMSLWVlvT3sXC8Z7cZ9GHuWBWZDVi96+62AIsWuLGvMfcBA1STYuSoDrp6rIziZmvrTq0TA==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/gateway@4.0.37': + resolution: {integrity: sha512-YBCTsSlX0ETVsjo0ihfBOeJ3p3y1wXKXDzF9Ygp9dscUY06dzOGmyWJSGsKg+khKVArzBWUW4UCSAKms20ZDmg==} + engines: {node: '>=22'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/openai@3.0.53': resolution: {integrity: sha512-Wld+Rbc05KaUn08uBt06eEuwcgalcIFtIl32Yp+GxuZXUQwOb6YeAuq+C6da4ch6BurFoqEaLemJVwjBb7x+PQ==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/openai@4.0.27': + resolution: {integrity: sha512-6MsWnbNG0ZjZgzYimNNjnTAlOFXn+jdLMFB47dDVUsRNjxdUoTSduCQPZZeTKoUl0ZNwCjsJ31of49l/t1r9MA==} + engines: {node: '>=22'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/provider-utils@4.0.23': resolution: {integrity: sha512-z8GlDaCmRSDlqkMF2f4/RFgWxdarvIbyuk+m6WXT1LYgsnGiXRJGTD2Z1+SDl3LqtFuRtGX1aghYvQLoHL/9pg==} engines: {node: '>=18'} peerDependencies: zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/provider-utils@5.0.18': + resolution: {integrity: sha512-UBNCrkxS5llgN2/RXLBRkjCFTIuL6YB1Goq5c+yRecnznhtX4XPjTwLHz2hrsTltTVZ0rqVegtnwFXdPBkjDHA==} + engines: {node: '>=22'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 + '@ai-sdk/provider@3.0.8': resolution: {integrity: sha512-oGMAgGoQdBXbZqNG0Ze56CHjDZ1IDYOwGYxYjO5KLSlz5HiNQ9udIXsPZ61VWaHGZ5XW/jyjmr6t2xz2jGVwbQ==} engines: {node: '>=18'} + '@ai-sdk/provider@4.0.4': + resolution: {integrity: sha512-tbHKNLirllUNF3ZlkCsXnwab2ZV1Sl4b1H/Cp9ruCce15IBmskE8Gwkk0yo9xDWY+jho2of7lVXtwSsyrq7cwQ==} + engines: {node: '>=22'} + + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + '@anthropic-ai/sdk@0.90.0': resolution: {integrity: sha512-MzZtPabJF1b0FTDl6Z6H5ljphPwACLGP13lu8MTiB8jXaW/YXlpOp+Po2cVou3MPM5+f5toyLnul9whKCy7fBg==} hasBin: true @@ -1745,25 +1776,56 @@ packages: resolution: {integrity: sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==} engines: {node: '>=18.0.0'} + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.8': + resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/runtime@7.29.2': resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} engines: {node: '>=6.9.0'} + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} + engines: {node: '>=6.9.0'} + '@babylonjs/core@7.54.3': resolution: {integrity: sha512-P5ncXVd8GEUJLhwloP9V0oVwQYIrvZztguVeLlvd5Rx+9aQnenKjpV8auJ6SRsUlAmNZU4pFTKzwF6o2EUfhAw==} '@borewit/text-codec@0.2.2': resolution: {integrity: sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==} + '@braintree/sanitize-url@7.1.2': + resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} + '@cfworker/json-schema@4.1.1': resolution: {integrity: sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==} + '@chevrotain/types@11.1.2': + resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} + '@clack/core@0.4.2': resolution: {integrity: sha512-NYQfcEy8MWIxrT5Fj8nIVchfRFA26yYKJcvBS7WlUIlw2OmQOY9DhGGXMovyI5J5PpxrCPGkgUi207EBrjpBvg==} + '@clack/core@1.4.3': + resolution: {integrity: sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==} + engines: {node: '>= 20.12.0'} + '@clack/prompts@0.10.1': resolution: {integrity: sha512-Q0T02vx8ZM9XSv9/Yde0jTmmBQufZhPJfYAg2XrrrxWWaZgq1rr8nU8Hv710BQ1dhoP8rtY7YUdpGej2Qza/cw==} + '@clack/prompts@1.7.0': + resolution: {integrity: sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==} + engines: {node: '>= 20.12.0'} + '@cloudflare/kv-asset-handler@0.5.0': resolution: {integrity: sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg==} engines: {node: '>=22.0.0'} @@ -1856,6 +1918,99 @@ packages: '@cloudflare/workers-types@4.20260604.1': resolution: {integrity: sha512-nVTydUwPcz9WfwZ/6xAmqs8uUVeGbDVmyPvSYrYAo4CQTyi0122SoE1Suw8RvqnN60XXHPChAjDqSIjnr/mbmg==} + '@codemirror/autocomplete@6.20.3': + resolution: {integrity: sha512-tlosUqb+3BbxCxZdu4tKeRghPFC+QM7q4X5YhKV2eCmPG+1r2F3f4AaSz5sCrFqUtX4Jh20VFTKecl16MgiV9g==} + + '@codemirror/commands@6.10.4': + resolution: {integrity: sha512-Ryk9y9T0FFVF0cUGhAknveAyUOl/A1qReTFi+qPKtOh2Z9F4AUBz3XOrYD4ZEgZirdugVzHvd/2/Wcwy5OliTg==} + + '@codemirror/lang-angular@0.1.4': + resolution: {integrity: sha512-oap+gsltb/fzdlTQWD6BFF4bSLKcDnlxDsLdePiJpCVNKWXSTAbiiQeYI3UmES+BLAdkmIC1WjyztC1pi/bX4g==} + + '@codemirror/lang-cpp@6.0.3': + resolution: {integrity: sha512-URM26M3vunFFn9/sm6rzqrBzDgfWuDixp85uTY49wKudToc2jTHUrKIGGKs+QWND+YLofNNZpxcNGRynFJfvgA==} + + '@codemirror/lang-css@6.3.1': + resolution: {integrity: sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==} + + '@codemirror/lang-go@6.0.1': + resolution: {integrity: sha512-7fNvbyNylvqCphW9HD6WFnRpcDjr+KXX/FgqXy5H5ZS0eC5edDljukm/yNgYkwTsgp2busdod50AOTIy6Jikfg==} + + '@codemirror/lang-html@6.4.11': + resolution: {integrity: sha512-9NsXp7Nwp891pQchI7gPdTwBuSuT3K65NGTHWHNJ55HjYcHLllr0rbIZNdOzas9ztc1EUVBlHou85FFZS4BNnw==} + + '@codemirror/lang-java@6.0.2': + resolution: {integrity: sha512-m5Nt1mQ/cznJY7tMfQTJchmrjdjQ71IDs+55d1GAa8DGaB8JXWsVCkVT284C3RTASaY43YknrK2X3hPO/J3MOQ==} + + '@codemirror/lang-javascript@6.2.5': + resolution: {integrity: sha512-zD4e5mS+50htS7F+TYjBPsiIFGanfVqg4HyUz6WNFikgOPf2BgKlx+TQedI1w6n/IqRBVBbBWmGFdLB/7uxO4A==} + + '@codemirror/lang-jinja@6.0.1': + resolution: {integrity: sha512-P5kyHLObzjtbGj16h+hyvZTxJhSjBEeSx4wMjbnAf3b0uwTy2+F0zGjMZL4PQOm/mh2eGZ5xUDVZXgwP783Nsw==} + + '@codemirror/lang-json@6.0.2': + resolution: {integrity: sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ==} + + '@codemirror/lang-less@6.0.2': + resolution: {integrity: sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ==} + + '@codemirror/lang-liquid@6.3.2': + resolution: {integrity: sha512-6PDVU3ZnfeYyz1at1E/ttorErZvZFXXt1OPhtfe1EZJ2V2iDFa0CwPqPgG5F7NXN0yONGoBogKmFAafKTqlwIw==} + + '@codemirror/lang-markdown@6.5.1': + resolution: {integrity: sha512-6re5avCNfyRMIoi3XNjbEfQM1vTeVD3JS3g/Fyegyso/eoANFM71Cyvbb66LDyYtQLMEcRFlzioywCqDo9SlLA==} + + '@codemirror/lang-php@6.0.2': + resolution: {integrity: sha512-ZKy2v1n8Fc8oEXj0Th0PUMXzQJ0AIR6TaZU+PbDHExFwdu+guzOA4jmCHS1Nz4vbFezwD7LyBdDnddSJeScMCA==} + + '@codemirror/lang-python@6.2.1': + resolution: {integrity: sha512-IRjC8RUBhn9mGR9ywecNhB51yePWCGgvHfY1lWN/Mrp3cKuHr0isDKia+9HnvhiWNnMpbGhWrkhuWOc09exRyw==} + + '@codemirror/lang-rust@6.0.2': + resolution: {integrity: sha512-EZaGjCUegtiU7kSMvOfEZpaCReowEf3yNidYu7+vfuGTm9ow4mthAparY5hisJqOHmJowVH3Upu+eJlUji6qqA==} + + '@codemirror/lang-sass@6.0.2': + resolution: {integrity: sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q==} + + '@codemirror/lang-sql@6.10.0': + resolution: {integrity: sha512-6ayPkEd/yRw0XKBx5uAiToSgGECo/GY2NoJIHXIIQh1EVwLuKoU8BP/qK0qH5NLXAbtJRLuT73hx7P9X34iO4w==} + + '@codemirror/lang-vue@0.1.3': + resolution: {integrity: sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug==} + + '@codemirror/lang-wast@6.0.2': + resolution: {integrity: sha512-Imi2KTpVGm7TKuUkqyJ5NRmeFWF7aMpNiwHnLQe0x9kmrxElndyH0K6H/gXtWwY6UshMRAhpENsgfpSwsgmC6Q==} + + '@codemirror/lang-xml@6.1.0': + resolution: {integrity: sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==} + + '@codemirror/lang-yaml@6.1.3': + resolution: {integrity: sha512-AZ8DJBuXGVHybpBQhmZtgew5//4hv3tdkXnr3vDmOUMJRuB6vn/uuwtmTOTlqEaQFg3hQSVeA90NmvIQyUV6FQ==} + + '@codemirror/language-data@6.5.2': + resolution: {integrity: sha512-CPkWBKrNS8stYbEU5kwBwTf3JB1kghlbh4FSAwzGW2TEscdeHHH4FGysREW86Mqnj3Qn09s0/6Ea/TutmoTobg==} + + '@codemirror/language@6.12.4': + resolution: {integrity: sha512-1q4PaT+o6PbgpkJt4Q8Fv5XJxTy4FUZ4MWETtyiDw3J0Pyr9E2vqcKL+k9wcvjNTIsauxvE7OfmWj3FRPHQ76A==} + + '@codemirror/legacy-modes@6.5.3': + resolution: {integrity: sha512-xCsmIzH78MyWkib9jlPaaun57XNkfbMIhagfaZVd0iLTqlpw3jXaIcbZm72MTmmn64eTZpBVNjbyYh+QXnxRsg==} + + '@codemirror/lint@6.9.7': + resolution: {integrity: sha512-28/+iWLYxKxsvGYhSYL7zaCZqLz5+FFFDq9tVsvGv9kv8RY4fFAchJ5WX9M3YrrRlTIsECjsXPqeNgnSmNP2dg==} + + '@codemirror/search@6.7.1': + resolution: {integrity: sha512-uMe5UO6PamJtSHrXhhHOzSX3ReWtiJrva6GnPMwSOrZtiExb5X5eExhr2OUZQVvdxPsKpY3Ro2mFbQadpPWmHA==} + + '@codemirror/state@6.7.1': + resolution: {integrity: sha512-9QzNDgE4EYDnAHfrTlR2lwiPciiOymLtwKK+8yHQzCc7GXhAP9xdEbEJFy2IWB1j9UGUl9BsgMmTo/ImA02T7A==} + + '@codemirror/theme-one-dark@6.1.3': + resolution: {integrity: sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==} + + '@codemirror/view@6.43.7': + resolution: {integrity: sha512-FZsExxkoxnAN+d9TgqXLg5g4A1oQwzX9WlkOT5i2PKkcW7xx3Bmu0vs90g6fo9Mpdsb/l96dnAraQ8932aO4/g==} + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -1901,16 +2056,53 @@ packages: '@opentelemetry/semantic-conventions': ^1.33.0 effect: 3.21.1 - '@effect/platform-bun@0.89.0': - resolution: {integrity: sha512-ReT5f2vujJfffMOBexrgwJd2RLxgfr2G0c1FyCsoflcjdQJ7RZE3cwHDp1M3hAzmG67wWAssMHqLsX6H/n27sQ==} + '@effect/opentelemetry@4.0.0-beta.102': + resolution: {integrity: sha512-U15cxJ1uf3+HMnZB0BUQe3U4TuyIPYxSHJ+wEzkF4ZjteN224hsgeTgsyXSFjSIpWDVWfujdGPqmtkDpcMzf6w==} + engines: {node: '>=18.0.0'} peerDependencies: - '@effect/cluster': ^0.58.0 - '@effect/platform': ^0.96.0 - '@effect/rpc': ^0.75.0 - '@effect/sql': ^0.51.0 - effect: 3.21.1 - - '@effect/platform-node-shared@0.59.0': + '@opentelemetry/api': ^1.9 + '@opentelemetry/api-logs': '>=0.203.0 <0.300.0' + '@opentelemetry/resources': ^2.0.0 + '@opentelemetry/sdk-logs': '>=0.203.0 <0.300.0' + '@opentelemetry/sdk-metrics': ^2.0.0 + '@opentelemetry/sdk-trace-base': ^2.0.0 + '@opentelemetry/sdk-trace-node': ^2.0.0 + '@opentelemetry/sdk-trace-web': ^2.0.0 + '@opentelemetry/semantic-conventions': ^1.33.0 + effect: 3.21.1 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@opentelemetry/api-logs': + optional: true + '@opentelemetry/resources': + optional: true + '@opentelemetry/sdk-logs': + optional: true + '@opentelemetry/sdk-metrics': + optional: true + '@opentelemetry/sdk-trace-base': + optional: true + '@opentelemetry/sdk-trace-node': + optional: true + '@opentelemetry/sdk-trace-web': + optional: true + + '@effect/platform-bun@0.89.0': + resolution: {integrity: sha512-ReT5f2vujJfffMOBexrgwJd2RLxgfr2G0c1FyCsoflcjdQJ7RZE3cwHDp1M3hAzmG67wWAssMHqLsX6H/n27sQ==} + peerDependencies: + '@effect/cluster': ^0.58.0 + '@effect/platform': ^0.96.0 + '@effect/rpc': ^0.75.0 + '@effect/sql': ^0.51.0 + effect: 3.21.1 + + '@effect/platform-bun@4.0.0-beta.102': + resolution: {integrity: sha512-hTIb0jjTfXhNgnDq2OX5wrigc0OSvTT0VWWb1PLpMM395RJPu8rCIbTlGhy0NS7kZOd8FfgNi9e0sDhgyu+5Ag==} + peerDependencies: + effect: 3.21.1 + + '@effect/platform-node-shared@0.59.0': resolution: {integrity: sha512-3bq2YKKfLY7UFauZSxqZUneCXoA3SMSls82V+0RKunvRlfPuPQW0hVn6t1RkvEdh0PDoygWG2mZXYQa6Iqgp9A==} peerDependencies: '@effect/cluster': ^0.58.0 @@ -1919,6 +2111,12 @@ packages: '@effect/sql': ^0.51.0 effect: 3.21.1 + '@effect/platform-node-shared@4.0.0-beta.102': + resolution: {integrity: sha512-gVd793I72MrkX4dXo7eYtRKfNj0RW4eMRfVEKEJI16h2+mBDCzQ+gqMrog2hSTHQnaIbvbYShNQ4TVGuRCYZeQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + effect: 3.21.1 + '@effect/platform@0.96.0': resolution: {integrity: sha512-U7PLhkVzg7zzrgFvyWATOzD6reL87KG/fcdOxgLWBQ/J5CCU6qdPAVG+0o6o+IxcsLoqGwxs+rFxaFzrdtDV1A==} peerDependencies: @@ -1938,6 +2136,11 @@ packages: '@effect/sql': ^0.51.0 effect: 3.21.1 + '@effect/sql-sqlite-bun@4.0.0-beta.102': + resolution: {integrity: sha512-pBO6FBJ+a21j2qHmzJDK1DeJsxm7HpUQBgucw6prHQXLMUBkhOsfZofhw1FKEdGRDEhO0sGTjffa2KP7iOuDIg==} + peerDependencies: + effect: 3.21.1 + '@effect/sql@0.51.0': resolution: {integrity: sha512-e7hWe46QD15eMCr4kNBMVdItIVK/WLHJG+d8DLL1FjVf5Ra82k2mwUYIXplJewVbHjt3my6GSKPPd1ZrQjVd5A==} peerDependencies: @@ -1953,6 +2156,10 @@ packages: '@effect/rpc': ^0.75.0 effect: 3.21.1 + '@electric-sql/client@1.5.24': + resolution: {integrity: sha512-ItOjBFTfiZvYosglF9Dn4TSqE59yL/psoemHJ7vX8gvEUmElHB2QdP5eQC6q9/lswyv7oqhkZT0Kk8kuq2P5vA==} + hasBin: true + '@electric-sql/pglite-age@0.0.2': resolution: {integrity: sha512-0Q+QnbSSZjJt3aF/wycuXpC1HxyemkAumYSodKlIkjobx/Cu/U9a9lazuwlAzB1GOZuCuB6JUiYjGcJMnvN7zA==} peerDependencies: @@ -2001,9 +2208,25 @@ packages: '@electric-sql/pglite-pgtap': 0.0.2 '@electric-sql/pglite-pgvector': 0.0.2 + '@electric-sql/pglite-socket@0.2.7': + resolution: {integrity: sha512-lhYx1OOVueiWJRa2Uj1QiIjCWmpRnYLNs5rRH/g47EqrYXP/Qt3VvcXGGum4uIouKKMVlPlkXb6E5Uw0aHRymw==} + hasBin: true + peerDependencies: + '@electric-sql/pglite': 0.5.4 + '@electric-sql/pglite-age': 0.0.5 + '@electric-sql/pglite-pg_hashids': 0.0.5 + '@electric-sql/pglite-pg_ivm': 0.0.5 + '@electric-sql/pglite-pg_textsearch': 0.0.6 + '@electric-sql/pglite-pg_uuidv7': 0.0.5 + '@electric-sql/pglite-pgtap': 0.0.5 + '@electric-sql/pglite-pgvector': 0.0.5 + '@electric-sql/pglite@0.5.1': resolution: {integrity: sha512-h2Vc+qkQqsEL5kvyN5nBAxn3Vbyvka7QfDW7Io+CdcwU1+X8JbCAN2og+5dI11S3eJuDfroUCxzJaap6k+ezEw==} + '@electric-sql/pglite@0.5.4': + resolution: {integrity: sha512-yYZUyyXrHU7tPlCjwZQJ6hIG9DscdCCn7Uk0mYKwC1FeHX286AbcmFveMiRBEak8e9iPupjsoVImN3yJZVed2g==} + '@emnapi/core@1.10.0': resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} @@ -2637,6 +2860,21 @@ packages: cpu: [x64] os: [win32] + '@floating-ui/core@1.8.0': + resolution: {integrity: sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==} + + '@floating-ui/dom@1.8.0': + resolution: {integrity: sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==} + + '@floating-ui/react-dom@2.1.9': + resolution: {integrity: sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.12': + resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==} + '@google/genai@1.50.1': resolution: {integrity: sha512-YbkX7H9+1Pt8wOt7DDREy8XSoiL6fRDzZQRyaVBarFf8MR3zHGqVdvM4cLbDXqPhxqvegZShgfxb8kw9C7YhAQ==} engines: {node: '>=20.0.0'} @@ -2659,6 +2897,12 @@ packages: '@iarna/toml@2.2.5': resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@3.1.4': + resolution: {integrity: sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw==} + '@img/colour@1.1.0': resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} @@ -2816,10 +3060,64 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@lezer/common@1.5.2': + resolution: {integrity: sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ==} + + '@lezer/cpp@1.1.6': + resolution: {integrity: sha512-vh9gWWJOXFVY8HBHK3Twzq8MgwG2iN4GSyzBP9sCGTe37P15x2R14VaBQk0VA0ezTRN1KHYBBsHhvpGZ2Xy/pA==} + + '@lezer/css@1.3.5': + resolution: {integrity: sha512-PrlQ8glBdWS5UOqgnFCmPxAJbhuOhb0WoDnSAXiNQPjivlDujhuUQ1K/fxyk2vFoq4VTBgFtFZOc8sOpiYjz5g==} + + '@lezer/go@1.0.1': + resolution: {integrity: sha512-xToRsYxwsgJNHTgNdStpcvmbVuKxTapV0dM0wey1geMMRc9aggoVyKgzYp41D2/vVOx+Ii4hmE206kvxIXBVXQ==} + + '@lezer/highlight@1.2.3': + resolution: {integrity: sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==} + + '@lezer/html@1.3.13': + resolution: {integrity: sha512-oI7n6NJml729m7pjm9lvLvmXbdoMoi2f+1pwSDJkl9d68zGr7a9Btz8NdHTGQZtW2DA25ybeuv/SyDb9D5tseg==} + + '@lezer/java@1.1.3': + resolution: {integrity: sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw==} + + '@lezer/javascript@1.5.4': + resolution: {integrity: sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA==} + + '@lezer/json@1.0.3': + resolution: {integrity: sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==} + + '@lezer/lr@1.4.10': + resolution: {integrity: sha512-rnCpTIBafOx4mRp43xOxDJbFipJm/c0cia/V5TiGlhmMa+wsSdoGmUN3w5Bqrks/09Q/D4tNAmWaT8p6NRi77A==} + + '@lezer/markdown@1.7.2': + resolution: {integrity: sha512-iTkYvoVcKt3WkeL7qUDyXHONZEwLio4wj8KTNi2dnjQEXBZKMV63BpQrPqfsM+OkvuRbiSTAcycYAsQzLhRNoQ==} + + '@lezer/php@1.0.5': + resolution: {integrity: sha512-W7asp9DhM6q0W6DYNwIkLSKOvxlXRrif+UXBMxzsJUuqmhE7oVU+gS3THO4S/Puh7Xzgm858UNaFi6dxTP8dJA==} + + '@lezer/python@1.1.19': + resolution: {integrity: sha512-MhQIURHRytsNzP/YXnqpYKW6la6voAH3kyplTOOiCdjyFY6cWWGFVmYVdHIPrElqSDf4iCDktQCockB9FxuhzQ==} + + '@lezer/rust@1.0.2': + resolution: {integrity: sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg==} + + '@lezer/sass@1.1.0': + resolution: {integrity: sha512-3mMGdCTUZ/84ArHOuXWQr37pnf7f+Nw9ycPUeKX+wu19b7pSMcZGLbaXwvD2APMBDOGxPmpK/O6S1v1EvLoqgQ==} + + '@lezer/xml@1.0.6': + resolution: {integrity: sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww==} + + '@lezer/yaml@1.0.4': + resolution: {integrity: sha512-2lrrHqxalACEbxIbsjhqGpSW8kWpUKuY6RHgnSAFZa6qK62wvnPxA8hGOwOoDbwHcOFs5M4o27mjGu+P7TvBmw==} + '@malept/cross-spawn-promise@1.1.1': resolution: {integrity: sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==} engines: {node: '>= 10'} + '@marijn/find-cluster-break@1.0.3': + resolution: {integrity: sha512-FY+MKLBoTsLNJF/eLWaOsXGdz6uh3Iu1axjPf6TUq92IYumcTcXWHoS747JARLkcdlJ/Waiaxc5wQfFO8jC6NA==} + '@mariozechner/clipboard-darwin-arm64@0.3.3': resolution: {integrity: sha512-+zhuZGXqVrdkbIRdnwiZNbTJ7V3elq/A+C5d5laJoyhJgWs41eO5NUMkBkj6f23F2L4PRXEhdn5/ktlPx+bG3Q==} engines: {node: '>= 10'} @@ -2917,6 +3215,85 @@ packages: '@mdx-js/mdx@3.1.1': resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} + '@mermaid-js/parser@1.2.0': + resolution: {integrity: sha512-oYPyv8A4As1yH5Bx+04iQEQxXuIQDe0GKCNSRgao6z8AM9jixXIfP0vsppRLvGf+nKIOb9/LdpWA4YuJiVvESA==} + + '@microsoft/fetch-event-source@2.0.1': + resolution: {integrity: sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==} + + '@milkdown/components@7.21.2': + resolution: {integrity: sha512-u3eCgRAnJgglZtJ6m5g09OF3SFPOagCe3xFvqtXRaUdX0/7E9z3hOvXkuisZNQUEF9623qwT/zNhK2rctvuFrg==} + peerDependencies: + '@codemirror/language': ^6 + '@codemirror/state': ^6 + '@codemirror/view': ^6 + + '@milkdown/core@7.21.2': + resolution: {integrity: sha512-b9xrcN9g+o05skEc4O78vGPvwJm1sbfqIPROncZH2vSE/lOIcp9AR1SdqveWmhymd/QILgTzW9WsnJfgQkGMXQ==} + + '@milkdown/crepe@7.21.2': + resolution: {integrity: sha512-3BaEADeWxVYTn6TwromOKnu/m5GLJvIKGl4VlHJ9dVpdh7VLEwLbggfw5nweQmpnGWEaqyDplk2uPH0xK5MMhg==} + + '@milkdown/ctx@7.21.2': + resolution: {integrity: sha512-dqiA0GeERv86QEde+ZvxqBy4cDmfAsfLTIpi10doFJLKLerei23TVb5lHD8/CGUVqpS995MTu3dAFRBs9C0q5Q==} + + '@milkdown/exception@7.21.2': + resolution: {integrity: sha512-/6QkN1XmEtVHe5XhPm87lCUtV9qQNRHuAhxki/wtF+10vAeq8xOBW9/S5Kv/zpS9DSgdM/Ce+BPO3+yT1FIvWg==} + + '@milkdown/kit@7.21.2': + resolution: {integrity: sha512-93E5PgJgQXTwn0N8xSmk3Y6+oVvMMQYDV3HF22ZNE8tFVRLOz3vMLJFfxncxY0CONadCpreoOT3Ut+p9JYjySA==} + + '@milkdown/plugin-block@7.21.2': + resolution: {integrity: sha512-ZAv3QSr9J8+U4u8SVPcKeVeMmSA9OrrwS6jeY4YP/k6OxPfGK7H5+i6qW73gDxXvRzTGMSyTuFOdX4tgcXnV9A==} + + '@milkdown/plugin-clipboard@7.21.2': + resolution: {integrity: sha512-Noc4rFpVzHvzjNaIKLhvzX2DEeyjWCTzDZR9k6B/0wgD0ZiZSGDnnq8op1Is1s5NjFq6UpCeZtXfs8HuLxbgFA==} + + '@milkdown/plugin-cursor@7.21.2': + resolution: {integrity: sha512-PDENEK8mZ44YTfQyR5fuqVk5ZF8CJLdYpcavcorfhtvVx+3ZpQodDz0q7o42kE17jEMXCfsL/t2gUHxOp3pPIw==} + + '@milkdown/plugin-diff@7.21.2': + resolution: {integrity: sha512-I1aLHTAcKk04MFDA/RmhRYPY4kHoSjZf9yoCxl5eNYi3PtOzJ2aoKcBi/uNbU0TG+MoJc/DKizVcaI1t4jyAWg==} + + '@milkdown/plugin-history@7.21.2': + resolution: {integrity: sha512-iymGm2fm/desC0tAukz3ubHZ7KSj0UFvHZTY8H55IzPnRLsVErnGFOZ5l/VFeHQI4xoBq+NWUBuPFFF4ApxBlw==} + + '@milkdown/plugin-indent@7.21.2': + resolution: {integrity: sha512-CY7lOWZPckjgsLPhMKa/96lNSbr1Bf5xT8sUQ+rC6Vv1PgRy63R8dTO+99xuHTmZp7XZm33cuswEW7VJuPFA4g==} + + '@milkdown/plugin-listener@7.21.2': + resolution: {integrity: sha512-CyVNlB5uyQlH7aAX1kBKF3O+2zATGwXmjWZ7qFLNyII+31Wv4jshAzxHSIBi4qrIWbqBEbT72j2OQTOCdRNLOA==} + + '@milkdown/plugin-slash@7.21.2': + resolution: {integrity: sha512-da8UxNr73UC/32BQNZnWaalj0HjZIH2zIA6k7fHEgwwSXq3/aAgPc8x80/toHyVBMeeNA0hEcEobJLvEGFYV7g==} + + '@milkdown/plugin-streaming@7.21.2': + resolution: {integrity: sha512-gWuMAz4HStGDdtQ2Al9pr35RXk2MzZonJy1ODFuzmFImLpBDAWJaEZkigFWQXijGff00IvS3nkXJSWZQBOesJg==} + + '@milkdown/plugin-tooltip@7.21.2': + resolution: {integrity: sha512-L8123LL4sv2nsSUN86dwmF9NXwH+TZFaS6bt7Dd43DjZgxb+HMfpDJCLEA9f4zrJgDUr1Tis501WZvQGzPMrTQ==} + + '@milkdown/plugin-trailing@7.21.2': + resolution: {integrity: sha512-G0hZs94ZwXsZ+skpuitLjBeAFt/3JJz4B4A5pE18xGruEZ2LAObhJ7+Y8sGgcAQvMfl3LcTbuggv3uU5Pr5xxA==} + + '@milkdown/plugin-upload@7.21.2': + resolution: {integrity: sha512-g3c0IXlZSJ9Bcg+iFzAHJ5lLHc6YHf6r1Wl8IQAIXWMh8G4p9N7yXoYknLuZGyT//7s1/mzcc/UI1Yq7kCGNWg==} + + '@milkdown/preset-commonmark@7.21.2': + resolution: {integrity: sha512-LpPltwT+2ywK0EufhEAm+YnMaTqohaIdiarDDVfvMjVz7cF3ciXOa2/SOsYK76+/vbyQaUizuIG0sooxYDpHqg==} + + '@milkdown/preset-gfm@7.21.2': + resolution: {integrity: sha512-t39W/o2KzCCNdFu9D1GSsSsuEQSCCwM5YQjj16HaHjtUryScjy4epEyXoMffXfT2FOF5oiTdBf+HukvzKFaoqA==} + + '@milkdown/prose@7.21.2': + resolution: {integrity: sha512-ufnHhRaevLbqISBpOA5Rl4+S66n+h0JRfoZw2j/WyJ1eBNHg42xoQNXUEI9YiP/GoQPKeOitKux50GpafyNtQw==} + + '@milkdown/transformer@7.21.2': + resolution: {integrity: sha512-j2VQ6baKy6b6rAo/yo00YwSsWHoW0sqgwRTDqSCwXW8dgdFtl4M2i/73exRLcRQ4MvDOHrSqGS5RcRz+fzPOeQ==} + + '@milkdown/utils@7.21.2': + resolution: {integrity: sha512-m1ZJDnh+/tnIBxLhh5euNGr1WXvsGnJkaGctsd/an5+73HqHOdtWD6L7oJF8+DQG4Kksr4WPNNZutqYGb6OAxw==} + '@mistralai/mistralai@2.2.1': resolution: {integrity: sha512-uKU8CZmL2RzYKmplsU01hii4p3pe4HqJefpWNRWXm1Tcm0Sm4xXfwSLIy4k7ZCPlbETCGcp69E7hZs+WOJ5itQ==} @@ -2939,6 +3316,10 @@ packages: '@cfworker/json-schema': optional: true + '@modelcontextprotocol/server@2.0.0-alpha.4': + resolution: {integrity: sha512-/KEo3ZJ50HlagHp0lz2vPgfBZFtXHu6zTBXT9XqPc+4O9i4+IbBVWKq/a9yAfv/ifp0u3+mRo8SUk5kMKzhN8A==} + engines: {node: '>=20'} + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} cpu: [arm64] @@ -2978,6 +3359,9 @@ packages: '@nodable/entities@2.1.0': resolution: {integrity: sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==} + '@ocavue/utils@1.7.0': + resolution: {integrity: sha512-yEk9ATNBjTZTtuVFMB/MAIF6zJBvJ2+lVNQvK2+O+ggEBGTgx2tp27d4FPgmD5bRsNHHP3D0SleQia/bvIeV8w==} + '@octokit/auth-token@5.1.2': resolution: {integrity: sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==} engines: {node: '>= 18'} @@ -3096,6 +3480,58 @@ packages: resolution: {integrity: sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw==} engines: {node: '>=14'} + '@opentui/core-darwin-arm64@0.4.5': + resolution: {integrity: sha512-8KUG0oRidnR+oW1RSZJ72/PhZLl+qRRMk5U/mieF4c0SJ5V3tYACpBZAKzQfHNd1f7QzD8FHZct1lPpQgtmkWg==} + cpu: [arm64] + os: [darwin] + + '@opentui/core-darwin-x64@0.4.5': + resolution: {integrity: sha512-R2bocsg55gwjOqCp/MWFgFYzRmsduKegB6nzgFAPCvAD/L5Jf30xpWJWFlSg3x8vxe1L9WJ84dfqa4M7mZZ3wA==} + cpu: [x64] + os: [darwin] + + '@opentui/core-linux-arm64-musl@0.4.5': + resolution: {integrity: sha512-ieqdyKI6EIYPalYAETB2wsdP83hr5Ifi+dFnBFUmdEEFHsoKwBmn2S7bsTOYlX7Bg03F4/YPIg+IvRpeC+cUJw==} + cpu: [arm64] + os: [linux] + + '@opentui/core-linux-arm64@0.4.5': + resolution: {integrity: sha512-R4MZ25a4CzOAGVjW9aj1hUfzQGVfCJwrwBDbNs2SXaIvzcZqkxCVtU4FoQ5LsaD0j/BdNQVg2CIfFkFsm1fDuQ==} + cpu: [arm64] + os: [linux] + + '@opentui/core-linux-x64-musl@0.4.5': + resolution: {integrity: sha512-mKVKcIcPiSVVZZsdPSBoWwoa2/TCeQAaMDeHF7PFw2kt5bTXZPP7xxWfRQLCNIcA1eaGl59UuwUWHDR2Ve548Q==} + cpu: [x64] + os: [linux] + + '@opentui/core-linux-x64@0.4.5': + resolution: {integrity: sha512-SNyuQoxMKI1vuJhgxSSW96adWM6LqFl2SoS3GM4tGeneGOanVVG2Y06PvlytXvF4cKik97t0rqkVMRetmOs93w==} + cpu: [x64] + os: [linux] + + '@opentui/core-win32-arm64@0.4.5': + resolution: {integrity: sha512-GHTTsqeR45q2Iek9Rb7ty+x/hAKn2jZ1ujlCgPR8LBKyF7h0E1dNFryoZ7ehMc3kJndP1sKn836IemKFqxuDdQ==} + cpu: [arm64] + os: [win32] + + '@opentui/core-win32-x64@0.4.5': + resolution: {integrity: sha512-Y8T/yXCDGagRGiQrtmuB6AhRcPucKFs/Dre3v8kJwNYqDccI4FzUPKclZ7djfmRZNjl7JUqPhZZP/PwDpQocMg==} + cpu: [x64] + os: [win32] + + '@opentui/core@0.4.5': + resolution: {integrity: sha512-JsgRTPkA6e+Vxmumxai6SElOSlRQkbzNKHlCfemlArRiLhfC1IZ9RXJo2QH4xSu+uBOWAM90uss73/pPlkdEig==} + peerDependencies: + web-tree-sitter: 0.25.10 + + '@opentui/react@0.4.5': + resolution: {integrity: sha512-n88Vx0cMmAu++/S14WscjvdcT46IDcxve02jMtcfHQ9j6cySRHfILfGEpOB7xxc8RpCwQceEyOjkKkfzPzm6Jg==} + peerDependencies: + react: '>=19.2.0' + react-devtools-core: ^7.0.1 + ws: ^8.18.0 + '@oxc-project/types@0.132.0': resolution: {integrity: sha512-FESMOxil5Se014ui/Eq8fT5uHJo6nIRwH0PfJrZJXs6Gek3ZVFOrpUv3YIZT20m+extU98Hg1Ym72U58rlsxUQ==} @@ -3295,6 +3731,36 @@ packages: resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} engines: {node: '>= 10.0.0'} + '@pierre/diffs@1.3.1': + resolution: {integrity: sha512-jSAm+Rybo7milxGg7ps7KjM3QZl2exhE9uYjQ4RSCdPNa9GS0mD4vBP99MoFhV95bLDKL1KSMdy0596BMLUacw==} + peerDependencies: + react: ^18.3.1 || ^19.0.0 + react-dom: ^18.3.1 || ^19.0.0 + + '@pierre/theme@2.0.0': + resolution: {integrity: sha512-yNDd9GYLQl1mEUJR8AneJ5e4ohLIHQd/wZLWr4fagt78vS2RwwZNW530vVgHqXFAyFVcFlRmGUD5ramXH46OXw==} + engines: {vscode: ^1.0.0} + + '@pierre/theming@1.0.0': + resolution: {integrity: sha512-WsdrnhKfjeyXGDikZmN9pkpeZ5S/cl6EE72feiSc0tlynT1tMYqXqouhuv/foK+PY9OEnebOAVRQn3+rAstR8g==} + peerDependencies: + '@pierre/theme': ^1.1.0 + '@shikijs/themes': ^3.0.0 || ^4.0.0 + react: ^18.3.1 || ^19.0.0 + react-dom: ^18.3.1 || ^19.0.0 + shiki: ^3.0.0 || ^4.0.0 + peerDependenciesMeta: + '@pierre/theme': + optional: true + '@shikijs/themes': + optional: true + react: + optional: true + react-dom: + optional: true + shiki: + optional: true + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -3343,5812 +3809,15346 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@rolldown/binding-android-arm64@1.0.2': - resolution: {integrity: sha512-ZS4D1JPGn/MYQN/SYDWftIE/nVsM8j/AFOYEzAoOE2O3NktQOZru+/vYXGbR/qtdLdIfGCP0lcoJiYVzsEz+iQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [android] - - '@rolldown/binding-darwin-arm64@1.0.2': - resolution: {integrity: sha512-vdFA9+C/rekyGce7WqHs/xoT0ioZEWaOFyZLIV1mEeNFaFDUQrPIo8Vs2GvJ6eetb3rzDUtUBgzto3ExpXJB3w==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [darwin] + '@radix-ui/number@1.1.3': + resolution: {integrity: sha512-Road2bidD0uu/1BGDOWNdPI06g0lIRy6IF9GZcIrDK2KGItfor8IQwQa+yM2ERgHM1MmHxaxpTzk0/Jp42lNfA==} - '@rolldown/binding-darwin-x64@1.0.2': - resolution: {integrity: sha512-BewSOwTHazv77DTYiAZXSqqKZ4KP/KonFisDMVU7PImxoWfB2aepnPhd2E4SWz3zDzYgDNbs6jBmTdgNnF02GA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [darwin] + '@radix-ui/primitive@1.1.7': + resolution: {integrity: sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q==} - '@rolldown/binding-freebsd-x64@1.0.2': - resolution: {integrity: sha512-m41o7M0YWtUdqk61Tb+jnKb2rN++iRdIASlExkUoKfIAH30DOHCB8fVLzSUpbWHHU8esmEioY62PxzexE8MBuA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [freebsd] + '@radix-ui/react-accessible-icon@1.1.15': + resolution: {integrity: sha512-WTQwcAvQf5sOcuUyi90lKPbhwcvQ+j55cjrSmeaN+L2vKU3DooOvlKw2MDeiJ5IkV5N905KW0/fGojKOBhD11A==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.2': - resolution: {integrity: sha512-jcojB9H7W/jS29pMKWAK1N+fU99vXodHDTatS3b3y/XSOCiHo0kkA74pL3jJmkoQtYpOCxDvaKs1fo2Ij/1X5w==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] + '@radix-ui/react-accordion@1.2.20': + resolution: {integrity: sha512-jDhG9FvAEnlhnjrsINbNXcUa4G+L1KqSkJSunkbKEzFRcAb52jvM0PjPxPRvhe1HNc5F5yc0yzzWeeqlH4yBIg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.2': - resolution: {integrity: sha512-1jn6qDU5iiOgFgygDzKUuKP0maTi0/f1+sBLgvij/76C77Nm3ts6ufz9Bjg5q5dduxiUIxtq86JIoBvo1xQ4Ig==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] + '@radix-ui/react-alert-dialog@1.1.23': + resolution: {integrity: sha512-VAYOiQRqj3GPpYJE0I9J+X8Ip05cyVlNdKOFeiGS2Ou1HHGfpl0BxOyZm6nmVDyU+W+NF3/XLzmjHmVGydhwgA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rolldown/binding-linux-arm64-musl@1.0.2': - resolution: {integrity: sha512-QVLO/czFMdoMFSqlX3bcswcJNm/23r+qoa/jgtmFc/qEp6/jXmIkDjF/XIo8dPfGaiwy1xfQn8o77L79GeXFgw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] + '@radix-ui/react-arrow@1.1.15': + resolution: {integrity: sha512-v4zggRcjadnI+ClKDuijlQEW4tw3NoaeHc/PwpKnLoLLKNUG4InLegkstooLcRIUWCs+8L22dGURCVuFfOKfnA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.2': - resolution: {integrity: sha512-hgO5Abm0w5UL6FEa2iFnZqo2KlK7TQ5QhV5x09hujBf7t5KzHQ1VmfPuTpqRy/rNlSxua3eWH374xxiVrP+lcA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ppc64] - os: [linux] + '@radix-ui/react-aspect-ratio@1.1.15': + resolution: {integrity: sha512-fy+dyVR+90nelK8rqIznFlxzx7uPcGbhxH8Nfr2bHb4UfSe+e3hklOC0luK0hDwVwnRX7xTRySpsrQVeW+/oNQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.2': - resolution: {integrity: sha512-fy8rXxuYEu602abC8MUNaPjYLIFzReOaEIEMKMUa0rFEUxNpVXhs15KSSQ4qlqSaM7B6rcj9rDZgADh/IGDzLQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [s390x] - os: [linux] + '@radix-ui/react-avatar@1.2.6': + resolution: {integrity: sha512-4ULOTJ/mqy2hT9GlWa/MFHxHSvH3nJzHnZM1waNsc5Bonv7i70aNenghXmD97S6OJ81ekXONGGt4nT1r0PfEdA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rolldown/binding-linux-x64-gnu@1.0.2': - resolution: {integrity: sha512-0+bOkiQ779+r1WpoHOWHqncvyySci0vKph+myNDYb+im6meJAzHQXay6oEgnkHuUGouM1LKTZwqKpBow6Kj7CQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] + '@radix-ui/react-checkbox@1.3.11': + resolution: {integrity: sha512-Gnptr9pDDQxD3hgq2dtPbtrp/c2qH1mBwIzw3X/ivrMb2e1t0jMTi606fVEqFPaQR1ggXIVQWKj3P2WW9v7zGQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rolldown/binding-linux-x64-musl@1.0.2': - resolution: {integrity: sha512-mjSkrzZK5Qsl0a9d1JgILOiuZOSDTVdKENcSXBoqbzSrspLR/4/IRVDo5wd2GgZjNss/viBFJdeq+j7qH2nypw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] + '@radix-ui/react-collapsible@1.1.20': + resolution: {integrity: sha512-mcGesGplBnzN2sbvJETzpCNfSMyPnb29q1GRLU+Ib7bJrpIG2ywmRoh2V5VbA2uNvKikKUlVbAPks7JDjz4A8Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rolldown/binding-openharmony-arm64@1.0.2': - resolution: {integrity: sha512-1v5vHasdfQAZoEHakBV72LIFAC9JjnymsiKxp+GEr/ma3+NJCPSaYK+qavInOovJkgwFrs7GccX2d6IgDA3Z5w==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [openharmony] + '@radix-ui/react-collection@1.1.15': + resolution: {integrity: sha512-9W+B9NPF0NaaPh/1NJd3+KqsnlLqU9H7T2rvww+fp+T/evVXdNAyYcnfRQZFOjkR1ajQp3yORlqnI8soawLvNA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rolldown/binding-wasm32-wasi@1.0.2': - resolution: {integrity: sha512-mb1VobWn6NheziTk5/WEaR6AKVbrwT5sOi6C7zk3gy/pD1qtJfU1j4PgTo2NJnOtbL9Dl3Aeei8w9jJ7qC2jZQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [wasm32] + '@radix-ui/react-compose-refs@1.1.5': + resolution: {integrity: sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.2': - resolution: {integrity: sha512-SqKonF56vA/L2yHwHYcEp2P34URpOZ7d1fS635cTkpDnUtEGdUbhI6NzsPdqeSWvAAeGDrxjWjNmibDIdFf9/A==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [win32] + '@radix-ui/react-context-menu@2.3.7': + resolution: {integrity: sha512-CtXP35dxaB5T3zXSd+E3uHe/QpXcpYnZmxp6OaIbfthtfW4wyb77M23BG+bwIJDtsMwEP/YssdsmNyZu7jhWew==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rolldown/binding-win32-x64-msvc@1.0.2': - resolution: {integrity: sha512-v7qRI7gXLRINcOGXt+7YmAZ6iFuyZVMIoXAxhd8oP+DR9dLfL9GfNIx7PLMxmhZdvq8waUJBQiWN9EKNy+TRBQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [win32] + '@radix-ui/react-context@1.2.2': + resolution: {integrity: sha512-RHCUGwKHDr0hDGg4X7ma4JG4/+12qxw8rkh5QKdDldlCvtja6nUx1Ef/8HVrJze81lEsgLQlqjzjGNHantgnQA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@rolldown/pluginutils@1.0.1': - resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + '@radix-ui/react-dialog@1.1.23': + resolution: {integrity: sha512-Ksw4WeROkO4rC9k/onilX/Ao2Cr1ku1unMNH+XSCcP4jSXYu7HDsg9n4ojMjVb22XpYjAQ9qfrFlVbru1vXDUA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-android-arm-eabi@4.60.2': - resolution: {integrity: sha512-dnlp69efPPg6Uaw2dVqzWRfAWRnYVb1XJ8CyyhIbZeaq4CA5/mLeZ1IEt9QqQxmbdvagjLIm2ZL8BxXv5lH4Yw==} - cpu: [arm] - os: [android] + '@radix-ui/react-direction@1.1.4': + resolution: {integrity: sha512-5pzg4FGQNpExhnhT2zlrP1wZFaYCd1K0nYWoFAdcYoYK868IEigqMX3B3f8yIoRlAhAeDWciLI6ZdCKHF9P4Vg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@rollup/rollup-android-arm64@4.60.2': - resolution: {integrity: sha512-OqZTwDRDchGRHHm/hwLOL7uVPB9aUvI0am/eQuWMNyFHf5PSEQmyEeYYheA0EPPKUO/l0uigCp+iaTjoLjVoHg==} - cpu: [arm64] - os: [android] + '@radix-ui/react-dismissable-layer@1.1.19': + resolution: {integrity: sha512-8g4pfOL9HoKKLWGiypT+dphVqjFfmcXO5GBnhsG6zI+lxAx/8feQpr+1LSN8Re3hiZ+XkLNS4O9ztK11/LzQ6w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-darwin-arm64@4.60.2': - resolution: {integrity: sha512-UwRE7CGpvSVEQS8gUMBe1uADWjNnVgP3Iusyda1nSRwNDCsRjnGc7w6El6WLQsXmZTbLZx9cecegumcitNfpmA==} - cpu: [arm64] - os: [darwin] + '@radix-ui/react-dropdown-menu@2.1.24': + resolution: {integrity: sha512-geq8l2rJkxvkXsT9RMgtUE3P8pITFpTsvYpbySi1IH4fZEABD/Gp85myayFgxk0ktljGMJnCbeFkyTusvSvv7g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-darwin-x64@4.60.2': - resolution: {integrity: sha512-gjEtURKLCC5VXm1I+2i1u9OhxFsKAQJKTVB8WvDAHF+oZlq0GTVFOlTlO1q3AlCTE/DF32c16ESvfgqR7343/g==} - cpu: [x64] - os: [darwin] + '@radix-ui/react-focus-guards@1.1.6': + resolution: {integrity: sha512-RNOJjfZMTyBM6xYmV3IVGXkPjIhcBAuv48POevAXwrGJhkWZ9p1rFoIS1JFooPuT193AZmRsCPhpoVJxx6OPoQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@rollup/rollup-freebsd-arm64@4.60.2': - resolution: {integrity: sha512-Bcl6CYDeAgE70cqZaMojOi/eK63h5Me97ZqAQoh77VPjMysA/4ORQBRGo3rRy45x4MzVlU9uZxs8Uwy7ZaKnBw==} - cpu: [arm64] - os: [freebsd] + '@radix-ui/react-focus-scope@1.1.16': + resolution: {integrity: sha512-wmRZ2WWLvmt6KHy2rNPOdPUjwq5xOHY02+m+udwJTn0aNIox/rkskAvJTyTLGhPK6KgrUjlJUJpgmx/+wFiFIQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-freebsd-x64@4.60.2': - resolution: {integrity: sha512-LU+TPda3mAE2QB0/Hp5VyeKJivpC6+tlOXd1VMoXV/YFMvk/MNk5iXeBfB4MQGRWyOYVJ01625vjkr0Az98OJQ==} - cpu: [x64] - os: [freebsd] + '@radix-ui/react-form@0.1.16': + resolution: {integrity: sha512-Q4TLEn2A7TAypxwmd6R9EwrlXDvkfYSDMrq9/887AXAGh+G1rH+kYJKSTv+Si9Y0JPKTwKYv6PviAJosysNimA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.60.2': - resolution: {integrity: sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==} - cpu: [arm] - os: [linux] + '@radix-ui/react-hover-card@1.1.23': + resolution: {integrity: sha512-H8qONfZd3ltrU3+jHCIgITbWo6e1iTKvP9DHdrvYbX48ooRM5FjEDTn16AMwdfuOGkWdZEhpl3PLL/Wk/AnHDQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-linux-arm-musleabihf@4.60.2': - resolution: {integrity: sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==} - cpu: [arm] - os: [linux] + '@radix-ui/react-id@1.1.4': + resolution: {integrity: sha512-TMQp2llA+RYn7JcjnrMnz7wN4pcVttPZnRZo52PLQsoLVKzNlVwUeHmfePgTgRluXFvlD3GD5g5MOVVTJCO0qA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@rollup/rollup-linux-arm64-gnu@4.60.2': - resolution: {integrity: sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==} - cpu: [arm64] - os: [linux] + '@radix-ui/react-label@2.1.15': + resolution: {integrity: sha512-o/rdYEwZTTo5tjknnPeyQFU45kUC4i/XyeDPP+HGyi6XqpOP6Zf5Ya5vh/Yfe9Id5JiuWnnAx2XqIeD3UYZt0g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-linux-arm64-musl@4.60.2': - resolution: {integrity: sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==} - cpu: [arm64] - os: [linux] + '@radix-ui/react-menu@2.1.24': + resolution: {integrity: sha512-uW7RVuU6Lp/ZtfeY4b3kL32zccgEWvPv1+cf17ubYzHa9cL8AHokmk36cG/XEiH/smbQvumnieXX9j/e9RqJWA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-linux-loong64-gnu@4.60.2': - resolution: {integrity: sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==} - cpu: [loong64] - os: [linux] + '@radix-ui/react-menubar@1.1.24': + resolution: {integrity: sha512-eeVs0vf7cuqXaM0qLQCPcufImiJNVBXdJDLu7ZGYl2732UH23Qat/foNGrr6vYV3/DdTsBqASoggUFgH14OcZA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-linux-loong64-musl@4.60.2': - resolution: {integrity: sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==} - cpu: [loong64] - os: [linux] + '@radix-ui/react-navigation-menu@1.2.22': + resolution: {integrity: sha512-ou7iLEJ+yrhQndkkA4U21XIdS/CS45F4iXIkTZcb6/Ne9EMsOuDudVmCwmDnfFZZ+y1FZqXRNSIgBy+YMvZVZg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-linux-ppc64-gnu@4.60.2': - resolution: {integrity: sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==} - cpu: [ppc64] - os: [linux] + '@radix-ui/react-one-time-password-field@0.1.16': + resolution: {integrity: sha512-Tj9P6ntAJEw52oq/F0AGknXR4XncxEt7XU47O3xJQOiWfLzEy3d9gtgKfvjSzGxzHkfL+VzvxGu2KTFsloJqXw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-linux-ppc64-musl@4.60.2': - resolution: {integrity: sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==} - cpu: [ppc64] - os: [linux] + '@radix-ui/react-password-toggle-field@0.1.11': + resolution: {integrity: sha512-4gvFnmDXu3dgj21CqsufzIameRvlRd4SBqaWhcrlrNhRo0Y5i/49AmRJYe1fdAM3G2VNBbmin4b0D6cdQocwgw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-linux-riscv64-gnu@4.60.2': - resolution: {integrity: sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==} - cpu: [riscv64] - os: [linux] + '@radix-ui/react-popover@1.1.23': + resolution: {integrity: sha512-mw58MrBlyHWFisTOYignD0vf/3gdcgAR+9of1s9G/38CbFiUwH1nCDkc0AUM9IrXFgN5Ue8n45j9WCgyM1sbiQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-linux-riscv64-musl@4.60.2': - resolution: {integrity: sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==} - cpu: [riscv64] - os: [linux] + '@radix-ui/react-popper@1.3.7': + resolution: {integrity: sha512-UsJrrd7w4wuKKTdvd/DNERVlwSlUcyXzjhyDwBk+3aPOsCjOY6ZSbxuw8E6lZTjjfP8Cpd0J8VVkrYUWyGYXyg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-linux-s390x-gnu@4.60.2': - resolution: {integrity: sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==} - cpu: [s390x] - os: [linux] + '@radix-ui/react-portal@1.1.17': + resolution: {integrity: sha512-vKQLcWypUnwZVvfV7UkGahH2g6ySe8M8R+zYBwPrv5byZ9QAW6cQVvNKo7GgmD+p8aYb6D9JBuvy8/WhOno2wQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-linux-x64-gnu@4.60.2': - resolution: {integrity: sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==} - cpu: [x64] - os: [linux] + '@radix-ui/react-presence@1.1.10': + resolution: {integrity: sha512-3wyzCQ6+ubRA+D4uv9m95JYLXxmOHp05qjrkjeA7uKHHtjpPggQzc6DAb0URl7j67oR0K2foO4ip27TiX037Bw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-linux-x64-musl@4.60.2': - resolution: {integrity: sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==} - cpu: [x64] - os: [linux] + '@radix-ui/react-primitive@2.1.10': + resolution: {integrity: sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-openbsd-x64@4.60.2': - resolution: {integrity: sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==} - cpu: [x64] - os: [openbsd] + '@radix-ui/react-progress@1.1.16': + resolution: {integrity: sha512-5XnomAsoZZCY+KNTxbIghpGqPruZvKFNlvcAljVAOdDRDsH4/OZQxhtwo5wdtoDM5R6MhJBb2sPnDuRFep3lzg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-openharmony-arm64@4.60.2': - resolution: {integrity: sha512-NetAg5iO2uN7eB8zE5qrZ3CSil+7IJt4WDFLcC75Ymywq1VZVD6qJ6EvNLjZ3rEm6gB7XW5JdT60c6MN35Z85Q==} - cpu: [arm64] - os: [openharmony] + '@radix-ui/react-radio-group@1.4.7': + resolution: {integrity: sha512-cgYFEkntCxppHZgtSZ+7vh0wbZQ+IC7PPMw8DSnRG27B6kDd32/Zw0OJt7dGDigCoprMuWHjg2PvUn3PYvPFoQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-win32-arm64-msvc@4.60.2': - resolution: {integrity: sha512-NCYhOotpgWZ5kdxCZsv6Iudx0wX8980Q/oW4pNFNihpBKsDbEA1zpkfxJGC0yugsUuyDZ7gL37dbzwhR0VI7pQ==} - cpu: [arm64] - os: [win32] + '@radix-ui/react-roving-focus@1.1.19': + resolution: {integrity: sha512-V9jI6hDjT7l3jsCQD9bLNvDLM3tH/gdbOTp7Tefp3hbbgCGQoK7tUvrWiRlcoBHIZ809ElXwNQwVo0B98LuTXQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-win32-ia32-msvc@4.60.2': - resolution: {integrity: sha512-RXsaOqXxfoUBQoOgvmmijVxJnW2IGB0eoMO7F8FAjaj0UTywUO/luSqimWBJn04WNgUkeNhh7fs7pESXajWmkg==} - cpu: [ia32] - os: [win32] + '@radix-ui/react-scroll-area@1.2.18': + resolution: {integrity: sha512-Zn5Cd171wxsO3Dfg8HaW6RifTb9CYTKQJHs/G4+LN1GfmJpaQMZQyQxMprVPHpaz7QY4l9BxK2JwQuzHsXC8nA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-win32-x64-gnu@4.60.2': - resolution: {integrity: sha512-qdAzEULD+/hzObedtmV6iBpdL5TIbKVztGiK7O3/KYSf+HIzU257+MX1EXJcyIiDbMAqmbwaufcYPvyRryeZtA==} - cpu: [x64] - os: [win32] + '@radix-ui/react-select@2.3.7': + resolution: {integrity: sha512-WFGImkmbzcfxeIwq/+4HvRN0pizBwbwQUED4I13ezQsDdfl38ZntN6TmR8XaSzPBqoCToe8rF75j6NPNDSzhbg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@rollup/rollup-win32-x64-msvc@4.60.2': - resolution: {integrity: sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdmg1Z/DaCWKxA==} - cpu: [x64] - os: [win32] + '@radix-ui/react-separator@1.1.15': + resolution: {integrity: sha512-jOLO4lssEzWpoDu7G+Ze4VjwMRUBt291pnZD0gmalREZipnTX3wadQo7Fy48GCTfe14/YRN6rw/rOJqrE85Wxw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@sec-ant/readable-stream@0.4.1': - resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@radix-ui/react-slider@1.4.7': + resolution: {integrity: sha512-mTSLf1GC/C0moWjTbvCM6Qn/gBjvlFt1azuWF2v7MN5C3Zq2U2J2lN3ZEYkpujuOU5Ro7A28wkviSxaKnG0BYg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@seznam/compose-react-refs@1.0.6': - resolution: {integrity: sha512-izzOXQfeQLonzrIQb8u6LQ8dk+ymz3WXTIXjvOlTXHq6sbzROg3NWU+9TTAOpEoK9Bth24/6F/XrfHJ5yR5n6Q==} + '@radix-ui/react-slot@1.3.3': + resolution: {integrity: sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@silvia-odwyer/photon-node@0.3.4': - resolution: {integrity: sha512-bnly4BKB3KDTFxrUIcgCLbaeVVS8lrAkri1pEzskpmxu9MdfGQTy8b8EgcD83ywD3RPMsIulY8xJH5Awa+t9fA==} + '@radix-ui/react-switch@1.3.7': + resolution: {integrity: sha512-48tB/4dn2UVLBCYhTu9AuR63IHl73l/qLbLgxd86noTUor4/K4LFDAcYjK+isP5313qxaFpjPVogE7+Y0/V3Kw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@sinclair/typebox@0.34.49': - resolution: {integrity: sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==} + '@radix-ui/react-tabs@1.1.21': + resolution: {integrity: sha512-UKxJlZid7FVtsk/WTxj4i4uSEgj2Au+KBbS7SQyTlzMhhn+86Cz3tISZdTa87bfEfcuvZezf2ZsxD4xuEKtkog==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@sindresorhus/is@7.2.0': - resolution: {integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==} - engines: {node: '>=18'} + '@radix-ui/react-toast@1.2.23': + resolution: {integrity: sha512-ofhyAsYaocRGOs/n0XWdUOSVzEAG6BfrMVM8z0c0kLEWY38w/0WuMFPTJP/HVaZPYkMvHZoKIIhNcjbTCBILPg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@sindresorhus/merge-streams@4.0.0': - resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} - engines: {node: '>=18'} + '@radix-ui/react-toggle-group@1.1.19': + resolution: {integrity: sha512-OtnwuSVjd1Ofi+AdnvhsjQdyuhCDwYs1w9RyB5BN/OavXOVQo42SYqQjwUnbPnaiPFBpQ9aX70dWeee+v2oBLA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@smithy/config-resolver@4.4.17': - resolution: {integrity: sha512-TzDZcAnhTyAHbXVxWZo7/tEcrIeFq20IBk8So3OLOetWpR8EwY/yEqBMBFaJMeyEiREDq4NfEl+qO3OAUD+vbQ==} - engines: {node: '>=18.0.0'} + '@radix-ui/react-toggle@1.1.18': + resolution: {integrity: sha512-7lonPlKfSacd20GlOBx2ltuVKz9oqWYZz+oMQyOltw6t1y2nyftj2ZmwwUHYn49kqfDWcp8dNZm5NgV+5Z+mug==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@smithy/core@3.23.17': - resolution: {integrity: sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ==} - engines: {node: '>=18.0.0'} + '@radix-ui/react-toolbar@1.1.19': + resolution: {integrity: sha512-Ph0IvtYw4VB12ZnZg+YtrGs8yJQsnizwo/zu0R4Y/nWugtJzA7Pg1eWeuDR9+LSqn+xjamss+UOSOJJJ4gx8jw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@smithy/core@3.24.6': - resolution: {integrity: sha512-wBXDRup6UU97VKyaiRo8AssnfStPtG0oAAfpq/bC0a1YYau8pM86YB4kM6ccoVi1mS8l/UHbn9oDM+7uozr/ug==} - engines: {node: '>=18.0.0'} + '@radix-ui/react-tooltip@1.2.16': + resolution: {integrity: sha512-6EamKFRRnlpdadndbZ6LMwycfwkwPte1B42hs6QA0gYhjaOKqW4PZ4pjaW9UrlDX5eVt/OjncE7BFTPL5nmZhg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@smithy/credential-provider-imds@4.2.14': - resolution: {integrity: sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg==} - engines: {node: '>=18.0.0'} + '@radix-ui/react-use-callback-ref@1.1.4': + resolution: {integrity: sha512-R6OUY2e2fA6Yn6s+VSx5KBV6Nx8LQEhu+cz7LCej18rQ1HLyg9PSC9jP/ZNx0o6FAIK9c0F1kHylzSxKsdlkrQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/credential-provider-imds@4.3.7': - resolution: {integrity: sha512-xj8gq/bjFABAh6qWPSDCYcY3kzQIm4b561C+YnHH4zGq8rOgzQ3Shk+JGlpUxSd41UGiO6FkLdUCtNX1FAeHgg==} - engines: {node: '>=18.0.0'} + '@radix-ui/react-use-controllable-state@1.2.6': + resolution: {integrity: sha512-uEQJGT97ZA/TgP/Hydw47lHu+/vQj6z/0jA+WeTbK1o9Rx45GImjpD0tc3W5ad3D6XTSR6e1yEO0FvGq6WQfVQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/eventstream-codec@4.2.14': - resolution: {integrity: sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw==} - engines: {node: '>=18.0.0'} + '@radix-ui/react-use-effect-event@0.0.5': + resolution: {integrity: sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/eventstream-serde-browser@4.2.14': - resolution: {integrity: sha512-8IelTCtTctWRbb+0Dcy+C0aICh1qa0qWXqgjcXDmMuCvPJRnv26hiDZoAau2ILOniki65mCPKqOQs/BaWvO4CQ==} - engines: {node: '>=18.0.0'} + '@radix-ui/react-use-escape-keydown@1.1.5': + resolution: {integrity: sha512-ge3ipobwSXTj4JyVtswQ7qZj0ZHdtbGuOno/LrgAAeSxtsJ6Vs4Gz5IkPH2bmqpjcLUFoqGhA/mueuIf63UXlA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/eventstream-serde-config-resolver@4.3.14': - resolution: {integrity: sha512-sqHiHpYRYo3FJlaIxD1J8PhbcmJAm7IuM16mVnwSkCToD7g00IBZzKuiLNMGmftULmEUX6/UAz8/NN5uMP8bVA==} - engines: {node: '>=18.0.0'} + '@radix-ui/react-use-is-hydrated@0.1.3': + resolution: {integrity: sha512-umO/aJ+82CpOnhDZUTbILCQf7kU/g0iv+oGs/Q8jw7IkhWBzaEP4sA268PhFAJTFetbwp3ICc6ktpI4TqtxcIw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/eventstream-serde-node@4.2.14': - resolution: {integrity: sha512-Ht/8BuGlKfFTy0H3+8eEu0vdpwGztCnaLLXtpXNdQqiR7Hj4vFScU3T436vRAjATglOIPjJXronY+1WxxNLSiw==} - engines: {node: '>=18.0.0'} + '@radix-ui/react-use-layout-effect@1.1.4': + resolution: {integrity: sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/eventstream-serde-universal@4.2.14': - resolution: {integrity: sha512-lWyt4T2XQZUZgK3tQ3Wn0w3XBvZsK/vjTuJl6bXbnGZBHH0ZUSONTYiK9TgjTTzU54xQr3DRFwpjmhp0oLm3gg==} - engines: {node: '>=18.0.0'} + '@radix-ui/react-use-previous@1.1.4': + resolution: {integrity: sha512-XoSLhbRbqxFtgJoi2fNHA3C6pDlY34x508vUpUGoFZfvePfHXHbE1lC4FYFMnJWgiCRroSTw6fOsXQoVS9RwZg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/fetch-http-handler@5.3.17': - resolution: {integrity: sha512-bXOvQzaSm6MnmLaWA1elgfQcAtN4UP3vXqV97bHuoOrHQOJiLT3ds6o9eo5bqd0TJfRFpzdGnDQdW3FACiAVdw==} - engines: {node: '>=18.0.0'} + '@radix-ui/react-use-rect@1.1.4': + resolution: {integrity: sha512-cSOCh6JlkmfjLyNcLiu2nB4v+nm+dkZ+Q5KHWk/soo4U7ZLiEQFKHK9/YmtBHjfCEaU43IBKQOc4/uJmCaiCTQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/fetch-http-handler@5.4.6': - resolution: {integrity: sha512-FEwEYJ1jlBKdhe9TPzfghEi1bP55ZeEImlDkEa62bBBYzUcnB6RUCyuiS2mqKt6ZVjUbBgcNhzfIctH+Hevx9g==} - engines: {node: '>=18.0.0'} + '@radix-ui/react-use-size@1.1.4': + resolution: {integrity: sha512-D3anSY15EJoxrihpsXI6SMrmmonnQtR2ni7arO+Lfdg3O95b9hNXxONk8jA5C8ANdF/h5HMAxejgs8PWJ6rlhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@smithy/hash-node@4.2.14': - resolution: {integrity: sha512-8ZBDY2DD4wr+GGjTpPtiglEsqr0lUP+KHqgZcWczFf6qeZ/YRjMIOoQWVQlmwu7EtxKTd8YXD8lblmYcpBIA1g==} - engines: {node: '>=18.0.0'} + '@radix-ui/react-visually-hidden@1.2.11': + resolution: {integrity: sha512-NFS86RYYZb4/exihaESBGOpMJFz8MGLAfu3mOBSGByVnVPC9JPASfYubxd/8KbkQK0sYAv8lVQDEQukDX/qXvQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@smithy/invalid-dependency@4.2.14': - resolution: {integrity: sha512-c21qJiTSb25xvvOp+H2TNZzPCngrvl5vIPqPB8zQ/DmJF4QWXO19x1dWfMJZ6wZuuWUPPm0gV8C0cU3+ifcWuw==} - engines: {node: '>=18.0.0'} + '@radix-ui/rect@1.1.3': + resolution: {integrity: sha512-JtyZR+mqgBibTo8xea3B6ZRmzZiM/YeVBtUkas6zMuXjAlfIFIW2FgqeM9eLyvEaYX66vr6DJMK+4U6LV0KhNw==} - '@smithy/is-array-buffer@2.2.0': - resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} - engines: {node: '>=14.0.0'} + '@reduxjs/toolkit@2.12.0': + resolution: {integrity: sha512-KiT+RzZbp6mQET+Mg+h2c97+9j1sNflUxQkIHI7Yuzf6Peu+OYpmkn6nbHWmLLWj+1ZODUJFwGZ7gx3L9R9EOw==} + peerDependencies: + react: ^16.9.0 || ^17.0.0 || ^18 || ^19 + react-redux: ^7.2.1 || ^8.1.3 || ^9.0.0 + peerDependenciesMeta: + react: + optional: true + react-redux: + optional: true - '@smithy/is-array-buffer@4.2.2': - resolution: {integrity: sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==} - engines: {node: '>=18.0.0'} + '@rolldown/binding-android-arm64@1.0.2': + resolution: {integrity: sha512-ZS4D1JPGn/MYQN/SYDWftIE/nVsM8j/AFOYEzAoOE2O3NktQOZru+/vYXGbR/qtdLdIfGCP0lcoJiYVzsEz+iQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] - '@smithy/middleware-content-length@4.2.14': - resolution: {integrity: sha512-xhHq7fX4/3lv5NHxLUk3OeEvl0xZ+Ek3qIbWaCL4f9JwgDZEclPBElljaZCAItdGPQl/kSM4LPMOpy1MYgprpw==} - engines: {node: '>=18.0.0'} + '@rolldown/binding-darwin-arm64@1.0.2': + resolution: {integrity: sha512-vdFA9+C/rekyGce7WqHs/xoT0ioZEWaOFyZLIV1mEeNFaFDUQrPIo8Vs2GvJ6eetb3rzDUtUBgzto3ExpXJB3w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] - '@smithy/middleware-endpoint@4.4.32': - resolution: {integrity: sha512-ZZkgyjnJppiZbIm6Qbx92pbXYi1uzenIvGhBSCDlc7NwuAkiqSgS75j1czAD25ZLs2FjMjYy1q7gyRVWG6JA0Q==} - engines: {node: '>=18.0.0'} + '@rolldown/binding-darwin-x64@1.0.2': + resolution: {integrity: sha512-BewSOwTHazv77DTYiAZXSqqKZ4KP/KonFisDMVU7PImxoWfB2aepnPhd2E4SWz3zDzYgDNbs6jBmTdgNnF02GA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] - '@smithy/middleware-retry@4.5.5': - resolution: {integrity: sha512-wnYOpB5vATFKWrY2Z9Alb0KhjZI6AbzU6Fbz3Hq2GnURdRYWB4q+qWivQtSTwXcmWUA3MZ6krfwL6Cq5MAbxsA==} - engines: {node: '>=18.0.0'} + '@rolldown/binding-freebsd-x64@1.0.2': + resolution: {integrity: sha512-m41o7M0YWtUdqk61Tb+jnKb2rN++iRdIASlExkUoKfIAH30DOHCB8fVLzSUpbWHHU8esmEioY62PxzexE8MBuA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] - '@smithy/middleware-serde@4.2.20': - resolution: {integrity: sha512-Lx9JMO9vArPtiChE3wbEZ5akMIDQpWQtlu90lhACQmNOXcGXRbaDywMHDzuDZ2OkZzP+9wQfZi3YJT9F67zTQQ==} - engines: {node: '>=18.0.0'} + '@rolldown/binding-linux-arm-gnueabihf@1.0.2': + resolution: {integrity: sha512-jcojB9H7W/jS29pMKWAK1N+fU99vXodHDTatS3b3y/XSOCiHo0kkA74pL3jJmkoQtYpOCxDvaKs1fo2Ij/1X5w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] - '@smithy/middleware-stack@4.2.14': - resolution: {integrity: sha512-2dvkUKLuFdKsCRmOE4Mn63co0Djtsm+JMh0bYZQupN1pJwMeE8FmQmRLLzzEMN0dnNi7CDCYYH8F0EVwWiPBeA==} - engines: {node: '>=18.0.0'} + '@rolldown/binding-linux-arm64-gnu@1.0.2': + resolution: {integrity: sha512-1jn6qDU5iiOgFgygDzKUuKP0maTi0/f1+sBLgvij/76C77Nm3ts6ufz9Bjg5q5dduxiUIxtq86JIoBvo1xQ4Ig==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] - '@smithy/node-config-provider@4.3.14': - resolution: {integrity: sha512-S+gFjyo/weSVL0P1b9Ts8C/CwIfNCgUPikk3sl6QVsfE/uUuO+QsF+NsE/JkpvWqqyz1wg7HFdiaZuj5CoBMRg==} - engines: {node: '>=18.0.0'} + '@rolldown/binding-linux-arm64-musl@1.0.2': + resolution: {integrity: sha512-QVLO/czFMdoMFSqlX3bcswcJNm/23r+qoa/jgtmFc/qEp6/jXmIkDjF/XIo8dPfGaiwy1xfQn8o77L79GeXFgw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] - '@smithy/node-http-handler@4.6.1': - resolution: {integrity: sha512-iB+orM4x3xrr57X3YaXazfKnntl0LHlZB1kcXSGzMV1Tt0+YwEjGlbjk/44qEGtBzXAz6yFDzkYTKSV6Pj2HUg==} - engines: {node: '>=18.0.0'} + '@rolldown/binding-linux-ppc64-gnu@1.0.2': + resolution: {integrity: sha512-hgO5Abm0w5UL6FEa2iFnZqo2KlK7TQ5QhV5x09hujBf7t5KzHQ1VmfPuTpqRy/rNlSxua3eWH374xxiVrP+lcA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] - '@smithy/node-http-handler@4.7.6': - resolution: {integrity: sha512-3fya8i7GrJilQouk4cZJKdy5k8MWQBpjfXrRNaXDedH8r779tr0jcxyH3+yoTmsluc2+vF4S343yFbnvu8ExDQ==} - engines: {node: '>=18.0.0'} + '@rolldown/binding-linux-s390x-gnu@1.0.2': + resolution: {integrity: sha512-fy8rXxuYEu602abC8MUNaPjYLIFzReOaEIEMKMUa0rFEUxNpVXhs15KSSQ4qlqSaM7B6rcj9rDZgADh/IGDzLQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] - '@smithy/property-provider@4.2.14': - resolution: {integrity: sha512-WuM31CgfsnQ/10i7NYr0PyxqknD72Y5uMfUMVSniPjbEPceiTErb4eIqJQ+pdxNEAUEWrewrGjIRjVbVHsxZiQ==} - engines: {node: '>=18.0.0'} + '@rolldown/binding-linux-x64-gnu@1.0.2': + resolution: {integrity: sha512-0+bOkiQ779+r1WpoHOWHqncvyySci0vKph+myNDYb+im6meJAzHQXay6oEgnkHuUGouM1LKTZwqKpBow6Kj7CQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] - '@smithy/protocol-http@5.3.14': - resolution: {integrity: sha512-dN5F8kHx8RNU0r+pCwNmFZyz6ChjMkzShy/zup6MtkRmmix4vZzJdW+di7x//b1LiynIev88FM18ie+wwPcQtQ==} - engines: {node: '>=18.0.0'} + '@rolldown/binding-linux-x64-musl@1.0.2': + resolution: {integrity: sha512-mjSkrzZK5Qsl0a9d1JgILOiuZOSDTVdKENcSXBoqbzSrspLR/4/IRVDo5wd2GgZjNss/viBFJdeq+j7qH2nypw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] - '@smithy/querystring-builder@4.2.14': - resolution: {integrity: sha512-XYA5Z0IqTeF+5XDdh4BBmSA0HvbgVZIyv4cmOoUheDNR57K1HgBp9ukUMx3Cr3XpDHHpLBnexPE3LAtDsZkj2A==} - engines: {node: '>=18.0.0'} + '@rolldown/binding-openharmony-arm64@1.0.2': + resolution: {integrity: sha512-1v5vHasdfQAZoEHakBV72LIFAC9JjnymsiKxp+GEr/ma3+NJCPSaYK+qavInOovJkgwFrs7GccX2d6IgDA3Z5w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] - '@smithy/querystring-parser@4.2.14': - resolution: {integrity: sha512-hr+YyqBD23GVvRxGGrcc/oOeNlK3PzT5Fu4dzrDXxzS1LpFiuL2PQQqKPs87M79aW7ziMs+nvB3qdw77SqE7Lw==} - engines: {node: '>=18.0.0'} + '@rolldown/binding-wasm32-wasi@1.0.2': + resolution: {integrity: sha512-mb1VobWn6NheziTk5/WEaR6AKVbrwT5sOi6C7zk3gy/pD1qtJfU1j4PgTo2NJnOtbL9Dl3Aeei8w9jJ7qC2jZQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] - '@smithy/service-error-classification@4.3.0': - resolution: {integrity: sha512-9jKsBYQRPR0xBLgc2415RsA5PIcP2sis4oBdN9s0D13cg1B1284mNTjx9Yc+BEERXzuPm5ObktI96OxsKh8E9A==} - engines: {node: '>=18.0.0'} + '@rolldown/binding-win32-arm64-msvc@1.0.2': + resolution: {integrity: sha512-SqKonF56vA/L2yHwHYcEp2P34URpOZ7d1fS635cTkpDnUtEGdUbhI6NzsPdqeSWvAAeGDrxjWjNmibDIdFf9/A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] - '@smithy/shared-ini-file-loader@4.4.9': - resolution: {integrity: sha512-495/V2I15SHgedSJoDPD23JuSfKAp726ZI1V0wtjB07Wh7q/0tri/0e0DLefZCHgxZonrGKt/OCTpAtP1wE1kQ==} - engines: {node: '>=18.0.0'} + '@rolldown/binding-win32-x64-msvc@1.0.2': + resolution: {integrity: sha512-v7qRI7gXLRINcOGXt+7YmAZ6iFuyZVMIoXAxhd8oP+DR9dLfL9GfNIx7PLMxmhZdvq8waUJBQiWN9EKNy+TRBQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] - '@smithy/signature-v4@5.3.14': - resolution: {integrity: sha512-1D9Y/nmlVjCeSivCbhZ7hgEpmHyY1h0GvpSZt3l0xcD9JjmjVC1CHOozS6+Gh+/ldMH8JuJ6cujObQqfayAVFA==} - engines: {node: '>=18.0.0'} + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@smithy/signature-v4@5.4.6': - resolution: {integrity: sha512-Ojg4B6oIDlIr1R86xCDJt1zJWnYa0VINmqdjfe9qxWjdRivHalZ3iSlQgVqYbW0MdpFOC5XfHEWsnbmdnpIILQ==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-android-arm-eabi@4.60.2': + resolution: {integrity: sha512-dnlp69efPPg6Uaw2dVqzWRfAWRnYVb1XJ8CyyhIbZeaq4CA5/mLeZ1IEt9QqQxmbdvagjLIm2ZL8BxXv5lH4Yw==} + cpu: [arm] + os: [android] - '@smithy/smithy-client@4.12.13': - resolution: {integrity: sha512-y/Pcj1V9+qG98gyu1gvftHB7rDpdh+7kIBIggs55yGm3JdtBV8GT8IFF3a1qxZ79QnaJHX9GXzvBG6tAd+czJA==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-android-arm64@4.60.2': + resolution: {integrity: sha512-OqZTwDRDchGRHHm/hwLOL7uVPB9aUvI0am/eQuWMNyFHf5PSEQmyEeYYheA0EPPKUO/l0uigCp+iaTjoLjVoHg==} + cpu: [arm64] + os: [android] - '@smithy/types@4.14.1': - resolution: {integrity: sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-darwin-arm64@4.60.2': + resolution: {integrity: sha512-UwRE7CGpvSVEQS8gUMBe1uADWjNnVgP3Iusyda1nSRwNDCsRjnGc7w6El6WLQsXmZTbLZx9cecegumcitNfpmA==} + cpu: [arm64] + os: [darwin] - '@smithy/types@4.14.3': - resolution: {integrity: sha512-YupL0ZWmFtJexUN2cHzkvvF/b9pKrtAIfT1o7/oY/Ppu8IYeZ+lDPM5vZdQJaSeA132dJCqojjGC9NhXeF71VQ==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-darwin-x64@4.60.2': + resolution: {integrity: sha512-gjEtURKLCC5VXm1I+2i1u9OhxFsKAQJKTVB8WvDAHF+oZlq0GTVFOlTlO1q3AlCTE/DF32c16ESvfgqR7343/g==} + cpu: [x64] + os: [darwin] - '@smithy/url-parser@4.2.14': - resolution: {integrity: sha512-p06BiBigJ8bTA3MgnOfCtDUWnAMY0YfedO/GRpmc7p+wg3KW8vbXy1xwSu5ASy0wV7rRYtlfZOIKH4XqfhjSQQ==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-freebsd-arm64@4.60.2': + resolution: {integrity: sha512-Bcl6CYDeAgE70cqZaMojOi/eK63h5Me97ZqAQoh77VPjMysA/4ORQBRGo3rRy45x4MzVlU9uZxs8Uwy7ZaKnBw==} + cpu: [arm64] + os: [freebsd] - '@smithy/util-base64@4.3.2': - resolution: {integrity: sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-freebsd-x64@4.60.2': + resolution: {integrity: sha512-LU+TPda3mAE2QB0/Hp5VyeKJivpC6+tlOXd1VMoXV/YFMvk/MNk5iXeBfB4MQGRWyOYVJ01625vjkr0Az98OJQ==} + cpu: [x64] + os: [freebsd] - '@smithy/util-body-length-browser@4.2.2': - resolution: {integrity: sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-linux-arm-gnueabihf@4.60.2': + resolution: {integrity: sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==} + cpu: [arm] + os: [linux] - '@smithy/util-body-length-node@4.2.3': - resolution: {integrity: sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-linux-arm-musleabihf@4.60.2': + resolution: {integrity: sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==} + cpu: [arm] + os: [linux] - '@smithy/util-buffer-from@2.2.0': - resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} - engines: {node: '>=14.0.0'} + '@rollup/rollup-linux-arm64-gnu@4.60.2': + resolution: {integrity: sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==} + cpu: [arm64] + os: [linux] - '@smithy/util-buffer-from@4.2.2': - resolution: {integrity: sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-linux-arm64-musl@4.60.2': + resolution: {integrity: sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==} + cpu: [arm64] + os: [linux] - '@smithy/util-config-provider@4.2.2': - resolution: {integrity: sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-linux-loong64-gnu@4.60.2': + resolution: {integrity: sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==} + cpu: [loong64] + os: [linux] - '@smithy/util-defaults-mode-browser@4.3.49': - resolution: {integrity: sha512-a5bNrdiONYB/qE2BuKegvUMd/+ZDwdg4vsNuuSzYE8qs2EYAdK9CynL+Rzn29PbPiUqoz/cbpRbcLzD5lEevHw==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-linux-loong64-musl@4.60.2': + resolution: {integrity: sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==} + cpu: [loong64] + os: [linux] - '@smithy/util-defaults-mode-node@4.2.54': - resolution: {integrity: sha512-g1cvrJvOnzeJgEdf7AE4luI7gp6L8weE0y9a9wQUSGtjb8QRHDbCJYuE4Sy0SD9N8RrnNPFsPltAz/OSoBR9Zw==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-linux-ppc64-gnu@4.60.2': + resolution: {integrity: sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==} + cpu: [ppc64] + os: [linux] - '@smithy/util-endpoints@3.4.2': - resolution: {integrity: sha512-a55Tr+3OKld4TTtnT+RhKOQHyPxm3j/xL4OR83WBUhLJaKDS9dnJ7arRMOp3t31dcLhApwG9bgvrRXBHlLdIkg==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-linux-ppc64-musl@4.60.2': + resolution: {integrity: sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==} + cpu: [ppc64] + os: [linux] - '@smithy/util-hex-encoding@4.2.2': - resolution: {integrity: sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-linux-riscv64-gnu@4.60.2': + resolution: {integrity: sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==} + cpu: [riscv64] + os: [linux] - '@smithy/util-middleware@4.2.14': - resolution: {integrity: sha512-1Su2vj9RYNDEv/V+2E+jXkkwGsgR7dc4sfHn9Z7ruzQHJIEni9zzw5CauvRXlFJfmgcqYP8fWa0dkh2Q2YaQyw==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-linux-riscv64-musl@4.60.2': + resolution: {integrity: sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==} + cpu: [riscv64] + os: [linux] - '@smithy/util-retry@4.3.4': - resolution: {integrity: sha512-FY1UQQ1VFmMwiYp1GVS4MeaGD5O0blLNYK0xCRHU+mJgeoH/hSY8Ld8sJWKQ6uznkh14HveRGQJncgPyNl9J+A==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-linux-s390x-gnu@4.60.2': + resolution: {integrity: sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==} + cpu: [s390x] + os: [linux] - '@smithy/util-stream@4.5.25': - resolution: {integrity: sha512-/PFpG4k8Ze8Ei+mMKj3oiPICYekthuzePZMgZbCqMiXIHHf4n2aZ4Ps0aSRShycFTGuj/J6XldmC0x0DwednIA==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-linux-x64-gnu@4.60.2': + resolution: {integrity: sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==} + cpu: [x64] + os: [linux] - '@smithy/util-uri-escape@4.2.2': - resolution: {integrity: sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-linux-x64-musl@4.60.2': + resolution: {integrity: sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==} + cpu: [x64] + os: [linux] - '@smithy/util-utf8@2.3.0': - resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} - engines: {node: '>=14.0.0'} + '@rollup/rollup-openbsd-x64@4.60.2': + resolution: {integrity: sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==} + cpu: [x64] + os: [openbsd] - '@smithy/util-utf8@4.2.2': - resolution: {integrity: sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-openharmony-arm64@4.60.2': + resolution: {integrity: sha512-NetAg5iO2uN7eB8zE5qrZ3CSil+7IJt4WDFLcC75Ymywq1VZVD6qJ6EvNLjZ3rEm6gB7XW5JdT60c6MN35Z85Q==} + cpu: [arm64] + os: [openharmony] - '@smithy/uuid@1.1.2': - resolution: {integrity: sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==} - engines: {node: '>=18.0.0'} + '@rollup/rollup-win32-arm64-msvc@4.60.2': + resolution: {integrity: sha512-NCYhOotpgWZ5kdxCZsv6Iudx0wX8980Q/oW4pNFNihpBKsDbEA1zpkfxJGC0yugsUuyDZ7gL37dbzwhR0VI7pQ==} + cpu: [arm64] + os: [win32] - '@speed-highlight/core@1.2.15': - resolution: {integrity: sha512-BMq1K3DsElxDWawkX6eLg9+CKJrTVGCBAWVuHXVUV2u0s2711qiChLSId6ikYPfxhdYocLNt3wWwSvDiTvFabw==} + '@rollup/rollup-win32-ia32-msvc@4.60.2': + resolution: {integrity: sha512-RXsaOqXxfoUBQoOgvmmijVxJnW2IGB0eoMO7F8FAjaj0UTywUO/luSqimWBJn04WNgUkeNhh7fs7pESXajWmkg==} + cpu: [ia32] + os: [win32] - '@standard-schema/spec@1.1.0': - resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@rollup/rollup-win32-x64-gnu@4.60.2': + resolution: {integrity: sha512-qdAzEULD+/hzObedtmV6iBpdL5TIbKVztGiK7O3/KYSf+HIzU257+MX1EXJcyIiDbMAqmbwaufcYPvyRryeZtA==} + cpu: [x64] + os: [win32] - '@tanstack/ai-client@0.16.2': - resolution: {integrity: sha512-HKh3G8QD8NsjmzRvxeY2o6h89eQV4jAml6rr1cWn8+z4RY5cM4zbxa2mFUzDA7B495abbAqgYHOX57bsUAGuKQ==} + '@rollup/rollup-win32-x64-msvc@4.60.2': + resolution: {integrity: sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdmg1Z/DaCWKxA==} + cpu: [x64] + os: [win32] - '@tanstack/ai-event-client@0.5.3': - resolution: {integrity: sha512-xYZTGjbNwvDKPKwqEs30p0Jo6616nQQeBhX08T+4qN31im3TBlhPTRXc6sL+rewkCwAiKOczpZp0uGWQCQZo7Q==} - peerDependencies: - '@tanstack/ai': 0.27.0 + '@scalar/openapi-types@0.8.0': + resolution: {integrity: sha512-WmaxVSfvY5K/TwcG2B2TU1WOe1As1uc2s7myswtP6dBlcjU3hM08SApxv/jmyGaCE8t4gO5BBhmHY4pDUfmr2g==} + engines: {node: '>=22'} - '@tanstack/ai-openai@0.13.0': - resolution: {integrity: sha512-owHsdqtnUNL9B+9MiMA6b9rQz1mhGP8a+gw8w7ievIw5MY9esCay1AU5WurHkAWo4ALzVApJ6o1MzJUelA6GMA==} - peerDependencies: - '@tanstack/ai': ^0.27.0 - '@tanstack/ai-client': ^0.16.2 - zod: ^4.0.0 + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@tanstack/ai-react@0.15.3': - resolution: {integrity: sha512-6iHgzpafYUlzIVKxv0Q8Ym+oZnThN9RaN5/QuaU+V23it2qIIaFwWpFvPwIrTcU3YFdH3d7fnmHFF7Tm6CO/pQ==} - peerDependencies: - '@tanstack/ai': ^0.27.0 - '@types/react': '>=18.0.0' - react: '>=18.0.0' + '@seznam/compose-react-refs@1.0.6': + resolution: {integrity: sha512-izzOXQfeQLonzrIQb8u6LQ8dk+ymz3WXTIXjvOlTXHq6sbzROg3NWU+9TTAOpEoK9Bth24/6F/XrfHJ5yR5n6Q==} - '@tanstack/ai-utils@0.2.1': - resolution: {integrity: sha512-cFsSeaiAOOEtAOWvFWD0jHiLlFSYi+FYmbEPeD70zHntM8ws2YFb4Dgz94+J8rsoffLXIFTkKswTowx5QlTsWg==} + '@shikijs/core@4.4.1': + resolution: {integrity: sha512-VeR2CY6Nn9/WbisoYLOQZ7HZOnwTrpBuOw4wExjqLnBCi62BNWynBUO6K2uPIASPFJwAv7cX1fUu+LrPlSstcw==} + engines: {node: '>=20'} - '@tanstack/ai@0.27.0': - resolution: {integrity: sha512-+K8EhqNXmO60CVtXSasWuG5g27yB/p0nG2Gc/jkZNyccklUM0+KYvHiNwDqA5+4ZOQ5W1RbcSiixaFGVwO1jKQ==} - engines: {node: '>=18'} - peerDependencies: - '@opentelemetry/api': '>=1.9.0' - peerDependenciesMeta: - '@opentelemetry/api': - optional: true + '@shikijs/engine-javascript@4.4.1': + resolution: {integrity: sha512-6U4lJBh8LTvIkEVqRHv/rr3ruwtO6IweFQt1ME1ntHJMGHS+6N86vfYGO1o8c/DtOCTia2lfhdQBtBrps1sDfQ==} + engines: {node: '>=20'} - '@tanstack/devtools-event-client@0.4.3': - resolution: {integrity: sha512-OZI6QyULw0FI0wjgmeYzCIfbgPsOEzwJtCpa69XrfLMtNXLGnz3d/dIabk7frg0TmHo+Ah49w5I4KC7Tufwsvw==} - engines: {node: '>=18'} - hasBin: true + '@shikijs/engine-oniguruma@4.4.1': + resolution: {integrity: sha512-p23RugMKss0r5DAtRJW1yAXUDl60JvhQYV20yuxei//26JyDSJefV3umyWzzwep2weblMnJGDYahuti6XkcMgA==} + engines: {node: '>=20'} - '@tanstack/history@1.162.0': - resolution: {integrity: sha512-79pf/RkhteYZTRgcR4F9kbk84P2N8rugQJswxfIqovlbRiT3yI7eBE+5QorIrZaOKktsgzRlXh1l/du/xpl4iA==} - engines: {node: '>=20.19'} + '@shikijs/langs@4.4.1': + resolution: {integrity: sha512-xb2kCMloBCIraIy2fS5MW0t/BxVY3q2nDyQKBoeSeq6KNrQbShHetCFlw2n35fGIJ6t3+hXDLQogP5ir9O9bvA==} + engines: {node: '>=20'} - '@tanstack/openai-base@0.7.0': - resolution: {integrity: sha512-x/lr6t0G52NukXC7gjJDFfgCj/086q2sthbLV2G+iIvkSVIOMxBqPm3acp4/ITstbA2u9ynWevVcT7hpRUENEQ==} - peerDependencies: - '@tanstack/ai': ^0.27.0 + '@shikijs/primitive@4.4.1': + resolution: {integrity: sha512-ko2OfDoG89YuQ7xL5LtcQiWKb7NIv1Ephb7g48TVU198OzAMLC8lXVEwaJGHK4sUMYrfAGJDqYmNLOLiW/Kz8w==} + engines: {node: '>=20'} - '@tanstack/query-core@5.99.1': - resolution: {integrity: sha512-5E8xwxyWvr22yt7zvzP3KOZ5TUElOdVA45NP3/Ao1m9mvc9i18NLTDe9m3M00BH2DR5J20cv7xckMPlhKNs+vQ==} + '@shikijs/themes@4.4.1': + resolution: {integrity: sha512-wudOaoFro+/Zl9gQv2W1Ur5XlVduqvTuYLI483Xi0wgc1A+cy1hfB2r6ac6ufBgF+ID7KJEW7L41MHrzQ4wH+w==} + engines: {node: '>=20'} - '@tanstack/react-query@5.99.1': - resolution: {integrity: sha512-akg5GdwW70lvJvCqVHZ7tizGyc+TATjUzKX9RuF1xknhEe/1leofXk7YLYbrbRsuhNbHJBAayaQUMvvOFZ5L5g==} - peerDependencies: - react: ^18 || ^19 + '@shikijs/transformers@4.4.1': + resolution: {integrity: sha512-Sb9Eehas+5EhClpFgNuklwY3aWf354FLaKRCiAWmjdNbHAjoQUpv6WmSj+N19eTXO6GLIWh1dIOH9dxyauhVWw==} + engines: {node: '>=20'} - '@tanstack/react-router@1.170.12': - resolution: {integrity: sha512-3QSX1kTBFCHV1pMePdLhcmxl2E7io8W59a5f+jDQs+BZjZuRLUDtOuGFiHUGaUCsYHxv6z2dCqWvwxaU6WJpyA==} - engines: {node: '>=20.19'} - peerDependencies: - react: '>=18.0.0 || >=19.0.0' - react-dom: '>=18.0.0 || >=19.0.0' + '@shikijs/types@4.4.1': + resolution: {integrity: sha512-GOwCLQDHM5EjGUWNPrhzJbr6JP8V/Dx/CDVkWvbZ1Avw5JFnNUckrgbLmE07qtg4WlW7Q7QFndhjIkeU9XMPvw==} + engines: {node: '>=20'} - '@tanstack/react-store@0.9.3': - resolution: {integrity: sha512-y2iHd/N9OkoQbFJLUX1T9vbc2O9tjH0pQRgTcx1/Nz4IlwLvkgpuglXUx+mXt0g5ZDFrEeDnONPqkbfxXJKwRg==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@tanstack/router-core@1.171.10': - resolution: {integrity: sha512-EOOvTUBUS2W/DtyqG0A0HW6RLbsbZBVTu3nsWdFpUoAfDxHPjOqRNjz3xwq5KhjMlYuqtHNgaajAd18aebd0ZQ==} - engines: {node: '>=20.19'} + '@silvia-odwyer/photon-node@0.3.4': + resolution: {integrity: sha512-bnly4BKB3KDTFxrUIcgCLbaeVVS8lrAkri1pEzskpmxu9MdfGQTy8b8EgcD83ywD3RPMsIulY8xJH5Awa+t9fA==} - '@tanstack/store@0.9.3': - resolution: {integrity: sha512-8reSzl/qGWGGVKhBoxXPMWzATSbZLZFWhwBAFO9NAyp0TxzfBP0mIrGb8CP8KrQTmvzXlR/vFPPUrHTLBGyFyw==} + '@sinclair/typebox@0.34.49': + resolution: {integrity: sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==} - '@tokenizer/inflate@0.4.1': - resolution: {integrity: sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==} + '@sindresorhus/is@7.2.0': + resolution: {integrity: sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==} engines: {node: '>=18'} - '@tokenizer/token@0.3.0': - resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - - '@toon-format/toon@2.1.0': - resolution: {integrity: sha512-JwWptdF5eOA0HaQxbKAzkpQtR4wSWTEfDlEy/y3/4okmOAX1qwnpLZMmtEWr+ncAhTTY1raCKH0kteHhSXnQqg==} + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} - '@tootallnate/quickjs-emscripten@0.23.0': - resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + '@smithy/config-resolver@4.4.17': + resolution: {integrity: sha512-TzDZcAnhTyAHbXVxWZo7/tEcrIeFq20IBk8So3OLOetWpR8EwY/yEqBMBFaJMeyEiREDq4NfEl+qO3OAUD+vbQ==} + engines: {node: '>=18.0.0'} - '@tybys/wasm-util@0.10.2': - resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} + '@smithy/core@3.23.17': + resolution: {integrity: sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ==} + engines: {node: '>=18.0.0'} - '@types/better-sqlite3@7.6.13': - resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==} + '@smithy/core@3.24.6': + resolution: {integrity: sha512-wBXDRup6UU97VKyaiRo8AssnfStPtG0oAAfpq/bC0a1YYau8pM86YB4kM6ccoVi1mS8l/UHbn9oDM+7uozr/ug==} + engines: {node: '>=18.0.0'} - '@types/bun@1.3.14': - resolution: {integrity: sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw==} + '@smithy/credential-provider-imds@4.2.14': + resolution: {integrity: sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg==} + engines: {node: '>=18.0.0'} - '@types/chai@5.2.3': - resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + '@smithy/credential-provider-imds@4.3.7': + resolution: {integrity: sha512-xj8gq/bjFABAh6qWPSDCYcY3kzQIm4b561C+YnHH4zGq8rOgzQ3Shk+JGlpUxSd41UGiO6FkLdUCtNX1FAeHgg==} + engines: {node: '>=18.0.0'} - '@types/d3-color@3.1.3': - resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + '@smithy/eventstream-codec@4.2.14': + resolution: {integrity: sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw==} + engines: {node: '>=18.0.0'} - '@types/d3-drag@3.0.7': - resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + '@smithy/eventstream-serde-browser@4.2.14': + resolution: {integrity: sha512-8IelTCtTctWRbb+0Dcy+C0aICh1qa0qWXqgjcXDmMuCvPJRnv26hiDZoAau2ILOniki65mCPKqOQs/BaWvO4CQ==} + engines: {node: '>=18.0.0'} - '@types/d3-interpolate@3.0.4': - resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + '@smithy/eventstream-serde-config-resolver@4.3.14': + resolution: {integrity: sha512-sqHiHpYRYo3FJlaIxD1J8PhbcmJAm7IuM16mVnwSkCToD7g00IBZzKuiLNMGmftULmEUX6/UAz8/NN5uMP8bVA==} + engines: {node: '>=18.0.0'} - '@types/d3-selection@3.0.11': - resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + '@smithy/eventstream-serde-node@4.2.14': + resolution: {integrity: sha512-Ht/8BuGlKfFTy0H3+8eEu0vdpwGztCnaLLXtpXNdQqiR7Hj4vFScU3T436vRAjATglOIPjJXronY+1WxxNLSiw==} + engines: {node: '>=18.0.0'} - '@types/d3-transition@3.0.9': - resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + '@smithy/eventstream-serde-universal@4.2.14': + resolution: {integrity: sha512-lWyt4T2XQZUZgK3tQ3Wn0w3XBvZsK/vjTuJl6bXbnGZBHH0ZUSONTYiK9TgjTTzU54xQr3DRFwpjmhp0oLm3gg==} + engines: {node: '>=18.0.0'} - '@types/d3-zoom@3.0.8': - resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + '@smithy/fetch-http-handler@5.3.17': + resolution: {integrity: sha512-bXOvQzaSm6MnmLaWA1elgfQcAtN4UP3vXqV97bHuoOrHQOJiLT3ds6o9eo5bqd0TJfRFpzdGnDQdW3FACiAVdw==} + engines: {node: '>=18.0.0'} - '@types/dagre@0.7.54': - resolution: {integrity: sha512-QjcRY+adGbYvBFS7cwv5txhVIwX1XXIUswWl+kSQTbI6NjgZydrZkEKX/etzVd7i+bCsCb40Z/xlBY5eoFuvWQ==} + '@smithy/fetch-http-handler@5.4.6': + resolution: {integrity: sha512-FEwEYJ1jlBKdhe9TPzfghEi1bP55ZeEImlDkEa62bBBYzUcnB6RUCyuiS2mqKt6ZVjUbBgcNhzfIctH+Hevx9g==} + engines: {node: '>=18.0.0'} - '@types/debug@4.1.13': - resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} + '@smithy/hash-node@4.2.14': + resolution: {integrity: sha512-8ZBDY2DD4wr+GGjTpPtiglEsqr0lUP+KHqgZcWczFf6qeZ/YRjMIOoQWVQlmwu7EtxKTd8YXD8lblmYcpBIA1g==} + engines: {node: '>=18.0.0'} - '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@smithy/invalid-dependency@4.2.14': + resolution: {integrity: sha512-c21qJiTSb25xvvOp+H2TNZzPCngrvl5vIPqPB8zQ/DmJF4QWXO19x1dWfMJZ6wZuuWUPPm0gV8C0cU3+ifcWuw==} + engines: {node: '>=18.0.0'} - '@types/estree-jsx@1.0.5': - resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@smithy/is-array-buffer@4.2.2': + resolution: {integrity: sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==} + engines: {node: '>=18.0.0'} - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@smithy/middleware-content-length@4.2.14': + resolution: {integrity: sha512-xhHq7fX4/3lv5NHxLUk3OeEvl0xZ+Ek3qIbWaCL4f9JwgDZEclPBElljaZCAItdGPQl/kSM4LPMOpy1MYgprpw==} + engines: {node: '>=18.0.0'} - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + '@smithy/middleware-endpoint@4.4.32': + resolution: {integrity: sha512-ZZkgyjnJppiZbIm6Qbx92pbXYi1uzenIvGhBSCDlc7NwuAkiqSgS75j1czAD25ZLs2FjMjYy1q7gyRVWG6JA0Q==} + engines: {node: '>=18.0.0'} - '@types/mdx@2.0.13': - resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + '@smithy/middleware-retry@4.5.5': + resolution: {integrity: sha512-wnYOpB5vATFKWrY2Z9Alb0KhjZI6AbzU6Fbz3Hq2GnURdRYWB4q+qWivQtSTwXcmWUA3MZ6krfwL6Cq5MAbxsA==} + engines: {node: '>=18.0.0'} - '@types/mime-types@2.1.4': - resolution: {integrity: sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==} + '@smithy/middleware-serde@4.2.20': + resolution: {integrity: sha512-Lx9JMO9vArPtiChE3wbEZ5akMIDQpWQtlu90lhACQmNOXcGXRbaDywMHDzuDZ2OkZzP+9wQfZi3YJT9F67zTQQ==} + engines: {node: '>=18.0.0'} - '@types/ms@2.1.0': - resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@smithy/middleware-stack@4.2.14': + resolution: {integrity: sha512-2dvkUKLuFdKsCRmOE4Mn63co0Djtsm+JMh0bYZQupN1pJwMeE8FmQmRLLzzEMN0dnNi7CDCYYH8F0EVwWiPBeA==} + engines: {node: '>=18.0.0'} - '@types/node-fetch@2.6.13': - resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} + '@smithy/node-config-provider@4.3.14': + resolution: {integrity: sha512-S+gFjyo/weSVL0P1b9Ts8C/CwIfNCgUPikk3sl6QVsfE/uUuO+QsF+NsE/JkpvWqqyz1wg7HFdiaZuj5CoBMRg==} + engines: {node: '>=18.0.0'} - '@types/node@17.0.45': - resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + '@smithy/node-http-handler@4.6.1': + resolution: {integrity: sha512-iB+orM4x3xrr57X3YaXazfKnntl0LHlZB1kcXSGzMV1Tt0+YwEjGlbjk/44qEGtBzXAz6yFDzkYTKSV6Pj2HUg==} + engines: {node: '>=18.0.0'} - '@types/node@18.19.130': - resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} + '@smithy/node-http-handler@4.7.6': + resolution: {integrity: sha512-3fya8i7GrJilQouk4cZJKdy5k8MWQBpjfXrRNaXDedH8r779tr0jcxyH3+yoTmsluc2+vF4S343yFbnvu8ExDQ==} + engines: {node: '>=18.0.0'} - '@types/node@25.6.0': - resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} + '@smithy/property-provider@4.2.14': + resolution: {integrity: sha512-WuM31CgfsnQ/10i7NYr0PyxqknD72Y5uMfUMVSniPjbEPceiTErb4eIqJQ+pdxNEAUEWrewrGjIRjVbVHsxZiQ==} + engines: {node: '>=18.0.0'} - '@types/react-dom@19.2.3': - resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} - peerDependencies: - '@types/react': ^19.2.0 + '@smithy/protocol-http@5.3.14': + resolution: {integrity: sha512-dN5F8kHx8RNU0r+pCwNmFZyz6ChjMkzShy/zup6MtkRmmix4vZzJdW+di7x//b1LiynIev88FM18ie+wwPcQtQ==} + engines: {node: '>=18.0.0'} - '@types/react-reconciler@0.33.0': - resolution: {integrity: sha512-HZOXsKT0tGI9LlUw2LuedXsVeB88wFa536vVL0M6vE8zN63nI+sSr1ByxmPToP5K5bukaVscyeCJcF9guVNJ1g==} - peerDependencies: - '@types/react': '*' + '@smithy/querystring-builder@4.2.14': + resolution: {integrity: sha512-XYA5Z0IqTeF+5XDdh4BBmSA0HvbgVZIyv4cmOoUheDNR57K1HgBp9ukUMx3Cr3XpDHHpLBnexPE3LAtDsZkj2A==} + engines: {node: '>=18.0.0'} - '@types/react@19.2.14': - resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + '@smithy/querystring-parser@4.2.14': + resolution: {integrity: sha512-hr+YyqBD23GVvRxGGrcc/oOeNlK3PzT5Fu4dzrDXxzS1LpFiuL2PQQqKPs87M79aW7ziMs+nvB3qdw77SqE7Lw==} + engines: {node: '>=18.0.0'} - '@types/retry@0.12.0': - resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + '@smithy/service-error-classification@4.3.0': + resolution: {integrity: sha512-9jKsBYQRPR0xBLgc2415RsA5PIcP2sis4oBdN9s0D13cg1B1284mNTjx9Yc+BEERXzuPm5ObktI96OxsKh8E9A==} + engines: {node: '>=18.0.0'} - '@types/unist@2.0.11': - resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + '@smithy/shared-ini-file-loader@4.4.9': + resolution: {integrity: sha512-495/V2I15SHgedSJoDPD23JuSfKAp726ZI1V0wtjB07Wh7q/0tri/0e0DLefZCHgxZonrGKt/OCTpAtP1wE1kQ==} + engines: {node: '>=18.0.0'} - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@smithy/signature-v4@5.3.14': + resolution: {integrity: sha512-1D9Y/nmlVjCeSivCbhZ7hgEpmHyY1h0GvpSZt3l0xcD9JjmjVC1CHOozS6+Gh+/ldMH8JuJ6cujObQqfayAVFA==} + engines: {node: '>=18.0.0'} - '@types/whatwg-mimetype@3.0.2': - resolution: {integrity: sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA==} + '@smithy/signature-v4@5.4.6': + resolution: {integrity: sha512-Ojg4B6oIDlIr1R86xCDJt1zJWnYa0VINmqdjfe9qxWjdRivHalZ3iSlQgVqYbW0MdpFOC5XfHEWsnbmdnpIILQ==} + engines: {node: '>=18.0.0'} - '@types/ws@8.18.1': - resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + '@smithy/smithy-client@4.12.13': + resolution: {integrity: sha512-y/Pcj1V9+qG98gyu1gvftHB7rDpdh+7kIBIggs55yGm3JdtBV8GT8IFF3a1qxZ79QnaJHX9GXzvBG6tAd+czJA==} + engines: {node: '>=18.0.0'} - '@types/yauzl@2.10.3': - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + '@smithy/types@4.14.1': + resolution: {integrity: sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==} + engines: {node: '>=18.0.0'} - '@uidotdev/usehooks@2.4.1': - resolution: {integrity: sha512-1I+RwWyS+kdv3Mv0Vmc+p0dPYH0DTRAo04HLyXReYBL9AeseDWUJyi4THuksBJcu9F0Pih69Ak150VDnqbVnXg==} - engines: {node: '>=16'} - peerDependencies: - react: '>=18.0.0' - react-dom: '>=18.0.0' + '@smithy/types@4.14.3': + resolution: {integrity: sha512-YupL0ZWmFtJexUN2cHzkvvF/b9pKrtAIfT1o7/oY/Ppu8IYeZ+lDPM5vZdQJaSeA132dJCqojjGC9NhXeF71VQ==} + engines: {node: '>=18.0.0'} - '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - deprecated: Potential CWE-502 - Update to 1.3.1 or higher + '@smithy/url-parser@4.2.14': + resolution: {integrity: sha512-p06BiBigJ8bTA3MgnOfCtDUWnAMY0YfedO/GRpmc7p+wg3KW8vbXy1xwSu5ASy0wV7rRYtlfZOIKH4XqfhjSQQ==} + engines: {node: '>=18.0.0'} - '@vercel/oidc@3.2.0': - resolution: {integrity: sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug==} - engines: {node: '>= 20'} + '@smithy/util-base64@4.3.2': + resolution: {integrity: sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==} + engines: {node: '>=18.0.0'} - '@vitejs/plugin-react@6.0.2': - resolution: {integrity: sha512-DlSMqo4WhThw4vB8Mpn0Woe9J+Jfq1geJ61AKW0QEgLzGMNwtIMdxbDUzLxcun8W7NbJO0e2Jg/Nxm3cCSVzzg==} - engines: {node: ^20.19.0 || >=22.12.0} + '@smithy/util-body-length-browser@4.2.2': + resolution: {integrity: sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-node@4.2.3': + resolution: {integrity: sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@4.2.2': + resolution: {integrity: sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==} + engines: {node: '>=18.0.0'} + + '@smithy/util-config-provider@4.2.2': + resolution: {integrity: sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-browser@4.3.49': + resolution: {integrity: sha512-a5bNrdiONYB/qE2BuKegvUMd/+ZDwdg4vsNuuSzYE8qs2EYAdK9CynL+Rzn29PbPiUqoz/cbpRbcLzD5lEevHw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-node@4.2.54': + resolution: {integrity: sha512-g1cvrJvOnzeJgEdf7AE4luI7gp6L8weE0y9a9wQUSGtjb8QRHDbCJYuE4Sy0SD9N8RrnNPFsPltAz/OSoBR9Zw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-endpoints@3.4.2': + resolution: {integrity: sha512-a55Tr+3OKld4TTtnT+RhKOQHyPxm3j/xL4OR83WBUhLJaKDS9dnJ7arRMOp3t31dcLhApwG9bgvrRXBHlLdIkg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-hex-encoding@4.2.2': + resolution: {integrity: sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-middleware@4.2.14': + resolution: {integrity: sha512-1Su2vj9RYNDEv/V+2E+jXkkwGsgR7dc4sfHn9Z7ruzQHJIEni9zzw5CauvRXlFJfmgcqYP8fWa0dkh2Q2YaQyw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-retry@4.3.4': + resolution: {integrity: sha512-FY1UQQ1VFmMwiYp1GVS4MeaGD5O0blLNYK0xCRHU+mJgeoH/hSY8Ld8sJWKQ6uznkh14HveRGQJncgPyNl9J+A==} + engines: {node: '>=18.0.0'} + + '@smithy/util-stream@4.5.25': + resolution: {integrity: sha512-/PFpG4k8Ze8Ei+mMKj3oiPICYekthuzePZMgZbCqMiXIHHf4n2aZ4Ps0aSRShycFTGuj/J6XldmC0x0DwednIA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-uri-escape@4.2.2': + resolution: {integrity: sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@4.2.2': + resolution: {integrity: sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==} + engines: {node: '>=18.0.0'} + + '@smithy/uuid@1.1.2': + resolution: {integrity: sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==} + engines: {node: '>=18.0.0'} + + '@smthrs/accounts@0.33.0': + resolution: {integrity: sha512-8kxTIYCC+k+ONlKqhorhN6a2M106y/NA1tiEFM8lpjqJ5UKNumEE2Va07Xu14HLzRZVBSL0kBM7FGY4uxvtsbQ==} + + '@smthrs/agents@0.33.0': + resolution: {integrity: sha512-dl8UFXLoQgkIse5Nlq1EdL47xFK4SLtdwQK4kPIAyRtzjvT1i8T+oGqscCeKWbJXt+Nd2T8UN/zJRcm5rTlpVw==} + engines: {bun: '>=1.3.0', node: '>=22'} + + '@smthrs/aws@0.33.0': + resolution: {integrity: sha512-AVxOll72h/i4uKUUqX2foN2xAazqvjj1/CylTrqfEtGo0NZ09/do1j4v5Md+GWjMrskyoquTIZ9DlOOnGVQVtA==} peerDependencies: - '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 - babel-plugin-react-compiler: ^1.0.0 - vite: ^8.0.0 + '@aws-sdk/client-cloudwatch-logs': ^3.700.0 + '@aws-sdk/client-codebuild': ^3.700.0 + '@aws-sdk/client-ecs': ^3.700.0 + '@aws-sdk/client-s3': ^3.700.0 peerDependenciesMeta: - '@rolldown/plugin-babel': + '@aws-sdk/client-cloudwatch-logs': optional: true - babel-plugin-react-compiler: + '@aws-sdk/client-codebuild': + optional: true + '@aws-sdk/client-ecs': + optional: true + '@aws-sdk/client-s3': optional: true - '@vitest/expect@4.1.7': - resolution: {integrity: sha512-1R+tw0ortHEbZDGMymm+pN7/AFQ/RkFFdtd7EN+VBpynKmLbP8A3rpEXdshBJ7+8hQ9zBJh/i1s0yKNtxAnU7w==} + '@smthrs/cli@0.33.0': + resolution: {integrity: sha512-s7lRAfo5XLIIJO7y+mML4Y7XTpjzwaXpSmi7v7RVO7n1fALtxkxIJFftBiZZO4UYKxHS9hjmNOgKBnnAznLm2g==} - '@vitest/mocker@4.1.7': - resolution: {integrity: sha512-vY7nuamKgfvpA1Koa3oYIw/k7D6kZnpGyNMZW8loow2bsBYla1TFdqTaXncWdRn4pgwNs+90RhnXhJScDwQeJA==} + '@smthrs/cloudflare@0.33.0': + resolution: {integrity: sha512-Go7B4psWVPXJu0YjseAT4xii1YMwfFWflpOMJJUPD6imYbf/frQ+WIkjHlscb3nnSq4X1bOJ0gxT4wOWXAthmQ==} peerDependencies: - msw: ^2.4.9 - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@cloudflare/sandbox': ^0.12.3 peerDependenciesMeta: - msw: - optional: true - vite: + '@cloudflare/sandbox': optional: true - '@vitest/pretty-format@4.1.7': - resolution: {integrity: sha512-umgCarTOYQWIaDMvGDRZij+6b9oVeLIyJzfN+AS88e0ZOU3QTgNNSTtjQOpcvWr3np1N0j4WgZj+sb3oYBDscw==} + '@smthrs/components@0.33.0': + resolution: {integrity: sha512-vIEG5KHLJc1lYOfePrgvxaIjP2CTgOvAxQFk1Mn5AQ3l+w+D1OzBQUe92ybmHJVNnij7H/mL0vFFYi0zCw24Ow==} - '@vitest/runner@4.1.7': - resolution: {integrity: sha512-BapjmAQ2aI78WdMEfeUWivnfVzB+VPGwWRQcJE0OUq7qEeEcBsCSf+0T5iREBNE5nBb4wA5Ya0W6IA+sghdEFw==} + '@smthrs/control-plane@0.33.0': + resolution: {integrity: sha512-O7vVm6E7oF7Y8xZW+ErjtI347+OCmQQMYIZeYQA4DCb00FbP1AwSfrAyUWEWXpEmg7d5abUL4yHskkc3XvyhSQ==} - '@vitest/snapshot@4.1.7': - resolution: {integrity: sha512-ZacLzja+TmJeZ1h14xW2FB/WpeimUD3haBXQPyJqxvo8jQTmfeA8zv58mtjN2C7EHXZDYVcVYdYmAxjkWVvKCw==} + '@smthrs/daytona@0.33.0': + resolution: {integrity: sha512-Dvksc+T29N1xla7ve2HrMs741ARNNqGl+Id5/YdT4SC5KeyVO3sbzsJ7bryRb14jo9qYlsr0RGDH2QWkqQsiDA==} + peerDependencies: + '@daytonaio/sdk': ^0.194.0 + peerDependenciesMeta: + '@daytonaio/sdk': + optional: true - '@vitest/spy@4.1.7': - resolution: {integrity: sha512-kbkI5LMWakyuTIvs6fUJ5qdIVb1XVKsYJAT4OJ938cHMROYMSfmoQdZy0aaAnjbbc8F61vkoTqz/Az+/HiIu5Q==} + '@smthrs/db@0.33.0': + resolution: {integrity: sha512-/k1rtnvDdisC2nZg1R9Y4C+Ae1zWc4oNa3YLknUS/TWNFx01QniZlzfIgeQFbVeh2il6otYVt/n5w7pHTWOoFw==} - '@vitest/utils@4.1.7': - resolution: {integrity: sha512-T532WBu791cBxJlCl6SO+J14l81DQx6uQHm1bQbmCDY7nqlEIgkza/UFnSBNaUtSf41unldDFjdOBYEQC4b5Hw==} + '@smthrs/devtools@0.33.0': + resolution: {integrity: sha512-8BQlLk4c8DYiEEC27FJ5WZtrwG1cODHFmOuzN/bWnkhogY/B+MqXrEcOQdMMYsVtnrxacBiakZiFX1AP6qN8Fw==} - '@wterm/core@0.3.0': - resolution: {integrity: sha512-aQ73QBP+eyA3kcn31mA7DmAi7qmEsQijZdmvgwxtSjCi2248EAOZgtkGDpjlspfrxyVxQbUl/IF+gCVcXt4nZQ==} + '@smthrs/driver@0.33.0': + resolution: {integrity: sha512-bm5Qx8UxXTR9Fk8WatsakpAToNUMs3ub9/i4r63NJYj9ViJJ4BDqbjTUciAXca7ELdum5CBuu7tIGlPteKQw6A==} - '@wterm/dom@0.3.0': - resolution: {integrity: sha512-OiUl7reGSlW02yb5wGXMplMZhW2HBkBSFxvbFj15I832UK0QFIHRvhE2l6Xgae8ROn9bNLaALoKDFvcUuz80iQ==} + '@smthrs/electric-proxy@0.33.0': + resolution: {integrity: sha512-VByPSaFjiMamvy2wvA8YgcHwtIXWeZEHEBP+LMZR9NLtIKXvHZXKZ4Qz4xC9Wf2R7lrhapvSkb8qE1BQ/jZWJA==} + hasBin: true - '@wterm/ghostty@0.3.0': - resolution: {integrity: sha512-TDjEmUSRD7IaFxq31P7+I3Inkp5mHCfBfO6LYj3/vbLbWOkOZOKPhjAcZ36AYFHe9Q0HLCFvLWmrxIO3aGCjDA==} + '@smthrs/engine@0.33.0': + resolution: {integrity: sha512-09IzZmLnFhnC0E1L6hUYW+71D6t2Eg5bl2Md1a35tSyRJEfiP3zPeL0wl7h2jcxm2YP0Z7kFhrG/1b52k0Dssg==} - '@wterm/react@0.3.0': - resolution: {integrity: sha512-1rua/roQGCIGkNxjs9TVq+EkXJ0n2IK6aCoaGIQJpvzuHv7iU9/lngG3i1SCpX6deOOO/wpfhtjDTI+z9XF0aA==} + '@smthrs/errors@0.33.0': + resolution: {integrity: sha512-501B5G4joqGcfjO8XOHXiGc2Ijr8dACdDD5RtXRbxvduu53AoGQXpp9xVoEh6Ey8PqaQiX4b50jneiQoIZXPpg==} + + '@smthrs/gateway-client@0.33.0': + resolution: {integrity: sha512-9OwKzHLI7Dl+Mj7OhaWtINvyhxd+b2USaXSJgSo7lKERFEAaCe6s104dRP/7dlanXdyh6CSK+I3+gwvWZ0R61w==} + + '@smthrs/gateway-react@0.33.0': + resolution: {integrity: sha512-sf4Da0J/U4KsKMf58KVkuGKDZor6obuqEBMLS7zOWRObEjCsR9nZS5345QyTIrzNW3RW7QNM5susEoj3mxbBdw==} peerDependencies: - '@wterm/dom': 0.3.0 - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 + react: ^19.0.0 + react-dom: ^19.0.0 - '@xyflow/react@12.10.2': - resolution: {integrity: sha512-CgIi6HwlcHXwlkTpr0fxLv/0sRVNZ8IdwKLzzeCscaYBwpvfcH1QFOCeaTCuEn1FQEs/B8CjnTSjhs8udgmBgQ==} + '@smthrs/gateway-ui@0.33.0': + resolution: {integrity: sha512-DHgbv9E2yM0/BeyHLKR9UvXPgjoNX03M0A/NV4OjVJaAH3vkkRSYz/h41ushTQrS6BEyaZbYMEDL0+RxSNTxOw==} peerDependencies: - react: '>=17' - react-dom: '>=17' + react: ^19.0.0 + react-dom: ^19.0.0 - '@xyflow/system@0.0.76': - resolution: {integrity: sha512-hvwvnRS1B3REwVDlWexsq7YQaPZeG3/mKo1jv38UmnpWmxihp14bW6VtEOuHEwJX2FvzFw8k77LyKSk/wiZVNA==} + '@smthrs/gateway@0.33.0': + resolution: {integrity: sha512-KPJ9BDXOJWLyE2n7CH759Db7m4is4ctw2g3o/YOaUBidNicPCyt1q7IM1ffEVF92G611/jurkqoNjxhI7/FQOg==} - '@yarnpkg/lockfile@1.1.0': - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} + '@smthrs/gcp@0.33.0': + resolution: {integrity: sha512-hIot4+LxgujrZFVFhM51QNY3gWZZ4tj6i4R6GI7wvlfL2JruR43+u+q2ikzBTV0QnZDSuPqV9tvnU/nHqEYkUA==} + peerDependencies: + '@google-cloud/run': ^2.0.0 + '@google-cloud/storage': ^7.0.0 + peerDependenciesMeta: + '@google-cloud/run': + optional: true + '@google-cloud/storage': + optional: true - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + '@smthrs/graph@0.33.0': + resolution: {integrity: sha512-WTqlfwlATZNsl9aoRI+QHazRX3H81sFX65+nEJPrKOegh/TUJL/KLg6YuLs3acIe3fdPz5sp1QMT9Got0fp9VQ==} - accepts@2.0.0: - resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} - engines: {node: '>= 0.6'} + '@smthrs/integrations@0.33.0': + resolution: {integrity: sha512-PKE9ZylVA0k0Q5WzqzAaurSgO1or6zbkJdwqsnNAtRh/xt23cD1yfQwxxpDtqQ8gZ19bLE3QAHNTd195b+Doyg==} - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + '@smthrs/jj-darwin-arm64@0.33.0': + resolution: {integrity: sha512-7Re3DW+zRzNhqc7yybFQszn06kaQ+h8pziqyf3gw19XnMcCFFYV/PvfkdraeYFdTIABBq8rIl7xX7roO8sn8Mg==} + cpu: [arm64] + os: [darwin] + hasBin: true - acorn@8.16.0: - resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} - engines: {node: '>=0.4.0'} + '@smthrs/jj-darwin-x64@0.33.0': + resolution: {integrity: sha512-9d+Qjpu/81v22ssYG7aNjBbe0RHXBSkWHJiwsLgy42TE0pu7MwqZU1eWahrjm3tZpmO8jVS39u5582SGbitPfA==} + cpu: [x64] + os: [darwin] hasBin: true - agent-base@7.1.4: - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} - engines: {node: '>= 14'} + '@smthrs/jj-linux-arm64@0.33.0': + resolution: {integrity: sha512-7ORLYp3bv+bMEuIPeM2JFqnATClxZ603DObILlKgt93SVMngFZrMObAGgp29tB3dpmRcD3Co+Ul5v5BSrxYSAQ==} + cpu: [arm64] + os: [linux] + hasBin: true - agentkeepalive@4.6.0: - resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} - engines: {node: '>= 8.0.0'} + '@smthrs/jj-linux-x64@0.33.0': + resolution: {integrity: sha512-hMkHmBBDr011x21Ot/dd6AFaajaabVdmi6omgOeRAMWwJ73WJMCZEHZ6RVRsH+eNh9xRfufqs6r2VUy9nW1glg==} + cpu: [x64] + os: [linux] + hasBin: true - ai@6.0.168: - resolution: {integrity: sha512-2HqCJuO+1V2aV7vfYs5LFEUfxbkGX+5oa54q/gCCTL7KLTdbxcCu5D7TdLA5kwsrs3Szgjah9q6D9tpjHM3hUQ==} - engines: {node: '>=18'} - peerDependencies: - zod: ^3.25.76 || ^4.1.8 + '@smthrs/jj-win32-x64@0.33.0': + resolution: {integrity: sha512-ivJOvwsAeDicx/CZ0z1OudQL+fD8Oir8PmlSJtYM/4A1mRUDj7iAyg+a/yAwGqEUtO4rSaSpiuiTyUfQsg3UWw==} + cpu: [x64] + os: [win32] + hasBin: true - ajv-formats@3.0.1: - resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + '@smthrs/memory@0.33.0': + resolution: {integrity: sha512-g/CVUQvxMRziRM48Xe4yDLHKnaN0VzLu8ZPMpvkUFs+ToYJAk3lXPuSj0fKQMBXsdKRulomlj26CUWvEFBw4gQ==} + + '@smthrs/microsandbox@0.33.0': + resolution: {integrity: sha512-Ij/yai+AQ193aZe8xwrWQuzxauNN9IMJJHsaETBuKjj/saVTnWID1oSSOrtjqVkRvVhLdJ6/P2gwomypjxcdhg==} peerDependencies: - ajv: ^8.0.0 + microsandbox: 0.6.6 peerDependenciesMeta: - ajv: + microsandbox: optional: true - ajv@8.18.0: - resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} + '@smthrs/observability@0.33.0': + resolution: {integrity: sha512-LrqSOgS626noFfuF5ltJ4isRza9+RpG5Z/gDm7ADU5Ft9vCFGWlxnccz9yxntoT443pSi0DWDk9aWRnlVTnY9g==} - alchemy@0.93.11: - resolution: {integrity: sha512-qe6aax8tmpDkD6deKKCdEdkgV65PhEkfxNNAxxgWSKwku4IBdJ+i13tZ1aFNkKnof5mliczWboDNAU2LXVFCXQ==} + '@smthrs/openapi@0.33.0': + resolution: {integrity: sha512-k+JYat/tJMjauLsbS0K6n7Ch6OqdJk7i5I1thHJWE2XNEmk4IcyB0TuP1fXEwFAx/AdsgqAeqhpMoQVttsXrLA==} + engines: {bun: '>=1.3.0', node: '>=22'} + + '@smthrs/protocol@0.33.0': + resolution: {integrity: sha512-23q08dp4TcjtiaSUbYb4q45Rr8XYtprFtlfEoji9Zd3uo2uvpdoGpGvsjHM9v20Kc6iRhGV06OC2tKEYCx5mbQ==} + + '@smthrs/react-reconciler@0.33.0': + resolution: {integrity: sha512-IGeJCUfN14Mu7zGigDrglHo2eJVMYZcL9Y0VKcB6469Hn/wSCLAlhctwHpXtHGI6SDE4HC/OqYlAe73d2jAvXQ==} + + '@smthrs/review@0.33.0': + resolution: {integrity: sha512-6d8479NJ1B1lqVc6Eiee64D/dv7ahdRssGQlgDZdB/l6SjZDYn/q06gXX9M/FwEUp4LNyLzdu5TeLpOEgFDXSg==} hasBin: true + + '@smthrs/sandbox@0.33.0': + resolution: {integrity: sha512-i3F/vPq0E3JEPccWmpO02zDclpx/JMFwxYOzw4wMtQy2d+N5Tyv0sSSUI3qmxkOx5yrEwNxsNO5ggTV3GlbFjQ==} + + '@smthrs/scheduler@0.33.0': + resolution: {integrity: sha512-X56SHlwiZZDSY6pYQlRwZaIhVQgJgbbj3ZzJq//c9ticG3iwC6jeaG4UHCozdVlY1D8ykKcsdDXm1GQb4HhGqA==} + + '@smthrs/scorers@0.33.0': + resolution: {integrity: sha512-ju3omeoYq7Pn9oIqRneCEoGyaAmScGxKQi22e9NAKHHWCzpdiouYBab7Z2qtOk9G5X/4503EsdpFH6JpPHEYpQ==} + + '@smthrs/server@0.33.0': + resolution: {integrity: sha512-iCcgYQTBBwnlnpWoyl8nYd60ETeQNXXBy+jZXSnvj61FoidGzf8u1Tjg/zcKLnh1A5c2o+eGa0YUqgk8FF8v4Q==} peerDependencies: - '@astrojs/cloudflare': ^12.6.4 - '@aws-sdk/client-dynamodb': ^3.0.0 - '@aws-sdk/client-iam': ^3.0.0 - '@aws-sdk/client-lambda': ^3.0.0 - '@aws-sdk/client-s3': ^3.0.0 - '@aws-sdk/client-sesv2': ^3.0.0 - '@aws-sdk/client-sqs': ^3.0.0 - '@aws-sdk/client-ssm': ^3.0.0 - '@aws-sdk/client-sts': ^3.0.0 - '@cloudflare/vite-plugin': ^1.21.2 - '@coinbase/cdp-sdk': ^0.10.0 - '@libsql/client': ^0.15.12 - '@opennextjs/cloudflare': ^1.6.5 - astro: ^5.13.2 - rwsdk: ^1.0.0-beta.51 - stripe: ^18.5.0 - vite: '>=6.0.0' + playwright: ^1.61.1 peerDependenciesMeta: - '@astrojs/cloudflare': - optional: true - '@aws-sdk/client-dynamodb': + playwright: optional: true - '@aws-sdk/client-iam': + + '@smthrs/telegram@0.33.0': + resolution: {integrity: sha512-MuNm1lLwPBgyll9P1+yvEsLWad9N2Zro5rCXB09YB0kfVKsmkONwV0J8WeZPO1W/POMoYi44st/lq2NBcaUN8g==} + engines: {bun: '>=1.3.0', node: '>=22'} + + '@smthrs/testing@0.33.0': + resolution: {integrity: sha512-f/IfOjG8MOqxtvPJLNJ0LJ21OXMRUAeb8JF6YV3ZU4Ht7td2IWGNXDtyFFG3DQBdqZVhQSOSY5O/WFP/j4fJuQ==} + engines: {bun: '>=1.3.0', node: '>=22'} + peerDependencies: + koffi: ^2.16.2 + peerDependenciesMeta: + koffi: optional: true - '@aws-sdk/client-lambda': - optional: true - '@aws-sdk/client-s3': - optional: true - '@aws-sdk/client-sesv2': - optional: true - '@aws-sdk/client-sqs': - optional: true - '@aws-sdk/client-ssm': - optional: true - '@aws-sdk/client-sts': - optional: true - '@cloudflare/vite-plugin': - optional: true - '@coinbase/cdp-sdk': - optional: true - '@libsql/client': - optional: true - '@opennextjs/cloudflare': - optional: true - astro: - optional: true - rwsdk: - optional: true - stripe: - optional: true - vite: - optional: true - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.3: - resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} - engines: {node: '>=12'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + '@smthrs/time-travel@0.33.0': + resolution: {integrity: sha512-QY+r4R8N10N8rwn3RnBCHpEmGPNVzgXWrZBcj0dZY0TY9TqRaBW6Jbj+7M8RB20Gk6Kgf5Xbha8buY3OSFqgsA==} - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} + '@smthrs/tool-context@0.33.0': + resolution: {integrity: sha512-CBgeh7dOefSfGyWnLPYVQOE/sMGwrwIJq625BcMuuTfTZe+2zj9dCBbsBcrdhCzUf9AWzELu6Ja/SOnmWWETeA==} - ast-types@0.13.4: - resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} - engines: {node: '>=4'} + '@smthrs/tui-ui@0.33.0': + resolution: {integrity: sha512-uXQNDM1lsoX3GJhwCFOsDQ7jTGscX/jFk/nWeGc/8MnyWURIPdc5R4p48GYVaRhJfVMhqyCP4lGciiliHIaMjg==} - astring@1.9.0: - resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + '@smthrs/tui@0.33.0': + resolution: {integrity: sha512-gGB6wtxWUrzWd3afKtMk37tQCFGUfP2IgaMIBSzyZukO8581AlE5IxjUnnPk7P93THbMWzyxfhdKhrbi7g0hBA==} hasBin: true - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + '@smthrs/ui-core@0.33.0': + resolution: {integrity: sha512-VdthPjNAJ5joiNa/yimp19T0EW+uU5cFlH/gJJc0Rl7o8e05zHavJG198pq916XMFj01wZ01Ok+JjqFqeqe9RA==} + peerDependencies: + react: ^19.0.0 - at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} + '@smthrs/ui-styleguide@0.33.0': + resolution: {integrity: sha512-Abttww3uxtcjFUeai35j+ytQmXLRvDffyAFO051zKQQuV2NNywsjpmbowEyeINU0+xqKWxx9qkl89Dj5mRKkDw==} - aws4fetch@1.0.20: - resolution: {integrity: sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==} + '@smthrs/ui@0.33.0': + resolution: {integrity: sha512-20Rp7+12sB+MFr46krN6SnMnS3gQ3qvitISvStnhOQRexcovmu9bZZjSQle73izDDhzt6NSjRP92dyd9Imta1g==} + peerDependencies: + react: ^19.0.0 + react-dom: ^19.0.0 - bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + '@smthrs/usage@0.33.0': + resolution: {integrity: sha512-dmkr6TdoyeTuXSDTikiQm3O6aOQ9VhzjsHnmlQj4ERT8aDRASp3e2fqDZ0Hp3ciRsrfQZ/z4i6mblwTkue07TA==} - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + '@smthrs/vcs@0.33.0': + resolution: {integrity: sha512-fh26ZzhIC5TfAn+BEKq9A5A9l9rWrdwfS6bBzB2OKCZ40X11KsH4Nh4DP7z49ChHCVBkrivPo40RV2Yl4XyG7g==} - balanced-match@4.0.4: - resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} - engines: {node: 18 || 20 || >=22} + '@smthrs/vercel@0.33.0': + resolution: {integrity: sha512-uvM3Yfr29ThAPIw12N5/adCw16sRStpU2Rh6bOhk7HwsmIZ1yovPcyvuOwavv88knhnsrbo+7j+ZonMLkjfb2A==} + peerDependencies: + '@vercel/sandbox': ^2.0.0 + peerDependenciesMeta: + '@vercel/sandbox': + optional: true - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + '@smthrs/xstate@0.33.0': + resolution: {integrity: sha512-xd8qeH/E32HFuSQExrqZsyeCslnVeDvD2khcEvOCK0NMuTl9CgVqq7qS6lKhCkPLRyePPUTr+FXZzWtUT4KS1g==} + engines: {bun: '>=1.3.0', node: '>=22'} + peerDependencies: + xstate: ^5.19.0 + peerDependenciesMeta: + xstate: + optional: true - basic-ftp@5.3.0: - resolution: {integrity: sha512-5K9eNNn7ywHPsYnFwjKgYH8Hf8B5emh7JKcPaVjjrMJFQQwGpwowEnZNEtHs7DfR7hCZsmaK3VA4HUK0YarT+w==} - engines: {node: '>=10.0.0'} + '@speed-highlight/core@1.2.15': + resolution: {integrity: sha512-BMq1K3DsElxDWawkX6eLg9+CKJrTVGCBAWVuHXVUV2u0s2711qiChLSId6ikYPfxhdYocLNt3wWwSvDiTvFabw==} - before-after-hook@3.0.2: - resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - better-sqlite3@11.10.0: - resolution: {integrity: sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==} + '@standard-schema/utils@0.3.0': + resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} - bignumber.js@9.3.1: - resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} + '@tanstack/ai-client@0.16.2': + resolution: {integrity: sha512-HKh3G8QD8NsjmzRvxeY2o6h89eQV4jAml6rr1cWn8+z4RY5cM4zbxa2mFUzDA7B495abbAqgYHOX57bsUAGuKQ==} - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + '@tanstack/ai-event-client@0.5.3': + resolution: {integrity: sha512-xYZTGjbNwvDKPKwqEs30p0Jo6616nQQeBhX08T+4qN31im3TBlhPTRXc6sL+rewkCwAiKOczpZp0uGWQCQZo7Q==} + peerDependencies: + '@tanstack/ai': 0.27.0 - bippy@0.5.39: - resolution: {integrity: sha512-8hE8rKSl8JWyeaY+JjpnmceWAZPpLEyzOZQpWXM5Rc7861c5WotMJHy2aRZKZrGA8nMpvLNF01t4yQQ+HcZG3w==} + '@tanstack/ai-openai@0.13.0': + resolution: {integrity: sha512-owHsdqtnUNL9B+9MiMA6b9rQz1mhGP8a+gw8w7ievIw5MY9esCay1AU5WurHkAWo4ALzVApJ6o1MzJUelA6GMA==} peerDependencies: - react: '>=17.0.1' + '@tanstack/ai': ^0.27.0 + '@tanstack/ai-client': ^0.16.2 + zod: ^4.0.0 - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + '@tanstack/ai-react@0.15.3': + resolution: {integrity: sha512-6iHgzpafYUlzIVKxv0Q8Ym+oZnThN9RaN5/QuaU+V23it2qIIaFwWpFvPwIrTcU3YFdH3d7fnmHFF7Tm6CO/pQ==} + peerDependencies: + '@tanstack/ai': ^0.27.0 + '@types/react': '>=18.0.0' + react: '>=18.0.0' - blake3-wasm@2.1.5: - resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} + '@tanstack/ai-utils@0.2.1': + resolution: {integrity: sha512-cFsSeaiAOOEtAOWvFWD0jHiLlFSYi+FYmbEPeD70zHntM8ws2YFb4Dgz94+J8rsoffLXIFTkKswTowx5QlTsWg==} - body-parser@2.2.2: - resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} + '@tanstack/ai@0.27.0': + resolution: {integrity: sha512-+K8EhqNXmO60CVtXSasWuG5g27yB/p0nG2Gc/jkZNyccklUM0+KYvHiNwDqA5+4ZOQ5W1RbcSiixaFGVwO1jKQ==} engines: {node: '>=18'} + peerDependencies: + '@opentelemetry/api': '>=1.9.0' + peerDependenciesMeta: + '@opentelemetry/api': + optional: true - bowser@2.14.1: - resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} + '@tanstack/db-ivm@0.1.18': + resolution: {integrity: sha512-+pZJiRKdoKRM5Epq9T7otD9ZJl82pRFauo7LKuJGrarjVKQ7r+QQlPe3kGdN9LEKSnuNGIWjX9OOY4M8kH4eLw==} + peerDependencies: + typescript: '>=4.7' - brace-expansion@1.1.14: - resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==} + '@tanstack/db@0.6.13': + resolution: {integrity: sha512-EWR/eE2TO0CIh/nC5P4Ct6UCzDDyX94fnEXxqMMi0/5pbZDa/MCKB1PYad9jqZRSK4AEu2uoF6Y8aOUaZJd24A==} + peerDependencies: + typescript: '>=4.7' - brace-expansion@2.1.1: - resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} + '@tanstack/devtools-event-client@0.4.3': + resolution: {integrity: sha512-OZI6QyULw0FI0wjgmeYzCIfbgPsOEzwJtCpa69XrfLMtNXLGnz3d/dIabk7frg0TmHo+Ah49w5I4KC7Tufwsvw==} + engines: {node: '>=18'} + hasBin: true - brace-expansion@5.0.5: - resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} - engines: {node: 18 || 20 || >=22} + '@tanstack/electric-db-collection@0.3.11': + resolution: {integrity: sha512-tTG7YWqs+FeGh4H/oinZ7zbE9F9w/cF+QLeX3iyNd8A4SDxwmZeTCmy9u9wuAQ4IJM/hu7lMknup+ebryoZrzg==} - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} + '@tanstack/history@1.162.0': + resolution: {integrity: sha512-79pf/RkhteYZTRgcR4F9kbk84P2N8rugQJswxfIqovlbRiT3yI7eBE+5QorIrZaOKktsgzRlXh1l/du/xpl4iA==} + engines: {node: '>=20.19'} - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + '@tanstack/openai-base@0.7.0': + resolution: {integrity: sha512-x/lr6t0G52NukXC7gjJDFfgCj/086q2sthbLV2G+iIvkSVIOMxBqPm3acp4/ITstbA2u9ynWevVcT7hpRUENEQ==} + peerDependencies: + '@tanstack/ai': ^0.27.0 - buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + '@tanstack/pacer-lite@0.2.2': + resolution: {integrity: sha512-eQ1MyLKCHyXiH7NbdmB80W77OhiMgGBUb+qDx/8WMGbwg5Lf/NlfD0TfNYAqY77i8V3AxoDoYdICrQE5ADw4Yw==} + engines: {node: '>=18'} - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + '@tanstack/query-core@5.101.2': + resolution: {integrity: sha512-hH5MLoJhF7KaIGd7q3xTXGXvslI+GYlM1Z/35aSHHWaCJWB7XvTSHYuV3eM7tw+aE0mT/xMro4M4Q9rCGHT0lw==} - bun-types@1.3.13: - resolution: {integrity: sha512-QXKeHLlOLqQX9LgYaHJfzdBaV21T63HhFJnvuRCcjZiaUDpbs5ED1MgxbMra71CsryN/1dAoXuJJJwIv/2drVA==} + '@tanstack/query-core@5.99.1': + resolution: {integrity: sha512-5E8xwxyWvr22yt7zvzP3KOZ5TUElOdVA45NP3/Ao1m9mvc9i18NLTDe9m3M00BH2DR5J20cv7xckMPlhKNs+vQ==} - bun-types@1.3.14: - resolution: {integrity: sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ==} + '@tanstack/query-db-collection@1.0.45': + resolution: {integrity: sha512-BS5Cp+gwguQoL1CBWycKeOXHXfxw8OF5vuK34n6GT8V3wqSmrz0Nj7EHQEKdK8A+QTZwSSj/SiRBmYLHHkg2Cw==} + peerDependencies: + '@tanstack/query-core': ^5.0.0 + typescript: '>=4.7' - bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} - engines: {node: '>=18'} + '@tanstack/react-db@0.1.91': + resolution: {integrity: sha512-iiGXa0NUR5ZgWnaIzUw6T+VvkKv2kTo5jYYK57EtajDcrJbBlNw2+pnRp8Ni2QhXWG7GxFbDEuyY8aj4V975NA==} + peerDependencies: + react: '>=16.8.0' - bundle-require@5.1.0: - resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + '@tanstack/react-query@5.101.2': + resolution: {integrity: sha512-seDkr6kzGzX1okaaTtZPtgA688CDPlXUz1C6xSg0ESqn04Vuc8tlrYms1s3de+znBqhPVxFRfpAfUf+6XvfPWg==} peerDependencies: - esbuild: '>=0.18' + react: ^18 || ^19 - bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} - engines: {node: '>= 0.8'} + '@tanstack/react-query@5.99.1': + resolution: {integrity: sha512-akg5GdwW70lvJvCqVHZ7tizGyc+TATjUzKX9RuF1xknhEe/1leofXk7YLYbrbRsuhNbHJBAayaQUMvvOFZ5L5g==} + peerDependencies: + react: ^18 || ^19 - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} + '@tanstack/react-router@1.170.12': + resolution: {integrity: sha512-3QSX1kTBFCHV1pMePdLhcmxl2E7io8W59a5f+jDQs+BZjZuRLUDtOuGFiHUGaUCsYHxv6z2dCqWvwxaU6WJpyA==} + engines: {node: '>=20.19'} + peerDependencies: + react: '>=18.0.0 || >=19.0.0' + react-dom: '>=18.0.0 || >=19.0.0' - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} + '@tanstack/react-store@0.9.3': + resolution: {integrity: sha512-y2iHd/N9OkoQbFJLUX1T9vbc2O9tjH0pQRgTcx1/Nz4IlwLvkgpuglXUx+mXt0g5ZDFrEeDnONPqkbfxXJKwRg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} + '@tanstack/router-core@1.171.10': + resolution: {integrity: sha512-EOOvTUBUS2W/DtyqG0A0HW6RLbsbZBVTu3nsWdFpUoAfDxHPjOqRNjz3xwq5KhjMlYuqtHNgaajAd18aebd0ZQ==} + engines: {node: '>=20.19'} - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + '@tanstack/store@0.9.3': + resolution: {integrity: sha512-8reSzl/qGWGGVKhBoxXPMWzATSbZLZFWhwBAFO9NAyp0TxzfBP0mIrGb8CP8KrQTmvzXlR/vFPPUrHTLBGyFyw==} - chai@6.2.2: - resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + '@tokenizer/inflate@0.4.1': + resolution: {integrity: sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==} engines: {node: '>=18'} - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + '@tokenizer/token@0.3.0': + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - chalk@5.6.2: - resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + '@toon-format/toon@2.1.0': + resolution: {integrity: sha512-JwWptdF5eOA0HaQxbKAzkpQtR4wSWTEfDlEy/y3/4okmOAX1qwnpLZMmtEWr+ncAhTTY1raCKH0kteHhSXnQqg==} - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + '@toon-format/toon@2.3.0': + resolution: {integrity: sha512-/Ew9etdRQKVMnm9fDaCG0JjyAOK/O7T0M97oum1aW4W+UR8ZhVVPBanIV7oWgHBiGlnVxV9M55PWQCHofDV07w==} - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + '@tybys/wasm-util@0.10.2': + resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} - character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + '@types/better-sqlite3@7.6.13': + resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==} - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} + '@types/bun@1.3.14': + resolution: {integrity: sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw==} - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} - classcat@5.0.5: - resolution: {integrity: sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==} + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} - cli-highlight@2.1.11: - resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} - engines: {node: '>=8.0.0', npm: '>=5.0.0'} - hasBin: true + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} - cloudflare@6.3.0: - resolution: {integrity: sha512-in5RDFuRJiX4iY6TPjCLN7E3D75mFqb73uIL3kvBiCgQ3i2Bec0peT2qFtBUffr/Ca2/lx67T+NtJKAFBiu2+A==} + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} - collapse-white-space@2.1.0: - resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + '@types/d3-dispatch@3.0.7': + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} - commander@14.0.3: - resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} - engines: {node: '>=20'} + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} - consola@3.4.2: - resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} - engines: {node: ^14.18.0 || >=16.10.0} + '@types/d3-geo@3.1.1': + resolution: {integrity: sha512-65Emv9fQiQQqphLlRkuQ5ypPsOmWPhtBGCMv61JDPEPMvsx+gzhGf74yw1a78xFKPj6zw4AgQICJoQv0vK9M2w==} - content-disposition@1.1.0: - resolution: {integrity: sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==} - engines: {node: '>=18'} + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} - content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} - engines: {node: '>= 0.6'} + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} - cookie-es@3.1.1: - resolution: {integrity: sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==} + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} - cookie-signature@1.2.2: - resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} - engines: {node: '>=6.6.0'} + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} - cookie@0.7.2: - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} - engines: {node: '>= 0.6'} + '@types/d3-random@3.0.4': + resolution: {integrity: sha512-UHYId5WTCx4L4YNel7NU00XUXXgvgpgZOvp10PuvsQENjMDXhh2RyFc0KBjO7B45ne4Ha1yVH7ii0vnzKkuzWA==} - cookie@1.1.1: - resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} - engines: {node: '>=18'} + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} - cors@2.8.6: - resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} - engines: {node: '>= 0.10'} + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} - cron-parser@5.5.0: - resolution: {integrity: sha512-oML4lKUXxizYswqmxuOCpgFS8BNUJpIu6k/2HVHyaL8Ynnf3wdf9tkns0yRdJLSIjkJ+b0DXHMZEHGpMwjnPww==} - engines: {node: '>=18'} + '@types/d3-shape@3.1.8': + resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==} - cross-spawn-windows-exe@1.2.0: - resolution: {integrity: sha512-mkLtJJcYbDCxEG7Js6eUnUNndWjyUZwJ3H7bErmmtOYU/Zb99DyUkpamuIZE0b3bhmJyZ7D90uS6f+CGxRRjOw==} - engines: {node: '>= 10'} + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} - cross-spawn@6.0.6: - resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} - engines: {node: '>=4.8'} + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} - csstype@3.2.3: - resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} - d3-color@3.1.0: - resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} - engines: {node: '>=12'} + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} - d3-dispatch@3.0.1: - resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} - engines: {node: '>=12'} + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} - d3-drag@3.0.0: - resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} - engines: {node: '>=12'} + '@types/dagre@0.7.54': + resolution: {integrity: sha512-QjcRY+adGbYvBFS7cwv5txhVIwX1XXIUswWl+kSQTbI6NjgZydrZkEKX/etzVd7i+bCsCb40Z/xlBY5eoFuvWQ==} - d3-ease@3.0.1: - resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} - engines: {node: '>=12'} + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} - d3-interpolate@3.0.1: - resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} - engines: {node: '>=12'} + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - d3-selection@3.0.0: - resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} - engines: {node: '>=12'} + '@types/estree-jsx@1.0.5': + resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - d3-timer@3.0.1: - resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} - engines: {node: '>=12'} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - d3-transition@3.0.1: - resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} - engines: {node: '>=12'} - peerDependencies: - d3-selection: 2 - 3 + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} - d3-zoom@3.0.0: - resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} - engines: {node: '>=12'} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - dagre@0.8.5: - resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==} + '@types/hast@3.0.5': + resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} - data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} - engines: {node: '>= 12'} + '@types/katex@0.16.8': + resolution: {integrity: sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==} - data-uri-to-buffer@6.0.2: - resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} - engines: {node: '>= 14'} + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} - debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} - engines: {node: '>=6.0'} + '@types/lodash@4.17.25': + resolution: {integrity: sha512-+K1NIO8I+F9/wNulfVvu23QYd0Pe9/OCqRrim4NoYIf1VoEDL90Ve4ClzpyqBLc7NpGGWRvYNCKZ1BE/Jpf8dQ==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + + '@types/mime-types@2.1.4': + resolution: {integrity: sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node-fetch@2.6.13': + resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} + + '@types/node@17.0.45': + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + + '@types/node@18.19.130': + resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} + + '@types/node@25.6.0': + resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} + + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + '@types/react': ^19.2.0 - decode-named-character-reference@1.3.0: - resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + '@types/react-reconciler@0.33.0': + resolution: {integrity: sha512-HZOXsKT0tGI9LlUw2LuedXsVeB88wFa536vVL0M6vE8zN63nI+sSr1ByxmPToP5K5bukaVscyeCJcF9guVNJ1g==} + peerDependencies: + '@types/react': '*' - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} + '@types/retry@0.12.0': + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} - default-browser-id@5.0.1: - resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} - engines: {node: '>=18'} + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - default-browser@5.5.0: - resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} - engines: {node: '>=18'} + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - defu@6.1.7: - resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + '@types/use-sync-external-store@0.0.6': + resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} - degenerator@5.0.1: - resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} - engines: {node: '>= 14'} + '@types/whatwg-mimetype@3.0.2': + resolution: {integrity: sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA==} - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} + '@uidotdev/usehooks@2.4.1': + resolution: {integrity: sha512-1I+RwWyS+kdv3Mv0Vmc+p0dPYH0DTRAo04HLyXReYBL9AeseDWUJyi4THuksBJcu9F0Pih69Ak150VDnqbVnXg==} + engines: {node: '>=16'} + peerDependencies: + react: '>=18.0.0' + react-dom: '>=18.0.0' - detect-libc@2.1.2: - resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} - engines: {node: '>=8'} + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + deprecated: Potential CWE-502 - Update to 1.3.1 or higher - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + '@upsetjs/venn.js@2.0.0': + resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} - diff@8.0.2: - resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==} - engines: {node: '>=0.3.1'} + '@vectorize-io/hindsight-client@0.8.4': + resolution: {integrity: sha512-Tk5wRRhRVSZ0FuGcUKqBZIidw/6eS81oTIKV0H5gmzKSM2r2CdoijmOi+NaP0v51rnoxVi0nFEHQXivt0J2+OA==} - diff@9.0.0: - resolution: {integrity: sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==} - engines: {node: '>=0.3.1'} + '@vercel/oidc@3.2.0': + resolution: {integrity: sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug==} + engines: {node: '>= 20'} - drizzle-orm@0.45.2: - resolution: {integrity: sha512-kY0BSaTNYWnoDMVoyY8uxmyHjpJW1geOmBMdSSicKo9CIIWkSxMIj2rkeSR51b8KAPB7m+qysjuHme5nKP+E5Q==} + '@vitejs/plugin-react@6.0.2': + resolution: {integrity: sha512-DlSMqo4WhThw4vB8Mpn0Woe9J+Jfq1geJ61AKW0QEgLzGMNwtIMdxbDUzLxcun8W7NbJO0e2Jg/Nxm3cCSVzzg==} + engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - '@aws-sdk/client-rds-data': '>=3' - '@cloudflare/workers-types': '>=4' - '@electric-sql/pglite': '>=0.2.0' - '@libsql/client': '>=0.10.0' - '@libsql/client-wasm': '>=0.10.0' - '@neondatabase/serverless': '>=0.10.0' - '@op-engineering/op-sqlite': '>=2' - '@opentelemetry/api': ^1.4.1 - '@planetscale/database': '>=1.13' - '@prisma/client': '*' - '@tidbcloud/serverless': '*' - '@types/better-sqlite3': '*' - '@types/pg': '*' - '@types/sql.js': '*' - '@upstash/redis': '>=1.34.7' - '@vercel/postgres': '>=0.8.0' - '@xata.io/client': '*' - better-sqlite3: '>=7' - bun-types: '*' - expo-sqlite: '>=14.0.0' - gel: '>=2' - knex: '*' - kysely: '*' - mysql2: '>=2' - pg: '>=8' - postgres: '>=3' - prisma: '*' - sql.js: '>=1' - sqlite3: '>=5' + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + vite: ^8.0.0 peerDependenciesMeta: - '@aws-sdk/client-rds-data': - optional: true - '@cloudflare/workers-types': - optional: true - '@electric-sql/pglite': - optional: true - '@libsql/client': - optional: true - '@libsql/client-wasm': - optional: true - '@neondatabase/serverless': - optional: true - '@op-engineering/op-sqlite': - optional: true - '@opentelemetry/api': - optional: true - '@planetscale/database': - optional: true - '@prisma/client': - optional: true - '@tidbcloud/serverless': - optional: true - '@types/better-sqlite3': - optional: true - '@types/pg': - optional: true - '@types/sql.js': - optional: true - '@upstash/redis': - optional: true - '@vercel/postgres': - optional: true - '@xata.io/client': - optional: true - better-sqlite3: - optional: true - bun-types: - optional: true - expo-sqlite: - optional: true - gel: - optional: true - knex: - optional: true - kysely: - optional: true - mysql2: - optional: true - pg: - optional: true - postgres: - optional: true - prisma: - optional: true - sql.js: + '@rolldown/plugin-babel': optional: true - sqlite3: + babel-plugin-react-compiler: optional: true - drizzle-zod@0.8.3: - resolution: {integrity: sha512-66yVOuvGhKJnTdiqj1/Xaaz9/qzOdRJADpDa68enqS6g3t0kpNkwNYjUuaeXgZfO/UWuIM9HIhSlJ6C5ZraMww==} + '@vitest/expect@4.1.7': + resolution: {integrity: sha512-1R+tw0ortHEbZDGMymm+pN7/AFQ/RkFFdtd7EN+VBpynKmLbP8A3rpEXdshBJ7+8hQ9zBJh/i1s0yKNtxAnU7w==} + + '@vitest/mocker@4.1.7': + resolution: {integrity: sha512-vY7nuamKgfvpA1Koa3oYIw/k7D6kZnpGyNMZW8loow2bsBYla1TFdqTaXncWdRn4pgwNs+90RhnXhJScDwQeJA==} peerDependencies: - drizzle-orm: '>=0.36.0' - zod: ^3.25.0 || ^4.0.0 + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} + '@vitest/pretty-format@4.1.7': + resolution: {integrity: sha512-umgCarTOYQWIaDMvGDRZij+6b9oVeLIyJzfN+AS88e0ZOU3QTgNNSTtjQOpcvWr3np1N0j4WgZj+sb3oYBDscw==} - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + '@vitest/runner@4.1.7': + resolution: {integrity: sha512-BapjmAQ2aI78WdMEfeUWivnfVzB+VPGwWRQcJE0OUq7qEeEcBsCSf+0T5iREBNE5nBb4wA5Ya0W6IA+sghdEFw==} - ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + '@vitest/snapshot@4.1.7': + resolution: {integrity: sha512-ZacLzja+TmJeZ1h14xW2FB/WpeimUD3haBXQPyJqxvo8jQTmfeA8zv58mtjN2C7EHXZDYVcVYdYmAxjkWVvKCw==} - ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + '@vitest/spy@4.1.7': + resolution: {integrity: sha512-kbkI5LMWakyuTIvs6fUJ5qdIVb1XVKsYJAT4OJ938cHMROYMSfmoQdZy0aaAnjbbc8F61vkoTqz/Az+/HiIu5Q==} - effect@3.21.1: - resolution: {integrity: sha512-bA3TsBd0mByThuCnE6FQqS+L3DLazk4UbE9jp0CqVfIjQl5DKi8sAe93O/ZKeF7clL65fJxcsVGiAKYXdnHByA==} + '@vitest/utils@4.1.7': + resolution: {integrity: sha512-T532WBu791cBxJlCl6SO+J14l81DQx6uQHm1bQbmCDY7nqlEIgkza/UFnSBNaUtSf41unldDFjdOBYEQC4b5Hw==} - electrobun@1.18.1: - resolution: {integrity: sha512-tgZ+WKGskn/1/Y5i1mpVCCkgRa1O31Tz7MIArBTK44GfPzT43uOq9c/HvxdQGrLeZV8ZvjK1lQrwqSXCgh6tvA==} - hasBin: true + '@vue/compiler-core@3.5.40': + resolution: {integrity: sha512-39E8IgOhTbVDnoJFMKc2DvYnypcZwUqgUhQkccva/0m6FUwtIKSGV7n1hpVmYcFaoRAwf9pBcwnKlCEsN63ZEQ==} - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + '@vue/compiler-dom@3.5.40': + resolution: {integrity: sha512-pwkx4vqlqOspFstrcmzwkKLePVMD3PT65imRzLhanU2V1Fj4K13g6OXjanOyzw3aTAuRk84BOmY8f3rEHqPaVA==} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + '@vue/compiler-sfc@3.5.40': + resolution: {integrity: sha512-gIf497P4kpuALcvs5n3AEg1Vdn0pSY4XbjASIfHNYF1/MP3T2Mf2STERTubysBxCRxzJGJYtF/O7vwJrxFB3Vw==} - encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} - engines: {node: '>= 0.8'} + '@vue/compiler-ssr@3.5.40': + resolution: {integrity: sha512-rrE5xiXG663+vHCHa3J9p2z5OcBRjXmoqenprJxAFQxg5pSshzeBiCE6pu46axapRJ2Adk0YDA2BRZVjiHXnhg==} - end-of-stream@1.4.5: - resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + '@vue/reactivity@3.5.40': + resolution: {integrity: sha512-B7ot9UlUZOi1zbq61/LvE88ZLTV8IlajTdiZTAEiDQgrnIMIZoPr9kGw0Zw46ObW62O9+H/Be3kMbfb7kYPQZA==} - entities@7.0.1: - resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} - engines: {node: '>=0.12'} + '@vue/runtime-core@3.5.40': + resolution: {integrity: sha512-KAZLweuZ6uUJPK1PMSQPgBU5gCjgrrfjUhSglmU9NhH+Zjepa8cnwSydPWDWHDwOgY4g3VcZ+PljbiHlURNCbw==} - env-paths@3.0.0: - resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + '@vue/runtime-dom@3.5.40': + resolution: {integrity: sha512-ZfrX8ssZQds900L9pr8AuK05ddnMsR4MPMZr8cPN9GoqoPWcXLhjvvbIA2SMv+7a97sJ1vv9pj/zxK0Cq/eEFQ==} - error-stack-parser-es@1.0.5: - resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} + '@vue/server-renderer@3.5.40': + resolution: {integrity: sha512-XNJym9WpevhTVt1HuwOrCRJ5Q+9z4BjTMrDtjTrvx74SmUll8spNTw6whWJa9mEkO4PKn5TihI/bm/8ds2QVJw==} - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} + '@vue/shared@3.5.40': + resolution: {integrity: sha512-WxnBtruIqOoV3rA4jeKDWzrYI5h7Cp4+pjwDi8kWGHz+IslhiN+wguLVVhtv2l8VoU02rzDCVfDjgCl1lNpZVg==} - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} + '@workflow/serde@4.1.0': + resolution: {integrity: sha512-pav4F2BoirECWR7Nf1TKt+2eETcBj7jj4cBefQ8VXQCA6NPkaKeLfj/zMgi+3zYV5ZIBT4GuUiphsj0/b9hPQQ==} - es-module-lexer@2.1.0: - resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + '@wterm/core@0.3.0': + resolution: {integrity: sha512-aQ73QBP+eyA3kcn31mA7DmAi7qmEsQijZdmvgwxtSjCi2248EAOZgtkGDpjlspfrxyVxQbUl/IF+gCVcXt4nZQ==} - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} + '@wterm/dom@0.3.0': + resolution: {integrity: sha512-OiUl7reGSlW02yb5wGXMplMZhW2HBkBSFxvbFj15I832UK0QFIHRvhE2l6Xgae8ROn9bNLaALoKDFvcUuz80iQ==} - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} + '@wterm/ghostty@0.3.0': + resolution: {integrity: sha512-TDjEmUSRD7IaFxq31P7+I3Inkp5mHCfBfO6LYj3/vbLbWOkOZOKPhjAcZ36AYFHe9Q0HLCFvLWmrxIO3aGCjDA==} - esast-util-from-estree@2.0.0: - resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} + '@wterm/react@0.3.0': + resolution: {integrity: sha512-1rua/roQGCIGkNxjs9TVq+EkXJ0n2IK6aCoaGIQJpvzuHv7iU9/lngG3i1SCpX6deOOO/wpfhtjDTI+z9XF0aA==} + peerDependencies: + '@wterm/dom': 0.3.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 - esast-util-from-js@2.0.1: - resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} + '@xterm/addon-fit@0.11.0': + resolution: {integrity: sha512-jYcgT6xtVYhnhgxh3QgYDnnNMYTcf8ElbxxFzX0IZo+vabQqSPAjC3c1wJrKB5E19VwQei89QCiZZP86DCPF7g==} - esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} - engines: {node: '>=18'} - hasBin: true + '@xterm/xterm@6.0.0': + resolution: {integrity: sha512-TQwDdQGtwwDt+2cgKDLn0IRaSxYu1tSUjgKarSDkUM0ZNiSRXFpjxEsvc/Zgc5kq5omJ+V0a8/kIM2WD3sMOYg==} - esbuild@0.27.3: - resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} - engines: {node: '>=18'} - hasBin: true + '@xyflow/react@12.10.2': + resolution: {integrity: sha512-CgIi6HwlcHXwlkTpr0fxLv/0sRVNZ8IdwKLzzeCscaYBwpvfcH1QFOCeaTCuEn1FQEs/B8CjnTSjhs8udgmBgQ==} + peerDependencies: + react: '>=17' + react-dom: '>=17' - esbuild@0.27.7: - resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} - engines: {node: '>=18'} - hasBin: true + '@xyflow/system@0.0.76': + resolution: {integrity: sha512-hvwvnRS1B3REwVDlWexsq7YQaPZeG3/mKo1jv38UmnpWmxihp14bW6VtEOuHEwJX2FvzFw8k77LyKSk/wiZVNA==} - esbuild@0.28.0: - resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==} - engines: {node: '>=18'} - hasBin: true + '@yarnpkg/lockfile@1.1.0': + resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} - escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + accepts@2.0.0: + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} + engines: {node: '>= 0.6'} - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} hasBin: true - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-util-attach-comments@3.0.0: - resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} - - estree-util-build-jsx@3.0.1: - resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} - - estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} - estree-util-scope@1.0.0: - resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} + agentkeepalive@4.6.0: + resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} + engines: {node: '>= 8.0.0'} - estree-util-to-js@2.0.0: - resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + ai@6.0.168: + resolution: {integrity: sha512-2HqCJuO+1V2aV7vfYs5LFEUfxbkGX+5oa54q/gCCTL7KLTdbxcCu5D7TdLA5kwsrs3Szgjah9q6D9tpjHM3hUQ==} + engines: {node: '>=18'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 - estree-util-visit@2.0.0: - resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + ai@7.0.48: + resolution: {integrity: sha512-QmqshWFEDdkFFqSgdJ4cogaoDIYaedqbv73q/NXEYNkSIocJCzXnGFVyM9lrtAGTSBfm+5hq3/292ooXJ1jDSw==} + engines: {node: '>=22'} + peerDependencies: + zod: ^3.25.76 || ^4.1.8 - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} + ajv@8.18.0: + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} - etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} + alchemy@0.93.11: + resolution: {integrity: sha512-qe6aax8tmpDkD6deKKCdEdkgV65PhEkfxNNAxxgWSKwku4IBdJ+i13tZ1aFNkKnof5mliczWboDNAU2LXVFCXQ==} + hasBin: true + peerDependencies: + '@astrojs/cloudflare': ^12.6.4 + '@aws-sdk/client-dynamodb': ^3.0.0 + '@aws-sdk/client-iam': ^3.0.0 + '@aws-sdk/client-lambda': ^3.0.0 + '@aws-sdk/client-s3': ^3.0.0 + '@aws-sdk/client-sesv2': ^3.0.0 + '@aws-sdk/client-sqs': ^3.0.0 + '@aws-sdk/client-ssm': ^3.0.0 + '@aws-sdk/client-sts': ^3.0.0 + '@cloudflare/vite-plugin': ^1.21.2 + '@coinbase/cdp-sdk': ^0.10.0 + '@libsql/client': ^0.15.12 + '@opennextjs/cloudflare': ^1.6.5 + astro: ^5.13.2 + rwsdk: ^1.0.0-beta.51 + stripe: ^18.5.0 + vite: '>=6.0.0' + peerDependenciesMeta: + '@astrojs/cloudflare': + optional: true + '@aws-sdk/client-dynamodb': + optional: true + '@aws-sdk/client-iam': + optional: true + '@aws-sdk/client-lambda': + optional: true + '@aws-sdk/client-s3': + optional: true + '@aws-sdk/client-sesv2': + optional: true + '@aws-sdk/client-sqs': + optional: true + '@aws-sdk/client-ssm': + optional: true + '@aws-sdk/client-sts': + optional: true + '@cloudflare/vite-plugin': + optional: true + '@coinbase/cdp-sdk': + optional: true + '@libsql/client': + optional: true + '@opennextjs/cloudflare': + optional: true + astro: + optional: true + rwsdk: + optional: true + stripe: + optional: true + vite: + optional: true - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} - eventsource-parser@3.0.7: - resolution: {integrity: sha512-zwxwiQqexizSXFZV13zMiEtW1E3lv7RlUv+1f5FBiR4x7wFhEjm3aFTyYkZQWzyN08WnPdox015GoRH5D/E5YA==} - engines: {node: '>=18.0.0'} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} - eventsource@3.0.7: - resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} - engines: {node: '>=18.0.0'} + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} - execa@9.6.1: - resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} - engines: {node: ^18.19.0 || >=20.5.0} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} - expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - expect-type@1.3.0: - resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} - engines: {node: '>=12.0.0'} + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} - express-rate-limit@8.3.2: - resolution: {integrity: sha512-77VmFeJkO0/rvimEDuUC5H30oqUC4EyOhyGccfqoLebB0oiEYfM7nwPrsDsBL1gsTpwfzX8SFy2MT3TDyRq+bg==} - engines: {node: '>= 16'} - peerDependencies: - express: '>= 4.11' + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} - express@5.2.1: - resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} - engines: {node: '>= 18'} + ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} - exsolve@1.0.8: - resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} + astring@1.9.0: + resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} + hasBin: true - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - extract-zip@2.0.1: - resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} - engines: {node: '>= 10.17.0'} - hasBin: true + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} - fast-check@3.23.2: - resolution: {integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==} - engines: {node: '>=8.0.0'} + aws4fetch@1.0.20: + resolution: {integrity: sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==} - fast-content-type-parse@2.0.1: - resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - fast-json-patch@3.1.1: - resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} - fast-uri@3.1.0: - resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - fast-xml-builder@1.1.5: - resolution: {integrity: sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA==} + basic-ftp@5.3.0: + resolution: {integrity: sha512-5K9eNNn7ywHPsYnFwjKgYH8Hf8B5emh7JKcPaVjjrMJFQQwGpwowEnZNEtHs7DfR7hCZsmaK3VA4HUK0YarT+w==} + engines: {node: '>=10.0.0'} - fast-xml-builder@1.2.0: - resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==} + before-after-hook@3.0.2: + resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} - fast-xml-parser@5.7.1: - resolution: {integrity: sha512-8Cc3f8GUGUULg34pBch/KGyPLglS+OFs05deyOlY7fL2MTagYPKrVQNmR1fLF/yJ9PH5ZSTd3YDF6pnmeZU+zA==} - hasBin: true + better-sqlite3@11.10.0: + resolution: {integrity: sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==} - fast-xml-parser@5.7.3: - resolution: {integrity: sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==} - hasBin: true + bignumber.js@9.3.1: + resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} - fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} - engines: {node: '>=12.0.0'} + bippy@0.5.39: + resolution: {integrity: sha512-8hE8rKSl8JWyeaY+JjpnmceWAZPpLEyzOZQpWXM5Rc7861c5WotMJHy2aRZKZrGA8nMpvLNF01t4yQQ+HcZG3w==} peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true + react: '>=17.0.1' - fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} + bippy@0.5.43: + resolution: {integrity: sha512-Tvu7b1M7+d8b9/YHaCeODEsi2CgbuoBql+dWSBrNnCuqJ1gMUeY3i0r+319hvjjl5GVBP6FFWxrKnq3fhZER0w==} + peerDependencies: + react: '>=17.0.1' - figures@6.1.0: - resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} - engines: {node: '>=18'} + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - file-type@21.3.4: - resolution: {integrity: sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==} - engines: {node: '>=20'} + blake3-wasm@2.1.5: + resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + body-parser@2.2.2: + resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} + engines: {node: '>=18'} - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} + bowser@2.14.1: + resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} - finalhandler@2.1.1: - resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} - engines: {node: '>= 18.0.0'} + brace-expansion@1.1.14: + resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==} - find-my-way-ts@0.1.6: - resolution: {integrity: sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA==} + brace-expansion@2.1.1: + resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} - find-process@2.1.1: - resolution: {integrity: sha512-SrQDx3QhlmHM90iqn9rdjCQcw/T+WlpOkHFsjoRgB+zTpDfltNA1VSNYeYELwhUTJy12UFxqjWhmhOrJc+o4sA==} - hasBin: true + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} + engines: {node: 18 || 20 || >=22} - find-yarn-workspace-root@2.0.0: - resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} - fix-dts-default-cjs-exports@1.0.1: - resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - form-data-encoder@1.7.2: - resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - form-data@4.0.5: - resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} - engines: {node: '>= 6'} + bun-ffi-structs@0.2.4: + resolution: {integrity: sha512-AJzsqoVFs1KBbJbWHIYrVZLDC3NhTqqh25awRXqzoLzmBAKr5oqk6+CwuYHAekKx+VBCYVohBoKuRq40dV+TYg==} + peerDependencies: + typescript: ^5 - formdata-node@4.4.1: - resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} - engines: {node: '>= 12.20'} + bun-types@1.3.13: + resolution: {integrity: sha512-QXKeHLlOLqQX9LgYaHJfzdBaV21T63HhFJnvuRCcjZiaUDpbs5ED1MgxbMra71CsryN/1dAoXuJJJwIv/2drVA==} - formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} + bun-types@1.3.14: + resolution: {integrity: sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ==} - forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} - fresh@2.0.0: - resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + bundle-require@5.1.0: + resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} - fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} - fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} - gaxios@7.1.4: - resolution: {integrity: sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA==} - engines: {node: '>=18'} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - gcp-metadata@8.1.2: - resolution: {integrity: sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==} - engines: {node: '>=18'} + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - get-east-asian-width@1.5.0: - resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} - engines: {node: '>=18'} + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} + character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} - get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - get-stream@9.0.1: - resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} - engines: {node: '>=18'} + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - get-uri@6.0.5: - resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} - engines: {node: '>= 14'} + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} - github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + classcat@5.0.5: + resolution: {integrity: sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==} - glob@10.5.0: - resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + cli-highlight@2.1.11: + resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} + engines: {node: '>=8.0.0', npm: '>=5.0.0'} hasBin: true - glob@13.0.6: - resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} - engines: {node: 18 || 20 || >=22} + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + cloudflare@6.3.0: + resolution: {integrity: sha512-in5RDFuRJiX4iY6TPjCLN7E3D75mFqb73uIL3kvBiCgQ3i2Bec0peT2qFtBUffr/Ca2/lx67T+NtJKAFBiu2+A==} - google-auth-library@10.6.2: - resolution: {integrity: sha512-e27Z6EThmVNNvtYASwQxose/G57rkRuaRbQyxM2bvYLLX/GqWZ5chWq2EBoUchJbCc57eC9ArzO5wMsEmWftCw==} - engines: {node: '>=18'} + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} - google-logging-utils@1.1.3: - resolution: {integrity: sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==} - engines: {node: '>=14'} + codemirror@6.0.2: + resolution: {integrity: sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==} - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} + collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} - graphlib@2.1.8: - resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==} + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - happy-dom@20.9.0: - resolution: {integrity: sha512-GZZ9mKe8r646NUAf/zemnGbjYh4Bt8/MqASJY+pSm5ZDtc3YQox+4gsLI7yi1hba6o+eCsGxpHn5+iEVn31/FQ==} - engines: {node: '>=20.0.0'} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} - hasown@2.0.3: - resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} - engines: {node: '>= 0.4'} + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} - hast-util-to-estree@3.1.3: - resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} - hast-util-to-jsx-runtime@2.3.6: - resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - highlight.js@10.7.3: - resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} - hono@4.12.14: - resolution: {integrity: sha512-am5zfg3yu6sqn5yjKBNqhnTX7Cv+m00ox+7jbaKkrLMRJ4rAdldd1xPd/JzbBWspqaQv6RSTrgFN95EsfhC+7w==} - engines: {node: '>=16.9.0'} + content-disposition@1.1.0: + resolution: {integrity: sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==} + engines: {node: '>=18'} - hosted-git-info@9.0.2: - resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==} - engines: {node: ^20.17.0 || >=22.9.0} + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} - http-errors@2.0.1: - resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} - engines: {node: '>= 0.8'} + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} + cookie-es@3.1.1: + resolution: {integrity: sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==} - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} + cookie-signature@1.2.2: + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} + engines: {node: '>=6.6.0'} - human-signals@8.0.1: - resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} - engines: {node: '>=18.18.0'} + cookie@0.7.2: + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + engines: {node: '>= 0.6'} - humanize-ms@1.2.1: - resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} + engines: {node: '>=18'} - iconv-lite@0.7.2: - resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} - engines: {node: '>=0.10.0'} + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + cors@2.8.6: + resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} + engines: {node: '>= 0.10'} - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} - engines: {node: '>= 4'} + cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} - immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} - incur@0.4.1: - resolution: {integrity: sha512-+0JwzFYrPsuASGBJp7ya3HRT+ET406L57wmbji52bAlxHWPIRC9Zh4ZWaatsj1nqZGHAbHse5KBs7P3L3ytc8g==} - engines: {node: '>=22'} - hasBin: true + crelt@1.0.7: + resolution: {integrity: sha512-aK6BbWfhf4U/wCcLHKPJl/xa6VkVstRaPywWtMKGwuOLc/wZTyQYuoxgvZnNsBvv7Kg3YTBQYYBCggcviQczuA==} - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + cron-parser@5.5.0: + resolution: {integrity: sha512-oML4lKUXxizYswqmxuOCpgFS8BNUJpIu6k/2HVHyaL8Ynnf3wdf9tkns0yRdJLSIjkJ+b0DXHMZEHGpMwjnPww==} + engines: {node: '>=18'} - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + cron-parser@5.7.0: + resolution: {integrity: sha512-iSpDHpwwW/GhIg4JVODYlWUEpMNSimaHvqOhHpOz1W+Y97z1lL1nf+dpcF17cNwFRpTtKN9devgi1fxflp3Phw==} + engines: {node: '>=18'} - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + cross-spawn-windows-exe@1.2.0: + resolution: {integrity: sha512-mkLtJJcYbDCxEG7Js6eUnUNndWjyUZwJ3H7bErmmtOYU/Zb99DyUkpamuIZE0b3bhmJyZ7D90uS6f+CGxRRjOw==} + engines: {node: '>= 10'} - inline-style-parser@0.2.7: - resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} + cross-spawn@6.0.6: + resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} + engines: {node: '>=4.8'} - ip-address@10.1.0: - resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} - engines: {node: '>= 12'} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} - ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + cytoscape-cose-bilkent@4.1.0: + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 - is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + cytoscape-fcose@2.2.0: + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 - is-ci@2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true + cytoscape@3.34.0: + resolution: {integrity: sha512-62rNSrioXw93uliKFBwjukeQyeWwH2PqDrTac31r2P6464u3AUvTk0xS4LVvT251g7IgkFunrI48ZEZGjywSOg==} + engines: {node: '>=0.10'} - is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} - is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} - is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} engines: {node: '>=12'} - is-promise@4.0.0: - resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true - is-stream@4.0.1: - resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} - engines: {node: '>=18'} + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} - is-unicode-supported@2.1.0: - resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} - engines: {node: '>=18'} + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} - is-wsl@3.1.1: - resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} - engines: {node: '>=16'} + d3-format@3.1.2: + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} + engines: {node: '>=12'} - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} - isbot@5.1.41: - resolution: {integrity: sha512-9WFV/Vhh0FEj6CQ7MoHweEL9/vLKPjeoD2I2htbAjX7kbW7VJs3OCpWOVyd+JraNTWVU6/DRx2MZy2KaUNXHcg==} - engines: {node: '>=18'} + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} - jose@6.2.2: - resolution: {integrity: sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==} + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} - joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} - json-bigint@1.0.0: - resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} - json-schema-to-ts@3.1.1: - resolution: {integrity: sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==} - engines: {node: '>=16'} + d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} - json-schema-typed@8.0.2: - resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} - json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} - jsonfile@6.2.1: - resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} + d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} - jszip@3.10.1: - resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} - jwa@2.0.1: - resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} - jws@4.0.1: - resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} - klaw-sync@6.0.0: - resolution: {integrity: sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==} + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 - koffi@2.16.1: - resolution: {integrity: sha512-0Ie6CfD026dNfWSosDw9dPxPzO9Rlyo0N8m5r05S8YjytIpuilzMFDMY4IDy/8xQsTwpuVinhncD+S8n3bcYZQ==} + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} - kubernetes-types@1.30.0: - resolution: {integrity: sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q==} + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} - libsodium-wrappers@0.8.4: - resolution: {integrity: sha512-mu8aAWucZjTB5O/BtGXtW4e1agy7uHxNYG7zPthmmD1jU43LCDmSWZLN4JhflbdPXj3yDO4lxM1O9hLDgIOXDw==} + dagre-d3-es@7.0.14: + resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} - libsodium@0.8.4: - resolution: {integrity: sha512-lMcYaRi0zcs7tarATsQUYC7rstliIXZuoq0c6zXSgNtSNtdvBgkSegjWhpMJAXzKX3SUSwIp7+zEsob+j3LuRw==} + dagre@0.8.5: + resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==} - lie@3.3.0: - resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} - lightningcss-android-arm64@1.32.0: - resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [android] + data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} - lightningcss-darwin-arm64@1.32.0: - resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] + dayjs@1.11.21: + resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==} - lightningcss-darwin-x64@1.32.0: - resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - lightningcss-freebsd-x64@1.32.0: - resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [freebsd] + decimal.js-light@2.5.1: + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} - lightningcss-linux-arm-gnueabihf@1.32.0: - resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] + decode-named-character-reference@1.3.0: + resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} - lightningcss-linux-arm64-gnu@1.32.0: - resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} - lightningcss-linux-arm64-musl@1.32.0: - resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} - lightningcss-linux-x64-gnu@1.32.0: - resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} - lightningcss-linux-x64-musl@1.32.0: - resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} - lightningcss-win32-arm64-msvc@1.32.0: - resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [win32] + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} - lightningcss-win32-x64-msvc@1.32.0: - resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} - lightningcss@1.32.0: - resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} - engines: {node: '>= 12.0.0'} + degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + delaunator@5.1.0: + resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} - lodash@4.18.1: - resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} - - loglevel@1.9.2: - resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} - engines: {node: '>= 0.6.0'} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} - long@5.3.2: - resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} - lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - lru-cache@11.3.5: - resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==} - engines: {node: 20 || >=22} + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} + diff@8.0.2: + resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==} + engines: {node: '>=0.3.1'} - luxon@3.7.2: - resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} - engines: {node: '>=12'} + diff@9.0.0: + resolution: {integrity: sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==} + engines: {node: '>=0.3.1'} - magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + dompurify@3.4.12: + resolution: {integrity: sha512-zQvGet8Z2sWbQhCmfFz/T5QWH2oBmjnqK3qvOjaqaNLrLEF912WamU+ohnTp0TCep/MFVHpdJuCZEdFOdTnEFg==} - markdown-extensions@2.0.0: - resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} - engines: {node: '>=16'} + drizzle-orm@0.45.2: + resolution: {integrity: sha512-kY0BSaTNYWnoDMVoyY8uxmyHjpJW1geOmBMdSSicKo9CIIWkSxMIj2rkeSR51b8KAPB7m+qysjuHme5nKP+E5Q==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=4' + '@electric-sql/pglite': '>=0.2.0' + '@libsql/client': '>=0.10.0' + '@libsql/client-wasm': '>=0.10.0' + '@neondatabase/serverless': '>=0.10.0' + '@op-engineering/op-sqlite': '>=2' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1.13' + '@prisma/client': '*' + '@tidbcloud/serverless': '*' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/sql.js': '*' + '@upstash/redis': '>=1.34.7' + '@vercel/postgres': '>=0.8.0' + '@xata.io/client': '*' + better-sqlite3: '>=7' + bun-types: '*' + expo-sqlite: '>=14.0.0' + gel: '>=2' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + prisma: '*' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@electric-sql/pglite': + optional: true + '@libsql/client': + optional: true + '@libsql/client-wasm': + optional: true + '@neondatabase/serverless': + optional: true + '@op-engineering/op-sqlite': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@prisma/client': + optional: true + '@tidbcloud/serverless': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/sql.js': + optional: true + '@upstash/redis': + optional: true + '@vercel/postgres': + optional: true + '@xata.io/client': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + expo-sqlite: + optional: true + gel: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + prisma: + optional: true + sql.js: + optional: true + sqlite3: + optional: true - marked@15.0.12: - resolution: {integrity: sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==} - engines: {node: '>= 18'} - hasBin: true + drizzle-zod@0.8.3: + resolution: {integrity: sha512-66yVOuvGhKJnTdiqj1/Xaaz9/qzOdRJADpDa68enqS6g3t0kpNkwNYjUuaeXgZfO/UWuIM9HIhSlJ6C5ZraMww==} + peerDependencies: + drizzle-orm: '>=0.36.0' + zod: ^3.25.0 || ^4.0.0 - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - mdast-util-from-markdown@2.0.3: - resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} - - mdast-util-mdx-expression@2.0.1: - resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - mdast-util-mdx-jsx@3.2.0: - resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - mdast-util-mdx@3.0.0: - resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + effect@3.21.1: + resolution: {integrity: sha512-bA3TsBd0mByThuCnE6FQqS+L3DLazk4UbE9jp0CqVfIjQl5DKi8sAe93O/ZKeF7clL65fJxcsVGiAKYXdnHByA==} - mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + electrobun@1.18.1: + resolution: {integrity: sha512-tgZ+WKGskn/1/Y5i1mpVCCkgRa1O31Tz7MIArBTK44GfPzT43uOq9c/HvxdQGrLeZV8ZvjK1lQrwqSXCgh6tvA==} + hasBin: true - mdast-util-to-hast@13.2.1: - resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} - mdast-util-to-markdown@2.1.2: - resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - media-typer@1.1.0: - resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} - merge-descriptors@2.0.0: - resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} - engines: {node: '>=18'} - - micromark-core-commonmark@2.0.3: - resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - micromark-extension-mdx-expression@3.0.1: - resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} - micromark-extension-mdx-jsx@3.0.2: - resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} + env-paths@3.0.0: + resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - micromark-extension-mdx-md@2.0.0: - resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + error-stack-parser-es@1.0.5: + resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} - micromark-extension-mdxjs-esm@3.0.0: - resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} - micromark-extension-mdxjs@3.0.0: - resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} - micromark-factory-destination@2.0.1: - resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} - micromark-factory-label@2.0.1: - resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} - micromark-factory-mdx-expression@2.0.3: - resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} - micromark-factory-space@2.0.1: - resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + es-toolkit@1.50.0: + resolution: {integrity: sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==} - micromark-factory-title@2.0.1: - resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + esast-util-from-estree@2.0.0: + resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} - micromark-factory-whitespace@2.0.1: - resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + esast-util-from-js@2.0.1: + resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - micromark-util-character@2.1.1: - resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true - micromark-util-chunked@2.0.1: - resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + esbuild@0.27.3: + resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} + engines: {node: '>=18'} + hasBin: true - micromark-util-classify-character@2.0.1: - resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true - micromark-util-combine-extensions@2.0.1: - resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + esbuild@0.28.0: + resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==} + engines: {node: '>=18'} + hasBin: true - micromark-util-decode-numeric-character-reference@2.0.2: - resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} - micromark-util-decode-string@2.0.1: - resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - micromark-util-encode@2.0.1: - resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} - micromark-util-events-to-acorn@2.0.3: - resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true - micromark-util-html-tag-name@2.0.1: - resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true - micromark-util-normalize-identifier@2.0.1: - resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} - micromark-util-resolve-all@2.0.1: - resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} - micromark-util-sanitize-uri@2.0.1: - resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} - micromark-util-subtokenize@2.1.0: - resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - micromark-util-symbol@2.0.1: - resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + estree-util-scope@1.0.0: + resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} - micromark-util-types@2.0.2: - resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - micromark@4.0.2: - resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - mime-db@1.54.0: - resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} - engines: {node: '>= 0.6'} + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} - mime-types@3.0.2: - resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} - engines: {node: '>=18'} + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} - miniflare@4.20260424.0: - resolution: {integrity: sha512-B6MKBBd5TJ19daUc3Ae9rWctn1nDA/VCXykXfCsp9fTxyfGxnZY27tJs1caxgE9MWEMMKGbGHouqVtgKbKGxmw==} + eventsource-parser@3.0.7: + resolution: {integrity: sha512-zwxwiQqexizSXFZV13zMiEtW1E3lv7RlUv+1f5FBiR4x7wFhEjm3aFTyYkZQWzyN08WnPdox015GoRH5D/E5YA==} engines: {node: '>=18.0.0'} - hasBin: true - miniflare@4.20260601.0: - resolution: {integrity: sha512-56TFiulSEQu43cYxdXgCiA3U3i+Ls0NoXwJXd6DmpNsx8yl/1Il2T3DQ4CMXjR6yfE7CSvC5MuXaqcSAMREjgw==} - engines: {node: '>=22.0.0'} - hasBin: true + eventsource-parser@3.1.0: + resolution: {integrity: sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==} + engines: {node: '>=18.0.0'} - minimatch@10.2.5: - resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} - engines: {node: 18 || 20 || >=22} + eventsource@3.0.7: + resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} + engines: {node: '>=18.0.0'} - minimatch@3.1.5: - resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + execa@9.6.1: + resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} + engines: {node: ^18.19.0 || >=20.5.0} - minimatch@9.0.9: - resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} - engines: {node: '>=16 || 14 >=14.17'} + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} - minipass@7.1.3: - resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} - engines: {node: '>=16 || 14 >=14.17'} + express-rate-limit@8.3.2: + resolution: {integrity: sha512-77VmFeJkO0/rvimEDuUC5H30oqUC4EyOhyGccfqoLebB0oiEYfM7nwPrsDsBL1gsTpwfzX8SFy2MT3TDyRq+bg==} + engines: {node: '>= 16'} + peerDependencies: + express: '>= 4.11' - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + express@5.2.1: + resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} + engines: {node: '>= 18'} - mlly@1.8.2: - resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + exsolve@1.0.8: + resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - msgpackr-extract@3.0.3: - resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} hasBin: true - msgpackr@1.11.9: - resolution: {integrity: sha512-FkoAAyyA6HM8wL882EcEyFZ9s7hVADSwG9xrVx3dxxNQAtgADTrJoEWivID82Iv1zWDsv/OtbrrcZAzGzOMdNw==} + fast-check@3.23.2: + resolution: {integrity: sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==} + engines: {node: '>=8.0.0'} - multipasta@0.2.7: - resolution: {integrity: sha512-KPA58d68KgGil15oDqXjkUBEBYc00XvbPj5/X+dyzeo/lWm9Nc25pQRlf1D+gv4OpK7NM0J1odrbu9JNNGvynA==} + fast-content-type-parse@2.0.1: + resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - nanoid@3.3.12: - resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + fast-json-patch@3.1.1: + resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} - napi-build-utils@2.0.0: - resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} + fast-string-truncated-width@3.0.3: + resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} - negotiator@1.0.0: - resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} - engines: {node: '>= 0.6'} + fast-string-width@3.0.2: + resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} - neo-blessed@0.2.0: - resolution: {integrity: sha512-C2kC4K+G2QnNQFXUIxTQvqmrdSIzGTX1ZRKeDW6ChmvPRw8rTkTEJzbEQHiHy06d36PCl/yMOCjquCRV8SpSQw==} - engines: {node: '>= 8.0.0'} - hasBin: true + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - netmask@2.1.1: - resolution: {integrity: sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA==} - engines: {node: '>= 0.4.0'} + fast-wrap-ansi@0.2.2: + resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} - neverthrow@8.2.0: - resolution: {integrity: sha512-kOCT/1MCPAxY5iUV3wytNFUMUolzuwd/VF/1KCx7kf6CutrOsTie+84zTGTpgQycjvfLdBBdvBvFLqFD2c0wkQ==} - engines: {node: '>=18'} + fast-xml-builder@1.1.5: + resolution: {integrity: sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA==} - nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + fast-xml-builder@1.2.0: + resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==} - node-abi@3.89.0: - resolution: {integrity: sha512-6u9UwL0HlAl21+agMN3YAMXcKByMqwGx+pq+P76vii5f7hTPtKDp08/H9py6DY+cfDw7kQNTGEj/rly3IgbNQA==} - engines: {node: '>=10'} + fast-xml-parser@5.7.1: + resolution: {integrity: sha512-8Cc3f8GUGUULg34pBch/KGyPLglS+OFs05deyOlY7fL2MTagYPKrVQNmR1fLF/yJ9PH5ZSTd3YDF6pnmeZU+zA==} + hasBin: true - node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + fast-xml-parser@5.7.3: + resolution: {integrity: sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==} + hasBin: true - node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - deprecated: Use your platform's native DOMException instead + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} peerDependencies: - encoding: ^0.1.0 + picomatch: ^3 || ^4 peerDependenciesMeta: - encoding: + picomatch: optional: true - node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - node-gyp-build-optional-packages@5.2.2: - resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} - hasBin: true - - node-pty@1.1.0: - resolution: {integrity: sha512-20JqtutY6JPXTUnL0ij1uad7Qe1baT46lyolh2sSENDd4sTzKZ4nmAFkeAARDKwmlLjPx6XKRlwRUxwjOy+lUg==} + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} - npm-run-path@6.0.0: - resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + file-type@21.3.4: + resolution: {integrity: sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==} + engines: {node: '>=20'} - object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - obug@2.1.1: - resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} - ohash@2.0.11: - resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + finalhandler@2.1.1: + resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} + engines: {node: '>= 18.0.0'} - on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} + find-my-way-ts@0.1.6: + resolution: {integrity: sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA==} - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + find-process@2.1.1: + resolution: {integrity: sha512-SrQDx3QhlmHM90iqn9rdjCQcw/T+WlpOkHFsjoRgB+zTpDfltNA1VSNYeYELwhUTJy12UFxqjWhmhOrJc+o4sA==} + hasBin: true - open@10.2.0: - resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} - engines: {node: '>=18'} + find-yarn-workspace-root@2.0.0: + resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} - open@7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} + fix-dts-default-cjs-exports@1.0.1: + resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} - openai@6.26.0: - resolution: {integrity: sha512-zd23dbWTjiJ6sSAX6s0HrCZi41JwTA1bQVs0wLQPZ2/5o2gxOJA5wh7yOAUgwYybfhDXyhwlpeQf7Mlgx8EOCA==} - hasBin: true - peerDependencies: - ws: ^8.18.0 - zod: ^3.25 || ^4.0 - peerDependenciesMeta: - ws: - optional: true - zod: - optional: true + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} - openapi-types@12.1.3: - resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + form-data-encoder@1.7.2: + resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} - oxlint@1.60.0: - resolution: {integrity: sha512-tnRzTWiWJ9pg3ftRWnD0+Oqh78L6ZSwcEudvCZaER0PIqiAnNyXj5N1dPwjmNpDalkKS9m/WMLN1CTPUBPmsgw==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - oxlint-tsgolint: '>=0.18.0' - peerDependenciesMeta: - oxlint-tsgolint: - optional: true + formdata-node@4.4.1: + resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} + engines: {node: '>= 12.20'} - p-retry@4.6.2: - resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} - engines: {node: '>=8'} + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} - pac-proxy-agent@7.2.0: - resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} - engines: {node: '>= 14'} + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} - pac-resolver@7.0.1: - resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} - engines: {node: '>= 14'} + fractional-indexing@3.4.0: + resolution: {integrity: sha512-8J3glhz2rrpKG6KmI7wmJo3zH1VjeOpN+vTJSw1fOyO+Viqq3zX6/5NGh6oaZB2qIAYdOYuu5Dz9xp4faOO0Pg==} + engines: {node: ^14.13.1 || >=16.0.0} - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + fresh@2.0.0: + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} + engines: {node: '>= 0.8'} - pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - parse-entities@4.0.2: - resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} - parse-ms@4.0.0: - resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} - engines: {node: '>=18'} + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - parse5-htmlparser2-tree-adapter@6.0.1: - resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] - parse5@5.1.1: - resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] - parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} + gaxios@7.1.4: + resolution: {integrity: sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA==} + engines: {node: '>=18'} - partial-json@0.1.7: - resolution: {integrity: sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==} + gcp-metadata@8.1.2: + resolution: {integrity: sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==} + engines: {node: '>=18'} - patch-package@6.5.1: - resolution: {integrity: sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==} - engines: {node: '>=10', npm: '>5'} - hasBin: true + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} - path-expression-matcher@1.5.0: - resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==} - engines: {node: '>=14.0.0'} + get-east-asian-width@1.5.0: + resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} + engines: {node: '>=18'} - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} - path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} + get-uri@6.0.5: + resolution: {integrity: sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==} + engines: {node: '>= 14'} - path-scurry@2.0.2: - resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + + glob@13.0.6: + resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} - path-to-regexp@6.3.0: - resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - path-to-regexp@8.4.2: - resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==} + google-auth-library@10.6.2: + resolution: {integrity: sha512-e27Z6EThmVNNvtYASwQxose/G57rkRuaRbQyxM2bvYLLX/GqWZ5chWq2EBoUchJbCc57eC9ArzO5wMsEmWftCw==} + engines: {node: '>=18'} - pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + google-logging-utils@1.1.3: + resolution: {integrity: sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==} + engines: {node: '>=14'} - pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} - pg-cloudflare@1.4.0: - resolution: {integrity: sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==} + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - pg-connection-string@2.13.0: - resolution: {integrity: sha512-EMnU9E2fSULdsbErBbMaXJvFeD9B4+nPcM3f+4lsiCR0BHLPrLVjv3DbyM2hgQQviKJaTWIRRTjKjWlHg3p2ig==} + graphlib@2.1.8: + resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==} - pg-int8@1.0.1: - resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} - engines: {node: '>=4.0.0'} + hachure-fill@0.5.2: + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} - pg-pool@3.14.0: - resolution: {integrity: sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==} - peerDependencies: - pg: '>=8.0' + happy-dom@20.9.0: + resolution: {integrity: sha512-GZZ9mKe8r646NUAf/zemnGbjYh4Bt8/MqASJY+pSm5ZDtc3YQox+4gsLI7yi1hba6o+eCsGxpHn5+iEVn31/FQ==} + engines: {node: '>=20.0.0'} - pg-protocol@1.14.0: - resolution: {integrity: sha512-n5taZ1kO3s9ngDTVxsEznOqCyToTgz0FLuPq0B33COy5pPpuWJpY3/2oRBVETuOgzdqRXfWpM9HIhp2LBBT1BA==} + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} - pg-types@2.2.0: - resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} - engines: {node: '>=4'} + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} - pg@8.21.0: - resolution: {integrity: sha512-AUP1EYJuHraQGsVoCQVIcM7TEJVGtDzxWtGFZd8rds9d+CCXlU5Js1rYgfLNvxy9iJrpHjGrRjoi/3BT9fRyiA==} - engines: {node: '>= 16.0.0'} - peerDependencies: - pg-native: '>=3.0.1' - peerDependenciesMeta: - pg-native: - optional: true + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} - pgpass@1.0.5: - resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} + engines: {node: '>= 0.4'} - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + hast-util-to-estree@3.1.3: + resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} - picomatch@2.3.2: - resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} - engines: {node: '>=8.6'} + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} - picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} - engines: {node: '>=12'} + hast-util-to-jsx-runtime@2.3.6: + resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} - pirates@4.0.7: - resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} - engines: {node: '>= 6'} + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - pkce-challenge@5.0.1: - resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} - engines: {node: '>=16.20.0'} + highlight.js@10.7.3: + resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} - pkg-types@1.3.1: - resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + hono@4.12.14: + resolution: {integrity: sha512-am5zfg3yu6sqn5yjKBNqhnTX7Cv+m00ox+7jbaKkrLMRJ4rAdldd1xPd/JzbBWspqaQv6RSTrgFN95EsfhC+7w==} + engines: {node: '>=16.9.0'} - playwright-core@1.60.0: - resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} - engines: {node: '>=18'} - hasBin: true + hono@4.12.33: + resolution: {integrity: sha512-+SwvkaiJtxsiPjhy9LivY/1m7UsNqCJetM1BrZl9A5DkQhlbHQDU730mMiDPWjnoCYOM8Chf3WrCJw27kNTPFQ==} + engines: {node: '>=16.9.0'} - playwright@1.60.0: - resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} - engines: {node: '>=18'} - hasBin: true + hosted-git-info@9.0.2: + resolution: {integrity: sha512-M422h7o/BR3rmCQ8UHi7cyyMqKltdP9Uo+J2fXK+RSAY+wTcKOIRyhTuKv4qn+DJf3g+PL890AzId5KZpX+CBg==} + engines: {node: ^20.17.0 || >=22.9.0} - png-to-ico@2.1.8: - resolution: {integrity: sha512-Nf+IIn/cZ/DIZVdGveJp86NG5uNib1ZXMiDd/8x32HCTeKSvgpyg6D/6tUBn1QO/zybzoMK0/mc3QRgAyXdv9w==} - engines: {node: '>=8'} - hasBin: true + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - pngjs@6.0.0: - resolution: {integrity: sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==} - engines: {node: '>=12.13.0'} + http-errors@2.0.1: + resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} + engines: {node: '>= 0.8'} - postcss-load-config@6.0.1: - resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} - engines: {node: '>= 18'} - peerDependencies: - jiti: '>=1.21.0' - postcss: '>=8.0.9' - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - jiti: - optional: true - postcss: - optional: true - tsx: - optional: true - yaml: - optional: true + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} - postcss@8.5.15: - resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} - engines: {node: ^10 || ^12 || >=14} + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} - postgres-array@2.0.0: - resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} - engines: {node: '>=4'} + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} - postgres-bytea@1.0.1: - resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} - engines: {node: '>=0.10.0'} + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} - postgres-date@1.0.7: - resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} - postgres-interval@1.2.0: - resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} - prebuild-install@7.1.3: - resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} - engines: {node: '>=10'} - deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available. - hasBin: true + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - pretty-ms@9.3.0: - resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} - engines: {node: '>=18'} + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + immer@11.1.15: + resolution: {integrity: sha512-VrNANlmnWQnh5COXIIOQXM9oOJw7naGKlBT74ZOOR6lpVXc3gFEu9FJLDFcpCJ2j+NWr8TIwtWD//T6ZX6TKiQ==} - proper-lockfile@4.1.2: - resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} - property-information@7.1.0: - resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} + incur@0.4.1: + resolution: {integrity: sha512-+0JwzFYrPsuASGBJp7ya3HRT+ET406L57wmbji52bAlxHWPIRC9Zh4ZWaatsj1nqZGHAbHse5KBs7P3L3ytc8g==} + engines: {node: '>=22'} + hasBin: true - protobufjs@7.5.5: - resolution: {integrity: sha512-3wY1AxV+VBNW8Yypfd1yQY9pXnqTAN+KwQxL8iYm3/BjKYMNg4i0owhEe26PWDOMaIrzeeF98Lqd5NGz4omiIg==} - engines: {node: '>=12.0.0'} + incur@0.4.26: + resolution: {integrity: sha512-63lwOc8+o1VeFkIW3sWWMrDSP5Dd1NsvucUWyxLUk+DoNRiNl7cj481nlLdlboXkq+tqYPBSlV/7XbylS2S4BA==} + engines: {node: '>=22'} + hasBin: true - proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - proxy-agent@6.5.0: - resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} - engines: {node: '>= 14'} + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - pump@3.0.4: - resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} + inline-style-parser@0.2.7: + resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} - qs@6.15.1: - resolution: {integrity: sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==} - engines: {node: '>=0.6'} + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} - range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} + ip-address@10.1.0: + resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} + engines: {node: '>= 12'} - raw-body@3.0.2: - resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true + is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - rcedit@4.0.1: - resolution: {integrity: sha512-bZdaQi34krFWhrDn+O53ccBDw0MkAT2Vhu75SqhtvhQu4OPyFM4RoVheyYiVQYdjhUi6EJMVWQ0tR6bCIYVkUg==} - engines: {node: '>= 14.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - react-dom@19.2.5: - resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} - peerDependencies: - react: ^19.2.5 + is-ci@2.0.0: + resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} + hasBin: true - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - react-reconciler@0.25.1: - resolution: {integrity: sha512-R5UwsIvRcSs3w8n9k3tBoTtUHdVhu9u84EG7E5M0Jk9F5i6DA1pQzPfUZd6opYWGy56MJOtV3VADzy6DRwYDjw==} - engines: {node: '>=0.10.0'} - peerDependencies: - react: ^16.13.1 + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true - react-reconciler@0.33.0: - resolution: {integrity: sha512-KetWRytFv1epdpJc3J4G75I4WrplZE5jOL7Yq0p34+OVOKF4Se7WrdIdVC45XsSSmUTlht2FM/fM1FZb1mfQeA==} - engines: {node: '>=0.10.0'} - peerDependencies: - react: ^19.2.0 + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true - react@16.13.1: - resolution: {integrity: sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==} + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - react@19.2.5: - resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} - recma-build-jsx@1.0.0: - resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} - recma-jsx@1.0.1: - resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + is-promise@4.0.0: + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} - recma-parse@1.0.0: - resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} - recma-stringify@1.0.0: - resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} - rehype-recma@1.0.0: - resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} - remark-mdx@3.1.1: - resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - remark-rehype@11.1.2: - resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} + isbot@5.1.41: + resolution: {integrity: sha512-9WFV/Vhh0FEj6CQ7MoHweEL9/vLKPjeoD2I2htbAjX7kbW7VJs3OCpWOVyd+JraNTWVU6/DRx2MZy2KaUNXHcg==} + engines: {node: '>=18'} - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} + jose@6.2.2: + resolution: {integrity: sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==} - retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - rolldown@1.0.2: - resolution: {integrity: sha512-oZx5zVDtVB44AW3eaifgDml1gWRDZGvjcfdxonE4swNPG98PrrXjaO/KrnUjzlMnztCCRVlUueA1kCXhARGk6g==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true + json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} - rollup@4.60.2: - resolution: {integrity: sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true + json-schema-to-ts@3.1.1: + resolution: {integrity: sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==} + engines: {node: '>=16'} - router@2.2.0: - resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} - engines: {node: '>= 18'} + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - run-applescript@7.1.0: - resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} - engines: {node: '>=18'} + json-schema-typed@8.0.2: + resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - scheduler@0.19.1: - resolution: {integrity: sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==} + jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} - scheduler@0.27.0: - resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + jws@4.0.1: + resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} - semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + katex@0.16.47: + resolution: {integrity: sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg==} hasBin: true - semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} - engines: {node: '>=10'} + katex@0.17.0: + resolution: {integrity: sha512-Vdw0ATsQ9V+LuegM/BTwQqV/6cTl5lbGcIrU+BCgLxyf6bo38ybOr372tuSIxir3CN720flu1meYR6XzNMwQnw==} hasBin: true - send@1.2.1: - resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} - engines: {node: '>= 18'} + khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} - seroval-plugins@1.5.4: - resolution: {integrity: sha512-S0xQPhUTefAhNvNWFg0c1J8qJArHt5KdtJ/cFAofo06KD1MVSeFWyl4iiu+ApDIuw0WhjpOfCdgConOfAnLgkw==} - engines: {node: '>=10'} - peerDependencies: - seroval: ^1.0 + klaw-sync@6.0.0: + resolution: {integrity: sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==} - seroval@1.5.4: - resolution: {integrity: sha512-46uFvgrXTVxZcUorgSSRZ4y+ieqLLQRMlG4bnCZKW3qI6BZm7Rg4ntMW4p1mILEEBZWrFlcpp0AyIIlM6jD9iw==} - engines: {node: '>=10'} + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} - serve-static@2.2.1: - resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} - engines: {node: '>= 18'} + koffi@2.16.1: + resolution: {integrity: sha512-0Ie6CfD026dNfWSosDw9dPxPzO9Rlyo0N8m5r05S8YjytIpuilzMFDMY4IDy/8xQsTwpuVinhncD+S8n3bcYZQ==} - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + kubernetes-types@1.30.0: + resolution: {integrity: sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q==} - setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} - sharp@0.34.5: - resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} + libsodium-wrappers@0.8.4: + resolution: {integrity: sha512-mu8aAWucZjTB5O/BtGXtW4e1agy7uHxNYG7zPthmmD1jU43LCDmSWZLN4JhflbdPXj3yDO4lxM1O9hLDgIOXDw==} - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + libsodium@0.8.4: + resolution: {integrity: sha512-lMcYaRi0zcs7tarATsQUYC7rstliIXZuoq0c6zXSgNtSNtdvBgkSegjWhpMJAXzKX3SUSwIp7+zEsob+j3LuRw==} - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] - side-channel-list@1.0.1: - resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} - engines: {node: '>= 0.4'} + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] - side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] - side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] - side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} - engines: {node: '>= 0.4'} + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] - simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] - slash@2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} - smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} - socks-proxy-agent@8.0.5: - resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} - engines: {node: '>= 14'} + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - socks@2.8.7: - resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} - source-map@0.7.6: - resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} - engines: {node: '>= 12'} + loglevel@1.9.2: + resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} + engines: {node: '>= 0.6.0'} - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true - statuses@2.0.2: - resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} - engines: {node: '>= 0.8'} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - std-env@3.10.0: - resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + lru-cache@11.3.5: + resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==} + engines: {node: 20 || >=22} - std-env@4.1.0: - resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + lru_map@0.4.1: + resolution: {integrity: sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg==} - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + luxon@3.7.2: + resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} engines: {node: '>=12'} - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - strip-ansi@7.2.0: - resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} - engines: {node: '>=12'} + marked@15.0.12: + resolution: {integrity: sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==} + engines: {node: '>= 18'} + hasBin: true - strip-final-newline@4.0.0: - resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} - engines: {node: '>=18'} + marked@16.4.2: + resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} + engines: {node: '>= 20'} + hasBin: true - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} + marked@17.0.1: + resolution: {integrity: sha512-boeBdiS0ghpWcSwoNm/jJBwdpFaMnZWRzjA6SkUMYb40SVaN1x7mmfGKp0jvexGcx+7y2La5zRZsYFZI6Qpypg==} + engines: {node: '>= 20'} + hasBin: true - strnum@2.2.3: - resolution: {integrity: sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} - strtok3@10.3.5: - resolution: {integrity: sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==} - engines: {node: '>=18'} + mdast-util-definitions@6.0.0: + resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} - style-to-js@1.1.21: - resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} - style-to-object@1.0.14: - resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + mdast-util-from-markdown@2.0.3: + resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} - sucrase@3.35.1: - resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - supports-color@10.2.2: - resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} - engines: {node: '>=18'} + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - tar-fs@2.1.4: - resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + mdast-util-math@3.0.0: + resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==} - three@0.165.0: - resolution: {integrity: sha512-cc96IlVYGydeceu0e5xq70H8/yoVT/tXBxV/W8A/U6uOq7DXc4/s1Mkmnu6SqoYGhSRWWYFOhVwvq6V0VtbplA==} + mdast-util-mdx-expression@2.0.1: + resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + mdast-util-mdx-jsx@3.2.0: + resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} - tinyexec@1.2.2: - resolution: {integrity: sha512-M/Q0B2cp4K7kynaT/vnED1j8TlLY+Pp7C6Wl2bl/7u/F0mUVwdyOpwomQb8JpYLitHUssAJRmLZdMCGsrx7i+g==} - engines: {node: '>=18'} + mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - tinyglobby@0.2.16: - resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} - engines: {node: '>=12.0.0'} + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - tinyrainbow@3.1.0: - resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} - engines: {node: '>=14.0.0'} + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} - token-types@6.1.2: - resolution: {integrity: sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==} - engines: {node: '>=14.16'} + merge-descriptors@2.0.0: + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} + engines: {node: '>=18'} - tokenx@1.3.0: - resolution: {integrity: sha512-NLdXTEZkKiO0gZuLtMoZKjCXTREXeZZt8nnnNeyoXtNZAfG/GKGSbQtLU5STspc0rMSwcA+UJfWZkbNU01iKmQ==} + mermaid@11.16.0: + resolution: {integrity: sha512-Zvm3kbstgdpvIJPPItlL7fppIZ3kibvc1oZIGxdvk9t6UFz6flv+Jw7FtRGKwfcI8OckmH04LqG6LlS6X4B1pA==} - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - ts-algebra@2.0.0: - resolution: {integrity: sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==} + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} - tsup@8.5.1: - resolution: {integrity: sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - '@microsoft/api-extractor': ^7.36.0 - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.5.0' - peerDependenciesMeta: - '@microsoft/api-extractor': - optional: true - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - tsx@4.22.4: - resolution: {integrity: sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==} - engines: {node: '>=18.0.0'} - hasBin: true + micromark-extension-math@3.1.0: + resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==} - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + micromark-extension-mdx-expression@3.0.1: + resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} - twitter-api-v2@1.29.0: - resolution: {integrity: sha512-v473q5bwme4N+DWSg6qY+JCvfg1nSJRWwui3HUALafxfqCvVkKiYmS/5x/pVeJwTmyeBxexMbzHwnzrH4h6oYQ==} + micromark-extension-mdx-jsx@3.0.2: + resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} - type-is@2.0.1: - resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} - engines: {node: '>= 0.6'} + micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} - typebox@1.1.33: - resolution: {integrity: sha512-+/MWwlQ1q2GSVwoxi/+u5JsHkgLQKcCN2Nsjree9c+K7GJu40qbaHrFETmfV1i9Fs1TcOVfynW+jJvIWcXtvjw==} + micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} - hasBin: true + micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} - ufo@1.6.3: - resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} - uint8array-extras@1.5.0: - resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} - engines: {node: '>=18'} + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + micromark-factory-mdx-expression@2.0.3: + resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} - undici-types@7.19.2: - resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} - undici@7.24.8: - resolution: {integrity: sha512-6KQ/+QxK49Z/p3HO6E5ZCZWNnCasyZLa5ExaVYyvPxUwKtbCPMKELJOqh7EqOle0t9cH/7d2TaaTRRa6Nhs4YQ==} - engines: {node: '>=20.18.1'} + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} - undici@7.25.0: - resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==} - engines: {node: '>=20.18.1'} + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} - unenv@2.0.0-rc.21: - resolution: {integrity: sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A==} + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - unenv@2.0.0-rc.24: - resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} - unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} - engines: {node: '>=18'} + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} - unified@11.0.5: - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} - unist-util-is@6.0.1: - resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} - unist-util-position-from-estree@2.0.0: - resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + micromark-util-events-to-acorn@2.0.3: + resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} - unist-util-visit-parents@6.0.2: - resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} - unist-util-visit@5.1.0: - resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} - universal-user-agent@7.0.3: - resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} - use-sync-external-store@1.6.0: - resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - uuid@11.1.0: - resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} - hasBin: true + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} - uuid@14.0.0: - resolution: {integrity: sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==} - hasBin: true + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} - vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} - vfile-message@4.0.3: - resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} - vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} - vite@8.0.14: - resolution: {integrity: sha512-s4BJJ+5y1pYL6Otw51FHhVJQhPnuRinKig64g/1+EUNaJsd3gCKdD31IPFvswUgW9/60QT9oFHbZHbQK5imcxw==} - engines: {node: ^20.19.0 || >=22.12.0} + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + miniflare@4.20260424.0: + resolution: {integrity: sha512-B6MKBBd5TJ19daUc3Ae9rWctn1nDA/VCXykXfCsp9fTxyfGxnZY27tJs1caxgE9MWEMMKGbGHouqVtgKbKGxmw==} + engines: {node: '>=18.0.0'} hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.1.18 - esbuild: ^0.27.0 || ^0.28.0 - jiti: '>=1.21.0' - less: ^4.0.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - '@vitejs/devtools': - optional: true - esbuild: - optional: true - jiti: - optional: true - less: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - vitest@4.1.7: - resolution: {integrity: sha512-flYyaFd2CgoCoU+0UKt3pxksgC+S02iTDN0n3LtqaMeXsI9SBcdNujc2k0DeFLzUn/0k538yNjOSdwgCqcrwJA==} - engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + miniflare@4.20260601.0: + resolution: {integrity: sha512-56TFiulSEQu43cYxdXgCiA3U3i+Ls0NoXwJXd6DmpNsx8yl/1Il2T3DQ4CMXjR6yfE7CSvC5MuXaqcSAMREjgw==} + engines: {node: '>=22.0.0'} hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@opentelemetry/api': ^1.9.0 - '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.7 - '@vitest/browser-preview': 4.1.7 - '@vitest/browser-webdriverio': 4.1.7 - '@vitest/coverage-istanbul': 4.1.7 - '@vitest/coverage-v8': 4.1.7 - '@vitest/ui': 4.1.7 - happy-dom: '*' - jsdom: '*' - vite: ^6.0.0 || ^7.0.0 || ^8.0.0 - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@opentelemetry/api': - optional: true - '@types/node': - optional: true - '@vitest/browser-playwright': - optional: true - '@vitest/browser-preview': - optional: true - '@vitest/browser-webdriverio': - optional: true - '@vitest/coverage-istanbul': - optional: true - '@vitest/coverage-v8': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} - engines: {node: '>= 8'} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} - web-streams-polyfill@4.0.0-beta.3: - resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} - engines: {node: '>= 14'} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} - whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} hasBin: true - workerd@1.20260424.1: - resolution: {integrity: sha512-oKsB0Xo/mfkYMdSACoS06XZg09VUK4rXwHfF/1t3P++sMbwzf4UHQvMO57+zxpEB2nVrY/ZkW0bYFGq4GdAFSQ==} - engines: {node: '>=16'} + msgpackr@1.11.9: + resolution: {integrity: sha512-FkoAAyyA6HM8wL882EcEyFZ9s7hVADSwG9xrVx3dxxNQAtgADTrJoEWivID82Iv1zWDsv/OtbrrcZAzGzOMdNw==} + + multipasta@0.2.7: + resolution: {integrity: sha512-KPA58d68KgGil15oDqXjkUBEBYc00XvbPj5/X+dyzeo/lWm9Nc25pQRlf1D+gv4OpK7NM0J1odrbu9JNNGvynA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - workerd@1.20260601.1: - resolution: {integrity: sha512-Bg4+HF3B8TW0urAv8chiz25HSQ/aJxMBjgheUzu/nB1NQa+CaKGrUPv+Z3bf0np/WxLHYW1kcseVEtzZVPbX4g==} - engines: {node: '>=16'} + nanoid@3.3.16: + resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - wrangler@4.97.0: - resolution: {integrity: sha512-jzW/aNvjerV+4TmwbvwGY6lpcuBk7EFUTonMDNfci45wSmMTj2/OJN+83cc/CeepKdb+6ZjGJw9NRjmcQoxqRg==} - engines: {node: '>=22.0.0'} + nanoid@5.1.16: + resolution: {integrity: sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ==} + engines: {node: ^18 || >=20} hasBin: true - peerDependencies: - '@cloudflare/workers-types': ^4.20260601.1 - peerDependenciesMeta: - '@cloudflare/workers-types': - optional: true - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + napi-build-utils@2.0.0: + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} + engines: {node: '>= 0.6'} - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + neo-blessed@0.2.0: + resolution: {integrity: sha512-C2kC4K+G2QnNQFXUIxTQvqmrdSIzGTX1ZRKeDW6ChmvPRw8rTkTEJzbEQHiHy06d36PCl/yMOCjquCRV8SpSQw==} + engines: {node: '>= 8.0.0'} + hasBin: true - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true + netmask@2.1.1: + resolution: {integrity: sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA==} + engines: {node: '>= 0.4.0'} - ws@8.20.0: - resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true + neverthrow@8.2.0: + resolution: {integrity: sha512-kOCT/1MCPAxY5iUV3wytNFUMUolzuwd/VF/1KCx7kf6CutrOsTie+84zTGTpgQycjvfLdBBdvBvFLqFD2c0wkQ==} + engines: {node: '>=18'} - ws@8.20.1: - resolution: {integrity: sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==} - engines: {node: '>=10.0.0'} + nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + + node-abi@3.89.0: + resolution: {integrity: sha512-6u9UwL0HlAl21+agMN3YAMXcKByMqwGx+pq+P76vii5f7hTPtKDp08/H9py6DY+cfDw7kQNTGEj/rly3IgbNQA==} + engines: {node: '>=10'} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' + encoding: ^0.1.0 peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: + encoding: optional: true - wsl-utils@0.1.0: - resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} - engines: {node: '>=18'} - - xml-naming@0.1.0: - resolution: {integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==} - engines: {node: '>=16.0.0'} + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} + node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} + hasBin: true - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} + node-pty@1.1.0: + resolution: {integrity: sha512-20JqtutY6JPXTUnL0ij1uad7Qe1baT46lyolh2sSENDd4sTzKZ4nmAFkeAARDKwmlLjPx6XKRlwRUxwjOy+lUg==} - yaml@1.10.3: - resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} - engines: {node: '>= 6'} + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} - yaml@2.8.3: - resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} - engines: {node: '>= 14.6'} - hasBin: true + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} - yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} - yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} - yoctocolors@2.1.2: - resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} - engines: {node: '>=18'} + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} - youch-core@0.3.3: - resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - youch@4.1.0-beta.10: - resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==} + oniguruma-parser@0.12.2: + resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==} - zod-to-json-schema@3.25.2: - resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} - peerDependencies: - zod: ^3.25.28 || ^4 + oniguruma-to-es@4.3.6: + resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==} - zod@3.25.76: - resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} + engines: {node: '>=18'} - zod@4.3.6: - resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} - zustand@4.5.7: - resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==} - engines: {node: '>=12.7.0'} + openai@6.26.0: + resolution: {integrity: sha512-zd23dbWTjiJ6sSAX6s0HrCZi41JwTA1bQVs0wLQPZ2/5o2gxOJA5wh7yOAUgwYybfhDXyhwlpeQf7Mlgx8EOCA==} + hasBin: true peerDependencies: - '@types/react': '>=16.8' - immer: '>=9.0.6' - react: '>=16.8' + ws: ^8.18.0 + zod: ^3.25 || ^4.0 peerDependenciesMeta: - '@types/react': - optional: true - immer: + ws: optional: true - react: + zod: optional: true - zustand@5.0.14: - resolution: {integrity: sha512-/8tAspM5LMPr28b3fwLYrtdj77ECpfZviaP75CMTnwO8ISyaE4GDIG/9rDDYq/cH9D2Xw2A2RXglLInmVBQB/g==} - engines: {node: '>=12.20.0'} + openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + + orderedmap@2.1.1: + resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + oxlint@1.60.0: + resolution: {integrity: sha512-tnRzTWiWJ9pg3ftRWnD0+Oqh78L6ZSwcEudvCZaER0PIqiAnNyXj5N1dPwjmNpDalkKS9m/WMLN1CTPUBPmsgw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true peerDependencies: - '@types/react': '>=18.0.0' - immer: '>=9.0.6' - react: '>=18.0.0' - use-sync-external-store: '>=1.2.0' + oxlint-tsgolint: '>=0.18.0' peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true - use-sync-external-store: + oxlint-tsgolint: optional: true - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} -snapshots: + pac-proxy-agent@7.2.0: + resolution: {integrity: sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==} + engines: {node: '>= 14'} - '@ag-ui/core@0.0.52': - dependencies: - zod: 3.25.76 + pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} - '@ai-sdk/anthropic@3.0.71(zod@4.3.6)': - dependencies: - '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.23(zod@4.3.6) - zod: 4.3.6 + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - '@ai-sdk/gateway@3.0.104(zod@4.3.6)': - dependencies: - '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.23(zod@4.3.6) - '@vercel/oidc': 3.2.0 - zod: 4.3.6 + package-manager-detector@1.8.0: + resolution: {integrity: sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==} - '@ai-sdk/openai@3.0.53(zod@4.3.6)': - dependencies: - '@ai-sdk/provider': 3.0.8 - '@ai-sdk/provider-utils': 4.0.23(zod@4.3.6) - zod: 4.3.6 + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - '@ai-sdk/provider-utils@4.0.23(zod@4.3.6)': - dependencies: - '@ai-sdk/provider': 3.0.8 - '@standard-schema/spec': 1.1.0 - eventsource-parser: 3.0.7 - zod: 4.3.6 + parse-entities@4.0.2: + resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} - '@ai-sdk/provider@3.0.8': - dependencies: - json-schema: 0.4.0 + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} - '@anthropic-ai/sdk@0.90.0(zod@4.3.6)': - dependencies: - json-schema-to-ts: 3.1.1 - optionalDependencies: - zod: 4.3.6 + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} - '@aws-crypto/crc32@5.2.0': - dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.10 - tslib: 2.8.1 + parse5@5.1.1: + resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} - '@aws-crypto/sha256-browser@5.2.0': - dependencies: - '@aws-crypto/sha256-js': 5.2.0 - '@aws-crypto/supports-web-crypto': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.8 - '@aws-sdk/util-locate-window': 3.965.5 - '@smithy/util-utf8': 2.3.0 - tslib: 2.8.1 + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - '@aws-crypto/sha256-js@5.2.0': - dependencies: - '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.8 - tslib: 2.8.1 + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} - '@aws-crypto/supports-web-crypto@5.2.0': - dependencies: - tslib: 2.8.1 + partial-json@0.1.7: + resolution: {integrity: sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==} - '@aws-crypto/util@5.2.0': - dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/util-utf8': 2.3.0 - tslib: 2.8.1 + patch-package@6.5.1: + resolution: {integrity: sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==} + engines: {node: '>=10', npm: '>5'} + hasBin: true - '@aws-sdk/client-bedrock-runtime@3.1037.0': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.5 - '@aws-sdk/credential-provider-node': 3.972.36 - '@aws-sdk/eventstream-handler-node': 3.972.14 - '@aws-sdk/middleware-eventstream': 3.972.10 - '@aws-sdk/middleware-host-header': 3.972.10 - '@aws-sdk/middleware-logger': 3.972.10 - '@aws-sdk/middleware-recursion-detection': 3.972.11 - '@aws-sdk/middleware-user-agent': 3.972.35 - '@aws-sdk/middleware-websocket': 3.972.16 - '@aws-sdk/region-config-resolver': 3.972.13 - '@aws-sdk/token-providers': 3.1037.0 - '@aws-sdk/types': 3.973.8 - '@aws-sdk/util-endpoints': 3.996.8 - '@aws-sdk/util-user-agent-browser': 3.972.10 - '@aws-sdk/util-user-agent-node': 3.973.21 - '@smithy/config-resolver': 4.4.17 - '@smithy/core': 3.23.17 - '@smithy/eventstream-serde-browser': 4.2.14 - '@smithy/eventstream-serde-config-resolver': 4.3.14 - '@smithy/eventstream-serde-node': 4.2.14 - '@smithy/fetch-http-handler': 5.3.17 - '@smithy/hash-node': 4.2.14 - '@smithy/invalid-dependency': 4.2.14 - '@smithy/middleware-content-length': 4.2.14 - '@smithy/middleware-endpoint': 4.4.32 - '@smithy/middleware-retry': 4.5.5 - '@smithy/middleware-serde': 4.2.20 - '@smithy/middleware-stack': 4.2.14 - '@smithy/node-config-provider': 4.3.14 - '@smithy/node-http-handler': 4.6.1 - '@smithy/protocol-http': 5.3.14 - '@smithy/smithy-client': 4.12.13 - '@smithy/types': 4.14.1 - '@smithy/url-parser': 4.2.14 - '@smithy/util-base64': 4.3.2 - '@smithy/util-body-length-browser': 4.2.2 - '@smithy/util-body-length-node': 4.2.3 - '@smithy/util-defaults-mode-browser': 4.3.49 - '@smithy/util-defaults-mode-node': 4.2.54 - '@smithy/util-endpoints': 3.4.2 - '@smithy/util-middleware': 4.2.14 - '@smithy/util-retry': 4.3.4 - '@smithy/util-stream': 4.5.25 - '@smithy/util-utf8': 4.2.2 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt + path-data-parser@0.1.0: + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} - '@aws-sdk/client-cognito-identity@3.1061.0': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.17 - '@aws-sdk/credential-provider-node': 3.972.50 - '@aws-sdk/types': 3.973.10 - '@smithy/core': 3.24.6 - '@smithy/fetch-http-handler': 5.4.6 - '@smithy/node-http-handler': 4.7.6 - '@smithy/types': 4.14.3 - tslib: 2.8.1 + path-expression-matcher@1.5.0: + resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==} + engines: {node: '>=14.0.0'} - '@aws-sdk/core@3.974.17': - dependencies: - '@aws-sdk/types': 3.973.10 - '@aws-sdk/xml-builder': 3.972.27 - '@aws/lambda-invoke-store': 0.2.4 - '@smithy/core': 3.24.6 - '@smithy/signature-v4': 5.4.6 - '@smithy/types': 4.14.3 - bowser: 2.14.1 - tslib: 2.8.1 + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} - '@aws-sdk/core@3.974.5': - dependencies: - '@aws-sdk/types': 3.973.8 - '@aws-sdk/xml-builder': 3.972.19 - '@smithy/core': 3.23.17 - '@smithy/node-config-provider': 4.3.14 - '@smithy/property-provider': 4.2.14 - '@smithy/protocol-http': 5.3.14 - '@smithy/signature-v4': 5.3.14 - '@smithy/smithy-client': 4.12.13 - '@smithy/types': 4.14.1 - '@smithy/util-base64': 4.3.2 - '@smithy/util-middleware': 4.2.14 - '@smithy/util-retry': 4.3.4 - '@smithy/util-utf8': 4.2.2 - tslib: 2.8.1 + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} - '@aws-sdk/credential-provider-cognito-identity@3.972.40': - dependencies: - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/types': 3.973.10 - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 - tslib: 2.8.1 + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} - '@aws-sdk/credential-provider-env@3.972.31': - dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.2.14 - '@smithy/types': 4.14.1 - tslib: 2.8.1 + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} - '@aws-sdk/credential-provider-env@3.972.43': - dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/types': 3.973.10 - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 - tslib: 2.8.1 + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} - '@aws-sdk/credential-provider-http@3.972.33': - dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/types': 3.973.8 - '@smithy/fetch-http-handler': 5.3.17 - '@smithy/node-http-handler': 4.6.1 - '@smithy/property-provider': 4.2.14 - '@smithy/protocol-http': 5.3.14 - '@smithy/smithy-client': 4.12.13 - '@smithy/types': 4.14.1 - '@smithy/util-stream': 4.5.25 - tslib: 2.8.1 + path-scurry@2.0.2: + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} - '@aws-sdk/credential-provider-http@3.972.45': - dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/types': 3.973.10 - '@smithy/core': 3.24.6 - '@smithy/fetch-http-handler': 5.4.6 - '@smithy/node-http-handler': 4.7.6 - '@smithy/types': 4.14.3 - tslib: 2.8.1 + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} - '@aws-sdk/credential-provider-ini@3.972.35': - dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/credential-provider-env': 3.972.31 - '@aws-sdk/credential-provider-http': 3.972.33 - '@aws-sdk/credential-provider-login': 3.972.35 - '@aws-sdk/credential-provider-process': 3.972.31 - '@aws-sdk/credential-provider-sso': 3.972.35 - '@aws-sdk/credential-provider-web-identity': 3.972.35 - '@aws-sdk/nested-clients': 3.997.3 - '@aws-sdk/types': 3.973.8 - '@smithy/credential-provider-imds': 4.2.14 - '@smithy/property-provider': 4.2.14 - '@smithy/shared-ini-file-loader': 4.4.9 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt + path-to-regexp@8.4.2: + resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==} - '@aws-sdk/credential-provider-ini@3.972.48': - dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/credential-provider-env': 3.972.43 - '@aws-sdk/credential-provider-http': 3.972.45 - '@aws-sdk/credential-provider-login': 3.972.47 - '@aws-sdk/credential-provider-process': 3.972.43 - '@aws-sdk/credential-provider-sso': 3.972.47 - '@aws-sdk/credential-provider-web-identity': 3.972.47 - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/types': 3.973.10 - '@smithy/core': 3.24.6 - '@smithy/credential-provider-imds': 4.3.7 - '@smithy/types': 4.14.3 - tslib: 2.8.1 + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - '@aws-sdk/credential-provider-login@3.972.35': - dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/nested-clients': 3.997.3 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.2.14 - '@smithy/protocol-http': 5.3.14 - '@smithy/shared-ini-file-loader': 4.4.9 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - '@aws-sdk/credential-provider-login@3.972.47': - dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/types': 3.973.10 - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 - tslib: 2.8.1 + pg-cloudflare@1.4.0: + resolution: {integrity: sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==} - '@aws-sdk/credential-provider-node@3.972.36': - dependencies: - '@aws-sdk/credential-provider-env': 3.972.31 - '@aws-sdk/credential-provider-http': 3.972.33 - '@aws-sdk/credential-provider-ini': 3.972.35 - '@aws-sdk/credential-provider-process': 3.972.31 - '@aws-sdk/credential-provider-sso': 3.972.35 - '@aws-sdk/credential-provider-web-identity': 3.972.35 - '@aws-sdk/types': 3.973.8 - '@smithy/credential-provider-imds': 4.2.14 - '@smithy/property-provider': 4.2.14 - '@smithy/shared-ini-file-loader': 4.4.9 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt + pg-connection-string@2.13.0: + resolution: {integrity: sha512-EMnU9E2fSULdsbErBbMaXJvFeD9B4+nPcM3f+4lsiCR0BHLPrLVjv3DbyM2hgQQviKJaTWIRRTjKjWlHg3p2ig==} - '@aws-sdk/credential-provider-node@3.972.50': - dependencies: - '@aws-sdk/credential-provider-env': 3.972.43 - '@aws-sdk/credential-provider-http': 3.972.45 - '@aws-sdk/credential-provider-ini': 3.972.48 - '@aws-sdk/credential-provider-process': 3.972.43 - '@aws-sdk/credential-provider-sso': 3.972.47 - '@aws-sdk/credential-provider-web-identity': 3.972.47 - '@aws-sdk/types': 3.973.10 - '@smithy/core': 3.24.6 - '@smithy/credential-provider-imds': 4.3.7 - '@smithy/types': 4.14.3 - tslib: 2.8.1 - - '@aws-sdk/credential-provider-process@3.972.31': - dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.2.14 - '@smithy/shared-ini-file-loader': 4.4.9 - '@smithy/types': 4.14.1 - tslib: 2.8.1 + pg-connection-string@2.14.0: + resolution: {integrity: sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==} - '@aws-sdk/credential-provider-process@3.972.43': - dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/types': 3.973.10 - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 - tslib: 2.8.1 + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} - '@aws-sdk/credential-provider-sso@3.972.35': - dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/nested-clients': 3.997.3 - '@aws-sdk/token-providers': 3.1036.0 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.2.14 - '@smithy/shared-ini-file-loader': 4.4.9 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt + pg-pool@3.14.0: + resolution: {integrity: sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==} + peerDependencies: + pg: '>=8.0' - '@aws-sdk/credential-provider-sso@3.972.47': - dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/token-providers': 3.1060.0 - '@aws-sdk/types': 3.973.10 - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 - tslib: 2.8.1 + pg-protocol@1.14.0: + resolution: {integrity: sha512-n5taZ1kO3s9ngDTVxsEznOqCyToTgz0FLuPq0B33COy5pPpuWJpY3/2oRBVETuOgzdqRXfWpM9HIhp2LBBT1BA==} - '@aws-sdk/credential-provider-web-identity@3.972.35': - dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/nested-clients': 3.997.3 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.2.14 - '@smithy/shared-ini-file-loader': 4.4.9 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt + pg-protocol@1.15.0: + resolution: {integrity: sha512-cq9sECI5s0+uPUXjbz8ioyPJni6RzsRib0US67i5IoTZKw8fNeYlVE7u8F4dG7vEJJtc5wdD1K189lCCUwqWTQ==} - '@aws-sdk/credential-provider-web-identity@3.972.47': - dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/types': 3.973.10 - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 - tslib: 2.8.1 + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} - '@aws-sdk/credential-providers@3.1061.0': - dependencies: - '@aws-sdk/client-cognito-identity': 3.1061.0 - '@aws-sdk/core': 3.974.17 - '@aws-sdk/credential-provider-cognito-identity': 3.972.40 - '@aws-sdk/credential-provider-env': 3.972.43 - '@aws-sdk/credential-provider-http': 3.972.45 - '@aws-sdk/credential-provider-ini': 3.972.48 - '@aws-sdk/credential-provider-login': 3.972.47 - '@aws-sdk/credential-provider-node': 3.972.50 - '@aws-sdk/credential-provider-process': 3.972.43 - '@aws-sdk/credential-provider-sso': 3.972.47 - '@aws-sdk/credential-provider-web-identity': 3.972.47 - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/types': 3.973.10 - '@smithy/core': 3.24.6 - '@smithy/credential-provider-imds': 4.3.7 - '@smithy/types': 4.14.3 - tslib: 2.8.1 + pg@8.21.0: + resolution: {integrity: sha512-AUP1EYJuHraQGsVoCQVIcM7TEJVGtDzxWtGFZd8rds9d+CCXlU5Js1rYgfLNvxy9iJrpHjGrRjoi/3BT9fRyiA==} + engines: {node: '>= 16.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true - '@aws-sdk/eventstream-handler-node@3.972.14': - dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/eventstream-codec': 4.2.14 - '@smithy/types': 4.14.1 - tslib: 2.8.1 + pg@8.22.0: + resolution: {integrity: sha512-8wih1vVIBMxoUM2oB4soJsD9tDnDpLv4OXBJ+EJzFsvycD+lfyIreC2gGHq78f8jbLLt+bvlPTFdFZfJkOuzAA==} + engines: {node: '>= 16.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true - '@aws-sdk/middleware-eventstream@3.972.10': - dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/protocol-http': 5.3.14 - '@smithy/types': 4.14.1 - tslib: 2.8.1 + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} - '@aws-sdk/middleware-host-header@3.972.10': - dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/protocol-http': 5.3.14 - '@smithy/types': 4.14.1 - tslib: 2.8.1 + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - '@aws-sdk/middleware-logger@3.972.10': - dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/types': 4.14.1 - tslib: 2.8.1 + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} - '@aws-sdk/middleware-recursion-detection@3.972.11': - dependencies: - '@aws-sdk/types': 3.973.8 - '@aws/lambda-invoke-store': 0.2.4 - '@smithy/protocol-http': 5.3.14 - '@smithy/types': 4.14.1 - tslib: 2.8.1 + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} - '@aws-sdk/middleware-sdk-s3@3.972.34': - dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/types': 3.973.8 - '@aws-sdk/util-arn-parser': 3.972.3 - '@smithy/core': 3.23.17 - '@smithy/node-config-provider': 4.3.14 - '@smithy/protocol-http': 5.3.14 - '@smithy/signature-v4': 5.3.14 - '@smithy/smithy-client': 4.12.13 - '@smithy/types': 4.14.1 - '@smithy/util-config-provider': 4.2.2 - '@smithy/util-middleware': 4.2.14 - '@smithy/util-stream': 4.5.25 - '@smithy/util-utf8': 4.2.2 - tslib: 2.8.1 + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} - '@aws-sdk/middleware-user-agent@3.972.35': - dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/types': 3.973.8 - '@aws-sdk/util-endpoints': 3.996.8 - '@smithy/core': 3.23.17 - '@smithy/protocol-http': 5.3.14 - '@smithy/types': 4.14.1 - '@smithy/util-retry': 4.3.4 - tslib: 2.8.1 + pkce-challenge@5.0.1: + resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} + engines: {node: '>=16.20.0'} - '@aws-sdk/middleware-websocket@3.972.16': - dependencies: - '@aws-sdk/types': 3.973.8 - '@aws-sdk/util-format-url': 3.972.10 - '@smithy/eventstream-codec': 4.2.14 - '@smithy/eventstream-serde-browser': 4.2.14 - '@smithy/fetch-http-handler': 5.3.17 - '@smithy/protocol-http': 5.3.14 - '@smithy/signature-v4': 5.3.14 - '@smithy/types': 4.14.1 - '@smithy/util-base64': 4.3.2 - '@smithy/util-hex-encoding': 4.2.2 - '@smithy/util-utf8': 4.2.2 - tslib: 2.8.1 + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - '@aws-sdk/nested-clients@3.997.15': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.17 - '@aws-sdk/signature-v4-multi-region': 3.996.31 - '@aws-sdk/types': 3.973.10 - '@smithy/core': 3.24.6 - '@smithy/fetch-http-handler': 5.4.6 - '@smithy/node-http-handler': 4.7.6 - '@smithy/types': 4.14.3 - tslib: 2.8.1 + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} + engines: {node: '>=18'} + hasBin: true - '@aws-sdk/nested-clients@3.997.3': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.5 - '@aws-sdk/middleware-host-header': 3.972.10 - '@aws-sdk/middleware-logger': 3.972.10 - '@aws-sdk/middleware-recursion-detection': 3.972.11 - '@aws-sdk/middleware-user-agent': 3.972.35 - '@aws-sdk/region-config-resolver': 3.972.13 - '@aws-sdk/signature-v4-multi-region': 3.996.22 - '@aws-sdk/types': 3.973.8 - '@aws-sdk/util-endpoints': 3.996.8 - '@aws-sdk/util-user-agent-browser': 3.972.10 - '@aws-sdk/util-user-agent-node': 3.973.21 - '@smithy/config-resolver': 4.4.17 - '@smithy/core': 3.23.17 - '@smithy/fetch-http-handler': 5.3.17 - '@smithy/hash-node': 4.2.14 - '@smithy/invalid-dependency': 4.2.14 - '@smithy/middleware-content-length': 4.2.14 - '@smithy/middleware-endpoint': 4.4.32 - '@smithy/middleware-retry': 4.5.5 - '@smithy/middleware-serde': 4.2.20 - '@smithy/middleware-stack': 4.2.14 - '@smithy/node-config-provider': 4.3.14 - '@smithy/node-http-handler': 4.6.1 - '@smithy/protocol-http': 5.3.14 - '@smithy/smithy-client': 4.12.13 - '@smithy/types': 4.14.1 - '@smithy/url-parser': 4.2.14 - '@smithy/util-base64': 4.3.2 - '@smithy/util-body-length-browser': 4.2.2 - '@smithy/util-body-length-node': 4.2.3 - '@smithy/util-defaults-mode-browser': 4.3.49 - '@smithy/util-defaults-mode-node': 4.2.54 - '@smithy/util-endpoints': 3.4.2 - '@smithy/util-middleware': 4.2.14 - '@smithy/util-retry': 4.3.4 - '@smithy/util-utf8': 4.2.2 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} + engines: {node: '>=18'} + hasBin: true - '@aws-sdk/region-config-resolver@3.972.13': - dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/config-resolver': 4.4.17 - '@smithy/node-config-provider': 4.3.14 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - - '@aws-sdk/signature-v4-multi-region@3.996.22': - dependencies: - '@aws-sdk/middleware-sdk-s3': 3.972.34 - '@aws-sdk/types': 3.973.8 - '@smithy/protocol-http': 5.3.14 - '@smithy/signature-v4': 5.3.14 - '@smithy/types': 4.14.1 - tslib: 2.8.1 + png-to-ico@2.1.8: + resolution: {integrity: sha512-Nf+IIn/cZ/DIZVdGveJp86NG5uNib1ZXMiDd/8x32HCTeKSvgpyg6D/6tUBn1QO/zybzoMK0/mc3QRgAyXdv9w==} + engines: {node: '>=8'} + hasBin: true - '@aws-sdk/signature-v4-multi-region@3.996.31': - dependencies: - '@aws-sdk/types': 3.973.10 - '@smithy/signature-v4': 5.4.6 - '@smithy/types': 4.14.3 - tslib: 2.8.1 + pngjs@6.0.0: + resolution: {integrity: sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==} + engines: {node: '>=12.13.0'} - '@aws-sdk/token-providers@3.1036.0': - dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/nested-clients': 3.997.3 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.2.14 - '@smithy/shared-ini-file-loader': 4.4.9 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt + points-on-curve@0.2.0: + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} - '@aws-sdk/token-providers@3.1037.0': - dependencies: - '@aws-sdk/core': 3.974.5 - '@aws-sdk/nested-clients': 3.997.3 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.2.14 - '@smithy/shared-ini-file-loader': 4.4.9 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt + points-on-path@0.2.1: + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} - '@aws-sdk/token-providers@3.1060.0': - dependencies: - '@aws-sdk/core': 3.974.17 - '@aws-sdk/nested-clients': 3.997.15 - '@aws-sdk/types': 3.973.10 - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 - tslib: 2.8.1 + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true - '@aws-sdk/types@3.973.10': - dependencies: - '@smithy/types': 4.14.3 - tslib: 2.8.1 + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} + engines: {node: ^10 || ^12 || >=14} - '@aws-sdk/types@3.973.8': - dependencies: - '@smithy/types': 4.14.1 - tslib: 2.8.1 + postcss@8.5.25: + resolution: {integrity: sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw==} + engines: {node: ^10 || ^12 || >=14} - '@aws-sdk/util-arn-parser@3.972.3': - dependencies: - tslib: 2.8.1 + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} - '@aws-sdk/util-endpoints@3.996.8': - dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/types': 4.14.1 - '@smithy/url-parser': 4.2.14 - '@smithy/util-endpoints': 3.4.2 - tslib: 2.8.1 + postgres-bytea@1.0.1: + resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} + engines: {node: '>=0.10.0'} - '@aws-sdk/util-format-url@3.972.10': - dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/querystring-builder': 4.2.14 - '@smithy/types': 4.14.1 - tslib: 2.8.1 + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} - '@aws-sdk/util-locate-window@3.965.5': - dependencies: - tslib: 2.8.1 + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} - '@aws-sdk/util-user-agent-browser@3.972.10': - dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/types': 4.14.1 - bowser: 2.14.1 - tslib: 2.8.1 + prebuild-install@7.1.3: + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} + engines: {node: '>=10'} + deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available. + hasBin: true - '@aws-sdk/util-user-agent-node@3.973.21': - dependencies: - '@aws-sdk/middleware-user-agent': 3.972.35 - '@aws-sdk/types': 3.973.8 - '@smithy/node-config-provider': 4.3.14 - '@smithy/types': 4.14.1 - '@smithy/util-config-provider': 4.2.2 - tslib: 2.8.1 + pretty-ms@9.3.0: + resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} + engines: {node: '>=18'} - '@aws-sdk/xml-builder@3.972.19': - dependencies: - '@smithy/types': 4.14.1 - fast-xml-parser: 5.7.1 - tslib: 2.8.1 + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - '@aws-sdk/xml-builder@3.972.27': - dependencies: - '@smithy/types': 4.14.3 - fast-xml-parser: 5.7.3 - tslib: 2.8.1 + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - '@aws/lambda-invoke-store@0.2.4': {} + proper-lockfile@4.1.2: + resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} - '@babel/runtime@7.29.2': {} + property-information@7.1.0: + resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} - '@babylonjs/core@7.54.3': {} + prosemirror-changeset@2.4.1: + resolution: {integrity: sha512-96WBLhOaYhJ+kPhLg3uW359Tz6I/MfcrQfL4EGv4SrcqKEMC1gmoGrXHecPE8eOwTVCJ4IwgfzM8fFad25wNfw==} - '@borewit/text-codec@0.2.2': {} + prosemirror-commands@1.7.1: + resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==} - '@cfworker/json-schema@4.1.1': {} + prosemirror-drop-indicator@0.1.4: + resolution: {integrity: sha512-YaRB1pZmU5GCorPVWbc9dbhbwqr4iMBO/AjPu4BTKHCUzxEDUXje2dUyoxOHib/z4uyPUZTJz64h7mHDJZeSzA==} - '@clack/core@0.4.2': - dependencies: - picocolors: 1.1.1 - sisteransi: 1.0.5 + prosemirror-dropcursor@1.8.3: + resolution: {integrity: sha512-FoYbsJR8gK+DGlqhNoE29Loa38eIZPzQRIb1VMaDNBoo4OLP6vVof/jR8qFY/6XvUd6Dhug8MDCHl2a/h8RTfQ==} - '@clack/prompts@0.10.1': - dependencies: - '@clack/core': 0.4.2 - picocolors: 1.1.1 - sisteransi: 1.0.5 + prosemirror-gapcursor@1.4.1: + resolution: {integrity: sha512-pMdYaEnjNMSwl11yjEGtgTmLkR08m/Vl+Jj443167p9eB3HVQKhYCc4gmHVDsLPODfZfjr/MmirsdyZziXbQKw==} - '@cloudflare/kv-asset-handler@0.5.0': {} + prosemirror-history@1.5.0: + resolution: {integrity: sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==} - '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260601.1)': - dependencies: - unenv: 2.0.0-rc.24 - optionalDependencies: - workerd: 1.20260601.1 + prosemirror-inputrules@1.5.1: + resolution: {integrity: sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==} - '@cloudflare/unenv-preset@2.7.7(unenv@2.0.0-rc.21)(workerd@1.20260601.1)': - dependencies: - unenv: 2.0.0-rc.21 - optionalDependencies: - workerd: 1.20260601.1 + prosemirror-keymap@1.2.3: + resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==} - '@cloudflare/vite-plugin@1.39.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3))(workerd@1.20260601.1)(wrangler@4.97.0(@cloudflare/workers-types@4.20260604.1))': - dependencies: - '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260601.1) - miniflare: 4.20260601.0 - unenv: 2.0.0-rc.24 - vite: 8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3) - wrangler: 4.97.0(@cloudflare/workers-types@4.20260604.1) - ws: 8.20.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - workerd + prosemirror-model@1.25.11: + resolution: {integrity: sha512-QWg9RhnpLlogAmp3p96uEFrE5txQpFynd4vhBAELkwgOCWQs/X0yCzB3/hrHqiPwf91RG5KyWq6553zs9JqIOQ==} - '@cloudflare/workerd-darwin-64@1.20260424.1': - optional: true + prosemirror-safari-ime-span@1.0.2: + resolution: {integrity: sha512-QJqD8s1zE/CuK56kDsUhndh5hiHh/gFnAuPOA9ytva2s85/ZEt2tNWeALTJN48DtWghSKOmiBsvVn2OlnJ5H2w==} - '@cloudflare/workerd-darwin-64@1.20260601.1': - optional: true + prosemirror-schema-list@1.5.1: + resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==} - '@cloudflare/workerd-darwin-arm64@1.20260424.1': - optional: true + prosemirror-state@1.4.4: + resolution: {integrity: sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==} - '@cloudflare/workerd-darwin-arm64@1.20260601.1': - optional: true + prosemirror-tables@1.8.5: + resolution: {integrity: sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==} - '@cloudflare/workerd-linux-64@1.20260424.1': - optional: true + prosemirror-transform@1.12.0: + resolution: {integrity: sha512-GxboyN4AMIsoHNtz5uf2r2Ru551i5hWeCMD6E2Ib4Eogqoub0NflniaBPVQ4MrGE5yZ8JV9tUHg9qcZTTrcN4w==} - '@cloudflare/workerd-linux-64@1.20260601.1': - optional: true + prosemirror-view@1.42.2: + resolution: {integrity: sha512-Pdg0l5kXm8aLDquFAnQFTCITg0q44sLqBlHlpsVLD9segdOao8TOfQdAhCrCXyVgPSRr6UDDROOIWA3bIrN9YQ==} - '@cloudflare/workerd-linux-arm64@1.20260424.1': - optional: true + prosemirror-virtual-cursor@0.4.2: + resolution: {integrity: sha512-pUMKnIuOhhnMcgIJUjhIQTVJruBEGxfMBVQSrK0g2qhGPDm1i12KdsVaFw15dYk+29tZcxjMeR7P5VDKwmbwJg==} + peerDependencies: + prosemirror-model: ^1.0.0 + prosemirror-state: ^1.0.0 + prosemirror-view: ^1.0.0 + peerDependenciesMeta: + prosemirror-model: + optional: true + prosemirror-state: + optional: true + prosemirror-view: + optional: true - '@cloudflare/workerd-linux-arm64@1.20260601.1': - optional: true + protobufjs@7.5.5: + resolution: {integrity: sha512-3wY1AxV+VBNW8Yypfd1yQY9pXnqTAN+KwQxL8iYm3/BjKYMNg4i0owhEe26PWDOMaIrzeeF98Lqd5NGz4omiIg==} + engines: {node: '>=12.0.0'} - '@cloudflare/workerd-windows-64@1.20260424.1': - optional: true + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} - '@cloudflare/workerd-windows-64@1.20260601.1': - optional: true + proxy-agent@6.5.0: + resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} + engines: {node: '>= 14'} - '@cloudflare/workers-types@4.20260604.1': {} + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} - '@dino-dna/react-tui@1.0.1(react@16.13.1)': - dependencies: - '@seznam/compose-react-refs': 1.0.6 - patch-package: 6.5.1 - react: 16.13.1 - react-reconciler: 0.25.1(react@16.13.1) + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - '@effect/cluster@0.58.0(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/workflow@0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(effect@3.21.1)': - dependencies: - '@effect/platform': 0.96.0(effect@3.21.1) - '@effect/rpc': 0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) - '@effect/sql': 0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) - '@effect/workflow': 0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1) - effect: 3.21.1 - kubernetes-types: 1.30.0 + qs@6.15.1: + resolution: {integrity: sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==} + engines: {node: '>=0.6'} - '@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1)': - dependencies: - '@effect/platform': 0.96.0(effect@3.21.1) - effect: 3.21.1 - uuid: 11.1.0 + radix-ui@1.6.7: + resolution: {integrity: sha512-QBdhh1arIEUvPC0dQ5+nwWAxt7+N+oP/9jPwjJkGFoSk/sqxg32gJtSXGtFh8frAIcS6oC9cx2Q+7KYCQLOAeA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true - '@effect/opentelemetry@0.63.0(@effect/platform@0.96.0(effect@3.21.1))(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(effect@3.21.1)': - dependencies: - '@effect/platform': 0.96.0(effect@3.21.1) - '@opentelemetry/api': 1.9.0 - '@opentelemetry/resources': 2.6.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.214.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 2.6.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.6.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-node': 2.6.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-web': 2.6.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.40.0 - effect: 3.21.1 + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} - '@effect/platform-bun@0.89.0(@effect/cluster@0.58.0(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/workflow@0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1)': - dependencies: - '@effect/cluster': 0.58.0(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/workflow@0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(effect@3.21.1) - '@effect/platform': 0.96.0(effect@3.21.1) - '@effect/platform-node-shared': 0.59.0(@effect/cluster@0.58.0(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/workflow@0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1) - '@effect/rpc': 0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) - '@effect/sql': 0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) - effect: 3.21.1 - multipasta: 0.2.7 - transitivePeerDependencies: - - bufferutil - - utf-8-validate + raw-body@3.0.2: + resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} + engines: {node: '>= 0.10'} - '@effect/platform-node-shared@0.59.0(@effect/cluster@0.58.0(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/workflow@0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1)': - dependencies: - '@effect/cluster': 0.58.0(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/workflow@0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(effect@3.21.1) - '@effect/platform': 0.96.0(effect@3.21.1) - '@effect/rpc': 0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) - '@effect/sql': 0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) - '@parcel/watcher': 2.5.6 - effect: 3.21.1 - multipasta: 0.2.7 - ws: 8.20.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true - '@effect/platform@0.96.0(effect@3.21.1)': - dependencies: - effect: 3.21.1 - find-my-way-ts: 0.1.6 - msgpackr: 1.11.9 - multipasta: 0.2.7 + rcedit@4.0.1: + resolution: {integrity: sha512-bZdaQi34krFWhrDn+O53ccBDw0MkAT2Vhu75SqhtvhQu4OPyFM4RoVheyYiVQYdjhUi6EJMVWQ0tR6bCIYVkUg==} + engines: {node: '>= 14.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - '@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1)': - dependencies: - '@effect/platform': 0.96.0(effect@3.21.1) - effect: 3.21.1 - msgpackr: 1.11.9 + react-devtools-core@7.0.1: + resolution: {integrity: sha512-C3yNvRHaizlpiASzy7b9vbnBGLrhvdhl1CbdU6EnZgxPNbai60szdLtl+VL76UNOt5bOoVTOz5rNWZxgGt+Gsw==} - '@effect/sql-sqlite-bun@0.52.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1)': - dependencies: - '@effect/experimental': 0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) - '@effect/platform': 0.96.0(effect@3.21.1) - '@effect/sql': 0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) - effect: 3.21.1 + react-dom@19.2.5: + resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} + peerDependencies: + react: ^19.2.5 - '@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1)': - dependencies: - '@effect/experimental': 0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) - '@effect/platform': 0.96.0(effect@3.21.1) - effect: 3.21.1 - uuid: 11.1.0 + react-dom@19.2.8: + resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==} + peerDependencies: + react: ^19.2.8 - '@effect/workflow@0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1)': - dependencies: - '@effect/experimental': 0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) - '@effect/platform': 0.96.0(effect@3.21.1) - '@effect/rpc': 0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) - effect: 3.21.1 + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - '@electric-sql/pglite-age@0.0.2(@electric-sql/pglite@0.5.1)': - dependencies: - '@electric-sql/pglite': 0.5.1 + react-reconciler@0.25.1: + resolution: {integrity: sha512-R5UwsIvRcSs3w8n9k3tBoTtUHdVhu9u84EG7E5M0Jk9F5i6DA1pQzPfUZd6opYWGy56MJOtV3VADzy6DRwYDjw==} + engines: {node: '>=0.10.0'} + peerDependencies: + react: ^16.13.1 - '@electric-sql/pglite-pg_hashids@0.0.2(@electric-sql/pglite@0.5.1)': - dependencies: - '@electric-sql/pglite': 0.5.1 + react-reconciler@0.33.0: + resolution: {integrity: sha512-KetWRytFv1epdpJc3J4G75I4WrplZE5jOL7Yq0p34+OVOKF4Se7WrdIdVC45XsSSmUTlht2FM/fM1FZb1mfQeA==} + engines: {node: '>=0.10.0'} + peerDependencies: + react: ^19.2.0 - '@electric-sql/pglite-pg_ivm@0.0.2(@electric-sql/pglite@0.5.1)': - dependencies: - '@electric-sql/pglite': 0.5.1 + react-redux@9.3.0: + resolution: {integrity: sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g==} + peerDependencies: + '@types/react': ^18.2.25 || ^19 + react: ^18.0 || ^19 + redux: ^5.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + redux: + optional: true - '@electric-sql/pglite-pg_textsearch@0.0.2(@electric-sql/pglite@0.5.1)': - dependencies: - '@electric-sql/pglite': 0.5.1 + react-remove-scroll-bar@2.3.8: + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true - '@electric-sql/pglite-pg_uuidv7@0.0.2(@electric-sql/pglite@0.5.1)': - dependencies: - '@electric-sql/pglite': 0.5.1 + react-remove-scroll@2.7.2: + resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@electric-sql/pglite-pgtap@0.0.2(@electric-sql/pglite@0.5.1)': - dependencies: - '@electric-sql/pglite': 0.5.1 + react-style-singleton@2.2.3: + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@electric-sql/pglite-pgvector@0.0.2(@electric-sql/pglite@0.5.1)': - dependencies: - '@electric-sql/pglite': 0.5.1 + react@16.13.1: + resolution: {integrity: sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==} + engines: {node: '>=0.10.0'} - '@electric-sql/pglite-socket@0.2.1(@electric-sql/pglite-age@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pg_hashids@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pg_ivm@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pg_textsearch@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pg_uuidv7@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pgtap@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pgvector@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite@0.5.1)': - dependencies: - '@electric-sql/pglite': 0.5.1 - '@electric-sql/pglite-age': 0.0.2(@electric-sql/pglite@0.5.1) - '@electric-sql/pglite-pg_hashids': 0.0.2(@electric-sql/pglite@0.5.1) - '@electric-sql/pglite-pg_ivm': 0.0.2(@electric-sql/pglite@0.5.1) - '@electric-sql/pglite-pg_textsearch': 0.0.2(@electric-sql/pglite@0.5.1) - '@electric-sql/pglite-pg_uuidv7': 0.0.2(@electric-sql/pglite@0.5.1) - '@electric-sql/pglite-pgtap': 0.0.2(@electric-sql/pglite@0.5.1) - '@electric-sql/pglite-pgvector': 0.0.2(@electric-sql/pglite@0.5.1) + react@19.2.5: + resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} + engines: {node: '>=0.10.0'} - '@electric-sql/pglite@0.5.1': {} + react@19.2.8: + resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==} + engines: {node: '>=0.10.0'} - '@emnapi/core@1.10.0': - dependencies: - '@emnapi/wasi-threads': 1.2.1 - tslib: 2.8.1 - optional: true + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - '@emnapi/runtime@1.10.0': - dependencies: - tslib: 2.8.1 - optional: true + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} - '@emnapi/wasi-threads@1.2.1': - dependencies: - tslib: 2.8.1 - optional: true + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} - '@esbuild/aix-ppc64@0.25.12': - optional: true + recharts@3.10.1: + resolution: {integrity: sha512-QXFrvt6IVcw7eeZCoyXTwkIJAX3Dv1nyVhMicXJ47GsGDDpcN8z6o644DibE9XjpBTThtsomLKnTV6lc+cVFUA==} + engines: {node: '>=18'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-is: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@esbuild/aix-ppc64@0.27.3': - optional: true + recma-build-jsx@1.0.0: + resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} - '@esbuild/aix-ppc64@0.27.7': - optional: true + recma-jsx@1.0.1: + resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@esbuild/aix-ppc64@0.28.0': - optional: true + recma-parse@1.0.0: + resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} - '@esbuild/android-arm64@0.25.12': - optional: true + recma-stringify@1.0.0: + resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} - '@esbuild/android-arm64@0.27.3': - optional: true + redux-thunk@3.1.0: + resolution: {integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==} + peerDependencies: + redux: ^5.0.0 - '@esbuild/android-arm64@0.27.7': - optional: true + redux@5.0.1: + resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==} - '@esbuild/android-arm64@0.28.0': - optional: true + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} - '@esbuild/android-arm@0.25.12': - optional: true + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - '@esbuild/android-arm@0.27.3': - optional: true + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} - '@esbuild/android-arm@0.27.7': - optional: true + rehype-recma@1.0.0: + resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} - '@esbuild/android-arm@0.28.0': - optional: true + remark-gfm@4.0.1: + resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} - '@esbuild/android-x64@0.25.12': - optional: true + remark-inline-links@7.0.0: + resolution: {integrity: sha512-4uj1pPM+F495ySZhTIB6ay2oSkTsKgmYaKk/q5HIdhX2fuyLEegpjWa0VdJRJ01sgOqAFo7MBKdDUejIYBMVMQ==} - '@esbuild/android-x64@0.27.3': - optional: true + remark-math@6.0.0: + resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==} - '@esbuild/android-x64@0.27.7': - optional: true + remark-mdx@3.1.1: + resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} - '@esbuild/android-x64@0.28.0': - optional: true + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - '@esbuild/darwin-arm64@0.25.12': - optional: true + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} - '@esbuild/darwin-arm64@0.27.3': - optional: true + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - '@esbuild/darwin-arm64@0.27.7': - optional: true + remark@15.0.1: + resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} - '@esbuild/darwin-arm64@0.28.0': - optional: true + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} - '@esbuild/darwin-x64@0.25.12': - optional: true - - '@esbuild/darwin-x64@0.27.3': - optional: true + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} - '@esbuild/darwin-x64@0.27.7': - optional: true + reselect@5.2.0: + resolution: {integrity: sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw==} - '@esbuild/darwin-x64@0.28.0': - optional: true + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} - '@esbuild/freebsd-arm64@0.25.12': - optional: true + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} - '@esbuild/freebsd-arm64@0.27.3': - optional: true + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} - '@esbuild/freebsd-arm64@0.27.7': - optional: true + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true - '@esbuild/freebsd-arm64@0.28.0': - optional: true + robust-predicates@3.0.3: + resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} - '@esbuild/freebsd-x64@0.25.12': - optional: true + rolldown@1.0.2: + resolution: {integrity: sha512-oZx5zVDtVB44AW3eaifgDml1gWRDZGvjcfdxonE4swNPG98PrrXjaO/KrnUjzlMnztCCRVlUueA1kCXhARGk6g==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true - '@esbuild/freebsd-x64@0.27.3': - optional: true + rollup@4.60.2: + resolution: {integrity: sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true - '@esbuild/freebsd-x64@0.27.7': - optional: true + rope-sequence@1.3.4: + resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==} - '@esbuild/freebsd-x64@0.28.0': - optional: true + roughjs@4.6.6: + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} - '@esbuild/linux-arm64@0.25.12': - optional: true + router@2.2.0: + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} + engines: {node: '>= 18'} - '@esbuild/linux-arm64@0.27.3': - optional: true + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} - '@esbuild/linux-arm64@0.27.7': - optional: true + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} - '@esbuild/linux-arm64@0.28.0': - optional: true + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - '@esbuild/linux-arm@0.25.12': - optional: true + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - '@esbuild/linux-arm@0.27.3': - optional: true + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - '@esbuild/linux-arm@0.27.7': - optional: true + scheduler@0.19.1: + resolution: {integrity: sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==} - '@esbuild/linux-arm@0.28.0': - optional: true + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} - '@esbuild/linux-ia32@0.25.12': - optional: true + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true - '@esbuild/linux-ia32@0.27.3': - optional: true + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true - '@esbuild/linux-ia32@0.27.7': - optional: true + send@1.2.1: + resolution: {integrity: sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==} + engines: {node: '>= 18'} - '@esbuild/linux-ia32@0.28.0': - optional: true + seroval-plugins@1.5.4: + resolution: {integrity: sha512-S0xQPhUTefAhNvNWFg0c1J8qJArHt5KdtJ/cFAofo06KD1MVSeFWyl4iiu+ApDIuw0WhjpOfCdgConOfAnLgkw==} + engines: {node: '>=10'} + peerDependencies: + seroval: ^1.0 - '@esbuild/linux-loong64@0.25.12': - optional: true + seroval@1.5.4: + resolution: {integrity: sha512-46uFvgrXTVxZcUorgSSRZ4y+ieqLLQRMlG4bnCZKW3qI6BZm7Rg4ntMW4p1mILEEBZWrFlcpp0AyIIlM6jD9iw==} + engines: {node: '>=10'} - '@esbuild/linux-loong64@0.27.3': - optional: true + serve-static@2.2.1: + resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} + engines: {node: '>= 18'} - '@esbuild/linux-loong64@0.27.7': - optional: true + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - '@esbuild/linux-loong64@0.28.0': - optional: true + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - '@esbuild/linux-mips64el@0.25.12': - optional: true + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - '@esbuild/linux-mips64el@0.27.3': - optional: true + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} - '@esbuild/linux-mips64el@0.27.7': - optional: true + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} - '@esbuild/linux-mips64el@0.28.0': - optional: true + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} - '@esbuild/linux-ppc64@0.25.12': - optional: true + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} - '@esbuild/linux-ppc64@0.27.3': - optional: true + shell-quote@1.10.0: + resolution: {integrity: sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==} + engines: {node: '>= 0.4'} - '@esbuild/linux-ppc64@0.27.7': - optional: true + shiki@4.4.1: + resolution: {integrity: sha512-rFP+iYKzjLEIqiMiKANhARqiAbk4deDhWnBtnUO/K0D0dPxMGDH4N0FVfBY/VeI+lPrV4wNGCHQZp7EOr7NNBw==} + engines: {node: '>=20'} - '@esbuild/linux-ppc64@0.28.0': - optional: true + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} - '@esbuild/linux-riscv64@0.25.12': - optional: true + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} - '@esbuild/linux-riscv64@0.27.3': - optional: true + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} - '@esbuild/linux-riscv64@0.27.7': - optional: true + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} - '@esbuild/linux-riscv64@0.28.0': - optional: true + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - '@esbuild/linux-s390x@0.25.12': - optional: true + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - '@esbuild/linux-s390x@0.27.3': - optional: true + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} - '@esbuild/linux-s390x@0.27.7': - optional: true + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - '@esbuild/linux-s390x@0.28.0': - optional: true + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - '@esbuild/linux-x64@0.25.12': - optional: true + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - '@esbuild/linux-x64@0.27.3': - optional: true + slash@2.0.0: + resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} + engines: {node: '>=6'} - '@esbuild/linux-x64@0.27.7': - optional: true + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - '@esbuild/linux-x64@0.28.0': - optional: true + smthrs@0.33.0: + resolution: {integrity: sha512-X2KvPu3Ly5jtgHoOns/YwwEFsGHxadJUk+OjW5mNx4VoYT6rl2gII+9FVGPKHC0cNYBDBoLzvYCX61IvYKWKpQ==} + engines: {bun: '>=1.3.0', node: '>=22'} + hasBin: true - '@esbuild/netbsd-arm64@0.25.12': - optional: true + socks-proxy-agent@8.0.5: + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} + engines: {node: '>= 14'} - '@esbuild/netbsd-arm64@0.27.3': - optional: true + socks@2.8.7: + resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - '@esbuild/netbsd-arm64@0.27.7': - optional: true + sorted-btree@1.8.1: + resolution: {integrity: sha512-395+XIP+wqNn3USkFSrNz7G3Ss/MXlZEqesxvzCRFwL14h6e8LukDHdLBePn5pwbm5OQ9vGu8mDyz2lLDIqamQ==} - '@esbuild/netbsd-arm64@0.28.0': - optional: true + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} - '@esbuild/netbsd-x64@0.25.12': - optional: true + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} - '@esbuild/netbsd-x64@0.27.3': - optional: true + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} - '@esbuild/netbsd-x64@0.27.7': - optional: true + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - '@esbuild/netbsd-x64@0.28.0': - optional: true + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} - '@esbuild/openbsd-arm64@0.25.12': - optional: true + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - '@esbuild/openbsd-arm64@0.27.3': - optional: true + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} - '@esbuild/openbsd-arm64@0.27.7': - optional: true + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} - '@esbuild/openbsd-arm64@0.28.0': - optional: true + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} - '@esbuild/openbsd-x64@0.25.12': - optional: true + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} - '@esbuild/openbsd-x64@0.27.3': - optional: true + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} - '@esbuild/openbsd-x64@0.27.7': - optional: true + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} - '@esbuild/openbsd-x64@0.28.0': - optional: true + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - '@esbuild/openharmony-arm64@0.25.12': - optional: true + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - '@esbuild/openharmony-arm64@0.27.3': - optional: true + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - '@esbuild/openharmony-arm64@0.27.7': - optional: true + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} - '@esbuild/openharmony-arm64@0.28.0': - optional: true + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} - '@esbuild/sunos-x64@0.25.12': - optional: true + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} - '@esbuild/sunos-x64@0.27.3': - optional: true + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} - '@esbuild/sunos-x64@0.27.7': - optional: true + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} - '@esbuild/sunos-x64@0.28.0': - optional: true + strnum@2.2.3: + resolution: {integrity: sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==} - '@esbuild/win32-arm64@0.25.12': - optional: true + strtok3@10.3.5: + resolution: {integrity: sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==} + engines: {node: '>=18'} - '@esbuild/win32-arm64@0.27.3': - optional: true + style-mod@4.1.3: + resolution: {integrity: sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==} - '@esbuild/win32-arm64@0.27.7': - optional: true + style-to-js@1.1.21: + resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} - '@esbuild/win32-arm64@0.28.0': - optional: true + style-to-object@1.0.14: + resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} - '@esbuild/win32-ia32@0.25.12': - optional: true + stylis@4.4.0: + resolution: {integrity: sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA==} - '@esbuild/win32-ia32@0.27.3': - optional: true + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true - '@esbuild/win32-ia32@0.27.7': - optional: true + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} - '@esbuild/win32-ia32@0.28.0': - optional: true + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} - '@esbuild/win32-x64@0.25.12': - optional: true + tar-fs@2.1.4: + resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} - '@esbuild/win32-x64@0.27.3': - optional: true + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} - '@esbuild/win32-x64@0.27.7': - optional: true + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} - '@esbuild/win32-x64@0.28.0': - optional: true + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - '@google/genai@1.50.1(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))': - dependencies: - google-auth-library: 10.6.2 - p-retry: 4.6.2 - protobufjs: 7.5.5 - ws: 8.20.1 - optionalDependencies: - '@modelcontextprotocol/sdk': 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate + three@0.165.0: + resolution: {integrity: sha512-cc96IlVYGydeceu0e5xq70H8/yoVT/tXBxV/W8A/U6uOq7DXc4/s1Mkmnu6SqoYGhSRWWYFOhVwvq6V0VtbplA==} - '@happy-dom/global-registrator@20.9.0': - dependencies: - '@types/node': 25.6.0 - happy-dom: 20.9.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - '@hono/node-server@1.19.14(hono@4.12.14)': - dependencies: - hono: 4.12.14 + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - '@iarna/toml@2.2.5': {} + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - '@img/colour@1.1.0': {} + tinyexec@1.2.2: + resolution: {integrity: sha512-M/Q0B2cp4K7kynaT/vnED1j8TlLY+Pp7C6Wl2bl/7u/F0mUVwdyOpwomQb8JpYLitHUssAJRmLZdMCGsrx7i+g==} + engines: {node: '>=18'} - '@img/sharp-darwin-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.4 - optional: true + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} - '@img/sharp-darwin-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.4 - optional: true + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} - '@img/sharp-libvips-darwin-arm64@1.2.4': - optional: true + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} - '@img/sharp-libvips-darwin-x64@1.2.4': - optional: true + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} - '@img/sharp-libvips-linux-arm64@1.2.4': - optional: true + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} - '@img/sharp-libvips-linux-arm@1.2.4': - optional: true + token-types@6.1.2: + resolution: {integrity: sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==} + engines: {node: '>=14.16'} - '@img/sharp-libvips-linux-ppc64@1.2.4': - optional: true + tokenx@1.3.0: + resolution: {integrity: sha512-NLdXTEZkKiO0gZuLtMoZKjCXTREXeZZt8nnnNeyoXtNZAfG/GKGSbQtLU5STspc0rMSwcA+UJfWZkbNU01iKmQ==} - '@img/sharp-libvips-linux-riscv64@1.2.4': - optional: true + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - '@img/sharp-libvips-linux-s390x@1.2.4': - optional: true + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true - '@img/sharp-libvips-linux-x64@1.2.4': - optional: true + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - optional: true + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - '@img/sharp-libvips-linuxmusl-x64@1.2.4': - optional: true + ts-algebra@2.0.0: + resolution: {integrity: sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==} - '@img/sharp-linux-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.4 - optional: true + ts-dedent@2.3.0: + resolution: {integrity: sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg==} + engines: {node: '>=6.10'} - '@img/sharp-linux-arm@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.4 - optional: true + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - '@img/sharp-linux-ppc64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.4 - optional: true + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - '@img/sharp-linux-riscv64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.2.4 - optional: true + tsup@8.5.1: + resolution: {integrity: sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true - '@img/sharp-linux-s390x@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.4 - optional: true + tsx@4.22.4: + resolution: {integrity: sha512-X8EX+XV4QR5xCsrgxaED954zTDfY8KqlDtskKEL0cHhyS/P8b4IFOvGDQpsC9Q1XnLq915wEfwwY/zzskCtmhg==} + engines: {node: '>=18.0.0'} + hasBin: true - '@img/sharp-linux-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.4 - optional: true + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - '@img/sharp-linuxmusl-arm64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - optional: true + twitter-api-v2@1.29.0: + resolution: {integrity: sha512-v473q5bwme4N+DWSg6qY+JCvfg1nSJRWwui3HUALafxfqCvVkKiYmS/5x/pVeJwTmyeBxexMbzHwnzrH4h6oYQ==} - '@img/sharp-linuxmusl-x64@0.34.5': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - optional: true + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} - '@img/sharp-wasm32@0.34.5': - dependencies: - '@emnapi/runtime': 1.10.0 - optional: true + typebox@1.1.33: + resolution: {integrity: sha512-+/MWwlQ1q2GSVwoxi/+u5JsHkgLQKcCN2Nsjree9c+K7GJu40qbaHrFETmfV1i9Fs1TcOVfynW+jJvIWcXtvjw==} - '@img/sharp-win32-arm64@0.34.5': - optional: true + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true - '@img/sharp-win32-ia32@0.34.5': - optional: true + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true - '@img/sharp-win32-x64@0.34.5': - optional: true + ufo@1.6.3: + resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.2.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 + uint8array-extras@1.5.0: + resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} + engines: {node: '>=18'} - '@jridgewell/gen-mapping@0.3.13': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - '@jridgewell/resolve-uri@3.1.2': {} + undici-types@7.19.2: + resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} - '@jridgewell/sourcemap-codec@1.5.5': {} + undici@7.24.8: + resolution: {integrity: sha512-6KQ/+QxK49Z/p3HO6E5ZCZWNnCasyZLa5ExaVYyvPxUwKtbCPMKELJOqh7EqOle0t9cH/7d2TaaTRRa6Nhs4YQ==} + engines: {node: '>=20.18.1'} - '@jridgewell/trace-mapping@0.3.31': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + undici@7.25.0: + resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==} + engines: {node: '>=20.18.1'} - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + undici@7.29.0: + resolution: {integrity: sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==} + engines: {node: '>=20.18.1'} - '@malept/cross-spawn-promise@1.1.1': - dependencies: - cross-spawn: 7.0.6 + unenv@2.0.0-rc.21: + resolution: {integrity: sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A==} - '@mariozechner/clipboard-darwin-arm64@0.3.3': - optional: true + unenv@2.0.0-rc.24: + resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} - '@mariozechner/clipboard-darwin-universal@0.3.3': - optional: true + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} - '@mariozechner/clipboard-darwin-x64@0.3.3': - optional: true + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - '@mariozechner/clipboard-linux-arm64-gnu@0.3.3': - optional: true + unist-util-is@6.0.1: + resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} - '@mariozechner/clipboard-linux-arm64-musl@0.3.3': - optional: true + unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} - '@mariozechner/clipboard-linux-riscv64-gnu@0.3.3': - optional: true + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - '@mariozechner/clipboard-linux-x64-gnu@0.3.3': - optional: true + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} - '@mariozechner/clipboard-linux-x64-musl@0.3.3': - optional: true + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - '@mariozechner/clipboard-win32-arm64-msvc@0.3.3': - optional: true + unist-util-visit-parents@6.0.2: + resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} - '@mariozechner/clipboard-win32-x64-msvc@0.3.3': - optional: true + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} - '@mariozechner/clipboard@0.3.3': - optionalDependencies: - '@mariozechner/clipboard-darwin-arm64': 0.3.3 - '@mariozechner/clipboard-darwin-universal': 0.3.3 - '@mariozechner/clipboard-darwin-x64': 0.3.3 - '@mariozechner/clipboard-linux-arm64-gnu': 0.3.3 - '@mariozechner/clipboard-linux-arm64-musl': 0.3.3 - '@mariozechner/clipboard-linux-riscv64-gnu': 0.3.3 - '@mariozechner/clipboard-linux-x64-gnu': 0.3.3 - '@mariozechner/clipboard-linux-x64-musl': 0.3.3 - '@mariozechner/clipboard-win32-arm64-msvc': 0.3.3 - '@mariozechner/clipboard-win32-x64-msvc': 0.3.3 - optional: true + universal-user-agent@7.0.3: + resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} - '@mariozechner/jiti@2.6.5': - dependencies: - std-env: 3.10.0 - yoctocolors: 2.1.2 + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} - '@mariozechner/pi-agent-core@0.70.2(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)': - dependencies: - '@mariozechner/pi-ai': 0.70.2(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(ws@8.20.0)(zod@4.3.6) - typebox: 1.1.33 - transitivePeerDependencies: - - '@modelcontextprotocol/sdk' - - aws-crt - - bufferutil - - supports-color - - utf-8-validate - - ws - - zod + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} - '@mariozechner/pi-ai@0.70.2(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)': - dependencies: - '@anthropic-ai/sdk': 0.90.0(zod@4.3.6) - '@aws-sdk/client-bedrock-runtime': 3.1037.0 - '@google/genai': 1.50.1(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6)) - '@mistralai/mistralai': 2.2.1 - chalk: 5.6.2 - openai: 6.26.0(ws@8.20.0)(zod@4.3.6) - partial-json: 0.1.7 - proxy-agent: 6.5.0 - typebox: 1.1.33 - undici: 7.25.0 - zod-to-json-schema: 3.25.2(zod@4.3.6) - transitivePeerDependencies: - - '@modelcontextprotocol/sdk' - - aws-crt - - bufferutil - - supports-color - - utf-8-validate - - ws - - zod + use-callback-ref@1.3.3: + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@mariozechner/pi-coding-agent@0.70.2(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)': - dependencies: - '@mariozechner/jiti': 2.6.5 - '@mariozechner/pi-agent-core': 0.70.2(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(ws@8.20.0)(zod@4.3.6) - '@mariozechner/pi-ai': 0.70.2(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(ws@8.20.0)(zod@4.3.6) - '@mariozechner/pi-tui': 0.70.2 - '@silvia-odwyer/photon-node': 0.3.4 - chalk: 5.6.2 - cli-highlight: 2.1.11 - diff: 8.0.2 - extract-zip: 2.0.1 - file-type: 21.3.4 - glob: 13.0.6 - hosted-git-info: 9.0.2 - ignore: 7.0.5 - marked: 15.0.12 - minimatch: 10.2.5 - proper-lockfile: 4.1.2 - strip-ansi: 7.2.0 - typebox: 1.1.33 - undici: 7.25.0 - uuid: 14.0.0 - yaml: 2.8.3 - optionalDependencies: - '@mariozechner/clipboard': 0.3.3 - transitivePeerDependencies: - - '@modelcontextprotocol/sdk' - - aws-crt - - bufferutil - - supports-color - - utf-8-validate - - ws - - zod + use-sidecar@1.1.3: + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true - '@mariozechner/pi-tui@0.70.2': - dependencies: - '@types/mime-types': 2.1.4 - chalk: 5.6.2 - get-east-asian-width: 1.5.0 - marked: 15.0.12 - mime-types: 3.0.2 - optionalDependencies: - koffi: 2.16.1 + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@mdx-js/esbuild@3.1.1(esbuild@0.27.7)': - dependencies: - '@mdx-js/mdx': 3.1.1 - '@types/unist': 3.0.3 - esbuild: 0.27.7 - source-map: 0.7.6 - vfile: 6.0.3 - vfile-message: 4.0.3 - transitivePeerDependencies: - - supports-color + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - '@mdx-js/esbuild@3.1.1(esbuild@0.28.0)': - dependencies: - '@mdx-js/mdx': 3.1.1 - '@types/unist': 3.0.3 - esbuild: 0.28.0 - source-map: 0.7.6 - vfile: 6.0.3 - vfile-message: 4.0.3 - transitivePeerDependencies: - - supports-color + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true - '@mdx-js/mdx@3.1.1': - dependencies: - '@types/estree': 1.0.8 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.4 - '@types/mdx': 2.0.13 - acorn: 8.16.0 - collapse-white-space: 2.1.0 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-util-scope: 1.0.0 - estree-walker: 3.0.3 - hast-util-to-jsx-runtime: 2.3.6 - markdown-extensions: 2.0.0 - recma-build-jsx: 1.0.0 - recma-jsx: 1.0.1(acorn@8.16.0) - recma-stringify: 1.0.0 - rehype-recma: 1.0.0 - remark-mdx: 3.1.1 - remark-parse: 11.0.0 - remark-rehype: 11.1.2 - source-map: 0.7.6 - unified: 11.0.5 - unist-util-position-from-estree: 2.0.0 - unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.1.0 - vfile: 6.0.3 - transitivePeerDependencies: - - supports-color + uuid@14.0.0: + resolution: {integrity: sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==} + hasBin: true - '@mistralai/mistralai@2.2.1': - dependencies: - ws: 8.20.1 - zod: 4.3.6 - zod-to-json-schema: 3.25.2(zod@4.3.6) - transitivePeerDependencies: - - bufferutil - - utf-8-validate + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} - '@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6)': - dependencies: - '@hono/node-server': 1.19.14(hono@4.12.14) - ajv: 8.18.0 - ajv-formats: 3.0.1(ajv@8.18.0) - content-type: 1.0.5 - cors: 2.8.6 - cross-spawn: 7.0.6 - eventsource: 3.0.7 - eventsource-parser: 3.0.7 - express: 5.2.1 - express-rate-limit: 8.3.2(express@5.2.1) - hono: 4.12.14 - jose: 6.2.2 - json-schema-typed: 8.0.2 - pkce-challenge: 5.0.1 - raw-body: 3.0.2 - zod: 4.3.6 - zod-to-json-schema: 3.25.2(zod@4.3.6) - optionalDependencies: - '@cfworker/json-schema': 4.1.1 - transitivePeerDependencies: - - supports-color + vfile-message@4.0.3: + resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} - '@modelcontextprotocol/server@2.0.0-alpha.2(@cfworker/json-schema@4.1.1)': - dependencies: - zod: 4.3.6 - optionalDependencies: - '@cfworker/json-schema': 4.1.1 + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': - optional: true + victory-vendor@37.3.6: + resolution: {integrity: sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==} - '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': - optional: true + vite@8.0.14: + resolution: {integrity: sha512-s4BJJ+5y1pYL6Otw51FHhVJQhPnuRinKig64g/1+EUNaJsd3gCKdD31IPFvswUgW9/60QT9oFHbZHbQK5imcxw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.18 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true - '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': - optional: true + vitest@4.1.7: + resolution: {integrity: sha512-flYyaFd2CgoCoU+0UKt3pxksgC+S02iTDN0n3LtqaMeXsI9SBcdNujc2k0DeFLzUn/0k538yNjOSdwgCqcrwJA==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.7 + '@vitest/browser-preview': 4.1.7 + '@vitest/browser-webdriverio': 4.1.7 + '@vitest/coverage-istanbul': 4.1.7 + '@vitest/coverage-v8': 4.1.7 + '@vitest/ui': 4.1.7 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true - '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': - optional: true + vue@3.5.40: + resolution: {integrity: sha512-+8PJ4SJXdn/cHGImF4CKdxlWHIN5Dkt7DoufRREM6h6uVCx2m7QxgcEQmmzyOK8A9mcafg7sFbJFYsdFVubTig==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': - optional: true + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} - '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': - optional: true + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} - '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.2 - optional: true + web-streams-polyfill@4.0.0-beta.3: + resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} + engines: {node: '>= 14'} - '@nodable/entities@2.1.0': {} + web-tree-sitter@0.25.10: + resolution: {integrity: sha512-Y09sF44/13XvgVKgO2cNDw5rGk6s26MgoZPXLESvMXeefBf7i6/73eFurre0IsTW6E14Y0ArIzhUMmjoc7xyzA==} + peerDependencies: + '@types/emscripten': ^1.40.0 + peerDependenciesMeta: + '@types/emscripten': + optional: true - '@octokit/auth-token@5.1.2': {} + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - '@octokit/core@6.1.6': - dependencies: - '@octokit/auth-token': 5.1.2 - '@octokit/graphql': 8.2.2 - '@octokit/request': 9.2.4 - '@octokit/request-error': 6.1.8 - '@octokit/types': 14.1.0 - before-after-hook: 3.0.2 - universal-user-agent: 7.0.3 + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} - '@octokit/endpoint@10.1.4': - dependencies: - '@octokit/types': 14.1.0 - universal-user-agent: 7.0.3 + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - '@octokit/graphql@8.2.2': - dependencies: - '@octokit/request': 9.2.4 - '@octokit/types': 14.1.0 - universal-user-agent: 7.0.3 + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true - '@octokit/openapi-types@24.2.0': {} + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true - '@octokit/openapi-types@25.1.0': {} + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true - '@octokit/plugin-paginate-rest@11.6.0(@octokit/core@6.1.6)': - dependencies: - '@octokit/core': 6.1.6 - '@octokit/types': 13.10.0 + workerd@1.20260424.1: + resolution: {integrity: sha512-oKsB0Xo/mfkYMdSACoS06XZg09VUK4rXwHfF/1t3P++sMbwzf4UHQvMO57+zxpEB2nVrY/ZkW0bYFGq4GdAFSQ==} + engines: {node: '>=16'} + hasBin: true - '@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.6)': - dependencies: - '@octokit/core': 6.1.6 + workerd@1.20260601.1: + resolution: {integrity: sha512-Bg4+HF3B8TW0urAv8chiz25HSQ/aJxMBjgheUzu/nB1NQa+CaKGrUPv+Z3bf0np/WxLHYW1kcseVEtzZVPbX4g==} + engines: {node: '>=16'} + hasBin: true - '@octokit/plugin-rest-endpoint-methods@13.5.0(@octokit/core@6.1.6)': - dependencies: - '@octokit/core': 6.1.6 - '@octokit/types': 13.10.0 + wrangler@4.97.0: + resolution: {integrity: sha512-jzW/aNvjerV+4TmwbvwGY6lpcuBk7EFUTonMDNfci45wSmMTj2/OJN+83cc/CeepKdb+6ZjGJw9NRjmcQoxqRg==} + engines: {node: '>=22.0.0'} + hasBin: true + peerDependencies: + '@cloudflare/workers-types': ^4.20260601.1 + peerDependenciesMeta: + '@cloudflare/workers-types': + optional: true - '@octokit/request-error@6.1.8': - dependencies: - '@octokit/types': 14.1.0 - - '@octokit/request@9.2.4': - dependencies: - '@octokit/endpoint': 10.1.4 - '@octokit/request-error': 6.1.8 - '@octokit/types': 14.1.0 - fast-content-type-parse: 2.0.1 - universal-user-agent: 7.0.3 + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} - '@octokit/rest@21.1.1': - dependencies: - '@octokit/core': 6.1.6 - '@octokit/plugin-paginate-rest': 11.6.0(@octokit/core@6.1.6) - '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.6) - '@octokit/plugin-rest-endpoint-methods': 13.5.0(@octokit/core@6.1.6) + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} - '@octokit/types@13.10.0': - dependencies: - '@octokit/openapi-types': 24.2.0 + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - '@octokit/types@14.1.0': - dependencies: - '@octokit/openapi-types': 25.1.0 + ws@7.5.13: + resolution: {integrity: sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - '@opentelemetry/api-logs@0.214.0': - dependencies: - '@opentelemetry/api': 1.9.0 + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - '@opentelemetry/api@1.9.0': {} + ws@8.20.0: + resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - '@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 + ws@8.20.1: + resolution: {integrity: sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - '@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.40.0 + ws@8.21.1: + resolution: {integrity: sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - '@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.40.0 + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} - '@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.214.0 - '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.6.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.40.0 + xml-naming@0.1.0: + resolution: {integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==} + engines: {node: '>=16.0.0'} - '@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.6.1(@opentelemetry/api@1.9.0) + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} - '@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 2.6.1(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.40.0 + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} - '@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 2.6.1(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.6.1(@opentelemetry/api@1.9.0) + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} + engines: {node: '>= 6'} - '@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 2.6.1(@opentelemetry/api@1.9.0) + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} + engines: {node: '>= 14.6'} + hasBin: true - '@opentelemetry/semantic-conventions@1.40.0': {} + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true - '@oxc-project/types@0.132.0': {} + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} - '@oxlint/binding-android-arm-eabi@1.60.0': - optional: true + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} - '@oxlint/binding-android-arm64@1.60.0': - optional: true + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} - '@oxlint/binding-darwin-arm64@1.60.0': - optional: true + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} - '@oxlint/binding-darwin-x64@1.60.0': - optional: true + youch-core@0.3.3: + resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} - '@oxlint/binding-freebsd-x64@1.60.0': - optional: true + youch@4.1.0-beta.10: + resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==} - '@oxlint/binding-linux-arm-gnueabihf@1.60.0': - optional: true + zod-to-json-schema@3.25.2: + resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} + peerDependencies: + zod: ^3.25.28 || ^4 - '@oxlint/binding-linux-arm-musleabihf@1.60.0': - optional: true + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - '@oxlint/binding-linux-arm64-gnu@1.60.0': - optional: true + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} - '@oxlint/binding-linux-arm64-musl@1.60.0': - optional: true + zod@4.4.3: + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} - '@oxlint/binding-linux-ppc64-gnu@1.60.0': - optional: true + zustand@4.5.7: + resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true - '@oxlint/binding-linux-riscv64-gnu@1.60.0': - optional: true + zustand@5.0.14: + resolution: {integrity: sha512-/8tAspM5LMPr28b3fwLYrtdj77ECpfZviaP75CMTnwO8ISyaE4GDIG/9rDDYq/cH9D2Xw2A2RXglLInmVBQB/g==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=18.0.0' + immer: '>=9.0.6' + react: '>=18.0.0' + use-sync-external-store: '>=1.2.0' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true - '@oxlint/binding-linux-riscv64-musl@1.60.0': - optional: true + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - '@oxlint/binding-linux-s390x-gnu@1.60.0': - optional: true +snapshots: - '@oxlint/binding-linux-x64-gnu@1.60.0': - optional: true + '@ag-ui/core@0.0.52': + dependencies: + zod: 3.25.76 - '@oxlint/binding-linux-x64-musl@1.60.0': - optional: true + '@ai-sdk/anthropic@3.0.71(zod@4.3.6)': + dependencies: + '@ai-sdk/provider': 3.0.8 + '@ai-sdk/provider-utils': 4.0.23(zod@4.3.6) + zod: 4.3.6 - '@oxlint/binding-openharmony-arm64@1.60.0': - optional: true + '@ai-sdk/anthropic@4.0.27(zod@4.4.3)': + dependencies: + '@ai-sdk/provider': 4.0.4 + '@ai-sdk/provider-utils': 5.0.18(zod@4.4.3) + zod: 4.4.3 - '@oxlint/binding-win32-arm64-msvc@1.60.0': - optional: true + '@ai-sdk/gateway@3.0.104(zod@4.3.6)': + dependencies: + '@ai-sdk/provider': 3.0.8 + '@ai-sdk/provider-utils': 4.0.23(zod@4.3.6) + '@vercel/oidc': 3.2.0 + zod: 4.3.6 - '@oxlint/binding-win32-ia32-msvc@1.60.0': - optional: true + '@ai-sdk/gateway@4.0.37(zod@4.4.3)': + dependencies: + '@ai-sdk/provider': 4.0.4 + '@ai-sdk/provider-utils': 5.0.18(zod@4.4.3) + '@vercel/oidc': 3.2.0 + zod: 4.4.3 - '@oxlint/binding-win32-x64-msvc@1.60.0': - optional: true - - '@parcel/watcher-android-arm64@2.5.6': - optional: true - - '@parcel/watcher-darwin-arm64@2.5.6': - optional: true - - '@parcel/watcher-darwin-x64@2.5.6': - optional: true - - '@parcel/watcher-freebsd-x64@2.5.6': - optional: true - - '@parcel/watcher-linux-arm-glibc@2.5.6': - optional: true - - '@parcel/watcher-linux-arm-musl@2.5.6': - optional: true - - '@parcel/watcher-linux-arm64-glibc@2.5.6': - optional: true + '@ai-sdk/openai@3.0.53(zod@4.3.6)': + dependencies: + '@ai-sdk/provider': 3.0.8 + '@ai-sdk/provider-utils': 4.0.23(zod@4.3.6) + zod: 4.3.6 - '@parcel/watcher-linux-arm64-musl@2.5.6': - optional: true + '@ai-sdk/openai@4.0.27(zod@4.4.3)': + dependencies: + '@ai-sdk/provider': 4.0.4 + '@ai-sdk/provider-utils': 5.0.18(zod@4.4.3) + zod: 4.4.3 - '@parcel/watcher-linux-x64-glibc@2.5.6': - optional: true + '@ai-sdk/provider-utils@4.0.23(zod@4.3.6)': + dependencies: + '@ai-sdk/provider': 3.0.8 + '@standard-schema/spec': 1.1.0 + eventsource-parser: 3.0.7 + zod: 4.3.6 - '@parcel/watcher-linux-x64-musl@2.5.6': - optional: true + '@ai-sdk/provider-utils@5.0.18(zod@4.4.3)': + dependencies: + '@ai-sdk/provider': 4.0.4 + '@standard-schema/spec': 1.1.0 + '@workflow/serde': 4.1.0 + eventsource-parser: 3.1.0 + undici: 7.29.0 + zod: 4.4.3 - '@parcel/watcher-win32-arm64@2.5.6': - optional: true + '@ai-sdk/provider@3.0.8': + dependencies: + json-schema: 0.4.0 - '@parcel/watcher-win32-ia32@2.5.6': - optional: true + '@ai-sdk/provider@4.0.4': + dependencies: + json-schema: 0.4.0 - '@parcel/watcher-win32-x64@2.5.6': - optional: true + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.8.0 + tinyexec: 1.2.2 - '@parcel/watcher@2.5.6': + '@anthropic-ai/sdk@0.90.0(zod@4.3.6)': dependencies: - detect-libc: 2.1.2 - is-glob: 4.0.3 - node-addon-api: 7.1.1 - picomatch: 4.0.4 + json-schema-to-ts: 3.1.1 optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.6 - '@parcel/watcher-darwin-arm64': 2.5.6 - '@parcel/watcher-darwin-x64': 2.5.6 - '@parcel/watcher-freebsd-x64': 2.5.6 - '@parcel/watcher-linux-arm-glibc': 2.5.6 - '@parcel/watcher-linux-arm-musl': 2.5.6 - '@parcel/watcher-linux-arm64-glibc': 2.5.6 - '@parcel/watcher-linux-arm64-musl': 2.5.6 - '@parcel/watcher-linux-x64-glibc': 2.5.6 - '@parcel/watcher-linux-x64-musl': 2.5.6 - '@parcel/watcher-win32-arm64': 2.5.6 - '@parcel/watcher-win32-ia32': 2.5.6 - '@parcel/watcher-win32-x64': 2.5.6 - - '@pkgjs/parseargs@0.11.0': - optional: true + zod: 4.3.6 - '@playwright/test@1.60.0': + '@aws-crypto/crc32@5.2.0': dependencies: - playwright: 1.60.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.10 + tslib: 2.8.1 - '@poppinss/colors@4.1.6': + '@aws-crypto/sha256-browser@5.2.0': dependencies: - kleur: 4.1.5 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.8 + '@aws-sdk/util-locate-window': 3.965.5 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 - '@poppinss/dumper@0.6.5': + '@aws-crypto/sha256-js@5.2.0': dependencies: - '@poppinss/colors': 4.1.6 - '@sindresorhus/is': 7.2.0 - supports-color: 10.2.2 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.8 + tslib: 2.8.1 - '@poppinss/exception@1.2.3': {} + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.8.1 - '@protobufjs/aspromise@1.1.2': {} + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.973.8 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 - '@protobufjs/base64@1.1.2': {} + '@aws-sdk/client-bedrock-runtime@3.1037.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.5 + '@aws-sdk/credential-provider-node': 3.972.36 + '@aws-sdk/eventstream-handler-node': 3.972.14 + '@aws-sdk/middleware-eventstream': 3.972.10 + '@aws-sdk/middleware-host-header': 3.972.10 + '@aws-sdk/middleware-logger': 3.972.10 + '@aws-sdk/middleware-recursion-detection': 3.972.11 + '@aws-sdk/middleware-user-agent': 3.972.35 + '@aws-sdk/middleware-websocket': 3.972.16 + '@aws-sdk/region-config-resolver': 3.972.13 + '@aws-sdk/token-providers': 3.1037.0 + '@aws-sdk/types': 3.973.8 + '@aws-sdk/util-endpoints': 3.996.8 + '@aws-sdk/util-user-agent-browser': 3.972.10 + '@aws-sdk/util-user-agent-node': 3.973.21 + '@smithy/config-resolver': 4.4.17 + '@smithy/core': 3.23.17 + '@smithy/eventstream-serde-browser': 4.2.14 + '@smithy/eventstream-serde-config-resolver': 4.3.14 + '@smithy/eventstream-serde-node': 4.2.14 + '@smithy/fetch-http-handler': 5.3.17 + '@smithy/hash-node': 4.2.14 + '@smithy/invalid-dependency': 4.2.14 + '@smithy/middleware-content-length': 4.2.14 + '@smithy/middleware-endpoint': 4.4.32 + '@smithy/middleware-retry': 4.5.5 + '@smithy/middleware-serde': 4.2.20 + '@smithy/middleware-stack': 4.2.14 + '@smithy/node-config-provider': 4.3.14 + '@smithy/node-http-handler': 4.6.1 + '@smithy/protocol-http': 5.3.14 + '@smithy/smithy-client': 4.12.13 + '@smithy/types': 4.14.1 + '@smithy/url-parser': 4.2.14 + '@smithy/util-base64': 4.3.2 + '@smithy/util-body-length-browser': 4.2.2 + '@smithy/util-body-length-node': 4.2.3 + '@smithy/util-defaults-mode-browser': 4.3.49 + '@smithy/util-defaults-mode-node': 4.2.54 + '@smithy/util-endpoints': 3.4.2 + '@smithy/util-middleware': 4.2.14 + '@smithy/util-retry': 4.3.4 + '@smithy/util-stream': 4.5.25 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@protobufjs/codegen@2.0.4': {} + '@aws-sdk/client-cognito-identity@3.1061.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.17 + '@aws-sdk/credential-provider-node': 3.972.50 + '@aws-sdk/types': 3.973.10 + '@smithy/core': 3.24.6 + '@smithy/fetch-http-handler': 5.4.6 + '@smithy/node-http-handler': 4.7.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 - '@protobufjs/eventemitter@1.1.0': {} + '@aws-sdk/core@3.974.17': + dependencies: + '@aws-sdk/types': 3.973.10 + '@aws-sdk/xml-builder': 3.972.27 + '@aws/lambda-invoke-store': 0.2.4 + '@smithy/core': 3.24.6 + '@smithy/signature-v4': 5.4.6 + '@smithy/types': 4.14.3 + bowser: 2.14.1 + tslib: 2.8.1 - '@protobufjs/fetch@1.1.0': + '@aws-sdk/core@3.974.5': dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 + '@aws-sdk/types': 3.973.8 + '@aws-sdk/xml-builder': 3.972.19 + '@smithy/core': 3.23.17 + '@smithy/node-config-provider': 4.3.14 + '@smithy/property-provider': 4.2.14 + '@smithy/protocol-http': 5.3.14 + '@smithy/signature-v4': 5.3.14 + '@smithy/smithy-client': 4.12.13 + '@smithy/types': 4.14.1 + '@smithy/util-base64': 4.3.2 + '@smithy/util-middleware': 4.2.14 + '@smithy/util-retry': 4.3.4 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 - '@protobufjs/float@1.0.2': {} + '@aws-sdk/credential-provider-cognito-identity@3.972.40': + dependencies: + '@aws-sdk/nested-clients': 3.997.15 + '@aws-sdk/types': 3.973.10 + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 - '@protobufjs/inquire@1.1.0': {} + '@aws-sdk/credential-provider-env@3.972.31': + dependencies: + '@aws-sdk/core': 3.974.5 + '@aws-sdk/types': 3.973.8 + '@smithy/property-provider': 4.2.14 + '@smithy/types': 4.14.1 + tslib: 2.8.1 - '@protobufjs/path@1.1.2': {} + '@aws-sdk/credential-provider-env@3.972.43': + dependencies: + '@aws-sdk/core': 3.974.17 + '@aws-sdk/types': 3.973.10 + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 - '@protobufjs/pool@1.1.0': {} + '@aws-sdk/credential-provider-http@3.972.33': + dependencies: + '@aws-sdk/core': 3.974.5 + '@aws-sdk/types': 3.973.8 + '@smithy/fetch-http-handler': 5.3.17 + '@smithy/node-http-handler': 4.6.1 + '@smithy/property-provider': 4.2.14 + '@smithy/protocol-http': 5.3.14 + '@smithy/smithy-client': 4.12.13 + '@smithy/types': 4.14.1 + '@smithy/util-stream': 4.5.25 + tslib: 2.8.1 - '@protobufjs/utf8@1.1.0': {} + '@aws-sdk/credential-provider-http@3.972.45': + dependencies: + '@aws-sdk/core': 3.974.17 + '@aws-sdk/types': 3.973.10 + '@smithy/core': 3.24.6 + '@smithy/fetch-http-handler': 5.4.6 + '@smithy/node-http-handler': 4.7.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 - '@rolldown/binding-android-arm64@1.0.2': - optional: true - - '@rolldown/binding-darwin-arm64@1.0.2': - optional: true - - '@rolldown/binding-darwin-x64@1.0.2': - optional: true - - '@rolldown/binding-freebsd-x64@1.0.2': - optional: true - - '@rolldown/binding-linux-arm-gnueabihf@1.0.2': - optional: true - - '@rolldown/binding-linux-arm64-gnu@1.0.2': - optional: true - - '@rolldown/binding-linux-arm64-musl@1.0.2': - optional: true - - '@rolldown/binding-linux-ppc64-gnu@1.0.2': - optional: true - - '@rolldown/binding-linux-s390x-gnu@1.0.2': - optional: true - - '@rolldown/binding-linux-x64-gnu@1.0.2': - optional: true - - '@rolldown/binding-linux-x64-musl@1.0.2': - optional: true - - '@rolldown/binding-openharmony-arm64@1.0.2': - optional: true - - '@rolldown/binding-wasm32-wasi@1.0.2': + '@aws-sdk/credential-provider-ini@3.972.35': 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 - - '@rolldown/binding-win32-arm64-msvc@1.0.2': - optional: true - - '@rolldown/binding-win32-x64-msvc@1.0.2': - optional: true - - '@rolldown/pluginutils@1.0.1': {} - - '@rollup/rollup-android-arm-eabi@4.60.2': - optional: true - - '@rollup/rollup-android-arm64@4.60.2': - optional: true - - '@rollup/rollup-darwin-arm64@4.60.2': - optional: true - - '@rollup/rollup-darwin-x64@4.60.2': - optional: true - - '@rollup/rollup-freebsd-arm64@4.60.2': - optional: true - - '@rollup/rollup-freebsd-x64@4.60.2': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.60.2': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.60.2': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.60.2': - optional: true - - '@rollup/rollup-linux-loong64-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-loong64-musl@4.60.2': - optional: true - - '@rollup/rollup-linux-ppc64-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-ppc64-musl@4.60.2': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.60.2': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.60.2': - optional: true - - '@rollup/rollup-linux-x64-musl@4.60.2': - optional: true - - '@rollup/rollup-openbsd-x64@4.60.2': - optional: true - - '@rollup/rollup-openharmony-arm64@4.60.2': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.60.2': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.60.2': - optional: true - - '@rollup/rollup-win32-x64-gnu@4.60.2': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.60.2': - optional: true - - '@sec-ant/readable-stream@0.4.1': {} - - '@seznam/compose-react-refs@1.0.6': {} - - '@silvia-odwyer/photon-node@0.3.4': {} - - '@sinclair/typebox@0.34.49': {} - - '@sindresorhus/is@7.2.0': {} - - '@sindresorhus/merge-streams@4.0.0': {} + '@aws-sdk/core': 3.974.5 + '@aws-sdk/credential-provider-env': 3.972.31 + '@aws-sdk/credential-provider-http': 3.972.33 + '@aws-sdk/credential-provider-login': 3.972.35 + '@aws-sdk/credential-provider-process': 3.972.31 + '@aws-sdk/credential-provider-sso': 3.972.35 + '@aws-sdk/credential-provider-web-identity': 3.972.35 + '@aws-sdk/nested-clients': 3.997.3 + '@aws-sdk/types': 3.973.8 + '@smithy/credential-provider-imds': 4.2.14 + '@smithy/property-provider': 4.2.14 + '@smithy/shared-ini-file-loader': 4.4.9 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@smithy/config-resolver@4.4.17': + '@aws-sdk/credential-provider-ini@3.972.48': dependencies: - '@smithy/node-config-provider': 4.3.14 - '@smithy/types': 4.14.1 - '@smithy/util-config-provider': 4.2.2 - '@smithy/util-endpoints': 3.4.2 - '@smithy/util-middleware': 4.2.14 + '@aws-sdk/core': 3.974.17 + '@aws-sdk/credential-provider-env': 3.972.43 + '@aws-sdk/credential-provider-http': 3.972.45 + '@aws-sdk/credential-provider-login': 3.972.47 + '@aws-sdk/credential-provider-process': 3.972.43 + '@aws-sdk/credential-provider-sso': 3.972.47 + '@aws-sdk/credential-provider-web-identity': 3.972.47 + '@aws-sdk/nested-clients': 3.997.15 + '@aws-sdk/types': 3.973.10 + '@smithy/core': 3.24.6 + '@smithy/credential-provider-imds': 4.3.7 + '@smithy/types': 4.14.3 tslib: 2.8.1 - '@smithy/core@3.23.17': + '@aws-sdk/credential-provider-login@3.972.35': dependencies: + '@aws-sdk/core': 3.974.5 + '@aws-sdk/nested-clients': 3.997.3 + '@aws-sdk/types': 3.973.8 + '@smithy/property-provider': 4.2.14 '@smithy/protocol-http': 5.3.14 + '@smithy/shared-ini-file-loader': 4.4.9 '@smithy/types': 4.14.1 - '@smithy/url-parser': 4.2.14 - '@smithy/util-base64': 4.3.2 - '@smithy/util-body-length-browser': 4.2.2 - '@smithy/util-middleware': 4.2.14 - '@smithy/util-stream': 4.5.25 - '@smithy/util-utf8': 4.2.2 - '@smithy/uuid': 1.1.2 tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@smithy/core@3.24.6': + '@aws-sdk/credential-provider-login@3.972.47': dependencies: - '@aws-crypto/crc32': 5.2.0 + '@aws-sdk/core': 3.974.17 + '@aws-sdk/nested-clients': 3.997.15 + '@aws-sdk/types': 3.973.10 + '@smithy/core': 3.24.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@smithy/credential-provider-imds@4.2.14': + '@aws-sdk/credential-provider-node@3.972.36': dependencies: - '@smithy/node-config-provider': 4.3.14 + '@aws-sdk/credential-provider-env': 3.972.31 + '@aws-sdk/credential-provider-http': 3.972.33 + '@aws-sdk/credential-provider-ini': 3.972.35 + '@aws-sdk/credential-provider-process': 3.972.31 + '@aws-sdk/credential-provider-sso': 3.972.35 + '@aws-sdk/credential-provider-web-identity': 3.972.35 + '@aws-sdk/types': 3.973.8 + '@smithy/credential-provider-imds': 4.2.14 '@smithy/property-provider': 4.2.14 + '@smithy/shared-ini-file-loader': 4.4.9 '@smithy/types': 4.14.1 - '@smithy/url-parser': 4.2.14 tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@smithy/credential-provider-imds@4.3.7': + '@aws-sdk/credential-provider-node@3.972.50': dependencies: + '@aws-sdk/credential-provider-env': 3.972.43 + '@aws-sdk/credential-provider-http': 3.972.45 + '@aws-sdk/credential-provider-ini': 3.972.48 + '@aws-sdk/credential-provider-process': 3.972.43 + '@aws-sdk/credential-provider-sso': 3.972.47 + '@aws-sdk/credential-provider-web-identity': 3.972.47 + '@aws-sdk/types': 3.973.10 '@smithy/core': 3.24.6 + '@smithy/credential-provider-imds': 4.3.7 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@smithy/eventstream-codec@4.2.14': + '@aws-sdk/credential-provider-process@3.972.31': dependencies: - '@aws-crypto/crc32': 5.2.0 + '@aws-sdk/core': 3.974.5 + '@aws-sdk/types': 3.973.8 + '@smithy/property-provider': 4.2.14 + '@smithy/shared-ini-file-loader': 4.4.9 '@smithy/types': 4.14.1 - '@smithy/util-hex-encoding': 4.2.2 tslib: 2.8.1 - '@smithy/eventstream-serde-browser@4.2.14': + '@aws-sdk/credential-provider-process@3.972.43': dependencies: - '@smithy/eventstream-serde-universal': 4.2.14 - '@smithy/types': 4.14.1 + '@aws-sdk/core': 3.974.17 + '@aws-sdk/types': 3.973.10 + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 tslib: 2.8.1 - '@smithy/eventstream-serde-config-resolver@4.3.14': + '@aws-sdk/credential-provider-sso@3.972.35': dependencies: + '@aws-sdk/core': 3.974.5 + '@aws-sdk/nested-clients': 3.997.3 + '@aws-sdk/token-providers': 3.1036.0 + '@aws-sdk/types': 3.973.8 + '@smithy/property-provider': 4.2.14 + '@smithy/shared-ini-file-loader': 4.4.9 '@smithy/types': 4.14.1 tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@smithy/eventstream-serde-node@4.2.14': + '@aws-sdk/credential-provider-sso@3.972.47': dependencies: - '@smithy/eventstream-serde-universal': 4.2.14 - '@smithy/types': 4.14.1 + '@aws-sdk/core': 3.974.17 + '@aws-sdk/nested-clients': 3.997.15 + '@aws-sdk/token-providers': 3.1060.0 + '@aws-sdk/types': 3.973.10 + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 tslib: 2.8.1 - '@smithy/eventstream-serde-universal@4.2.14': + '@aws-sdk/credential-provider-web-identity@3.972.35': dependencies: - '@smithy/eventstream-codec': 4.2.14 + '@aws-sdk/core': 3.974.5 + '@aws-sdk/nested-clients': 3.997.3 + '@aws-sdk/types': 3.973.8 + '@smithy/property-provider': 4.2.14 + '@smithy/shared-ini-file-loader': 4.4.9 '@smithy/types': 4.14.1 tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@smithy/fetch-http-handler@5.3.17': + '@aws-sdk/credential-provider-web-identity@3.972.47': dependencies: - '@smithy/protocol-http': 5.3.14 - '@smithy/querystring-builder': 4.2.14 - '@smithy/types': 4.14.1 - '@smithy/util-base64': 4.3.2 + '@aws-sdk/core': 3.974.17 + '@aws-sdk/nested-clients': 3.997.15 + '@aws-sdk/types': 3.973.10 + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.4.6': + '@aws-sdk/credential-providers@3.1061.0': dependencies: + '@aws-sdk/client-cognito-identity': 3.1061.0 + '@aws-sdk/core': 3.974.17 + '@aws-sdk/credential-provider-cognito-identity': 3.972.40 + '@aws-sdk/credential-provider-env': 3.972.43 + '@aws-sdk/credential-provider-http': 3.972.45 + '@aws-sdk/credential-provider-ini': 3.972.48 + '@aws-sdk/credential-provider-login': 3.972.47 + '@aws-sdk/credential-provider-node': 3.972.50 + '@aws-sdk/credential-provider-process': 3.972.43 + '@aws-sdk/credential-provider-sso': 3.972.47 + '@aws-sdk/credential-provider-web-identity': 3.972.47 + '@aws-sdk/nested-clients': 3.997.15 + '@aws-sdk/types': 3.973.10 '@smithy/core': 3.24.6 + '@smithy/credential-provider-imds': 4.3.7 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@smithy/hash-node@4.2.14': + '@aws-sdk/eventstream-handler-node@3.972.14': dependencies: + '@aws-sdk/types': 3.973.8 + '@smithy/eventstream-codec': 4.2.14 '@smithy/types': 4.14.1 - '@smithy/util-buffer-from': 4.2.2 - '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@smithy/invalid-dependency@4.2.14': + '@aws-sdk/middleware-eventstream@3.972.10': dependencies: + '@aws-sdk/types': 3.973.8 + '@smithy/protocol-http': 5.3.14 '@smithy/types': 4.14.1 tslib: 2.8.1 - '@smithy/is-array-buffer@2.2.0': - dependencies: - tslib: 2.8.1 - - '@smithy/is-array-buffer@4.2.2': + '@aws-sdk/middleware-host-header@3.972.10': dependencies: + '@aws-sdk/types': 3.973.8 + '@smithy/protocol-http': 5.3.14 + '@smithy/types': 4.14.1 tslib: 2.8.1 - '@smithy/middleware-content-length@4.2.14': + '@aws-sdk/middleware-logger@3.972.10': dependencies: - '@smithy/protocol-http': 5.3.14 + '@aws-sdk/types': 3.973.8 '@smithy/types': 4.14.1 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.4.32': + '@aws-sdk/middleware-recursion-detection@3.972.11': dependencies: - '@smithy/core': 3.23.17 - '@smithy/middleware-serde': 4.2.20 - '@smithy/node-config-provider': 4.3.14 - '@smithy/shared-ini-file-loader': 4.4.9 + '@aws-sdk/types': 3.973.8 + '@aws/lambda-invoke-store': 0.2.4 + '@smithy/protocol-http': 5.3.14 '@smithy/types': 4.14.1 - '@smithy/url-parser': 4.2.14 - '@smithy/util-middleware': 4.2.14 tslib: 2.8.1 - '@smithy/middleware-retry@4.5.5': + '@aws-sdk/middleware-sdk-s3@3.972.34': dependencies: + '@aws-sdk/core': 3.974.5 + '@aws-sdk/types': 3.973.8 + '@aws-sdk/util-arn-parser': 3.972.3 '@smithy/core': 3.23.17 '@smithy/node-config-provider': 4.3.14 '@smithy/protocol-http': 5.3.14 - '@smithy/service-error-classification': 4.3.0 + '@smithy/signature-v4': 5.3.14 '@smithy/smithy-client': 4.12.13 '@smithy/types': 4.14.1 + '@smithy/util-config-provider': 4.2.2 '@smithy/util-middleware': 4.2.14 - '@smithy/util-retry': 4.3.4 - '@smithy/uuid': 1.1.2 + '@smithy/util-stream': 4.5.25 + '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@smithy/middleware-serde@4.2.20': + '@aws-sdk/middleware-user-agent@3.972.35': dependencies: + '@aws-sdk/core': 3.974.5 + '@aws-sdk/types': 3.973.8 + '@aws-sdk/util-endpoints': 3.996.8 '@smithy/core': 3.23.17 '@smithy/protocol-http': 5.3.14 '@smithy/types': 4.14.1 + '@smithy/util-retry': 4.3.4 tslib: 2.8.1 - '@smithy/middleware-stack@4.2.14': + '@aws-sdk/middleware-websocket@3.972.16': dependencies: + '@aws-sdk/types': 3.973.8 + '@aws-sdk/util-format-url': 3.972.10 + '@smithy/eventstream-codec': 4.2.14 + '@smithy/eventstream-serde-browser': 4.2.14 + '@smithy/fetch-http-handler': 5.3.17 + '@smithy/protocol-http': 5.3.14 + '@smithy/signature-v4': 5.3.14 '@smithy/types': 4.14.1 + '@smithy/util-base64': 4.3.2 + '@smithy/util-hex-encoding': 4.2.2 + '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@smithy/node-config-provider@4.3.14': + '@aws-sdk/nested-clients@3.997.15': dependencies: - '@smithy/property-provider': 4.2.14 - '@smithy/shared-ini-file-loader': 4.4.9 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.17 + '@aws-sdk/signature-v4-multi-region': 3.996.31 + '@aws-sdk/types': 3.973.10 + '@smithy/core': 3.24.6 + '@smithy/fetch-http-handler': 5.4.6 + '@smithy/node-http-handler': 4.7.6 '@smithy/types': 4.14.3 tslib: 2.8.1 - '@smithy/node-http-handler@4.6.1': + '@aws-sdk/nested-clients@3.997.3': dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.5 + '@aws-sdk/middleware-host-header': 3.972.10 + '@aws-sdk/middleware-logger': 3.972.10 + '@aws-sdk/middleware-recursion-detection': 3.972.11 + '@aws-sdk/middleware-user-agent': 3.972.35 + '@aws-sdk/region-config-resolver': 3.972.13 + '@aws-sdk/signature-v4-multi-region': 3.996.22 + '@aws-sdk/types': 3.973.8 + '@aws-sdk/util-endpoints': 3.996.8 + '@aws-sdk/util-user-agent-browser': 3.972.10 + '@aws-sdk/util-user-agent-node': 3.973.21 + '@smithy/config-resolver': 4.4.17 + '@smithy/core': 3.23.17 + '@smithy/fetch-http-handler': 5.3.17 + '@smithy/hash-node': 4.2.14 + '@smithy/invalid-dependency': 4.2.14 + '@smithy/middleware-content-length': 4.2.14 + '@smithy/middleware-endpoint': 4.4.32 + '@smithy/middleware-retry': 4.5.5 + '@smithy/middleware-serde': 4.2.20 + '@smithy/middleware-stack': 4.2.14 + '@smithy/node-config-provider': 4.3.14 + '@smithy/node-http-handler': 4.6.1 '@smithy/protocol-http': 5.3.14 - '@smithy/querystring-builder': 4.2.14 + '@smithy/smithy-client': 4.12.13 '@smithy/types': 4.14.1 + '@smithy/url-parser': 4.2.14 + '@smithy/util-base64': 4.3.2 + '@smithy/util-body-length-browser': 4.2.2 + '@smithy/util-body-length-node': 4.2.3 + '@smithy/util-defaults-mode-browser': 4.3.49 + '@smithy/util-defaults-mode-node': 4.2.54 + '@smithy/util-endpoints': 3.4.2 + '@smithy/util-middleware': 4.2.14 + '@smithy/util-retry': 4.3.4 + '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@smithy/node-http-handler@4.7.6': + '@aws-sdk/region-config-resolver@3.972.13': dependencies: - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 + '@aws-sdk/types': 3.973.8 + '@smithy/config-resolver': 4.4.17 + '@smithy/node-config-provider': 4.3.14 + '@smithy/types': 4.14.1 tslib: 2.8.1 - '@smithy/property-provider@4.2.14': + '@aws-sdk/signature-v4-multi-region@3.996.22': dependencies: + '@aws-sdk/middleware-sdk-s3': 3.972.34 + '@aws-sdk/types': 3.973.8 + '@smithy/protocol-http': 5.3.14 + '@smithy/signature-v4': 5.3.14 '@smithy/types': 4.14.1 tslib: 2.8.1 - '@smithy/protocol-http@5.3.14': + '@aws-sdk/signature-v4-multi-region@3.996.31': dependencies: - '@smithy/types': 4.14.1 + '@aws-sdk/types': 3.973.10 + '@smithy/signature-v4': 5.4.6 + '@smithy/types': 4.14.3 tslib: 2.8.1 - '@smithy/querystring-builder@4.2.14': + '@aws-sdk/token-providers@3.1036.0': dependencies: + '@aws-sdk/core': 3.974.5 + '@aws-sdk/nested-clients': 3.997.3 + '@aws-sdk/types': 3.973.8 + '@smithy/property-provider': 4.2.14 + '@smithy/shared-ini-file-loader': 4.4.9 '@smithy/types': 4.14.1 - '@smithy/util-uri-escape': 4.2.2 tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@smithy/querystring-parser@4.2.14': + '@aws-sdk/token-providers@3.1037.0': dependencies: + '@aws-sdk/core': 3.974.5 + '@aws-sdk/nested-clients': 3.997.3 + '@aws-sdk/types': 3.973.8 + '@smithy/property-provider': 4.2.14 + '@smithy/shared-ini-file-loader': 4.4.9 '@smithy/types': 4.14.1 tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt - '@smithy/service-error-classification@4.3.0': + '@aws-sdk/token-providers@3.1060.0': dependencies: - '@smithy/types': 4.14.1 + '@aws-sdk/core': 3.974.17 + '@aws-sdk/nested-clients': 3.997.15 + '@aws-sdk/types': 3.973.10 + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 - '@smithy/shared-ini-file-loader@4.4.9': + '@aws-sdk/types@3.973.10': dependencies: - '@smithy/types': 4.14.1 + '@smithy/types': 4.14.3 tslib: 2.8.1 - '@smithy/signature-v4@5.3.14': + '@aws-sdk/types@3.973.8': dependencies: - '@smithy/is-array-buffer': 4.2.2 - '@smithy/protocol-http': 5.3.14 '@smithy/types': 4.14.1 - '@smithy/util-hex-encoding': 4.2.2 - '@smithy/util-middleware': 4.2.14 - '@smithy/util-uri-escape': 4.2.2 - '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@smithy/signature-v4@5.4.6': + '@aws-sdk/util-arn-parser@3.972.3': dependencies: - '@smithy/core': 3.24.6 - '@smithy/types': 4.14.3 tslib: 2.8.1 - '@smithy/smithy-client@4.12.13': + '@aws-sdk/util-endpoints@3.996.8': dependencies: - '@smithy/core': 3.23.17 - '@smithy/middleware-endpoint': 4.4.32 - '@smithy/middleware-stack': 4.2.14 - '@smithy/protocol-http': 5.3.14 + '@aws-sdk/types': 3.973.8 '@smithy/types': 4.14.1 - '@smithy/util-stream': 4.5.25 + '@smithy/url-parser': 4.2.14 + '@smithy/util-endpoints': 3.4.2 tslib: 2.8.1 - '@smithy/types@4.14.1': + '@aws-sdk/util-format-url@3.972.10': dependencies: + '@aws-sdk/types': 3.973.8 + '@smithy/querystring-builder': 4.2.14 + '@smithy/types': 4.14.1 tslib: 2.8.1 - '@smithy/types@4.14.3': + '@aws-sdk/util-locate-window@3.965.5': dependencies: tslib: 2.8.1 - '@smithy/url-parser@4.2.14': + '@aws-sdk/util-user-agent-browser@3.972.10': dependencies: - '@smithy/querystring-parser': 4.2.14 + '@aws-sdk/types': 3.973.8 '@smithy/types': 4.14.1 + bowser: 2.14.1 tslib: 2.8.1 - '@smithy/util-base64@4.3.2': + '@aws-sdk/util-user-agent-node@3.973.21': dependencies: - '@smithy/util-buffer-from': 4.2.2 - '@smithy/util-utf8': 4.2.2 + '@aws-sdk/middleware-user-agent': 3.972.35 + '@aws-sdk/types': 3.973.8 + '@smithy/node-config-provider': 4.3.14 + '@smithy/types': 4.14.1 + '@smithy/util-config-provider': 4.2.2 tslib: 2.8.1 - '@smithy/util-body-length-browser@4.2.2': + '@aws-sdk/xml-builder@3.972.19': dependencies: + '@smithy/types': 4.14.1 + fast-xml-parser: 5.7.1 tslib: 2.8.1 - '@smithy/util-body-length-node@4.2.3': + '@aws-sdk/xml-builder@3.972.27': dependencies: + '@smithy/types': 4.14.3 + fast-xml-parser: 5.7.3 tslib: 2.8.1 - '@smithy/util-buffer-from@2.2.0': - dependencies: - '@smithy/is-array-buffer': 2.2.0 - tslib: 2.8.1 + '@aws/lambda-invoke-store@0.2.4': {} + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/parser@7.29.8': + dependencies: + '@babel/types': 7.29.8 + + '@babel/runtime@7.29.2': {} + + '@babel/types@7.29.8': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@babylonjs/core@7.54.3': {} + + '@borewit/text-codec@0.2.2': {} + + '@braintree/sanitize-url@7.1.2': {} + + '@cfworker/json-schema@4.1.1': {} + + '@chevrotain/types@11.1.2': {} + + '@clack/core@0.4.2': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@clack/core@1.4.3': + dependencies: + fast-wrap-ansi: 0.2.2 + sisteransi: 1.0.5 + + '@clack/prompts@0.10.1': + dependencies: + '@clack/core': 0.4.2 + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@clack/prompts@1.7.0': + dependencies: + '@clack/core': 1.4.3 + fast-string-width: 3.0.2 + fast-wrap-ansi: 0.2.2 + sisteransi: 1.0.5 + + '@cloudflare/kv-asset-handler@0.5.0': {} + + '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260601.1)': + dependencies: + unenv: 2.0.0-rc.24 + optionalDependencies: + workerd: 1.20260601.1 + + '@cloudflare/unenv-preset@2.7.7(unenv@2.0.0-rc.21)(workerd@1.20260601.1)': + dependencies: + unenv: 2.0.0-rc.21 + optionalDependencies: + workerd: 1.20260601.1 + + '@cloudflare/vite-plugin@1.39.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0))(workerd@1.20260601.1)(wrangler@4.97.0(@cloudflare/workers-types@4.20260604.1))': + dependencies: + '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260601.1) + miniflare: 4.20260601.0 + unenv: 2.0.0-rc.24 + vite: 8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0) + wrangler: 4.97.0(@cloudflare/workers-types@4.20260604.1) + ws: 8.20.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - workerd + + '@cloudflare/workerd-darwin-64@1.20260424.1': + optional: true + + '@cloudflare/workerd-darwin-64@1.20260601.1': + optional: true + + '@cloudflare/workerd-darwin-arm64@1.20260424.1': + optional: true + + '@cloudflare/workerd-darwin-arm64@1.20260601.1': + optional: true + + '@cloudflare/workerd-linux-64@1.20260424.1': + optional: true + + '@cloudflare/workerd-linux-64@1.20260601.1': + optional: true + + '@cloudflare/workerd-linux-arm64@1.20260424.1': + optional: true + + '@cloudflare/workerd-linux-arm64@1.20260601.1': + optional: true + + '@cloudflare/workerd-windows-64@1.20260424.1': + optional: true + + '@cloudflare/workerd-windows-64@1.20260601.1': + optional: true + + '@cloudflare/workers-types@4.20260604.1': {} + + '@codemirror/autocomplete@6.20.3': + dependencies: + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.1 + '@codemirror/view': 6.43.7 + '@lezer/common': 1.5.2 + + '@codemirror/commands@6.10.4': + dependencies: + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.1 + '@codemirror/view': 6.43.7 + '@lezer/common': 1.5.2 + + '@codemirror/lang-angular@0.1.4': + dependencies: + '@codemirror/lang-html': 6.4.11 + '@codemirror/lang-javascript': 6.2.5 + '@codemirror/language': 6.12.4 + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@codemirror/lang-cpp@6.0.3': + dependencies: + '@codemirror/language': 6.12.4 + '@lezer/cpp': 1.1.6 + + '@codemirror/lang-css@6.3.1': + dependencies: + '@codemirror/autocomplete': 6.20.3 + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.1 + '@lezer/common': 1.5.2 + '@lezer/css': 1.3.5 + + '@codemirror/lang-go@6.0.1': + dependencies: + '@codemirror/autocomplete': 6.20.3 + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.1 + '@lezer/common': 1.5.2 + '@lezer/go': 1.0.1 + + '@codemirror/lang-html@6.4.11': + dependencies: + '@codemirror/autocomplete': 6.20.3 + '@codemirror/lang-css': 6.3.1 + '@codemirror/lang-javascript': 6.2.5 + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.1 + '@codemirror/view': 6.43.7 + '@lezer/common': 1.5.2 + '@lezer/css': 1.3.5 + '@lezer/html': 1.3.13 + + '@codemirror/lang-java@6.0.2': + dependencies: + '@codemirror/language': 6.12.4 + '@lezer/java': 1.1.3 + + '@codemirror/lang-javascript@6.2.5': + dependencies: + '@codemirror/autocomplete': 6.20.3 + '@codemirror/language': 6.12.4 + '@codemirror/lint': 6.9.7 + '@codemirror/state': 6.7.1 + '@codemirror/view': 6.43.7 + '@lezer/common': 1.5.2 + '@lezer/javascript': 1.5.4 + + '@codemirror/lang-jinja@6.0.1': + dependencies: + '@codemirror/autocomplete': 6.20.3 + '@codemirror/lang-html': 6.4.11 + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.1 + '@codemirror/view': 6.43.7 + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@codemirror/lang-json@6.0.2': + dependencies: + '@codemirror/language': 6.12.4 + '@lezer/json': 1.0.3 + + '@codemirror/lang-less@6.0.2': + dependencies: + '@codemirror/lang-css': 6.3.1 + '@codemirror/language': 6.12.4 + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@codemirror/lang-liquid@6.3.2': + dependencies: + '@codemirror/autocomplete': 6.20.3 + '@codemirror/lang-html': 6.4.11 + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.1 + '@codemirror/view': 6.43.7 + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@codemirror/lang-markdown@6.5.1': + dependencies: + '@codemirror/autocomplete': 6.20.3 + '@codemirror/lang-html': 6.4.11 + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.1 + '@codemirror/view': 6.43.7 + '@lezer/common': 1.5.2 + '@lezer/markdown': 1.7.2 + + '@codemirror/lang-php@6.0.2': + dependencies: + '@codemirror/lang-html': 6.4.11 + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.1 + '@lezer/common': 1.5.2 + '@lezer/php': 1.0.5 + + '@codemirror/lang-python@6.2.1': + dependencies: + '@codemirror/autocomplete': 6.20.3 + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.1 + '@lezer/common': 1.5.2 + '@lezer/python': 1.1.19 + + '@codemirror/lang-rust@6.0.2': + dependencies: + '@codemirror/language': 6.12.4 + '@lezer/rust': 1.0.2 + + '@codemirror/lang-sass@6.0.2': + dependencies: + '@codemirror/lang-css': 6.3.1 + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.1 + '@lezer/common': 1.5.2 + '@lezer/sass': 1.1.0 + + '@codemirror/lang-sql@6.10.0': + dependencies: + '@codemirror/autocomplete': 6.20.3 + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.1 + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@codemirror/lang-vue@0.1.3': + dependencies: + '@codemirror/lang-html': 6.4.11 + '@codemirror/lang-javascript': 6.2.5 + '@codemirror/language': 6.12.4 + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@codemirror/lang-wast@6.0.2': + dependencies: + '@codemirror/language': 6.12.4 + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@codemirror/lang-xml@6.1.0': + dependencies: + '@codemirror/autocomplete': 6.20.3 + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.1 + '@codemirror/view': 6.43.7 + '@lezer/common': 1.5.2 + '@lezer/xml': 1.0.6 + + '@codemirror/lang-yaml@6.1.3': + dependencies: + '@codemirror/autocomplete': 6.20.3 + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.1 + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + '@lezer/yaml': 1.0.4 + + '@codemirror/language-data@6.5.2': + dependencies: + '@codemirror/lang-angular': 0.1.4 + '@codemirror/lang-cpp': 6.0.3 + '@codemirror/lang-css': 6.3.1 + '@codemirror/lang-go': 6.0.1 + '@codemirror/lang-html': 6.4.11 + '@codemirror/lang-java': 6.0.2 + '@codemirror/lang-javascript': 6.2.5 + '@codemirror/lang-jinja': 6.0.1 + '@codemirror/lang-json': 6.0.2 + '@codemirror/lang-less': 6.0.2 + '@codemirror/lang-liquid': 6.3.2 + '@codemirror/lang-markdown': 6.5.1 + '@codemirror/lang-php': 6.0.2 + '@codemirror/lang-python': 6.2.1 + '@codemirror/lang-rust': 6.0.2 + '@codemirror/lang-sass': 6.0.2 + '@codemirror/lang-sql': 6.10.0 + '@codemirror/lang-vue': 0.1.3 + '@codemirror/lang-wast': 6.0.2 + '@codemirror/lang-xml': 6.1.0 + '@codemirror/lang-yaml': 6.1.3 + '@codemirror/language': 6.12.4 + '@codemirror/legacy-modes': 6.5.3 + + '@codemirror/language@6.12.4': + dependencies: + '@codemirror/state': 6.7.1 + '@codemirror/view': 6.43.7 + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + style-mod: 4.1.3 + + '@codemirror/legacy-modes@6.5.3': + dependencies: + '@codemirror/language': 6.12.4 + + '@codemirror/lint@6.9.7': + dependencies: + '@codemirror/state': 6.7.1 + '@codemirror/view': 6.43.7 + crelt: 1.0.7 + + '@codemirror/search@6.7.1': + dependencies: + '@codemirror/state': 6.7.1 + '@codemirror/view': 6.43.7 + crelt: 1.0.7 + + '@codemirror/state@6.7.1': + dependencies: + '@marijn/find-cluster-break': 1.0.3 + + '@codemirror/theme-one-dark@6.1.3': + dependencies: + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.1 + '@codemirror/view': 6.43.7 + '@lezer/highlight': 1.2.3 + + '@codemirror/view@6.43.7': + dependencies: + '@codemirror/state': 6.7.1 + crelt: 1.0.7 + style-mod: 4.1.3 + w3c-keyname: 2.2.8 + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@dino-dna/react-tui@1.0.1(react@16.13.1)': + dependencies: + '@seznam/compose-react-refs': 1.0.6 + patch-package: 6.5.1 + react: 16.13.1 + react-reconciler: 0.25.1(react@16.13.1) + + '@effect/cluster@0.58.0(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/workflow@0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(effect@3.21.1)': + dependencies: + '@effect/platform': 0.96.0(effect@3.21.1) + '@effect/rpc': 0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) + '@effect/sql': 0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) + '@effect/workflow': 0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1) + effect: 3.21.1 + kubernetes-types: 1.30.0 + + '@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1)': + dependencies: + '@effect/platform': 0.96.0(effect@3.21.1) + effect: 3.21.1 + uuid: 11.1.0 + + '@effect/opentelemetry@0.63.0(@effect/platform@0.96.0(effect@3.21.1))(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(effect@3.21.1)': + dependencies: + '@effect/platform': 0.96.0(effect@3.21.1) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/resources': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.214.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-node': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-web': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.40.0 + effect: 3.21.1 + + '@effect/opentelemetry@4.0.0-beta.102(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(effect@3.21.1)': + dependencies: + '@opentelemetry/semantic-conventions': 1.40.0 + effect: 3.21.1 + optionalDependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.214.0 + '@opentelemetry/resources': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.214.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-node': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-web': 2.6.1(@opentelemetry/api@1.9.0) + + '@effect/platform-bun@0.89.0(@effect/cluster@0.58.0(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/workflow@0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1)': + dependencies: + '@effect/cluster': 0.58.0(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/workflow@0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(effect@3.21.1) + '@effect/platform': 0.96.0(effect@3.21.1) + '@effect/platform-node-shared': 0.59.0(@effect/cluster@0.58.0(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/workflow@0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1) + '@effect/rpc': 0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) + '@effect/sql': 0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) + effect: 3.21.1 + multipasta: 0.2.7 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@effect/platform-bun@4.0.0-beta.102(effect@3.21.1)': + dependencies: + '@effect/platform-node-shared': 4.0.0-beta.102(effect@3.21.1) + effect: 3.21.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@effect/platform-node-shared@0.59.0(@effect/cluster@0.58.0(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/workflow@0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1)': + dependencies: + '@effect/cluster': 0.58.0(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/workflow@0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1))(effect@3.21.1) + '@effect/platform': 0.96.0(effect@3.21.1) + '@effect/rpc': 0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) + '@effect/sql': 0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) + '@parcel/watcher': 2.5.6 + effect: 3.21.1 + multipasta: 0.2.7 + ws: 8.20.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@effect/platform-node-shared@4.0.0-beta.102(effect@3.21.1)': + dependencies: + '@types/ws': 8.18.1 + effect: 3.21.1 + ws: 8.21.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@effect/platform@0.96.0(effect@3.21.1)': + dependencies: + effect: 3.21.1 + find-my-way-ts: 0.1.6 + msgpackr: 1.11.9 + multipasta: 0.2.7 + + '@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1)': + dependencies: + '@effect/platform': 0.96.0(effect@3.21.1) + effect: 3.21.1 + msgpackr: 1.11.9 + + '@effect/sql-sqlite-bun@0.52.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1)': + dependencies: + '@effect/experimental': 0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) + '@effect/platform': 0.96.0(effect@3.21.1) + '@effect/sql': 0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) + effect: 3.21.1 + + '@effect/sql-sqlite-bun@4.0.0-beta.102(effect@3.21.1)': + dependencies: + effect: 3.21.1 + + '@effect/sql@0.51.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1)': + dependencies: + '@effect/experimental': 0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) + '@effect/platform': 0.96.0(effect@3.21.1) + effect: 3.21.1 + uuid: 11.1.0 + + '@effect/workflow@0.18.0(@effect/experimental@0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(@effect/platform@0.96.0(effect@3.21.1))(@effect/rpc@0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1))(effect@3.21.1)': + dependencies: + '@effect/experimental': 0.60.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) + '@effect/platform': 0.96.0(effect@3.21.1) + '@effect/rpc': 0.75.0(@effect/platform@0.96.0(effect@3.21.1))(effect@3.21.1) + effect: 3.21.1 + + '@electric-sql/client@1.5.24': + dependencies: + '@microsoft/fetch-event-source': 2.0.1 + optionalDependencies: + '@rollup/rollup-darwin-arm64': 4.60.2 + + '@electric-sql/pglite-age@0.0.2(@electric-sql/pglite@0.5.1)': + dependencies: + '@electric-sql/pglite': 0.5.1 + + '@electric-sql/pglite-age@0.0.2(@electric-sql/pglite@0.5.4)': + dependencies: + '@electric-sql/pglite': 0.5.4 + optional: true + + '@electric-sql/pglite-pg_hashids@0.0.2(@electric-sql/pglite@0.5.1)': + dependencies: + '@electric-sql/pglite': 0.5.1 + + '@electric-sql/pglite-pg_hashids@0.0.2(@electric-sql/pglite@0.5.4)': + dependencies: + '@electric-sql/pglite': 0.5.4 + optional: true + + '@electric-sql/pglite-pg_ivm@0.0.2(@electric-sql/pglite@0.5.1)': + dependencies: + '@electric-sql/pglite': 0.5.1 + + '@electric-sql/pglite-pg_ivm@0.0.2(@electric-sql/pglite@0.5.4)': + dependencies: + '@electric-sql/pglite': 0.5.4 + optional: true + + '@electric-sql/pglite-pg_textsearch@0.0.2(@electric-sql/pglite@0.5.1)': + dependencies: + '@electric-sql/pglite': 0.5.1 + + '@electric-sql/pglite-pg_textsearch@0.0.2(@electric-sql/pglite@0.5.4)': + dependencies: + '@electric-sql/pglite': 0.5.4 + optional: true + + '@electric-sql/pglite-pg_uuidv7@0.0.2(@electric-sql/pglite@0.5.1)': + dependencies: + '@electric-sql/pglite': 0.5.1 + + '@electric-sql/pglite-pg_uuidv7@0.0.2(@electric-sql/pglite@0.5.4)': + dependencies: + '@electric-sql/pglite': 0.5.4 + optional: true + + '@electric-sql/pglite-pgtap@0.0.2(@electric-sql/pglite@0.5.1)': + dependencies: + '@electric-sql/pglite': 0.5.1 + + '@electric-sql/pglite-pgtap@0.0.2(@electric-sql/pglite@0.5.4)': + dependencies: + '@electric-sql/pglite': 0.5.4 + optional: true + + '@electric-sql/pglite-pgvector@0.0.2(@electric-sql/pglite@0.5.1)': + dependencies: + '@electric-sql/pglite': 0.5.1 + + '@electric-sql/pglite-pgvector@0.0.2(@electric-sql/pglite@0.5.4)': + dependencies: + '@electric-sql/pglite': 0.5.4 + optional: true + + '@electric-sql/pglite-socket@0.2.1(@electric-sql/pglite-age@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pg_hashids@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pg_ivm@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pg_textsearch@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pg_uuidv7@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pgtap@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite-pgvector@0.0.2(@electric-sql/pglite@0.5.1))(@electric-sql/pglite@0.5.1)': + dependencies: + '@electric-sql/pglite': 0.5.1 + '@electric-sql/pglite-age': 0.0.2(@electric-sql/pglite@0.5.1) + '@electric-sql/pglite-pg_hashids': 0.0.2(@electric-sql/pglite@0.5.1) + '@electric-sql/pglite-pg_ivm': 0.0.2(@electric-sql/pglite@0.5.1) + '@electric-sql/pglite-pg_textsearch': 0.0.2(@electric-sql/pglite@0.5.1) + '@electric-sql/pglite-pg_uuidv7': 0.0.2(@electric-sql/pglite@0.5.1) + '@electric-sql/pglite-pgtap': 0.0.2(@electric-sql/pglite@0.5.1) + '@electric-sql/pglite-pgvector': 0.0.2(@electric-sql/pglite@0.5.1) + + '@electric-sql/pglite-socket@0.2.1(@electric-sql/pglite-age@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_hashids@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_ivm@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_textsearch@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_uuidv7@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pgtap@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pgvector@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite@0.5.1)': + dependencies: + '@electric-sql/pglite': 0.5.1 + '@electric-sql/pglite-age': 0.0.2(@electric-sql/pglite@0.5.4) + '@electric-sql/pglite-pg_hashids': 0.0.2(@electric-sql/pglite@0.5.4) + '@electric-sql/pglite-pg_ivm': 0.0.2(@electric-sql/pglite@0.5.4) + '@electric-sql/pglite-pg_textsearch': 0.0.2(@electric-sql/pglite@0.5.4) + '@electric-sql/pglite-pg_uuidv7': 0.0.2(@electric-sql/pglite@0.5.4) + '@electric-sql/pglite-pgtap': 0.0.2(@electric-sql/pglite@0.5.4) + '@electric-sql/pglite-pgvector': 0.0.2(@electric-sql/pglite@0.5.4) + optional: true + + '@electric-sql/pglite-socket@0.2.7(@electric-sql/pglite-age@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_hashids@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_ivm@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_textsearch@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_uuidv7@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pgtap@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pgvector@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite@0.5.4)': + dependencies: + '@electric-sql/pglite': 0.5.4 + '@electric-sql/pglite-age': 0.0.2(@electric-sql/pglite@0.5.4) + '@electric-sql/pglite-pg_hashids': 0.0.2(@electric-sql/pglite@0.5.4) + '@electric-sql/pglite-pg_ivm': 0.0.2(@electric-sql/pglite@0.5.4) + '@electric-sql/pglite-pg_textsearch': 0.0.2(@electric-sql/pglite@0.5.4) + '@electric-sql/pglite-pg_uuidv7': 0.0.2(@electric-sql/pglite@0.5.4) + '@electric-sql/pglite-pgtap': 0.0.2(@electric-sql/pglite@0.5.4) + '@electric-sql/pglite-pgvector': 0.0.2(@electric-sql/pglite@0.5.4) + optional: true + + '@electric-sql/pglite@0.5.1': {} + + '@electric-sql/pglite@0.5.4': + optional: true + + '@emnapi/core@1.10.0': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.10.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/aix-ppc64@0.27.3': + optional: true + + '@esbuild/aix-ppc64@0.27.7': + optional: true + + '@esbuild/aix-ppc64@0.28.0': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.27.3': + optional: true + + '@esbuild/android-arm64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.28.0': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-arm@0.27.3': + optional: true + + '@esbuild/android-arm@0.27.7': + optional: true + + '@esbuild/android-arm@0.28.0': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/android-x64@0.27.3': + optional: true + + '@esbuild/android-x64@0.27.7': + optional: true + + '@esbuild/android-x64@0.28.0': + optional: true + + '@esbuild/darwin-arm64@0.25.12': + optional: true + + '@esbuild/darwin-arm64@0.27.3': + optional: true + + '@esbuild/darwin-arm64@0.27.7': + optional: true + + '@esbuild/darwin-arm64@0.28.0': + optional: true + + '@esbuild/darwin-x64@0.25.12': + optional: true + + '@esbuild/darwin-x64@0.27.3': + optional: true + + '@esbuild/darwin-x64@0.27.7': + optional: true + + '@esbuild/darwin-x64@0.28.0': + optional: true + + '@esbuild/freebsd-arm64@0.25.12': + optional: true + + '@esbuild/freebsd-arm64@0.27.3': + optional: true + + '@esbuild/freebsd-arm64@0.27.7': + optional: true + + '@esbuild/freebsd-arm64@0.28.0': + optional: true + + '@esbuild/freebsd-x64@0.25.12': + optional: true + + '@esbuild/freebsd-x64@0.27.3': + optional: true + + '@esbuild/freebsd-x64@0.27.7': + optional: true + + '@esbuild/freebsd-x64@0.28.0': + optional: true + + '@esbuild/linux-arm64@0.25.12': + optional: true + + '@esbuild/linux-arm64@0.27.3': + optional: true + + '@esbuild/linux-arm64@0.27.7': + optional: true + + '@esbuild/linux-arm64@0.28.0': + optional: true + + '@esbuild/linux-arm@0.25.12': + optional: true + + '@esbuild/linux-arm@0.27.3': + optional: true + + '@esbuild/linux-arm@0.27.7': + optional: true + + '@esbuild/linux-arm@0.28.0': + optional: true + + '@esbuild/linux-ia32@0.25.12': + optional: true + + '@esbuild/linux-ia32@0.27.3': + optional: true + + '@esbuild/linux-ia32@0.27.7': + optional: true + + '@esbuild/linux-ia32@0.28.0': + optional: true + + '@esbuild/linux-loong64@0.25.12': + optional: true + + '@esbuild/linux-loong64@0.27.3': + optional: true + + '@esbuild/linux-loong64@0.27.7': + optional: true + + '@esbuild/linux-loong64@0.28.0': + optional: true + + '@esbuild/linux-mips64el@0.25.12': + optional: true + + '@esbuild/linux-mips64el@0.27.3': + optional: true + + '@esbuild/linux-mips64el@0.27.7': + optional: true + + '@esbuild/linux-mips64el@0.28.0': + optional: true + + '@esbuild/linux-ppc64@0.25.12': + optional: true + + '@esbuild/linux-ppc64@0.27.3': + optional: true + + '@esbuild/linux-ppc64@0.27.7': + optional: true + + '@esbuild/linux-ppc64@0.28.0': + optional: true + + '@esbuild/linux-riscv64@0.25.12': + optional: true + + '@esbuild/linux-riscv64@0.27.3': + optional: true + + '@esbuild/linux-riscv64@0.27.7': + optional: true + + '@esbuild/linux-riscv64@0.28.0': + optional: true + + '@esbuild/linux-s390x@0.25.12': + optional: true + + '@esbuild/linux-s390x@0.27.3': + optional: true + + '@esbuild/linux-s390x@0.27.7': + optional: true + + '@esbuild/linux-s390x@0.28.0': + optional: true + + '@esbuild/linux-x64@0.25.12': + optional: true + + '@esbuild/linux-x64@0.27.3': + optional: true + + '@esbuild/linux-x64@0.27.7': + optional: true + + '@esbuild/linux-x64@0.28.0': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.27.3': + optional: true + + '@esbuild/netbsd-arm64@0.27.7': + optional: true + + '@esbuild/netbsd-arm64@0.28.0': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.27.3': + optional: true + + '@esbuild/netbsd-x64@0.27.7': + optional: true + + '@esbuild/netbsd-x64@0.28.0': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.27.3': + optional: true + + '@esbuild/openbsd-arm64@0.27.7': + optional: true + + '@esbuild/openbsd-arm64@0.28.0': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.27.3': + optional: true + + '@esbuild/openbsd-x64@0.27.7': + optional: true + + '@esbuild/openbsd-x64@0.28.0': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.27.3': + optional: true + + '@esbuild/openharmony-arm64@0.27.7': + optional: true + + '@esbuild/openharmony-arm64@0.28.0': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.27.3': + optional: true + + '@esbuild/sunos-x64@0.27.7': + optional: true + + '@esbuild/sunos-x64@0.28.0': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.27.3': + optional: true + + '@esbuild/win32-arm64@0.27.7': + optional: true + + '@esbuild/win32-arm64@0.28.0': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.27.3': + optional: true + + '@esbuild/win32-ia32@0.27.7': + optional: true + + '@esbuild/win32-ia32@0.28.0': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@esbuild/win32-x64@0.27.3': + optional: true + + '@esbuild/win32-x64@0.27.7': + optional: true + + '@esbuild/win32-x64@0.28.0': + optional: true + + '@floating-ui/core@1.8.0': + dependencies: + '@floating-ui/utils': 0.2.12 + + '@floating-ui/dom@1.8.0': + dependencies: + '@floating-ui/core': 1.8.0 + '@floating-ui/utils': 0.2.12 + + '@floating-ui/react-dom@2.1.9(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@floating-ui/dom': 1.8.0 + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + + '@floating-ui/react-dom@2.1.9(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@floating-ui/dom': 1.8.0 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + + '@floating-ui/react-dom@2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@floating-ui/dom': 1.8.0 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + + '@floating-ui/utils@0.2.12': {} + + '@google/genai@1.50.1(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))': + dependencies: + google-auth-library: 10.6.2 + p-retry: 4.6.2 + protobufjs: 7.5.5 + ws: 8.20.1 + optionalDependencies: + '@modelcontextprotocol/sdk': 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@happy-dom/global-registrator@20.9.0': + dependencies: + '@types/node': 25.6.0 + happy-dom: 20.9.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@hono/node-server@1.19.14(hono@4.12.14)': + dependencies: + hono: 4.12.14 + + '@iarna/toml@2.2.5': {} + + '@iconify/types@2.0.0': {} + + '@iconify/utils@3.1.4': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@iconify/types': 2.0.0 + import-meta-resolve: 4.2.0 + + '@img/colour@1.1.0': {} + + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true + + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': + dependencies: + '@emnapi/runtime': 1.10.0 + optional: true + + '@img/sharp-win32-arm64@0.34.5': + optional: true + + '@img/sharp-win32-ia32@0.34.5': + optional: true + + '@img/sharp-win32-x64@0.34.5': + optional: true + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@lezer/common@1.5.2': {} + + '@lezer/cpp@1.1.6': + dependencies: + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@lezer/css@1.3.5': + dependencies: + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@lezer/go@1.0.1': + dependencies: + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@lezer/highlight@1.2.3': + dependencies: + '@lezer/common': 1.5.2 + + '@lezer/html@1.3.13': + dependencies: + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@lezer/java@1.1.3': + dependencies: + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@lezer/javascript@1.5.4': + dependencies: + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@lezer/json@1.0.3': + dependencies: + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@lezer/lr@1.4.10': + dependencies: + '@lezer/common': 1.5.2 + + '@lezer/markdown@1.7.2': + dependencies: + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + + '@lezer/php@1.0.5': + dependencies: + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@lezer/python@1.1.19': + dependencies: + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@lezer/rust@1.0.2': + dependencies: + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@lezer/sass@1.1.0': + dependencies: + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@lezer/xml@1.0.6': + dependencies: + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@lezer/yaml@1.0.4': + dependencies: + '@lezer/common': 1.5.2 + '@lezer/highlight': 1.2.3 + '@lezer/lr': 1.4.10 + + '@malept/cross-spawn-promise@1.1.1': + dependencies: + cross-spawn: 7.0.6 + + '@marijn/find-cluster-break@1.0.3': {} + + '@mariozechner/clipboard-darwin-arm64@0.3.3': + optional: true + + '@mariozechner/clipboard-darwin-universal@0.3.3': + optional: true + + '@mariozechner/clipboard-darwin-x64@0.3.3': + optional: true + + '@mariozechner/clipboard-linux-arm64-gnu@0.3.3': + optional: true + + '@mariozechner/clipboard-linux-arm64-musl@0.3.3': + optional: true + + '@mariozechner/clipboard-linux-riscv64-gnu@0.3.3': + optional: true + + '@mariozechner/clipboard-linux-x64-gnu@0.3.3': + optional: true + + '@mariozechner/clipboard-linux-x64-musl@0.3.3': + optional: true + + '@mariozechner/clipboard-win32-arm64-msvc@0.3.3': + optional: true + + '@mariozechner/clipboard-win32-x64-msvc@0.3.3': + optional: true + + '@mariozechner/clipboard@0.3.3': + optionalDependencies: + '@mariozechner/clipboard-darwin-arm64': 0.3.3 + '@mariozechner/clipboard-darwin-universal': 0.3.3 + '@mariozechner/clipboard-darwin-x64': 0.3.3 + '@mariozechner/clipboard-linux-arm64-gnu': 0.3.3 + '@mariozechner/clipboard-linux-arm64-musl': 0.3.3 + '@mariozechner/clipboard-linux-riscv64-gnu': 0.3.3 + '@mariozechner/clipboard-linux-x64-gnu': 0.3.3 + '@mariozechner/clipboard-linux-x64-musl': 0.3.3 + '@mariozechner/clipboard-win32-arm64-msvc': 0.3.3 + '@mariozechner/clipboard-win32-x64-msvc': 0.3.3 + optional: true + + '@mariozechner/jiti@2.6.5': + dependencies: + std-env: 3.10.0 + yoctocolors: 2.1.2 + + '@mariozechner/pi-agent-core@0.70.2(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)': + dependencies: + '@mariozechner/pi-ai': 0.70.2(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(ws@8.20.0)(zod@4.3.6) + typebox: 1.1.33 + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - aws-crt + - bufferutil + - supports-color + - utf-8-validate + - ws + - zod + + '@mariozechner/pi-ai@0.70.2(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)': + dependencies: + '@anthropic-ai/sdk': 0.90.0(zod@4.3.6) + '@aws-sdk/client-bedrock-runtime': 3.1037.0 + '@google/genai': 1.50.1(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6)) + '@mistralai/mistralai': 2.2.1 + chalk: 5.6.2 + openai: 6.26.0(ws@8.20.0)(zod@4.3.6) + partial-json: 0.1.7 + proxy-agent: 6.5.0 + typebox: 1.1.33 + undici: 7.25.0 + zod-to-json-schema: 3.25.2(zod@4.3.6) + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - aws-crt + - bufferutil + - supports-color + - utf-8-validate + - ws + - zod + + '@mariozechner/pi-coding-agent@0.70.2(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(ws@8.20.0)(zod@4.3.6)': + dependencies: + '@mariozechner/jiti': 2.6.5 + '@mariozechner/pi-agent-core': 0.70.2(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(ws@8.20.0)(zod@4.3.6) + '@mariozechner/pi-ai': 0.70.2(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(ws@8.20.0)(zod@4.3.6) + '@mariozechner/pi-tui': 0.70.2 + '@silvia-odwyer/photon-node': 0.3.4 + chalk: 5.6.2 + cli-highlight: 2.1.11 + diff: 8.0.2 + extract-zip: 2.0.1 + file-type: 21.3.4 + glob: 13.0.6 + hosted-git-info: 9.0.2 + ignore: 7.0.5 + marked: 15.0.12 + minimatch: 10.2.5 + proper-lockfile: 4.1.2 + strip-ansi: 7.2.0 + typebox: 1.1.33 + undici: 7.25.0 + uuid: 14.0.0 + yaml: 2.8.3 + optionalDependencies: + '@mariozechner/clipboard': 0.3.3 + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - aws-crt + - bufferutil + - supports-color + - utf-8-validate + - ws + - zod + + '@mariozechner/pi-tui@0.70.2': + dependencies: + '@types/mime-types': 2.1.4 + chalk: 5.6.2 + get-east-asian-width: 1.5.0 + marked: 15.0.12 + mime-types: 3.0.2 + optionalDependencies: + koffi: 2.16.1 + + '@mdx-js/esbuild@3.1.1(esbuild@0.27.7)': + dependencies: + '@mdx-js/mdx': 3.1.1 + '@types/unist': 3.0.3 + esbuild: 0.27.7 + source-map: 0.7.6 + vfile: 6.0.3 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + '@mdx-js/esbuild@3.1.1(esbuild@0.28.0)': + dependencies: + '@mdx-js/mdx': 3.1.1 + '@types/unist': 3.0.3 + esbuild: 0.28.0 + source-map: 0.7.6 + vfile: 6.0.3 + vfile-message: 4.0.3 + transitivePeerDependencies: + - supports-color + + '@mdx-js/mdx@3.1.1': + dependencies: + '@types/estree': 1.0.8 + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.4 + '@types/mdx': 2.0.13 + acorn: 8.16.0 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-util-scope: 1.0.0 + estree-walker: 3.0.3 + hast-util-to-jsx-runtime: 2.3.6 + markdown-extensions: 2.0.0 + recma-build-jsx: 1.0.0 + recma-jsx: 1.0.1(acorn@8.16.0) + recma-stringify: 1.0.0 + rehype-recma: 1.0.0 + remark-mdx: 3.1.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + source-map: 0.7.6 + unified: 11.0.5 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@mermaid-js/parser@1.2.0': + dependencies: + '@chevrotain/types': 11.1.2 + + '@microsoft/fetch-event-source@2.0.1': {} + + '@milkdown/components@7.21.2(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(typescript@5.9.3)': + dependencies: + '@codemirror/language': 6.12.4 + '@codemirror/state': 6.7.1 + '@codemirror/view': 6.43.7 + '@floating-ui/dom': 1.8.0 + '@milkdown/core': 7.21.2 + '@milkdown/ctx': 7.21.2 + '@milkdown/exception': 7.21.2 + '@milkdown/plugin-diff': 7.21.2 + '@milkdown/plugin-tooltip': 7.21.2 + '@milkdown/preset-commonmark': 7.21.2 + '@milkdown/preset-gfm': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/transformer': 7.21.2 + '@milkdown/utils': 7.21.2 + '@types/lodash-es': 4.17.12 + clsx: 2.1.1 + dompurify: 3.4.12 + lodash-es: 4.18.1 + nanoid: 5.1.16 + unist-util-visit: 5.1.0 + vue: 3.5.40(typescript@5.9.3) + transitivePeerDependencies: + - supports-color + - typescript + + '@milkdown/core@7.21.2': + dependencies: + '@milkdown/ctx': 7.21.2 + '@milkdown/exception': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/transformer': 7.21.2 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + '@milkdown/crepe@7.21.2(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(typescript@5.9.3)': + dependencies: + '@codemirror/commands': 6.10.4 + '@codemirror/language': 6.12.4 + '@codemirror/language-data': 6.5.2 + '@codemirror/state': 6.7.1 + '@codemirror/theme-one-dark': 6.1.3 + '@codemirror/view': 6.43.7 + '@milkdown/kit': 7.21.2(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(typescript@5.9.3) + '@types/lodash-es': 4.17.12 + clsx: 2.1.1 + codemirror: 6.0.2 + dompurify: 3.4.12 + katex: 0.17.0 + lodash-es: 4.18.1 + prosemirror-virtual-cursor: 0.4.2(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2) + remark-math: 6.0.0 + unist-util-visit: 5.1.0 + vue: 3.5.40(typescript@5.9.3) + transitivePeerDependencies: + - prosemirror-model + - prosemirror-state + - prosemirror-view + - supports-color + - typescript + + '@milkdown/ctx@7.21.2': + dependencies: + '@milkdown/exception': 7.21.2 + + '@milkdown/exception@7.21.2': {} + + '@milkdown/kit@7.21.2(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(typescript@5.9.3)': + dependencies: + '@milkdown/components': 7.21.2(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(typescript@5.9.3) + '@milkdown/core': 7.21.2 + '@milkdown/ctx': 7.21.2 + '@milkdown/exception': 7.21.2 + '@milkdown/plugin-block': 7.21.2 + '@milkdown/plugin-clipboard': 7.21.2 + '@milkdown/plugin-cursor': 7.21.2 + '@milkdown/plugin-diff': 7.21.2 + '@milkdown/plugin-history': 7.21.2 + '@milkdown/plugin-indent': 7.21.2 + '@milkdown/plugin-listener': 7.21.2 + '@milkdown/plugin-slash': 7.21.2 + '@milkdown/plugin-streaming': 7.21.2 + '@milkdown/plugin-tooltip': 7.21.2 + '@milkdown/plugin-trailing': 7.21.2 + '@milkdown/plugin-upload': 7.21.2 + '@milkdown/preset-commonmark': 7.21.2 + '@milkdown/preset-gfm': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/transformer': 7.21.2 + '@milkdown/utils': 7.21.2 + transitivePeerDependencies: + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - supports-color + - typescript + + '@milkdown/plugin-block@7.21.2': + dependencies: + '@floating-ui/dom': 1.8.0 + '@milkdown/core': 7.21.2 + '@milkdown/ctx': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/utils': 7.21.2 + '@types/lodash-es': 4.17.12 + lodash-es: 4.18.1 + transitivePeerDependencies: + - supports-color + + '@milkdown/plugin-clipboard@7.21.2': + dependencies: + '@milkdown/core': 7.21.2 + '@milkdown/ctx': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/utils': 7.21.2 + transitivePeerDependencies: + - supports-color + + '@milkdown/plugin-cursor@7.21.2': + dependencies: + '@milkdown/ctx': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/utils': 7.21.2 + prosemirror-drop-indicator: 0.1.4 + transitivePeerDependencies: + - supports-color + + '@milkdown/plugin-diff@7.21.2': + dependencies: + '@milkdown/core': 7.21.2 + '@milkdown/ctx': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/transformer': 7.21.2 + '@milkdown/utils': 7.21.2 + transitivePeerDependencies: + - supports-color + + '@milkdown/plugin-history@7.21.2': + dependencies: + '@milkdown/core': 7.21.2 + '@milkdown/ctx': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/utils': 7.21.2 + transitivePeerDependencies: + - supports-color + + '@milkdown/plugin-indent@7.21.2': + dependencies: + '@milkdown/ctx': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/utils': 7.21.2 + transitivePeerDependencies: + - supports-color + + '@milkdown/plugin-listener@7.21.2': + dependencies: + '@milkdown/core': 7.21.2 + '@milkdown/ctx': 7.21.2 + '@milkdown/prose': 7.21.2 + '@types/lodash-es': 4.17.12 + lodash-es: 4.18.1 + transitivePeerDependencies: + - supports-color + + '@milkdown/plugin-slash@7.21.2': + dependencies: + '@floating-ui/dom': 1.8.0 + '@milkdown/ctx': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/utils': 7.21.2 + '@types/lodash-es': 4.17.12 + lodash-es: 4.18.1 + transitivePeerDependencies: + - supports-color + + '@milkdown/plugin-streaming@7.21.2': + dependencies: + '@milkdown/core': 7.21.2 + '@milkdown/ctx': 7.21.2 + '@milkdown/plugin-diff': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/utils': 7.21.2 + transitivePeerDependencies: + - supports-color + + '@milkdown/plugin-tooltip@7.21.2': + dependencies: + '@floating-ui/dom': 1.8.0 + '@milkdown/ctx': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/utils': 7.21.2 + '@types/lodash-es': 4.17.12 + lodash-es: 4.18.1 + transitivePeerDependencies: + - supports-color + + '@milkdown/plugin-trailing@7.21.2': + dependencies: + '@milkdown/ctx': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/utils': 7.21.2 + transitivePeerDependencies: + - supports-color + + '@milkdown/plugin-upload@7.21.2': + dependencies: + '@milkdown/core': 7.21.2 + '@milkdown/ctx': 7.21.2 + '@milkdown/exception': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/utils': 7.21.2 + transitivePeerDependencies: + - supports-color + + '@milkdown/preset-commonmark@7.21.2': + dependencies: + '@milkdown/core': 7.21.2 + '@milkdown/ctx': 7.21.2 + '@milkdown/exception': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/transformer': 7.21.2 + '@milkdown/utils': 7.21.2 + remark-inline-links: 7.0.0 + unist-util-visit: 5.1.0 + unist-util-visit-parents: 6.0.2 + transitivePeerDependencies: + - supports-color + + '@milkdown/preset-gfm@7.21.2': + dependencies: + '@milkdown/core': 7.21.2 + '@milkdown/ctx': 7.21.2 + '@milkdown/exception': 7.21.2 + '@milkdown/preset-commonmark': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/transformer': 7.21.2 + '@milkdown/utils': 7.21.2 + prosemirror-safari-ime-span: 1.0.2 + remark-gfm: 4.0.1 + transitivePeerDependencies: + - supports-color + + '@milkdown/prose@7.21.2': + dependencies: + '@milkdown/exception': 7.21.2 + prosemirror-changeset: 2.4.1 + prosemirror-commands: 1.7.1 + prosemirror-dropcursor: 1.8.3 + prosemirror-gapcursor: 1.4.1 + prosemirror-history: 1.5.0 + prosemirror-inputrules: 1.5.1 + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.11 + prosemirror-schema-list: 1.5.1 + prosemirror-state: 1.4.4 + prosemirror-tables: 1.8.5 + prosemirror-transform: 1.12.0 + prosemirror-view: 1.42.2 + + '@milkdown/transformer@7.21.2': + dependencies: + '@milkdown/exception': 7.21.2 + '@milkdown/prose': 7.21.2 + remark: 15.0.1 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + '@milkdown/utils@7.21.2': + dependencies: + '@milkdown/core': 7.21.2 + '@milkdown/ctx': 7.21.2 + '@milkdown/exception': 7.21.2 + '@milkdown/prose': 7.21.2 + '@milkdown/transformer': 7.21.2 + nanoid: 5.1.16 + transitivePeerDependencies: + - supports-color + + '@mistralai/mistralai@2.2.1': + dependencies: + ws: 8.20.1 + zod: 4.3.6 + zod-to-json-schema: 3.25.2(zod@4.3.6) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6)': + dependencies: + '@hono/node-server': 1.19.14(hono@4.12.14) + ajv: 8.18.0 + ajv-formats: 3.0.1(ajv@8.18.0) + content-type: 1.0.5 + cors: 2.8.6 + cross-spawn: 7.0.6 + eventsource: 3.0.7 + eventsource-parser: 3.0.7 + express: 5.2.1 + express-rate-limit: 8.3.2(express@5.2.1) + hono: 4.12.14 + jose: 6.2.2 + json-schema-typed: 8.0.2 + pkce-challenge: 5.0.1 + raw-body: 3.0.2 + zod: 4.3.6 + zod-to-json-schema: 3.25.2(zod@4.3.6) + optionalDependencies: + '@cfworker/json-schema': 4.1.1 + transitivePeerDependencies: + - supports-color + + '@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.4.3)': + dependencies: + '@hono/node-server': 1.19.14(hono@4.12.14) + ajv: 8.18.0 + ajv-formats: 3.0.1(ajv@8.18.0) + content-type: 1.0.5 + cors: 2.8.6 + cross-spawn: 7.0.6 + eventsource: 3.0.7 + eventsource-parser: 3.0.7 + express: 5.2.1 + express-rate-limit: 8.3.2(express@5.2.1) + hono: 4.12.14 + jose: 6.2.2 + json-schema-typed: 8.0.2 + pkce-challenge: 5.0.1 + raw-body: 3.0.2 + zod: 4.4.3 + zod-to-json-schema: 3.25.2(zod@4.4.3) + optionalDependencies: + '@cfworker/json-schema': 4.1.1 + transitivePeerDependencies: + - supports-color + + '@modelcontextprotocol/server@2.0.0-alpha.2(@cfworker/json-schema@4.1.1)': + dependencies: + zod: 4.3.6 + optionalDependencies: + '@cfworker/json-schema': 4.1.1 + + '@modelcontextprotocol/server@2.0.0-alpha.4': + dependencies: + zod: 4.3.6 + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + optional: true + + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@tybys/wasm-util': 0.10.2 + optional: true + + '@nodable/entities@2.1.0': {} + + '@ocavue/utils@1.7.0': {} + + '@octokit/auth-token@5.1.2': {} + + '@octokit/core@6.1.6': + dependencies: + '@octokit/auth-token': 5.1.2 + '@octokit/graphql': 8.2.2 + '@octokit/request': 9.2.4 + '@octokit/request-error': 6.1.8 + '@octokit/types': 14.1.0 + before-after-hook: 3.0.2 + universal-user-agent: 7.0.3 + + '@octokit/endpoint@10.1.4': + dependencies: + '@octokit/types': 14.1.0 + universal-user-agent: 7.0.3 + + '@octokit/graphql@8.2.2': + dependencies: + '@octokit/request': 9.2.4 + '@octokit/types': 14.1.0 + universal-user-agent: 7.0.3 + + '@octokit/openapi-types@24.2.0': {} + + '@octokit/openapi-types@25.1.0': {} + + '@octokit/plugin-paginate-rest@11.6.0(@octokit/core@6.1.6)': + dependencies: + '@octokit/core': 6.1.6 + '@octokit/types': 13.10.0 + + '@octokit/plugin-request-log@5.3.1(@octokit/core@6.1.6)': + dependencies: + '@octokit/core': 6.1.6 + + '@octokit/plugin-rest-endpoint-methods@13.5.0(@octokit/core@6.1.6)': + dependencies: + '@octokit/core': 6.1.6 + '@octokit/types': 13.10.0 + + '@octokit/request-error@6.1.8': + dependencies: + '@octokit/types': 14.1.0 + + '@octokit/request@9.2.4': + dependencies: + '@octokit/endpoint': 10.1.4 + '@octokit/request-error': 6.1.8 + '@octokit/types': 14.1.0 + fast-content-type-parse: 2.0.1 + universal-user-agent: 7.0.3 + + '@octokit/rest@21.1.1': + dependencies: + '@octokit/core': 6.1.6 + '@octokit/plugin-paginate-rest': 11.6.0(@octokit/core@6.1.6) + '@octokit/plugin-request-log': 5.3.1(@octokit/core@6.1.6) + '@octokit/plugin-rest-endpoint-methods': 13.5.0(@octokit/core@6.1.6) + + '@octokit/types@13.10.0': + dependencies: + '@octokit/openapi-types': 24.2.0 + + '@octokit/types@14.1.0': + dependencies: + '@octokit/openapi-types': 25.1.0 + + '@opentelemetry/api-logs@0.214.0': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/api@1.9.0': {} + + '@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.40.0 + + '@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.40.0 + + '@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.214.0 + '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.40.0 + + '@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.6.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.40.0 + + '@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.6.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 2.6.1(@opentelemetry/api@1.9.0) + + '@opentelemetry/semantic-conventions@1.40.0': {} + + '@opentui/core-darwin-arm64@0.4.5': + optional: true + + '@opentui/core-darwin-x64@0.4.5': + optional: true + + '@opentui/core-linux-arm64-musl@0.4.5': + optional: true + + '@opentui/core-linux-arm64@0.4.5': + optional: true + + '@opentui/core-linux-x64-musl@0.4.5': + optional: true + + '@opentui/core-linux-x64@0.4.5': + optional: true + + '@opentui/core-win32-arm64@0.4.5': + optional: true + + '@opentui/core-win32-x64@0.4.5': + optional: true + + '@opentui/core@0.4.5(typescript@5.9.3)(web-tree-sitter@0.25.10)': + dependencies: + bun-ffi-structs: 0.2.4(typescript@5.9.3) + diff: 9.0.0 + marked: 17.0.1 + string-width: 7.2.0 + strip-ansi: 7.1.2 + web-tree-sitter: 0.25.10 + optionalDependencies: + '@opentui/core-darwin-arm64': 0.4.5 + '@opentui/core-darwin-x64': 0.4.5 + '@opentui/core-linux-arm64': 0.4.5 + '@opentui/core-linux-arm64-musl': 0.4.5 + '@opentui/core-linux-x64': 0.4.5 + '@opentui/core-linux-x64-musl': 0.4.5 + '@opentui/core-win32-arm64': 0.4.5 + '@opentui/core-win32-x64': 0.4.5 + transitivePeerDependencies: + - typescript + + '@opentui/react@0.4.5(react-devtools-core@7.0.1)(react@19.2.8)(typescript@5.9.3)(web-tree-sitter@0.25.10)(ws@8.20.0)': + dependencies: + '@opentui/core': 0.4.5(typescript@5.9.3)(web-tree-sitter@0.25.10) + react: 19.2.8 + react-devtools-core: 7.0.1 + react-reconciler: 0.33.0(react@19.2.8) + ws: 8.20.0 + transitivePeerDependencies: + - typescript + - web-tree-sitter + + '@opentui/react@0.4.5(react-devtools-core@7.0.1)(react@19.2.8)(typescript@5.9.3)(web-tree-sitter@0.25.10)(ws@8.21.1)': + dependencies: + '@opentui/core': 0.4.5(typescript@5.9.3)(web-tree-sitter@0.25.10) + react: 19.2.8 + react-devtools-core: 7.0.1 + react-reconciler: 0.33.0(react@19.2.8) + ws: 8.21.1 + transitivePeerDependencies: + - typescript + - web-tree-sitter + + '@oxc-project/types@0.132.0': {} + + '@oxlint/binding-android-arm-eabi@1.60.0': + optional: true + + '@oxlint/binding-android-arm64@1.60.0': + optional: true + + '@oxlint/binding-darwin-arm64@1.60.0': + optional: true + + '@oxlint/binding-darwin-x64@1.60.0': + optional: true + + '@oxlint/binding-freebsd-x64@1.60.0': + optional: true + + '@oxlint/binding-linux-arm-gnueabihf@1.60.0': + optional: true + + '@oxlint/binding-linux-arm-musleabihf@1.60.0': + optional: true + + '@oxlint/binding-linux-arm64-gnu@1.60.0': + optional: true + + '@oxlint/binding-linux-arm64-musl@1.60.0': + optional: true + + '@oxlint/binding-linux-ppc64-gnu@1.60.0': + optional: true + + '@oxlint/binding-linux-riscv64-gnu@1.60.0': + optional: true + + '@oxlint/binding-linux-riscv64-musl@1.60.0': + optional: true + + '@oxlint/binding-linux-s390x-gnu@1.60.0': + optional: true + + '@oxlint/binding-linux-x64-gnu@1.60.0': + optional: true + + '@oxlint/binding-linux-x64-musl@1.60.0': + optional: true + + '@oxlint/binding-openharmony-arm64@1.60.0': + optional: true + + '@oxlint/binding-win32-arm64-msvc@1.60.0': + optional: true + + '@oxlint/binding-win32-ia32-msvc@1.60.0': + optional: true + + '@oxlint/binding-win32-x64-msvc@1.60.0': + optional: true + + '@parcel/watcher-android-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-x64@2.5.6': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.6': + optional: true + + '@parcel/watcher-win32-arm64@2.5.6': + optional: true + + '@parcel/watcher-win32-ia32@2.5.6': + optional: true + + '@parcel/watcher-win32-x64@2.5.6': + optional: true + + '@parcel/watcher@2.5.6': + dependencies: + detect-libc: 2.1.2 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.4 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.6 + '@parcel/watcher-darwin-arm64': 2.5.6 + '@parcel/watcher-darwin-x64': 2.5.6 + '@parcel/watcher-freebsd-x64': 2.5.6 + '@parcel/watcher-linux-arm-glibc': 2.5.6 + '@parcel/watcher-linux-arm-musl': 2.5.6 + '@parcel/watcher-linux-arm64-glibc': 2.5.6 + '@parcel/watcher-linux-arm64-musl': 2.5.6 + '@parcel/watcher-linux-x64-glibc': 2.5.6 + '@parcel/watcher-linux-x64-musl': 2.5.6 + '@parcel/watcher-win32-arm64': 2.5.6 + '@parcel/watcher-win32-ia32': 2.5.6 + '@parcel/watcher-win32-x64': 2.5.6 + + '@pierre/diffs@1.3.1(@shikijs/themes@4.4.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@pierre/theme': 2.0.0 + '@pierre/theming': 1.0.0(@pierre/theme@2.0.0)(@shikijs/themes@4.4.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)(shiki@4.4.1) + '@shikijs/transformers': 4.4.1 + diff: 9.0.0 + hast-util-to-html: 9.0.5 + lru_map: 0.4.1 + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + shiki: 4.4.1 + transitivePeerDependencies: + - '@shikijs/themes' + + '@pierre/diffs@1.3.1(@shikijs/themes@4.4.1)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@pierre/theme': 2.0.0 + '@pierre/theming': 1.0.0(@pierre/theme@2.0.0)(@shikijs/themes@4.4.1)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)(shiki@4.4.1) + '@shikijs/transformers': 4.4.1 + diff: 9.0.0 + hast-util-to-html: 9.0.5 + lru_map: 0.4.1 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + shiki: 4.4.1 + transitivePeerDependencies: + - '@shikijs/themes' + + '@pierre/diffs@1.3.1(@shikijs/themes@4.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@pierre/theme': 2.0.0 + '@pierre/theming': 1.0.0(@pierre/theme@2.0.0)(@shikijs/themes@4.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(shiki@4.4.1) + '@shikijs/transformers': 4.4.1 + diff: 9.0.0 + hast-util-to-html: 9.0.5 + lru_map: 0.4.1 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + shiki: 4.4.1 + transitivePeerDependencies: + - '@shikijs/themes' + + '@pierre/theme@2.0.0': {} + + '@pierre/theming@1.0.0(@pierre/theme@2.0.0)(@shikijs/themes@4.4.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)(shiki@4.4.1)': + optionalDependencies: + '@pierre/theme': 2.0.0 + '@shikijs/themes': 4.4.1 + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + shiki: 4.4.1 + + '@pierre/theming@1.0.0(@pierre/theme@2.0.0)(@shikijs/themes@4.4.1)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)(shiki@4.4.1)': + optionalDependencies: + '@pierre/theme': 2.0.0 + '@shikijs/themes': 4.4.1 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + shiki: 4.4.1 + + '@pierre/theming@1.0.0(@pierre/theme@2.0.0)(@shikijs/themes@4.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(shiki@4.4.1)': + optionalDependencies: + '@pierre/theme': 2.0.0 + '@shikijs/themes': 4.4.1 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + shiki: 4.4.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@playwright/test@1.60.0': + dependencies: + playwright: 1.60.0 + + '@poppinss/colors@4.1.6': + dependencies: + kleur: 4.1.5 + + '@poppinss/dumper@0.6.5': + dependencies: + '@poppinss/colors': 4.1.6 + '@sindresorhus/is': 7.2.0 + supports-color: 10.2.2 + + '@poppinss/exception@1.2.3': {} + + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + + '@radix-ui/number@1.1.3': {} + + '@radix-ui/primitive@1.1.7': {} + + '@radix-ui/react-accessible-icon@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-accessible-icon@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-accessible-icon@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-accordion@1.2.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-accordion@1.2.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-accordion@1.2.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-alert-dialog@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-alert-dialog@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-alert-dialog@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-arrow@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-arrow@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-arrow@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-aspect-ratio@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-aspect-ratio@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-aspect-ratio@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-avatar@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-avatar@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-avatar@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-checkbox@1.3.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-checkbox@1.3.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-checkbox@1.3.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-collapsible@1.1.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-collapsible@1.1.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-collapsible@1.1.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-collection@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-collection@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-collection@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-compose-refs@1.1.5(@types/react@19.2.14)(react@19.2.8)': + dependencies: + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-context-menu@2.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-context-menu@2.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-context-menu@2.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-context@1.2.2(@types/react@19.2.14)(react@19.2.8)': + dependencies: + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-dialog@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + aria-hidden: 1.2.6 + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-dialog@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + aria-hidden: 1.2.6 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-dialog@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + aria-hidden: 1.2.6 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-direction@1.1.4(@types/react@19.2.14)(react@19.2.8)': + dependencies: + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-dismissable-layer@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-dismissable-layer@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-dismissable-layer@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-dropdown-menu@2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-dropdown-menu@2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-dropdown-menu@2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-focus-guards@1.1.6(@types/react@19.2.14)(react@19.2.8)': + dependencies: + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-focus-scope@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-focus-scope@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-focus-scope@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-form@0.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-label': 2.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-form@0.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-label': 2.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-form@0.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-label': 2.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-hover-card@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-hover-card@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-hover-card@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-id@1.1.4(@types/react@19.2.14)(react@19.2.8)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-label@2.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-label@2.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-label@2.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-menu@2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + aria-hidden: 1.2.6 + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-menu@2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + aria-hidden: 1.2.6 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-menu@2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + aria-hidden: 1.2.6 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-menubar@1.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-menubar@1.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-menubar@1.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-navigation-menu@1.2.22(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-navigation-menu@1.2.22(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-navigation-menu@1.2.22(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-one-time-password-field@0.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/number': 1.1.3 + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-one-time-password-field@0.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/number': 1.1.3 + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-one-time-password-field@0.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/number': 1.1.3 + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-password-toggle-field@0.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-password-toggle-field@0.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-password-toggle-field@0.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-popover@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + aria-hidden: 1.2.6 + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-popover@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + aria-hidden: 1.2.6 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-popover@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + aria-hidden: 1.2.6 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-popper@1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@floating-ui/react-dom': 2.1.9(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-rect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/rect': 1.1.3 + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-popper@1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@floating-ui/react-dom': 2.1.9(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-rect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/rect': 1.1.3 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-popper@1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@floating-ui/react-dom': 2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-rect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/rect': 1.1.3 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-portal@1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-portal@1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-portal@1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-presence@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-presence@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-presence@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-primitive@2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-primitive@2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-primitive@2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-progress@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-progress@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-progress@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-radio-group@1.4.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-radio-group@1.4.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-radio-group@1.4.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-roving-focus@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-roving-focus@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-roving-focus@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-scroll-area@1.2.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/number': 1.1.3 + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-scroll-area@1.2.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/number': 1.1.3 + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-scroll-area@1.2.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/number': 1.1.3 + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-select@2.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/number': 1.1.3 + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + aria-hidden: 1.2.6 + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-select@2.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/number': 1.1.3 + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + aria-hidden: 1.2.6 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-select@2.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/number': 1.1.3 + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + aria-hidden: 1.2.6 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-separator@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-separator@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-separator@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-slider@1.4.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/number': 1.1.3 + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-slider@1.4.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/number': 1.1.3 + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-slider@1.4.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/number': 1.1.3 + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-slot@1.3.3(@types/react@19.2.14)(react@19.2.8)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-switch@1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-switch@1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-switch@1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-tabs@1.1.21(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-tabs@1.1.21(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-tabs@1.1.21(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-toast@1.2.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-toast@1.2.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-toast@1.2.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-toggle-group@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-toggle-group@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-toggle-group@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-toggle@1.1.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-toggle@1.1.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-toggle@1.1.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-toolbar@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-toolbar@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-toolbar@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-tooltip@1.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-tooltip@1.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-tooltip@1.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-use-callback-ref@1.1.4(@types/react@19.2.14)(react@19.2.8)': + dependencies: + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-controllable-state@1.2.6(@types/react@19.2.14)(react@19.2.8)': + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-effect-event@0.0.5(@types/react@19.2.14)(react@19.2.8)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-escape-keydown@1.1.5(@types/react@19.2.14)(react@19.2.8)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-is-hydrated@0.1.3(@types/react@19.2.14)(react@19.2.8)': + dependencies: + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-layout-effect@1.1.4(@types/react@19.2.14)(react@19.2.8)': + dependencies: + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-previous@1.1.4(@types/react@19.2.14)(react@19.2.8)': + dependencies: + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-rect@1.1.4(@types/react@19.2.14)(react@19.2.8)': + dependencies: + '@radix-ui/rect': 1.1.3 + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-use-size@1.1.4(@types/react@19.2.14)(react@19.2.8)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + react: 19.2.8 + optionalDependencies: + '@types/react': 19.2.14 + + '@radix-ui/react-visually-hidden@1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-visually-hidden@1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/react-visually-hidden@1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + '@radix-ui/rect@1.1.3': {} + + '@reduxjs/toolkit@2.12.0(react-redux@9.3.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1))(react@19.2.8)': + dependencies: + '@standard-schema/spec': 1.1.0 + '@standard-schema/utils': 0.3.0 + immer: 11.1.15 + redux: 5.0.1 + redux-thunk: 3.1.0(redux@5.0.1) + reselect: 5.2.0 + optionalDependencies: + react: 19.2.8 + react-redux: 9.3.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1) + + '@rolldown/binding-android-arm64@1.0.2': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.2': + optional: true + + '@rolldown/binding-darwin-x64@1.0.2': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.2': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.2': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.2': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.2': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.2': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.2': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.2': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.2': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.2': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.2': + 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 + + '@rolldown/binding-win32-arm64-msvc@1.0.2': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.2': + optional: true + + '@rolldown/pluginutils@1.0.1': {} + + '@rollup/rollup-android-arm-eabi@4.60.2': + optional: true + + '@rollup/rollup-android-arm64@4.60.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.60.2': + optional: true + + '@rollup/rollup-darwin-x64@4.60.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.60.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.60.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.60.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.60.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.60.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.60.2': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.60.2': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.60.2': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.60.2': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.60.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.60.2': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.60.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.60.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.60.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.60.2': + optional: true + + '@rollup/rollup-openbsd-x64@4.60.2': + optional: true + + '@rollup/rollup-openharmony-arm64@4.60.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.60.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.60.2': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.60.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.60.2': + optional: true + + '@scalar/openapi-types@0.8.0': {} + + '@sec-ant/readable-stream@0.4.1': {} + + '@seznam/compose-react-refs@1.0.6': {} + + '@shikijs/core@4.4.1': + dependencies: + '@shikijs/primitive': 4.4.1 + '@shikijs/types': 4.4.1 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@4.4.1': + dependencies: + '@shikijs/types': 4.4.1 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.6 + + '@shikijs/engine-oniguruma@4.4.1': + dependencies: + '@shikijs/types': 4.4.1 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@4.4.1': + dependencies: + '@shikijs/types': 4.4.1 + + '@shikijs/primitive@4.4.1': + dependencies: + '@shikijs/types': 4.4.1 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + + '@shikijs/themes@4.4.1': + dependencies: + '@shikijs/types': 4.4.1 + + '@shikijs/transformers@4.4.1': + dependencies: + '@shikijs/core': 4.4.1 + '@shikijs/types': 4.4.1 + + '@shikijs/types@4.4.1': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + + '@shikijs/vscode-textmate@10.0.2': {} + + '@silvia-odwyer/photon-node@0.3.4': {} + + '@sinclair/typebox@0.34.49': {} + + '@sindresorhus/is@7.2.0': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@smithy/config-resolver@4.4.17': + dependencies: + '@smithy/node-config-provider': 4.3.14 + '@smithy/types': 4.14.1 + '@smithy/util-config-provider': 4.2.2 + '@smithy/util-endpoints': 3.4.2 + '@smithy/util-middleware': 4.2.14 + tslib: 2.8.1 + + '@smithy/core@3.23.17': + dependencies: + '@smithy/protocol-http': 5.3.14 + '@smithy/types': 4.14.1 + '@smithy/url-parser': 4.2.14 + '@smithy/util-base64': 4.3.2 + '@smithy/util-body-length-browser': 4.2.2 + '@smithy/util-middleware': 4.2.14 + '@smithy/util-stream': 4.5.25 + '@smithy/util-utf8': 4.2.2 + '@smithy/uuid': 1.1.2 + tslib: 2.8.1 + + '@smithy/core@3.24.6': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@4.2.14': + dependencies: + '@smithy/node-config-provider': 4.3.14 + '@smithy/property-provider': 4.2.14 + '@smithy/types': 4.14.1 + '@smithy/url-parser': 4.2.14 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@4.3.7': + dependencies: + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@smithy/eventstream-codec@4.2.14': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.14.1 + '@smithy/util-hex-encoding': 4.2.2 + tslib: 2.8.1 + + '@smithy/eventstream-serde-browser@4.2.14': + dependencies: + '@smithy/eventstream-serde-universal': 4.2.14 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/eventstream-serde-config-resolver@4.3.14': + dependencies: + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/eventstream-serde-node@4.2.14': + dependencies: + '@smithy/eventstream-serde-universal': 4.2.14 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/eventstream-serde-universal@4.2.14': + dependencies: + '@smithy/eventstream-codec': 4.2.14 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.3.17': + dependencies: + '@smithy/protocol-http': 5.3.14 + '@smithy/querystring-builder': 4.2.14 + '@smithy/types': 4.14.1 + '@smithy/util-base64': 4.3.2 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.4.6': + dependencies: + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@smithy/hash-node@4.2.14': + dependencies: + '@smithy/types': 4.14.1 + '@smithy/util-buffer-from': 4.2.2 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 + + '@smithy/invalid-dependency@4.2.14': + dependencies: + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/is-array-buffer@4.2.2': + dependencies: + tslib: 2.8.1 + + '@smithy/middleware-content-length@4.2.14': + dependencies: + '@smithy/protocol-http': 5.3.14 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/middleware-endpoint@4.4.32': + dependencies: + '@smithy/core': 3.23.17 + '@smithy/middleware-serde': 4.2.20 + '@smithy/node-config-provider': 4.3.14 + '@smithy/shared-ini-file-loader': 4.4.9 + '@smithy/types': 4.14.1 + '@smithy/url-parser': 4.2.14 + '@smithy/util-middleware': 4.2.14 + tslib: 2.8.1 + + '@smithy/middleware-retry@4.5.5': + dependencies: + '@smithy/core': 3.23.17 + '@smithy/node-config-provider': 4.3.14 + '@smithy/protocol-http': 5.3.14 + '@smithy/service-error-classification': 4.3.0 + '@smithy/smithy-client': 4.12.13 + '@smithy/types': 4.14.1 + '@smithy/util-middleware': 4.2.14 + '@smithy/util-retry': 4.3.4 + '@smithy/uuid': 1.1.2 + tslib: 2.8.1 + + '@smithy/middleware-serde@4.2.20': + dependencies: + '@smithy/core': 3.23.17 + '@smithy/protocol-http': 5.3.14 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/middleware-stack@4.2.14': + dependencies: + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/node-config-provider@4.3.14': + dependencies: + '@smithy/property-provider': 4.2.14 + '@smithy/shared-ini-file-loader': 4.4.9 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.6.1': + dependencies: + '@smithy/protocol-http': 5.3.14 + '@smithy/querystring-builder': 4.2.14 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.7.6': + dependencies: + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@smithy/property-provider@4.2.14': + dependencies: + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/protocol-http@5.3.14': + dependencies: + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/querystring-builder@4.2.14': + dependencies: + '@smithy/types': 4.14.1 + '@smithy/util-uri-escape': 4.2.2 + tslib: 2.8.1 + + '@smithy/querystring-parser@4.2.14': + dependencies: + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/service-error-classification@4.3.0': + dependencies: + '@smithy/types': 4.14.1 + + '@smithy/shared-ini-file-loader@4.4.9': + dependencies: + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/signature-v4@5.3.14': + dependencies: + '@smithy/is-array-buffer': 4.2.2 + '@smithy/protocol-http': 5.3.14 + '@smithy/types': 4.14.1 + '@smithy/util-hex-encoding': 4.2.2 + '@smithy/util-middleware': 4.2.14 + '@smithy/util-uri-escape': 4.2.2 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 + + '@smithy/signature-v4@5.4.6': + dependencies: + '@smithy/core': 3.24.6 + '@smithy/types': 4.14.3 + tslib: 2.8.1 + + '@smithy/smithy-client@4.12.13': + dependencies: + '@smithy/core': 3.23.17 + '@smithy/middleware-endpoint': 4.4.32 + '@smithy/middleware-stack': 4.2.14 + '@smithy/protocol-http': 5.3.14 + '@smithy/types': 4.14.1 + '@smithy/util-stream': 4.5.25 + tslib: 2.8.1 + + '@smithy/types@4.14.1': + dependencies: + tslib: 2.8.1 + + '@smithy/types@4.14.3': + dependencies: + tslib: 2.8.1 + + '@smithy/url-parser@4.2.14': + dependencies: + '@smithy/querystring-parser': 4.2.14 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/util-base64@4.3.2': + dependencies: + '@smithy/util-buffer-from': 4.2.2 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 + + '@smithy/util-body-length-browser@4.2.2': + dependencies: + tslib: 2.8.1 + + '@smithy/util-body-length-node@4.2.3': + dependencies: + tslib: 2.8.1 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-buffer-from@4.2.2': + dependencies: + '@smithy/is-array-buffer': 4.2.2 + tslib: 2.8.1 + + '@smithy/util-config-provider@4.2.2': + dependencies: + tslib: 2.8.1 + + '@smithy/util-defaults-mode-browser@4.3.49': + dependencies: + '@smithy/property-provider': 4.2.14 + '@smithy/smithy-client': 4.12.13 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/util-defaults-mode-node@4.2.54': + dependencies: + '@smithy/config-resolver': 4.4.17 + '@smithy/credential-provider-imds': 4.2.14 + '@smithy/node-config-provider': 4.3.14 + '@smithy/property-provider': 4.2.14 + '@smithy/smithy-client': 4.12.13 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/util-endpoints@3.4.2': + dependencies: + '@smithy/node-config-provider': 4.3.14 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/util-hex-encoding@4.2.2': + dependencies: + tslib: 2.8.1 + + '@smithy/util-middleware@4.2.14': + dependencies: + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/util-retry@4.3.4': + dependencies: + '@smithy/service-error-classification': 4.3.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/util-stream@4.5.25': + dependencies: + '@smithy/fetch-http-handler': 5.3.17 + '@smithy/node-http-handler': 4.6.1 + '@smithy/types': 4.14.1 + '@smithy/util-base64': 4.3.2 + '@smithy/util-buffer-from': 4.2.2 + '@smithy/util-hex-encoding': 4.2.2 + '@smithy/util-utf8': 4.2.2 + tslib: 2.8.1 + + '@smithy/util-uri-escape@4.2.2': + dependencies: + tslib: 2.8.1 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-utf8@4.2.2': + dependencies: + '@smithy/util-buffer-from': 4.2.2 + tslib: 2.8.1 + + '@smithy/uuid@1.1.2': + dependencies: + tslib: 2.8.1 + + '@smthrs/accounts@0.33.0': + dependencies: + '@smthrs/errors': 0.33.0 + + '@smthrs/agents@0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0)': + dependencies: + '@ai-sdk/anthropic': 4.0.27(zod@4.4.3) + '@ai-sdk/openai': 4.0.27(zod@4.4.3) + '@modelcontextprotocol/sdk': 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.4.3) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/errors': 0.33.0 + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + ai: 7.0.48(zod@4.4.3) + effect: 3.21.1 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/agents@0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@ai-sdk/anthropic': 4.0.27(zod@4.4.3) + '@ai-sdk/openai': 4.0.27(zod@4.4.3) + '@modelcontextprotocol/sdk': 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.4.3) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + ai: 7.0.48(zod@4.4.3) + effect: 3.21.1 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/agents@0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@ai-sdk/anthropic': 4.0.27(zod@4.4.3) + '@ai-sdk/openai': 4.0.27(zod@4.4.3) + '@modelcontextprotocol/sdk': 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.4.3) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + ai: 7.0.48(zod@4.4.3) + effect: 3.21.1 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/aws@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/aws@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/cli@0.33.0(2f30f8c226a283acd49cffe2746e884b)': + dependencies: + '@clack/core': 1.4.3 + '@clack/prompts': 1.7.0 + '@mdx-js/esbuild': 3.1.1(esbuild@0.28.0) + '@modelcontextprotocol/sdk': 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.4.3) + '@opentui/core': 0.4.5(typescript@5.9.3)(web-tree-sitter@0.25.10) + '@opentui/react': 0.4.5(react-devtools-core@7.0.1)(react@19.2.8)(typescript@5.9.3)(web-tree-sitter@0.25.10)(ws@8.21.1) + '@pierre/diffs': 1.3.1(@shikijs/themes@4.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@smthrs/accounts': 0.33.0 + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/devtools': 0.33.0 + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/engine': 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/memory': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/openapi': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/protocol': 0.33.0 + '@smthrs/review': 0.33.0(f4a299db0a2a0a80c39d266569c53cac) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/scorers': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/server': 0.33.0(93b66ce10cabb9c10d3fc395cfa203e8) + '@smthrs/time-travel': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/tui': 0.33.0(@tanstack/query-core@5.101.2)(@types/react@19.2.14)(immer@11.1.15)(react-devtools-core@7.0.1)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.5))(web-tree-sitter@0.25.10)(ws@8.21.1) + '@smthrs/usage': 0.33.0 + '@smthrs/vcs': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@toon-format/toon': 2.3.0 + '@xterm/addon-fit': 0.11.0 + '@xterm/xterm': 6.0.0 + cron-parser: 5.7.0 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + effect: 3.21.1 + incur: 0.4.26 + picocolors: 1.1.1 + react: 19.2.8 + smthrs: 0.33.0(f6a5d034f82bcd1c1f4566f49e131737) + yaml: 2.9.0 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-cloudwatch-logs' + - '@aws-sdk/client-codebuild' + - '@aws-sdk/client-ecs' + - '@aws-sdk/client-rds-data' + - '@aws-sdk/client-s3' + - '@cfworker/json-schema' + - '@cloudflare/sandbox' + - '@cloudflare/workers-types' + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@daytonaio/sdk' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@google-cloud/run' + - '@google-cloud/storage' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@shikijs/themes' + - '@tanstack/query-core' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/react-dom' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@vercel/sandbox' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - esbuild + - expo-sqlite + - gel + - immer + - knex + - koffi + - kysely + - microsandbox + - mysql2 + - pg + - pg-native + - playwright + - postgres + - prisma + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react-devtools-core + - react-dom + - react-is + - redux + - sql.js + - sqlite3 + - supports-color + - typescript + - use-sync-external-store + - utf-8-validate + - web-tree-sitter + - ws + - xstate + + '@smthrs/cli@0.33.0(5133c386ac03d5580b19d905f9b68412)': + dependencies: + '@clack/core': 1.4.3 + '@clack/prompts': 1.7.0 + '@mdx-js/esbuild': 3.1.1(esbuild@0.28.0) + '@modelcontextprotocol/sdk': 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.4.3) + '@opentui/core': 0.4.5(typescript@5.9.3)(web-tree-sitter@0.25.10) + '@opentui/react': 0.4.5(react-devtools-core@7.0.1)(react@19.2.8)(typescript@5.9.3)(web-tree-sitter@0.25.10)(ws@8.21.1) + '@pierre/diffs': 1.3.1(@shikijs/themes@4.4.1)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@smthrs/accounts': 0.33.0 + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/devtools': 0.33.0 + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/engine': 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/memory': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/openapi': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/protocol': 0.33.0 + '@smthrs/review': 0.33.0(4e253fb7efbaa856c952b15ad01be082) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/scorers': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/server': 0.33.0(93b66ce10cabb9c10d3fc395cfa203e8) + '@smthrs/time-travel': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/tui': 0.33.0(@tanstack/query-core@5.101.2)(@types/react@19.2.14)(immer@11.1.15)(react-devtools-core@7.0.1)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.5))(web-tree-sitter@0.25.10)(ws@8.21.1) + '@smthrs/usage': 0.33.0 + '@smthrs/vcs': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@toon-format/toon': 2.3.0 + '@xterm/addon-fit': 0.11.0 + '@xterm/xterm': 6.0.0 + cron-parser: 5.7.0 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + effect: 3.21.1 + incur: 0.4.26 + picocolors: 1.1.1 + react: 19.2.8 + smthrs: 0.33.0(3d47cf8b07e70894a63ab5b0b7edc291) + yaml: 2.9.0 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-cloudwatch-logs' + - '@aws-sdk/client-codebuild' + - '@aws-sdk/client-ecs' + - '@aws-sdk/client-rds-data' + - '@aws-sdk/client-s3' + - '@cfworker/json-schema' + - '@cloudflare/sandbox' + - '@cloudflare/workers-types' + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@daytonaio/sdk' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@google-cloud/run' + - '@google-cloud/storage' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@shikijs/themes' + - '@tanstack/query-core' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/react-dom' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@vercel/sandbox' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - esbuild + - expo-sqlite + - gel + - immer + - knex + - koffi + - kysely + - microsandbox + - mysql2 + - pg + - pg-native + - playwright + - postgres + - prisma + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react-devtools-core + - react-dom + - react-is + - redux + - sql.js + - sqlite3 + - supports-color + - typescript + - use-sync-external-store + - utf-8-validate + - web-tree-sitter + - ws + - xstate + + '@smthrs/cli@0.33.0(a96c41cc1fb65031925b6fce44da1061)': + dependencies: + '@clack/core': 1.4.3 + '@clack/prompts': 1.7.0 + '@mdx-js/esbuild': 3.1.1(esbuild@0.28.0) + '@modelcontextprotocol/sdk': 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.4.3) + '@opentui/core': 0.4.5(typescript@5.9.3)(web-tree-sitter@0.25.10) + '@opentui/react': 0.4.5(react-devtools-core@7.0.1)(react@19.2.8)(typescript@5.9.3)(web-tree-sitter@0.25.10)(ws@8.20.0) + '@pierre/diffs': 1.3.1(@shikijs/themes@4.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@smthrs/accounts': 0.33.0 + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/devtools': 0.33.0 + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/engine': 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/memory': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/openapi': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/protocol': 0.33.0 + '@smthrs/review': 0.33.0(f4a299db0a2a0a80c39d266569c53cac) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/scorers': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/server': 0.33.0(93b66ce10cabb9c10d3fc395cfa203e8) + '@smthrs/time-travel': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/tui': 0.33.0(@tanstack/query-core@5.101.2)(@types/react@19.2.14)(immer@11.1.15)(react-devtools-core@7.0.1)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.8))(web-tree-sitter@0.25.10)(ws@8.20.0) + '@smthrs/usage': 0.33.0 + '@smthrs/vcs': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@toon-format/toon': 2.3.0 + '@xterm/addon-fit': 0.11.0 + '@xterm/xterm': 6.0.0 + cron-parser: 5.7.0 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + effect: 3.21.1 + incur: 0.4.26 + picocolors: 1.1.1 + react: 19.2.8 + smthrs: 0.33.0(f6a5d034f82bcd1c1f4566f49e131737) + yaml: 2.9.0 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-cloudwatch-logs' + - '@aws-sdk/client-codebuild' + - '@aws-sdk/client-ecs' + - '@aws-sdk/client-rds-data' + - '@aws-sdk/client-s3' + - '@cfworker/json-schema' + - '@cloudflare/sandbox' + - '@cloudflare/workers-types' + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@daytonaio/sdk' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@google-cloud/run' + - '@google-cloud/storage' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@shikijs/themes' + - '@tanstack/query-core' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/react-dom' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@vercel/sandbox' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - esbuild + - expo-sqlite + - gel + - immer + - knex + - koffi + - kysely + - microsandbox + - mysql2 + - pg + - pg-native + - playwright + - postgres + - prisma + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react-devtools-core + - react-dom + - react-is + - redux + - sql.js + - sqlite3 + - supports-color + - typescript + - use-sync-external-store + - utf-8-validate + - web-tree-sitter + - ws + - xstate + + '@smthrs/cli@0.33.0(d2237bd59aae63d5da93fabc6c021679)': + dependencies: + '@clack/core': 1.4.3 + '@clack/prompts': 1.7.0 + '@mdx-js/esbuild': 3.1.1(esbuild@0.27.7) + '@modelcontextprotocol/sdk': 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.4.3) + '@opentui/core': 0.4.5(typescript@5.9.3)(web-tree-sitter@0.25.10) + '@opentui/react': 0.4.5(react-devtools-core@7.0.1)(react@19.2.8)(typescript@5.9.3)(web-tree-sitter@0.25.10)(ws@8.21.1) + '@pierre/diffs': 1.3.1(@shikijs/themes@4.4.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@smthrs/accounts': 0.33.0 + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/devtools': 0.33.0 + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/engine': 0.33.0(2bd4a45a89215b1f4c1f82b421f3ab0a) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/memory': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/openapi': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/protocol': 0.33.0 + '@smthrs/review': 0.33.0(4bbfeabc6e74a6818ee2ab9bee34d4bb) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/scorers': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/server': 0.33.0(12a1814c31fccbb15dacb15fd445f471) + '@smthrs/time-travel': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/tui': 0.33.0(@tanstack/query-core@5.101.2)(@types/react@19.2.14)(immer@11.1.15)(react-devtools-core@7.0.1)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.5))(web-tree-sitter@0.25.10)(ws@8.21.1) + '@smthrs/usage': 0.33.0 + '@smthrs/vcs': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@toon-format/toon': 2.3.0 + '@xterm/addon-fit': 0.11.0 + '@xterm/xterm': 6.0.0 + cron-parser: 5.7.0 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + effect: 3.21.1 + incur: 0.4.26 + picocolors: 1.1.1 + react: 19.2.8 + smthrs: 0.33.0(9304875a6b8dc177c5e141719530354a) + yaml: 2.9.0 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-cloudwatch-logs' + - '@aws-sdk/client-codebuild' + - '@aws-sdk/client-ecs' + - '@aws-sdk/client-rds-data' + - '@aws-sdk/client-s3' + - '@cfworker/json-schema' + - '@cloudflare/sandbox' + - '@cloudflare/workers-types' + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@daytonaio/sdk' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@google-cloud/run' + - '@google-cloud/storage' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@shikijs/themes' + - '@tanstack/query-core' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/react-dom' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@vercel/sandbox' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - esbuild + - expo-sqlite + - gel + - immer + - knex + - koffi + - kysely + - microsandbox + - mysql2 + - pg + - pg-native + - playwright + - postgres + - prisma + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react-devtools-core + - react-dom + - react-is + - redux + - sql.js + - sqlite3 + - supports-color + - typescript + - use-sync-external-store + - utf-8-validate + - web-tree-sitter + - ws + - xstate + + '@smthrs/cli@0.33.0(e86b058e229b52fcf7011889fa9d4ade)': + dependencies: + '@clack/core': 1.4.3 + '@clack/prompts': 1.7.0 + '@mdx-js/esbuild': 3.1.1(esbuild@0.28.0) + '@modelcontextprotocol/sdk': 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.4.3) + '@opentui/core': 0.4.5(typescript@5.9.3)(web-tree-sitter@0.25.10) + '@opentui/react': 0.4.5(react-devtools-core@7.0.1)(react@19.2.8)(typescript@5.9.3)(web-tree-sitter@0.25.10)(ws@8.21.1) + '@pierre/diffs': 1.3.1(@shikijs/themes@4.4.1)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@smthrs/accounts': 0.33.0 + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/devtools': 0.33.0 + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/engine': 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/memory': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/openapi': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/protocol': 0.33.0 + '@smthrs/review': 0.33.0(e42cdc93736b257df0f702a373fb33a1) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/scorers': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/server': 0.33.0(d9bea7ae02389fc191ed2098da0df859) + '@smthrs/time-travel': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/tui': 0.33.0(@tanstack/query-core@5.101.2)(@types/react@19.2.14)(immer@11.1.15)(react-devtools-core@7.0.1)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.5))(web-tree-sitter@0.25.10)(ws@8.21.1) + '@smthrs/usage': 0.33.0 + '@smthrs/vcs': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@toon-format/toon': 2.3.0 + '@xterm/addon-fit': 0.11.0 + '@xterm/xterm': 6.0.0 + cron-parser: 5.7.0 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + effect: 3.21.1 + incur: 0.4.26 + picocolors: 1.1.1 + react: 19.2.8 + smthrs: 0.33.0(3d47cf8b07e70894a63ab5b0b7edc291) + yaml: 2.9.0 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-cloudwatch-logs' + - '@aws-sdk/client-codebuild' + - '@aws-sdk/client-ecs' + - '@aws-sdk/client-rds-data' + - '@aws-sdk/client-s3' + - '@cfworker/json-schema' + - '@cloudflare/sandbox' + - '@cloudflare/workers-types' + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@daytonaio/sdk' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@google-cloud/run' + - '@google-cloud/storage' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@shikijs/themes' + - '@tanstack/query-core' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/react-dom' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@vercel/sandbox' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - esbuild + - expo-sqlite + - gel + - immer + - knex + - koffi + - kysely + - microsandbox + - mysql2 + - pg + - pg-native + - playwright + - postgres + - prisma + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react-devtools-core + - react-dom + - react-is + - redux + - sql.js + - sqlite3 + - supports-color + - typescript + - use-sync-external-store + - utf-8-validate + - web-tree-sitter + - ws + - xstate + + '@smthrs/cloudflare@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/cloudflare@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/components@0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0)': + dependencies: + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/memory': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + bippy: 0.5.43(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/components@0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/memory': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + bippy: 0.5.43(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/components@0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/memory': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + bippy: 0.5.43(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/control-plane@0.33.0': + dependencies: + '@smthrs/errors': 0.33.0 + + '@smthrs/daytona@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/daytona@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/db@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + drizzle-zod: 0.8.3(drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0))(zod@4.4.3) + effect: 3.21.1 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/db@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + drizzle-zod: 0.8.3(drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0))(zod@4.4.3) + effect: 3.21.1 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/db@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + drizzle-zod: 0.8.3(drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0))(zod@4.4.3) + effect: 3.21.1 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/devtools@0.33.0': {} + + '@smthrs/driver@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0)': + dependencies: + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + effect: 3.21.1 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/driver@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + effect: 3.21.1 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/driver@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + effect: 3.21.1 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/electric-proxy@0.33.0': + dependencies: + '@smthrs/gateway': 0.33.0 + + '@smthrs/engine@0.33.0(2bd4a45a89215b1f4c1f82b421f3ab0a)': + dependencies: + '@effect/platform-bun': 4.0.0-beta.102(effect@3.21.1) + '@effect/sql-sqlite-bun': 4.0.0-beta.102(effect@3.21.1) + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/scorers': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/time-travel': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/tool-context': 0.33.0 + '@smthrs/vcs': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + diff: 9.0.0 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + effect: 3.21.1 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + zod: 4.4.3 + optionalDependencies: + '@electric-sql/pglite': 0.5.4 + '@electric-sql/pglite-socket': 0.2.7(@electric-sql/pglite-age@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_hashids@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_ivm@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_textsearch@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_uuidv7@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pgtap@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pgvector@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite@0.5.4) + pg: 8.22.0 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg-native + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/engine@0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e)': + dependencies: + '@effect/platform-bun': 4.0.0-beta.102(effect@3.21.1) + '@effect/sql-sqlite-bun': 4.0.0-beta.102(effect@3.21.1) + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/scorers': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/time-travel': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/tool-context': 0.33.0 + '@smthrs/vcs': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + diff: 9.0.0 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + effect: 3.21.1 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + zod: 4.4.3 + optionalDependencies: + '@electric-sql/pglite': 0.5.4 + '@electric-sql/pglite-socket': 0.2.7(@electric-sql/pglite-age@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_hashids@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_ivm@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_textsearch@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_uuidv7@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pgtap@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pgvector@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite@0.5.4) + pg: 8.22.0 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg-native + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/errors@0.33.0': + dependencies: + effect: 3.21.1 + + '@smthrs/gateway-client@0.33.0(@tanstack/query-core@5.101.2)(react@19.2.5)(typescript@5.9.3)': + dependencies: + '@smthrs/electric-proxy': 0.33.0 + '@smthrs/gateway': 0.33.0 + '@smthrs/protocol': 0.33.0 + '@smthrs/usage': 0.33.0 + '@tanstack/db': 0.6.13(typescript@5.9.3) + '@tanstack/electric-db-collection': 0.3.11(typescript@5.9.3) + '@tanstack/query-db-collection': 1.0.45(@tanstack/query-core@5.101.2)(typescript@5.9.3) + '@tanstack/react-query': 5.101.2(react@19.2.5) + transitivePeerDependencies: + - '@tanstack/query-core' + - react + - supports-color + - typescript + + '@smthrs/gateway-client@0.33.0(@tanstack/query-core@5.101.2)(react@19.2.8)(typescript@5.9.3)': + dependencies: + '@smthrs/electric-proxy': 0.33.0 + '@smthrs/gateway': 0.33.0 + '@smthrs/protocol': 0.33.0 + '@smthrs/usage': 0.33.0 + '@tanstack/db': 0.6.13(typescript@5.9.3) + '@tanstack/electric-db-collection': 0.3.11(typescript@5.9.3) + '@tanstack/query-db-collection': 1.0.45(@tanstack/query-core@5.101.2)(typescript@5.9.3) + '@tanstack/react-query': 5.101.2(react@19.2.8) + transitivePeerDependencies: + - '@tanstack/query-core' + - react + - supports-color + - typescript + + '@smthrs/gateway-react@0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)': + dependencies: + '@smthrs/gateway-client': 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.5)(typescript@5.9.3) + '@tanstack/react-db': 0.1.91(react@19.2.5)(typescript@5.9.3) + '@tanstack/react-query': 5.101.2(react@19.2.5) + effect: 3.21.1 + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + transitivePeerDependencies: + - '@tanstack/query-core' + - supports-color + - typescript + + '@smthrs/gateway-react@0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)(typescript@5.9.3)': + dependencies: + '@smthrs/gateway-client': 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.8)(typescript@5.9.3) + '@tanstack/react-db': 0.1.91(react@19.2.8)(typescript@5.9.3) + '@tanstack/react-query': 5.101.2(react@19.2.8) + effect: 3.21.1 + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + transitivePeerDependencies: + - '@tanstack/query-core' + - supports-color + - typescript + + '@smthrs/gateway-react@0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.8(react@19.2.5))(react@19.2.5)(typescript@5.9.3)': + dependencies: + '@smthrs/gateway-client': 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.5)(typescript@5.9.3) + '@tanstack/react-db': 0.1.91(react@19.2.5)(typescript@5.9.3) + '@tanstack/react-query': 5.101.2(react@19.2.5) + effect: 3.21.1 + react: 19.2.5 + react-dom: 19.2.8(react@19.2.5) + transitivePeerDependencies: + - '@tanstack/query-core' + - supports-color + - typescript + + '@smthrs/gateway-react@0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)(typescript@5.9.3)': + dependencies: + '@smthrs/gateway-client': 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.8)(typescript@5.9.3) + '@tanstack/react-db': 0.1.91(react@19.2.8)(typescript@5.9.3) + '@tanstack/react-query': 5.101.2(react@19.2.8) + effect: 3.21.1 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + transitivePeerDependencies: + - '@tanstack/query-core' + - supports-color + - typescript + + '@smthrs/gateway-react@0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.9.3)': + dependencies: + '@smthrs/gateway-client': 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.8)(typescript@5.9.3) + '@tanstack/react-db': 0.1.91(react@19.2.8)(typescript@5.9.3) + '@tanstack/react-query': 5.101.2(react@19.2.8) + effect: 3.21.1 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + transitivePeerDependencies: + - '@tanstack/query-core' + - supports-color + - typescript + + '@smthrs/gateway-ui@0.33.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(@shikijs/themes@4.4.1)(@tanstack/query-core@5.101.2)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(immer@11.1.15)(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(react-dom@19.2.5(react@19.2.5))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1)(typescript@5.9.3)': + dependencies: + '@smthrs/gateway-client': 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.8)(typescript@5.9.3) + '@smthrs/gateway-react': 0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)(typescript@5.9.3) + '@smthrs/ui': 0.33.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(@shikijs/themes@4.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(react-dom@19.2.5(react@19.2.5))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1)(typescript@5.9.3) + '@smthrs/ui-styleguide': 0.33.0 + '@xyflow/react': 12.10.2(@types/react@19.2.14)(immer@11.1.15)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + dagre: 0.8.5 + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + transitivePeerDependencies: + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@shikijs/themes' + - '@tanstack/query-core' + - '@types/react' + - '@types/react-dom' + - immer + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react-is + - redux + - supports-color + - typescript + + '@smthrs/gateway-ui@0.33.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(@shikijs/themes@4.4.1)(@tanstack/query-core@5.101.2)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(immer@11.1.15)(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(react-dom@19.2.8(react@19.2.5))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1)(typescript@5.9.3)': + dependencies: + '@smthrs/gateway-client': 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.8)(typescript@5.9.3) + '@smthrs/gateway-react': 0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)(typescript@5.9.3) + '@smthrs/ui': 0.33.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(@shikijs/themes@4.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(react-dom@19.2.8(react@19.2.5))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1)(typescript@5.9.3) + '@smthrs/ui-styleguide': 0.33.0 + '@xyflow/react': 12.10.2(@types/react@19.2.14)(immer@11.1.15)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + dagre: 0.8.5 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + transitivePeerDependencies: + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@shikijs/themes' + - '@tanstack/query-core' + - '@types/react' + - '@types/react-dom' + - immer + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react-is + - redux + - supports-color + - typescript + + '@smthrs/gateway-ui@0.33.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(@shikijs/themes@4.4.1)(@tanstack/query-core@5.101.2)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(immer@11.1.15)(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(react-dom@19.2.8(react@19.2.8))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1)(typescript@5.9.3)': + dependencies: + '@smthrs/gateway-client': 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.8)(typescript@5.9.3) + '@smthrs/gateway-react': 0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.9.3) + '@smthrs/ui': 0.33.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(@shikijs/themes@4.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(react-dom@19.2.8(react@19.2.8))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1)(typescript@5.9.3) + '@smthrs/ui-styleguide': 0.33.0 + '@xyflow/react': 12.10.2(@types/react@19.2.14)(immer@11.1.15)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + dagre: 0.8.5 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + transitivePeerDependencies: + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@shikijs/themes' + - '@tanstack/query-core' + - '@types/react' + - '@types/react-dom' + - immer + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react-is + - redux + - supports-color + - typescript + + '@smthrs/gateway@0.33.0': + dependencies: + '@smthrs/protocol': 0.33.0 + + '@smthrs/gcp@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/gcp@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/graph@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0)': + dependencies: + '@smthrs/errors': 0.33.0 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + + '@smthrs/graph@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@smthrs/errors': 0.33.0 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + + '@smthrs/graph@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@smthrs/errors': 0.33.0 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + + '@smthrs/integrations@0.33.0(12a1814c31fccbb15dacb15fd445f471)': + dependencies: + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/engine': 0.33.0(2bd4a45a89215b1f4c1f82b421f3ab0a) + '@smthrs/errors': 0.33.0 + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + effect: 3.21.1 + react: 19.2.8 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - pg-native + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/integrations@0.33.0(93b66ce10cabb9c10d3fc395cfa203e8)': + dependencies: + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/engine': 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/errors': 0.33.0 + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + effect: 3.21.1 + react: 19.2.8 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - pg-native + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/integrations@0.33.0(d9bea7ae02389fc191ed2098da0df859)': + dependencies: + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/engine': 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/errors': 0.33.0 + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + effect: 3.21.1 + react: 19.2.8 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - pg-native + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/jj-darwin-arm64@0.33.0': + optional: true + + '@smthrs/jj-darwin-x64@0.33.0': + optional: true + + '@smthrs/jj-linux-arm64@0.33.0': + optional: true + + '@smthrs/jj-linux-x64@0.33.0': + optional: true + + '@smthrs/jj-win32-x64@0.33.0': + optional: true + + '@smthrs/memory@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0)': + dependencies: + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@vectorize-io/hindsight-client': 0.8.4 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + effect: 3.21.1 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/memory@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@vectorize-io/hindsight-client': 0.8.4 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + effect: 3.21.1 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/memory@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@vectorize-io/hindsight-client': 0.8.4 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + effect: 3.21.1 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/microsandbox@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/microsandbox@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/observability@0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)': + dependencies: + '@effect/opentelemetry': 4.0.0-beta.102(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(effect@3.21.1) + '@effect/platform-bun': 4.0.0-beta.102(effect@3.21.1) + effect: 3.21.1 + transitivePeerDependencies: + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - bufferutil + - utf-8-validate + + '@smthrs/openapi@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + ai: 7.0.48(zod@4.4.3) + effect: 3.21.1 + yaml: 2.9.0 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/openapi@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + ai: 7.0.48(zod@4.4.3) + effect: 3.21.1 + yaml: 2.9.0 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/openapi@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + ai: 7.0.48(zod@4.4.3) + effect: 3.21.1 + yaml: 2.9.0 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/protocol@0.33.0': {} + + '@smthrs/react-reconciler@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0)': + dependencies: + '@smthrs/devtools': 0.33.0 + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + bippy: 0.5.43(react@19.2.8) + react: 19.2.8 + react-reconciler: 0.33.0(react@19.2.8) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/react-reconciler@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@smthrs/devtools': 0.33.0 + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + bippy: 0.5.43(react@19.2.8) + react: 19.2.8 + react-reconciler: 0.33.0(react@19.2.8) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/react-reconciler@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@smthrs/devtools': 0.33.0 + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + bippy: 0.5.43(react@19.2.8) + react: 19.2.8 + react-reconciler: 0.33.0(react@19.2.8) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/review@0.33.0(4bbfeabc6e74a6818ee2ab9bee34d4bb)': + dependencies: + '@pierre/diffs': 1.3.1(@shikijs/themes@4.4.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/engine': 0.33.0(2bd4a45a89215b1f4c1f82b421f3ab0a) + '@smthrs/ui-styleguide': 0.33.0 + effect: 3.21.1 + mermaid: 11.16.0 + smthrs: 0.33.0(9304875a6b8dc177c5e141719530354a) + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-cloudwatch-logs' + - '@aws-sdk/client-codebuild' + - '@aws-sdk/client-ecs' + - '@aws-sdk/client-rds-data' + - '@aws-sdk/client-s3' + - '@cfworker/json-schema' + - '@cloudflare/sandbox' + - '@cloudflare/workers-types' + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@daytonaio/sdk' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@google-cloud/run' + - '@google-cloud/storage' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@shikijs/themes' + - '@tanstack/query-core' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/react-dom' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@vercel/sandbox' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - esbuild + - expo-sqlite + - gel + - immer + - knex + - koffi + - kysely + - microsandbox + - mysql2 + - pg + - pg-native + - playwright + - postgres + - prisma + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react + - react-dom + - react-is + - redux + - sql.js + - sqlite3 + - supports-color + - typescript + - utf-8-validate + - xstate + + '@smthrs/review@0.33.0(4e253fb7efbaa856c952b15ad01be082)': + dependencies: + '@pierre/diffs': 1.3.1(@shikijs/themes@4.4.1)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/engine': 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/ui-styleguide': 0.33.0 + effect: 3.21.1 + mermaid: 11.16.0 + smthrs: 0.33.0(3d47cf8b07e70894a63ab5b0b7edc291) + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-cloudwatch-logs' + - '@aws-sdk/client-codebuild' + - '@aws-sdk/client-ecs' + - '@aws-sdk/client-rds-data' + - '@aws-sdk/client-s3' + - '@cfworker/json-schema' + - '@cloudflare/sandbox' + - '@cloudflare/workers-types' + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@daytonaio/sdk' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@google-cloud/run' + - '@google-cloud/storage' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@shikijs/themes' + - '@tanstack/query-core' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/react-dom' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@vercel/sandbox' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - esbuild + - expo-sqlite + - gel + - immer + - knex + - koffi + - kysely + - microsandbox + - mysql2 + - pg + - pg-native + - playwright + - postgres + - prisma + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react + - react-dom + - react-is + - redux + - sql.js + - sqlite3 + - supports-color + - typescript + - utf-8-validate + - xstate + + '@smthrs/review@0.33.0(e42cdc93736b257df0f702a373fb33a1)': + dependencies: + '@pierre/diffs': 1.3.1(@shikijs/themes@4.4.1)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/engine': 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/ui-styleguide': 0.33.0 + effect: 3.21.1 + mermaid: 11.16.0 + smthrs: 0.33.0(3d47cf8b07e70894a63ab5b0b7edc291) + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-cloudwatch-logs' + - '@aws-sdk/client-codebuild' + - '@aws-sdk/client-ecs' + - '@aws-sdk/client-rds-data' + - '@aws-sdk/client-s3' + - '@cfworker/json-schema' + - '@cloudflare/sandbox' + - '@cloudflare/workers-types' + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@daytonaio/sdk' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@google-cloud/run' + - '@google-cloud/storage' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@shikijs/themes' + - '@tanstack/query-core' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/react-dom' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@vercel/sandbox' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - esbuild + - expo-sqlite + - gel + - immer + - knex + - koffi + - kysely + - microsandbox + - mysql2 + - pg + - pg-native + - playwright + - postgres + - prisma + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react + - react-dom + - react-is + - redux + - sql.js + - sqlite3 + - supports-color + - typescript + - utf-8-validate + - xstate + + '@smthrs/review@0.33.0(f4a299db0a2a0a80c39d266569c53cac)': + dependencies: + '@pierre/diffs': 1.3.1(@shikijs/themes@4.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/engine': 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/ui-styleguide': 0.33.0 + effect: 3.21.1 + mermaid: 11.16.0 + smthrs: 0.33.0(f6a5d034f82bcd1c1f4566f49e131737) + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-cloudwatch-logs' + - '@aws-sdk/client-codebuild' + - '@aws-sdk/client-ecs' + - '@aws-sdk/client-rds-data' + - '@aws-sdk/client-s3' + - '@cfworker/json-schema' + - '@cloudflare/sandbox' + - '@cloudflare/workers-types' + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@daytonaio/sdk' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@google-cloud/run' + - '@google-cloud/storage' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@shikijs/themes' + - '@tanstack/query-core' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/react-dom' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@vercel/sandbox' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - esbuild + - expo-sqlite + - gel + - immer + - knex + - koffi + - kysely + - microsandbox + - mysql2 + - pg + - pg-native + - playwright + - postgres + - prisma + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react + - react-dom + - react-is + - redux + - sql.js + - sqlite3 + - supports-color + - typescript + - utf-8-validate + - xstate + + '@smthrs/sandbox@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0)': + dependencies: + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/errors': 0.33.0 + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + effect: 3.21.1 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/sandbox@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + effect: 3.21.1 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/sandbox@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + effect: 3.21.1 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/scheduler@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + effect: 3.21.1 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + + '@smthrs/scheduler@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + effect: 3.21.1 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + + '@smthrs/scheduler@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + effect: 3.21.1 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + + '@smthrs/scorers@0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0)': + dependencies: + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + effect: 3.21.1 + typescript: 6.0.3 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/scorers@0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + effect: 3.21.1 + typescript: 6.0.3 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/scorers@0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + effect: 3.21.1 + typescript: 6.0.3 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/server@0.33.0(12a1814c31fccbb15dacb15fd445f471)': + dependencies: + '@smthrs/accounts': 0.33.0 + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/devtools': 0.33.0 + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/engine': 0.33.0(2bd4a45a89215b1f4c1f82b421f3ab0a) + '@smthrs/errors': 0.33.0 + '@smthrs/gateway': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/integrations': 0.33.0(12a1814c31fccbb15dacb15fd445f471) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/protocol': 0.33.0 + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/time-travel': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/ui-styleguide': 0.33.0 + '@smthrs/usage': 0.33.0 + cron-parser: 5.7.0 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + effect: 3.21.1 + hono: 4.12.33 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + ws: 8.21.1 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - pg-native + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/server@0.33.0(93b66ce10cabb9c10d3fc395cfa203e8)': + dependencies: + '@smthrs/accounts': 0.33.0 + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/devtools': 0.33.0 + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/engine': 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/errors': 0.33.0 + '@smthrs/gateway': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/integrations': 0.33.0(93b66ce10cabb9c10d3fc395cfa203e8) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/protocol': 0.33.0 + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/time-travel': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/ui-styleguide': 0.33.0 + '@smthrs/usage': 0.33.0 + cron-parser: 5.7.0 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + effect: 3.21.1 + hono: 4.12.33 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + ws: 8.21.1 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - pg-native + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/server@0.33.0(d9bea7ae02389fc191ed2098da0df859)': + dependencies: + '@smthrs/accounts': 0.33.0 + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/devtools': 0.33.0 + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/engine': 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/errors': 0.33.0 + '@smthrs/gateway': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/integrations': 0.33.0(d9bea7ae02389fc191ed2098da0df859) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/protocol': 0.33.0 + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/time-travel': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/ui-styleguide': 0.33.0 + '@smthrs/usage': 0.33.0 + cron-parser: 5.7.0 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + effect: 3.21.1 + hono: 4.12.33 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + ws: 8.21.1 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - pg-native + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/telegram@0.33.0': {} + + '@smthrs/testing@0.33.0(12a1814c31fccbb15dacb15fd445f471)': + dependencies: + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/engine': 0.33.0(2bd4a45a89215b1f4c1f82b421f3ab0a) + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + effect: 3.21.1 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - pg-native + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/testing@0.33.0(93b66ce10cabb9c10d3fc395cfa203e8)': + dependencies: + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/engine': 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + effect: 3.21.1 + zod: 4.4.3 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cfworker/json-schema' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - pg-native + - postgres + - prisma + - sql.js + - sqlite3 + - supports-color + - utf-8-validate + + '@smthrs/time-travel@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0)': + dependencies: + '@effect/platform-bun': 4.0.0-beta.102(effect@3.21.1) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + '@smthrs/vcs': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + effect: 3.21.1 + picocolors: 1.1.1 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/time-travel@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': + dependencies: + '@effect/platform-bun': 4.0.0-beta.102(effect@3.21.1) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/vcs': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + effect: 3.21.1 + picocolors: 1.1.1 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate + + '@smthrs/time-travel@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': + dependencies: + '@effect/platform-bun': 4.0.0-beta.102(effect@3.21.1) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/errors': 0.33.0 + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/vcs': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + effect: 3.21.1 + picocolors: 1.1.1 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate - '@smithy/util-buffer-from@4.2.2': + '@smthrs/tool-context@0.33.0': dependencies: - '@smithy/is-array-buffer': 4.2.2 - tslib: 2.8.1 + ai: 7.0.48(zod@4.4.3) + zod: 4.4.3 - '@smithy/util-config-provider@4.2.2': + '@smthrs/tui-ui@0.33.0(react-devtools-core@7.0.1)(typescript@5.9.3)(web-tree-sitter@0.25.10)(ws@8.20.0)': dependencies: - tslib: 2.8.1 + '@opentui/core': 0.4.5(typescript@5.9.3)(web-tree-sitter@0.25.10) + '@opentui/react': 0.4.5(react-devtools-core@7.0.1)(react@19.2.8)(typescript@5.9.3)(web-tree-sitter@0.25.10)(ws@8.20.0) + react: 19.2.8 + transitivePeerDependencies: + - react-devtools-core + - typescript + - web-tree-sitter + - ws - '@smithy/util-defaults-mode-browser@4.3.49': + '@smthrs/tui-ui@0.33.0(react-devtools-core@7.0.1)(typescript@5.9.3)(web-tree-sitter@0.25.10)(ws@8.21.1)': dependencies: - '@smithy/property-provider': 4.2.14 - '@smithy/smithy-client': 4.12.13 - '@smithy/types': 4.14.1 - tslib: 2.8.1 + '@opentui/core': 0.4.5(typescript@5.9.3)(web-tree-sitter@0.25.10) + '@opentui/react': 0.4.5(react-devtools-core@7.0.1)(react@19.2.8)(typescript@5.9.3)(web-tree-sitter@0.25.10)(ws@8.21.1) + react: 19.2.8 + transitivePeerDependencies: + - react-devtools-core + - typescript + - web-tree-sitter + - ws - '@smithy/util-defaults-mode-node@4.2.54': + '@smthrs/tui@0.33.0(@tanstack/query-core@5.101.2)(@types/react@19.2.14)(immer@11.1.15)(react-devtools-core@7.0.1)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.5))(web-tree-sitter@0.25.10)(ws@8.21.1)': dependencies: - '@smithy/config-resolver': 4.4.17 - '@smithy/credential-provider-imds': 4.2.14 - '@smithy/node-config-provider': 4.3.14 - '@smithy/property-provider': 4.2.14 - '@smithy/smithy-client': 4.12.13 - '@smithy/types': 4.14.1 - tslib: 2.8.1 + '@opentui/core': 0.4.5(typescript@5.9.3)(web-tree-sitter@0.25.10) + '@opentui/react': 0.4.5(react-devtools-core@7.0.1)(react@19.2.8)(typescript@5.9.3)(web-tree-sitter@0.25.10)(ws@8.21.1) + '@smthrs/gateway-client': 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.8)(typescript@5.9.3) + '@smthrs/gateway-react': 0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.9.3) + '@smthrs/tui-ui': 0.33.0(react-devtools-core@7.0.1)(typescript@5.9.3)(web-tree-sitter@0.25.10)(ws@8.21.1) + '@smthrs/ui-core': 0.33.0(@tanstack/query-core@5.101.2)(@types/react@19.2.14)(immer@11.1.15)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.5)) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + transitivePeerDependencies: + - '@tanstack/query-core' + - '@types/react' + - immer + - react-devtools-core + - supports-color + - typescript + - use-sync-external-store + - web-tree-sitter + - ws - '@smithy/util-endpoints@3.4.2': + '@smthrs/tui@0.33.0(@tanstack/query-core@5.101.2)(@types/react@19.2.14)(immer@11.1.15)(react-devtools-core@7.0.1)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.8))(web-tree-sitter@0.25.10)(ws@8.20.0)': dependencies: - '@smithy/node-config-provider': 4.3.14 - '@smithy/types': 4.14.1 - tslib: 2.8.1 + '@opentui/core': 0.4.5(typescript@5.9.3)(web-tree-sitter@0.25.10) + '@opentui/react': 0.4.5(react-devtools-core@7.0.1)(react@19.2.8)(typescript@5.9.3)(web-tree-sitter@0.25.10)(ws@8.20.0) + '@smthrs/gateway-client': 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.8)(typescript@5.9.3) + '@smthrs/gateway-react': 0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.9.3) + '@smthrs/tui-ui': 0.33.0(react-devtools-core@7.0.1)(typescript@5.9.3)(web-tree-sitter@0.25.10)(ws@8.20.0) + '@smthrs/ui-core': 0.33.0(@tanstack/query-core@5.101.2)(@types/react@19.2.14)(immer@11.1.15)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.8)) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + transitivePeerDependencies: + - '@tanstack/query-core' + - '@types/react' + - immer + - react-devtools-core + - supports-color + - typescript + - use-sync-external-store + - web-tree-sitter + - ws - '@smithy/util-hex-encoding@4.2.2': + '@smthrs/ui-core@0.33.0(@tanstack/query-core@5.101.2)(@types/react@19.2.14)(immer@11.1.15)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.5))': dependencies: - tslib: 2.8.1 + '@smthrs/gateway-client': 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.8)(typescript@5.9.3) + '@smthrs/gateway-react': 0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.9.3) + react: 19.2.8 + zustand: 5.0.14(@types/react@19.2.14)(immer@11.1.15)(react@19.2.8)(use-sync-external-store@1.6.0(react@19.2.5)) + transitivePeerDependencies: + - '@tanstack/query-core' + - '@types/react' + - immer + - react-dom + - supports-color + - typescript + - use-sync-external-store - '@smithy/util-middleware@4.2.14': + '@smthrs/ui-core@0.33.0(@tanstack/query-core@5.101.2)(@types/react@19.2.14)(immer@11.1.15)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.9.3)(use-sync-external-store@1.6.0(react@19.2.8))': dependencies: - '@smithy/types': 4.14.1 - tslib: 2.8.1 + '@smthrs/gateway-client': 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.8)(typescript@5.9.3) + '@smthrs/gateway-react': 0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.9.3) + react: 19.2.8 + zustand: 5.0.14(@types/react@19.2.14)(immer@11.1.15)(react@19.2.8)(use-sync-external-store@1.6.0(react@19.2.8)) + transitivePeerDependencies: + - '@tanstack/query-core' + - '@types/react' + - immer + - react-dom + - supports-color + - typescript + - use-sync-external-store + + '@smthrs/ui-styleguide@0.33.0': {} + + '@smthrs/ui@0.33.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(@shikijs/themes@4.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(react-dom@19.2.5(react@19.2.5))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1)(typescript@5.9.3)': + dependencies: + '@milkdown/crepe': 7.21.2(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(typescript@5.9.3) + '@milkdown/kit': 7.21.2(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(typescript@5.9.3) + '@milkdown/plugin-listener': 7.21.2 + '@pierre/diffs': 1.3.1(@shikijs/themes@4.4.1)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@smthrs/ui-styleguide': 0.33.0 + '@xterm/addon-fit': 0.11.0 + '@xterm/xterm': 6.0.0 + class-variance-authority: 0.7.1 + clsx: 2.1.1 + d3-force: 3.0.0 + radix-ui: 1.6.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + recharts: 3.10.1(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1) + transitivePeerDependencies: + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@shikijs/themes' + - '@types/react' + - '@types/react-dom' + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react-is + - redux + - supports-color + - typescript + + '@smthrs/ui@0.33.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(@shikijs/themes@4.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(react-dom@19.2.8(react@19.2.5))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1)(typescript@5.9.3)': + dependencies: + '@milkdown/crepe': 7.21.2(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(typescript@5.9.3) + '@milkdown/kit': 7.21.2(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(typescript@5.9.3) + '@milkdown/plugin-listener': 7.21.2 + '@pierre/diffs': 1.3.1(@shikijs/themes@4.4.1)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@smthrs/ui-styleguide': 0.33.0 + '@xterm/addon-fit': 0.11.0 + '@xterm/xterm': 6.0.0 + class-variance-authority: 0.7.1 + clsx: 2.1.1 + d3-force: 3.0.0 + radix-ui: 1.6.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + recharts: 3.10.1(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1) + transitivePeerDependencies: + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@shikijs/themes' + - '@types/react' + - '@types/react-dom' + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react-is + - redux + - supports-color + - typescript + + '@smthrs/ui@0.33.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(@shikijs/themes@4.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(react-dom@19.2.8(react@19.2.8))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1)(typescript@5.9.3)': + dependencies: + '@milkdown/crepe': 7.21.2(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(typescript@5.9.3) + '@milkdown/kit': 7.21.2(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(typescript@5.9.3) + '@milkdown/plugin-listener': 7.21.2 + '@pierre/diffs': 1.3.1(@shikijs/themes@4.4.1)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@smthrs/ui-styleguide': 0.33.0 + '@xterm/addon-fit': 0.11.0 + '@xterm/xterm': 6.0.0 + class-variance-authority: 0.7.1 + clsx: 2.1.1 + d3-force: 3.0.0 + radix-ui: 1.6.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + recharts: 3.10.1(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1) + transitivePeerDependencies: + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@shikijs/themes' + - '@types/react' + - '@types/react-dom' + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react-is + - redux + - supports-color + - typescript - '@smithy/util-retry@4.3.4': + '@smthrs/usage@0.33.0': dependencies: - '@smithy/service-error-classification': 4.3.0 - '@smithy/types': 4.14.1 - tslib: 2.8.1 + '@smthrs/accounts': 0.33.0 - '@smithy/util-stream@4.5.25': + '@smthrs/vcs@0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)': dependencies: - '@smithy/fetch-http-handler': 5.3.17 - '@smithy/node-http-handler': 4.6.1 - '@smithy/types': 4.14.1 - '@smithy/util-base64': 4.3.2 - '@smithy/util-buffer-from': 4.2.2 - '@smithy/util-hex-encoding': 4.2.2 - '@smithy/util-utf8': 4.2.2 - tslib: 2.8.1 + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + effect: 3.21.1 + optionalDependencies: + '@smthrs/jj-darwin-arm64': 0.33.0 + '@smthrs/jj-darwin-x64': 0.33.0 + '@smthrs/jj-linux-arm64': 0.33.0 + '@smthrs/jj-linux-x64': 0.33.0 + '@smthrs/jj-win32-x64': 0.33.0 + transitivePeerDependencies: + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - bufferutil + - utf-8-validate - '@smithy/util-uri-escape@4.2.2': + '@smthrs/vercel@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': dependencies: - tslib: 2.8.1 + '@smthrs/errors': 0.33.0 + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate - '@smithy/util-utf8@2.3.0': + '@smthrs/vercel@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': dependencies: - '@smithy/util-buffer-from': 2.2.0 - tslib: 2.8.1 + '@smthrs/errors': 0.33.0 + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate - '@smithy/util-utf8@4.2.2': + '@smthrs/xstate@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0)': dependencies: - '@smithy/util-buffer-from': 4.2.2 - tslib: 2.8.1 + '@smthrs/errors': 0.33.0 + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + react: 19.2.8 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate - '@smithy/uuid@1.1.2': + '@smthrs/xstate@0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)': dependencies: - tslib: 2.8.1 + '@smthrs/errors': 0.33.0 + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + react: 19.2.8 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - gel + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - sql.js + - sqlite3 + - utf-8-validate '@speed-highlight/core@1.2.15': {} '@standard-schema/spec@1.1.0': {} + '@standard-schema/utils@0.3.0': {} + '@tanstack/ai-client@0.16.2(@opentelemetry/api@1.9.0)': dependencies: '@tanstack/ai': 0.27.0(@opentelemetry/api@1.9.0) @@ -9161,14 +19161,14 @@ snapshots: '@tanstack/ai': 0.27.0(@opentelemetry/api@1.9.0) '@tanstack/devtools-event-client': 0.4.3 - '@tanstack/ai-openai@0.13.0(@tanstack/ai-client@0.16.2(@opentelemetry/api@1.9.0))(@tanstack/ai@0.27.0(@opentelemetry/api@1.9.0))(ws@8.20.1)(zod@4.3.6)': + '@tanstack/ai-openai@0.13.0(@tanstack/ai-client@0.16.2(@opentelemetry/api@1.9.0))(@tanstack/ai@0.27.0(@opentelemetry/api@1.9.0))(ws@8.21.1)(zod@4.4.3)': dependencies: '@tanstack/ai': 0.27.0(@opentelemetry/api@1.9.0) '@tanstack/ai-client': 0.16.2(@opentelemetry/api@1.9.0) '@tanstack/ai-utils': 0.2.1 - '@tanstack/openai-base': 0.7.0(@tanstack/ai@0.27.0(@opentelemetry/api@1.9.0))(ws@8.20.1)(zod@4.3.6) - openai: 6.26.0(ws@8.20.1)(zod@4.3.6) - zod: 4.3.6 + '@tanstack/openai-base': 0.7.0(@tanstack/ai@0.27.0(@opentelemetry/api@1.9.0))(ws@8.21.1)(zod@4.4.3) + openai: 6.26.0(ws@8.21.1)(zod@4.4.3) + zod: 4.4.3 transitivePeerDependencies: - ws @@ -9192,21 +19192,82 @@ snapshots: optionalDependencies: '@opentelemetry/api': 1.9.0 + '@tanstack/db-ivm@0.1.18(typescript@5.9.3)': + dependencies: + fractional-indexing: 3.4.0 + sorted-btree: 1.8.1 + typescript: 5.9.3 + + '@tanstack/db@0.6.13(typescript@5.9.3)': + dependencies: + '@standard-schema/spec': 1.1.0 + '@tanstack/db-ivm': 0.1.18(typescript@5.9.3) + '@tanstack/pacer-lite': 0.2.2 + typescript: 5.9.3 + '@tanstack/devtools-event-client@0.4.3': {} + '@tanstack/electric-db-collection@0.3.11(typescript@5.9.3)': + dependencies: + '@electric-sql/client': 1.5.24 + '@standard-schema/spec': 1.1.0 + '@tanstack/db': 0.6.13(typescript@5.9.3) + '@tanstack/store': 0.9.3 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + - typescript + '@tanstack/history@1.162.0': {} - '@tanstack/openai-base@0.7.0(@tanstack/ai@0.27.0(@opentelemetry/api@1.9.0))(ws@8.20.1)(zod@4.3.6)': + '@tanstack/openai-base@0.7.0(@tanstack/ai@0.27.0(@opentelemetry/api@1.9.0))(ws@8.21.1)(zod@4.4.3)': dependencies: '@tanstack/ai': 0.27.0(@opentelemetry/api@1.9.0) '@tanstack/ai-utils': 0.2.1 - openai: 6.26.0(ws@8.20.1)(zod@4.3.6) + openai: 6.26.0(ws@8.21.1)(zod@4.4.3) transitivePeerDependencies: - ws - zod + '@tanstack/pacer-lite@0.2.2': {} + + '@tanstack/query-core@5.101.2': {} + '@tanstack/query-core@5.99.1': {} + '@tanstack/query-db-collection@1.0.45(@tanstack/query-core@5.101.2)(typescript@5.9.3)': + dependencies: + '@standard-schema/spec': 1.1.0 + '@tanstack/db': 0.6.13(typescript@5.9.3) + '@tanstack/query-core': 5.101.2 + typescript: 5.9.3 + + '@tanstack/react-db@0.1.91(react@19.2.5)(typescript@5.9.3)': + dependencies: + '@tanstack/db': 0.6.13(typescript@5.9.3) + react: 19.2.5 + use-sync-external-store: 1.6.0(react@19.2.5) + transitivePeerDependencies: + - typescript + + '@tanstack/react-db@0.1.91(react@19.2.8)(typescript@5.9.3)': + dependencies: + '@tanstack/db': 0.6.13(typescript@5.9.3) + react: 19.2.8 + use-sync-external-store: 1.6.0(react@19.2.8) + transitivePeerDependencies: + - typescript + + '@tanstack/react-query@5.101.2(react@19.2.5)': + dependencies: + '@tanstack/query-core': 5.101.2 + react: 19.2.5 + + '@tanstack/react-query@5.101.2(react@19.2.8)': + dependencies: + '@tanstack/query-core': 5.101.2 + react: 19.2.8 + '@tanstack/react-query@5.99.1(react@19.2.5)': dependencies: '@tanstack/query-core': 5.99.1 @@ -9248,6 +19309,8 @@ snapshots: '@toon-format/toon@2.1.0': {} + '@toon-format/toon@2.3.0': {} + '@tootallnate/quickjs-emscripten@0.23.0': {} '@tybys/wasm-util@0.10.2': @@ -9268,18 +19331,81 @@ snapshots: '@types/deep-eql': 4.0.2 assertion-error: 2.0.1 + '@types/d3-array@3.2.2': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-chord@3.0.6': {} + '@types/d3-color@3.1.3': {} + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.2 + '@types/geojson': 7946.0.16 + + '@types/d3-delaunay@6.0.4': {} + + '@types/d3-dispatch@3.0.7': {} + '@types/d3-drag@3.0.7': dependencies: '@types/d3-selection': 3.0.11 + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.1': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/d3-hierarchy@3.1.7': {} + '@types/d3-interpolate@3.0.4': dependencies: '@types/d3-color': 3.1.3 + '@types/d3-path@3.1.1': {} + + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.4': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + '@types/d3-selection@3.0.11': {} + '@types/d3-shape@3.1.8': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + '@types/d3-transition@3.0.9': dependencies: '@types/d3-selection': 3.0.11 @@ -9289,6 +19415,39 @@ snapshots: '@types/d3-interpolate': 3.0.4 '@types/d3-selection': 3.0.11 + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.2 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.7 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.1 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.4 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.11 + '@types/d3-shape': 3.1.8 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + '@types/dagre@0.7.54': {} '@types/debug@4.1.13': @@ -9303,10 +19462,24 @@ snapshots: '@types/estree@1.0.8': {} + '@types/geojson@7946.0.16': {} + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 + '@types/hast@3.0.5': + dependencies: + '@types/unist': 3.0.3 + + '@types/katex@0.16.8': {} + + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.25 + + '@types/lodash@4.17.25': {} + '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 @@ -9346,10 +19519,15 @@ snapshots: '@types/retry@0.12.0': {} + '@types/trusted-types@2.0.7': + optional: true + '@types/unist@2.0.11': {} '@types/unist@3.0.3': {} + '@types/use-sync-external-store@0.0.6': {} + '@types/whatwg-mimetype@3.0.2': {} '@types/ws@8.18.1': @@ -9368,12 +19546,19 @@ snapshots: '@ungap/structured-clone@1.3.0': {} + '@upsetjs/venn.js@2.0.0': + optionalDependencies: + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + '@vectorize-io/hindsight-client@0.8.4': {} + '@vercel/oidc@3.2.0': {} - '@vitejs/plugin-react@6.0.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3))': + '@vitejs/plugin-react@6.0.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3) + vite: 8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0) '@vitest/expect@4.1.7': dependencies: @@ -9384,13 +19569,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.7(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3))': + '@vitest/mocker@4.1.7(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.7 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3) + vite: 8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0) '@vitest/pretty-format@4.1.7': dependencies: @@ -9416,6 +19601,62 @@ snapshots: convert-source-map: 2.0.0 tinyrainbow: 3.1.0 + '@vue/compiler-core@3.5.40': + dependencies: + '@babel/parser': 7.29.8 + '@vue/shared': 3.5.40 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.40': + dependencies: + '@vue/compiler-core': 3.5.40 + '@vue/shared': 3.5.40 + + '@vue/compiler-sfc@3.5.40': + dependencies: + '@babel/parser': 7.29.8 + '@vue/compiler-core': 3.5.40 + '@vue/compiler-dom': 3.5.40 + '@vue/compiler-ssr': 3.5.40 + '@vue/shared': 3.5.40 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.25 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.40': + dependencies: + '@vue/compiler-dom': 3.5.40 + '@vue/shared': 3.5.40 + + '@vue/reactivity@3.5.40': + dependencies: + '@vue/shared': 3.5.40 + + '@vue/runtime-core@3.5.40': + dependencies: + '@vue/reactivity': 3.5.40 + '@vue/shared': 3.5.40 + + '@vue/runtime-dom@3.5.40': + dependencies: + '@vue/reactivity': 3.5.40 + '@vue/runtime-core': 3.5.40 + '@vue/shared': 3.5.40 + csstype: 3.2.3 + + '@vue/server-renderer@3.5.40': + dependencies: + '@vue/compiler-ssr': 3.5.40 + '@vue/runtime-dom': 3.5.40 + '@vue/shared': 3.5.40 + + '@vue/shared@3.5.40': {} + + '@workflow/serde@4.1.0': {} + '@wterm/core@0.3.0': {} '@wterm/dom@0.3.0': @@ -9432,13 +19673,50 @@ snapshots: react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - '@xyflow/react@12.10.2(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@xterm/addon-fit@0.11.0': {} + + '@xterm/xterm@6.0.0': {} + + '@xyflow/react@12.10.2(@types/react@19.2.14)(immer@11.1.15)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@xyflow/system': 0.0.76 classcat: 5.0.5 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - zustand: 4.5.7(@types/react@19.2.14)(react@19.2.5) + zustand: 4.5.7(@types/react@19.2.14)(immer@11.1.15)(react@19.2.5) + transitivePeerDependencies: + - '@types/react' + - immer + + '@xyflow/react@12.10.2(@types/react@19.2.14)(immer@11.1.15)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)': + dependencies: + '@xyflow/system': 0.0.76 + classcat: 5.0.5 + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + zustand: 4.5.7(@types/react@19.2.14)(immer@11.1.15)(react@19.2.8) + transitivePeerDependencies: + - '@types/react' + - immer + + '@xyflow/react@12.10.2(@types/react@19.2.14)(immer@11.1.15)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)': + dependencies: + '@xyflow/system': 0.0.76 + classcat: 5.0.5 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + zustand: 4.5.7(@types/react@19.2.14)(immer@11.1.15)(react@19.2.8) + transitivePeerDependencies: + - '@types/react' + - immer + + '@xyflow/react@12.10.2(@types/react@19.2.14)(immer@11.1.15)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + dependencies: + '@xyflow/system': 0.0.76 + classcat: 5.0.5 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + zustand: 4.5.7(@types/react@19.2.14)(immer@11.1.15)(react@19.2.8) transitivePeerDependencies: - '@types/react' - immer @@ -9486,6 +19764,13 @@ snapshots: '@opentelemetry/api': 1.9.0 zod: 4.3.6 + ai@7.0.48(zod@4.4.3): + dependencies: + '@ai-sdk/gateway': 4.0.37(zod@4.4.3) + '@ai-sdk/provider': 4.0.4 + '@ai-sdk/provider-utils': 5.0.18(zod@4.4.3) + zod: 4.4.3 + ajv-formats@3.0.1(ajv@8.18.0): optionalDependencies: ajv: 8.18.0 @@ -9497,7 +19782,7 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - alchemy@0.93.11(@cloudflare/vite-plugin@1.39.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3))(workerd@1.20260601.1)(wrangler@4.97.0(@cloudflare/workers-types@4.20260604.1)))(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0)(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3))(workerd@1.20260601.1): + alchemy@0.93.11(@cloudflare/vite-plugin@1.39.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0))(workerd@1.20260601.1)(wrangler@4.97.0(@cloudflare/workers-types@4.20260604.1)))(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0)(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0))(workerd@1.20260601.1): dependencies: '@aws-sdk/credential-providers': 3.1061.0 '@cloudflare/unenv-preset': 2.7.7(unenv@2.0.0-rc.21)(workerd@1.20260601.1) @@ -9507,7 +19792,7 @@ snapshots: '@smithy/node-config-provider': 4.3.14 '@smithy/types': 4.14.3 aws4fetch: 1.0.20 - drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) env-paths: 3.0.0 esbuild: 0.25.12 execa: 9.6.1 @@ -9530,8 +19815,8 @@ snapshots: ws: 8.20.1 yaml: 2.8.3 optionalDependencies: - '@cloudflare/vite-plugin': 1.39.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3))(workerd@1.20260601.1)(wrangler@4.97.0(@cloudflare/workers-types@4.20260604.1)) - vite: 8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3) + '@cloudflare/vite-plugin': 1.39.2(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0))(workerd@1.20260601.1)(wrangler@4.97.0(@cloudflare/workers-types@4.20260604.1)) + vite: 8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0) transitivePeerDependencies: - '@aws-sdk/client-rds-data' - '@electric-sql/pglite' @@ -9576,6 +19861,10 @@ snapshots: any-promise@1.3.0: {} + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + assertion-error@2.0.1: {} ast-types@0.13.4: @@ -9617,6 +19906,10 @@ snapshots: dependencies: react: 19.2.5 + bippy@0.5.43(react@19.2.8): + dependencies: + react: 19.2.8 + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -9667,6 +19960,10 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 + bun-ffi-structs@0.2.4(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + bun-types@1.3.13: dependencies: '@types/node': 25.6.0 @@ -9725,6 +20022,10 @@ snapshots: ci-info@2.0.0: {} + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + classcat@5.0.5: {} cli-highlight@2.1.11: @@ -9754,6 +20055,18 @@ snapshots: transitivePeerDependencies: - encoding + clsx@2.1.1: {} + + codemirror@6.0.2: + dependencies: + '@codemirror/autocomplete': 6.20.3 + '@codemirror/commands': 6.10.4 + '@codemirror/language': 6.12.4 + '@codemirror/lint': 6.9.7 + '@codemirror/search': 6.7.1 + '@codemirror/state': 6.7.1 + '@codemirror/view': 6.43.7 + collapse-white-space@2.1.0: {} color-convert@2.0.1: @@ -9772,6 +20085,10 @@ snapshots: commander@4.1.1: {} + commander@7.2.0: {} + + commander@8.3.0: {} + concat-map@0.0.1: {} confbox@0.1.8: {} @@ -9799,10 +20116,24 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 + cose-base@1.0.3: + dependencies: + layout-base: 1.0.2 + + cose-base@2.2.0: + dependencies: + layout-base: 2.0.1 + + crelt@1.0.7: {} + cron-parser@5.5.0: dependencies: luxon: 3.7.2 + cron-parser@5.7.0: + dependencies: + luxon: 3.7.2 + cross-spawn-windows-exe@1.2.0: dependencies: '@malept/cross-spawn-promise': 1.1.1 @@ -9825,8 +20156,50 @@ snapshots: csstype@3.2.3: {} + cytoscape-cose-bilkent@4.1.0(cytoscape@3.34.0): + dependencies: + cose-base: 1.0.3 + cytoscape: 3.34.0 + + cytoscape-fcose@2.2.0(cytoscape@3.34.0): + dependencies: + cose-base: 2.2.0 + cytoscape: 3.34.0 + + cytoscape@3.34.0: {} + + d3-array@2.12.1: + dependencies: + internmap: 1.0.1 + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + d3-color@3.1.0: {} + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.1.0 + d3-dispatch@3.0.1: {} d3-drag@3.0.0: @@ -9834,14 +20207,82 @@ snapshots: d3-dispatch: 3.0.1 d3-selection: 3.0.0 + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + d3-ease@3.0.1: {} + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.2: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + d3-interpolate@3.0.1: dependencies: d3-color: 3.1.0 + d3-path@1.0.9: {} + + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-sankey@0.12.3: + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.2 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-selection@3.0.0: {} + d3-shape@1.3.7: + dependencies: + d3-path: 1.0.9 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + d3-timer@3.0.1: {} d3-transition@3.0.1(d3-selection@3.0.0): @@ -9861,6 +20302,44 @@ snapshots: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.2 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + + dagre-d3-es@7.0.14: + dependencies: + d3: 7.9.0 + lodash-es: 4.18.1 + dagre@0.8.5: dependencies: graphlib: 2.1.8 @@ -9870,10 +20349,14 @@ snapshots: data-uri-to-buffer@6.0.2: {} + dayjs@1.11.21: {} + debug@4.4.3: dependencies: ms: 2.1.3 + decimal.js-light@2.5.1: {} + decode-named-character-reference@1.3.0: dependencies: character-entities: 2.0.2 @@ -9901,6 +20384,10 @@ snapshots: escodegen: 2.1.0 esprima: 4.0.1 + delaunator@5.1.0: + dependencies: + robust-predicates: 3.0.3 + delayed-stream@1.0.0: {} depd@2.0.0: {} @@ -9909,6 +20396,8 @@ snapshots: detect-libc@2.1.2: {} + detect-node-es@1.1.0: {} + devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -9917,30 +20406,54 @@ snapshots: diff@9.0.0: {} - drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.21.0): + dompurify@3.4.12: + optionalDependencies: + '@types/trusted-types': 2.0.7 + + drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0): optionalDependencies: '@cloudflare/workers-types': 4.20260604.1 '@electric-sql/pglite': 0.5.1 '@opentelemetry/api': 1.9.0 '@types/better-sqlite3': 7.6.13 better-sqlite3: 11.10.0 - bun-types: 1.3.13 + bun-types: 1.3.14 pg: 8.21.0 - drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0): + drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0): optionalDependencies: '@cloudflare/workers-types': 4.20260604.1 - '@electric-sql/pglite': 0.5.1 + '@electric-sql/pglite': 0.5.4 + '@opentelemetry/api': 1.9.0 + '@types/better-sqlite3': 7.6.13 + better-sqlite3: 11.10.0 + bun-types: 1.3.13 + pg: 8.22.0 + + drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0): + optionalDependencies: + '@cloudflare/workers-types': 4.20260604.1 + '@electric-sql/pglite': 0.5.4 '@opentelemetry/api': 1.9.0 '@types/better-sqlite3': 7.6.13 better-sqlite3: 11.10.0 bun-types: 1.3.14 - pg: 8.21.0 + pg: 8.22.0 + + drizzle-zod@0.8.3(drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0))(zod@4.3.6): + dependencies: + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) + zod: 4.3.6 - drizzle-zod@0.8.3(drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0))(zod@4.3.6): + drizzle-zod@0.8.3(drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0))(zod@4.4.3): dependencies: drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.21.0) - zod: 4.3.6 + zod: 4.4.3 + + drizzle-zod@0.8.3(drizzle-orm@0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0))(zod@4.4.3): + dependencies: + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + zod: 4.4.3 dunder-proto@1.0.1: dependencies: @@ -9972,6 +20485,8 @@ snapshots: transitivePeerDependencies: - supports-color + emoji-regex@10.6.0: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -10005,6 +20520,8 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.3 + es-toolkit@1.50.0: {} + esast-util-from-estree@2.0.0: dependencies: '@types/estree-jsx': 1.0.5 @@ -10139,6 +20656,8 @@ snapshots: escape-html@1.0.3: {} + escape-string-regexp@5.0.0: {} + escodegen@2.1.0: dependencies: esprima: 4.0.1 @@ -10180,6 +20699,8 @@ snapshots: '@types/estree-jsx': 1.0.5 '@types/unist': 3.0.3 + estree-walker@2.0.2: {} + estree-walker@3.0.3: dependencies: '@types/estree': 1.0.8 @@ -10190,8 +20711,12 @@ snapshots: event-target-shim@5.0.1: {} + eventemitter3@5.0.4: {} + eventsource-parser@3.0.7: {} + eventsource-parser@3.1.0: {} + eventsource@3.0.7: dependencies: eventsource-parser: 3.0.7 @@ -10277,8 +20802,18 @@ snapshots: fast-json-patch@3.1.1: {} + fast-string-truncated-width@3.0.3: {} + + fast-string-width@3.0.2: + dependencies: + fast-string-truncated-width: 3.0.3 + fast-uri@3.1.0: {} + fast-wrap-ansi@0.2.2: + dependencies: + fast-string-width: 3.0.2 + fast-xml-builder@1.1.5: dependencies: path-expression-matcher: 1.5.0 @@ -10389,6 +20924,8 @@ snapshots: forwarded@0.2.0: {} + fractional-indexing@3.4.0: {} + fresh@2.0.0: {} fs-constants@1.0.0: {} @@ -10443,6 +20980,8 @@ snapshots: hasown: 2.0.3 math-intrinsics: 1.1.0 + get-nonce@1.0.1: {} + get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 @@ -10512,6 +21051,8 @@ snapshots: dependencies: lodash: 4.18.1 + hachure-fill@0.5.2: {} + happy-dom@20.9.0: dependencies: '@types/node': 25.6.0 @@ -10557,6 +21098,20 @@ snapshots: transitivePeerDependencies: - supports-color + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + hast-util-to-jsx-runtime@2.3.6: dependencies: '@types/estree': 1.0.8 @@ -10585,10 +21140,14 @@ snapshots: hono@4.12.14: {} + hono@4.12.33: {} + hosted-git-info@9.0.2: dependencies: lru-cache: 11.3.5 + html-void-elements@3.0.0: {} + http-errors@2.0.1: dependencies: depd: 2.0.0 @@ -10617,6 +21176,10 @@ snapshots: dependencies: ms: 2.1.3 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 @@ -10627,6 +21190,10 @@ snapshots: immediate@3.0.6: {} + immer@11.1.15: {} + + import-meta-resolve@4.2.0: {} + incur@0.4.1: dependencies: '@cfworker/json-schema': 4.1.1 @@ -10636,6 +21203,16 @@ snapshots: yaml: 2.8.3 zod: 4.3.6 + incur@0.4.26: + dependencies: + '@cfworker/json-schema': 4.1.1 + '@modelcontextprotocol/server': 2.0.0-alpha.4 + '@scalar/openapi-types': 0.8.0 + '@toon-format/toon': 2.3.0 + tokenx: 1.3.0 + yaml: 2.9.0 + zod: 4.3.6 + inflight@1.0.6: dependencies: once: 1.4.0 @@ -10647,6 +21224,10 @@ snapshots: inline-style-parser@0.2.7: {} + internmap@1.0.1: {} + + internmap@2.0.3: {} + ip-address@10.1.0: {} ipaddr.js@1.9.1: {} @@ -10757,6 +21338,16 @@ snapshots: jwa: 2.0.1 safe-buffer: 5.2.1 + katex@0.16.47: + dependencies: + commander: 8.3.0 + + katex@0.17.0: + dependencies: + commander: 8.3.0 + + khroma@2.1.0: {} + klaw-sync@6.0.0: dependencies: graceful-fs: 4.2.11 @@ -10768,6 +21359,10 @@ snapshots: kubernetes-types@1.30.0: {} + layout-base@1.0.2: {} + + layout-base@2.0.1: {} + libsodium-wrappers@0.8.4: dependencies: libsodium: 0.8.4 @@ -10833,6 +21428,8 @@ snapshots: load-tsconfig@0.2.5: {} + lodash-es@4.18.1: {} + lodash@4.18.1: {} loglevel@1.9.2: {} @@ -10851,6 +21448,8 @@ snapshots: lru-cache@7.18.3: {} + lru_map@0.4.1: {} + luxon@3.7.2: {} magic-string@0.30.21: @@ -10859,10 +21458,29 @@ snapshots: markdown-extensions@2.0.0: {} + markdown-table@3.0.4: {} + marked@15.0.12: {} + marked@16.4.2: {} + + marked@17.0.1: {} + math-intrinsics@1.1.0: {} + mdast-util-definitions@6.0.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + unist-util-visit: 5.1.0 + + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.1 + unist-util-visit-parents: 6.0.2 + mdast-util-from-markdown@2.0.3: dependencies: '@types/mdast': 4.0.4 @@ -10880,6 +21498,75 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.3 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-math@3.0.0: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + devlop: 1.1.0 + longest-streak: 3.1.0 + mdast-util-from-markdown: 2.0.3 + mdast-util-to-markdown: 2.1.2 + unist-util-remove-position: 5.0.0 + transitivePeerDependencies: + - supports-color + mdast-util-mdx-expression@2.0.1: dependencies: '@types/estree-jsx': 1.0.5 @@ -10966,6 +21653,30 @@ snapshots: merge-descriptors@2.0.0: {} + mermaid@11.16.0: + dependencies: + '@braintree/sanitize-url': 7.1.2 + '@iconify/utils': 3.1.4 + '@mermaid-js/parser': 1.2.0 + '@types/d3': 7.4.3 + '@upsetjs/venn.js': 2.0.0 + cytoscape: 3.34.0 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.34.0) + cytoscape-fcose: 2.2.0(cytoscape@3.34.0) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.14 + dayjs: 1.11.21 + dompurify: 3.4.12 + es-toolkit: 1.50.0 + katex: 0.16.47 + khroma: 2.1.0 + marked: 16.4.2 + roughjs: 4.6.6 + stylis: 4.4.0 + ts-dedent: 2.3.0 + uuid: 14.0.0 + micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.3.0 @@ -10985,6 +21696,74 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-math@3.1.0: + dependencies: + '@types/katex': 0.16.8 + devlop: 1.1.0 + katex: 0.16.47 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + micromark-extension-mdx-expression@3.0.1: dependencies: '@types/estree': 1.0.8 @@ -11268,6 +22047,10 @@ snapshots: nanoid@3.3.12: {} + nanoid@3.3.16: {} + + nanoid@5.1.16: {} + napi-build-utils@2.0.0: {} negotiator@1.0.0: {} @@ -11330,6 +22113,14 @@ snapshots: dependencies: wrappy: 1.0.2 + oniguruma-parser@0.12.2: {} + + oniguruma-to-es@4.3.6: + dependencies: + oniguruma-parser: 0.12.2 + regex: 6.1.0 + regex-recursion: 6.0.2 + open@10.2.0: dependencies: default-browser: 5.5.0 @@ -11347,13 +22138,15 @@ snapshots: ws: 8.20.0 zod: 4.3.6 - openai@6.26.0(ws@8.20.1)(zod@4.3.6): + openai@6.26.0(ws@8.21.1)(zod@4.4.3): optionalDependencies: - ws: 8.20.1 - zod: 4.3.6 + ws: 8.21.1 + zod: 4.4.3 openapi-types@12.1.3: {} + orderedmap@2.1.1: {} + os-tmpdir@1.0.2: {} oxlint@1.60.0: @@ -11403,6 +22196,8 @@ snapshots: package-json-from-dist@1.0.1: {} + package-manager-detector@1.8.0: {} + pako@1.0.11: {} parse-entities@4.0.2: @@ -11446,6 +22241,8 @@ snapshots: tmp: 0.0.33 yaml: 1.10.3 + path-data-parser@0.1.0: {} + path-expression-matcher@1.5.0: {} path-is-absolute@1.0.1: {} @@ -11479,14 +22276,25 @@ snapshots: pg-connection-string@2.13.0: {} + pg-connection-string@2.14.0: + optional: true + pg-int8@1.0.1: {} pg-pool@3.14.0(pg@8.21.0): dependencies: pg: 8.21.0 + pg-pool@3.14.0(pg@8.22.0): + dependencies: + pg: 8.22.0 + optional: true + pg-protocol@1.14.0: {} + pg-protocol@1.15.0: + optional: true + pg-types@2.2.0: dependencies: pg-int8: 1.0.1 @@ -11505,6 +22313,17 @@ snapshots: optionalDependencies: pg-cloudflare: 1.4.0 + pg@8.22.0: + dependencies: + pg-connection-string: 2.14.0 + pg-pool: 3.14.0(pg@8.22.0) + pg-protocol: 1.15.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.4.0 + optional: true + pgpass@1.0.5: dependencies: split2: 4.2.0 @@ -11541,11 +22360,18 @@ snapshots: pngjs@6.0.0: {} - postcss-load-config@6.0.1(postcss@8.5.15)(tsx@4.22.4)(yaml@2.8.3): + points-on-curve@0.2.0: {} + + points-on-path@0.2.1: + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + + postcss-load-config@6.0.1(postcss@8.5.25)(tsx@4.22.4)(yaml@2.8.3): dependencies: lilconfig: 3.1.3 optionalDependencies: - postcss: 8.5.15 + postcss: 8.5.25 tsx: 4.22.4 yaml: 2.8.3 @@ -11555,6 +22381,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.25: + dependencies: + nanoid: 3.3.16 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postgres-array@2.0.0: {} postgres-bytea@1.0.1: {} @@ -11600,6 +22432,98 @@ snapshots: property-information@7.1.0: {} + prosemirror-changeset@2.4.1: + dependencies: + prosemirror-transform: 1.12.0 + + prosemirror-commands@1.7.1: + dependencies: + prosemirror-model: 1.25.11 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + + prosemirror-drop-indicator@0.1.4: + dependencies: + '@ocavue/utils': 1.7.0 + prosemirror-model: 1.25.11 + prosemirror-state: 1.4.4 + prosemirror-view: 1.42.2 + + prosemirror-dropcursor@1.8.3: + dependencies: + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + prosemirror-view: 1.42.2 + + prosemirror-gapcursor@1.4.1: + dependencies: + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.11 + prosemirror-state: 1.4.4 + prosemirror-view: 1.42.2 + + prosemirror-history@1.5.0: + dependencies: + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + prosemirror-view: 1.42.2 + rope-sequence: 1.3.4 + + prosemirror-inputrules@1.5.1: + dependencies: + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + + prosemirror-keymap@1.2.3: + dependencies: + prosemirror-state: 1.4.4 + w3c-keyname: 2.2.8 + + prosemirror-model@1.25.11: + dependencies: + orderedmap: 2.1.1 + + prosemirror-safari-ime-span@1.0.2: + dependencies: + prosemirror-state: 1.4.4 + prosemirror-view: 1.42.2 + + prosemirror-schema-list@1.5.1: + dependencies: + prosemirror-model: 1.25.11 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + + prosemirror-state@1.4.4: + dependencies: + prosemirror-model: 1.25.11 + prosemirror-transform: 1.12.0 + prosemirror-view: 1.42.2 + + prosemirror-tables@1.8.5: + dependencies: + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.11 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + prosemirror-view: 1.42.2 + + prosemirror-transform@1.12.0: + dependencies: + prosemirror-model: 1.25.11 + + prosemirror-view@1.42.2: + dependencies: + prosemirror-model: 1.25.11 + prosemirror-state: 1.4.4 + prosemirror-transform: 1.12.0 + + prosemirror-virtual-cursor@0.4.2(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2): + optionalDependencies: + prosemirror-model: 1.25.11 + prosemirror-state: 1.4.4 + prosemirror-view: 1.42.2 + protobufjs@7.5.5: dependencies: '@protobufjs/aspromise': 1.1.2 @@ -11646,6 +22570,195 @@ snapshots: dependencies: side-channel: 1.1.0 + radix-ui@1.6.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8): + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-accessible-icon': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-accordion': 1.2.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-alert-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-aspect-ratio': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-avatar': 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-checkbox': 1.3.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context-menu': 2.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-dropdown-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-form': 0.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-hover-card': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-label': 2.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-menubar': 1.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-navigation-menu': 1.2.22(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-one-time-password-field': 0.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-password-toggle-field': 0.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-popover': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-progress': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-radio-group': 1.4.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-scroll-area': 1.2.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-select': 2.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-slider': 1.4.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-switch': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-tabs': 1.1.21(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-toast': 1.2.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-toolbar': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-tooltip': 1.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-escape-keydown': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + radix-ui@1.6.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8): + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-accessible-icon': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-accordion': 1.2.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-alert-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-aspect-ratio': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-avatar': 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-checkbox': 1.3.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context-menu': 2.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-dropdown-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-form': 0.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-hover-card': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-label': 2.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-menubar': 1.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-navigation-menu': 1.2.22(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-one-time-password-field': 0.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-password-toggle-field': 0.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-popover': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-progress': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-radio-group': 1.4.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-scroll-area': 1.2.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-select': 2.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-slider': 1.4.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-switch': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-tabs': 1.1.21(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-toast': 1.2.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-toolbar': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-tooltip': 1.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-escape-keydown': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + + radix-ui@1.6.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + dependencies: + '@radix-ui/primitive': 1.1.7 + '@radix-ui/react-accessible-icon': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-accordion': 1.2.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-alert-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-aspect-ratio': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-avatar': 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-checkbox': 1.3.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-context-menu': 2.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-dropdown-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-form': 0.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-hover-card': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-label': 2.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-menubar': 1.1.24(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-navigation-menu': 1.2.22(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-one-time-password-field': 0.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-password-toggle-field': 0.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-popover': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-progress': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-radio-group': 1.4.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-scroll-area': 1.2.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-select': 2.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slider': 1.4.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-switch': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-tabs': 1.1.21(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toast': 1.2.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-toolbar': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-tooltip': 1.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-escape-keydown': 1.1.5(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + '@types/react-dom': 19.2.3(@types/react@19.2.14) + range-parser@1.2.1: {} raw-body@3.0.2: @@ -11666,11 +22779,29 @@ snapshots: dependencies: cross-spawn-windows-exe: 1.2.0 - react-dom@19.2.5(react@19.2.5): + react-devtools-core@7.0.1: + dependencies: + shell-quote: 1.10.0 + ws: 7.5.13 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + react-dom@19.2.5(react@19.2.5): + dependencies: + react: 19.2.5 + scheduler: 0.27.0 + + react-dom@19.2.8(react@19.2.5): dependencies: react: 19.2.5 scheduler: 0.27.0 + react-dom@19.2.8(react@19.2.8): + dependencies: + react: 19.2.8 + scheduler: 0.27.0 + react-is@16.13.1: {} react-reconciler@0.25.1(react@16.13.1): @@ -11686,6 +22817,57 @@ snapshots: react: 19.2.5 scheduler: 0.27.0 + react-reconciler@0.33.0(react@19.2.8): + dependencies: + react: 19.2.8 + scheduler: 0.27.0 + + react-redux@9.3.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1): + dependencies: + '@types/use-sync-external-store': 0.0.6 + react: 19.2.5 + use-sync-external-store: 1.6.0(react@19.2.5) + optionalDependencies: + '@types/react': 19.2.14 + redux: 5.0.1 + optional: true + + react-redux@9.3.0(@types/react@19.2.14)(react@19.2.8)(redux@5.0.1): + dependencies: + '@types/use-sync-external-store': 0.0.6 + react: 19.2.8 + use-sync-external-store: 1.6.0(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + redux: 5.0.1 + + react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.8): + dependencies: + react: 19.2.8 + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.8) + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.2.8): + dependencies: + react: 19.2.8 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.8) + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.8) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.8) + use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + + react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.8): + dependencies: + get-nonce: 1.0.1 + react: 19.2.8 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + react@16.13.1: dependencies: loose-envify: 1.4.0 @@ -11694,6 +22876,8 @@ snapshots: react@19.2.5: {} + react@19.2.8: {} + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -11712,6 +22896,66 @@ snapshots: readdirp@4.1.2: {} + recharts@3.10.1(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1): + dependencies: + '@reduxjs/toolkit': 2.12.0(react-redux@9.3.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1))(react@19.2.8) + clsx: 2.1.1 + decimal.js-light: 2.5.1 + es-toolkit: 1.50.0 + eventemitter3: 5.0.4 + immer: 11.1.15 + react: 19.2.8 + react-dom: 19.2.5(react@19.2.5) + react-is: 16.13.1 + react-redux: 9.3.0(@types/react@19.2.14)(react@19.2.8)(redux@5.0.1) + reselect: 5.2.0 + tiny-invariant: 1.3.3 + use-sync-external-store: 1.6.0(react@19.2.8) + victory-vendor: 37.3.6 + transitivePeerDependencies: + - '@types/react' + - redux + + recharts@3.10.1(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.5))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1): + dependencies: + '@reduxjs/toolkit': 2.12.0(react-redux@9.3.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1))(react@19.2.8) + clsx: 2.1.1 + decimal.js-light: 2.5.1 + es-toolkit: 1.50.0 + eventemitter3: 5.0.4 + immer: 11.1.15 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.5) + react-is: 16.13.1 + react-redux: 9.3.0(@types/react@19.2.14)(react@19.2.8)(redux@5.0.1) + reselect: 5.2.0 + tiny-invariant: 1.3.3 + use-sync-external-store: 1.6.0(react@19.2.8) + victory-vendor: 37.3.6 + transitivePeerDependencies: + - '@types/react' + - redux + + recharts@3.10.1(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1): + dependencies: + '@reduxjs/toolkit': 2.12.0(react-redux@9.3.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1))(react@19.2.8) + clsx: 2.1.1 + decimal.js-light: 2.5.1 + es-toolkit: 1.50.0 + eventemitter3: 5.0.4 + immer: 11.1.15 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + react-is: 16.13.1 + react-redux: 9.3.0(@types/react@19.2.14)(react@19.2.8)(redux@5.0.1) + reselect: 5.2.0 + tiny-invariant: 1.3.3 + use-sync-external-store: 1.6.0(react@19.2.8) + victory-vendor: 37.3.6 + transitivePeerDependencies: + - '@types/react' + - redux + recma-build-jsx@1.0.0: dependencies: '@types/estree': 1.0.8 @@ -11741,6 +22985,22 @@ snapshots: unified: 11.0.5 vfile: 6.0.3 + redux-thunk@3.1.0(redux@5.0.1): + dependencies: + redux: 5.0.1 + + redux@5.0.1: {} + + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.1.0: + dependencies: + regex-utilities: 2.3.0 + rehype-recma@1.0.0: dependencies: '@types/estree': 1.0.8 @@ -11749,6 +23009,32 @@ snapshots: transitivePeerDependencies: - supports-color + remark-gfm@4.0.1: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-inline-links@7.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-definitions: 6.0.0 + unist-util-visit: 5.1.0 + + remark-math@6.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-math: 3.0.0 + micromark-extension-math: 3.1.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + remark-mdx@3.1.1: dependencies: mdast-util-mdx: 3.0.0 @@ -11773,10 +23059,27 @@ snapshots: unified: 11.0.5 vfile: 6.0.3 + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.2 + unified: 11.0.5 + + remark@15.0.1: + dependencies: + '@types/mdast': 4.0.4 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + require-directory@2.1.1: {} require-from-string@2.0.2: {} + reselect@5.2.0: {} + resolve-from@5.0.0: {} retry@0.12.0: {} @@ -11787,6 +23090,8 @@ snapshots: dependencies: glob: 7.2.3 + robust-predicates@3.0.3: {} + rolldown@1.0.2: dependencies: '@oxc-project/types': 0.132.0 @@ -11839,6 +23144,15 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.60.2 fsevents: 2.3.3 + rope-sequence@1.3.4: {} + + roughjs@4.6.6: + dependencies: + hachure-fill: 0.5.2 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 + router@2.2.0: dependencies: debug: 4.4.3 @@ -11851,6 +23165,8 @@ snapshots: run-applescript@7.1.0: {} + rw@1.3.3: {} + safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} @@ -11946,6 +23262,19 @@ snapshots: shebang-regex@3.0.0: {} + shell-quote@1.10.0: {} + + shiki@4.4.1: + dependencies: + '@shikijs/core': 4.4.1 + '@shikijs/engine-javascript': 4.4.1 + '@shikijs/engine-oniguruma': 4.4.1 + '@shikijs/langs': 4.4.1 + '@shikijs/themes': 4.4.1 + '@shikijs/types': 4.4.1 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + side-channel-list@1.0.1: dependencies: es-errors: 1.3.0 @@ -11994,6 +23323,393 @@ snapshots: smart-buffer@4.2.0: {} + smthrs@0.33.0(3d47cf8b07e70894a63ab5b0b7edc291): + dependencies: + '@mdx-js/esbuild': 3.1.1(esbuild@0.28.0) + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/aws': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/cli': 0.33.0(5133c386ac03d5580b19d905f9b68412) + '@smthrs/cloudflare': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/control-plane': 0.33.0 + '@smthrs/daytona': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/engine': 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/errors': 0.33.0 + '@smthrs/gateway-client': 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.8)(typescript@5.9.3) + '@smthrs/gateway-react': 0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.8(react@19.2.5))(react@19.2.8)(typescript@5.9.3) + '@smthrs/gateway-ui': 0.33.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(@shikijs/themes@4.4.1)(@tanstack/query-core@5.101.2)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(immer@11.1.15)(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(react-dom@19.2.8(react@19.2.5))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1)(typescript@5.9.3) + '@smthrs/gcp': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/memory': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/microsandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/openapi': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/scorers': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/server': 0.33.0(93b66ce10cabb9c10d3fc395cfa203e8) + '@smthrs/telegram': 0.33.0 + '@smthrs/testing': 0.33.0(93b66ce10cabb9c10d3fc395cfa203e8) + '@smthrs/time-travel': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/tool-context': 0.33.0 + '@smthrs/ui': 0.33.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(@shikijs/themes@4.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(react-dom@19.2.8(react@19.2.5))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1)(typescript@5.9.3) + '@smthrs/vcs': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/vercel': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/xstate': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + ai: 7.0.48(zod@4.4.3) + diff: 9.0.0 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + effect: 3.21.1 + incur: 0.4.26 + react: 19.2.8 + zod: 4.4.3 + optionalDependencies: + '@electric-sql/pglite': 0.5.4 + '@electric-sql/pglite-socket': 0.2.7(@electric-sql/pglite-age@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_hashids@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_ivm@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_textsearch@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_uuidv7@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pgtap@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pgvector@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite@0.5.4) + pg: 8.22.0 + transitivePeerDependencies: + - '@aws-sdk/client-cloudwatch-logs' + - '@aws-sdk/client-codebuild' + - '@aws-sdk/client-ecs' + - '@aws-sdk/client-rds-data' + - '@aws-sdk/client-s3' + - '@cfworker/json-schema' + - '@cloudflare/sandbox' + - '@cloudflare/workers-types' + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@daytonaio/sdk' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@google-cloud/run' + - '@google-cloud/storage' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@shikijs/themes' + - '@tanstack/query-core' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/react-dom' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@vercel/sandbox' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - esbuild + - expo-sqlite + - gel + - immer + - knex + - koffi + - kysely + - microsandbox + - mysql2 + - pg-native + - playwright + - postgres + - prisma + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react-devtools-core + - react-dom + - react-is + - redux + - sql.js + - sqlite3 + - supports-color + - typescript + - use-sync-external-store + - utf-8-validate + - web-tree-sitter + - ws + - xstate + + smthrs@0.33.0(9304875a6b8dc177c5e141719530354a): + dependencies: + '@mdx-js/esbuild': 3.1.1(esbuild@0.27.7) + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/aws': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/cli': 0.33.0(d2237bd59aae63d5da93fabc6c021679) + '@smthrs/cloudflare': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/control-plane': 0.33.0 + '@smthrs/daytona': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/engine': 0.33.0(2bd4a45a89215b1f4c1f82b421f3ab0a) + '@smthrs/errors': 0.33.0 + '@smthrs/gateway-client': 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.8)(typescript@5.9.3) + '@smthrs/gateway-react': 0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.8)(typescript@5.9.3) + '@smthrs/gateway-ui': 0.33.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(@shikijs/themes@4.4.1)(@tanstack/query-core@5.101.2)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(immer@11.1.15)(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(react-dom@19.2.5(react@19.2.5))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1)(typescript@5.9.3) + '@smthrs/gcp': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/memory': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/microsandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/openapi': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/scorers': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/server': 0.33.0(12a1814c31fccbb15dacb15fd445f471) + '@smthrs/telegram': 0.33.0 + '@smthrs/testing': 0.33.0(12a1814c31fccbb15dacb15fd445f471) + '@smthrs/time-travel': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/tool-context': 0.33.0 + '@smthrs/ui': 0.33.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(@shikijs/themes@4.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(react-dom@19.2.5(react@19.2.5))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1)(typescript@5.9.3) + '@smthrs/vcs': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/vercel': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + '@smthrs/xstate': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + ai: 7.0.48(zod@4.4.3) + diff: 9.0.0 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.13)(pg@8.22.0) + effect: 3.21.1 + incur: 0.4.26 + react: 19.2.8 + zod: 4.4.3 + optionalDependencies: + '@electric-sql/pglite': 0.5.4 + '@electric-sql/pglite-socket': 0.2.7(@electric-sql/pglite-age@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_hashids@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_ivm@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_textsearch@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_uuidv7@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pgtap@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pgvector@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite@0.5.4) + pg: 8.22.0 + transitivePeerDependencies: + - '@aws-sdk/client-cloudwatch-logs' + - '@aws-sdk/client-codebuild' + - '@aws-sdk/client-ecs' + - '@aws-sdk/client-rds-data' + - '@aws-sdk/client-s3' + - '@cfworker/json-schema' + - '@cloudflare/sandbox' + - '@cloudflare/workers-types' + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@daytonaio/sdk' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@google-cloud/run' + - '@google-cloud/storage' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@shikijs/themes' + - '@tanstack/query-core' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/react-dom' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@vercel/sandbox' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - esbuild + - expo-sqlite + - gel + - immer + - knex + - koffi + - kysely + - microsandbox + - mysql2 + - pg-native + - playwright + - postgres + - prisma + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react-devtools-core + - react-dom + - react-is + - redux + - sql.js + - sqlite3 + - supports-color + - typescript + - use-sync-external-store + - utf-8-validate + - web-tree-sitter + - ws + - xstate + + smthrs@0.33.0(f6a5d034f82bcd1c1f4566f49e131737): + dependencies: + '@mdx-js/esbuild': 3.1.1(esbuild@0.28.0) + '@smthrs/agents': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/aws': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/cli': 0.33.0(2f30f8c226a283acd49cffe2746e884b) + '@smthrs/cloudflare': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/components': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/control-plane': 0.33.0 + '@smthrs/daytona': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/db': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/driver': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/engine': 0.33.0(60007bcb2a02c50ce9e6f03f9bf69b6e) + '@smthrs/errors': 0.33.0 + '@smthrs/gateway-client': 0.33.0(@tanstack/query-core@5.101.2)(react@19.2.8)(typescript@5.9.3) + '@smthrs/gateway-react': 0.33.0(@tanstack/query-core@5.101.2)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@5.9.3) + '@smthrs/gateway-ui': 0.33.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(@shikijs/themes@4.4.1)(@tanstack/query-core@5.101.2)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(immer@11.1.15)(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(react-dom@19.2.8(react@19.2.8))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1)(typescript@5.9.3) + '@smthrs/gcp': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/graph': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/memory': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/microsandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/observability': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/openapi': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/react-reconciler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/sandbox': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/scheduler': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/scorers': 0.33.0(@cfworker/json-schema@4.1.1)(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/server': 0.33.0(93b66ce10cabb9c10d3fc395cfa203e8) + '@smthrs/telegram': 0.33.0 + '@smthrs/testing': 0.33.0(93b66ce10cabb9c10d3fc395cfa203e8) + '@smthrs/time-travel': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/tool-context': 0.33.0 + '@smthrs/ui': 0.33.0(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.7)(@shikijs/themes@4.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.11)(prosemirror-state@1.4.4)(prosemirror-view@1.42.2)(react-dom@19.2.8(react@19.2.8))(react-is@16.13.1)(react@19.2.8)(redux@5.0.1)(typescript@5.9.3) + '@smthrs/vcs': 0.33.0(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0) + '@smthrs/vercel': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + '@smthrs/xstate': 0.33.0(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api-logs@0.214.0)(@opentelemetry/api@1.9.0)(@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.214.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-node@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-web@2.6.1(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.40.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + ai: 7.0.48(zod@4.4.3) + diff: 9.0.0 + drizzle-orm: 0.45.2(@cloudflare/workers-types@4.20260604.1)(@electric-sql/pglite@0.5.4)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(bun-types@1.3.14)(pg@8.22.0) + effect: 3.21.1 + incur: 0.4.26 + react: 19.2.8 + zod: 4.4.3 + optionalDependencies: + '@electric-sql/pglite': 0.5.4 + '@electric-sql/pglite-socket': 0.2.7(@electric-sql/pglite-age@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_hashids@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_ivm@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_textsearch@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pg_uuidv7@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pgtap@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite-pgvector@0.0.2(@electric-sql/pglite@0.5.4))(@electric-sql/pglite@0.5.4) + pg: 8.22.0 + transitivePeerDependencies: + - '@aws-sdk/client-cloudwatch-logs' + - '@aws-sdk/client-codebuild' + - '@aws-sdk/client-ecs' + - '@aws-sdk/client-rds-data' + - '@aws-sdk/client-s3' + - '@cfworker/json-schema' + - '@cloudflare/sandbox' + - '@cloudflare/workers-types' + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + - '@daytonaio/sdk' + - '@electric-sql/pglite-age' + - '@electric-sql/pglite-pg_hashids' + - '@electric-sql/pglite-pg_ivm' + - '@electric-sql/pglite-pg_textsearch' + - '@electric-sql/pglite-pg_uuidv7' + - '@electric-sql/pglite-pgtap' + - '@electric-sql/pglite-pgvector' + - '@google-cloud/run' + - '@google-cloud/storage' + - '@libsql/client' + - '@libsql/client-wasm' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@opentelemetry/api-logs' + - '@opentelemetry/resources' + - '@opentelemetry/sdk-logs' + - '@opentelemetry/sdk-metrics' + - '@opentelemetry/sdk-trace-base' + - '@opentelemetry/sdk-trace-node' + - '@opentelemetry/sdk-trace-web' + - '@opentelemetry/semantic-conventions' + - '@planetscale/database' + - '@prisma/client' + - '@shikijs/themes' + - '@tanstack/query-core' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/react-dom' + - '@types/sql.js' + - '@upstash/redis' + - '@vercel/postgres' + - '@vercel/sandbox' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - esbuild + - expo-sqlite + - gel + - immer + - knex + - koffi + - kysely + - microsandbox + - mysql2 + - pg-native + - playwright + - postgres + - prisma + - prosemirror-model + - prosemirror-state + - prosemirror-view + - react-devtools-core + - react-dom + - react-is + - redux + - sql.js + - sqlite3 + - supports-color + - typescript + - use-sync-external-store + - utf-8-validate + - web-tree-sitter + - ws + - xstate + socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.4 @@ -12007,6 +23723,8 @@ snapshots: ip-address: 10.1.0 smart-buffer: 4.2.0 + sorted-btree@1.8.1: {} + source-map-js@1.2.1: {} source-map@0.6.1: @@ -12038,6 +23756,12 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.2.0 + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.5.0 + strip-ansi: 7.2.0 + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -12055,6 +23779,10 @@ snapshots: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.1.2: + dependencies: + ansi-regex: 6.2.2 + strip-ansi@7.2.0: dependencies: ansi-regex: 6.2.2 @@ -12069,6 +23797,8 @@ snapshots: dependencies: '@tokenizer/token': 0.3.0 + style-mod@4.1.3: {} + style-to-js@1.1.21: dependencies: style-to-object: 1.0.14 @@ -12077,6 +23807,8 @@ snapshots: dependencies: inline-style-parser: 0.2.7 + stylis@4.4.0: {} + sucrase@3.35.1: dependencies: '@jridgewell/gen-mapping': 0.3.13 @@ -12118,6 +23850,8 @@ snapshots: three@0.165.0: {} + tiny-invariant@1.3.3: {} + tinybench@2.9.0: {} tinyexec@0.3.2: {} @@ -12159,11 +23893,13 @@ snapshots: ts-algebra@2.0.0: {} + ts-dedent@2.3.0: {} + ts-interface-checker@0.1.13: {} tslib@2.8.1: {} - tsup@8.5.1(postcss@8.5.15)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.8.3): + tsup@8.5.1(postcss@8.5.25)(tsx@4.22.4)(typescript@5.9.3)(yaml@2.8.3): dependencies: bundle-require: 5.1.0(esbuild@0.27.7) cac: 6.7.14 @@ -12174,7 +23910,7 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(postcss@8.5.15)(tsx@4.22.4)(yaml@2.8.3) + postcss-load-config: 6.0.1(postcss@8.5.25)(tsx@4.22.4)(yaml@2.8.3) resolve-from: 5.0.0 rollup: 4.60.2 source-map: 0.7.6 @@ -12183,7 +23919,7 @@ snapshots: tinyglobby: 0.2.16 tree-kill: 1.2.2 optionalDependencies: - postcss: 8.5.15 + postcss: 8.5.25 typescript: 5.9.3 transitivePeerDependencies: - jiti @@ -12213,6 +23949,8 @@ snapshots: typescript@5.9.3: {} + typescript@6.0.3: {} + ufo@1.6.3: {} uint8array-extras@1.5.0: {} @@ -12225,6 +23963,8 @@ snapshots: undici@7.25.0: {} + undici@7.29.0: {} + unenv@2.0.0-rc.21: dependencies: defu: 6.1.7 @@ -12261,6 +24001,11 @@ snapshots: dependencies: '@types/unist': 3.0.3 + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-visit: 5.1.0 + unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.3 @@ -12282,10 +24027,29 @@ snapshots: unpipe@1.0.0: {} + use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.8): + dependencies: + react: 19.2.8 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + + use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.8): + dependencies: + detect-node-es: 1.1.0 + react: 19.2.8 + tslib: 2.8.1 + optionalDependencies: + '@types/react': 19.2.14 + use-sync-external-store@1.6.0(react@19.2.5): dependencies: react: 19.2.5 + use-sync-external-store@1.6.0(react@19.2.8): + dependencies: + react: 19.2.8 + util-deprecate@1.0.2: {} uuid@11.1.0: {} @@ -12304,7 +24068,24 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3): + victory-vendor@37.3.6: + dependencies: + '@types/d3-array': 3.2.2 + '@types/d3-ease': 3.0.2 + '@types/d3-interpolate': 3.0.4 + '@types/d3-scale': 4.0.9 + '@types/d3-shape': 3.1.8 + '@types/d3-time': 3.0.4 + '@types/d3-timer': 3.0.2 + d3-array: 3.2.4 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-scale: 4.0.2 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-timer: 3.0.1 + + vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -12316,12 +24097,12 @@ snapshots: esbuild: 0.28.0 fsevents: 2.3.3 tsx: 4.22.4 - yaml: 2.8.3 + yaml: 2.9.0 - vitest@4.1.7(@opentelemetry/api@1.9.0)(@types/node@25.6.0)(happy-dom@20.9.0)(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3)): + vitest@4.1.7(@opentelemetry/api@1.9.0)(@types/node@25.6.0)(happy-dom@20.9.0)(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.7 - '@vitest/mocker': 4.1.7(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3)) + '@vitest/mocker': 4.1.7(vite@8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.7 '@vitest/runner': 4.1.7 '@vitest/snapshot': 4.1.7 @@ -12338,7 +24119,7 @@ snapshots: tinyexec: 1.2.2 tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.8.3) + vite: 8.0.14(@types/node@25.6.0)(esbuild@0.28.0)(tsx@4.22.4)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -12347,10 +24128,24 @@ snapshots: transitivePeerDependencies: - msw + vue@3.5.40(typescript@5.9.3): + dependencies: + '@vue/compiler-dom': 3.5.40 + '@vue/compiler-sfc': 3.5.40 + '@vue/runtime-dom': 3.5.40 + '@vue/server-renderer': 3.5.40 + '@vue/shared': 3.5.40 + optionalDependencies: + typescript: 5.9.3 + + w3c-keyname@2.2.8: {} + web-streams-polyfill@3.3.3: {} web-streams-polyfill@4.0.0-beta.3: {} + web-tree-sitter@0.25.10: {} + webidl-conversions@3.0.1: {} whatwg-mimetype@3.0.0: {} @@ -12420,12 +24215,16 @@ snapshots: wrappy@1.0.2: {} + ws@7.5.13: {} + ws@8.18.0: {} ws@8.20.0: {} ws@8.20.1: {} + ws@8.21.1: {} + wsl-utils@0.1.0: dependencies: is-wsl: 3.1.1 @@ -12440,6 +24239,8 @@ snapshots: yaml@2.8.3: {} + yaml@2.9.0: {} + yargs-parser@20.2.9: {} yargs@16.2.0: @@ -12476,21 +24277,51 @@ snapshots: dependencies: zod: 4.3.6 + zod-to-json-schema@3.25.2(zod@4.4.3): + dependencies: + zod: 4.4.3 + zod@3.25.76: {} zod@4.3.6: {} - zustand@4.5.7(@types/react@19.2.14)(react@19.2.5): + zod@4.4.3: {} + + zustand@4.5.7(@types/react@19.2.14)(immer@11.1.15)(react@19.2.5): dependencies: use-sync-external-store: 1.6.0(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 + immer: 11.1.15 react: 19.2.5 - zustand@5.0.14(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)): + zustand@4.5.7(@types/react@19.2.14)(immer@11.1.15)(react@19.2.8): + dependencies: + use-sync-external-store: 1.6.0(react@19.2.8) + optionalDependencies: + '@types/react': 19.2.14 + immer: 11.1.15 + react: 19.2.8 + + zustand@5.0.14(@types/react@19.2.14)(immer@11.1.15)(react@19.2.5)(use-sync-external-store@1.6.0(react@19.2.5)): optionalDependencies: '@types/react': 19.2.14 + immer: 11.1.15 react: 19.2.5 use-sync-external-store: 1.6.0(react@19.2.5) + zustand@5.0.14(@types/react@19.2.14)(immer@11.1.15)(react@19.2.8)(use-sync-external-store@1.6.0(react@19.2.5)): + optionalDependencies: + '@types/react': 19.2.14 + immer: 11.1.15 + react: 19.2.8 + use-sync-external-store: 1.6.0(react@19.2.5) + + zustand@5.0.14(@types/react@19.2.14)(immer@11.1.15)(react@19.2.8)(use-sync-external-store@1.6.0(react@19.2.8)): + optionalDependencies: + '@types/react': 19.2.14 + immer: 11.1.15 + react: 19.2.8 + use-sync-external-store: 1.6.0(react@19.2.8) + zwitch@2.0.4: {} diff --git a/docs/references/smithers/scripts/fetch-jj-binaries.mjs b/docs/references/smithers/scripts/fetch-jj-binaries.mjs index 783949d05..50eed060f 100644 --- a/docs/references/smithers/scripts/fetch-jj-binaries.mjs +++ b/docs/references/smithers/scripts/fetch-jj-binaries.mjs @@ -1,6 +1,6 @@ #!/usr/bin/env node // Download the upstream jj (Jujutsu) release binaries into the per-platform -// `@smithers-orchestrator/jj-<platform>` packages so Smithers can ship a +// `@smthrs/jj-<platform>` packages so Smithers can ship a // bundled jj. Run this before `pnpm release`; the binaries are gitignored and // never committed. // diff --git a/docs/references/smithers/scripts/generate-llms.ts b/docs/references/smithers/scripts/generate-llms.ts index 0f910b6e6..80f76206c 100644 --- a/docs/references/smithers/scripts/generate-llms.ts +++ b/docs/references/smithers/scripts/generate-llms.ts @@ -24,7 +24,7 @@ const DOCS = resolve(import.meta.dir, "../docs"); // skill is self-contained. Keep it generated here so it never drifts from docs. const SKILL_DIR = resolve(import.meta.dir, "../skills/smithers"); // The CLI package carries the docs commands' default, version-matched output so -// `bunx smithers-orchestrator@x docs-full` does not depend on the latest website. +// `bunx smthrs@x docs-full` does not depend on the latest website. const CLI_DOCS_DIR = resolve(import.meta.dir, "../apps/cli/docs"); // ----------------------------------------------------------------------------- @@ -197,7 +197,7 @@ function renderManifest(name: string, pages: string[], header: string): string { const HEADERS = { core: [ "> Smithers — durable AI workflow orchestration as a JSX runtime.", - "> Repo: github.com/smithersai/smithers · Package: smithers-orchestrator (npm)", + "> Repo: github.com/smithersai/smithers · Package: smthrs (npm)", "", "This file is the agent-facing core Smithers documentation. It is for Claude, Codex, and other AI harnesses operating Smithers for a human. Read top to bottom for the runtime, agent operating playbook, JSX surface, CLI, and components.", "", @@ -256,7 +256,7 @@ for (const b of builds) { "# Smithers — full documentation", "", "> Durable AI workflow orchestration as a JSX runtime.", - "> Repo: github.com/smithersai/smithers · Package: smithers-orchestrator (npm)", + "> Repo: github.com/smithersai/smithers · Package: smthrs (npm)", "", "This is the complete agent-facing Smithers documentation in one file. It is the concatenation of every fragment listed in /llms.txt.", "", @@ -345,7 +345,7 @@ Examples: ## Pointers -- npm: smithers-orchestrator +- npm: smthrs - github: github.com/smithersai/smithers - changelogs: docs/changelogs/ on the site (not duplicated in llms files) `; diff --git a/docs/references/smithers/scripts/normalize-bunx.ts b/docs/references/smithers/scripts/normalize-bunx.ts index 23217cce6..15a2d1485 100644 --- a/docs/references/smithers/scripts/normalize-bunx.ts +++ b/docs/references/smithers/scripts/normalize-bunx.ts @@ -1,8 +1,8 @@ #!/usr/bin/env bun /** - * Normalize CLI invocations across docs to use `bunx smithers-orchestrator`. + * Normalize CLI invocations across docs to use `bunx smthrs`. * - * - Replaces bare `smithers <subcommand>` with `bunx smithers-orchestrator <subcommand>` + * - Replaces bare `smithers <subcommand>` with `bunx smthrs <subcommand>` * inside fenced bash code blocks only (so prose like "the smithers init command" * stays untouched). * - Also strips the "or globally if linked" note in package-configuration.mdx. @@ -69,7 +69,7 @@ function walk(dir: string, out: string[] = []): string[] { function normalizeCodeBlock(body: string): string { // Inside a code block body, replace lines like `smithers <sub> ...` - // with `bunx smithers-orchestrator <sub> ...`. Tolerate leading + // with `bunx smthrs <sub> ...`. Tolerate leading // whitespace and a leading `$ ` shell prompt. const sub = KNOWN_SUBCOMMANDS.join("|"); const re = new RegExp( @@ -77,7 +77,7 @@ function normalizeCodeBlock(body: string): string { "g", ); return body.replace(re, (_m, lead, indent, prompt, tail) => { - return `${lead}${indent}${prompt ?? ""}bunx smithers-orchestrator${tail}`; + return `${lead}${indent}${prompt ?? ""}bunx smthrs${tail}`; }); } @@ -131,8 +131,8 @@ function rewriteFile(path: string): { changed: boolean; before: number; after: n // Strip the "or globally if linked" sentence wherever it appears. out = out.replace( - /the\s+`smithers`\s+command is available via\s+`bunx smithers-orchestrator`\s+or globally if linked\./g, - "the `smithers` command is invoked via `bunx smithers-orchestrator`. Smithers does not need to be installed globally.", + /the\s+`smithers`\s+command is available via\s+`bunx smthrs`\s+or globally if linked\./g, + "the `smithers` command is invoked via `bunx smthrs`. Smithers does not need to be installed globally.", ); if (out !== original) { diff --git a/docs/references/smithers/scripts/optimize-llms-full.ts b/docs/references/smithers/scripts/optimize-llms-full.ts index 2f17a9746..761ec0044 100644 --- a/docs/references/smithers/scripts/optimize-llms-full.ts +++ b/docs/references/smithers/scripts/optimize-llms-full.ts @@ -17,7 +17,7 @@ * 5. Compact CLI bash code blocks: keep at most 2 example invocations per * command (canonical form + one combined-flag example), drop the rest. * 6. Strip JSX pragma comments after the first occurrence: - * `/** @jsxImportSource smithers-orchestrator *\/` is repeated in dozens + * `/** @jsxImportSource smthrs *\/` is repeated in dozens * of TSX snippets. Keep the first occurrence in the file as a reference. * * Run: bun scripts/optimize-llms-full.ts @@ -104,7 +104,7 @@ text = text.replace(/^>\s*Source:\s*https?:\/\/[^\s]+\s*\n/gm, ""); // reference line. text = text.replace( /^>\s*GitHub:\s*[^\n]+\n>\s*Package:\s*[^\n]+\n/m, - "> Repo: github.com/smithersai/smithers · Package: smithers-orchestrator (npm)\n", + "> Repo: github.com/smithersai/smithers · Package: smthrs (npm)\n", ); // --- 4. Collapse adjacent / doubled separators ------------------------------ @@ -120,10 +120,10 @@ text = text.replace(/\n{4,}/g, "\n\n\n"); // CLI reference pages emit blocks like: // // ```bash -// bunx smithers-orchestrator ps -// bunx smithers-orchestrator ps --status waiting-approval -// bunx smithers-orchestrator ps --limit 50 -// bunx smithers-orchestrator ps --watch --interval 5 +// bunx smthrs ps +// bunx smthrs ps --status waiting-approval +// bunx smthrs ps --limit 50 +// bunx smthrs ps --watch --interval 5 // ``` // // Keep the first (canonical) line and at most one combined-flag variant @@ -134,7 +134,7 @@ text = text.replace( const lines = body.split("\n").filter((l) => l.trim().length > 0); if (lines.length < 4) return full; // Group consecutive lines that share the same first 3 tokens (e.g. - // "bunx smithers-orchestrator ps"). + // "bunx smthrs ps"). const groups: string[][] = []; let cur: string[] = []; let curKey = ""; @@ -178,9 +178,9 @@ text = text.replace( // --- 6. Strip repeated JSX pragma comments after first occurrence ----------- { - const PRAGMA = "/** @jsxImportSource smithers-orchestrator */"; + const PRAGMA = "/** @jsxImportSource smthrs */"; let first = true; - text = text.replace(/\/\*\* @jsxImportSource smithers-orchestrator \*\/\n?/g, () => { + text = text.replace(/\/\*\* @jsxImportSource smthrs \*\/\n?/g, () => { if (first) { first = false; return PRAGMA + "\n"; @@ -323,10 +323,10 @@ text = text.replace( "Verbatim source files for seeded workflows, plugin manifests, and CI configuration are not duplicated here.", ); out.push( - "After `bunx smithers-orchestrator init`, browse `.smithers/` for live copies.", + "After `bunx smthrs init`, browse `.smithers/` for live copies.", ); out.push( - "For repo-level files (`AGENTS.md`, `.github/workflows/ci.yml`, `~/.claude/plugins/smithers-orchestrator/`, etc.) see the source repository at github.com/smithersai/smithers.", + "For repo-level files (`AGENTS.md`, `.github/workflows/ci.yml`, `~/.claude/plugins/smthrs/`, etc.) see the source repository at github.com/smithersai/smithers.", ); replacedOnce = true; } diff --git a/docs/references/smithers/skills/context-engineer/SKILL.md b/docs/references/smithers/skills/context-engineer/SKILL.md index ceb58a20b..8253b253f 100644 --- a/docs/references/smithers/skills/context-engineer/SKILL.md +++ b/docs/references/smithers/skills/context-engineer/SKILL.md @@ -77,21 +77,21 @@ backpressure → approve → execute → report. ```bash # Launch the concierge on a vague script. --review true (default) inserts the # approval gate; --review false runs straight through. -bunx smithers-orchestrator workflow run context-engineer \ +bunx smthrs workflow run context-engineer \ --prompt "I need the agent to help me harden our rate limiting and prove it works" # Watch it -bunx smithers-orchestrator ps # active / paused / recent runs -bunx smithers-orchestrator logs <run-id> -f # follow the event stream -bunx smithers-orchestrator inspect <run-id> # full run state (contract, route, gates) -bunx smithers-orchestrator why <run-id> # why is it paused? +bunx smthrs ps # active / paused / recent runs +bunx smthrs logs <run-id> -f # follow the event stream +bunx smthrs inspect <run-id> # full run state (contract, route, gates) +bunx smthrs why <run-id> # why is it paused? # Clear the design-approval gate once you've read the contract -bunx smithers-orchestrator approve <run-id> --node approve-contract --by <name> -bunx smithers-orchestrator deny <run-id> --node approve-contract # send it back +bunx smthrs approve <run-id> --node approve-contract --by <name> +bunx smthrs deny <run-id> --node approve-contract # send it back # Bail out -bunx smithers-orchestrator cancel <run-id> +bunx smthrs cancel <run-id> ``` The run **pauses durably** at `approve-contract` — a suspended run is a row, not a diff --git a/docs/references/smithers/skills/eval-writer/SKILL.md b/docs/references/smithers/skills/eval-writer/SKILL.md index e356ec5dd..70f9ca014 100644 --- a/docs/references/smithers/skills/eval-writer/SKILL.md +++ b/docs/references/smithers/skills/eval-writer/SKILL.md @@ -52,7 +52,7 @@ would actually check, not on prose. ## Run it ```bash -bunx smithers-orchestrator eval .smithers/workflows/release.tsx \ +bunx smthrs eval .smithers/workflows/release.tsx \ --cases .smithers/evals/release-quality.jsonl \ --suite release-quality --force ``` @@ -72,8 +72,8 @@ completion (they never block the run). Attach them to the `<Task>` whose output you care about, then read them with `smithers scores`. ```tsx -import { schemaAdherenceScorer, faithfulnessScorer, relevancyScorer } from "smithers-orchestrator/scorers"; -import { llmJudge } from "smithers-orchestrator/scorers"; +import { schemaAdherenceScorer, faithfulnessScorer, relevancyScorer } from "smthrs/scorers"; +import { llmJudge } from "smthrs/scorers"; <Task id="draft" output={outputs.notes} agent={writer} scorers={{ @@ -92,7 +92,7 @@ import { llmJudge } from "smithers-orchestrator/scorers"; expensive judges with `{ kind: "ratio", ratio: 0.1 }`. Inspect: ```bash -bunx smithers-orchestrator scores <run-id> +bunx smthrs scores <run-id> ``` Use assertions for the hard gate (must-be-true), scorers for the trend (is it @@ -105,7 +105,7 @@ plain-English acceptance criteria into a JSONL fixture (`id`, `input`, `expected `rubric`) under `.smithers/evals/`, then reports the exact `smithers eval` command: ```bash -bunx smithers-orchestrator workflow run eval-author \ +bunx smthrs workflow run eval-author \ --input '{"prompt":"Release notes must list every breaking change","workflow":".smithers/workflows/release.tsx"}' ``` diff --git a/docs/references/smithers/skills/prompt-author/SKILL.md b/docs/references/smithers/skills/prompt-author/SKILL.md index 37c91d08c..ca0ae260d 100644 --- a/docs/references/smithers/skills/prompt-author/SKILL.md +++ b/docs/references/smithers/skills/prompt-author/SKILL.md @@ -77,8 +77,8 @@ frame without losing finished tasks, then attach a `schemaAdherence` scorer (or small `smithers eval` suite) to confirm the new prompt actually holds the format: ```bash -bunx smithers-orchestrator up workflow.tsx --hot true --input '{"prompt":"…"}' -bunx smithers-orchestrator scores <run-id> # did schema adherence improve? +bunx smthrs up workflow.tsx --hot true --input '{"prompt":"…"}' +bunx smthrs scores <run-id> # did schema adherence improve? ``` See `skills/smithers/SKILL.md` for the runtime/CLI surface and `docs/llms-core.txt` diff --git a/docs/references/smithers/skills/report-maker/SKILL.md b/docs/references/smithers/skills/report-maker/SKILL.md index 1d94ab5f3..cf74c7d28 100644 --- a/docs/references/smithers/skills/report-maker/SKILL.md +++ b/docs/references/smithers/skills/report-maker/SKILL.md @@ -50,11 +50,11 @@ One coherent deck, sourced field-by-field from run state. Cover, in order: Source every slide from the CLI rather than memory: ```bash -bunx smithers-orchestrator inspect <run-id> --json # full run state (runState field): nodes, outputs, approvals -bunx smithers-orchestrator events <run-id> --json # ordered event history (failures, retries, gates) -bunx smithers-orchestrator scores <run-id> # scorer results per task -bunx smithers-orchestrator tree <run-id> # executed graph shape -bunx smithers-orchestrator diff <run-id> <node-id> # a node's DiffBundle for the artifacts slide +bunx smthrs inspect <run-id> --json # full run state (runState field): nodes, outputs, approvals +bunx smthrs events <run-id> --json # ordered event history (failures, retries, gates) +bunx smthrs scores <run-id> # scorer results per task +bunx smthrs tree <run-id> # executed graph shape +bunx smthrs diff <run-id> <node-id> # a node's DiffBundle for the artifacts slide ``` ## The automated path: the `report-slideshow` workflow @@ -64,7 +64,7 @@ takes a run, reads its persisted state, and emits the self-contained HTML slideshow for you (it reuses the `capture:slideshow` renderer): ```bash -bunx smithers-orchestrator workflow run report-slideshow --input '{"runId":"<run-id>"}' +bunx smthrs workflow run report-slideshow --input '{"runId":"<run-id>"}' ``` Reach for it to bootstrap the report, then hand-tighten the decisions and diff --git a/docs/references/smithers/skills/schema-author/SKILL.md b/docs/references/smithers/skills/schema-author/SKILL.md index 6eb71d861..20a93faeb 100644 --- a/docs/references/smithers/skills/schema-author/SKILL.md +++ b/docs/references/smithers/skills/schema-author/SKILL.md @@ -107,8 +107,8 @@ Attach a `schemaAdherence` scorer to confirm the shape holds run to run, and rea the persisted row directly: ```bash -bunx smithers-orchestrator scores <run-id> # did adherence hold? -bunx smithers-orchestrator output <run-id> triage # see the persisted row +bunx smthrs scores <run-id> # did adherence hold? +bunx smthrs output <run-id> triage # see the persisted row ``` See `skills/smithers/SKILL.md` for the runtime/CLI surface and `docs/llms-core.txt` diff --git a/docs/references/smithers/skills/smithers/README.md b/docs/references/smithers/skills/smithers/README.md index a6c9d0f11..e3f1c1110 100644 --- a/docs/references/smithers/skills/smithers/README.md +++ b/docs/references/smithers/skills/smithers/README.md @@ -37,8 +37,8 @@ skill to one project. Any agent that loads Markdown skills works the same way — point it at this folder. For agents without a skills directory, just tell them to run -`bunx smithers-orchestrator docs-full` (it prints the same `llms-full.txt`), or -`bunx smithers-orchestrator ask "<question>"`. +`bunx smthrs docs-full` (it prints the same `llms-full.txt`), or +`bunx smthrs ask "<question>"`. ## Keeping it fresh diff --git a/docs/references/smithers/skills/smithers/SKILL.md b/docs/references/smithers/skills/smithers/SKILL.md index 3f0b33c67..deeae9f48 100644 --- a/docs/references/smithers/skills/smithers/SKILL.md +++ b/docs/references/smithers/skills/smithers/SKILL.md @@ -83,17 +83,17 @@ From inside the user's project (Bun ≥ 1.3, plus a model key like ```bash # 1. Scaffold .smithers/ with ready-made workflows (implement, review, plan, ralph, debug…) -bunx smithers-orchestrator init +bunx smthrs init # 2. Browse plain-English starters and their copy-paste commands -bunx smithers-orchestrator starters +bunx smthrs starters # 3. Run one. This dispatches a real coding agent to do the work, durably. -bunx smithers-orchestrator workflow run implement --prompt "Add a /health endpoint" +bunx smthrs workflow run implement --prompt "Add a /health endpoint" # 4. Watch it -bunx smithers-orchestrator ps # active / paused / recent runs -bunx smithers-orchestrator logs <run-id> -f # follow the event stream +bunx smthrs ps # active / paused / recent runs +bunx smthrs logs <run-id> -f # follow the event stream ``` That's the loop: scaffold → run a workflow → watch the run. The "aha" is step 3: @@ -109,8 +109,8 @@ Crash mid-run and the next render picks up exactly where it left off: completed nodes are never re-run. ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -247,7 +247,7 @@ and `../components/Bar`. ## Operating runs -Everything is a CLI verb (prefix with `bunx smithers-orchestrator` if it isn't on PATH): +Everything is a CLI verb (prefix with `bunx smthrs` if it isn't on PATH): ```bash smithers up workflow.tsx --input '{"description":"Fix bug"}' # start a run @@ -440,7 +440,7 @@ You don't have to hand-write a workflow from scratch. The seeded pack ships a **`create-workflow`** workflow that builds one for you from a plain-English ask: ```bash -bunx smithers-orchestrator workflow run create-workflow \ +bunx smthrs workflow run create-workflow \ --prompt "Watch a landing request and auto-land it once CI is green" ``` @@ -468,8 +468,8 @@ gateway.register("my-workflow", workflow, { The bundle is one file. Two shipping shapes: -- **React (recommended).** `smithers-orchestrator/gateway-react`. One call to `createGatewayReactRoot(<App />)` reads the boot config, mounts a provider, and gives the tree live hooks: `useGatewayRun`, `useGatewayRunEvents`, `useGatewayNodeOutput`, `useGatewayApprovals`, `useGatewayActions` (for `submitApproval`, `submitSignal`, `cancelRun`, `rewindRun`, etc.). The hooks are **stale-data-free by construction**: when `runId` (or any input) changes, the prior data clears synchronously and any late response from the old inputs is dropped. A custom UI that switches between runs never blinks the wrong data. It automatically manages subscriptions, pushed updates, metrics, and resilient reconnections. -- **Vanilla.** `smithers-orchestrator/gateway-client`. One `SmithersGatewayClient` class with `getRun`, `getNodeOutput`, `getNodeDiff`, `submitApproval`, `submitSignal`, `cancelRun`, and a `streamRunEventsResilient` async generator that reconnects with backoff + jitter and resumes from the last per-run `seq`. This generator handles live pushed updates, metrics streaming, and subscriptions. Pick this when you want zero dependencies or already own your render layer. +- **React (recommended).** `smthrs/gateway-react`. One call to `createGatewayReactRoot(<App />)` reads the boot config, mounts a provider, and gives the tree live hooks: `useGatewayRun`, `useGatewayRunEvents`, `useGatewayNodeOutput`, `useGatewayApprovals`, `useGatewayActions` (for `submitApproval`, `submitSignal`, `cancelRun`, `rewindRun`, etc.). The hooks are **stale-data-free by construction**: when `runId` (or any input) changes, the prior data clears synchronously and any late response from the old inputs is dropped. A custom UI that switches between runs never blinks the wrong data. It automatically manages subscriptions, pushed updates, metrics, and resilient reconnections. +- **Vanilla.** `smthrs/gateway-client`. One `SmithersGatewayClient` class with `getRun`, `getNodeOutput`, `getNodeDiff`, `submitApproval`, `submitSignal`, `cancelRun`, and a `streamRunEventsResilient` async generator that reconnects with backoff + jitter and resumes from the last per-run `seq`. This generator handles live pushed updates, metrics streaming, and subscriptions. Pick this when you want zero dependencies or already own your render layer. The bundle reads `?runId=<id>` from `location.search` for the run to scope to, and optionally `__SMITHERS_GATEWAY_UI__` (a `GatewayUiBootConfig`) for the mount path, RPC path, WebSocket path, and free-form `props` you set at `gateway.register({ ui: { props } })`. @@ -478,9 +478,9 @@ The bundle reads `?runId=<id>` from `location.search` for the run to scope to, a **Local dev.** ```bash -bunx smithers-orchestrator up my-workflow -d # boot the gateway with the workflow + UI -bunx smithers-orchestrator ui # opens the UI for the most recent run -bunx smithers-orchestrator ui <runId> # specific run +bunx smthrs up my-workflow -d # boot the gateway with the workflow + UI +bunx smthrs ui # opens the UI for the most recent run +bunx smthrs ui <runId> # specific run ``` **Reference bundles in this repo:** `.smithers/ui/vcs.tsx`, `.smithers/ui/grill-me.tsx`, `.smithers/ui/ultragrill.tsx`, `.smithers/ui/workflow-skill.tsx`. @@ -510,14 +510,14 @@ bundle to answer a focused question. Start narrow and widen only as needed: - **`llms-full.txt`**: everything concatenated, when you want it all in context. ```bash -bunx smithers-orchestrator docs # prints llms.txt (the concise index) -bunx smithers-orchestrator docs-full # prints llms-full.txt -bunx smithers-orchestrator ask "How do I add a human approval gate?" +bunx smthrs docs # prints llms.txt (the concise index) +bunx smthrs docs-full # prints llms-full.txt +bunx smthrs ask "How do I add a human approval gate?" ``` - Docs: **https://smithers.sh** · fragments at `smithers.sh/llms-*.txt` - Repo: **https://github.com/smithersai/smithers** -- npm package: `smithers-orchestrator` +- npm package: `smthrs` **When in doubt, clone the repo** (`github.com/smithersai/smithers`) and read the source directly; the docs and `llms-*.txt` bundles can lag the code. The diff --git a/docs/references/smithers/skills/smithers/llms-full.txt b/docs/references/smithers/skills/smithers/llms-full.txt index 079a15a12..58fb225df 100644 --- a/docs/references/smithers/skills/smithers/llms-full.txt +++ b/docs/references/smithers/skills/smithers/llms-full.txt @@ -1,7 +1,7 @@ # Smithers — full documentation > Durable AI workflow orchestration as a JSX runtime. -> Repo: github.com/smithersai/smithers · Package: smithers-orchestrator (npm) +> Repo: github.com/smithersai/smithers · Package: smthrs (npm) This is the complete agent-facing Smithers documentation in one file. It is the concatenation of every fragment listed in /llms.txt. @@ -24,7 +24,7 @@ Changelogs are not included; see /docs/changelogs/ on the docs site. # Smithers > Smithers — durable AI workflow orchestration as a JSX runtime. -> Repo: github.com/smithersai/smithers · Package: smithers-orchestrator (npm) +> Repo: github.com/smithersai/smithers · Package: smthrs (npm) This file is the agent-facing core Smithers documentation. It is for Claude, Codex, and other AI harnesses operating Smithers for a human. Read top to bottom for the runtime, agent operating playbook, JSX surface, CLI, and components. @@ -81,8 +81,8 @@ harnesses should operate Smithers for the human, including the `llms.txt` and </CardGroup> ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -101,8 +101,8 @@ export default smithers((ctx) => ( ``` ```bash -bunx smithers-orchestrator init -bunx smithers-orchestrator up workflow.tsx --input '{"name":"world"}' +bunx smthrs init +bunx smthrs up workflow.tsx --input '{"name":"world"}' ``` Outputs are validated by Zod, persisted to SQLite, and survive crashes. Resume with @@ -144,14 +144,14 @@ to run, and treats having your agent author new ones as a first-class path. ## Built-in workflows -`bunx smithers-orchestrator init` scaffolds a `.smithers/` folder preloaded with +`bunx smthrs init` scaffolds a `.smithers/` folder preloaded with production-ready workflows. Point your agent at one and go with -`bunx smithers-orchestrator workflow run <id> --prompt "..."`: +`bunx smthrs workflow run <id> --prompt "..."`: ```bash # break a request into tickets, then implement them on a board -bunx smithers-orchestrator workflow run tickets-create --prompt "add rate limiting and audit logging" -bunx smithers-orchestrator workflow run kanban +bunx smthrs workflow run tickets-create --prompt "add rate limiting and audit logging" +bunx smthrs workflow run kanban ``` <CardGroup cols={2}> @@ -306,24 +306,24 @@ Don't use it for a single prompt → single response. Use your model provider's ## Installation -> Install smithers-orchestrator with the workflow pack, or manually for standalone JSX workflow projects. +> Install smthrs with the workflow pack, or manually for standalone JSX workflow projects. Most teams should start with the workflow pack. It gives you a working `.smithers/` directory with seeded workflows, prompts, and agent configuration instead of assembling the project structure by hand. ## Always Run with `bunx` -Every CLI invocation in these docs is `bunx smithers-orchestrator <command>`. Do **not** install Smithers globally and do **not** use the bare `smithers` or `bunx smithers` shorthand. +Every CLI invocation in these docs is `bunx smthrs <command>`. Do **not** install Smithers globally and do **not** use the bare `smithers` or `bunx smithers` shorthand. - `bunx` resolves the package locally if your project depends on it, otherwise it pulls and runs the latest published version. -- The published npm package is [`smithers-orchestrator`](https://www.npmjs.com/package/smithers-orchestrator). The bare name `smithers` is a different package, so `bunx smithers` runs something else entirely. +- The published npm package is [`smthrs`](https://www.npmjs.com/package/smthrs). The bare name `smithers` is a different package, so `bunx smithers` runs something else entirely. - A global install creates version-drift problems across machines, CI, and contributors. With `bunx`, every project pins Smithers through its own `package.json`. -If you previously ran `npm i -g smithers-orchestrator`, uninstall it (`npm rm -g smithers-orchestrator`) and switch to `bunx`. +If you previously ran `npm i -g smthrs`, uninstall it (`npm rm -g smthrs`) and switch to `bunx`. ## Recommended: Install the Workflow Pack ```bash -bunx smithers-orchestrator init +bunx smthrs init ``` That scaffolds `.smithers/` with files such as: @@ -333,7 +333,7 @@ That scaffolds `.smithers/` with files such as: | `.smithers/workflows/` | Pre-built workflows (`implement`, `review`, `plan`, `ralph`, `debug`, ...) | | `.smithers/prompts/` | Shared MDX prompt templates | | `.smithers/components/` | Reusable TSX components (`Review`, `ValidationLoop`, ...) | -| `.smithers/package.json` | Local workflow project manifest with `smithers-orchestrator` dependency | +| `.smithers/package.json` | Local workflow project manifest with `smthrs` dependency | | `.smithers/tsconfig.json` | TypeScript config for JSX workflow authoring | | `.smithers/bunfig.toml` | Bun preload config for MDX workflow prompts | | `.smithers/preload.ts` | Registers the MDX preload plugin | @@ -347,7 +347,7 @@ That scaffolds `.smithers/` with files such as: To overwrite an existing scaffold: ```bash -bunx smithers-orchestrator init --force +bunx smthrs init --force ``` ## Install the Agent Skill @@ -372,8 +372,8 @@ outcome — *"orchestrate an agent to add rate limiting and keep iterating until tests pass"* — and the agent reaches for Smithers itself. For agents without a skills directory, point them at -`bunx smithers-orchestrator docs-full` (prints the same bundle) or -`bunx smithers-orchestrator ask "<question>"`. +`bunx smthrs docs-full` (prints the same bundle) or +`bunx smthrs ask "<question>"`. To install the skill **and** register the MCP server into every coding agent on your machine at once, see Agent Support — it covers Claude @@ -394,13 +394,13 @@ See JSX Installation for the package list, TypeScript configuration, and optiona ### Version control -Smithers bundles jj. The optional `@smithers-orchestrator/jj-<platform>` package installs a vendored jj binary for your platform, so a fresh install works with no system jj. Resolution order is: +Smithers bundles jj. The optional `@smthrs/jj-<platform>` package installs a vendored jj binary for your platform, so a fresh install works with no system jj. Resolution order is: 1. `SMITHERS_JJ_PATH` — point this at a jj binary to override everything. 2. The bundled binary for your platform. 3. `jj` on your `PATH`. -If no bundled binary installed (an unsupported platform, or `--no-optional`) and neither `jj` nor `git` is on `PATH`, runs that need a worktree fail with a message telling you to install one. Check what Smithers found with `bunx smithers-orchestrator workflow doctor` (the `vcs` section reports the resolved jj and git). +If no bundled binary installed (an unsupported platform, or `--no-optional`) and neither `jj` nor `git` is on `PATH`, runs that need a worktree fail with a message telling you to install one. Check what Smithers found with `bunx smthrs workflow doctor` (the `vcs` section reports the resolved jj and git). ## After Installation @@ -419,25 +419,25 @@ If no bundled binary installed (an unsupported platform, or `--no-optional`) and > Scaffold and run a Smithers workflow in two commands. ```bash -bunx smithers-orchestrator init -bunx smithers-orchestrator init --template idea-to-tickets -bunx smithers-orchestrator workflow run implement --prompt "Add rate limiting" +bunx smthrs init +bunx smthrs init --template idea-to-tickets +bunx smthrs workflow run implement --prompt "Add rate limiting" ``` -`init` scaffolds `.smithers/` (workflows, prompts, components, agent config). Add `--template <id>` when you want the init result to include the selected starter command and follow-up notes. Run `bunx smithers-orchestrator starters` to browse template IDs. +`init` scaffolds `.smithers/` (workflows, prompts, components, agent config). Add `--template <id>` when you want the init result to include the selected starter command and follow-up notes. Run `bunx smthrs starters` to browse template IDs. Inspect the run: ```bash -bunx smithers-orchestrator ps -bunx smithers-orchestrator inspect <run-id> -bunx smithers-orchestrator logs <run-id> --tail 20 +bunx smthrs ps +bunx smthrs inspect <run-id> +bunx smthrs logs <run-id> --tail 20 ``` Resume after a crash: ```bash -bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true +bunx smthrs up workflow.tsx --run-id <run-id> --resume true ``` Prefer to let your agent drive? Install the agent skill and just ask for the outcome — your coding agent runs Smithers for you. @@ -453,19 +453,19 @@ For a full worked example, see the Tour. For every CLI command see the CLI catal Smithers ships with starter workflows for when you want a result before your agent writes any workflow code. Browse the starter gallery from any repo: ```bash -bunx smithers-orchestrator starters +bunx smthrs starters ``` First-time setup: ```bash -bunx smithers-orchestrator init --add-agents +bunx smthrs init --add-agents ``` Or initialize with guided next steps for one template: ```bash -bunx smithers-orchestrator init --template idea-to-tickets +bunx smthrs init --template idea-to-tickets ``` Template IDs: @@ -474,37 +474,37 @@ Pass any ID from this table to `init --template <id>` to scaffold that starter. | Starter | Best for | Workflow | Command | | --- | --- | --- | --- | -| `idea-to-prd` | founders, product | `write-a-prd` | `bunx smithers-orchestrator init --template idea-to-prd` | -| `idea-to-tickets` | founders, product, operations, engineering | `tickets-create` | `bunx smithers-orchestrator init --template idea-to-tickets` | -| `launch-checklist` | launch owners and operators | `plan` | `bunx smithers-orchestrator init --template launch-checklist` | -| `customer-incident` | support escalations | `debug` | `bunx smithers-orchestrator init --template customer-incident` | -| `nontechnical-research` | before-build decisions | `research` | `bunx smithers-orchestrator init --template nontechnical-research` | -| `requirements-interview` | vague stakeholder requests | `grill-me` | `bunx smithers-orchestrator init --template requirements-interview` | -| `quality-audit` | release readiness | `audit` | `bunx smithers-orchestrator init --template quality-audit` | -| `test-coverage` | regression prevention | `improve-test-coverage` | `bunx smithers-orchestrator init --template test-coverage` | -| `ship-a-change` | focused product improvements | `research-plan-implement` | `bunx smithers-orchestrator init --template ship-a-change` | -| `mission-mode` | larger approved milestones | `mission` | `bunx smithers-orchestrator init --template mission-mode` | +| `idea-to-prd` | founders, product | `write-a-prd` | `bunx smthrs init --template idea-to-prd` | +| `idea-to-tickets` | founders, product, operations, engineering | `tickets-create` | `bunx smthrs init --template idea-to-tickets` | +| `launch-checklist` | launch owners and operators | `plan` | `bunx smthrs init --template launch-checklist` | +| `customer-incident` | support escalations | `debug` | `bunx smthrs init --template customer-incident` | +| `nontechnical-research` | before-build decisions | `research` | `bunx smthrs init --template nontechnical-research` | +| `requirements-interview` | vague stakeholder requests | `grill-me` | `bunx smthrs init --template requirements-interview` | +| `quality-audit` | release readiness | `audit` | `bunx smthrs init --template quality-audit` | +| `test-coverage` | regression prevention | `improve-test-coverage` | `bunx smthrs init --template test-coverage` | +| `ship-a-change` | focused product improvements | `research-plan-implement` | `bunx smthrs init --template ship-a-change` | +| `mission-mode` | larger approved milestones | `mission` | `bunx smthrs init --template mission-mode` | Each detailed starter prints: - What outcome to expect - What context to gather before running -- The exact `bunx smithers-orchestrator workflow run ...` command +- The exact `bunx smthrs workflow run ...` command - Useful follow-up commands - When not to use that starter Filter by audience or goal: ```bash -bunx smithers-orchestrator starters --audience product -bunx smithers-orchestrator starters --goal quality -bunx smithers-orchestrator starters --workflow debug +bunx smthrs starters --audience product +bunx smthrs starters --goal quality +bunx smthrs starters --workflow debug ``` Use JSON when another tool needs the catalog: ```bash -bunx smithers-orchestrator starters --format json +bunx smthrs starters --format json ``` --- @@ -518,8 +518,8 @@ A code-review workflow built one capability at a time. Each step is a diff again ## 1. Install and scaffold ```bash -bunx smithers-orchestrator init -bun add smithers-orchestrator ai @ai-sdk/anthropic zod +bunx smthrs init +bun add smthrs ai @ai-sdk/anthropic zod bun add -d typescript @types/bun export ANTHROPIC_API_KEY="sk-ant-..." ``` @@ -535,7 +535,7 @@ A minimal `tsconfig.json`: "module": "ESNext", "moduleResolution": "bundler", "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", + "jsxImportSource": "smthrs", "strict": true, "noEmit": true, "skipLibCheck": true @@ -548,7 +548,7 @@ A minimal `tsconfig.json`: ## 2. One-task workflow ```tsx -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -571,14 +571,14 @@ export default smithers((ctx) => ( This Task has no `agent`, just a literal value. Run it. ```bash -bunx smithers-orchestrator up workflow.tsx --input '{"name":"world"}' +bunx smthrs up workflow.tsx --input '{"name":"world"}' ``` Inspect: ```bash -bunx smithers-orchestrator ps # find the run id -bunx smithers-orchestrator inspect <run-id> # structured state +bunx smthrs ps # find the run id +bunx smthrs inspect <run-id> # structured state sqlite3 smithers.db "SELECT * FROM greeting;" # the persisted output ``` @@ -587,7 +587,7 @@ sqlite3 smithers.db "SELECT * FROM greeting;" # the persisted output Replace the literal Task with an agent Task whose output is structured. ```tsx -import { createSmithers, Sequence, Task, AnthropicAgent } from "smithers-orchestrator"; +import { createSmithers, Sequence, Task, AnthropicAgent } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -625,7 +625,7 @@ The runtime injects a JSON-schema description of `outputs.analysis` into the pro Tasks see each other's outputs through `ctx.outputMaybe(...)`. An incomplete upstream returns `undefined`; on the next render frame the upstream output appears and the downstream Task mounts. ```tsx -import { createSmithers, Sequence, Task, AnthropicAgent } from "smithers-orchestrator"; +import { createSmithers, Sequence, Task, AnthropicAgent } from "smthrs"; import { z } from "zod"; const AnalysisSchema = z.object({ @@ -700,7 +700,7 @@ Same shape works for branching, parallel groups, and loops: Pause for a human. The runtime persists the pending decision and exits cleanly; an operator approves or denies through the CLI; resume picks up from the gate. ```tsx -import { Approval } from "smithers-orchestrator"; +import { Approval } from "smthrs"; {analysis ? ( <Approval @@ -726,10 +726,10 @@ import { Approval } from "smithers-orchestrator"; Operator side: ```bash -bunx smithers-orchestrator ps --status waiting-approval # find paused runs -bunx smithers-orchestrator inspect <run-id> # see the request -bunx smithers-orchestrator approve <run-id> --node confirm-fix --by alice -bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true +bunx smthrs ps --status waiting-approval # find paused runs +bunx smthrs inspect <run-id> # see the request +bunx smthrs approve <run-id> --node confirm-fix --by alice +bunx smthrs up workflow.tsx --run-id <run-id> --resume true ``` `onDeny` controls behavior on rejection: `"fail"` aborts the run, `"continue"` proceeds without the approved branch, `"skip"` skips the gated tasks. @@ -739,10 +739,10 @@ bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true Every completed task's output sits in SQLite. A crash, kill, or restart loses no work — the next run with `--resume true` skips finished tasks. ```bash -bunx smithers-orchestrator up workflow.tsx --input '{"repo":"."}' --run-id review-1 +bunx smthrs up workflow.tsx --input '{"repo":"."}' --run-id review-1 # ...analyze finishes, fix is mid-flight, you Ctrl+C -bunx smithers-orchestrator up workflow.tsx --run-id review-1 --resume true +bunx smthrs up workflow.tsx --run-id review-1 --resume true # analyze is skipped (already in DB), fix re-runs from scratch (was incomplete) ``` @@ -751,14 +751,14 @@ In-flight attempts are marked stale and re-tried; finished tasks are not. Resume For unattended recovery, run the supervisor: ```bash -bunx smithers-orchestrator supervise --interval 30s --stale-threshold 1m +bunx smthrs supervise --interval 30s --stale-threshold 1m ``` It auto-resumes runs whose owner process died. ## What you skipped (and where to find it) -- **Time travel** (replay a frame, fork a run, diff two runs): `bunx smithers-orchestrator replay|fork|diff|timeline` — see How It Works → Time travel. +- **Time travel** (replay a frame, fork a run, diff two runs): `bunx smthrs replay|fork|diff|timeline` — see How It Works → Time travel. - **Scorers** (attach evaluators to Tasks): see Recipes → Scoring tasks. - **Memory** (cross-run facts and message history): see llms-memory.txt. - **RAG**, **voice**, **OpenAPI tools**: opt-in fragments — see the index in llms.txt. @@ -999,7 +999,7 @@ Replay with `--restore-vcs` checks out the jj revision the snapshot was taken at Attach evaluators to a Task. They run **after** completion and never block. ```tsx -import { schemaAdherenceScorer, latencyScorer } from "smithers-orchestrator/scorers"; +import { schemaAdherenceScorer, latencyScorer } from "smthrs/scorers"; <Task id="analyze" @@ -1035,7 +1035,7 @@ Five built-in tools — `read`, `write`, `edit`, `grep`, `bash` — sandboxed to Least-privilege per task: ```tsx -import { AnthropicAgent } from "smithers-orchestrator"; +import { AnthropicAgent } from "smthrs"; const analyst = new AnthropicAgent({ model, instructions: "..." }); // no tools const reviewer = new AnthropicAgent({ model, instructions: "...", tools: { read, grep } }); const implementer = new AnthropicAgent({ model, instructions: "...", tools: { read, write, edit, bash } }); @@ -1236,26 +1236,26 @@ If you cannot see the run, you cannot operate it well. For local and development work, use the CLI surfaces yourself: ```bash -bunx smithers-orchestrator ps -bunx smithers-orchestrator inspect <run-id> --watch -bunx smithers-orchestrator events <run-id> --watch -bunx smithers-orchestrator node <run-id> <node-id> -bunx smithers-orchestrator scores <run-id> -bunx smithers-orchestrator why <run-id> +bunx smthrs ps +bunx smthrs inspect <run-id> --watch +bunx smthrs events <run-id> --watch +bunx smthrs node <run-id> <node-id> +bunx smthrs scores <run-id> +bunx smthrs why <run-id> ``` Use serve mode when you need HTTP status, SSE events, remote approvals, or Prometheus metrics: ```bash -bunx smithers-orchestrator up workflow.tsx --serve --metrics --port 7331 +bunx smthrs up workflow.tsx --serve --metrics --port 7331 ``` Use the observability stack when the work needs traces, metrics, dashboards, or a reviewer evidence bundle: ```bash -bunx smithers-orchestrator observability +bunx smthrs observability ``` Enable OpenTelemetry export when you need trace-level proof, then include the @@ -1280,8 +1280,8 @@ plan, gates, and evidence live." Do not phrase it as homework for the human. Use hot mode while authoring or tuning a workflow: ```bash -bunx smithers-orchestrator graph workflow.tsx -bunx smithers-orchestrator up workflow.tsx --hot true --input '{"prompt":"..."}' +bunx smthrs graph workflow.tsx +bunx smthrs up workflow.tsx --hot true --input '{"prompt":"..."}' ``` The graph command validates the rendered shape without executing the whole job. @@ -1402,12 +1402,12 @@ Workflows are JSX trees. Smithers renders the tree, extracts ready tasks, execut ## Setup -Most projects should use `bunx smithers-orchestrator init` — it scaffolds everything below. +Most projects should use `bunx smthrs init` — it scaffolds everything below. To embed into an existing codebase: ```bash -bun add smithers-orchestrator react react-dom zod +bun add smthrs react react-dom zod bun add -d typescript @types/react @types/react-dom @types/node ``` @@ -1420,7 +1420,7 @@ Minimal `tsconfig.json`: "module": "ESNext", "moduleResolution": "bundler", "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", + "jsxImportSource": "smthrs", "strict": true, "noEmit": true, "skipLibCheck": true @@ -1428,17 +1428,17 @@ Minimal `tsconfig.json`: } ``` -`jsxImportSource` is the only non-standard line — it routes JSX through `smithers-orchestrator/jsx-runtime` instead of React DOM. +`jsxImportSource` is the only non-standard line — it routes JSX through `smthrs/jsx-runtime` instead of React DOM. Optional MDX prompts: add `bun add -d @types/mdx` and a `preload.ts` that calls `mdxPlugin()`, register it in `bunfig.toml` as `preload = ["./preload.ts"]`. -Verify with `bunx tsc --noEmit` and `bunx smithers-orchestrator --help`. +Verify with `bunx tsc --noEmit` and `bunx smthrs --help`. ## A minimal workflow ```tsx -// @jsxImportSource smithers-orchestrator — only needed if not set in tsconfig.json -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +// @jsxImportSource smthrs — only needed if not set in tsconfig.json +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -1481,7 +1481,7 @@ The `report` Task doesn't exist in the plan until `analysis` completes. No place > Every Smithers CLI command in one structured catalog (TOON format). -Always invoke as `bunx smithers-orchestrator <command>` (see Installation for why). Use `--help` on any command for the canonical option list. +Always invoke as `bunx smthrs <command>` (see Installation for why). Use `--help` on any command for the canonical option list. ## Conventions @@ -2062,27 +2062,27 @@ commands[66]: **Set up** ```bash -bunx smithers-orchestrator init # scaffold .smithers/ -bunx smithers-orchestrator init --template idea-to-tickets # scaffold with guided template next steps -bunx smithers-orchestrator starters # browse template IDs +bunx smthrs init # scaffold .smithers/ +bunx smthrs init --template idea-to-tickets # scaffold with guided template next steps +bunx smthrs starters # browse template IDs ``` **Run** ```bash -bunx smithers-orchestrator workflow run implement --prompt "…" # launch a seeded workflow -bunx smithers-orchestrator up workflow.tsx --run-id <id> --resume true # resume a paused run +bunx smthrs workflow run implement --prompt "…" # launch a seeded workflow +bunx smthrs up workflow.tsx --run-id <id> --resume true # resume a paused run ``` **Observe & control** ```bash -bunx smithers-orchestrator ps # list runs -bunx smithers-orchestrator inspect <run-id> # structured run state -bunx smithers-orchestrator logs <run-id> --tail 20 --follow # stream events -bunx smithers-orchestrator why <run-id> # why is it paused? -bunx smithers-orchestrator approve <run-id> --node <id> --by <name> # approve a paused node -bunx smithers-orchestrator cancel <run-id> # cancel a run +bunx smthrs ps # list runs +bunx smthrs inspect <run-id> # structured run state +bunx smthrs logs <run-id> --tail 20 --follow # stream events +bunx smthrs why <run-id> # why is it paused? +bunx smthrs approve <run-id> --node <id> --by <name> # approve a paused node +bunx smthrs cancel <run-id> # cancel a run ``` See Tour for a full worked example. See CLI overview for the complete flag reference. @@ -2094,7 +2094,7 @@ See Tour for a full worked example. See CLI overview for the complete flag refer > Root container; sequences direct children, optionally caches for resume. ```ts -import { Workflow } from "smithers-orchestrator"; +import { Workflow } from "smthrs"; type WorkflowProps = { name: string; @@ -2104,7 +2104,7 @@ type WorkflowProps = { ``` ```tsx -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; import { z } from "zod"; @@ -2139,7 +2139,7 @@ export default smithers((ctx) => ( > Executable node; runs an agent, compute callback, or emits a static value. ```ts -import { Task } from "smithers-orchestrator"; +import { Task } from "smthrs"; type TaskProps = { id: string; @@ -2273,7 +2273,7 @@ const VERIFY = "verify" as const; > Run children in source order. ```ts -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; type SequenceProps = { key?: string; @@ -2317,7 +2317,7 @@ type SequenceProps = { > Run children concurrently with an optional concurrency cap. ```ts -import { Parallel } from "smithers-orchestrator"; +import { Parallel } from "smthrs"; type ParallelProps = { id?: string; @@ -2355,7 +2355,7 @@ type ParallelProps = { > Conditional fork; mounts `then` when `if` is true, otherwise `else`. ```ts -import { Branch } from "smithers-orchestrator"; +import { Branch } from "smthrs"; type BranchProps = { if: boolean; @@ -2400,7 +2400,7 @@ type BranchProps = { > Re-run children until `until` is true or `maxIterations` is hit. ```ts -import { Loop } from "smithers-orchestrator"; +import { Loop } from "smthrs"; type LoopProps = { id?: string; // auto-generated from tree position @@ -2450,7 +2450,7 @@ export default smithers((ctx) => { > Durable human approval; persists ApprovalDecision, selection, or ranking. ```ts -import { Approval, approvalDecisionSchema } from "smithers-orchestrator"; +import { Approval, approvalDecisionSchema } from "smthrs"; type ApprovalProps = { id: string; @@ -2485,7 +2485,7 @@ type ApprovalProps = { ``` ```tsx -import { Approval, Sequence, Task, Workflow, approvalDecisionSchema, createSmithers } from "smithers-orchestrator"; +import { Approval, Sequence, Task, Workflow, approvalDecisionSchema, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -2528,7 +2528,7 @@ export default smithers((ctx) => { > Conditional approval; pauses for human when `when` is true, else auto-approves. ```ts -import { ApprovalGate } from "smithers-orchestrator"; +import { ApprovalGate } from "smthrs"; type ApprovalGateProps = { id: string; @@ -2584,7 +2584,7 @@ const risk = ctx.output(outputs.riskScore, { nodeId: "risk" }); ```ts // Props -import { EscalationChain } from "smithers-orchestrator"; +import { EscalationChain } from "smthrs"; type EscalationChainProps = { id?: string; // default "escalation" @@ -2634,7 +2634,7 @@ type EscalationLevel = { ```ts // Props -import { DecisionTable } from "smithers-orchestrator"; +import { DecisionTable } from "smthrs"; type DecisionTableProps = { id?: string; @@ -2683,7 +2683,7 @@ type DecisionRule = { > Suspend until a human submits JSON matching the output schema. ```ts -import { HumanTask } from "smithers-orchestrator"; +import { HumanTask } from "smthrs"; type HumanTaskProps = { id: string; @@ -2704,7 +2704,7 @@ type HumanTaskProps = { ``` ```tsx -import { Workflow, Sequence, Task, HumanTask, createSmithers } from "smithers-orchestrator"; +import { Workflow, Sequence, Task, HumanTask, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -2752,7 +2752,7 @@ export default smithers((ctx) => { > Typed wrapper around <WaitForEvent>; signal name equals node id. ```ts -import { Signal } from "smithers-orchestrator"; +import { Signal } from "smthrs"; type SignalProps = { id: string; // signal name and node id @@ -2773,7 +2773,7 @@ type SignalProps = { ``` ```tsx -import { Signal, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { Signal, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -2806,7 +2806,7 @@ export default smithers(() => ( > Durably suspend until a correlated external event arrives, or time out. ```ts -import { WaitForEvent } from "smithers-orchestrator"; +import { WaitForEvent } from "smthrs"; type WaitForEventProps = { id: string; @@ -2858,7 +2858,7 @@ type WaitForEventProps = { > Durably suspend for a relative duration or until an absolute time. ```ts -import { Timer } from "smithers-orchestrator"; +import { Timer } from "smthrs"; type TimerProps = { id: string; @@ -2898,7 +2898,7 @@ type TimerProps = { > Forward steps with compensations run in reverse on failure. ```ts -import { Saga } from "smithers-orchestrator"; +import { Saga } from "smthrs"; type SagaStepDef = { id: string; @@ -2949,7 +2949,7 @@ type SagaProps = { > Workflow-scoped error boundary with catch handlers and guaranteed cleanup. ```ts -import { TryCatchFinally } from "smithers-orchestrator"; +import { TryCatchFinally } from "smthrs"; type TryCatchFinallyProps = { id?: string; @@ -2997,8 +2997,8 @@ type TryCatchFinallyProps = { `<Sandbox>` is a task boundary for work that should execute outside the parent task process. The public component is provider-first: pass an injectable provider object or a registered provider id. `runtime` remains only for the built-in legacy local transports. ```ts -import { Sandbox } from "smithers-orchestrator"; -import type { SandboxProvider } from "smithers-orchestrator/sandbox"; +import { Sandbox } from "smthrs"; +import type { SandboxProvider } from "smthrs/sandbox"; type SandboxProps = { id: string; @@ -3084,7 +3084,7 @@ type SandboxProvider = { Register reusable providers when a workflow should reference them by id: ```ts -import { registerSandboxProvider } from "smithers-orchestrator/sandbox"; +import { registerSandboxProvider } from "smthrs/sandbox"; const unregister = registerSandboxProvider(provider); @@ -3172,7 +3172,7 @@ Freestyle's current VM docs show the stable package as `freestyle`, VM creation > Invoke a child workflow with its own retry, cache, resume boundary. ```ts -import { Subflow } from "smithers-orchestrator"; +import { Subflow } from "smthrs"; type SubflowProps = { id: string; @@ -3228,7 +3228,7 @@ type SubflowProps = { > Close the current run; start a fresh one with optional carried state. ```ts -import { ContinueAsNew, continueAsNew } from "smithers-orchestrator"; +import { ContinueAsNew, continueAsNew } from "smthrs"; type ContinueAsNewProps = { state?: unknown; // JSON-serializable; arrives as ctx.input.__smithersContinuation.payload @@ -3277,7 +3277,7 @@ export default smithers((ctx) => { > Reads and modifies source code at runtime via a markdown strategy doc. ```ts -import { SuperSmithers } from "smithers-orchestrator"; +import { SuperSmithers } from "smthrs"; type SuperSmithersProps = { strategy: string | ReactElement; // markdown or MDX strategy document @@ -3320,7 +3320,7 @@ type SuperSmithersProps = { > Propagate token, latency, and cost budgets to descendant tasks. ```ts -import { Aspects } from "smithers-orchestrator"; +import { Aspects } from "smthrs"; type TokenBudgetConfig = { max: number; @@ -3380,7 +3380,7 @@ type AspectsProps = { > Run a subtree in an isolated worktree (git or jj) rooted at `path`. ```ts -import { Worktree } from "smithers-orchestrator"; +import { Worktree } from "smthrs"; type WorktreeProps = { key?: string; @@ -3420,7 +3420,7 @@ type WorktreeProps = { ```ts // Props -import { ReviewLoop } from "smithers-orchestrator"; +import { ReviewLoop } from "smthrs"; type ReviewLoopProps = { id?: string; // default "review-loop"; task ids derived as {id}-produce, {id}-review @@ -3464,7 +3464,7 @@ export default smithers(() => ( ```ts // Props -import { Optimizer } from "smithers-orchestrator"; +import { Optimizer } from "smthrs"; type OptimizerProps = { id?: string; // default "optimizer"; task ids {id}-generate, {id}-evaluate @@ -3510,7 +3510,7 @@ export default smithers(() => ( ```ts // Props -import { ContentPipeline } from "smithers-orchestrator"; +import { ContentPipeline } from "smthrs"; type ContentPipelineProps = { id?: string; @@ -3556,7 +3556,7 @@ export default smithers(() => ( ```ts // Props -import { DriftDetector } from "smithers-orchestrator"; +import { DriftDetector } from "smthrs"; type DriftDetectorProps = { id?: string; // default "drift"; ids {id}-capture, {id}-compare @@ -3602,7 +3602,7 @@ type DriftDetectorProps = { ```ts // Props -import { ScanFixVerify } from "smithers-orchestrator"; +import { ScanFixVerify } from "smthrs"; type ScanFixVerifyProps = { id?: string; // default "sfv" @@ -3651,7 +3651,7 @@ type ScanFixVerifyProps = { ```ts // Props -import { Poller } from "smithers-orchestrator"; +import { Poller } from "smthrs"; type PollerProps = { id?: string; // default "poll" @@ -3694,7 +3694,7 @@ type PollerProps = { ```ts // Props -import { Runbook } from "smithers-orchestrator"; +import { Runbook } from "smthrs"; type RunbookProps = { id?: string; // used as step-id prefix; defaults to "runbook" when omitted @@ -3747,7 +3747,7 @@ export default smithers(() => ( ```ts // Props -import { Supervisor } from "smithers-orchestrator"; +import { Supervisor } from "smthrs"; type SupervisorProps = { id?: string; // default: "supervisor" @@ -3798,7 +3798,7 @@ export default smithers(() => ( ```ts // Props -import { MergeQueue } from "smithers-orchestrator"; +import { MergeQueue } from "smthrs"; type MergeQueueProps = { id?: string; @@ -3829,7 +3829,7 @@ type MergeQueueProps = { ```ts // Props -import { CheckSuite } from "smithers-orchestrator"; +import { CheckSuite } from "smthrs"; type CheckConfig = { id: string; agent?: AgentLike; command?: string; label?: string }; @@ -3872,7 +3872,7 @@ type CheckSuiteProps = { ```ts // Props -import { ClassifyAndRoute } from "smithers-orchestrator"; +import { ClassifyAndRoute } from "smthrs"; type CategoryConfig = { agent: AgentLike; @@ -3925,7 +3925,7 @@ const classification = ctx.outputMaybe(outputs.classification, { ```ts // Props -import { GatherAndSynthesize } from "smithers-orchestrator"; +import { GatherAndSynthesize } from "smthrs"; type SourceDef = { agent: AgentLike; @@ -3978,7 +3978,7 @@ type GatherAndSynthesizeProps = { ```ts // Props -import { Panel } from "smithers-orchestrator"; +import { Panel } from "smthrs"; type PanelistConfig = { agent: AgentLike; role?: string; label?: string }; @@ -4027,7 +4027,7 @@ type PanelProps = { ```ts // Props -import { Debate } from "smithers-orchestrator"; +import { Debate } from "smthrs"; type DebateProps = { id?: string; // default: "debate" @@ -4070,7 +4070,7 @@ type DebateProps = { ```ts // Props -import { Kanban } from "smithers-orchestrator"; +import { Kanban } from "smthrs"; type ColumnDef = { name: string; @@ -4125,7 +4125,7 @@ const columns = [ Each recipe is a working snippet plus one line of context. They compose freely. -If you want a ready-to-run outcome before writing workflow code, start with Starters or run `bunx smithers-orchestrator starters`. +If you want a ready-to-run outcome before writing workflow code, start with Starters or run `bunx smthrs starters`. ## Implement → review loop @@ -4266,7 +4266,7 @@ One context boundary per logical operation, not per step. Splitting too finely l ## Per-agent least-privilege tools ```tsx -import { AnthropicAgent } from "smithers-orchestrator"; +import { AnthropicAgent } from "smthrs"; const analyst = new AnthropicAgent({ model, system: "Return JSON" }); // no tools const reviewer = new AnthropicAgent({ model, system: "...", tools: { read, grep } }); // read-only @@ -4280,7 +4280,7 @@ Match the tool surface to the role. External mutations must mark themselves and use the runtime idempotency key. ```tsx -import { defineTool } from "smithers-orchestrator/tools"; +import { defineTool } from "smthrs/tools"; const createTicket = defineTool({ name: "jira.create", @@ -4365,7 +4365,7 @@ Workflow logic factors out into hooks the same way React UI logic does. Smithers records a jj change ID (or git SHA) per attempt. Revert any attempt to its exact workspace state: ```bash -bunx smithers-orchestrator revert workflow.tsx --run-id <id> --node-id implement --attempt 1 +bunx smthrs revert workflow.tsx --run-id <id> --node-id implement --attempt 1 ``` Useful when an experiment leaves the worktree in a bad state. @@ -4373,10 +4373,10 @@ Useful when an experiment leaves the worktree in a bad state. ## Time travel: fork, replay, diff ```bash -bunx smithers-orchestrator timeline <run-id> --tree -bunx smithers-orchestrator diff <run-id> <node-id> -bunx smithers-orchestrator fork workflow.tsx --run-id <id> --frame 5 --reset-node analyze --label exp1 -bunx smithers-orchestrator replay workflow.tsx --run-id <id> --frame 5 --restore-vcs +bunx smthrs timeline <run-id> --tree +bunx smthrs diff <run-id> <node-id> +bunx smthrs fork workflow.tsx --run-id <id> --frame 5 --reset-node analyze --label exp1 +bunx smthrs replay workflow.tsx --run-id <id> --frame 5 --restore-vcs ``` Fork makes a child run without starting it (add `--run` to start immediately); replay also makes a child run but immediately resumes it. `--restore-vcs` checks out the original revision so re-execution sees the same source. @@ -4384,7 +4384,7 @@ Fork makes a child run without starting it (add `--run` to start immediately); r ## Scoring tasks ```tsx -import { schemaAdherenceScorer, latencyScorer, llmJudge } from "smithers-orchestrator/scorers"; +import { schemaAdherenceScorer, latencyScorer, llmJudge } from "smthrs/scorers"; <Task id="analyze" @@ -4413,7 +4413,7 @@ Scorers run after the task and never block. Sample expensive scorers with `ratio ``` ```bash -bunx smithers-orchestrator eval workflow.tsx --cases evals/smoke.jsonl --suite smoke --force +bunx smthrs eval workflow.tsx --cases evals/smoke.jsonl --suite smoke --force ``` Use eval suites when you need repeatable workflow-level checks. Assertions support `status`, `output` (exact match), and `outputContains` (partial match). Reports land in `.smithers/evals/<suite>.json`; the command exits non-zero on failures. @@ -4431,7 +4431,7 @@ Avoids unbounded SQLite growth in long-lived loops. ## Hot reload while authoring ```bash -bunx smithers-orchestrator up workflow.tsx --hot +bunx smthrs up workflow.tsx --hot ``` Edits to the workflow source apply on the next render frame without losing in-flight task state. Schema changes still require a fresh run. @@ -4467,9 +4467,9 @@ Every agent task produces a reusable session snapshot. `fork` starts a new task ## Types -> Public TypeScript surface for smithers-orchestrator. +> Public TypeScript surface for smthrs. -One source of truth: `tsc --emitDeclarationOnly` would produce something close to this. Import these types from `smithers-orchestrator` unless noted otherwise. +One source of truth: `tsc --emitDeclarationOnly` would produce something close to this. Import these types from `smthrs` unless noted otherwise. Major sections at a glance: - **Workflow / Context** — `SmithersWorkflow`, `SmithersCtx`, `RunOptions`, `RunResult` — the entry points for defining and running workflows. @@ -4477,7 +4477,7 @@ Major sections at a glance: - **Component props** — `WorkflowProps`, `ApprovalProps`, `SignalProps`, `LoopProps`, etc. — all JSX component interfaces. - **Errors** — `SmithersError`, `KnownSmithersErrorCode` — typed error codes; see Errors for descriptions. - **Server / Gateway** — `ServerOptions`, `GatewayOptions`, `GatewayAuthConfig` — self-hosting configuration. -- **Scorers / Memory / OpenAPI / Observability** — sub-path imports (`smithers-orchestrator/scorers`, `/memory`, `/openapi`, `/observability`). +- **Scorers / Memory / OpenAPI / Observability** — sub-path imports (`smthrs/scorers`, `/memory`, `/openapi`, `/observability`). ```ts // ============================================================================= @@ -5088,7 +5088,7 @@ type GatewayOptions = { }; // ============================================================================= -// Scorers (smithers-orchestrator/scorers) +// Scorers (smthrs/scorers) // ============================================================================= type ScoreResult = { score: number; reason?: string; meta?: Record<string, unknown> }; @@ -5113,7 +5113,7 @@ type CreateScorerConfig = { }; // ============================================================================= -// Memory (smithers-orchestrator/memory) +// Memory (smthrs/memory) // ============================================================================= type MemoryFact = { namespace: string; key: string; valueJson: string; schemaSig?: string | null; createdAtMs: number; updatedAtMs: number; ttlMs?: number | null }; @@ -5146,7 +5146,7 @@ type MemoryStore = { }; // ============================================================================= -// OpenAPI tools (smithers-orchestrator/openapi) +// OpenAPI tools (smthrs/openapi) // ============================================================================= type OpenApiAuth = @@ -5191,7 +5191,7 @@ type CreateSmithersApi<Schema = any> = { }; // ============================================================================= -// Observability (smithers-orchestrator/observability) +// Observability (smthrs/observability) // ============================================================================= type SmithersLogFormat = "json" | "pretty"; @@ -5200,7 +5200,7 @@ type SmithersObservabilityOptions = { service?: SmithersObservabilityService; lo type ResolvedSmithersObservabilityOptions = SmithersObservabilityOptions & { metricsPort?: number; metricsPath?: string }; ``` -For canonical, machine-checked types, install `smithers-orchestrator` and use editor go-to-definition. For runtime errors, see Errors. +For canonical, machine-checked types, install `smthrs` and use editor go-to-definition. For runtime errors, see Errors. --- @@ -5220,12 +5220,12 @@ import { isKnownSmithersErrorCode, isSmithersError, knownSmithersErrorCodes, -} from "smithers-orchestrator"; +} from "smthrs"; import type { KnownSmithersErrorCode, SmithersError, SmithersErrorCode, -} from "smithers-orchestrator"; +} from "smthrs"; ``` Every built-in `SmithersErrorInstance` carries three pieces of documentation metadata: @@ -5254,7 +5254,7 @@ Use `KnownSmithersErrorCode` for an exhaustive switch over built-in Smithers cod ```ts import { Effect } from "effect"; -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; try { await Effect.runPromise(runWorkflow(workflow, { input: {} })); @@ -5446,7 +5446,7 @@ JSON response codes, not `SmithersErrorInstance` objects. ## Package Configuration -> Reference for the smithers-orchestrator package exports, TypeScript configuration, and Bun preload setup. +> Reference for the smthrs package exports, TypeScript configuration, and Bun preload setup. This page covers: CLI binary usage, subpath export map, TypeScript compiler options, Bun preload and test config, and npm scripts. @@ -5460,88 +5460,88 @@ Use the subpath form to import only the surface you need. | Import path | Entry file | Purpose | |---|---|---| -| `smithers-orchestrator` | `./src/index.js` | Core API: `createSmithers`, components, `runWorkflow`, `renderMdx`, errors | -| `smithers-orchestrator/gateway` | `./src/gateway.js` | Gateway server primitives from `@smithers-orchestrator/server/gateway` | -| `smithers-orchestrator/gateway-client` | `./src/gateway-client.js` | Typed client helpers from `@smithers-orchestrator/gateway-client` | -| `smithers-orchestrator/gateway-react` | `./src/gateway-react.js` | React hooks and providers for gateway-backed UIs | -| `smithers-orchestrator/sandbox` | `./src/sandbox.js` | Sandbox provider contracts, bundles, and execution helpers | -| `smithers-orchestrator/jsx-runtime` | `./src/jsx-runtime.js` | JSX runtime (auto-resolved by `jsxImportSource`) | -| `smithers-orchestrator/jsx-dev-runtime` | `./src/jsx-runtime.js` | JSX dev runtime (auto-resolved in dev mode) | -| `smithers-orchestrator/tools` | `./src/tools.js` | Tool sandbox: `defineTool`, `read`, `grep`, `bash`, `edit`, `write` | -| `smithers-orchestrator/server` | `./src/server.js` | HTTP server for run management and event streaming | -| `smithers-orchestrator/observability` | `./src/observability.js` | OpenTelemetry traces, metrics, and Prometheus integration | -| `smithers-orchestrator/mdx-plugin` | `./src/mdx-plugin.js` | Bun preload plugin for `.mdx` imports | -| `smithers-orchestrator/dom/renderer` | `./src/dom/renderer.js` | Internal renderer (advanced use) | -| `smithers-orchestrator/serve` | `./src/serve.js` | Single-workflow HTTP server via `createServeApp` | -| `smithers-orchestrator/scorers` | `./src/scorers.js` | Eval scorers: `createScorer`, `llmJudge`, `aggregateScores` | -| `smithers-orchestrator/memory` | `./src/memory.js` | Cross-run facts, message history, processors, and metrics | -| `smithers-orchestrator/openapi` | `./src/openapi.js` | Generate AI SDK tools from OpenAPI specs | -| `smithers-orchestrator/control-plane` | `./src/control-plane.js` | Organization, project, billing, usage, secret-reference, and audit primitives | - -The PI plugin is published as the separate `@smithers-orchestrator/pi-plugin` package. The old `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extension` subpaths are no longer exported. +| `smthrs` | `./src/index.js` | Core API: `createSmithers`, components, `runWorkflow`, `renderMdx`, errors | +| `smthrs/gateway` | `./src/gateway.js` | Gateway server primitives from `@smthrs/server/gateway` | +| `smthrs/gateway-client` | `./src/gateway-client.js` | Typed client helpers from `@smthrs/gateway-client` | +| `smthrs/gateway-react` | `./src/gateway-react.js` | React hooks and providers for gateway-backed UIs | +| `smthrs/sandbox` | `./src/sandbox.js` | Sandbox provider contracts, bundles, and execution helpers | +| `smthrs/jsx-runtime` | `./src/jsx-runtime.js` | JSX runtime (auto-resolved by `jsxImportSource`) | +| `smthrs/jsx-dev-runtime` | `./src/jsx-runtime.js` | JSX dev runtime (auto-resolved in dev mode) | +| `smthrs/tools` | `./src/tools.js` | Tool sandbox: `defineTool`, `read`, `grep`, `bash`, `edit`, `write` | +| `smthrs/server` | `./src/server.js` | HTTP server for run management and event streaming | +| `smthrs/observability` | `./src/observability.js` | OpenTelemetry traces, metrics, and Prometheus integration | +| `smthrs/mdx-plugin` | `./src/mdx-plugin.js` | Bun preload plugin for `.mdx` imports | +| `smthrs/dom/renderer` | `./src/dom/renderer.js` | Internal renderer (advanced use) | +| `smthrs/serve` | `./src/serve.js` | Single-workflow HTTP server via `createServeApp` | +| `smthrs/scorers` | `./src/scorers.js` | Eval scorers: `createScorer`, `llmJudge`, `aggregateScores` | +| `smthrs/memory` | `./src/memory.js` | Cross-run facts, message history, processors, and metrics | +| `smthrs/openapi` | `./src/openapi.js` | Generate AI SDK tools from OpenAPI specs | +| `smthrs/control-plane` | `./src/control-plane.js` | Organization, project, billing, usage, secret-reference, and audit primitives | + +The PI plugin is published as the separate `@smthrs/pi-plugin` package. The old `smthrs/pi-plugin` and `smthrs/pi-extension` subpaths are no longer exported. ## Workspace Packages -Most applications should import from `smithers-orchestrator`. The scoped workspace packages below are published for advanced integrations, custom clients, and framework development. +Most applications should import from `smthrs`. The scoped workspace packages below are published for advanced integrations, custom clients, and framework development. | Package | Primary surface | Related docs | |---|---|---| -| `smithers-orchestrator` | Public facade for workflow authoring, components, agents, tools, server helpers, memory, OpenAPI tools, scorers, and JSX runtime setup | This page, Types | -| `@smithers-orchestrator/cli` | CLI entrypoint, MCP server, local workflow pack, account registry commands, DevTools commands, cron, alerts, and server commands | CLI Overview, MCP Server | -| `@smithers-orchestrator/accounts` | Subscription and API-key account registry helpers: `listAccounts`, `addAccount`, `removeAccount`, `getAccount`, `accountToProviderEnv` | CLI Agents | -| `@smithers-orchestrator/agents` | AI SDK and CLI agent adapters, CLI capability reports, agent contracts, and tool capability registry | CLI Agents, SDK Agents | -| `@smithers-orchestrator/components` | JSX workflow components such as `Task`, `Workflow`, `Approval`, `Sandbox`, `Timer`, `Signal`, and control-flow components | Components | -| `@smithers-orchestrator/control-plane` | Durable organization, project, team, billing, usage, secret-reference, and audit primitives for hosted deployments | Control Plane | -| `@smithers-orchestrator/db` | SQLite/Drizzle adapter, table setup, run-state derivation, schema helpers, and output tables | Data Model, Run State | -| `@smithers-orchestrator/devtools` | Snapshot, tree, diff, node lookup, task collection, and DevTools run-store helpers behind the CLI inspect commands | Debugging, CLI Overview | -| `@smithers-orchestrator/driver` | Runtime driver contracts: `RunOptions`, `RunResult`, `RunStatus`, `SmithersCtx`, outputs, task runtime, interop, and child process helpers | Run Workflow, Execution Model | -| `@smithers-orchestrator/engine` | Workflow rendering/execution API: `runWorkflow`, `renderFrame`, `workflow`, `Smithers`, `fragment`, signals, and Effect versioning | Render Frame, Run Workflow | -| `@smithers-orchestrator/errors` | Error definitions, known codes, JSON serialization, docs URLs, and type guards | Errors | -| `@smithers-orchestrator/gateway` | Stable Gateway RPC contracts, auth scopes, deployment metadata, and generated OpenAPI schema | Gateway, RPC | -| `@smithers-orchestrator/gateway-client` | Browser/client SDK for Gateway RPC requests and event streams | Gateway | -| `@smithers-orchestrator/gateway-react` | React hooks and root helpers for Gateway-backed UIs | Gateway | -| `@smithers-orchestrator/graph` | Framework-neutral workflow graph model, XML nodes, task descriptors, and graph snapshots | Planner Internals, Types | -| `@smithers-orchestrator/jj-darwin-arm64` | Vendored jj (Jujutsu) binary for darwin-arm64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | VCS Guide | -| `@smithers-orchestrator/jj-darwin-x64` | Vendored jj (Jujutsu) binary for darwin-x64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | VCS Guide | -| `@smithers-orchestrator/jj-linux-arm64` | Vendored jj (Jujutsu) binary for linux-arm64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | VCS Guide | -| `@smithers-orchestrator/jj-linux-x64` | Vendored jj (Jujutsu) binary for linux-x64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | VCS Guide | -| `@smithers-orchestrator/jj-win32-x64` | Vendored jj (Jujutsu) binary for win32-x64; auto-installed as an optional dependency of `@smithers-orchestrator/vcs`, not depended on directly | VCS Guide | -| `@smithers-orchestrator/memory` | Cross-run facts, message history, processors, namespaces, service layer, and metrics | Memory, Memory Quickstart | -| `@smithers-orchestrator/observability` | Event types, logging, tracing, metrics, Prometheus rendering, and runtime observability layers | Events, Event Types | -| `@smithers-orchestrator/openapi` | OpenAPI parsing, operation extraction, AI SDK tool generation, schema conversion, and metrics | OpenAPI Tools, OpenAPI Quickstart | -| `@smithers-orchestrator/pi-plugin` | PI extension runtime, views, API wrappers, and workflow inspection integration | PI Integration | -| `@smithers-orchestrator/protocol` | Shared contracts, small value types, and protocol-level errors for cross-package use | Types, Errors | -| `@smithers-orchestrator/react-reconciler` | Custom React reconciler, host context, DOM renderer, DevTools preload, driver, and JSX runtime internals | Why React, Render Frame | -| `@smithers-orchestrator/sandbox` | Sandbox bundle, execute, and transport primitives used by the `Sandbox` component | Sandbox | -| `@smithers-orchestrator/scheduler` | Pure workflow state machine: task state, scheduler decisions, retry/cache policies, wait reasons, and workflow session services | Workflow State, Suspend and Resume | -| `@smithers-orchestrator/scorers` | Scorer definitions, LLM judges, batch execution, aggregation, persistence schema, and metrics | Evals, Evals Quickstart | -| `@smithers-orchestrator/server` | HTTP, WebSocket, Gateway, cron, webhook, metrics, and single-workflow serving APIs | Server, Serve | -| `@smithers-orchestrator/smithers` | Cerebras chat PWA and workflow graph demo application | CLI Overview | -| `@smithers-orchestrator/smithers-demo` | Interactive Smithers workflow generator demo with React Flow visualization | CLI Overview | -| `@smithers-orchestrator/smithers-studio-2` | Next Smithers Studio UI shell for browsing and driving workflow runs | CLI Overview | -| `@smithers-orchestrator/smithers-tui-demo` | Private React TUI demo app for terminal workflow interaction experiments | CLI Overview | -| `@smithers-orchestrator/time-travel` | Snapshots, diffs, forks, replay, timelines, VCS tags, rewind locks/audits, and time-travel metrics | Time Travel, Time Travel Quickstart | -| `@smithers-orchestrator/tool-context` | AsyncLocalStorage tool-execution context (run/node/idempotency keys, durability snapshot hook) shared by the engine and `smithers-orchestrator` without a dependency cycle | Execution Model | -| `@smithers-orchestrator/usage` | Account quota and rate-limit usage reporting for Smithers providers | CLI Overview | -| `@smithers-orchestrator/vcs` | VCS discovery and jj workspace operations such as `runJj`, `workspaceAdd`, `workspaceList`, and pointer reverts | VCS Helpers, VCS Guide | +| `smthrs` | Public facade for workflow authoring, components, agents, tools, server helpers, memory, OpenAPI tools, scorers, and JSX runtime setup | This page, Types | +| `@smthrs/cli` | CLI entrypoint, MCP server, local workflow pack, account registry commands, DevTools commands, cron, alerts, and server commands | CLI Overview, MCP Server | +| `@smthrs/accounts` | Subscription and API-key account registry helpers: `listAccounts`, `addAccount`, `removeAccount`, `getAccount`, `accountToProviderEnv` | CLI Agents | +| `@smthrs/agents` | AI SDK and CLI agent adapters, CLI capability reports, agent contracts, and tool capability registry | CLI Agents, SDK Agents | +| `@smthrs/components` | JSX workflow components such as `Task`, `Workflow`, `Approval`, `Sandbox`, `Timer`, `Signal`, and control-flow components | Components | +| `@smthrs/control-plane` | Durable organization, project, team, billing, usage, secret-reference, and audit primitives for hosted deployments | Control Plane | +| `@smthrs/db` | SQLite/Drizzle adapter, table setup, run-state derivation, schema helpers, and output tables | Data Model, Run State | +| `@smthrs/devtools` | Snapshot, tree, diff, node lookup, task collection, and DevTools run-store helpers behind the CLI inspect commands | Debugging, CLI Overview | +| `@smthrs/driver` | Runtime driver contracts: `RunOptions`, `RunResult`, `RunStatus`, `SmithersCtx`, outputs, task runtime, interop, and child process helpers | Run Workflow, Execution Model | +| `@smthrs/engine` | Workflow rendering/execution API: `runWorkflow`, `renderFrame`, `workflow`, `Smithers`, `fragment`, signals, and Effect versioning | Render Frame, Run Workflow | +| `@smthrs/errors` | Error definitions, known codes, JSON serialization, docs URLs, and type guards | Errors | +| `@smthrs/gateway` | Stable Gateway RPC contracts, auth scopes, deployment metadata, and generated OpenAPI schema | Gateway, RPC | +| `@smthrs/gateway-client` | Browser/client SDK for Gateway RPC requests and event streams | Gateway | +| `@smthrs/gateway-react` | React hooks and root helpers for Gateway-backed UIs | Gateway | +| `@smthrs/graph` | Framework-neutral workflow graph model, XML nodes, task descriptors, and graph snapshots | Planner Internals, Types | +| `@smthrs/jj-darwin-arm64` | Vendored jj (Jujutsu) binary for darwin-arm64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | VCS Guide | +| `@smthrs/jj-darwin-x64` | Vendored jj (Jujutsu) binary for darwin-x64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | VCS Guide | +| `@smthrs/jj-linux-arm64` | Vendored jj (Jujutsu) binary for linux-arm64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | VCS Guide | +| `@smthrs/jj-linux-x64` | Vendored jj (Jujutsu) binary for linux-x64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | VCS Guide | +| `@smthrs/jj-win32-x64` | Vendored jj (Jujutsu) binary for win32-x64; auto-installed as an optional dependency of `@smthrs/vcs`, not depended on directly | VCS Guide | +| `@smthrs/memory` | Cross-run facts, message history, processors, namespaces, service layer, and metrics | Memory, Memory Quickstart | +| `@smthrs/observability` | Event types, logging, tracing, metrics, Prometheus rendering, and runtime observability layers | Events, Event Types | +| `@smthrs/openapi` | OpenAPI parsing, operation extraction, AI SDK tool generation, schema conversion, and metrics | OpenAPI Tools, OpenAPI Quickstart | +| `@smthrs/pi-plugin` | PI extension runtime, views, API wrappers, and workflow inspection integration | PI Integration | +| `@smthrs/protocol` | Shared contracts, small value types, and protocol-level errors for cross-package use | Types, Errors | +| `@smthrs/react-reconciler` | Custom React reconciler, host context, DOM renderer, DevTools preload, driver, and JSX runtime internals | Why React, Render Frame | +| `@smthrs/sandbox` | Sandbox bundle, execute, and transport primitives used by the `Sandbox` component | Sandbox | +| `@smthrs/scheduler` | Pure workflow state machine: task state, scheduler decisions, retry/cache policies, wait reasons, and workflow session services | Workflow State, Suspend and Resume | +| `@smthrs/scorers` | Scorer definitions, LLM judges, batch execution, aggregation, persistence schema, and metrics | Evals, Evals Quickstart | +| `@smthrs/server` | HTTP, WebSocket, Gateway, cron, webhook, metrics, and single-workflow serving APIs | Server, Serve | +| `@smthrs/smithers` | Cerebras chat PWA and workflow graph demo application | CLI Overview | +| `@smthrs/smithers-demo` | Interactive Smithers workflow generator demo with React Flow visualization | CLI Overview | +| `@smthrs/smithers-studio-2` | Next Smithers Studio UI shell for browsing and driving workflow runs | CLI Overview | +| `@smthrs/smithers-tui-demo` | Private React TUI demo app for terminal workflow interaction experiments | CLI Overview | +| `@smthrs/time-travel` | Snapshots, diffs, forks, replay, timelines, VCS tags, rewind locks/audits, and time-travel metrics | Time Travel, Time Travel Quickstart | +| `@smthrs/tool-context` | AsyncLocalStorage tool-execution context (run/node/idempotency keys, durability snapshot hook) shared by the engine and `smthrs` without a dependency cycle | Execution Model | +| `@smthrs/usage` | Account quota and rate-limit usage reporting for Smithers providers | CLI Overview | +| `@smthrs/vcs` | VCS discovery and jj workspace operations such as `runJj`, `workspaceAdd`, `workspaceList`, and pointer reverts | VCS Helpers, VCS Guide | ### Usage ```ts // Core API -import { createSmithers, runWorkflow } from "smithers-orchestrator"; +import { createSmithers, runWorkflow } from "smthrs"; // Tools -import { defineTool, bash, read, write } from "smithers-orchestrator/tools"; +import { defineTool, bash, read, write } from "smthrs/tools"; // Scorers -import { createScorer, llmJudge } from "smithers-orchestrator/scorers"; +import { createScorer, llmJudge } from "smthrs/scorers"; // MDX plugin (in preload.ts) -import { mdxPlugin } from "smithers-orchestrator/mdx-plugin"; +import { mdxPlugin } from "smthrs/mdx-plugin"; // Control-plane primitives -import { ControlPlaneStore } from "smithers-orchestrator/control-plane"; +import { ControlPlaneStore } from "smthrs/control-plane"; ``` ## TypeScript Configuration @@ -5552,42 +5552,42 @@ import { ControlPlaneStore } from "smithers-orchestrator/control-plane"; { "compilerOptions": { "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator" + "jsxImportSource": "smthrs" } } ``` -This tells TypeScript to resolve JSX transforms from `smithers-orchestrator/jsx-runtime` instead of `react/jsx-runtime`. The Smithers JSX runtime re-exports React's runtime, so component behavior is identical. This setting enables proper type resolution for Smithers workflow components. +This tells TypeScript to resolve JSX transforms from `smthrs/jsx-runtime` instead of `react/jsx-runtime`. The Smithers JSX runtime re-exports React's runtime, so component behavior is identical. This setting enables proper type resolution for Smithers workflow components. See JSX Installation for the complete TypeScript setup. ### Path Aliases -When developing inside the `smithers-orchestrator` monorepo, the root `tsconfig.json` defines path aliases so source imports resolve without a build step: +When developing inside the `smthrs` monorepo, the root `tsconfig.json` defines path aliases so source imports resolve without a build step: ```jsonc "paths": { - "smithers-orchestrator": ["./packages/smithers/src/index.js"], - "smithers-orchestrator/jsx-runtime": ["./packages/smithers/src/jsx-runtime.js"], - "smithers-orchestrator/jsx-dev-runtime": ["./packages/smithers/src/jsx-runtime.js"], - "smithers-orchestrator/tools": ["./packages/smithers/src/tools.js"], - "smithers-orchestrator/*": [ + "smthrs": ["./packages/smithers/src/index.js"], + "smthrs/jsx-runtime": ["./packages/smithers/src/jsx-runtime.js"], + "smthrs/jsx-dev-runtime": ["./packages/smithers/src/jsx-runtime.js"], + "smthrs/tools": ["./packages/smithers/src/tools.js"], + "smthrs/*": [ "./packages/smithers/src/*.js", "./packages/smithers/src/*/index.js" ], - "smithers-orchestrator/scorers": ["./packages/scorers/src/index.js"], - "@smithers-orchestrator/agents": ["./packages/agents/src/index.js"], - "@smithers-orchestrator/gateway-client": ["./packages/gateway-client/src/index.ts"], - "@smithers-orchestrator/gateway-react": ["./packages/gateway-react/src/index.ts"], - "@smithers-orchestrator/pi-plugin": ["./packages/pi-plugin/src/index.ts"], - "@smithers-orchestrator/server": ["./packages/server/src/index.js"] + "smthrs/scorers": ["./packages/scorers/src/index.js"], + "@smthrs/agents": ["./packages/agents/src/index.js"], + "@smthrs/gateway-client": ["./packages/gateway-client/src/index.ts"], + "@smthrs/gateway-react": ["./packages/gateway-react/src/index.ts"], + "@smthrs/pi-plugin": ["./packages/pi-plugin/src/index.ts"], + "@smthrs/server": ["./packages/server/src/index.js"] // The root tsconfig includes the same style of alias for each workspace package. } ``` -The root package is a private `smithers-monorepo`; `smithers-orchestrator` resolves to `packages/smithers`. +The root package is a private `smithers-monorepo`; `smthrs` resolves to `packages/smithers`. -**End users do not need path aliases** — only framework developers do. Installing `smithers-orchestrator` as a dependency lets Node/Bun module resolution handle import paths automatically. +**End users do not need path aliases** — only framework developers do. Installing `smthrs` as a dependency lets Node/Bun module resolution handle import paths automatically. ### Local Type Root Shims @@ -5634,7 +5634,7 @@ Defined in the root `package.json` for development: | Script | Command | Purpose | |---|---|---| | `typecheck` | `tsc --noEmit` | Type-check the `src/` and `tests/` trees against `tsconfig.json` | -| `typecheck:examples` | `tsc -p examples/tsconfig.json --noEmit` | Type-check example files against a separate config that maps `smithers-orchestrator` to `examples-entry.js` | +| `typecheck:examples` | `tsc -p examples/tsconfig.json --noEmit` | Type-check example files against a separate config that maps `smthrs` to `examples-entry.js` | | `lint` | `oxlint ... packages/*/src packages/*/tests` | Lint package source and tests with oxlint | | `lint:fix` | `oxlint ... --fix --fix-suggestions packages/*/src packages/*/tests` | Apply supported oxlint fixes | | `cli` | `bun run apps/cli/src/index.js` | Run the local development CLI entrypoint | @@ -5663,7 +5663,7 @@ See Production Project Structure for a complete user-project `package.json` exam ## VCS Helper Reference -> Public JJ helper APIs exported by smithers-orchestrator for repo detection, snapshot inspection, and workspace management. +> Public JJ helper APIs exported by smthrs for repo detection, snapshot inspection, and workspace management. Smithers exports a small JJ helper surface for applications that inspect or manage Jujutsu state directly. @@ -5684,7 +5684,7 @@ import { workspaceAdd, workspaceList, workspaceClose, -} from "smithers-orchestrator"; +} from "smthrs"; ``` ## `runJj(args, opts?)` @@ -5842,10 +5842,10 @@ For workflow-level revert behavior, prefer the runtime and CLI docs: ## runWorkflow -> Programmatic entry point. Equivalent to `bunx smithers-orchestrator up`. +> Programmatic entry point. Equivalent to `bunx smthrs up`. ```ts -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; import { Effect } from "effect"; const result = await Effect.runPromise(runWorkflow(workflow, { @@ -5893,7 +5893,7 @@ All in-flight attempts are marked cancelled and `NodeCancelled` events are emitt ## Hijack handoff -If a CLI hijack happens mid-run (`bunx smithers-orchestrator hijack <id>`), the run ends `"cancelled"` and the latest attempt metadata stores `hijackHandoff`. On `resume: true`, Smithers waits for a safe handoff point and continues with the persisted CLI session id (see CLI Agents) or the persisted message history (SDK agents). +If a CLI hijack happens mid-run (`bunx smthrs hijack <id>`), the run ends `"cancelled"` and the latest attempt metadata stores `hijackHandoff`. On `resume: true`, Smithers waits for a safe handoff point and continues with the persisted CLI session id (see CLI Agents) or the persisted message history (SDK agents). ## `result.output` @@ -5920,8 +5920,8 @@ const rows = db.query("SELECT * FROM page WHERE run_id = ? ORDER BY iteration DE Use `renderFrame` to preview the task graph — for CI validation, graph-inspection UIs, or dry-run checks — without executing or persisting anything. `runId` and `iteration` are arbitrary strings used only for snapshot identity. ```ts -import { renderFrame } from "smithers-orchestrator"; -import { SmithersCtx } from "@smithers-orchestrator/driver"; +import { renderFrame } from "smthrs"; +import { SmithersCtx } from "@smthrs/driver"; import { Effect } from "effect"; const ctx = new SmithersCtx({ runId: "preview", iteration: 0, input: { task: "preview" }, outputs: {} }); @@ -5961,7 +5961,7 @@ bunx smithers graph workflow.tsx --input '{"task":"preview"}' Each successful task attempt captures the current [JJ](https://jj-vcs.github.io/jj/) change ID into `_smithers_attempts.jj_pointer`. `revert` restores the workspace to that state and discards any graph snapshots recorded after the attempt began, so the run's timeline rolls back to the point-in-time of that attempt. ```bash -bunx smithers-orchestrator revert workflow.tsx \ +bunx smthrs revert workflow.tsx \ --run-id <id> --node-id <node> [--attempt N=1] [--iteration N=0] ``` @@ -5976,7 +5976,7 @@ Revert restores files only — it doesn't alter JJ history; the restoration crea ## Programmatic ```ts -import { revertToAttempt } from "smithers-orchestrator"; +import { revertToAttempt } from "smthrs"; const result = await revertToAttempt(adapter, { runId: "abc123", @@ -6080,7 +6080,7 @@ Terminal states (`succeeded`, `failed`, `cancelled`) carry neither. ## computeRunState ```ts -import { computeRunState } from "@smithers-orchestrator/db/runState"; +import { computeRunState } from "@smthrs/db/runState"; const view = await computeRunState(adapter, runId); view.state; // "running" | ... @@ -6096,7 +6096,7 @@ not run heuristics. when you already have the rows in memory: ```ts -import { deriveRunState } from "@smithers-orchestrator/db/runState"; +import { deriveRunState } from "@smthrs/db/runState"; const view = deriveRunState({ run, @@ -6161,7 +6161,7 @@ Historical TUI product/design material is kept for reference, but it does not de Run `smithers optimize` to generate improved prompts for agent tasks via GEPA, verify the improvement against your eval suite, and save the result as a reusable artifact. ```bash -bunx smithers-orchestrator optimize workflow.tsx \ +bunx smthrs optimize workflow.tsx \ --cases evals/smoke.jsonl \ --suite smoke-gepa \ --provider cerebras \ @@ -6181,7 +6181,7 @@ The command writes the artifact only when the optimized score improves by at lea Apply the optimized prompts to future evals with `--optimization`: ```bash -bunx smithers-orchestrator eval workflow.tsx \ +bunx smthrs eval workflow.tsx \ --cases evals/smoke.jsonl \ --suite smoke-optimized \ --optimization .smithers/optimizations/smoke-gepa.json @@ -6194,7 +6194,7 @@ The artifact patches only agent-backed `<Task>` prompts by `nodeId`. Workflow st Example: the following run demonstrates a baseline failure corrected by a GEPA-generated patch. The baseline prompt did not include the required optimization token, so the eval failed. Cerebras GEPA generated a prompt patch that included the missing requirement, and the optimized eval passed. ```bash -CEREBRAS_API_KEY=... bunx smithers-orchestrator optimize workflow.tsx \ +CEREBRAS_API_KEY=... bunx smthrs optimize workflow.tsx \ --cases evals/opt.jsonl \ --suite cerebras-proof \ --provider cerebras \ @@ -6265,7 +6265,7 @@ Memory persists state **across runs**. Task outputs are per-run; memory is per-n ## Three layers ```ts -import { createMemoryStore } from "smithers-orchestrator/memory"; +import { createMemoryStore } from "smthrs/memory"; import { Database } from "bun:sqlite"; const store = createMemoryStore(new Database("smithers.db")); @@ -6310,7 +6310,7 @@ Pick the kind to match the lifetime: `workflow` is scoped to a workflow definiti Maintenance jobs you run periodically: ```ts -import { TtlGarbageCollector, TokenLimiter, Summarizer } from "smithers-orchestrator/memory"; +import { TtlGarbageCollector, TokenLimiter, Summarizer } from "smthrs/memory"; const gc = TtlGarbageCollector(); // expire facts past their TTL const limiter = TokenLimiter(4000); // keep history under token budget @@ -6324,7 +6324,7 @@ await summarizer.process(store); ## Inspect from the CLI ```bash -bunx smithers-orchestrator memory list workflow:code-review -w workflow.tsx +bunx smthrs memory list workflow:code-review -w workflow.tsx ``` The CLI currently exposes fact listing. Use the store API for writes, deletes, threads, messages, and TTL cleanup. @@ -6358,7 +6358,7 @@ This material is now in the opt-in `/llms-memory.txt` fragment. `createOpenApiTools` parses an OpenAPI 3.x spec and returns AI SDK tools — one per operation, with Zod schemas converted from the spec's JSON schemas. ```ts -import { createOpenApiTools } from "smithers-orchestrator/openapi"; +import { createOpenApiTools } from "smthrs/openapi"; const tools = await createOpenApiTools("./petstore.json", { baseUrl: "https://api.petstore.example.com", @@ -6403,7 +6403,7 @@ Pass the spec itself as the first argument to `createOpenApiTools(input, options ## CLI preview ```bash -bunx smithers-orchestrator openapi list ./api/openapi.yaml +bunx smthrs openapi list ./api/openapi.yaml ``` Lists every operationId, method, path, and summary — useful for auditing what an agent will be able to call before wiring it up. @@ -6429,7 +6429,7 @@ For each operation: ## Observability -Each tool call emits an `OpenApiToolCalled` event with `operationId`, `method`, `path`, `durationMs`, `status`. Visible via `bunx smithers-orchestrator events <run-id> --type openapi`. +Each tool call emits an `OpenApiToolCalled` event with `operationId`, `method`, `path`, `durationMs`, `status`. Visible via `bunx smthrs events <run-id> --type openapi`. ## Notes @@ -6462,7 +6462,7 @@ This material is now in the opt-in `/llms-openapi.txt` fragment. ## Quick start ```ts -import { startServer } from "smithers-orchestrator"; +import { startServer } from "smthrs"; import { drizzle } from "drizzle-orm/bun-sqlite"; const server = startServer({ @@ -6527,7 +6527,7 @@ Errors use the envelope `{ "error": { "code", "message", "details" } }`. Common Tools resolve relative to `rootDir`. The example below exposes a workflow that uses the built-in `bash` tool through the server; clients call it via `POST /v1/runs`. ```tsx -import { Task, Workflow, createSmithers, bash } from "smithers-orchestrator"; +import { Task, Workflow, createSmithers, bash } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -6572,7 +6572,7 @@ Serve mode starts a Hono-based HTTP server alongside a running workflow. Every r ## CLI ```bash -bunx smithers-orchestrator up workflow.tsx --serve --port 3000 --host 0.0.0.0 +bunx smthrs up workflow.tsx --serve --port 3000 --host 0.0.0.0 ``` | Flag | Default | Description | @@ -6588,13 +6588,13 @@ The process stays alive after the workflow completes so final state remains quer Detached mode: ```bash -bunx smithers-orchestrator up workflow.tsx --serve --port 8080 -d +bunx smthrs up workflow.tsx --serve --port 8080 -d ``` ## Programmatic ```ts -import { createServeApp } from "smithers-orchestrator/serve"; +import { createServeApp } from "smthrs/serve"; const app = createServeApp({ workflow, @@ -6755,7 +6755,7 @@ Unknown routes return `404` with code `NOT_FOUND`. ```bash # Start a workflow with serve mode -bunx smithers-orchestrator up workflow.tsx --serve --port 8080 --auth-token sk-secret +bunx smthrs up workflow.tsx --serve --port 8080 --auth-token sk-secret # Status curl http://localhost:8080/ -H "Authorization: Bearer sk-secret" @@ -6784,7 +6784,7 @@ curl http://localhost:8080/health ## Quick start ```tsx -import { Gateway, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { Gateway, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -6830,7 +6830,7 @@ ws.onopen = () => ws.send(JSON.stringify({ Programmatic clients — bots, schedulers, dashboards, third-party UIs — talk to the Gateway through the typed client SDK over the same RPC and WebSocket API. For the full custom-UI guide (declarative queries, pushed updates, stale guards, reconnect/resume, backpressure, optimistic mutations, auth, vanilla JS + React hooks) see Custom UIs. ```ts -import { SmithersGatewayClient } from "smithers-orchestrator/gateway-client"; +import { SmithersGatewayClient } from "smthrs/gateway-client"; const gateway = new SmithersGatewayClient(); const workflows = await gateway.listWorkflows(); @@ -6846,8 +6846,8 @@ Gateway client exports: | Package | Exports | |---|---| -| `smithers-orchestrator/gateway-client` | `SmithersGatewayClient`, `SmithersGatewayConnection`, `GatewayRpcError`, `gatewayBackoffDelay`, RPC frame/type-map types, `GatewayUiBootConfig`, `SmithersGatewayClientOptions` | -| `smithers-orchestrator/gateway-react` | `SmithersGatewayProvider`, `createGatewayReactRoot`, `useGatewayRun`, `useGatewayRuns`, `useGatewayWorkflows`, `useGatewayApprovals`, `useGatewayNodeOutput`, `useGatewayRunEvents`, `useGatewayActions`, `useGatewayRpc`, `useSmithersGateway` | +| `smthrs/gateway-client` | `SmithersGatewayClient`, `SmithersGatewayConnection`, `GatewayRpcError`, `gatewayBackoffDelay`, RPC frame/type-map types, `GatewayUiBootConfig`, `SmithersGatewayClientOptions` | +| `smthrs/gateway-react` | `SmithersGatewayProvider`, `createGatewayReactRoot`, `useGatewayRun`, `useGatewayRuns`, `useGatewayWorkflows`, `useGatewayApprovals`, `useGatewayNodeOutput`, `useGatewayRunEvents`, `useGatewayActions`, `useGatewayRpc`, `useSmithersGateway` | ## RPC methods (TOON) @@ -7207,20 +7207,20 @@ For clients that read JSON config directly: "mcpServers": { "smithers": { "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"] + "args": ["smthrs", "--mcp"] } } } ``` -Project-scoped install (e.g. a monorepo where Smithers is a dev dependency — ensure `smithers-orchestrator` is in the local `package.json`): +Project-scoped install (e.g. a monorepo where Smithers is a dev dependency — ensure `smthrs` is in the local `package.json`): ```json { "mcpServers": { "smithers": { "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"] + "args": ["smthrs", "--mcp"] } } } @@ -7934,7 +7934,7 @@ you need a React-free API for generated workflow definitions. ## Minimal workflow ```ts -import { Smithers } from "smithers-orchestrator"; +import { Smithers } from "smthrs"; import { Effect, Schema } from "effect"; const inputSchema = Schema.Struct({ @@ -8213,7 +8213,7 @@ const opsAgent = new Agent({ Use this when your CLI agent already supports external integrations and Smithers should only orchestrate the task. ```ts -import { PiAgent } from "smithers-orchestrator"; +import { PiAgent } from "smthrs"; const pi = new PiAgent({ provider: "openai", @@ -8267,7 +8267,7 @@ CLI-backed agent classes wrap external AI command-line tools and implement the [ ## Quick Start ```tsx -import { ClaudeCodeAgent, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { ClaudeCodeAgent, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -8310,7 +8310,7 @@ CLI binaries must be on `PATH`: `claude`, `codex`, `agy`, `pi`, `kimi`, `forge`, `CodexAgent` is the Smithers wrapper for OpenAI's `codex` CLI. It runs `codex exec` in non-interactive mode, sends the task prompt over stdin, forces `--json` so Smithers can stream structured progress, and captures the final assistant message via `--output-last-message`. ```tsx -import { CodexAgent, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { CodexAgent, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -8337,7 +8337,7 @@ export default smithers(() => ( - Subscription login: run `codex login` once. For isolated accounts, pass `configDir`; Smithers sets `CODEX_HOME` for that invocation. - API billing: pass `apiKey` or set `OPENAI_API_KEY`; Smithers forwards it to the spawned `codex` process. -- Account registry: `bunx smithers-orchestrator agents add --provider codex ...` registers a subscription config directory, while `--provider openai-api` registers API-key billing for Codex-compatible providers. +- Account registry: `bunx smthrs agents add --provider codex ...` registers a subscription config directory, while `--provider openai-api` registers API-key billing for Codex-compatible providers. ### Structured output @@ -8379,7 +8379,7 @@ await agent.generate({ `ClaudeCodeAgent` extends the base with Claude Code-specific session and permission flags. Key additions: `permissionMode`, `sessionId`, `mcpConfig`, `resume`. ```ts -import { ClaudeCodeAgent } from "smithers-orchestrator"; +import { ClaudeCodeAgent } from "smthrs"; new ClaudeCodeAgent({ permissionMode?: "acceptEdits" | "bypassPermissions" | "default" | "delegate" | "dontAsk" | "plan"; allowedTools?: string[]; disallowedTools?: string[]; disableSlashCommands?: boolean; @@ -8400,7 +8400,7 @@ new ClaudeCodeAgent({ `CodexAgent` extends the base with OpenAI Codex-specific flags. Key additions: `sandbox`, `config`, `outputSchema`. ```ts -import { CodexAgent } from "smithers-orchestrator"; +import { CodexAgent } from "smthrs"; new CodexAgent({ sandbox?: "read-only" | "workspace-write" | "danger-full-access"; fullAuto?: boolean; dangerouslyBypassApprovalsAndSandbox?: boolean; @@ -8417,7 +8417,7 @@ new CodexAgent({ `AntigravityAgent` wraps the Google `agy` CLI. Key additions: `allowedMcpServerNames`, `geminiDir`, `conversation`, `continue`, and `resume`. ```ts -import { AntigravityAgent } from "smithers-orchestrator"; +import { AntigravityAgent } from "smthrs"; new AntigravityAgent({ model?: string; sandbox?: boolean; yolo?: boolean; dangerouslySkipPermissions?: boolean; @@ -8454,7 +8454,7 @@ outside workflow launch through `agy plugin`. `PiAgent` wraps the Pi CLI and adds extension UI hook support. Key additions: `mode`, `onExtensionUiRequest`, `extension`, `thinking`. ```ts -import { PiAgent, type PiExtensionUiRequest, type PiExtensionUiResponse } from "smithers-orchestrator"; +import { PiAgent, type PiExtensionUiRequest, type PiExtensionUiResponse } from "smthrs"; new PiAgent({ provider?: string; apiKey?: string; appendSystemPrompt?: string; mode?: "text" | "json" | "rpc"; print?: boolean; continue?: boolean; resume?: boolean; session?: string; @@ -8472,7 +8472,7 @@ new PiAgent({ `KimiAgent` wraps the Moonshot Kimi CLI with automatic session isolation. Key additions: `thinking`, `agent`, `maxRalphIterations`. ```ts -import { KimiAgent } from "smithers-orchestrator"; +import { KimiAgent } from "smthrs"; new KimiAgent({ thinking?: boolean; outputFormat?: "text" | "stream-json"; finalMessageOnly?: boolean; quiet?: boolean; @@ -8487,7 +8487,7 @@ new KimiAgent({ `ForgeAgent` wraps the Forge CLI and supports 300+ models via provider/model strings. Key additions: `conversationId`, `provider`, `workflow`. ```ts -import { ForgeAgent } from "smithers-orchestrator"; +import { ForgeAgent } from "smthrs"; new ForgeAgent({ directory?: string; provider?: string; agent?: string; conversationId?: string; sandbox?: string; restricted?: boolean; @@ -8498,7 +8498,7 @@ new ForgeAgent({ `AmpAgent` wraps the Amp CLI in `--execute` headless mode. Key additions: `visibility`, `mcpConfig`, `dangerouslyAllowAll`. ```ts -import { AmpAgent } from "smithers-orchestrator"; +import { AmpAgent } from "smthrs"; new AmpAgent({ visibility?: "private" | "public" | "workspace" | "group"; mcpConfig?: string; settingsFile?: string; @@ -8510,7 +8510,7 @@ new AmpAgent({ `OpenCodeAgent` wraps the OpenCode CLI via `opencode run --format json`. Key additions: `agentName`, `continueSession`, `sessionId`. Note: native hijack support is not yet shipped. ```ts -import { OpenCodeAgent } from "smithers-orchestrator"; +import { OpenCodeAgent } from "smthrs"; new OpenCodeAgent({ model?: string; agentName?: string; attachFiles?: string[]; @@ -8521,7 +8521,7 @@ new OpenCodeAgent({ ## Hijack handoff -Most built-in CLI agents support `bunx smithers-orchestrator hijack <runId>`, which relaunches the agent in its native CLI session for interactive takeover. +Most built-in CLI agents support `bunx smthrs hijack <runId>`, which relaunches the agent in its native CLI session for interactive takeover. Smithers persists the native session or conversation id on each task event. On hijack, it waits for a safe boundary between blocking tool calls, then reopens the session via the vendor's resume flag: @@ -8560,7 +8560,7 @@ import { AnthropicAgent, OpenAIAgent, tools, -} from "smithers-orchestrator"; +} from "smthrs"; import { stepCountIs } from "ai"; ``` @@ -8651,7 +8651,7 @@ Use the `createOpenAI` path when you need provider-level configuration beyond `b [Hermes](https://github.com/NousResearch/hermes-agent) (Nous Research) exposes an OpenAI-compatible HTTP API, so `HermesAgent` is a convenience subclass of `OpenAIAgent` that points the provider at your Hermes server and disables native structured output by default (a local Hermes server may not honor JSON-schema response formats). ```ts -import { HermesAgent } from "smithers-orchestrator"; +import { HermesAgent } from "smthrs"; const hermes = new HermesAgent({ baseURL: "http://127.0.0.1:5123/v1", // or set HERMES_BASE_URL @@ -8714,7 +8714,7 @@ export const claude = useCli > Sandboxed file and shell tools for AI agent tasks, with exact input schemas, security policies, and usage examples. ```ts -import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadata } from "smithers-orchestrator"; +import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadata } from "smthrs"; ``` `tools` bundles all five tools keyed by name: @@ -8723,7 +8723,7 @@ import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadat const { read, write, edit, grep, bash } = tools; ``` -The `smithers-orchestrator/tools` subpath also exports lower-level helpers for advanced integrations: +The `smthrs/tools` subpath also exports lower-level helpers for advanced integrations: | Export | Purpose | |---|---| @@ -8769,7 +8769,7 @@ Every invocation is logged to `_smithers_tool_calls`: `defineTool()` wraps custom AI SDK tools with Smithers runtime context, deterministic idempotency keys, and durable tool-call logging. ```ts -import { defineTool } from "smithers-orchestrator"; +import { defineTool } from "smthrs"; import { z } from "zod"; const placeOrder = defineTool({ @@ -8870,7 +8870,7 @@ Returns file contents as UTF-8. Throws `"File too large"` if size exceeds `maxOu ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, grep } from "smithers-orchestrator"; +import { read, grep } from "smthrs"; const codeAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -8903,7 +8903,7 @@ Returns `"ok"`. Throws `"Content too large"` if content exceeds `maxOutputBytes` ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { write, read } from "smithers-orchestrator"; +import { write, read } from "smthrs"; const writerAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -8990,7 +8990,7 @@ Local git commands (`git status`, `git diff`, `git log`) are allowed. ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash } from "smithers-orchestrator"; +import { bash } from "smthrs"; const devAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -9014,7 +9014,7 @@ Pass tools to an AI SDK agent and assign the agent to a `<Task>`: ```tsx import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { createSmithers, read, write, edit, grep, bash, Task } from "smithers-orchestrator"; +import { createSmithers, read, write, edit, grep, bash, Task } from "smthrs"; import { z } from "zod"; const codeAgent = new Agent({ @@ -9041,7 +9041,7 @@ The full bundle works too: ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { tools } from "smithers-orchestrator"; +import { tools } from "smthrs"; const fullAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -9060,7 +9060,7 @@ const fullAgent = new Agent({ ```ts import { Effect } from "effect"; -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; const result = await Effect.runPromise(runWorkflow(workflow, { input: { file: "src/auth.ts" }, @@ -9188,7 +9188,7 @@ Smithers provides deterministic orchestration (workflow graph, approvals, retrie ### 1) PI as Workflow Agent ```tsx -import { PiAgent } from "smithers-orchestrator"; +import { PiAgent } from "smthrs"; const pi = new PiAgent({ provider: "openai", @@ -9208,13 +9208,13 @@ PI sessions are first-class hijack targets. `smithers hijack <runId> --target pi ### 2) PI Server Client -Drive Smithers server APIs from a PI extension or any Node process via `@smithers-orchestrator/pi-plugin`: +Drive Smithers server APIs from a PI extension or any Node process via `@smthrs/pi-plugin`: ```ts -import { runWorkflow, approve, streamEvents } from "@smithers-orchestrator/pi-plugin"; +import { runWorkflow, approve, streamEvents } from "@smthrs/pi-plugin"; ``` -The older `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extension` subpaths were removed; use the scoped package directly. +The older `smthrs/pi-plugin` and `smthrs/pi-extension` subpaths were removed; use the scoped package directly. ### 3) Hybrid: PI Extensibility + Smithers Orchestration @@ -9224,7 +9224,7 @@ The older `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extens Patterns: 1. PI skill-driven coding task inside a Smithers `<Task>`. -2. PI extension command that starts/resumes Smithers workflows via server API or `@smithers-orchestrator/pi-plugin`. +2. PI extension command that starts/resumes Smithers workflows via server API or `@smthrs/pi-plugin`. 3. Smithers workflow output persisted to SQLite and consumed by later PI-assisted tasks. ## Hijacking PI Sessions @@ -9247,7 +9247,7 @@ Session persistence: 1. Install PI CLI and add to `PATH`. 2. Configure PI credentials via env/config (prefer over CLI args for API keys). 3. Instantiate `PiAgent` with explicit options in workflows. -4. For server-driven workflows, use `@smithers-orchestrator/pi-plugin`. +4. For server-driven workflows, use `@smthrs/pi-plugin`. ```bash # Verify PI is installed @@ -9263,7 +9263,7 @@ pi --version ## Limitations -Smithers does not provide a chat interface for PI. Chat UI integration is the responsibility of the host application using `@smithers-orchestrator/pi-plugin`. +Smithers does not provide a chat interface for PI. Chat UI integration is the responsibility of the host application using `@smthrs/pi-plugin`. =============================================================================== @@ -9283,7 +9283,7 @@ Smithers does not provide a chat interface for PI. Chat UI integration is the re ## Subscribe via `onProgress` ```ts -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; import { Effect } from "effect"; import workflow from "./workflow"; @@ -9310,8 +9310,8 @@ jq -r .type .smithers/executions/<run-id>/logs/stream.ndjson | sort | uniq -c | Or with the CLI: ```bash -bunx smithers-orchestrator events <run-id> --json -bunx smithers-orchestrator events <run-id> --type tool-call --node analyze +bunx smthrs events <run-id> --json +bunx smthrs events <run-id> --type tool-call --node analyze ``` ## Common fields @@ -9326,7 +9326,7 @@ Every event includes `type`, `runId`, `timestampMs`. Node-scoped events add `nod ## Event categories -Used by `bunx smithers-orchestrator events --type <category>` and the metrics layer. +Used by `bunx smthrs events --type <category>` and the metrics layer. | Category | Events | |---|---| @@ -9359,7 +9359,7 @@ Used by `bunx smithers-orchestrator events --type <category>` and the metrics la | `ApprovalGranted` / `ApprovalDenied` | Approval counters | | `TokenUsageReported` | Token usage counters per model/agent | -`trackSmithersEvent` from `smithers-orchestrator/observability` exposes this mapping for custom integrations. See Observability for the full OTLP/Prometheus setup. +`trackSmithersEvent` from `smthrs/observability` exposes this mapping for custom integrations. See Observability for the full OTLP/Prometheus setup. --- diff --git a/docs/references/smithers/tsconfig.json b/docs/references/smithers/tsconfig.json index bfc39b981..893f1a407 100644 --- a/docs/references/smithers/tsconfig.json +++ b/docs/references/smithers/tsconfig.json @@ -9,7 +9,7 @@ "module": "ESNext", "moduleDetection": "force", "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", + "jsxImportSource": "smthrs", "allowJs": true, "moduleResolution": "bundler", "allowImportingTsExtensions": true, @@ -22,212 +22,212 @@ "noUnusedParameters": false, "noPropertyAccessFromIndexSignature": false, "paths": { - "smithers-orchestrator": [ + "smthrs": [ "./packages/smithers/src/index.js" ], - "smithers-orchestrator/jsx-runtime": [ + "smthrs/jsx-runtime": [ "./packages/smithers/src/jsx-runtime.js" ], - "smithers-orchestrator/jsx-dev-runtime": [ + "smthrs/jsx-dev-runtime": [ "./packages/smithers/src/jsx-runtime.js" ], - "smithers-orchestrator/tools": [ + "smthrs/tools": [ "./packages/smithers/src/tools.js" ], - "smithers-orchestrator/*": [ + "smthrs/*": [ "./packages/smithers/src/*.js", "./packages/smithers/src/*/index.js" ], - "smithers-orchestrator/scorers": [ + "smthrs/scorers": [ "./packages/scorers/src/index.js" ], - "@smithers-orchestrator/agents": [ + "@smthrs/agents": [ "./packages/agents/src/index.js" ], - "@smithers-orchestrator/agents/*": [ + "@smthrs/agents/*": [ "./packages/agents/src/*.js", "./packages/agents/src/*/index.js" ], - "@smithers-orchestrator/cli": [ + "@smthrs/cli": [ "./apps/cli/src/index.js" ], - "@smithers-orchestrator/cli/*": [ + "@smthrs/cli/*": [ "./apps/cli/src/*.js", "./apps/cli/src/*/index.js" ], - "@smithers-orchestrator/core-react": [ + "@smthrs/core-react": [ "./packages/react/src/index.js" ], - "@smithers-orchestrator/core-react/*": [ + "@smthrs/core-react/*": [ "./packages/react/src/*.js", "./packages/react/src/*/index.js" ], - "@smithers-orchestrator/db": [ + "@smthrs/db": [ "./packages/db/src/index.ts", "./packages/db/src/index.js" ], - "@smithers-orchestrator/db/runState": [ + "@smthrs/db/runState": [ "./packages/db/src/runState-types.ts", "./packages/db/src/runState.js" ], - "@smithers-orchestrator/db/*": [ + "@smthrs/db/*": [ "./packages/db/src/*.ts", "./packages/db/src/*.js", "./packages/db/src/*/index.js" ], - "@smithers-orchestrator/devtools": [ + "@smthrs/devtools": [ "./packages/devtools/src/index.js" ], - "@smithers-orchestrator/devtools/*": [ + "@smthrs/devtools/*": [ "./packages/devtools/src/*.ts", "./packages/devtools/src/*.js", "./packages/devtools/src/*/index.js" ], - "@smithers-orchestrator/driver": [ + "@smthrs/driver": [ "./packages/driver/src/index.js" ], - "@smithers-orchestrator/driver/*": [ + "@smthrs/driver/*": [ "./packages/driver/src/*.ts", "./packages/driver/src/*.js", "./packages/driver/src/*/index.js" ], - "@smithers-orchestrator/engine": [ + "@smthrs/engine": [ "./packages/engine/src/index.js" ], - "@smithers-orchestrator/engine/*": [ + "@smthrs/engine/*": [ "./packages/engine/src/*.js", "./packages/engine/src/*/index.js" ], - "@smithers-orchestrator/errors": [ + "@smthrs/errors": [ "./packages/errors/src/index.js" ], - "@smithers-orchestrator/errors/*": [ + "@smthrs/errors/*": [ "./packages/errors/src/*.ts", "./packages/errors/src/*.js", "./packages/errors/src/*/index.js" ], - "@smithers-orchestrator/gateway": [ + "@smthrs/gateway": [ "./packages/gateway/src/index.ts" ], - "@smithers-orchestrator/gateway/*": [ + "@smthrs/gateway/*": [ "./packages/gateway/src/*.ts", "./packages/gateway/src/*/index.ts" ], - "@smithers-orchestrator/gateway-client": [ + "@smthrs/gateway-client": [ "./packages/gateway-client/src/index.ts" ], - "@smithers-orchestrator/gateway-client/*": [ + "@smthrs/gateway-client/*": [ "./packages/gateway-client/src/*.ts" ], - "@smithers-orchestrator/gateway-react": [ + "@smthrs/gateway-react": [ "./packages/gateway-react/src/index.ts" ], - "@smithers-orchestrator/gateway-react/*": [ + "@smthrs/gateway-react/*": [ "./packages/gateway-react/src/*.ts" ], - "@smithers-orchestrator/graph": [ + "@smthrs/graph": [ "./packages/graph/src/index.js" ], - "@smithers-orchestrator/graph/*": [ + "@smthrs/graph/*": [ "./packages/graph/src/*.js", "./packages/graph/src/*/index.js" ], - "@smithers-orchestrator/memory": [ + "@smthrs/memory": [ "./packages/memory/src/index.js" ], - "@smithers-orchestrator/memory/*": [ + "@smthrs/memory/*": [ "./packages/memory/src/*.js", "./packages/memory/src/*/index.js" ], - "@smithers-orchestrator/observability": [ + "@smthrs/observability": [ "./apps/observability/src/index.js" ], - "@smithers-orchestrator/observability/*": [ + "@smthrs/observability/*": [ "./apps/observability/src/*.js", "./apps/observability/src/*/index.js" ], - "@smithers-orchestrator/openapi": [ + "@smthrs/openapi": [ "./packages/openapi/src/index.js" ], - "@smithers-orchestrator/openapi/*": [ + "@smthrs/openapi/*": [ "./packages/openapi/src/*.js", "./packages/openapi/src/*/index.js" ], - "@smithers-orchestrator/pi-plugin": [ + "@smthrs/pi-plugin": [ "./packages/pi-plugin/src/index.ts" ], - "@smithers-orchestrator/pi-plugin/*": [ + "@smthrs/pi-plugin/*": [ "./packages/pi-plugin/src/*.ts" ], - "@smithers-orchestrator/protocol": [ + "@smthrs/protocol": [ "./packages/protocol/src/index.js" ], - "@smithers-orchestrator/protocol/*": [ + "@smthrs/protocol/*": [ "./packages/protocol/src/*.ts", "./packages/protocol/src/*.js", "./packages/protocol/src/*/index.js" ], - "@smithers-orchestrator/components": [ + "@smthrs/components": [ "./packages/components/src/index.js" ], - "@smithers-orchestrator/components/*": [ + "@smthrs/components/*": [ "./packages/components/src/*.js", "./packages/components/src/*/index.js" ], - "@smithers-orchestrator/control-plane": [ + "@smthrs/control-plane": [ "./packages/control-plane/src/index.js" ], - "@smithers-orchestrator/control-plane/*": [ + "@smthrs/control-plane/*": [ "./packages/control-plane/src/*.js", "./packages/control-plane/src/*/index.js" ], - "@smithers-orchestrator/react-reconciler": [ + "@smthrs/react-reconciler": [ "./packages/react-reconciler/src/index.js" ], - "@smithers-orchestrator/react-reconciler/*": [ + "@smthrs/react-reconciler/*": [ "./packages/react-reconciler/src/*.js", "./packages/react-reconciler/src/*/index.js" ], - "@smithers-orchestrator/sandbox": [ + "@smthrs/sandbox": [ "./packages/sandbox/src/index.js" ], - "@smithers-orchestrator/sandbox/*": [ + "@smthrs/sandbox/*": [ "./packages/sandbox/src/*.js", "./packages/sandbox/src/*/index.js" ], - "@smithers-orchestrator/scorers": [ + "@smthrs/scorers": [ "./packages/scorers/src/index.js" ], - "@smithers-orchestrator/scorers/*": [ + "@smthrs/scorers/*": [ "./packages/scorers/src/*.js", "./packages/scorers/src/*/index.js" ], - "@smithers-orchestrator/scheduler": [ + "@smthrs/scheduler": [ "./packages/scheduler/src/index.js" ], - "@smithers-orchestrator/scheduler/*": [ + "@smthrs/scheduler/*": [ "./packages/scheduler/src/*.ts", "./packages/scheduler/src/*.js", "./packages/scheduler/src/*/index.js" ], - "@smithers-orchestrator/server": [ + "@smthrs/server": [ "./packages/server/src/index.js" ], - "@smithers-orchestrator/server/*": [ + "@smthrs/server/*": [ "./packages/server/src/*.js", "./packages/server/src/*/index.js" ], - "@smithers-orchestrator/time-travel": [ + "@smthrs/time-travel": [ "./packages/time-travel/src/index.js" ], - "@smithers-orchestrator/time-travel/*": [ + "@smthrs/time-travel/*": [ "./packages/time-travel/src/*.js", "./packages/time-travel/src/*/index.js" ], - "@smithers-orchestrator/vcs": [ + "@smthrs/vcs": [ "./packages/vcs/src/index.js" ], - "@smithers-orchestrator/vcs/*": [ + "@smthrs/vcs/*": [ "./packages/vcs/src/*.js", "./packages/vcs/src/*/index.js" ] diff --git a/docs/references/smithers/workflows/agent-trace-otel-demo.tsx b/docs/references/smithers/workflows/agent-trace-otel-demo.tsx index bef76f732..1ba24eaac 100644 --- a/docs/references/smithers/workflows/agent-trace-otel-demo.tsx +++ b/docs/references/smithers/workflows/agent-trace-otel-demo.tsx @@ -1,7 +1,7 @@ import { mkdirSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { dirname, join } from "node:path"; -import { createSmithers, Task, Workflow } from "smithers-orchestrator"; +import { createSmithers, Task, Workflow } from "smthrs"; import { z } from "zod"; const PiOutput = z.object({ answer: z.string() }); diff --git a/docs/specs/extension/extension_managing.extension.spec.md b/docs/specs/extension/extension_managing.extension.spec.md index 4d301f02a..3bf51f4d2 100644 --- a/docs/specs/extension/extension_managing.extension.spec.md +++ b/docs/specs/extension/extension_managing.extension.spec.md @@ -279,7 +279,7 @@ Rules: is the shell command or command provider agents are instructed to run through Shell. `package`, when present, is the install/update package and may differ from the runnable command, for example package `@tiny-fish/cli` exposes binary `tinyfish`. Smithers remains a special prompt-only - requirement that preserves official `bunx smithers-orchestrator ...` usage and must not imply a + requirement that preserves official `bunx smthrs ...` usage and must not imply a global `smithers` binary. - `version` is the default target version used when no binary is installed and as the UI's baseline update target. It is not proof of the active installed version. diff --git a/docs/specs/extension/smithers-reference/instructions/full/020-smithers-handler.md b/docs/specs/extension/smithers-reference/instructions/full/020-smithers-handler.md index ce03cb5c9..b3dd98ae5 100644 --- a/docs/specs/extension/smithers-reference/instructions/full/020-smithers-handler.md +++ b/docs/specs/extension/smithers-reference/instructions/full/020-smithers-handler.md @@ -4,7 +4,7 @@ Use Smithers from handler-thread workflow work when a workflow is the right unit Work in the workspace `.smithers/` package. -Use official `bunx smithers-orchestrator ...` commands through Shell for workflow initialization, +Use official `bunx smthrs ...` commands through Shell for workflow initialization, execution, resume, inspection, approval, and debugging flows. Use `svvyx workflows ...` only for reusable source-library operations owned by the Workflows diff --git a/docs/specs/extension/smithers-reference/instructions/full/030-smithers-svvy-boundary.md b/docs/specs/extension/smithers-reference/instructions/full/030-smithers-svvy-boundary.md index 5e19f3a53..3f297b058 100644 --- a/docs/specs/extension/smithers-reference/instructions/full/030-smithers-svvy-boundary.md +++ b/docs/specs/extension/smithers-reference/instructions/full/030-smithers-svvy-boundary.md @@ -2,10 +2,10 @@ Work in the workspace `.smithers/` package when authoring or running Smithers workflows. -Use official `bunx smithers-orchestrator ...` commands through Shell for workflow initialization, -execution, resume, inspection, approval, and debugging flows. Use `bunx smithers-orchestrator init`, -`bunx smithers-orchestrator workflow run`, `bunx smithers-orchestrator ps`, and -`bunx smithers-orchestrator inspect` as ordinary shell commands when Smithers work is the right unit. +Use official `bunx smthrs ...` commands through Shell for workflow initialization, +execution, resume, inspection, approval, and debugging flows. Use `bunx smthrs init`, +`bunx smthrs workflow run`, `bunx smthrs ps`, and +`bunx smthrs inspect` as ordinary shell commands when Smithers work is the right unit. Use `svvyx workflows ...` only for reusable source-library operations owned by the Workflows extension. diff --git a/docs/specs/extension/smithers-reference/scripts/generate-smithers-fragment.reference.ts b/docs/specs/extension/smithers-reference/scripts/generate-smithers-fragment.reference.ts index ed3480b88..559fd177a 100644 --- a/docs/specs/extension/smithers-reference/scripts/generate-smithers-fragment.reference.ts +++ b/docs/specs/extension/smithers-reference/scripts/generate-smithers-fragment.reference.ts @@ -45,11 +45,11 @@ const outputFragments: Record<string, FragmentSpec> = { "## How It Works", "## JSX API", "## CLI", - "bunx smithers-orchestrator init", - "bunx smithers-orchestrator up", - "bunx smithers-orchestrator inspect", - "bunx smithers-orchestrator logs", - "bunx smithers-orchestrator approve", + "bunx smthrs init", + "bunx smthrs up", + "bunx smthrs inspect", + "bunx smthrs logs", + "bunx smthrs approve", "docs-full", ], }, @@ -78,12 +78,12 @@ const forbiddenMarkers = [ "Do **not** install Smithers globally", "do **not** use the bare `smithers`", "bare name `smithers` is a different package", - "npm rm -g smithers-orchestrator", + "npm rm -g smthrs", "Install the Agent Skill", "~/.claude/skills/smithers", "curl -fsSL https://smithers.sh/llms-full.txt", "smithers ask", - "smithers-orchestrator/tools", + "smthrs/tools", "defineTool", "getDefinedToolMetadata", "Five built-in tools", @@ -104,7 +104,7 @@ const forbiddenMarkers = [ "Ecosystem", "Publishing Workflow Packs", "PI Integration", - "@smithers-orchestrator/pi-plugin", + "@smthrs/pi-plugin", "PI as Workflow Agent", "PI Server Client", "Hybrid: PI Extensibility + Smithers Orchestration", @@ -287,8 +287,8 @@ const main = async (): Promise<void> => { const detectedVersion = ( await run( - ["bunx", "smithers-orchestrator", "--version"], - "bunx smithers-orchestrator --version", + ["bunx", "smthrs", "--version"], + "bunx smthrs --version", ) ).trim(); if (detectedVersion !== args.version) { @@ -296,8 +296,8 @@ const main = async (): Promise<void> => { } const jsonText = await run( - ["bunx", "smithers-orchestrator", "docs-full", "--json"], - "bunx smithers-orchestrator docs-full --json", + ["bunx", "smthrs", "docs-full", "--json"], + "bunx smthrs docs-full --json", ); const parsed = JSON.parse(jsonText) as Partial<SmithersDocsFullJson>; if (typeof parsed.url !== "string" || typeof parsed.content !== "string") { diff --git a/docs/specs/extension/smithers.extension.spec.md b/docs/specs/extension/smithers.extension.spec.md index 8d355c6ef..3d029dba0 100644 --- a/docs/specs/extension/smithers.extension.spec.md +++ b/docs/specs/extension/smithers.extension.spec.md @@ -24,12 +24,12 @@ This spec defines Smithers prompt guidance only. "typescriptApiEnabled": false, "cliRequirements": [ { - "id": "smithers-orchestrator", - "package": "smithers-orchestrator", + "id": "smthrs", + "package": "smthrs", "binary": "bunx", "required": true, "version": "0.22.0", - "versionCommand": "bunx smithers-orchestrator --version" + "versionCommand": "bunx smthrs --version" } ], "instructionFiles": [ @@ -54,12 +54,12 @@ This spec defines Smithers prompt guidance only. { "output": "instructions/full/010-smithers-core.generated.md", "script": "scripts/generate-instructions.ts", - "versionCliRequirementId": "smithers-orchestrator" + "versionCliRequirementId": "smthrs" }, { "output": "instructions/full/040-smithers-memory.generated.md", "script": "scripts/generate-instructions.ts", - "versionCliRequirementId": "smithers-orchestrator" + "versionCliRequirementId": "smthrs" } ] } @@ -84,26 +84,26 @@ Allowed agent-facing Smithers actions are ordinary shell commands against the of for example: ```bash -bunx smithers-orchestrator init -bunx smithers-orchestrator workflow run <workflow-id> --prompt "<prompt>" -bunx smithers-orchestrator ps -bunx smithers-orchestrator inspect <run-id> -bunx smithers-orchestrator logs <run-id> --tail 20 +bunx smthrs init +bunx smthrs workflow run <workflow-id> --prompt "<prompt>" +bunx smthrs ps +bunx smthrs inspect <run-id> +bunx smthrs logs <run-id> --tail 20 ``` The exact command names and flags come from generated Smithers instructions for the current -`smithers-orchestrator` CLI requirement version resolved by Extension Managing. Current upstream -Smithers documentation presents agent-facing commands as `bunx smithers-orchestrator ...`; generated +`smthrs` CLI requirement version resolved by Extension Managing. Current upstream +Smithers documentation presents agent-facing commands as `bunx smthrs ...`; generated `svvy` Smithers instructions preserve that official surface. They must not rewrite upstream examples to a global `smithers` binary, tell agents to install or depend on a global Smithers CLI, or rely on repo-root `workflows/node_modules/.bin/smithers`. -The package, import, JSX runtime, and CLI package names remain `smithers-orchestrator`. Workflow -TypeScript imports from `"smithers-orchestrator"`, and Shell commands use -`bunx smithers-orchestrator ...`. +The package, import, JSX runtime, and CLI package names remain `smthrs`. Workflow +TypeScript imports from `"smthrs"`, and Shell commands use +`bunx smthrs ...`. `svvy` exposes no product-native Smithers execution command. Smithers execution is Shell work -through official `bunx smithers-orchestrator ...` commands. +through official `bunx smthrs ...` commands. Agents invoke Smithers through `exec_command`. Approval, sandboxing, network policy, and command projection are the normal Shell extension behavior. @@ -131,11 +131,11 @@ Smithers workspace authoring lives in: The Smithers extension must describe `.smithers/` as the workspace-local Smithers package and must not direct agents to use any other workspace-local workflow source layout. -`bunx smithers-orchestrator init` is the normal initialization path. It scaffolds `.smithers/` with a local -`.smithers/package.json` whose Smithers dependency is `smithers-orchestrator`, so TypeScript imports -such as `import { createSmithers } from "smithers-orchestrator"` resolve from the workspace +`bunx smthrs init` is the normal initialization path. It scaffolds `.smithers/` with a local +`.smithers/package.json` whose Smithers dependency is `smthrs`, so TypeScript imports +such as `import { createSmithers } from "smthrs"` resolve from the workspace Smithers package. Agents that manually create `.smithers/` source without -`bunx smithers-orchestrator init` must still ensure the `.smithers` package declares the Smithers +`bunx smthrs init` must still ensure the `.smithers` package declares the Smithers dependency instead of relying on a global CLI install for TypeScript module resolution. Reusable svvy workflow assets are documented by the Workflows extension. Smithers itself still runs @@ -176,7 +176,7 @@ instructions/full/040-smithers-memory.generated.md ``` The generated core file is derived from Smithers' upstream full documentation for the current -`smithers-orchestrator` version selected by Extension Managing. The memory fragment remains +`smthrs` version selected by Extension Managing. The memory fragment remains generated and inspectable but bypassed by default. The generator must keep the core authoring and CLI concepts needed for direct Smithers use: @@ -185,11 +185,11 @@ The generator must keep the core authoring and CLI concepts needed for direct Sm - JSX workflow authoring - prompts, components, workflows, and agents - official Smithers CLI commands -- upstream `bunx smithers-orchestrator ...` command examples preserved as the agent-facing command +- upstream `bunx smthrs ...` command examples preserved as the agent-facing command surface - upstream dotted `workflow.*` command/tool names omitted or rewritten to official Smithers CLI - command examples such as `bunx smithers-orchestrator workflow run ...`, - `bunx smithers-orchestrator ps`, and `bunx smithers-orchestrator inspect ...` + command examples such as `bunx smthrs workflow run ...`, + `bunx smthrs ps`, and `bunx smthrs inspect ...` - approvals and resume as Smithers concepts - stable task ids, outputs, schemas, and render-loop behavior @@ -202,7 +202,7 @@ excludes: - OpenAPI and low-level Effect authoring fragments - claims that `svvy` exposes Smithers through native model-facing tools - upstream or external agent-facing instructions to run `smithers ...`, `bunx smithers ...`, or an - unverified bare package name instead of the official `bunx smithers-orchestrator ...` command + unverified bare package name instead of the official `bunx smthrs ...` command surface - upstream dotted `workflow.*` names as product APIs, native tools, MCP surfaces, or model-facing operations @@ -219,7 +219,7 @@ instructions/full/030-smithers-svvy-boundary.md Those hand-authored files must stay small and positive. They should say only: - work in the workspace `.smithers/` package -- use official `bunx smithers-orchestrator ...` commands through Shell for workflow +- use official `bunx smthrs ...` commands through Shell for workflow initialization, execution, resume, inspection, approval, and debugging - use `svvyx workflows ...` only for reusable source-library operations owned by the Workflows extension @@ -257,7 +257,7 @@ Extension Managing commands. ## Smithers Product Boundary Smithers is prompt-only official CLI guidance for handler-thread workflow work. The Smithers product -boundary is workspace `.smithers/` authoring, official `bunx smithers-orchestrator ...` commands +boundary is workspace `.smithers/` authoring, official `bunx smthrs ...` commands through Shell, and no native or `svvyx` Smithers runtime surface. Smithers task agents created with `Agents.defineTaskAgent(...)` use the narrow authenticated `runTaskAgent` bridge whose core contract is owned by `@svvy/core` and whose server-side transport, diff --git a/docs/specs/extension/workflows.extension.spec.md b/docs/specs/extension/workflows.extension.spec.md index cb590fa99..a11f32965 100644 --- a/docs/specs/extension/workflows.extension.spec.md +++ b/docs/specs/extension/workflows.extension.spec.md @@ -81,7 +81,7 @@ Rejected command names: - `svvyx workflows run ...` Running, resuming, approving, inspecting, or debugging Smithers workflows is official -`bunx smithers-orchestrator ...` command behavior through the Shell extension, never bare `smithers` +`bunx smthrs ...` command behavior through the Shell extension, never bare `smithers` or `bunx smithers`, and not Workflows extension behavior. All command results are schema-backed and contain only machine-usable facts: @@ -311,7 +311,7 @@ instructions that teach: - generated agent usage: ```tsx -import { Task } from "smithers-orchestrator"; +import { Task } from "smthrs"; import { Agents } from "@svvyx/workflows"; const reviewer = Agents.defineTaskAgent(Agents.reviewerAgent); @@ -326,7 +326,7 @@ export default ( - direct parameter usage: ```tsx -import { Task } from "smithers-orchestrator"; +import { Task } from "smthrs"; import { Agents } from "@svvyx/workflows"; const reviewer = Agents.defineTaskAgent({ diff --git a/docs/specs/package-architecture/extensions.spec.md b/docs/specs/package-architecture/extensions.spec.md index a3c542334..1d6710535 100644 --- a/docs/specs/package-architecture/extensions.spec.md +++ b/docs/specs/package-architecture/extensions.spec.md @@ -1726,7 +1726,7 @@ yield* // manifestDependency: "dev-type-dependency", // }, // { -// specifier: "smithers-orchestrator", +// specifier: "smthrs", // importKind: "type-only", // dependencyClass: "workspace-authoring-external", // resolutionAuthority: "workspace-smithers-package", @@ -2737,7 +2737,7 @@ type ShellCommandClassification = { ``` Commands whose accepted command vector is the official Smithers CLI form -`bunx smithers-orchestrator ...` are still ordinary `exec_command` work, but their classification is +`bunx smthrs ...` are still ordinary `exec_command` work, but their classification is `{ appLogSource: "smithers", commandFamily: "smithers-cli" }` rather than generic direct-tool output. This classification is a per-command fact derived from the accepted command, not static native-tool metadata and not a Smithers wrapper surface. diff --git a/docs/specs/package-architecture/generated-packages.spec.md b/docs/specs/package-architecture/generated-packages.spec.md index 067356bd9..6e637f93c 100644 --- a/docs/specs/package-architecture/generated-packages.spec.md +++ b/docs/specs/package-architecture/generated-packages.spec.md @@ -99,7 +99,7 @@ The generated `Agents` namespace contract is: ```ts import type { ExtensionId as GeneratedExtensionId } from "@svvyx/extensions"; -import type { AgentLike } from "smithers-orchestrator"; +import type { AgentLike } from "smthrs"; // @svvyx/workflows index.ts export * as Agents from "./agents"; @@ -920,23 +920,23 @@ resolve to active files after process restart or later refresh/link entry. `RunTaskAgentResult`, `RunTaskAgentPromptSource`, and `RunTaskAgentError`. It must not import branded ids, runtime service types, schema namespaces, runtime service/facade types, or broad task-agent/core contracts. -- Generated `@svvyx/workflows` may type-import or value-import `smithers-orchestrator` only as a +- Generated `@svvyx/workflows` may type-import or value-import `smthrs` only as a workspace Smithers authoring dependency resolved from the target workspace `.smithers` package, not from the svvy app bundle, repo-root `workflows/`, generated package root, or global package cache. Workspace-link repair treats a missing `.smithers` package root or unresolved - `smithers-orchestrator` dependency as a typed non-ready link/dependency diagnostic and must not - install, vendor, or rewrite Smithers dependencies outside official `bunx smithers-orchestrator + `smthrs` dependency as a typed non-ready link/dependency diagnostic and must not + install, vendor, or rewrite Smithers dependencies outside official `bunx smthrs init` / official CLI guidance. - App-global generated-package build treats `smithers-orchestrator` as an external workspace + App-global generated-package build treats `smthrs` as an external workspace authoring dependency. It typechecks generated source only with the generated - `smithers-orchestrator.ambient.d.ts` declaration under the generated package root. That + `smthrs.ambient.d.ts` declaration under the generated package root. That declaration contains only the exact `AgentLike` shape required by `Agents.defineTaskAgent(...)`: optional `id`, optional `tools`, optional `supportsNativeStructuredOutput`, optional `capabilities`, and - `generate(args: unknown): Promise<unknown>`. It must not resolve `smithers-orchestrator` from the + `generate(args: unknown): Promise<unknown>`. It must not resolve `smthrs` from the app bundle, repo-root `workflows/`, app generated root, or global package cache. Workspace-specific Smithers dependency resolution diagnostics are produced during workspace-link - readiness/repair, not during app-global generated-package build. `smithers-orchestrator` is a + readiness/repair, not during app-global generated-package build. `smthrs` is a workspace authoring dependency for generated/workspace Smithers source only. It is not a product package dependency channel, runtime control API, or app-bundled bridge dependency; product runtime uses only the runtime-owned `runTaskAgent` bridge contracts. diff --git a/docs/specs/workflow-library.spec.md b/docs/specs/workflow-library.spec.md index 1d04923b9..0f0954ae8 100644 --- a/docs/specs/workflow-library.spec.md +++ b/docs/specs/workflow-library.spec.md @@ -21,7 +21,7 @@ Smithers is the workflow runtime. `svvy` does not wrap Smithers workflow execution behind a parallel workflow-control abstraction in the agent-facing API. Agents that need to initialize, author, run, resume, inspect, approve, debug, -or repair Smithers workflows use official `bunx smithers-orchestrator ...` commands directly +or repair Smithers workflows use official `bunx smthrs ...` commands directly through the normal Shell extension. The Workflows extension is not a workflow runner. It is the app-owned `svvyx workflows ...` @@ -147,7 +147,7 @@ export * as Workflows from "./workflows"; Agent-facing usage should look like: ```tsx -import { Task } from "smithers-orchestrator"; +import { Task } from "smthrs"; import { Agents, Components, Prompts, Workflows } from "@svvyx/workflows"; const reviewer = Agents.defineTaskAgent(Agents.reviewerAgent); @@ -180,7 +180,7 @@ value intended for `<Task agent={...}>`. Direct parameters are valid when the workflow source owns the task-agent configuration: ```tsx -import { Task } from "smithers-orchestrator"; +import { Task } from "smthrs"; import { Agents } from "@svvyx/workflows"; const explorer = Agents.defineTaskAgent({ diff --git a/docs/vendor/smithers/smithers-0.22.0.llms-full.txt b/docs/vendor/smithers/smithers-0.22.0.llms-full.txt index 0b24cb86a..fca0c8101 100644 --- a/docs/vendor/smithers/smithers-0.22.0.llms-full.txt +++ b/docs/vendor/smithers/smithers-0.22.0.llms-full.txt @@ -1,7 +1,7 @@ # Smithers — full documentation > Durable AI workflow orchestration as a JSX runtime. -> Repo: github.com/smithersai/smithers · Package: smithers-orchestrator (npm) +> Repo: github.com/smithersai/smithers · Package: smthrs (npm) This is the complete Smithers documentation in one file. It is the concatenation of every fragment listed in /llms.txt. @@ -22,7 +22,7 @@ Changelogs are not included; see /docs/changelogs/ on the docs site. # Smithers > Smithers — durable AI workflow orchestration as a JSX runtime. -> Repo: github.com/smithersai/smithers · Package: smithers-orchestrator (npm) +> Repo: github.com/smithersai/smithers · Package: smthrs (npm) This file contains the core Smithers documentation. Read top to bottom for a complete picture of the runtime, JSX surface, CLI, and components. @@ -52,8 +52,8 @@ days with crash recovery, retries, human approvals, replay, and full observabili any agent, any model, and any machine. ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -72,8 +72,8 @@ export default smithers((ctx) => ( ``` ```bash -bunx smithers-orchestrator init -bunx smithers-orchestrator up workflow.tsx --input '{"name":"world"}' +bunx smthrs init +bunx smthrs up workflow.tsx --input '{"name":"world"}' ``` Outputs are validated by Zod, persisted to SQLite, and survive crashes. Resume with @@ -115,14 +115,14 @@ to run, and treats having your agent author new ones as a first-class path. ## Built-in workflows -`bunx smithers-orchestrator init` scaffolds a `.smithers/` folder preloaded with +`bunx smthrs init` scaffolds a `.smithers/` folder preloaded with production-ready workflows. Point your agent at one and go with -`bunx smithers-orchestrator workflow run <id> --prompt "..."`: +`bunx smthrs workflow run <id> --prompt "..."`: ```bash # break a request into tickets, then implement them on a board -bunx smithers-orchestrator workflow run tickets-create --prompt "add rate limiting and audit logging" -bunx smithers-orchestrator workflow run kanban +bunx smthrs workflow run tickets-create --prompt "add rate limiting and audit logging" +bunx smthrs workflow run kanban ``` <CardGroup cols={2}> @@ -268,24 +268,24 @@ Don't use it for a single prompt → single response. Use your model provider's ## Installation -> Install smithers-orchestrator with the workflow pack, or manually for standalone JSX workflow projects. +> Install smthrs with the workflow pack, or manually for standalone JSX workflow projects. Most teams should start with the workflow pack. It gives you a working `.smithers/` directory with seeded workflows, prompts, and agent configuration instead of assembling the project structure by hand. ## Always Run with `bunx` -Every CLI invocation in these docs is `bunx smithers-orchestrator <command>`. Do **not** install Smithers globally and do **not** use the bare `smithers` or `bunx smithers` shorthand. +Every CLI invocation in these docs is `bunx smthrs <command>`. Do **not** install Smithers globally and do **not** use the bare `smithers` or `bunx smithers` shorthand. - `bunx` resolves the package locally if your project depends on it, otherwise it pulls and runs the latest published version. -- The published npm package is [`smithers-orchestrator`](https://www.npmjs.com/package/smithers-orchestrator). The bare name `smithers` is a different package, so `bunx smithers` runs something else entirely. +- The published npm package is [`smthrs`](https://www.npmjs.com/package/smthrs). The bare name `smithers` is a different package, so `bunx smithers` runs something else entirely. - A global install creates version-drift problems across machines, CI, and contributors. With `bunx`, every project pins Smithers through its own `package.json`. -If you previously ran `npm i -g smithers-orchestrator`, uninstall it (`npm rm -g smithers-orchestrator`) and switch to `bunx`. +If you previously ran `npm i -g smthrs`, uninstall it (`npm rm -g smthrs`) and switch to `bunx`. ## Recommended: Install the Workflow Pack ```bash -bunx smithers-orchestrator init +bunx smthrs init ``` That scaffolds `.smithers/` with files such as: @@ -295,7 +295,7 @@ That scaffolds `.smithers/` with files such as: | `.smithers/workflows/` | Pre-built workflows (`implement`, `review`, `plan`, `ralph`, `debug`, ...) | | `.smithers/prompts/` | Shared MDX prompt templates | | `.smithers/components/` | Reusable TSX components (`Review`, `ValidationLoop`, ...) | -| `.smithers/package.json` | Local workflow project manifest with `smithers-orchestrator` dependency | +| `.smithers/package.json` | Local workflow project manifest with `smthrs` dependency | | `.smithers/tsconfig.json` | TypeScript config for JSX workflow authoring | | `.smithers/bunfig.toml` | Bun preload config for MDX workflow prompts | | `.smithers/preload.ts` | Registers the MDX preload plugin | @@ -309,7 +309,7 @@ That scaffolds `.smithers/` with files such as: To overwrite an existing scaffold: ```bash -bunx smithers-orchestrator init --force +bunx smthrs init --force ``` ## Install the Agent Skill @@ -334,8 +334,8 @@ outcome — *"orchestrate an agent to add rate limiting and keep iterating until tests pass"* — and the agent reaches for Smithers itself. For agents without a skills directory, point them at -`bunx smithers-orchestrator docs-full` (prints the same bundle) or -`bunx smithers-orchestrator ask "<question>"`. +`bunx smthrs docs-full` (prints the same bundle) or +`bunx smthrs ask "<question>"`. To install the skill **and** register the MCP server into every coding agent on your machine at once, see [Agent Support](/agents/overview) — it covers Claude @@ -370,25 +370,25 @@ See [JSX Installation](/jsx/installation) for the package list, TypeScript confi > Scaffold and run a Smithers workflow in two commands. ```bash -bunx smithers-orchestrator init -bunx smithers-orchestrator init --template idea-to-prd -bunx smithers-orchestrator workflow run implement --prompt "Add rate limiting" +bunx smthrs init +bunx smthrs init --template idea-to-prd +bunx smthrs workflow run implement --prompt "Add rate limiting" ``` -`init` scaffolds `.smithers/` (workflows, prompts, components, agent config). Add `--template <id>` when you want the init result to include the selected starter command and follow-up notes. Run `bunx smithers-orchestrator starters` to browse template IDs. +`init` scaffolds `.smithers/` (workflows, prompts, components, agent config). Add `--template <id>` when you want the init result to include the selected starter command and follow-up notes. Run `bunx smthrs starters` to browse template IDs. Inspect the run: ```bash -bunx smithers-orchestrator ps -bunx smithers-orchestrator inspect <run-id> -bunx smithers-orchestrator logs <run-id> --tail 20 +bunx smthrs ps +bunx smthrs inspect <run-id> +bunx smthrs logs <run-id> --tail 20 ``` Resume after a crash: ```bash -bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true +bunx smthrs up workflow.tsx --run-id <run-id> --resume true ``` Prefer to let your agent drive? [Install the agent skill](/installation#install-the-agent-skill) and just ask for the outcome — your coding agent runs Smithers for you. @@ -404,19 +404,19 @@ For a full worked example, see the [Tour](/tour). For every CLI command see the Smithers ships with starter workflows for when you want a result before your agent writes any workflow code. Browse the starter gallery from any repo: ```bash -bunx smithers-orchestrator starters +bunx smthrs starters ``` First-time setup: ```bash -bunx smithers-orchestrator init --add-agents +bunx smthrs init --add-agents ``` Or initialize with guided next steps for one template: ```bash -bunx smithers-orchestrator init --template idea-to-prd +bunx smthrs init --template idea-to-prd ``` Template IDs: @@ -425,37 +425,37 @@ Pass any ID from this table to `init --template <id>` to scaffold that starter. | Starter | Best for | Workflow | Command | | --- | --- | --- | --- | -| `idea-to-prd` | founders, product, marketing | `write-a-prd` | `bunx smithers-orchestrator init --template idea-to-prd` | -| `idea-to-tickets` | founders, product, operations, engineering | `tickets-create` | `bunx smithers-orchestrator init --template idea-to-tickets` | -| `launch-checklist` | launch owners and operators | `plan` | `bunx smithers-orchestrator init --template launch-checklist` | -| `customer-incident` | support escalations | `debug` | `bunx smithers-orchestrator init --template customer-incident` | -| `nontechnical-research` | before-build decisions | `research` | `bunx smithers-orchestrator init --template nontechnical-research` | -| `requirements-interview` | vague stakeholder requests | `grill-me` | `bunx smithers-orchestrator init --template requirements-interview` | -| `quality-audit` | release readiness | `audit` | `bunx smithers-orchestrator init --template quality-audit` | -| `test-coverage` | regression prevention | `improve-test-coverage` | `bunx smithers-orchestrator init --template test-coverage` | -| `ship-a-change` | focused product improvements | `research-plan-implement` | `bunx smithers-orchestrator init --template ship-a-change` | -| `mission-mode` | larger approved milestones | `mission` | `bunx smithers-orchestrator init --template mission-mode` | +| `idea-to-prd` | founders, product, marketing | `write-a-prd` | `bunx smthrs init --template idea-to-prd` | +| `idea-to-tickets` | founders, product, operations, engineering | `tickets-create` | `bunx smthrs init --template idea-to-tickets` | +| `launch-checklist` | launch owners and operators | `plan` | `bunx smthrs init --template launch-checklist` | +| `customer-incident` | support escalations | `debug` | `bunx smthrs init --template customer-incident` | +| `nontechnical-research` | before-build decisions | `research` | `bunx smthrs init --template nontechnical-research` | +| `requirements-interview` | vague stakeholder requests | `grill-me` | `bunx smthrs init --template requirements-interview` | +| `quality-audit` | release readiness | `audit` | `bunx smthrs init --template quality-audit` | +| `test-coverage` | regression prevention | `improve-test-coverage` | `bunx smthrs init --template test-coverage` | +| `ship-a-change` | focused product improvements | `research-plan-implement` | `bunx smthrs init --template ship-a-change` | +| `mission-mode` | larger approved milestones | `mission` | `bunx smthrs init --template mission-mode` | Each detailed starter prints: - What outcome to expect - What context to gather before running -- The exact `bunx smithers-orchestrator workflow run ...` command +- The exact `bunx smthrs workflow run ...` command - Useful follow-up commands - When not to use that starter Filter by audience or goal: ```bash -bunx smithers-orchestrator starters --audience product -bunx smithers-orchestrator starters --goal quality -bunx smithers-orchestrator starters --workflow debug +bunx smthrs starters --audience product +bunx smthrs starters --goal quality +bunx smthrs starters --workflow debug ``` Use JSON when another tool needs the catalog: ```bash -bunx smithers-orchestrator starters --format json +bunx smthrs starters --format json ``` --- @@ -469,8 +469,8 @@ A code-review workflow built one capability at a time. Each step is a diff again ## 1. Install and scaffold ```bash -bunx smithers-orchestrator init -bun add smithers-orchestrator ai @ai-sdk/anthropic zod +bunx smthrs init +bun add smthrs ai @ai-sdk/anthropic zod bun add -d typescript @types/bun export ANTHROPIC_API_KEY="sk-ant-..." ``` @@ -486,7 +486,7 @@ A minimal `tsconfig.json`: "module": "ESNext", "moduleResolution": "bundler", "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", + "jsxImportSource": "smthrs", "strict": true, "noEmit": true, "skipLibCheck": true @@ -499,8 +499,8 @@ A minimal `tsconfig.json`: ## 2. One-task workflow ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -523,14 +523,14 @@ export default smithers((ctx) => ( This Task has no `agent`, just a literal value. Run it. ```bash -bunx smithers-orchestrator up workflow.tsx --input '{"name":"world"}' +bunx smthrs up workflow.tsx --input '{"name":"world"}' ``` Inspect: ```bash -bunx smithers-orchestrator ps # find the run id -bunx smithers-orchestrator inspect <run-id> # structured state +bunx smthrs ps # find the run id +bunx smthrs inspect <run-id> # structured state sqlite3 smithers.db "SELECT * FROM greeting;" # the persisted output ``` @@ -539,8 +539,8 @@ sqlite3 smithers.db "SELECT * FROM greeting;" # the persisted output Replace the literal Task with an agent Task whose output is structured. ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task, AnthropicAgent } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task, AnthropicAgent } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -578,8 +578,8 @@ The runtime injects a JSON-schema description of `outputs.analysis` into the pro Tasks see each other's outputs through `ctx.outputMaybe(...)`. An incomplete upstream returns `undefined`; on the next render frame the upstream output appears and the downstream Task mounts. ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { createSmithers, Sequence, Task, AnthropicAgent } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { createSmithers, Sequence, Task, AnthropicAgent } from "smthrs"; import { z } from "zod"; const AnalysisSchema = z.object({ @@ -654,7 +654,7 @@ Same shape works for branching, parallel groups, and loops: Pause for a human. The runtime persists the pending decision and exits cleanly; an operator approves or denies through the CLI; resume picks up from the gate. ```tsx -import { Approval } from "smithers-orchestrator"; +import { Approval } from "smthrs"; {analysis ? ( <Approval @@ -680,10 +680,10 @@ import { Approval } from "smithers-orchestrator"; Operator side: ```bash -bunx smithers-orchestrator ps --status waiting-approval # find paused runs -bunx smithers-orchestrator inspect <run-id> # see the request -bunx smithers-orchestrator approve <run-id> --node confirm-fix --by alice -bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true +bunx smthrs ps --status waiting-approval # find paused runs +bunx smthrs inspect <run-id> # see the request +bunx smthrs approve <run-id> --node confirm-fix --by alice +bunx smthrs up workflow.tsx --run-id <run-id> --resume true ``` `onDeny` controls behavior on rejection: `"fail"` aborts the run, `"continue"` proceeds without the approved branch, `"skip"` skips the gated tasks. @@ -693,10 +693,10 @@ bunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true Every completed task's output sits in SQLite. A crash, kill, or restart loses no work — the next run with `--resume true` skips finished tasks. ```bash -bunx smithers-orchestrator up workflow.tsx --input '{"repo":"."}' --run-id review-1 +bunx smthrs up workflow.tsx --input '{"repo":"."}' --run-id review-1 # ...analyze finishes, fix is mid-flight, you Ctrl+C -bunx smithers-orchestrator up workflow.tsx --run-id review-1 --resume true +bunx smthrs up workflow.tsx --run-id review-1 --resume true # analyze is skipped (already in DB), fix re-runs from scratch (was incomplete) ``` @@ -705,14 +705,14 @@ In-flight attempts are marked stale and re-tried; finished tasks are not. Resume For unattended recovery, run the supervisor: ```bash -bunx smithers-orchestrator supervise --interval 30s --stale-threshold 1m +bunx smthrs supervise --interval 30s --stale-threshold 1m ``` It auto-resumes runs whose owner process died. ## What you skipped (and where to find it) -- **Time travel** (replay a frame, fork a run, diff two runs): `bunx smithers-orchestrator replay|fork|diff|timeline` — see [How It Works → Time travel](/how-it-works#time-travel). +- **Time travel** (replay a frame, fork a run, diff two runs): `bunx smthrs replay|fork|diff|timeline` — see [How It Works → Time travel](/how-it-works#time-travel). - **Scorers** (attach evaluators to Tasks): see [Recipes → Scoring tasks](/recipes#scoring-tasks). - **Memory** (cross-run facts and message history): see [llms-memory.txt](/llms-memory.txt). - **RAG**, **voice**, **OpenAPI tools**: opt-in fragments — see the index in [llms.txt](/llms.txt). @@ -953,7 +953,7 @@ Replay with `--restore-vcs` checks out the jj revision the snapshot was taken at Attach evaluators to a Task. They run **after** completion and never block. ```tsx -import { schemaAdherenceScorer, latencyScorer } from "smithers-orchestrator/scorers"; +import { schemaAdherenceScorer, latencyScorer } from "smthrs/scorers"; <Task id="analyze" @@ -989,7 +989,7 @@ Five built-in tools — `read`, `write`, `edit`, `grep`, `bash` — sandboxed to Least-privilege per task: ```tsx -import { AnthropicAgent } from "smithers-orchestrator"; +import { AnthropicAgent } from "smthrs"; const analyst = new AnthropicAgent({ model, instructions: "..." }); // no tools const reviewer = new AnthropicAgent({ model, instructions: "...", tools: { read, grep } }); const implementer = new AnthropicAgent({ model, instructions: "...", tools: { read, write, edit, bash } }); @@ -1023,12 +1023,12 @@ Workflows are JSX trees. Smithers renders the tree, extracts ready tasks, execut ## Setup -Most projects should use `bunx smithers-orchestrator init` — it scaffolds everything below. +Most projects should use `bunx smthrs init` — it scaffolds everything below. To embed into an existing codebase: ```bash -bun add smithers-orchestrator react react-dom zod +bun add smthrs react react-dom zod bun add -d typescript @types/react @types/react-dom @types/node ``` @@ -1041,7 +1041,7 @@ Minimal `tsconfig.json`: "module": "ESNext", "moduleResolution": "bundler", "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", + "jsxImportSource": "smthrs", "strict": true, "noEmit": true, "skipLibCheck": true @@ -1049,17 +1049,17 @@ Minimal `tsconfig.json`: } ``` -`jsxImportSource` is the only non-standard line — it routes JSX through `smithers-orchestrator/jsx-runtime` instead of React DOM. +`jsxImportSource` is the only non-standard line — it routes JSX through `smthrs/jsx-runtime` instead of React DOM. Optional MDX prompts: add `bun add -d @types/mdx` and a `preload.ts` that calls `mdxPlugin()`, register it in `bunfig.toml` as `preload = ["./preload.ts"]`. -Verify with `bunx tsc --noEmit` and `bunx smithers-orchestrator --help`. +Verify with `bunx tsc --noEmit` and `bunx smthrs --help`. ## A minimal workflow ```tsx -// @jsxImportSource smithers-orchestrator — only needed if not set in tsconfig.json -import { createSmithers, Sequence, Task } from "smithers-orchestrator"; +// @jsxImportSource smthrs — only needed if not set in tsconfig.json +import { createSmithers, Sequence, Task } from "smthrs"; import { z } from "zod"; const { Workflow, smithers, outputs } = createSmithers({ @@ -1102,7 +1102,7 @@ The `report` Task doesn't exist in the plan until `analysis` completes. No place > Every Smithers CLI command in one structured catalog (TOON format). -Always invoke as `bunx smithers-orchestrator <command>` (see [Installation](/installation) for why). Use `--help` on any command for the canonical option list. +Always invoke as `bunx smthrs <command>` (see [Installation](/installation) for why). Use `--help` on any command for the canonical option list. ## Conventions @@ -1639,27 +1639,27 @@ commands[65]: **Set up** ```bash -bunx smithers-orchestrator init # scaffold .smithers/ -bunx smithers-orchestrator init --template idea-to-prd # scaffold with guided template next steps -bunx smithers-orchestrator starters # browse template IDs +bunx smthrs init # scaffold .smithers/ +bunx smthrs init --template idea-to-prd # scaffold with guided template next steps +bunx smthrs starters # browse template IDs ``` **Run** ```bash -bunx smithers-orchestrator workflow run implement --prompt "…" # launch a seeded workflow -bunx smithers-orchestrator up workflow.tsx --run-id <id> --resume true # resume a paused run +bunx smthrs workflow run implement --prompt "…" # launch a seeded workflow +bunx smthrs up workflow.tsx --run-id <id> --resume true # resume a paused run ``` **Observe & control** ```bash -bunx smithers-orchestrator ps # list runs -bunx smithers-orchestrator inspect <run-id> # structured run state -bunx smithers-orchestrator logs <run-id> --tail 20 --follow # stream events -bunx smithers-orchestrator why <run-id> # why is it paused? -bunx smithers-orchestrator approve <run-id> --node <id> --by <name> # approve a paused node -bunx smithers-orchestrator cancel <run-id> # cancel a run +bunx smthrs ps # list runs +bunx smthrs inspect <run-id> # structured run state +bunx smthrs logs <run-id> --tail 20 --follow # stream events +bunx smthrs why <run-id> # why is it paused? +bunx smthrs approve <run-id> --node <id> --by <name> # approve a paused node +bunx smthrs cancel <run-id> # cancel a run ``` See [Tour](/tour) for a full worked example. See [CLI overview](/cli/overview) for the complete flag reference. @@ -1671,7 +1671,7 @@ See [Tour](/tour) for a full worked example. See [CLI overview](/cli/overview) f > Root container; sequences direct children, optionally caches for resume. ```ts -import { Workflow } from "smithers-orchestrator"; +import { Workflow } from "smthrs"; type WorkflowProps = { name: string; @@ -1681,7 +1681,7 @@ type WorkflowProps = { ``` ```tsx -import { createSmithers } from "smithers-orchestrator"; +import { createSmithers } from "smthrs"; import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; import { z } from "zod"; @@ -1716,7 +1716,7 @@ export default smithers((ctx) => ( > Executable node; runs an agent, compute callback, or emits a static value. ```ts -import { Task } from "smithers-orchestrator"; +import { Task } from "smthrs"; type TaskProps = { id: string; @@ -1850,7 +1850,7 @@ const VERIFY = "verify" as const; > Run children in source order. ```ts -import { Sequence } from "smithers-orchestrator"; +import { Sequence } from "smthrs"; type SequenceProps = { key?: string; @@ -1894,7 +1894,7 @@ type SequenceProps = { > Run children concurrently with an optional concurrency cap. ```ts -import { Parallel } from "smithers-orchestrator"; +import { Parallel } from "smthrs"; type ParallelProps = { id?: string; @@ -1932,7 +1932,7 @@ type ParallelProps = { > Conditional fork; mounts `then` when `if` is true, otherwise `else`. ```ts -import { Branch } from "smithers-orchestrator"; +import { Branch } from "smthrs"; type BranchProps = { if: boolean; @@ -1977,7 +1977,7 @@ type BranchProps = { > Re-run children until `until` is true or `maxIterations` is hit. ```ts -import { Loop } from "smithers-orchestrator"; +import { Loop } from "smthrs"; type LoopProps = { id?: string; // auto-generated from tree position @@ -2027,7 +2027,7 @@ export default smithers((ctx) => { > Durable human approval; persists ApprovalDecision, selection, or ranking. ```ts -import { Approval, approvalDecisionSchema } from "smithers-orchestrator"; +import { Approval, approvalDecisionSchema } from "smthrs"; type ApprovalProps = { id: string; @@ -2062,7 +2062,7 @@ type ApprovalProps = { ``` ```tsx -import { Approval, Sequence, Task, Workflow, approvalDecisionSchema, createSmithers } from "smithers-orchestrator"; +import { Approval, Sequence, Task, Workflow, approvalDecisionSchema, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -2105,7 +2105,7 @@ export default smithers((ctx) => { > Conditional approval; pauses for human when `when` is true, else auto-approves. ```ts -import { ApprovalGate } from "smithers-orchestrator"; +import { ApprovalGate } from "smthrs"; type ApprovalGateProps = { id: string; @@ -2161,7 +2161,7 @@ const risk = ctx.output(outputs.riskScore, { nodeId: "risk" }); ```ts // Props -import { EscalationChain } from "smithers-orchestrator"; +import { EscalationChain } from "smthrs"; type EscalationChainProps = { id?: string; // default "escalation" @@ -2211,7 +2211,7 @@ type EscalationLevel = { ```ts // Props -import { DecisionTable } from "smithers-orchestrator"; +import { DecisionTable } from "smthrs"; type DecisionTableProps = { id?: string; @@ -2260,7 +2260,7 @@ type DecisionRule = { > Suspend until a human submits JSON matching the output schema. ```ts -import { HumanTask } from "smithers-orchestrator"; +import { HumanTask } from "smthrs"; type HumanTaskProps = { id: string; @@ -2281,7 +2281,7 @@ type HumanTaskProps = { ``` ```tsx -import { Workflow, Sequence, Task, HumanTask, createSmithers } from "smithers-orchestrator"; +import { Workflow, Sequence, Task, HumanTask, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -2329,7 +2329,7 @@ export default smithers((ctx) => { > Typed wrapper around <WaitForEvent>; signal name equals node id. ```ts -import { Signal } from "smithers-orchestrator"; +import { Signal } from "smthrs"; type SignalProps = { id: string; // signal name and node id @@ -2350,7 +2350,7 @@ type SignalProps = { ``` ```tsx -import { Signal, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { Signal, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -2383,7 +2383,7 @@ export default smithers(() => ( > Durably suspend until a correlated external event arrives, or time out. ```ts -import { WaitForEvent } from "smithers-orchestrator"; +import { WaitForEvent } from "smthrs"; type WaitForEventProps = { id: string; @@ -2435,7 +2435,7 @@ type WaitForEventProps = { > Durably suspend for a relative duration or until an absolute time. ```ts -import { Timer } from "smithers-orchestrator"; +import { Timer } from "smthrs"; type TimerProps = { id: string; @@ -2475,7 +2475,7 @@ type TimerProps = { > Forward steps with compensations run in reverse on failure. ```ts -import { Saga } from "smithers-orchestrator"; +import { Saga } from "smthrs"; type SagaStepDef = { id: string; @@ -2526,7 +2526,7 @@ type SagaProps = { > Workflow-scoped error boundary with catch handlers and guaranteed cleanup. ```ts -import { TryCatchFinally } from "smithers-orchestrator"; +import { TryCatchFinally } from "smthrs"; type TryCatchFinallyProps = { id?: string; @@ -2574,8 +2574,8 @@ type TryCatchFinallyProps = { `<Sandbox>` is a task boundary for work that should execute outside the parent task process. The public component is provider-first: pass an injectable provider object or a registered provider id. `runtime` remains only for the built-in legacy local transports. ```ts -import { Sandbox } from "smithers-orchestrator"; -import type { SandboxProvider } from "smithers-orchestrator/sandbox"; +import { Sandbox } from "smthrs"; +import type { SandboxProvider } from "smthrs/sandbox"; type SandboxProps = { id: string; @@ -2661,7 +2661,7 @@ type SandboxProvider = { Register reusable providers when a workflow should reference them by id: ```ts -import { registerSandboxProvider } from "smithers-orchestrator/sandbox"; +import { registerSandboxProvider } from "smthrs/sandbox"; const unregister = registerSandboxProvider(provider); @@ -2749,7 +2749,7 @@ Freestyle's current VM docs show the stable package as `freestyle`, VM creation > Invoke a child workflow with its own retry, cache, resume boundary. ```ts -import { Subflow } from "smithers-orchestrator"; +import { Subflow } from "smthrs"; type SubflowProps = { id: string; @@ -2805,7 +2805,7 @@ type SubflowProps = { > Close the current run; start a fresh one with optional carried state. ```ts -import { ContinueAsNew, continueAsNew } from "smithers-orchestrator"; +import { ContinueAsNew, continueAsNew } from "smthrs"; type ContinueAsNewProps = { state?: unknown; // JSON-serializable; arrives as ctx.input.__smithersContinuation.payload @@ -2854,7 +2854,7 @@ export default smithers((ctx) => { > Reads and modifies source code at runtime via a markdown strategy doc. ```ts -import { SuperSmithers } from "smithers-orchestrator"; +import { SuperSmithers } from "smthrs"; type SuperSmithersProps = { strategy: string | ReactElement; // markdown or MDX strategy document @@ -2897,7 +2897,7 @@ type SuperSmithersProps = { > Propagate token, latency, and cost budgets to descendant tasks. ```ts -import { Aspects } from "smithers-orchestrator"; +import { Aspects } from "smthrs"; type TokenBudgetConfig = { max: number; @@ -2957,7 +2957,7 @@ type AspectsProps = { > Run a subtree in an isolated worktree (git or jj) rooted at `path`. ```ts -import { Worktree } from "smithers-orchestrator"; +import { Worktree } from "smthrs"; type WorktreeProps = { key?: string; @@ -2997,7 +2997,7 @@ type WorktreeProps = { ```ts // Props -import { ReviewLoop } from "smithers-orchestrator"; +import { ReviewLoop } from "smthrs"; type ReviewLoopProps = { id?: string; // default "review-loop"; task ids derived as {id}-produce, {id}-review @@ -3041,7 +3041,7 @@ export default smithers(() => ( ```ts // Props -import { Optimizer } from "smithers-orchestrator"; +import { Optimizer } from "smthrs"; type OptimizerProps = { id?: string; // default "optimizer"; task ids {id}-generate, {id}-evaluate @@ -3087,7 +3087,7 @@ export default smithers(() => ( ```ts // Props -import { ContentPipeline } from "smithers-orchestrator"; +import { ContentPipeline } from "smthrs"; type ContentPipelineProps = { id?: string; @@ -3133,7 +3133,7 @@ export default smithers(() => ( ```ts // Props -import { DriftDetector } from "smithers-orchestrator"; +import { DriftDetector } from "smthrs"; type DriftDetectorProps = { id?: string; // default "drift"; ids {id}-capture, {id}-compare @@ -3179,7 +3179,7 @@ type DriftDetectorProps = { ```ts // Props -import { ScanFixVerify } from "smithers-orchestrator"; +import { ScanFixVerify } from "smthrs"; type ScanFixVerifyProps = { id?: string; // default "sfv" @@ -3228,7 +3228,7 @@ type ScanFixVerifyProps = { ```ts // Props -import { Poller } from "smithers-orchestrator"; +import { Poller } from "smthrs"; type PollerProps = { id?: string; // default "poll" @@ -3271,7 +3271,7 @@ type PollerProps = { ```ts // Props -import { Runbook } from "smithers-orchestrator"; +import { Runbook } from "smthrs"; type RunbookProps = { id?: string; // used as step-id prefix; defaults to "runbook" when omitted @@ -3324,7 +3324,7 @@ export default smithers(() => ( ```ts // Props -import { Supervisor } from "smithers-orchestrator"; +import { Supervisor } from "smthrs"; type SupervisorProps = { id?: string; // default: "supervisor" @@ -3375,7 +3375,7 @@ export default smithers(() => ( ```ts // Props -import { MergeQueue } from "smithers-orchestrator"; +import { MergeQueue } from "smthrs"; type MergeQueueProps = { id?: string; @@ -3406,7 +3406,7 @@ type MergeQueueProps = { ```ts // Props -import { CheckSuite } from "smithers-orchestrator"; +import { CheckSuite } from "smthrs"; type CheckConfig = { id: string; agent?: AgentLike; command?: string; label?: string }; @@ -3449,7 +3449,7 @@ type CheckSuiteProps = { ```ts // Props -import { ClassifyAndRoute } from "smithers-orchestrator"; +import { ClassifyAndRoute } from "smthrs"; type CategoryConfig = { agent: AgentLike; @@ -3502,7 +3502,7 @@ const classification = ctx.outputMaybe(outputs.classification, { ```ts // Props -import { GatherAndSynthesize } from "smithers-orchestrator"; +import { GatherAndSynthesize } from "smthrs"; type SourceDef = { agent: AgentLike; @@ -3555,7 +3555,7 @@ type GatherAndSynthesizeProps = { ```ts // Props -import { Panel } from "smithers-orchestrator"; +import { Panel } from "smthrs"; type PanelistConfig = { agent: AgentLike; role?: string; label?: string }; @@ -3604,7 +3604,7 @@ type PanelProps = { ```ts // Props -import { Debate } from "smithers-orchestrator"; +import { Debate } from "smthrs"; type DebateProps = { id?: string; // default: "debate" @@ -3647,7 +3647,7 @@ type DebateProps = { ```ts // Props -import { Kanban } from "smithers-orchestrator"; +import { Kanban } from "smthrs"; type ColumnDef = { name: string; @@ -3702,7 +3702,7 @@ const columns = [ Each recipe is a working snippet plus one line of context. They compose freely. -If you want a ready-to-run outcome before writing workflow code, start with [Starters](/starters) or run `bunx smithers-orchestrator starters`. +If you want a ready-to-run outcome before writing workflow code, start with [Starters](/starters) or run `bunx smthrs starters`. ## Implement → review loop @@ -3843,7 +3843,7 @@ One context boundary per logical operation, not per step. Splitting too finely l ## Per-agent least-privilege tools ```tsx -import { AnthropicAgent } from "smithers-orchestrator"; +import { AnthropicAgent } from "smthrs"; const analyst = new AnthropicAgent({ model, system: "Return JSON" }); // no tools const reviewer = new AnthropicAgent({ model, system: "...", tools: { read, grep } }); // read-only @@ -3857,7 +3857,7 @@ Match the tool surface to the role. External mutations must mark themselves and use the runtime idempotency key. ```tsx -import { defineTool } from "smithers-orchestrator/tools"; +import { defineTool } from "smthrs/tools"; const createTicket = defineTool({ name: "jira.create", @@ -3942,7 +3942,7 @@ Workflow logic factors out into hooks the same way React UI logic does. Smithers records a jj change ID (or git SHA) per attempt. Revert any attempt to its exact workspace state: ```bash -bunx smithers-orchestrator revert workflow.tsx --run-id <id> --node-id implement --attempt 1 +bunx smthrs revert workflow.tsx --run-id <id> --node-id implement --attempt 1 ``` Useful when an experiment leaves the worktree in a bad state. @@ -3950,10 +3950,10 @@ Useful when an experiment leaves the worktree in a bad state. ## Time travel: fork, replay, diff ```bash -bunx smithers-orchestrator timeline <run-id> --tree -bunx smithers-orchestrator diff <run-id> <node-id> -bunx smithers-orchestrator fork workflow.tsx --run-id <id> --frame 5 --reset-node analyze --label exp1 -bunx smithers-orchestrator replay workflow.tsx --run-id <id> --frame 5 --restore-vcs +bunx smthrs timeline <run-id> --tree +bunx smthrs diff <run-id> <node-id> +bunx smthrs fork workflow.tsx --run-id <id> --frame 5 --reset-node analyze --label exp1 +bunx smthrs replay workflow.tsx --run-id <id> --frame 5 --restore-vcs ``` Fork makes a child run without starting it (add `--run` to start immediately); replay also makes a child run but immediately resumes it. `--restore-vcs` checks out the original revision so re-execution sees the same source. @@ -3961,7 +3961,7 @@ Fork makes a child run without starting it (add `--run` to start immediately); r ## Scoring tasks ```tsx -import { schemaAdherenceScorer, latencyScorer, llmJudge } from "smithers-orchestrator/scorers"; +import { schemaAdherenceScorer, latencyScorer, llmJudge } from "smthrs/scorers"; <Task id="analyze" @@ -3990,7 +3990,7 @@ Scorers run after the task and never block. Sample expensive scorers with `ratio ``` ```bash -bunx smithers-orchestrator eval workflow.tsx --cases evals/smoke.jsonl --suite smoke --force +bunx smthrs eval workflow.tsx --cases evals/smoke.jsonl --suite smoke --force ``` Use eval suites when you need repeatable workflow-level checks. Assertions support `status`, `output` (exact match), and `outputContains` (partial match). Reports land in `.smithers/evals/<suite>.json`; the command exits non-zero on failures. @@ -4008,7 +4008,7 @@ Avoids unbounded SQLite growth in long-lived loops. ## Hot reload while authoring ```bash -bunx smithers-orchestrator up workflow.tsx --hot +bunx smthrs up workflow.tsx --hot ``` Edits to the workflow source apply on the next render frame without losing in-flight task state. Schema changes still require a fresh run. @@ -4044,9 +4044,9 @@ Every agent task produces a reusable session snapshot. `fork` starts a new task ## Types -> Public TypeScript surface for smithers-orchestrator. +> Public TypeScript surface for smthrs. -One source of truth: `tsc --emitDeclarationOnly` would produce something close to this. Import these types from `smithers-orchestrator` unless noted otherwise. +One source of truth: `tsc --emitDeclarationOnly` would produce something close to this. Import these types from `smthrs` unless noted otherwise. Major sections at a glance: - **Workflow / Context** — `SmithersWorkflow`, `SmithersCtx`, `RunOptions`, `RunResult` — the entry points for defining and running workflows. @@ -4054,7 +4054,7 @@ Major sections at a glance: - **Component props** — `WorkflowProps`, `ApprovalProps`, `SignalProps`, `LoopProps`, etc. — all JSX component interfaces. - **Errors** — `SmithersError`, `KnownSmithersErrorCode` — typed error codes; see [Errors](/reference/errors) for descriptions. - **Server / Gateway** — `ServerOptions`, `GatewayOptions`, `GatewayAuthConfig` — self-hosting configuration. -- **Scorers / Memory / OpenAPI / Observability** — sub-path imports (`smithers-orchestrator/scorers`, `/memory`, `/openapi`, `/observability`). +- **Scorers / Memory / OpenAPI / Observability** — sub-path imports (`smthrs/scorers`, `/memory`, `/openapi`, `/observability`). ```ts // ============================================================================= @@ -4665,7 +4665,7 @@ type GatewayOptions = { }; // ============================================================================= -// Scorers (smithers-orchestrator/scorers) +// Scorers (smthrs/scorers) // ============================================================================= type ScoreResult = { score: number; reason?: string; meta?: Record<string, unknown> }; @@ -4690,7 +4690,7 @@ type CreateScorerConfig = { }; // ============================================================================= -// Memory (smithers-orchestrator/memory) +// Memory (smthrs/memory) // ============================================================================= type MemoryFact = { namespace: string; key: string; valueJson: string; schemaSig?: string | null; createdAtMs: number; updatedAtMs: number; ttlMs?: number | null }; @@ -4723,7 +4723,7 @@ type MemoryStore = { }; // ============================================================================= -// OpenAPI tools (smithers-orchestrator/openapi) +// OpenAPI tools (smthrs/openapi) // ============================================================================= type OpenApiAuth = @@ -4768,7 +4768,7 @@ type CreateSmithersApi<Schema = any> = { }; // ============================================================================= -// Observability (smithers-orchestrator/observability) +// Observability (smthrs/observability) // ============================================================================= type SmithersLogFormat = "json" | "pretty"; @@ -4777,7 +4777,7 @@ type SmithersObservabilityOptions = { service?: SmithersObservabilityService; lo type ResolvedSmithersObservabilityOptions = SmithersObservabilityOptions & { metricsPort?: number; metricsPath?: string }; ``` -For canonical, machine-checked types, install `smithers-orchestrator` and use editor go-to-definition. For runtime errors, see [Errors](/reference/errors). +For canonical, machine-checked types, install `smthrs` and use editor go-to-definition. For runtime errors, see [Errors](/reference/errors). --- @@ -4797,12 +4797,12 @@ import { isKnownSmithersErrorCode, isSmithersError, knownSmithersErrorCodes, -} from "smithers-orchestrator"; +} from "smthrs"; import type { KnownSmithersErrorCode, SmithersError, SmithersErrorCode, -} from "smithers-orchestrator"; +} from "smthrs"; ``` Every built-in `SmithersErrorInstance` carries three pieces of documentation metadata: @@ -4831,7 +4831,7 @@ Use `KnownSmithersErrorCode` for an exhaustive switch over built-in Smithers cod ```ts import { Effect } from "effect"; -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; try { await Effect.runPromise(runWorkflow(workflow, { input: {} })); @@ -5024,7 +5024,7 @@ JSON response codes, not `SmithersErrorInstance` objects. ## Package Configuration -> Reference for the smithers-orchestrator package exports, TypeScript configuration, and Bun preload setup. +> Reference for the smthrs package exports, TypeScript configuration, and Bun preload setup. This page covers: CLI binary usage, subpath export map, TypeScript compiler options, Bun preload and test config, and npm scripts. @@ -5038,80 +5038,80 @@ Use the subpath form to import only the surface you need. | Import path | Entry file | Purpose | |---|---|---| -| `smithers-orchestrator` | `./src/index.js` | Core API: `createSmithers`, components, `runWorkflow`, `renderMdx`, errors | -| `smithers-orchestrator/gateway` | `./src/gateway.js` | Gateway server primitives from `@smithers-orchestrator/server/gateway` | -| `smithers-orchestrator/gateway-client` | `./src/gateway-client.js` | Typed client helpers from `@smithers-orchestrator/gateway-client` | -| `smithers-orchestrator/gateway-react` | `./src/gateway-react.js` | React hooks and providers for gateway-backed UIs | -| `smithers-orchestrator/sandbox` | `./src/sandbox.js` | Sandbox provider contracts, bundles, and execution helpers | -| `smithers-orchestrator/jsx-runtime` | `./src/jsx-runtime.js` | JSX runtime (auto-resolved by `jsxImportSource`) | -| `smithers-orchestrator/jsx-dev-runtime` | `./src/jsx-runtime.js` | JSX dev runtime (auto-resolved in dev mode) | -| `smithers-orchestrator/tools` | `./src/tools.js` | Tool sandbox: `defineTool`, `read`, `grep`, `bash`, `edit`, `write` | -| `smithers-orchestrator/server` | `./src/server.js` | HTTP server for run management and event streaming | -| `smithers-orchestrator/observability` | `./src/observability.js` | OpenTelemetry traces, metrics, and Prometheus integration | -| `smithers-orchestrator/mdx-plugin` | `./src/mdx-plugin.js` | Bun preload plugin for `.mdx` imports | -| `smithers-orchestrator/dom/renderer` | `./src/dom/renderer.js` | Internal renderer (advanced use) | -| `smithers-orchestrator/serve` | `./src/serve.js` | Single-workflow HTTP server via `createServeApp` | -| `smithers-orchestrator/scorers` | `./src/scorers.js` | Eval scorers: `createScorer`, `llmJudge`, `aggregateScores` | -| `smithers-orchestrator/memory` | `./src/memory.js` | Cross-run facts, message history, processors, and metrics | -| `smithers-orchestrator/openapi` | `./src/openapi.js` | Generate AI SDK tools from OpenAPI specs | -| `smithers-orchestrator/control-plane` | `./src/control-plane.js` | Organization, project, billing, usage, secret-reference, and audit primitives | - -The PI plugin is published as the separate `@smithers-orchestrator/pi-plugin` package. The old `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extension` subpaths are no longer exported. +| `smthrs` | `./src/index.js` | Core API: `createSmithers`, components, `runWorkflow`, `renderMdx`, errors | +| `smthrs/gateway` | `./src/gateway.js` | Gateway server primitives from `@smthrs/server/gateway` | +| `smthrs/gateway-client` | `./src/gateway-client.js` | Typed client helpers from `@smthrs/gateway-client` | +| `smthrs/gateway-react` | `./src/gateway-react.js` | React hooks and providers for gateway-backed UIs | +| `smthrs/sandbox` | `./src/sandbox.js` | Sandbox provider contracts, bundles, and execution helpers | +| `smthrs/jsx-runtime` | `./src/jsx-runtime.js` | JSX runtime (auto-resolved by `jsxImportSource`) | +| `smthrs/jsx-dev-runtime` | `./src/jsx-runtime.js` | JSX dev runtime (auto-resolved in dev mode) | +| `smthrs/tools` | `./src/tools.js` | Tool sandbox: `defineTool`, `read`, `grep`, `bash`, `edit`, `write` | +| `smthrs/server` | `./src/server.js` | HTTP server for run management and event streaming | +| `smthrs/observability` | `./src/observability.js` | OpenTelemetry traces, metrics, and Prometheus integration | +| `smthrs/mdx-plugin` | `./src/mdx-plugin.js` | Bun preload plugin for `.mdx` imports | +| `smthrs/dom/renderer` | `./src/dom/renderer.js` | Internal renderer (advanced use) | +| `smthrs/serve` | `./src/serve.js` | Single-workflow HTTP server via `createServeApp` | +| `smthrs/scorers` | `./src/scorers.js` | Eval scorers: `createScorer`, `llmJudge`, `aggregateScores` | +| `smthrs/memory` | `./src/memory.js` | Cross-run facts, message history, processors, and metrics | +| `smthrs/openapi` | `./src/openapi.js` | Generate AI SDK tools from OpenAPI specs | +| `smthrs/control-plane` | `./src/control-plane.js` | Organization, project, billing, usage, secret-reference, and audit primitives | + +The PI plugin is published as the separate `@smthrs/pi-plugin` package. The old `smthrs/pi-plugin` and `smthrs/pi-extension` subpaths are no longer exported. ## Workspace Packages -Most applications should import from `smithers-orchestrator`. The scoped workspace packages below are published for advanced integrations, custom clients, and framework development. +Most applications should import from `smthrs`. The scoped workspace packages below are published for advanced integrations, custom clients, and framework development. | Package | Primary surface | Related docs | |---|---|---| -| `smithers-orchestrator` | Public facade for workflow authoring, components, agents, tools, server helpers, memory, OpenAPI tools, scorers, and JSX runtime setup | This page, [Types](/reference/types) | -| `@smithers-orchestrator/cli` | CLI entrypoint, MCP server, local workflow pack, account registry commands, DevTools commands, cron, alerts, and server commands | [CLI Overview](/cli/overview), [MCP Server](/integrations/mcp-server) | -| `@smithers-orchestrator/accounts` | Subscription and API-key account registry helpers: `listAccounts`, `addAccount`, `removeAccount`, `getAccount`, `accountToProviderEnv` | [CLI Agents](/integrations/cli-agents) | -| `@smithers-orchestrator/agents` | AI SDK and CLI agent adapters, CLI capability reports, agent contracts, and tool capability registry | [CLI Agents](/integrations/cli-agents), [SDK Agents](/integrations/sdk-agents) | -| `@smithers-orchestrator/components` | JSX workflow components such as `Task`, `Workflow`, `Approval`, `Sandbox`, `Timer`, `Signal`, and control-flow components | [Components](/concepts/control-flow) | -| `@smithers-orchestrator/control-plane` | Durable organization, project, team, billing, usage, secret-reference, and audit primitives for hosted deployments | [Control Plane](/deployment/control-plane) | -| `@smithers-orchestrator/db` | SQLite/Drizzle adapter, table setup, run-state derivation, schema helpers, and output tables | [Data Model](/concepts/data-model), [Run State](/runtime/run-state) | -| `@smithers-orchestrator/devtools` | Snapshot, tree, diff, node lookup, task collection, and DevTools run-store helpers behind the CLI inspect commands | [Debugging](/guides/debugging), [CLI Overview](/cli/overview) | -| `@smithers-orchestrator/driver` | Runtime driver contracts: `RunOptions`, `RunResult`, `RunStatus`, `SmithersCtx`, outputs, task runtime, interop, and child process helpers | [Run Workflow](/runtime/run-workflow), [Execution Model](/concepts/execution-model) | -| `@smithers-orchestrator/engine` | Workflow rendering/execution API: `runWorkflow`, `renderFrame`, `workflow`, `Smithers`, `fragment`, signals, and Effect versioning | [Render Frame](/runtime/render-frame), [Run Workflow](/runtime/run-workflow) | -| `@smithers-orchestrator/errors` | Error definitions, known codes, JSON serialization, docs URLs, and type guards | [Errors](/reference/errors) | -| `@smithers-orchestrator/gateway` | Stable Gateway RPC contracts, auth scopes, deployment metadata, and generated OpenAPI schema | [Gateway](/integrations/gateway), [RPC](/rpc/launch-run) | -| `@smithers-orchestrator/gateway-client` | Browser/client SDK for Gateway RPC requests and event streams | [Gateway](/integrations/gateway) | -| `@smithers-orchestrator/gateway-react` | React hooks and root helpers for Gateway-backed UIs | [Gateway](/integrations/gateway) | -| `@smithers-orchestrator/graph` | Framework-neutral workflow graph model, XML nodes, task descriptors, and graph snapshots | [Planner Internals](/concepts/planner-internals), [Types](/reference/types) | -| `@smithers-orchestrator/memory` | Cross-run facts, message history, processors, namespaces, service layer, and metrics | [Memory](/concepts/memory), [Memory Quickstart](/guides/memory-quickstart) | -| `@smithers-orchestrator/observability` | Event types, logging, tracing, metrics, Prometheus rendering, and runtime observability layers | [Events](/runtime/events), [Event Types](/reference/event-types) | -| `@smithers-orchestrator/openapi` | OpenAPI parsing, operation extraction, AI SDK tool generation, schema conversion, and metrics | [OpenAPI Tools](/concepts/openapi-tools), [OpenAPI Quickstart](/guides/openapi-tools-quickstart) | -| `@smithers-orchestrator/pi-plugin` | PI extension runtime, views, API wrappers, and workflow inspection integration | [PI Integration](/integrations/pi-integration) | -| `@smithers-orchestrator/protocol` | Shared contracts, small value types, and protocol-level errors for cross-package use | [Types](/reference/types), [Errors](/reference/errors) | -| `@smithers-orchestrator/react-reconciler` | Custom React reconciler, host context, DOM renderer, DevTools preload, driver, and JSX runtime internals | [Why React](/why-react), [Render Frame](/runtime/render-frame) | -| `@smithers-orchestrator/sandbox` | Sandbox bundle, execute, and transport primitives used by the `Sandbox` component | [Sandbox](/components/sandbox) | -| `@smithers-orchestrator/scheduler` | Pure workflow state machine: task state, scheduler decisions, retry/cache policies, wait reasons, and workflow session services | [Workflow State](/concepts/workflow-state), [Suspend and Resume](/concepts/suspend-and-resume) | -| `@smithers-orchestrator/scorers` | Scorer definitions, LLM judges, batch execution, aggregation, persistence schema, and metrics | [Evals](/concepts/evals), [Evals Quickstart](/guides/evals-quickstart) | -| `@smithers-orchestrator/server` | HTTP, WebSocket, Gateway, cron, webhook, metrics, and single-workflow serving APIs | [Server](/integrations/server), [Serve](/integrations/serve) | -| `@smithers-orchestrator/smithers-demo` | Interactive Smithers workflow generator demo with React Flow visualization | [CLI Overview](/cli/overview) | -| `@smithers-orchestrator/smithers-studio-2` | Next Smithers Studio UI shell for browsing and driving workflow runs | [CLI Overview](/cli/overview) | -| `@smithers-orchestrator/smithers-tui-demo` | Private React TUI demo app for terminal workflow interaction experiments | [CLI Overview](/cli/overview) | -| `@smithers-orchestrator/time-travel` | Snapshots, diffs, forks, replay, timelines, VCS tags, rewind locks/audits, and time-travel metrics | [Time Travel](/concepts/time-travel), [Time Travel Quickstart](/guides/time-travel-quickstart) | -| `@smithers-orchestrator/vcs` | VCS discovery and jj workspace operations such as `runJj`, `workspaceAdd`, `workspaceList`, and pointer reverts | [VCS Helpers](/reference/vcs-helpers), [VCS Guide](/guides/vcs) | +| `smthrs` | Public facade for workflow authoring, components, agents, tools, server helpers, memory, OpenAPI tools, scorers, and JSX runtime setup | This page, [Types](/reference/types) | +| `@smthrs/cli` | CLI entrypoint, MCP server, local workflow pack, account registry commands, DevTools commands, cron, alerts, and server commands | [CLI Overview](/cli/overview), [MCP Server](/integrations/mcp-server) | +| `@smthrs/accounts` | Subscription and API-key account registry helpers: `listAccounts`, `addAccount`, `removeAccount`, `getAccount`, `accountToProviderEnv` | [CLI Agents](/integrations/cli-agents) | +| `@smthrs/agents` | AI SDK and CLI agent adapters, CLI capability reports, agent contracts, and tool capability registry | [CLI Agents](/integrations/cli-agents), [SDK Agents](/integrations/sdk-agents) | +| `@smthrs/components` | JSX workflow components such as `Task`, `Workflow`, `Approval`, `Sandbox`, `Timer`, `Signal`, and control-flow components | [Components](/concepts/control-flow) | +| `@smthrs/control-plane` | Durable organization, project, team, billing, usage, secret-reference, and audit primitives for hosted deployments | [Control Plane](/deployment/control-plane) | +| `@smthrs/db` | SQLite/Drizzle adapter, table setup, run-state derivation, schema helpers, and output tables | [Data Model](/concepts/data-model), [Run State](/runtime/run-state) | +| `@smthrs/devtools` | Snapshot, tree, diff, node lookup, task collection, and DevTools run-store helpers behind the CLI inspect commands | [Debugging](/guides/debugging), [CLI Overview](/cli/overview) | +| `@smthrs/driver` | Runtime driver contracts: `RunOptions`, `RunResult`, `RunStatus`, `SmithersCtx`, outputs, task runtime, interop, and child process helpers | [Run Workflow](/runtime/run-workflow), [Execution Model](/concepts/execution-model) | +| `@smthrs/engine` | Workflow rendering/execution API: `runWorkflow`, `renderFrame`, `workflow`, `Smithers`, `fragment`, signals, and Effect versioning | [Render Frame](/runtime/render-frame), [Run Workflow](/runtime/run-workflow) | +| `@smthrs/errors` | Error definitions, known codes, JSON serialization, docs URLs, and type guards | [Errors](/reference/errors) | +| `@smthrs/gateway` | Stable Gateway RPC contracts, auth scopes, deployment metadata, and generated OpenAPI schema | [Gateway](/integrations/gateway), [RPC](/rpc/launch-run) | +| `@smthrs/gateway-client` | Browser/client SDK for Gateway RPC requests and event streams | [Gateway](/integrations/gateway) | +| `@smthrs/gateway-react` | React hooks and root helpers for Gateway-backed UIs | [Gateway](/integrations/gateway) | +| `@smthrs/graph` | Framework-neutral workflow graph model, XML nodes, task descriptors, and graph snapshots | [Planner Internals](/concepts/planner-internals), [Types](/reference/types) | +| `@smthrs/memory` | Cross-run facts, message history, processors, namespaces, service layer, and metrics | [Memory](/concepts/memory), [Memory Quickstart](/guides/memory-quickstart) | +| `@smthrs/observability` | Event types, logging, tracing, metrics, Prometheus rendering, and runtime observability layers | [Events](/runtime/events), [Event Types](/reference/event-types) | +| `@smthrs/openapi` | OpenAPI parsing, operation extraction, AI SDK tool generation, schema conversion, and metrics | [OpenAPI Tools](/concepts/openapi-tools), [OpenAPI Quickstart](/guides/openapi-tools-quickstart) | +| `@smthrs/pi-plugin` | PI extension runtime, views, API wrappers, and workflow inspection integration | [PI Integration](/integrations/pi-integration) | +| `@smthrs/protocol` | Shared contracts, small value types, and protocol-level errors for cross-package use | [Types](/reference/types), [Errors](/reference/errors) | +| `@smthrs/react-reconciler` | Custom React reconciler, host context, DOM renderer, DevTools preload, driver, and JSX runtime internals | [Why React](/why-react), [Render Frame](/runtime/render-frame) | +| `@smthrs/sandbox` | Sandbox bundle, execute, and transport primitives used by the `Sandbox` component | [Sandbox](/components/sandbox) | +| `@smthrs/scheduler` | Pure workflow state machine: task state, scheduler decisions, retry/cache policies, wait reasons, and workflow session services | [Workflow State](/concepts/workflow-state), [Suspend and Resume](/concepts/suspend-and-resume) | +| `@smthrs/scorers` | Scorer definitions, LLM judges, batch execution, aggregation, persistence schema, and metrics | [Evals](/concepts/evals), [Evals Quickstart](/guides/evals-quickstart) | +| `@smthrs/server` | HTTP, WebSocket, Gateway, cron, webhook, metrics, and single-workflow serving APIs | [Server](/integrations/server), [Serve](/integrations/serve) | +| `@smthrs/smithers-demo` | Interactive Smithers workflow generator demo with React Flow visualization | [CLI Overview](/cli/overview) | +| `@smthrs/smithers-studio-2` | Next Smithers Studio UI shell for browsing and driving workflow runs | [CLI Overview](/cli/overview) | +| `@smthrs/smithers-tui-demo` | Private React TUI demo app for terminal workflow interaction experiments | [CLI Overview](/cli/overview) | +| `@smthrs/time-travel` | Snapshots, diffs, forks, replay, timelines, VCS tags, rewind locks/audits, and time-travel metrics | [Time Travel](/concepts/time-travel), [Time Travel Quickstart](/guides/time-travel-quickstart) | +| `@smthrs/vcs` | VCS discovery and jj workspace operations such as `runJj`, `workspaceAdd`, `workspaceList`, and pointer reverts | [VCS Helpers](/reference/vcs-helpers), [VCS Guide](/guides/vcs) | ### Usage ```ts // Core API -import { createSmithers, runWorkflow } from "smithers-orchestrator"; +import { createSmithers, runWorkflow } from "smthrs"; // Tools -import { defineTool, bash, read, write } from "smithers-orchestrator/tools"; +import { defineTool, bash, read, write } from "smthrs/tools"; // Scorers -import { createScorer, llmJudge } from "smithers-orchestrator/scorers"; +import { createScorer, llmJudge } from "smthrs/scorers"; // MDX plugin (in preload.ts) -import { mdxPlugin } from "smithers-orchestrator/mdx-plugin"; +import { mdxPlugin } from "smthrs/mdx-plugin"; // Control-plane primitives -import { ControlPlaneStore } from "smithers-orchestrator/control-plane"; +import { ControlPlaneStore } from "smthrs/control-plane"; ``` ## TypeScript Configuration @@ -5122,42 +5122,42 @@ import { ControlPlaneStore } from "smithers-orchestrator/control-plane"; { "compilerOptions": { "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator" + "jsxImportSource": "smthrs" } } ``` -This tells TypeScript to resolve JSX transforms from `smithers-orchestrator/jsx-runtime` instead of `react/jsx-runtime`. The Smithers JSX runtime re-exports React's runtime, so component behavior is identical. This setting enables proper type resolution for Smithers workflow components. +This tells TypeScript to resolve JSX transforms from `smthrs/jsx-runtime` instead of `react/jsx-runtime`. The Smithers JSX runtime re-exports React's runtime, so component behavior is identical. This setting enables proper type resolution for Smithers workflow components. See [JSX Installation](/jsx/installation) for the complete TypeScript setup. ### Path Aliases -When developing inside the `smithers-orchestrator` monorepo, the root `tsconfig.json` defines path aliases so source imports resolve without a build step: +When developing inside the `smthrs` monorepo, the root `tsconfig.json` defines path aliases so source imports resolve without a build step: ```jsonc "paths": { - "smithers-orchestrator": ["./packages/smithers/src/index.js"], - "smithers-orchestrator/jsx-runtime": ["./packages/smithers/src/jsx-runtime.js"], - "smithers-orchestrator/jsx-dev-runtime": ["./packages/smithers/src/jsx-runtime.js"], - "smithers-orchestrator/tools": ["./packages/smithers/src/tools.js"], - "smithers-orchestrator/*": [ + "smthrs": ["./packages/smithers/src/index.js"], + "smthrs/jsx-runtime": ["./packages/smithers/src/jsx-runtime.js"], + "smthrs/jsx-dev-runtime": ["./packages/smithers/src/jsx-runtime.js"], + "smthrs/tools": ["./packages/smithers/src/tools.js"], + "smthrs/*": [ "./packages/smithers/src/*.js", "./packages/smithers/src/*/index.js" ], - "smithers-orchestrator/scorers": ["./packages/scorers/src/index.js"], - "@smithers-orchestrator/agents": ["./packages/agents/src/index.js"], - "@smithers-orchestrator/gateway-client": ["./packages/gateway-client/src/index.ts"], - "@smithers-orchestrator/gateway-react": ["./packages/gateway-react/src/index.ts"], - "@smithers-orchestrator/pi-plugin": ["./packages/pi-plugin/src/index.ts"], - "@smithers-orchestrator/server": ["./packages/server/src/index.js"] + "smthrs/scorers": ["./packages/scorers/src/index.js"], + "@smthrs/agents": ["./packages/agents/src/index.js"], + "@smthrs/gateway-client": ["./packages/gateway-client/src/index.ts"], + "@smthrs/gateway-react": ["./packages/gateway-react/src/index.ts"], + "@smthrs/pi-plugin": ["./packages/pi-plugin/src/index.ts"], + "@smthrs/server": ["./packages/server/src/index.js"] // The root tsconfig includes the same style of alias for each workspace package. } ``` -The root package is a private `smithers-monorepo`; `smithers-orchestrator` resolves to `packages/smithers`. +The root package is a private `smithers-monorepo`; `smthrs` resolves to `packages/smithers`. -**End users do not need path aliases** — only framework developers do. Installing `smithers-orchestrator` as a dependency lets Node/Bun module resolution handle import paths automatically. +**End users do not need path aliases** — only framework developers do. Installing `smthrs` as a dependency lets Node/Bun module resolution handle import paths automatically. ### Local Type Root Shims @@ -5204,7 +5204,7 @@ Defined in the root `package.json` for development: | Script | Command | Purpose | |---|---|---| | `typecheck` | `tsc --noEmit` | Type-check the `src/` and `tests/` trees against `tsconfig.json` | -| `typecheck:examples` | `tsc -p examples/tsconfig.json --noEmit` | Type-check example files against a separate config that maps `smithers-orchestrator` to `examples-entry.js` | +| `typecheck:examples` | `tsc -p examples/tsconfig.json --noEmit` | Type-check example files against a separate config that maps `smthrs` to `examples-entry.js` | | `lint` | `oxlint ... packages/*/src packages/*/tests` | Lint package source and tests with oxlint | | `lint:fix` | `oxlint ... --fix --fix-suggestions packages/*/src packages/*/tests` | Apply supported oxlint fixes | | `cli` | `bun run apps/cli/src/index.js` | Run the local development CLI entrypoint | @@ -5233,7 +5233,7 @@ See [Production Project Structure](/guides/project-structure) for a complete use ## VCS Helper Reference -> Public JJ helper APIs exported by smithers-orchestrator for repo detection, snapshot inspection, and workspace management. +> Public JJ helper APIs exported by smthrs for repo detection, snapshot inspection, and workspace management. Smithers exports a small JJ helper surface for applications that inspect or manage Jujutsu state directly. @@ -5254,7 +5254,7 @@ import { workspaceAdd, workspaceList, workspaceClose, -} from "smithers-orchestrator"; +} from "smthrs"; ``` ## `runJj(args, opts?)` @@ -5412,10 +5412,10 @@ For workflow-level revert behavior, prefer the runtime and CLI docs: ## runWorkflow -> Programmatic entry point. Equivalent to `bunx smithers-orchestrator up`. +> Programmatic entry point. Equivalent to `bunx smthrs up`. ```ts -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; import { Effect } from "effect"; const result = await Effect.runPromise(runWorkflow(workflow, { @@ -5463,7 +5463,7 @@ All in-flight attempts are marked cancelled and `NodeCancelled` events are emitt ## Hijack handoff -If a CLI hijack happens mid-run (`bunx smithers-orchestrator hijack <id>`), the run ends `"cancelled"` and the latest attempt metadata stores `hijackHandoff`. On `resume: true`, Smithers waits for a safe handoff point and continues with the persisted CLI session id (see [CLI Agents](/integrations/cli-agents)) or the persisted message history (SDK agents). +If a CLI hijack happens mid-run (`bunx smthrs hijack <id>`), the run ends `"cancelled"` and the latest attempt metadata stores `hijackHandoff`. On `resume: true`, Smithers waits for a safe handoff point and continues with the persisted CLI session id (see [CLI Agents](/integrations/cli-agents)) or the persisted message history (SDK agents). ## `result.output` @@ -5490,8 +5490,8 @@ const rows = db.query("SELECT * FROM page WHERE run_id = ? ORDER BY iteration DE Use `renderFrame` to preview the task graph — for CI validation, graph-inspection UIs, or dry-run checks — without executing or persisting anything. `runId` and `iteration` are arbitrary strings used only for snapshot identity. ```ts -import { renderFrame } from "smithers-orchestrator"; -import { SmithersCtx } from "@smithers-orchestrator/driver"; +import { renderFrame } from "smthrs"; +import { SmithersCtx } from "@smthrs/driver"; import { Effect } from "effect"; const ctx = new SmithersCtx({ runId: "preview", iteration: 0, input: { task: "preview" }, outputs: {} }); @@ -5531,7 +5531,7 @@ bunx smithers graph workflow.tsx --input '{"task":"preview"}' Each successful task attempt captures the current [JJ](https://jj-vcs.github.io/jj/) change ID into `_smithers_attempts.jj_pointer`. `revert` restores the workspace to that state and discards any graph snapshots recorded after the attempt began, so the run's timeline rolls back to the point-in-time of that attempt. ```bash -bunx smithers-orchestrator revert workflow.tsx \ +bunx smthrs revert workflow.tsx \ --run-id <id> --node-id <node> [--attempt N=1] [--iteration N=0] ``` @@ -5546,7 +5546,7 @@ Revert restores files only — it doesn't alter JJ history; the restoration crea ## Programmatic ```ts -import { revertToAttempt } from "smithers-orchestrator"; +import { revertToAttempt } from "smthrs"; const result = await revertToAttempt(adapter, { runId: "abc123", @@ -5650,7 +5650,7 @@ Terminal states (`succeeded`, `failed`, `cancelled`) carry neither. ## computeRunState ```ts -import { computeRunState } from "@smithers-orchestrator/db/runState"; +import { computeRunState } from "@smthrs/db/runState"; const view = await computeRunState(adapter, runId); view.state; // "running" | ... @@ -5666,7 +5666,7 @@ not run heuristics. when you already have the rows in memory: ```ts -import { deriveRunState } from "@smithers-orchestrator/db/runState"; +import { deriveRunState } from "@smthrs/db/runState"; const view = deriveRunState({ run, @@ -5731,7 +5731,7 @@ Historical TUI product/design material is kept under `docs/design-prompts/` for Run `smithers optimize` to generate improved prompts for agent tasks via GEPA, verify the improvement against your eval suite, and save the result as a reusable artifact. ```bash -bunx smithers-orchestrator optimize workflow.tsx \ +bunx smthrs optimize workflow.tsx \ --cases evals/smoke.jsonl \ --suite smoke-gepa \ --provider cerebras \ @@ -5751,7 +5751,7 @@ The command writes the artifact only when the optimized score improves by at lea Apply the optimized prompts to future evals with `--optimization`: ```bash -bunx smithers-orchestrator eval workflow.tsx \ +bunx smthrs eval workflow.tsx \ --cases evals/smoke.jsonl \ --suite smoke-optimized \ --optimization .smithers/optimizations/smoke-gepa.json @@ -5764,7 +5764,7 @@ The artifact patches only agent-backed `<Task>` prompts by `nodeId`. Workflow st Example: the following run demonstrates a baseline failure corrected by a GEPA-generated patch. The baseline prompt did not include the required optimization token, so the eval failed. Cerebras GEPA generated a prompt patch that included the missing requirement, and the optimized eval passed. ```bash -CEREBRAS_API_KEY=... bunx smithers-orchestrator optimize workflow.tsx \ +CEREBRAS_API_KEY=... bunx smthrs optimize workflow.tsx \ --cases evals/opt.jsonl \ --suite cerebras-proof \ --provider cerebras \ @@ -5835,7 +5835,7 @@ Memory persists state **across runs**. Task outputs are per-run; memory is per-n ## Three layers ```ts -import { createMemoryStore } from "smithers-orchestrator/memory"; +import { createMemoryStore } from "smthrs/memory"; import { Database } from "bun:sqlite"; const store = createMemoryStore(new Database("smithers.db")); @@ -5880,7 +5880,7 @@ Pick the kind to match the lifetime: `workflow` is scoped to a workflow definiti Maintenance jobs you run periodically: ```ts -import { TtlGarbageCollector, TokenLimiter, Summarizer } from "smithers-orchestrator/memory"; +import { TtlGarbageCollector, TokenLimiter, Summarizer } from "smthrs/memory"; const gc = TtlGarbageCollector(); // expire facts past their TTL const limiter = TokenLimiter(4000); // keep history under token budget @@ -5894,7 +5894,7 @@ await summarizer.process(store); ## Inspect from the CLI ```bash -bunx smithers-orchestrator memory list workflow:code-review -w workflow.tsx +bunx smthrs memory list workflow:code-review -w workflow.tsx ``` The CLI currently exposes fact listing. Use the store API for writes, deletes, threads, messages, and TTL cleanup. @@ -5928,7 +5928,7 @@ This material is now in the opt-in [`/llms-memory.txt`](/llms-memory.txt) fragme `createOpenApiTools` parses an OpenAPI 3.x spec and returns AI SDK tools — one per operation, with Zod schemas converted from the spec's JSON schemas. ```ts -import { createOpenApiTools } from "smithers-orchestrator/openapi"; +import { createOpenApiTools } from "smthrs/openapi"; const tools = await createOpenApiTools("./petstore.json", { baseUrl: "https://api.petstore.example.com", @@ -5973,7 +5973,7 @@ Pass the spec itself as the first argument to `createOpenApiTools(input, options ## CLI preview ```bash -bunx smithers-orchestrator openapi list ./api/openapi.yaml +bunx smthrs openapi list ./api/openapi.yaml ``` Lists every operationId, method, path, and summary — useful for auditing what an agent will be able to call before wiring it up. @@ -5999,7 +5999,7 @@ For each operation: ## Observability -Each tool call emits an `OpenApiToolCalled` event with `operationId`, `method`, `path`, `durationMs`, `status`. Visible via `bunx smithers-orchestrator events <run-id> --type openapi`. +Each tool call emits an `OpenApiToolCalled` event with `operationId`, `method`, `path`, `durationMs`, `status`. Visible via `bunx smthrs events <run-id> --type openapi`. ## Notes @@ -6032,7 +6032,7 @@ This material is now in the opt-in [`/llms-openapi.txt`](/llms-openapi.txt) frag ## Quick start ```ts -import { startServer } from "smithers-orchestrator"; +import { startServer } from "smthrs"; import { drizzle } from "drizzle-orm/bun-sqlite"; const server = startServer({ @@ -6097,8 +6097,8 @@ Errors use the envelope `{ "error": { "code", "message", "details" } }`. Common Tools resolve relative to `rootDir`. The example below exposes a workflow that uses the built-in `bash` tool through the server; clients call it via `POST /v1/runs`. ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { Task, Workflow, createSmithers, bash } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Task, Workflow, createSmithers, bash } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -6143,7 +6143,7 @@ Serve mode starts a Hono-based HTTP server alongside a running workflow. Every r ## CLI ```bash -bunx smithers-orchestrator up workflow.tsx --serve --port 3000 --host 0.0.0.0 +bunx smthrs up workflow.tsx --serve --port 3000 --host 0.0.0.0 ``` | Flag | Default | Description | @@ -6159,13 +6159,13 @@ The process stays alive after the workflow completes so final state remains quer Detached mode: ```bash -bunx smithers-orchestrator up workflow.tsx --serve --port 8080 -d +bunx smthrs up workflow.tsx --serve --port 8080 -d ``` ## Programmatic ```ts -import { createServeApp } from "smithers-orchestrator/serve"; +import { createServeApp } from "smthrs/serve"; const app = createServeApp({ workflow, @@ -6326,7 +6326,7 @@ Unknown routes return `404` with code `NOT_FOUND`. ```bash # Start a workflow with serve mode -bunx smithers-orchestrator up workflow.tsx --serve --port 8080 --auth-token sk-secret +bunx smthrs up workflow.tsx --serve --port 8080 --auth-token sk-secret # Status curl http://localhost:8080/ -H "Authorization: Bearer sk-secret" @@ -6355,8 +6355,8 @@ curl http://localhost:8080/health ## Quick start ```tsx -/** @jsxImportSource smithers-orchestrator */ -import { Gateway, Task, Workflow, createSmithers } from "smithers-orchestrator"; +/** @jsxImportSource smthrs */ +import { Gateway, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -6402,7 +6402,7 @@ ws.onopen = () => ws.send(JSON.stringify({ Programmatic clients — bots, schedulers, dashboards — talk to the Gateway through the typed client SDK over the same RPC and WebSocket API. ```ts -import { SmithersGatewayClient } from "smithers-orchestrator/gateway-client"; +import { SmithersGatewayClient } from "smthrs/gateway-client"; const gateway = new SmithersGatewayClient(); const workflows = await gateway.listWorkflows(); @@ -6412,7 +6412,7 @@ Gateway client exports: | Package | Exports | |---|---| -| `smithers-orchestrator/gateway-client` | `SmithersGatewayClient`, `SmithersGatewayConnection`, `GatewayRpcError`, RPC frame/type-map types, `GatewayUiBootConfig`, `SmithersGatewayClientOptions` | +| `smthrs/gateway-client` | `SmithersGatewayClient`, `SmithersGatewayConnection`, `GatewayRpcError`, RPC frame/type-map types, `GatewayUiBootConfig`, `SmithersGatewayClientOptions` | ## RPC methods (TOON) @@ -6772,20 +6772,20 @@ For clients that read JSON config directly: "mcpServers": { "smithers": { "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"] + "args": ["smthrs", "--mcp"] } } } ``` -Project-scoped install (e.g. a monorepo where Smithers is a dev dependency — ensure `smithers-orchestrator` is in the local `package.json`): +Project-scoped install (e.g. a monorepo where Smithers is a dev dependency — ensure `smthrs` is in the local `package.json`): ```json { "mcpServers": { "smithers": { "command": "bunx", - "args": ["smithers-orchestrator", "--mcp"] + "args": ["smthrs", "--mcp"] } } } @@ -7461,7 +7461,7 @@ you need a React-free API for generated workflow definitions. ## Minimal workflow ```ts -import { Smithers } from "smithers-orchestrator"; +import { Smithers } from "smthrs"; import { Effect, Schema } from "effect"; const inputSchema = Schema.Struct({ @@ -7740,7 +7740,7 @@ const opsAgent = new Agent({ Use this when your CLI agent already supports external integrations and Smithers should only orchestrate the task. ```ts -import { PiAgent } from "smithers-orchestrator"; +import { PiAgent } from "smthrs"; const pi = new PiAgent({ provider: "openai", @@ -7797,7 +7797,7 @@ CLI-backed agent classes wrap external AI command-line tools and implement the [ ## Quick Start ```tsx -import { ClaudeCodeAgent, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { ClaudeCodeAgent, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -7840,7 +7840,7 @@ CLI binaries must be on `PATH`: `claude`, `codex`, `agy`, `pi`, `kimi`, `forge`, `CodexAgent` is the Smithers wrapper for OpenAI's `codex` CLI. It runs `codex exec` in non-interactive mode, sends the task prompt over stdin, forces `--json` so Smithers can stream structured progress, and captures the final assistant message via `--output-last-message`. ```tsx -import { CodexAgent, Task, Workflow, createSmithers } from "smithers-orchestrator"; +import { CodexAgent, Task, Workflow, createSmithers } from "smthrs"; import { z } from "zod"; const { smithers, outputs } = createSmithers({ @@ -7867,7 +7867,7 @@ export default smithers(() => ( - Subscription login: run `codex login` once. For isolated accounts, pass `configDir`; Smithers sets `CODEX_HOME` for that invocation. - API billing: pass `apiKey` or set `OPENAI_API_KEY`; Smithers forwards it to the spawned `codex` process. -- Account registry: `bunx smithers-orchestrator agents add --provider codex ...` registers a subscription config directory, while `--provider openai-api` registers API-key billing for Codex-compatible providers. +- Account registry: `bunx smthrs agents add --provider codex ...` registers a subscription config directory, while `--provider openai-api` registers API-key billing for Codex-compatible providers. ### Structured output @@ -7909,7 +7909,7 @@ await agent.generate({ `ClaudeCodeAgent` extends the base with Claude Code-specific session and permission flags. Key additions: `permissionMode`, `sessionId`, `mcpConfig`, `resume`. ```ts -import { ClaudeCodeAgent } from "smithers-orchestrator"; +import { ClaudeCodeAgent } from "smthrs"; new ClaudeCodeAgent({ permissionMode?: "acceptEdits" | "bypassPermissions" | "default" | "delegate" | "dontAsk" | "plan"; allowedTools?: string[]; disallowedTools?: string[]; disableSlashCommands?: boolean; @@ -7930,7 +7930,7 @@ new ClaudeCodeAgent({ `CodexAgent` extends the base with OpenAI Codex-specific flags. Key additions: `sandbox`, `config`, `outputSchema`. ```ts -import { CodexAgent } from "smithers-orchestrator"; +import { CodexAgent } from "smthrs"; new CodexAgent({ sandbox?: "read-only" | "workspace-write" | "danger-full-access"; fullAuto?: boolean; dangerouslyBypassApprovalsAndSandbox?: boolean; @@ -7947,7 +7947,7 @@ new CodexAgent({ `AntigravityAgent` wraps the Google `agy` CLI. Key additions: `allowedMcpServerNames`, `geminiDir`, `conversation`, `continue`, and `resume`. ```ts -import { AntigravityAgent } from "smithers-orchestrator"; +import { AntigravityAgent } from "smthrs"; new AntigravityAgent({ model?: string; sandbox?: boolean; yolo?: boolean; dangerouslySkipPermissions?: boolean; @@ -7980,7 +7980,7 @@ outside workflow launch through `agy plugin`. `PiAgent` wraps the Pi CLI and adds extension UI hook support. Key additions: `mode`, `onExtensionUiRequest`, `extension`, `thinking`. ```ts -import { PiAgent, type PiExtensionUiRequest, type PiExtensionUiResponse } from "smithers-orchestrator"; +import { PiAgent, type PiExtensionUiRequest, type PiExtensionUiResponse } from "smthrs"; new PiAgent({ provider?: string; apiKey?: string; appendSystemPrompt?: string; mode?: "text" | "json" | "rpc"; print?: boolean; continue?: boolean; resume?: boolean; session?: string; @@ -7998,7 +7998,7 @@ new PiAgent({ `KimiAgent` wraps the Moonshot Kimi CLI with automatic session isolation. Key additions: `thinking`, `agent`, `maxRalphIterations`. ```ts -import { KimiAgent } from "smithers-orchestrator"; +import { KimiAgent } from "smthrs"; new KimiAgent({ thinking?: boolean; outputFormat?: "text" | "stream-json"; finalMessageOnly?: boolean; quiet?: boolean; @@ -8013,7 +8013,7 @@ new KimiAgent({ `ForgeAgent` wraps the Forge CLI and supports 300+ models via provider/model strings. Key additions: `conversationId`, `provider`, `workflow`. ```ts -import { ForgeAgent } from "smithers-orchestrator"; +import { ForgeAgent } from "smthrs"; new ForgeAgent({ directory?: string; provider?: string; agent?: string; conversationId?: string; sandbox?: string; restricted?: boolean; @@ -8024,7 +8024,7 @@ new ForgeAgent({ `AmpAgent` wraps the Amp CLI in `--execute` headless mode. Key additions: `visibility`, `mcpConfig`, `dangerouslyAllowAll`. ```ts -import { AmpAgent } from "smithers-orchestrator"; +import { AmpAgent } from "smthrs"; new AmpAgent({ visibility?: "private" | "public" | "workspace" | "group"; mcpConfig?: string; settingsFile?: string; @@ -8036,7 +8036,7 @@ new AmpAgent({ `OpenCodeAgent` wraps the OpenCode CLI via `opencode run --format json`. Key additions: `agentName`, `continueSession`, `sessionId`. Note: native hijack support is not yet shipped. ```ts -import { OpenCodeAgent } from "smithers-orchestrator"; +import { OpenCodeAgent } from "smthrs"; new OpenCodeAgent({ model?: string; agentName?: string; attachFiles?: string[]; @@ -8047,7 +8047,7 @@ new OpenCodeAgent({ ## Hijack handoff -Most built-in CLI agents support `bunx smithers-orchestrator hijack <runId>`, which relaunches the agent in its native CLI session for interactive takeover. +Most built-in CLI agents support `bunx smthrs hijack <runId>`, which relaunches the agent in its native CLI session for interactive takeover. Smithers persists the native session or conversation id on each task event. On hijack, it waits for a safe boundary between blocking tool calls, then reopens the session via the vendor's resume flag: @@ -8086,7 +8086,7 @@ import { AnthropicAgent, OpenAIAgent, tools, -} from "smithers-orchestrator"; +} from "smthrs"; import { stepCountIs } from "ai"; ``` @@ -8177,7 +8177,7 @@ Use the `createOpenAI` path when you need provider-level configuration beyond `b [Hermes](https://github.com/NousResearch/hermes-agent) (Nous Research) exposes an OpenAI-compatible HTTP API, so `HermesAgent` is a convenience subclass of `OpenAIAgent` that points the provider at your Hermes server and disables native structured output by default (a local Hermes server may not honor JSON-schema response formats). ```ts -import { HermesAgent } from "smithers-orchestrator"; +import { HermesAgent } from "smthrs"; const hermes = new HermesAgent({ baseURL: "http://127.0.0.1:5123/v1", // or set HERMES_BASE_URL @@ -8245,7 +8245,7 @@ export const claude = useCli > Sandboxed file and shell tools for AI agent tasks, with exact input schemas, security policies, and usage examples. ```ts -import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadata } from "smithers-orchestrator"; +import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadata } from "smthrs"; ``` `tools` bundles all five tools keyed by name: @@ -8254,7 +8254,7 @@ import { tools, read, write, edit, grep, bash, defineTool, getDefinedToolMetadat const { read, write, edit, grep, bash } = tools; ``` -The `smithers-orchestrator/tools` subpath also exports lower-level helpers for advanced integrations: +The `smthrs/tools` subpath also exports lower-level helpers for advanced integrations: | Export | Purpose | |---|---| @@ -8300,7 +8300,7 @@ Every invocation is logged to `_smithers_tool_calls`: `defineTool()` wraps custom [AI SDK](https://ai-sdk.dev) tools with Smithers runtime context, deterministic idempotency keys, and durable tool-call logging. ```ts -import { defineTool } from "smithers-orchestrator"; +import { defineTool } from "smthrs"; import { z } from "zod"; const placeOrder = defineTool({ @@ -8401,7 +8401,7 @@ Returns file contents as UTF-8. Throws `"File too large"` if size exceeds `maxOu ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { read, grep } from "smithers-orchestrator"; +import { read, grep } from "smthrs"; const codeAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -8434,7 +8434,7 @@ Returns `"ok"`. Throws `"Content too large"` if content exceeds `maxOutputBytes` ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { write, read } from "smithers-orchestrator"; +import { write, read } from "smthrs"; const writerAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -8521,7 +8521,7 @@ Local git commands (`git status`, `git diff`, `git log`) are allowed. ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { bash } from "smithers-orchestrator"; +import { bash } from "smthrs"; const devAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -8545,7 +8545,7 @@ Pass tools to an [AI SDK](https://ai-sdk.dev) agent and assign the agent to a [` ```tsx import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { createSmithers, read, write, edit, grep, bash, Task } from "smithers-orchestrator"; +import { createSmithers, read, write, edit, grep, bash, Task } from "smthrs"; import { z } from "zod"; const codeAgent = new Agent({ @@ -8572,7 +8572,7 @@ The full bundle works too: ```ts import { ToolLoopAgent as Agent } from "ai"; import { anthropic } from "@ai-sdk/anthropic"; -import { tools } from "smithers-orchestrator"; +import { tools } from "smthrs"; const fullAgent = new Agent({ model: anthropic("claude-sonnet-4-20250514"), @@ -8591,7 +8591,7 @@ const fullAgent = new Agent({ ```ts import { Effect } from "effect"; -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; const result = await Effect.runPromise(runWorkflow(workflow, { input: { file: "src/auth.ts" }, @@ -8725,7 +8725,7 @@ Smithers provides deterministic orchestration (workflow graph, approvals, retrie ### 1) PI as Workflow Agent ```tsx -import { PiAgent } from "smithers-orchestrator"; +import { PiAgent } from "smthrs"; const pi = new PiAgent({ provider: "openai", @@ -8745,13 +8745,13 @@ PI sessions are first-class hijack targets. `smithers hijack <runId> --target pi ### 2) PI Server Client -Drive Smithers server APIs from a PI extension or any Node process via `@smithers-orchestrator/pi-plugin`: +Drive Smithers server APIs from a PI extension or any Node process via `@smthrs/pi-plugin`: ```ts -import { runWorkflow, approve, streamEvents } from "@smithers-orchestrator/pi-plugin"; +import { runWorkflow, approve, streamEvents } from "@smthrs/pi-plugin"; ``` -The older `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extension` subpaths were removed; use the scoped package directly. +The older `smthrs/pi-plugin` and `smthrs/pi-extension` subpaths were removed; use the scoped package directly. ### 3) Hybrid: PI Extensibility + Smithers Orchestration @@ -8761,7 +8761,7 @@ The older `smithers-orchestrator/pi-plugin` and `smithers-orchestrator/pi-extens Patterns: 1. PI skill-driven coding task inside a Smithers `<Task>`. -2. PI extension command that starts/resumes Smithers workflows via server API or `@smithers-orchestrator/pi-plugin`. +2. PI extension command that starts/resumes Smithers workflows via server API or `@smthrs/pi-plugin`. 3. Smithers workflow output persisted to SQLite and consumed by later PI-assisted tasks. ## Hijacking PI Sessions @@ -8784,7 +8784,7 @@ Session persistence: 1. Install PI CLI and add to `PATH`. 2. Configure PI credentials via env/config (prefer over CLI args for API keys). 3. Instantiate `PiAgent` with explicit options in workflows. -4. For server-driven workflows, use `@smithers-orchestrator/pi-plugin`. +4. For server-driven workflows, use `@smthrs/pi-plugin`. ```bash # Verify PI is installed @@ -8800,7 +8800,7 @@ pi --version ## Limitations -Smithers does not provide a chat interface for PI. Chat UI integration is the responsibility of the host application using `@smithers-orchestrator/pi-plugin`. +Smithers does not provide a chat interface for PI. Chat UI integration is the responsibility of the host application using `@smthrs/pi-plugin`. =============================================================================== @@ -8820,7 +8820,7 @@ Smithers does not provide a chat interface for PI. Chat UI integration is the re ## Subscribe via `onProgress` ```ts -import { runWorkflow } from "smithers-orchestrator"; +import { runWorkflow } from "smthrs"; import { Effect } from "effect"; import workflow from "./workflow"; @@ -8847,8 +8847,8 @@ jq -r .type .smithers/executions/<run-id>/logs/stream.ndjson | sort | uniq -c | Or with the CLI: ```bash -bunx smithers-orchestrator events <run-id> --json -bunx smithers-orchestrator events <run-id> --type tool-call --node analyze +bunx smthrs events <run-id> --json +bunx smthrs events <run-id> --type tool-call --node analyze ``` ## Common fields @@ -8863,7 +8863,7 @@ Every event includes `type`, `runId`, `timestampMs`. Node-scoped events add `nod ## Event categories -Used by `bunx smithers-orchestrator events --type <category>` and the metrics layer. +Used by `bunx smthrs events --type <category>` and the metrics layer. | Category | Events | |---|---| @@ -8896,7 +8896,7 @@ Used by `bunx smithers-orchestrator events --type <category>` and the metrics la | `ApprovalGranted` / `ApprovalDenied` | Approval counters | | `TokenUsageReported` | Token usage counters per model/agent | -`trackSmithersEvent` from `smithers-orchestrator/observability` exposes this mapping for custom integrations. See [Observability](/guides/monitoring-logs) for the full OTLP/Prometheus setup. +`trackSmithersEvent` from `smthrs/observability` exposes this mapping for custom integrations. See [Observability](/guides/monitoring-logs) for the full OTLP/Prometheus setup. --- diff --git a/generated/smithers-instructions.generated.ts b/generated/smithers-instructions.generated.ts index 089952a57..55d287fc9 100644 --- a/generated/smithers-instructions.generated.ts +++ b/generated/smithers-instructions.generated.ts @@ -2,7 +2,7 @@ // Do not edit it by hand; update docs/vendor/smithers/smithers-0.22.0.llms-full.txt or src/bun/smithers-runtime/smithers-instruction-generator.ts instead. export const SMITHERS_CORE_INSTRUCTIONS = - 'Generated Smithers core instructions from smithers-orchestrator@0.22.0 official docs.\n\nsvvy uses official `bunx smithers-orchestrator ...` commands through Shell. TypeScript workflow source still imports from `smithers-orchestrator`.\n\n## Recommended: Install the Workflow Pack\n\n```bash\nbunx smithers-orchestrator init\n```\n\nThat scaffolds `.smithers/` with files such as:\n\n| Directory / File | Contents |\n|---|---|\n| `.smithers/workflows/` | Pre-built workflows (`implement`, `review`, `plan`, `ralph`, `debug`, ...) |\n| `.smithers/prompts/` | Shared MDX prompt templates |\n| `.smithers/components/` | Reusable TSX components (`Review`, `ValidationLoop`, ...) |\n| `.smithers/package.json` | Local workflow project manifest with `smithers-orchestrator` dependency |\n| `.smithers/tsconfig.json` | TypeScript config for JSX workflow authoring |\n| `.smithers/bunfig.toml` | Bun preload config for MDX workflow prompts |\n| `.smithers/preload.ts` | Registers the MDX preload plugin |\n| `.smithers/agents/` | User-owned agent config (`claude-code.ts`, `codex.ts`, `opencode.ts`, `antigravity.ts`, `index.ts`) — edit to pin models/cwd/systemPrompt; preserved across re-inits |\n| `.smithers/agents.ts` | Auto-detected agent configuration (regenerated on each `init`) |\n| `.smithers/smithers.config.ts` | Repo-level config (lint, test, coverage commands) |\n| `.smithers/tickets/` | Ticket workspace used by ticket-oriented workflows |\n| `.smithers/executions/` | Execution artifacts directory preserved across re-inits |\n| `.smithers/.gitignore` | Ignore rules for generated workflow state |\n\nTo overwrite an existing scaffold:\n\n```bash\nbunx smithers-orchestrator init --force\n```\n\n## Quickstart\n\n> Scaffold and run a Smithers workflow in two commands.\n\n```bash\nbunx smithers-orchestrator init\nbunx smithers-orchestrator init --template idea-to-prd\nbunx smithers-orchestrator workflow run implement --prompt "Add rate limiting"\n```\n\n`init` scaffolds `.smithers/` (workflows, prompts, components, agent config). Add `--template <id>` when you want the init result to include the selected starter command and follow-up notes. Run `bunx smithers-orchestrator starters` to browse template IDs.\n\nInspect the run:\n\n```bash\nbunx smithers-orchestrator ps\nbunx smithers-orchestrator inspect <run-id>\nbunx smithers-orchestrator logs <run-id> --tail 20\n```\n\nResume after a crash:\n\n```bash\nbunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true\n```\n\nFor a full worked example, see the [Tour](/tour). For every CLI command see the [CLI catalog](/cli/overview).\n\n---\n\n## JSX API\n\n> Author workflows as JSX trees. Smithers renders the tree, dispatches ready tasks, persists outputs, and re-renders — branching and parallelism are plain JSX conditionals.\n\nWorkflows are JSX trees. Smithers renders the tree, extracts ready tasks, executes them, persists their outputs, and re-renders. Branching, looping, and parallelism are normal JSX.\n\n## The render loop in detail\n\n1. **Render**. The runtime calls your `smithers((ctx) => ...)` builder. The returned JSX tree is reconciled by React; the reconciler emits a graph of host elements (`smithers:workflow`, `smithers:task`, `smithers:sequence`, `smithers:parallel`, `smithers:branch`, `smithers:loop`, `smithers:approval`, etc.).\n2. **Extract**. The runtime walks the tree to produce a `GraphSnapshot` — a flat list of `TaskDescriptor`s. Each descriptor captures: node id, ordinal, dependencies, output schema, agent, retries, timeouts.\n3. **Schedule**. The scheduler computes the ready set: tasks whose dependencies have completed, whose enclosing sequence has reached them, whose enclosing branch resolved them, and which fit within `maxConcurrency`.\n4. **Execute**. Each ready task runs. Three modes: agent (call the LLM, validate output against the Zod schema, retry on failure), compute (run the function), static (write the literal value).\n5. **Persist**. Validated outputs are written to per-schema SQLite tables. Internal `_smithers_*` tables capture node state, attempts, frame snapshots, events, and durable approval/signal state.\n6. **Re-render**. The next frame begins with `ctx` reading the updated outputs. Tasks that depended on now-completed outputs mount on this frame and become eligible to run.\n\nThe frame is the unit of progress. Time travel, observability, hot reload, and resume all key off the frame number.\n\n## 5. An approval gate\n\nPause for a human. The runtime persists the pending decision and exits cleanly; an operator approves or denies through the CLI; resume picks up from the gate.\n\n```tsx\nimport { Approval } from "smithers-orchestrator";\n\n{analysis ? (\n <Approval\n id="confirm-fix"\n output={outputs.confirmFix}\n request={{\n title: `Apply fixes for ${analysis.issues.length} issues?`,\n summary: analysis.summary,\n }}\n onDeny="skip"\n >\n {/* children rendered after approval */}\n </Approval>\n) : null}\n\n{ctx.outputMaybe(outputs.confirmFix, { nodeId: "confirm-fix" })?.approved ? (\n <Task id="fix" output={outputs.fix} agent={fixer}>\n {`Apply patches`}\n </Task>\n) : null}\n```\n\nOperator side:\n\n```bash\nbunx smithers-orchestrator ps --status waiting-approval # find paused runs\nbunx smithers-orchestrator inspect <run-id> # see the request\nbunx smithers-orchestrator approve <run-id> --node confirm-fix --by alice\nbunx smithers-orchestrator up workflow.tsx --run-id <run-id> --resume true\n```\n\n`onDeny` controls behavior on rejection: `"fail"` aborts the run, `"continue"` proceeds without the approved branch, `"skip"` skips the gated tasks.\n\n## Durability & resume\n\nThe contract: **a completed task is never re-executed.** Resume loads persisted state, validates the environment (workflow source hash + VCS revision must match the original run), cleans stale in-progress attempts (>15 min without a heartbeat are abandoned), re-renders, and continues.\n\n```bash\nbunx smithers-orchestrator up workflow.tsx --run-id <id> --resume true\n```\n\nFor resume to work, **task IDs must be stable across renders.** Derive them from data, not from indices or timestamps:\n\n```tsx\n{tickets.map((t) => <TicketPipeline key={t.id} id={`${t.id}:work`} .../>)}\n// NOT id={`work-${i}`} or id={`work-${Date.now()}`}\n```\n\nSame rule as React keys. A changed task ID looks like a new task to the runtime, and an old task whose ID disappeared is dropped from the plan.\n\nThe supervisor auto-resumes runs whose owner process died:\n\n```bash\nbunx smithers-orchestrator supervise --interval 30s --stale-threshold 1m\n```\n\n## Common gotchas\n\n- **Stable task IDs.** `id="implement-${i}"` or `id={Math.random()}` breaks resume. Derive from data.\n- **`useState` is not durable.** Resets on every render. Persist via `ctx` and a Task.\n- **Input is immutable.** Resuming with different `--input` is an error — the input is persisted at first run.\n- **Code changes block resume.** A workflow source change = a different workflow. Hot reload applies changes within a running frame; resume validates the source hash of the original run. If you stop a run and the source has changed, resume is blocked. Start a new run, don\'t resume across edits.\n- **Cached output is re-validated.** Schema drift after caching is caught (the validator rejects the stale row), so the cache misses safely.\n'; + 'Generated Smithers core instructions from smthrs@0.22.0 official docs.\n\nsvvy uses official `bunx smthrs ...` commands through Shell. TypeScript workflow source still imports from `smthrs`.\n\n## Recommended: Install the Workflow Pack\n\n```bash\nbunx smthrs init\n```\n\nThat scaffolds `.smithers/` with files such as:\n\n| Directory / File | Contents |\n|---|---|\n| `.smithers/workflows/` | Pre-built workflows (`implement`, `review`, `plan`, `ralph`, `debug`, ...) |\n| `.smithers/prompts/` | Shared MDX prompt templates |\n| `.smithers/components/` | Reusable TSX components (`Review`, `ValidationLoop`, ...) |\n| `.smithers/package.json` | Local workflow project manifest with `smthrs` dependency |\n| `.smithers/tsconfig.json` | TypeScript config for JSX workflow authoring |\n| `.smithers/bunfig.toml` | Bun preload config for MDX workflow prompts |\n| `.smithers/preload.ts` | Registers the MDX preload plugin |\n| `.smithers/agents/` | User-owned agent config (`claude-code.ts`, `codex.ts`, `opencode.ts`, `antigravity.ts`, `index.ts`) — edit to pin models/cwd/systemPrompt; preserved across re-inits |\n| `.smithers/agents.ts` | Auto-detected agent configuration (regenerated on each `init`) |\n| `.smithers/smithers.config.ts` | Repo-level config (lint, test, coverage commands) |\n| `.smithers/tickets/` | Ticket workspace used by ticket-oriented workflows |\n| `.smithers/executions/` | Execution artifacts directory preserved across re-inits |\n| `.smithers/.gitignore` | Ignore rules for generated workflow state |\n\nTo overwrite an existing scaffold:\n\n```bash\nbunx smthrs init --force\n```\n\n## Quickstart\n\n> Scaffold and run a Smithers workflow in two commands.\n\n```bash\nbunx smthrs init\nbunx smthrs init --template idea-to-prd\nbunx smthrs workflow run implement --prompt "Add rate limiting"\n```\n\n`init` scaffolds `.smithers/` (workflows, prompts, components, agent config). Add `--template <id>` when you want the init result to include the selected starter command and follow-up notes. Run `bunx smthrs starters` to browse template IDs.\n\nInspect the run:\n\n```bash\nbunx smthrs ps\nbunx smthrs inspect <run-id>\nbunx smthrs logs <run-id> --tail 20\n```\n\nResume after a crash:\n\n```bash\nbunx smthrs up workflow.tsx --run-id <run-id> --resume true\n```\n\nFor a full worked example, see the [Tour](/tour). For every CLI command see the [CLI catalog](/cli/overview).\n\n---\n\n## JSX API\n\n> Author workflows as JSX trees. Smithers renders the tree, dispatches ready tasks, persists outputs, and re-renders — branching and parallelism are plain JSX conditionals.\n\nWorkflows are JSX trees. Smithers renders the tree, extracts ready tasks, executes them, persists their outputs, and re-renders. Branching, looping, and parallelism are normal JSX.\n\n## The render loop in detail\n\n1. **Render**. The runtime calls your `smithers((ctx) => ...)` builder. The returned JSX tree is reconciled by React; the reconciler emits a graph of host elements (`smithers:workflow`, `smithers:task`, `smithers:sequence`, `smithers:parallel`, `smithers:branch`, `smithers:loop`, `smithers:approval`, etc.).\n2. **Extract**. The runtime walks the tree to produce a `GraphSnapshot` — a flat list of `TaskDescriptor`s. Each descriptor captures: node id, ordinal, dependencies, output schema, agent, retries, timeouts.\n3. **Schedule**. The scheduler computes the ready set: tasks whose dependencies have completed, whose enclosing sequence has reached them, whose enclosing branch resolved them, and which fit within `maxConcurrency`.\n4. **Execute**. Each ready task runs. Three modes: agent (call the LLM, validate output against the Zod schema, retry on failure), compute (run the function), static (write the literal value).\n5. **Persist**. Validated outputs are written to per-schema SQLite tables. Internal `_smithers_*` tables capture node state, attempts, frame snapshots, events, and durable approval/signal state.\n6. **Re-render**. The next frame begins with `ctx` reading the updated outputs. Tasks that depended on now-completed outputs mount on this frame and become eligible to run.\n\nThe frame is the unit of progress. Time travel, observability, hot reload, and resume all key off the frame number.\n\n## 5. An approval gate\n\nPause for a human. The runtime persists the pending decision and exits cleanly; an operator approves or denies through the CLI; resume picks up from the gate.\n\n```tsx\nimport { Approval } from "smthrs";\n\n{analysis ? (\n <Approval\n id="confirm-fix"\n output={outputs.confirmFix}\n request={{\n title: `Apply fixes for ${analysis.issues.length} issues?`,\n summary: analysis.summary,\n }}\n onDeny="skip"\n >\n {/* children rendered after approval */}\n </Approval>\n) : null}\n\n{ctx.outputMaybe(outputs.confirmFix, { nodeId: "confirm-fix" })?.approved ? (\n <Task id="fix" output={outputs.fix} agent={fixer}>\n {`Apply patches`}\n </Task>\n) : null}\n```\n\nOperator side:\n\n```bash\nbunx smthrs ps --status waiting-approval # find paused runs\nbunx smthrs inspect <run-id> # see the request\nbunx smthrs approve <run-id> --node confirm-fix --by alice\nbunx smthrs up workflow.tsx --run-id <run-id> --resume true\n```\n\n`onDeny` controls behavior on rejection: `"fail"` aborts the run, `"continue"` proceeds without the approved branch, `"skip"` skips the gated tasks.\n\n## Durability & resume\n\nThe contract: **a completed task is never re-executed.** Resume loads persisted state, validates the environment (workflow source hash + VCS revision must match the original run), cleans stale in-progress attempts (>15 min without a heartbeat are abandoned), re-renders, and continues.\n\n```bash\nbunx smthrs up workflow.tsx --run-id <id> --resume true\n```\n\nFor resume to work, **task IDs must be stable across renders.** Derive them from data, not from indices or timestamps:\n\n```tsx\n{tickets.map((t) => <TicketPipeline key={t.id} id={`${t.id}:work`} .../>)}\n// NOT id={`work-${i}`} or id={`work-${Date.now()}`}\n```\n\nSame rule as React keys. A changed task ID looks like a new task to the runtime, and an old task whose ID disappeared is dropped from the plan.\n\nThe supervisor auto-resumes runs whose owner process died:\n\n```bash\nbunx smthrs supervise --interval 30s --stale-threshold 1m\n```\n\n## Common gotchas\n\n- **Stable task IDs.** `id="implement-${i}"` or `id={Math.random()}` breaks resume. Derive from data.\n- **`useState` is not durable.** Resets on every render. Persist via `ctx` and a Task.\n- **Input is immutable.** Resuming with different `--input` is an error — the input is persisted at first run.\n- **Code changes block resume.** A workflow source change = a different workflow. Hot reload applies changes within a running frame; resume validates the source hash of the original run. If you stop a run and the source has changed, resume is blocked. Start a new run, don\'t resume across edits.\n- **Cached output is re-validated.** Schema drift after caching is caught (the validator rejects the stale row), so the cache misses safely.\n'; export const SMITHERS_MEMORY_INSTRUCTIONS = - "Generated Smithers memory instructions from smithers-orchestrator@0.22.0 official docs.\n\nThis fragment is generated and inspectable but bypassed by default in svvy.\n\n## Memory (cross-run state)\n\nMemory is **state that survives across runs** -- namespaced facts and message history. Not the same as task outputs (which are per-run).\n\nThree layers, four namespaces (`workflow`, `agent`, `user`, `global`). Three processors (`TtlGarbageCollector`, `TokenLimiter`, `Summarizer`). See [llms-memory.txt](/llms-memory.txt) for the full surface.\n"; + "Generated Smithers memory instructions from smthrs@0.22.0 official docs.\n\nThis fragment is generated and inspectable but bypassed by default in svvy.\n\n## Memory (cross-run state)\n\nMemory is **state that survives across runs** -- namespaced facts and message history. Not the same as task outputs (which are per-run).\n\nThree layers, four namespaces (`workflow`, `agent`, `user`, `global`). Three processors (`TtlGarbageCollector`, `TokenLimiter`, `Summarizer`). See [llms-memory.txt](/llms-memory.txt) for the full surface.\n"; diff --git a/packages/core/src/session-navigation-contracts.test.ts b/packages/core/src/session-navigation-contracts.test.ts index 12de7f818..6af4ba4dd 100644 --- a/packages/core/src/session-navigation-contracts.test.ts +++ b/packages/core/src/session-navigation-contracts.test.ts @@ -18,7 +18,7 @@ const commandRollup = { status: "running", title: "Run workflow", summary: "Workflow is running.", - arguments: { cmd: "bunx smithers-orchestrator run workflow.tsx" }, + arguments: { cmd: "bunx smthrs run workflow.tsx" }, facts: { commandFamily: "smithers" }, error: null, artifacts: [], diff --git a/packages/extensions/src/builtin/smithers/instructions/full/010-smithers-core.generated.md b/packages/extensions/src/builtin/smithers/instructions/full/010-smithers-core.generated.md index 132715426..810fb00d4 100644 --- a/packages/extensions/src/builtin/smithers/instructions/full/010-smithers-core.generated.md +++ b/packages/extensions/src/builtin/smithers/instructions/full/010-smithers-core.generated.md @@ -1,3 +1,3 @@ # Smithers CLI -Use `bunx smithers-orchestrator init`, `workflow run`, `ps`, and `inspect` as ordinary Shell commands for workspace `.smithers/` packages. +Use `bunx smthrs init`, `workflow run`, `ps`, and `inspect` as ordinary Shell commands for workspace `.smithers/` packages. diff --git a/packages/extensions/src/builtin/smithers/manifest.json b/packages/extensions/src/builtin/smithers/manifest.json index 4e51689fa..c0350969b 100644 --- a/packages/extensions/src/builtin/smithers/manifest.json +++ b/packages/extensions/src/builtin/smithers/manifest.json @@ -1 +1 @@ -{"schemaVersion":1,"id":"smithers","interface":"instructions","title":"Smithers","description":"Official Smithers CLI and authoring guidance.","typescriptApiEnabled":false,"instructionFiles":[{"file":"010-smithers-core.generated.md","bypassed":false},{"file":"020-smithers-handler.mdx","bypassed":false},{"file":"030-smithers-svvy-boundary.mdx","bypassed":false},{"file":"040-smithers-memory.generated.md","bypassed":true}],"cliRequirements":[{"id":"smithers-orchestrator","package":"smithers-orchestrator","binary":"bunx","required":true,"version":"0.22.0","versionCommand":"bunx smithers-orchestrator --version"}],"generatedInstructions":[{"output":"instructions/full/010-smithers-core.generated.md","script":"scripts/generate-smithers-core.ts","versionCliRequirementId":"smithers-orchestrator"},{"output":"instructions/full/040-smithers-memory.generated.md","script":"scripts/generate-smithers-memory.ts","versionCliRequirementId":"smithers-orchestrator"}]} +{"schemaVersion":1,"id":"smithers","interface":"instructions","title":"Smithers","description":"Official Smithers CLI and authoring guidance.","typescriptApiEnabled":false,"instructionFiles":[{"file":"010-smithers-core.generated.md","bypassed":false},{"file":"020-smithers-handler.mdx","bypassed":false},{"file":"030-smithers-svvy-boundary.mdx","bypassed":false},{"file":"040-smithers-memory.generated.md","bypassed":true}],"cliRequirements":[{"id":"smthrs","package":"smthrs","binary":"bunx","required":true,"version":"0.22.0","versionCommand":"bunx smthrs --version"}],"generatedInstructions":[{"output":"instructions/full/010-smithers-core.generated.md","script":"scripts/generate-smithers-core.ts","versionCliRequirementId":"smthrs"},{"output":"instructions/full/040-smithers-memory.generated.md","script":"scripts/generate-smithers-memory.ts","versionCliRequirementId":"smthrs"}]} diff --git a/packages/extensions/src/extension-cli-requirement-readiness.effect.test.ts b/packages/extensions/src/extension-cli-requirement-readiness.effect.test.ts index c99c31ead..740194a60 100644 --- a/packages/extensions/src/extension-cli-requirement-readiness.effect.test.ts +++ b/packages/extensions/src/extension-cli-requirement-readiness.effect.test.ts @@ -129,7 +129,7 @@ describe("extension CLI requirement readiness", () => { declaration("smithers", { binary: "bunx", defaultVersion: "0.22.0", - versionCommand: "bunx smithers-orchestrator --version", + versionCommand: "bunx smthrs --version", }), ]), }); diff --git a/packages/extensions/src/extension-records.ts b/packages/extensions/src/extension-records.ts index e3ae79604..f6c5021e2 100644 --- a/packages/extensions/src/extension-records.ts +++ b/packages/extensions/src/extension-records.ts @@ -382,24 +382,24 @@ export const BUILTIN_EXTENSIONS = [ dependencyReadiness: "ready", cliRequirements: [ { - id: "smithers-orchestrator", - package: "smithers-orchestrator", + id: "smthrs", + package: "smthrs", binary: "bunx", required: true, version: "0.22.0", - versionCommand: "bunx smithers-orchestrator --version", + versionCommand: "bunx smthrs --version", }, ], generatedInstructions: [ { output: "instructions/full/010-smithers-core.generated.md", script: "scripts/generate-smithers-core.ts", - versionCliRequirementId: "smithers-orchestrator", + versionCliRequirementId: "smthrs", }, { output: "instructions/full/040-smithers-memory.generated.md", script: "scripts/generate-smithers-memory.ts", - versionCliRequirementId: "smithers-orchestrator", + versionCliRequirementId: "smthrs", }, ], instructionFiles: [ diff --git a/packages/extensions/src/extensions-service.effect.test.ts b/packages/extensions/src/extensions-service.effect.test.ts index 28355dbe0..d227d3d44 100644 --- a/packages/extensions/src/extensions-service.effect.test.ts +++ b/packages/extensions/src/extensions-service.effect.test.ts @@ -2918,7 +2918,7 @@ describe("@svvy/extensions Effect service", () => { manifestDependency: "dev-type-dependency", }, { - specifier: "smithers-orchestrator", + specifier: "smthrs", importKind: "type-only", dependencyClass: "workspace-authoring-external", resolutionAuthority: "workspace-smithers-package", @@ -2956,11 +2956,11 @@ describe("@svvy/extensions Effect service", () => { }, ); assert.include( - writtenFiles.get("/generated/workflows-package/smithers-orchestrator.ambient.d.ts"), - 'declare module "smithers-orchestrator"', + writtenFiles.get("/generated/workflows-package/smthrs.ambient.d.ts"), + 'declare module "smthrs"', ); assert.match( - writtenFiles.get("/generated/workflows-package/smithers-orchestrator.ambient.d.ts") ?? "", + writtenFiles.get("/generated/workflows-package/smthrs.ambient.d.ts") ?? "", /generate: \(args: unknown\) => Promise<unknown>/, ); assert.include( diff --git a/packages/extensions/src/generated-workflows-package.effect.test.ts b/packages/extensions/src/generated-workflows-package.effect.test.ts index 59affefa5..94f187f73 100644 --- a/packages/extensions/src/generated-workflows-package.effect.test.ts +++ b/packages/extensions/src/generated-workflows-package.effect.test.ts @@ -74,7 +74,7 @@ describe("generated workflows package", () => { files.find((file) => file.relativePath === "package.json")?.contents ?? "", ); const smithersAmbientTypes = files.find( - (file) => file.relativePath === "smithers-orchestrator.ambient.d.ts", + (file) => file.relativePath === "smthrs.ambient.d.ts", ); const manifest = JSON.parse( files.find((file) => file.relativePath === ".svvy-generated-package.json")?.contents ?? "", @@ -117,12 +117,12 @@ describe("generated workflows package", () => { ), [], ); - assert.match(smithersAmbientTypes?.contents ?? "", /declare module "smithers-orchestrator"/); + assert.match(smithersAmbientTypes?.contents ?? "", /declare module "smthrs"/); assert.match( smithersAmbientTypes?.contents ?? "", /generate: \(args: unknown\) => Promise<unknown>/, ); - assert.strictEqual(JSON.stringify(packageJson).includes("smithers-orchestrator"), false); + assert.strictEqual(JSON.stringify(packageJson).includes("smthrs"), false); assert.deepStrictEqual( manifest.dependencies.filter( (dependency: Record<string, unknown>) => @@ -210,7 +210,7 @@ describe("generated workflows package", () => { sourcePath: "/workflows/workflows/review.tsx" as AbsolutePath, relativeGeneratedPath: "workflows/reviewWorkflow.tsx", sourceText: [ - `${moduleLoadWord} { Task } from "smithers-orchestrator";`, + `${moduleLoadWord} { Task } from "smthrs";`, "export const reviewWorkflow = Task;", "", ].join("\n"), @@ -229,11 +229,11 @@ describe("generated workflows package", () => { assert.deepStrictEqual( manifest.dependencies.filter( - (dependency: Record<string, unknown>) => dependency.specifier === "smithers-orchestrator", + (dependency: Record<string, unknown>) => dependency.specifier === "smthrs", ), [ { - specifier: "smithers-orchestrator", + specifier: "smthrs", importKind: "runtime", dependencyClass: "workspace-authoring-external", resolutionAuthority: "workspace-smithers-package", @@ -674,7 +674,7 @@ describe("generated workflows package", () => { moduleLoadWord, " { Task } ", "from ", - JSON.stringify("smithers-orchestrator"), + JSON.stringify("smthrs"), ";", ].join(""), [ diff --git a/packages/extensions/src/generated-workflows-package.ts b/packages/extensions/src/generated-workflows-package.ts index 500f9f857..1f7c40081 100644 --- a/packages/extensions/src/generated-workflows-package.ts +++ b/packages/extensions/src/generated-workflows-package.ts @@ -31,7 +31,7 @@ const decodeWorkflowAgentSourceExtensionOrderEffect = Schema.decodeUnknownEffect ); const currentGeneratedPackageTimestamp = Effect.map(DateTime.now, DateTime.formatIso); -const SMITHERS_ORCHESTRATOR_PACKAGE_NAME = "smithers-orchestrator"; +const SMITHERS_ORCHESTRATOR_PACKAGE_NAME = "smthrs"; const SVVY_CORE_PACKAGE_NAME = "@svvy/core"; export interface GeneratedWorkflowsPackageEvidence { @@ -177,7 +177,7 @@ export function renderGeneratedWorkflowsPackageFiles( ]; const outputFiles = [ { relativePath: "package.json", contents: packageJson }, - { relativePath: "smithers-orchestrator.ambient.d.ts", contents: ambientTypes }, + { relativePath: "smthrs.ambient.d.ts", contents: ambientTypes }, { relativePath: "index.ts", contents: index }, ...sourceFiles, ]; @@ -324,7 +324,7 @@ function coreTypeContractPackageDependencySpecifier(input: { function renderGeneratedWorkflowsAmbientTypes(): string { return [ - 'declare module "smithers-orchestrator" {', + 'declare module "smthrs" {', " export type AgentLike = {", " id?: string;", " tools?: Record<string, unknown>;", diff --git a/packages/package-boundaries.test.ts b/packages/package-boundaries.test.ts index cacca649e..8bd1cd774 100644 --- a/packages/package-boundaries.test.ts +++ b/packages/package-boundaries.test.ts @@ -7826,7 +7826,7 @@ describe("package boundaries", () => { Array.from(markerSource.matchAll(/"([^"]+)"/g), (match) => match[1] ?? ""), ); const officialMarkers = requiredMarkers.filter((marker) => - marker.startsWith("bunx smithers-orchestrator "), + marker.startsWith("bunx smthrs "), ); expect(officialMarkers.length).toBeGreaterThan(0); @@ -8449,7 +8449,7 @@ describe("package boundaries", () => { sourcePath: "/workflows/workflows/review.tsx" as AbsolutePath, relativeGeneratedPath: "workflows/reviewWorkflow.tsx", sourceText: - 'import { Task } from "smithers-orchestrator";\n' + + 'import { Task } from "smthrs";\n' + 'import { Extensions } from "@svvyx/extensions";\n' + "export const reviewWorkflow = Task;\n", }, @@ -10786,7 +10786,7 @@ describe("package boundaries", () => { ].filter( (name) => name.startsWith("@svvyx/") || - name === "smithers-orchestrator" || + name === "smthrs" || name === "@smithers/orchestrator", ); diff --git a/packages/state/src/runtime-generated-package-state-port.test.ts b/packages/state/src/runtime-generated-package-state-port.test.ts index 3ff95bafb..d11c21f9b 100644 --- a/packages/state/src/runtime-generated-package-state-port.test.ts +++ b/packages/state/src/runtime-generated-package-state-port.test.ts @@ -107,7 +107,7 @@ describe("runtime generated package state port", () => { ], dependencies: [ { - specifier: "smithers-orchestrator", + specifier: "smthrs", importKind: "type-only", dependencyClass: "workspace-authoring-external", resolutionAuthority: "workspace-smithers-package", @@ -130,7 +130,7 @@ describe("runtime generated package state port", () => { outputFingerprint: "output-fingerprint-001", dependencies: [ { - specifier: "smithers-orchestrator", + specifier: "smthrs", importKind: "type-only", dependencyClass: "workspace-authoring-external", resolutionAuthority: "workspace-smithers-package", diff --git a/packages/state/src/state-facade.test.ts b/packages/state/src/state-facade.test.ts index 1463821b4..16aee9f7f 100644 --- a/packages/state/src/state-facade.test.ts +++ b/packages/state/src/state-facade.test.ts @@ -2816,7 +2816,7 @@ describe("State read-model kind expansion", () => { id: "smithers-cli", requirementFingerprint: "sha256:smithers-cli-v1", binary: "smithers", - package: "smithers-orchestrator", + package: "smthrs", required: false, defaultVersion: "0.22.0", versionCommand: "smithers --version", diff --git a/scripts/generate-smithers-fragment.ts b/scripts/generate-smithers-fragment.ts index f29978ab7..0040225d0 100644 --- a/scripts/generate-smithers-fragment.ts +++ b/scripts/generate-smithers-fragment.ts @@ -16,7 +16,7 @@ if (!output) { } if (version !== "0.22.0") { - fail(`Unsupported smithers-orchestrator version: ${version}`); + fail(`Unsupported smthrs version: ${version}`); } const docsPath = join( diff --git a/src/bun/extension-tools.test.ts b/src/bun/extension-tools.test.ts index 725d49a0e..75362ac94 100644 --- a/src/bun/extension-tools.test.ts +++ b/src/bun/extension-tools.test.ts @@ -491,24 +491,24 @@ describe("builtin extension registry", () => { ]); expect(byId.get("smithers")?.cliRequirements).toEqual([ { - id: "smithers-orchestrator", - package: "smithers-orchestrator", + id: "smthrs", + package: "smthrs", binary: "bunx", required: true, version: "0.22.0", - versionCommand: "bunx smithers-orchestrator --version", + versionCommand: "bunx smthrs --version", }, ]); expect(byId.get("smithers")?.generatedInstructions).toEqual([ { output: "instructions/full/010-smithers-core.generated.md", script: "scripts/generate-smithers-core.ts", - versionCliRequirementId: "smithers-orchestrator", + versionCliRequirementId: "smthrs", }, { output: "instructions/full/040-smithers-memory.generated.md", script: "scripts/generate-smithers-memory.ts", - versionCliRequirementId: "smithers-orchestrator", + versionCliRequirementId: "smthrs", }, ]); expect(byId.get("smithers")?.instructionFiles).toEqual([ diff --git a/src/bun/smithers-runtime/smithers-instruction-generator.test.ts b/src/bun/smithers-runtime/smithers-instruction-generator.test.ts index cef30a3c8..fea4e2e16 100644 --- a/src/bun/smithers-runtime/smithers-instruction-generator.test.ts +++ b/src/bun/smithers-runtime/smithers-instruction-generator.test.ts @@ -24,15 +24,15 @@ describe("Smithers instruction generator", () => { }); it("keeps current svvy Smithers prompt boundaries while preserving official concepts", () => { - expect(SMITHERS_CORE_INSTRUCTIONS).toContain("bunx smithers-orchestrator init"); - expect(SMITHERS_CORE_INSTRUCTIONS).toContain("bunx smithers-orchestrator workflow run"); - expect(SMITHERS_CORE_INSTRUCTIONS).toContain("bunx smithers-orchestrator ps"); - expect(SMITHERS_CORE_INSTRUCTIONS).toContain("bunx smithers-orchestrator inspect"); + expect(SMITHERS_CORE_INSTRUCTIONS).toContain("bunx smthrs init"); + expect(SMITHERS_CORE_INSTRUCTIONS).toContain("bunx smthrs workflow run"); + expect(SMITHERS_CORE_INSTRUCTIONS).toContain("bunx smthrs ps"); + expect(SMITHERS_CORE_INSTRUCTIONS).toContain("bunx smthrs inspect"); expect(SMITHERS_CORE_INSTRUCTIONS).toContain("`.smithers/package.json`"); expect(SMITHERS_CORE_INSTRUCTIONS).toContain("Workflows are JSX trees"); expect(SMITHERS_CORE_INSTRUCTIONS).toContain("The render loop in detail"); expect(SMITHERS_CORE_INSTRUCTIONS).toContain("Validated outputs"); - expect(SMITHERS_CORE_INSTRUCTIONS).toContain("bunx smithers-orchestrator approve <run-id>"); + expect(SMITHERS_CORE_INSTRUCTIONS).toContain("bunx smthrs approve <run-id>"); expect(SMITHERS_CORE_INSTRUCTIONS).toContain("task IDs must be stable"); expect(SMITHERS_MEMORY_INSTRUCTIONS).toContain("bypassed by default"); diff --git a/src/bun/smithers-runtime/smithers-instruction-generator.ts b/src/bun/smithers-runtime/smithers-instruction-generator.ts index 3930fc446..c651719ff 100644 --- a/src/bun/smithers-runtime/smithers-instruction-generator.ts +++ b/src/bun/smithers-runtime/smithers-instruction-generator.ts @@ -60,9 +60,9 @@ export function generateSmithersCoreInstructions(upstreamFullDocs: string): stri .trim(); assertGeneratedSmithersPrompt(body, "core"); return [ - "Generated Smithers core instructions from smithers-orchestrator@0.22.0 official docs.", + "Generated Smithers core instructions from smthrs@0.22.0 official docs.", "", - "svvy uses official `bunx smithers-orchestrator ...` commands through Shell. TypeScript workflow source still imports from `smithers-orchestrator`.", + "svvy uses official `bunx smthrs ...` commands through Shell. TypeScript workflow source still imports from `smthrs`.", "", body, "", @@ -81,7 +81,7 @@ export function generateSmithersMemoryInstructions(upstreamFullDocs: string): st ).trim(); assertGeneratedSmithersPrompt(body, "memory"); return [ - "Generated Smithers memory instructions from smithers-orchestrator@0.22.0 official docs.", + "Generated Smithers memory instructions from smthrs@0.22.0 official docs.", "", "This fragment is generated and inspectable but bypassed by default in svvy.", "", @@ -103,7 +103,7 @@ function extractMarkdownRange(markdown: string, startHeading: string, endHeading } function rewriteSmithersCliExamples(markdown: string): string { - return markdown.replace(/\bbunx\s+smithers(?!-orchestrator)\b/g, "bunx smithers-orchestrator"); + return markdown.replace(/\bbunx\s+smithers(?!-orchestrator)\b/g, "bunx smthrs"); } function removeForbiddenPromptLines(markdown: string): string { diff --git a/src/bun/smithers-runtime/workflow-authoring-guide.ts b/src/bun/smithers-runtime/workflow-authoring-guide.ts index f9ca726f1..ebeca6359 100644 --- a/src/bun/smithers-runtime/workflow-authoring-guide.ts +++ b/src/bun/smithers-runtime/workflow-authoring-guide.ts @@ -3,7 +3,7 @@ import { SMITHERS_MEMORY_INSTRUCTIONS } from "../../../generated/smithers-instru export const SMITHERS_SVVY_BOUNDARY_APPENDIX = [ "svvy Smithers boundary for handler threads:", "", - "Work in the workspace `.smithers/` package. Use official `bunx smithers-orchestrator ...` commands through Shell. TypeScript Smithers source still imports from `smithers-orchestrator`.", + "Work in the workspace `.smithers/` package. Use official `bunx smthrs ...` commands through Shell. TypeScript Smithers source still imports from `smthrs`.", "Import reusable svvy workflow material from `@svvyx/workflows` when it exists and matches the task.", "Smithers `.smithers/agents/**` is workspace-local Smithers config. Reusable svvy task-agent parameters live in the app-global Workflows source library and are consumed through generated `@svvyx/workflows` `Agents.*` exports.", "Use `svvyx workflows models list --json` when choosing provider/model/reasoning values for saved workflow agents or reusable task-agent parameters.", @@ -18,7 +18,7 @@ const HANDLER_WORKFLOW_AUTHORING_GUIDE_LINES = [ "", "Decision flow:", "- Use direct tools for bounded work that does not need workflow supervision, pause/resume, fan-out, or reusable structured outputs.", - "- Use official `bunx smithers-orchestrator ...` commands through Shell for workflow initialization, execution, process inspection, and run inspection.", + "- Use official `bunx smthrs ...` commands through Shell for workflow initialization, execution, process inspection, and run inspection.", "- Author workspace-local Smithers source under `.smithers/` when the delegated task needs a concrete workflow.", "- Inspect app-global reusable workflow source with `svvyx workflows list` only when reusable source-library context is relevant.", "- In workspace `.smithers` TypeScript/TSX source, import reusable generated values from `@svvyx/workflows` when they exist and match the task.", @@ -38,7 +38,7 @@ const MINIMAL_ARTIFACT_WORKFLOW_EXAMPLE = [ "Example: minimal workspace-local Smithers workflow", "```ts", 'import React from "react";', - 'import { createSmithers } from "smithers-orchestrator";', + 'import { createSmithers } from "smthrs";', 'import { z } from "zod";', "", "const inputSchema = z.object({ objective: z.string().min(1) });", @@ -59,7 +59,7 @@ const MINIMAL_ARTIFACT_WORKFLOW_EXAMPLE = [ " );", "});", "```", - 'Run reusable or seeded workflows with the official Smithers CLI, for example `bunx smithers-orchestrator workflow run implement --prompt "..."`. For direct TSX files, use the current file-run form from the generated Smithers docs.', + 'Run reusable or seeded workflows with the official Smithers CLI, for example `bunx smthrs workflow run implement --prompt "..."`. For direct TSX files, use the current file-run form from the generated Smithers docs.', ].join("\n"); const PARALLEL_WORKFLOW_EXAMPLE = [ diff --git a/src/bun/tool-execution-command-tracker.test.ts b/src/bun/tool-execution-command-tracker.test.ts index ebc190047..ebc6f3d5f 100644 --- a/src/bun/tool-execution-command-tracker.test.ts +++ b/src/bun/tool-execution-command-tracker.test.ts @@ -426,7 +426,7 @@ describe("tool execution command tracker", () => { tracker.handleToolExecutionStart({ toolCallId: "tool-call-smithers-cli", toolName: "exec_command", - args: { cmd: "bunx smithers-orchestrator ps" }, + args: { cmd: "bunx smthrs ps" }, }); tracker.handleToolExecutionEnd({ toolCallId: "tool-call-smithers-cli", @@ -465,7 +465,7 @@ describe("tool execution command tracker", () => { tracker.handleToolExecutionStart({ toolCallId: "tool-call-smithers-shell-segment", toolName: "exec_command", - args: { cmd: "cd .smithers && bunx smithers-orchestrator ps" }, + args: { cmd: "cd .smithers && bunx smthrs ps" }, }); tracker.handleToolExecutionEnd({ toolCallId: "tool-call-smithers-shell-segment", @@ -731,7 +731,7 @@ describe("tool execution command tracker", () => { tracker.handleToolExecutionStart({ toolCallId: "tool-call-smithers-failed", toolName: "exec_command", - args: { cmd: "bunx smithers-orchestrator inspect run-missing" }, + args: { cmd: "bunx smthrs inspect run-missing" }, }); tracker.handleToolExecutionEnd({ toolCallId: "tool-call-smithers-failed", diff --git a/src/bun/tool-execution-command-tracker.ts b/src/bun/tool-execution-command-tracker.ts index d936e5255..b540c18cb 100644 --- a/src/bun/tool-execution-command-tracker.ts +++ b/src/bun/tool-execution-command-tracker.ts @@ -268,7 +268,7 @@ function readsSmithersCommand(args: unknown): boolean { : typeof (args as { command?: unknown }).command === "string" ? (args as { command: string }).command : ""; - return /(?:^|[;&|]\s*)bunx\s+smithers-orchestrator(?:\s|$)/.test(commandText.trim()); + return /(?:^|[;&|]\s*)bunx\s+smthrs(?:\s|$)/.test(commandText.trim()); } function directToolLogDetails( diff --git a/workflows/bun.lock b/workflows/bun.lock index 969e8089e..63b5ae599 100644 --- a/workflows/bun.lock +++ b/workflows/bun.lock @@ -7,11 +7,11 @@ "dependencies": { "@mdx-js/esbuild": "^3.1.1", "@mdx-js/mdx": "^3.1.1", - "@smithers-orchestrator/agents": "^0.28.0", + "@smthrs/agents": "^0.33.0", "@types/mdx": "^2.0.13", "react": "^19.2.7", "react-dom": "^19.2.7", - "smithers-orchestrator": "^0.28.0", + "smthrs": "^0.33.0", "zod": "^4.4.3", }, "devDependencies": { @@ -37,89 +37,93 @@ "@antfu/install-pkg": ["@antfu/install-pkg@1.1.0", "", { "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" } }, "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ=="], - "@aws-sdk/checksums": ["@aws-sdk/checksums@3.1000.18", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-IImkbEyXdV6/uaF5r6Wkk+8718mQw1ll83j0a4a30R3JM/rHVFdWAiT4jtJpFjJiIwM/oJ6SxIxr0z2TaQUGqw=="], + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], - "@aws-sdk/client-cloudwatch-logs": ["@aws-sdk/client-cloudwatch-logs@3.1088.0", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/credential-provider-node": "^3.972.69", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/fetch-http-handler": "^5.6.6", "@smithy/node-http-handler": "^4.9.6", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3tsxdp3qZaGCqqwoImv96D4i5xlKBgpmXZqdrIZ76BTQKUrptAH4g8wb6Pg1Jc/EiGQfX826FDgGmx4m7nizaQ=="], + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], - "@aws-sdk/client-codebuild": ["@aws-sdk/client-codebuild@3.1088.0", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/credential-provider-node": "^3.972.69", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/fetch-http-handler": "^5.6.6", "@smithy/node-http-handler": "^4.9.6", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-5ILaJoVeL6grBtIC8vFxQM7SpxK7i8iL3lPew4h1fVhaNWuRMFcO78fdrt8FyhgRmHFhaYuIHQQ/51HmScaCmg=="], + "@babel/parser": ["@babel/parser@7.29.8", "", { "dependencies": { "@babel/types": "^7.29.8" }, "bin": "./bin/babel-parser.js" }, "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA=="], - "@aws-sdk/client-ecs": ["@aws-sdk/client-ecs@3.1088.0", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/credential-provider-node": "^3.972.69", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/fetch-http-handler": "^5.6.6", "@smithy/node-http-handler": "^4.9.6", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-pmfZrb52Lx/+eeqmBMoywOEfjN44Ne8Y782Trvo1RFjkfSe45yTyTsCzcj8+XVJwKBeoKZl5f1oIMFsmRR1gog=="], + "@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "@aws-sdk/client-s3": ["@aws-sdk/client-s3@3.1088.0", "", { "dependencies": { "@aws-sdk/checksums": "^3.1000.18", "@aws-sdk/core": "^3.975.3", "@aws-sdk/credential-provider-node": "^3.972.69", "@aws-sdk/middleware-sdk-s3": "^3.972.64", "@aws-sdk/signature-v4-multi-region": "^3.996.41", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/fetch-http-handler": "^5.6.6", "@smithy/node-http-handler": "^4.9.6", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-9ryKKxnjtJRKLDI24P+2gQZki7k28BeV6gz1AySvFDWayhjAZuh4QZjCyx55tqR8Oz0IJxWutgJRO43dDOcXoQ=="], + "@braintree/sanitize-url": ["@braintree/sanitize-url@7.1.2", "", {}, "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA=="], - "@aws-sdk/core": ["@aws-sdk/core@3.975.3", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@aws-sdk/xml-builder": "^3.972.36", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.29.4", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-7ur3kCKuvPLqlsZ2XlvnNBVQ7KkpSu6Y6dOTwSPHLrFpTEfZM8isLBJc4cgv96WB7GifeVM436mpycwxBd2vEA=="], + "@cfworker/json-schema": ["@cfworker/json-schema@4.1.1", "", {}, "sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og=="], - "@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.972.59", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-Ny5e4Mfh3QPmiAc0AiUe+cbTXDlxkU3Rc+EpWOfyWeWEy6yp7Fa1KmfNeCc+1a8by9zQ9gtohmiQUkMPScF3ng=="], + "@chevrotain/types": ["@chevrotain/types@11.1.2", "", {}, "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw=="], - "@aws-sdk/credential-provider-http": ["@aws-sdk/credential-provider-http@3.972.61", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/fetch-http-handler": "^5.6.6", "@smithy/node-http-handler": "^4.9.6", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-8jAjgStl5Ytq4+HF3X/9f+EmRinaRbGRRtQGktlPfBRVx73H+R1y48vIeXerQtYGFaUqkEp3fT6jP854rVO2yQ=="], + "@clack/core": ["@clack/core@1.4.3", "", { "dependencies": { "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ=="], - "@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.973.3", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/credential-provider-env": "^3.972.59", "@aws-sdk/credential-provider-http": "^3.972.61", "@aws-sdk/credential-provider-login": "^3.972.65", "@aws-sdk/credential-provider-process": "^3.972.59", "@aws-sdk/credential-provider-sso": "^3.973.3", "@aws-sdk/credential-provider-web-identity": "^3.972.65", "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/credential-provider-imds": "^4.4.9", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-WpuqYX4gGkx++fCTSWE8+41JzkZVcrI50SH48Ml4CsG1pyuHKyMmpw/FixBHDrmjoQ553PmeCLa/fZIcst+WyA=="], + "@clack/prompts": ["@clack/prompts@1.7.0", "", { "dependencies": { "@clack/core": "1.4.3", "fast-string-width": "^3.0.2", "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A=="], - "@aws-sdk/credential-provider-login": ["@aws-sdk/credential-provider-login@3.972.65", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-xr9rgjYEdmC2Tpg2lwt9o+nOEaK9Qpd+dBjzrVCuWWyQfvhO91Ezu0Hh9ts2VUxOZxmS/k5T9msa34e4R1bnrQ=="], + "@codemirror/autocomplete": ["@codemirror/autocomplete@6.20.3", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0" } }, "sha512-tlosUqb+3BbxCxZdu4tKeRghPFC+QM7q4X5YhKV2eCmPG+1r2F3f4AaSz5sCrFqUtX4Jh20VFTKecl16MgiV9g=="], - "@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.69", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.59", "@aws-sdk/credential-provider-http": "^3.972.61", "@aws-sdk/credential-provider-ini": "^3.973.3", "@aws-sdk/credential-provider-process": "^3.972.59", "@aws-sdk/credential-provider-sso": "^3.973.3", "@aws-sdk/credential-provider-web-identity": "^3.972.65", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/credential-provider-imds": "^4.4.9", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-wbJGGesd0Tl18bmUcbj1xJ+e7CpuRJ6PIpMywLFuUttGy615lua87cJ0EA8pFpY/QgPuUXbnupWBtSPJ9tyZhg=="], + "@codemirror/commands": ["@codemirror/commands@6.10.4", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.7.0", "@codemirror/view": "^6.27.0", "@lezer/common": "^1.1.0" } }, "sha512-Ryk9y9T0FFVF0cUGhAknveAyUOl/A1qReTFi+qPKtOh2Z9F4AUBz3XOrYD4ZEgZirdugVzHvd/2/Wcwy5OliTg=="], - "@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.972.59", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-DlZF2/MhLlatDdlrIy3CUCpfdbLrKx+3SMjVo+WyHnPpwzkc/M3vwAHw4OVJf7DMvO+4vfRqSCMc/E9I1auN0g=="], + "@codemirror/lang-angular": ["@codemirror/lang-angular@0.1.4", "", { "dependencies": { "@codemirror/lang-html": "^6.0.0", "@codemirror/lang-javascript": "^6.1.2", "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.3" } }, "sha512-oap+gsltb/fzdlTQWD6BFF4bSLKcDnlxDsLdePiJpCVNKWXSTAbiiQeYI3UmES+BLAdkmIC1WjyztC1pi/bX4g=="], - "@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.973.3", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/token-providers": "3.1088.0", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-hmdDHoy2G5Es2e8IgelNMYUuSQI6uCIAKZMJ2u2PdKDhxvbk1uWD/g4+R7R5c/tJfKEB1+KjjWiaoCr/S+ZTiQ=="], + "@codemirror/lang-cpp": ["@codemirror/lang-cpp@6.0.3", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/cpp": "^1.0.0" } }, "sha512-URM26M3vunFFn9/sm6rzqrBzDgfWuDixp85uTY49wKudToc2jTHUrKIGGKs+QWND+YLofNNZpxcNGRynFJfvgA=="], - "@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.972.65", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-gHQb/Kt0chjk/JQDa/GJDqmAvEuVn8n7z10wK2h0LFM9TUDRkohgOO4aEF+s2sBLM0br7Cl5W6P7phgjrrJvLQ=="], + "@codemirror/lang-css": ["@codemirror/lang-css@6.3.1", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.0.2", "@lezer/css": "^1.1.7" } }, "sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg=="], - "@aws-sdk/lib-storage": ["@aws-sdk/lib-storage@3.1088.0", "", { "dependencies": { "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "buffer": "5.6.0", "events": "3.3.0", "stream-browserify": "3.0.0", "tslib": "^2.6.2" }, "peerDependencies": { "@aws-sdk/client-s3": "^3.1088.0" } }, "sha512-OElyotfOuTLAkWeYfWvgFQ/ABVs5xi9+UzlnKveFnbyfzV9um0guDWGanG/xGlw9ofAiplscHlNauChtJUBNWA=="], + "@codemirror/lang-go": ["@codemirror/lang-go@6.0.1", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.6.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/go": "^1.0.0" } }, "sha512-7fNvbyNylvqCphW9HD6WFnRpcDjr+KXX/FgqXy5H5ZS0eC5edDljukm/yNgYkwTsgp2busdod50AOTIy6Jikfg=="], - "@aws-sdk/middleware-sdk-s3": ["@aws-sdk/middleware-sdk-s3@3.972.64", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/signature-v4-multi-region": "^3.996.41", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-RBi43anhDBUv+HCfxCOXwGOE7GmT4n7ChV04Mwr22RhXTNcamW/iWnJlOotDPCZSrJ4dEvhZSiWWQMwLX+ZhFA=="], + "@codemirror/lang-html": ["@codemirror/lang-html@6.4.11", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-css": "^6.0.0", "@codemirror/lang-javascript": "^6.0.0", "@codemirror/language": "^6.4.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0", "@lezer/css": "^1.1.0", "@lezer/html": "^1.3.12" } }, "sha512-9NsXp7Nwp891pQchI7gPdTwBuSuT3K65NGTHWHNJ55HjYcHLllr0rbIZNdOzas9ztc1EUVBlHou85FFZS4BNnw=="], - "@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.33", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/signature-v4-multi-region": "^3.996.41", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/fetch-http-handler": "^5.6.6", "@smithy/node-http-handler": "^4.9.6", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-dVZOroI/r3/ENvqNGgjMPul+jjlz9GddfVusgTXlVjfZj5isibOxecLkGQbRPp8XOuX+RAfjXLFgPkD1JS5xrw=="], + "@codemirror/lang-java": ["@codemirror/lang-java@6.0.2", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/java": "^1.0.0" } }, "sha512-m5Nt1mQ/cznJY7tMfQTJchmrjdjQ71IDs+55d1GAa8DGaB8JXWsVCkVT284C3RTASaY43YknrK2X3hPO/J3MOQ=="], - "@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.41", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-QMUytg+FQMGouc8gHS00KoYih3+N6cqmVI/pQGOIo7Nr7OpQaiXjSYOuL+vsPZ1tymY4LAQ8MYcHJmws5LRxng=="], + "@codemirror/lang-javascript": ["@codemirror/lang-javascript@6.2.5", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.6.0", "@codemirror/lint": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0", "@lezer/javascript": "^1.0.0" } }, "sha512-zD4e5mS+50htS7F+TYjBPsiIFGanfVqg4HyUz6WNFikgOPf2BgKlx+TQedI1w6n/IqRBVBbBWmGFdLB/7uxO4A=="], - "@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1088.0", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-4ObatWt2qpJg5FBk4LOOKrTQYzaqeewAtdO3r9ZO8lH9YqLtpTzLyIdy0mJ+nVdfYOnqISkKNfmzP22bNDhwyw=="], + "@codemirror/lang-jinja": ["@codemirror/lang-jinja@6.0.1", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.2.0", "@lezer/lr": "^1.4.0" } }, "sha512-P5kyHLObzjtbGj16h+hyvZTxJhSjBEeSx4wMjbnAf3b0uwTy2+F0zGjMZL4PQOm/mh2eGZ5xUDVZXgwP783Nsw=="], - "@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], + "@codemirror/lang-json": ["@codemirror/lang-json@6.0.2", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/json": "^1.0.0" } }, "sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ=="], - "@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.36", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-RdGmS1GLrtaTOLE1ElSluMldNrpk9Emq6uYs8SS8iHlu5xTAmM9rRkM91o48+rIRryBtyO9t+uLYCoMG6jVMVA=="], + "@codemirror/lang-less": ["@codemirror/lang-less@6.0.2", "", { "dependencies": { "@codemirror/lang-css": "^6.2.0", "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ=="], - "@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.3.0", "", {}, "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ=="], + "@codemirror/lang-liquid": ["@codemirror/lang-liquid@6.3.2", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.1" } }, "sha512-6PDVU3ZnfeYyz1at1E/ttorErZvZFXXt1OPhtfe1EZJ2V2iDFa0CwPqPgG5F7NXN0yONGoBogKmFAafKTqlwIw=="], - "@braintree/sanitize-url": ["@braintree/sanitize-url@7.1.2", "", {}, "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA=="], + "@codemirror/lang-markdown": ["@codemirror/lang-markdown@6.5.1", "", { "dependencies": { "@codemirror/autocomplete": "^6.7.1", "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.3.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.2.1", "@lezer/markdown": "^1.0.0" } }, "sha512-6re5avCNfyRMIoi3XNjbEfQM1vTeVD3JS3g/Fyegyso/eoANFM71Cyvbb66LDyYtQLMEcRFlzioywCqDo9SlLA=="], - "@cfworker/json-schema": ["@cfworker/json-schema@4.1.1", "", {}, "sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og=="], + "@codemirror/lang-php": ["@codemirror/lang-php@6.0.2", "", { "dependencies": { "@codemirror/lang-html": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/php": "^1.0.0" } }, "sha512-ZKy2v1n8Fc8oEXj0Th0PUMXzQJ0AIR6TaZU+PbDHExFwdu+guzOA4jmCHS1Nz4vbFezwD7LyBdDnddSJeScMCA=="], - "@chevrotain/types": ["@chevrotain/types@11.1.2", "", {}, "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw=="], + "@codemirror/lang-python": ["@codemirror/lang-python@6.2.1", "", { "dependencies": { "@codemirror/autocomplete": "^6.3.2", "@codemirror/language": "^6.8.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.2.1", "@lezer/python": "^1.1.4" } }, "sha512-IRjC8RUBhn9mGR9ywecNhB51yePWCGgvHfY1lWN/Mrp3cKuHr0isDKia+9HnvhiWNnMpbGhWrkhuWOc09exRyw=="], - "@clack/core": ["@clack/core@1.4.3", "", { "dependencies": { "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ=="], + "@codemirror/lang-rust": ["@codemirror/lang-rust@6.0.2", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/rust": "^1.0.0" } }, "sha512-EZaGjCUegtiU7kSMvOfEZpaCReowEf3yNidYu7+vfuGTm9ow4mthAparY5hisJqOHmJowVH3Upu+eJlUji6qqA=="], - "@clack/prompts": ["@clack/prompts@1.7.0", "", { "dependencies": { "@clack/core": "1.4.3", "fast-string-width": "^3.0.2", "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A=="], + "@codemirror/lang-sass": ["@codemirror/lang-sass@6.0.2", "", { "dependencies": { "@codemirror/lang-css": "^6.2.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.0.2", "@lezer/sass": "^1.0.0" } }, "sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q=="], + + "@codemirror/lang-sql": ["@codemirror/lang-sql@6.10.0", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-6ayPkEd/yRw0XKBx5uAiToSgGECo/GY2NoJIHXIIQh1EVwLuKoU8BP/qK0qH5NLXAbtJRLuT73hx7P9X34iO4w=="], + + "@codemirror/lang-vue": ["@codemirror/lang-vue@0.1.3", "", { "dependencies": { "@codemirror/lang-html": "^6.0.0", "@codemirror/lang-javascript": "^6.1.2", "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.1" } }, "sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug=="], - "@cloudflare/containers": ["@cloudflare/containers@0.3.7", "", {}, "sha512-DM9dm3FnIBSyiSJ1FLavKwl/lk3oAmTaynCzZQ9pZR0ncRPquSxkxd8Nu2MFILxmDDsPkxKsSNEh9mHHMty4Fw=="], + "@codemirror/lang-wast": ["@codemirror/lang-wast@6.0.2", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-Imi2KTpVGm7TKuUkqyJ5NRmeFWF7aMpNiwHnLQe0x9kmrxElndyH0K6H/gXtWwY6UshMRAhpENsgfpSwsgmC6Q=="], - "@cloudflare/sandbox": ["@cloudflare/sandbox@0.12.3", "", { "dependencies": { "@cloudflare/containers": "^0.3.5", "aws4fetch": "^1.0.20", "capnweb": "^0.8.0", "hono": "^4.12.26" }, "peerDependencies": { "@openai/agents": "^0.3.3", "@opencode-ai/sdk": "^1.1.40", "@xterm/xterm": ">=5.0.0" }, "optionalPeers": ["@openai/agents", "@opencode-ai/sdk", "@xterm/xterm"] }, "sha512-4yx+PtBCZBrS3eZteefwBfGOm+8MTZahLH8/fG/qsvqoNflzno9780FsM6HZf02gGuoDy+s9jQrXbg/h5gEvgw=="], + "@codemirror/lang-xml": ["@codemirror/lang-xml@6.1.0", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.4.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/xml": "^1.0.0" } }, "sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg=="], - "@daytona/api-client": ["@daytona/api-client@0.194.0", "", { "dependencies": { "axios": "^1.6.1" } }, "sha512-HjHNhURP13+HZahAidi1LDUx9ugyZCrYRkBHsro31gUmYkMtoKfxqrISisAmKoGpUcOarNfbb9XBuaN0PHP5Tg=="], + "@codemirror/lang-yaml": ["@codemirror/lang-yaml@6.1.3", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.2.0", "@lezer/lr": "^1.0.0", "@lezer/yaml": "^1.0.0" } }, "sha512-AZ8DJBuXGVHybpBQhmZtgew5//4hv3tdkXnr3vDmOUMJRuB6vn/uuwtmTOTlqEaQFg3hQSVeA90NmvIQyUV6FQ=="], - "@daytona/toolbox-api-client": ["@daytona/toolbox-api-client@0.194.0", "", { "dependencies": { "axios": "^1.6.1" } }, "sha512-t2H8ZmjDeNxJusLRXikaEkqYcalJaSD+mbo+Ix+072Saq2Iik91wYSFch9VqAzxbYw73vymx+kR8GlwPGxCo5A=="], + "@codemirror/language": ["@codemirror/language@6.12.4", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.23.0", "@lezer/common": "^1.5.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0", "style-mod": "^4.0.0" } }, "sha512-1q4PaT+o6PbgpkJt4Q8Fv5XJxTy4FUZ4MWETtyiDw3J0Pyr9E2vqcKL+k9wcvjNTIsauxvE7OfmWj3FRPHQ76A=="], - "@daytonaio/sdk": ["@daytonaio/sdk@0.194.0", "", { "dependencies": { "@aws-sdk/client-s3": "^3.787.0", "@aws-sdk/lib-storage": "^3.798.0", "@daytona/api-client": "0.194.0", "@daytona/toolbox-api-client": "0.194.0", "@iarna/toml": "^2.2.5", "@opentelemetry/api": "^1.9.0", "@opentelemetry/exporter-trace-otlp-http": "^0.217.0", "@opentelemetry/instrumentation-http": "^0.217.0", "@opentelemetry/otlp-exporter-base": "0.217.0", "@opentelemetry/resources": "2.7.1", "@opentelemetry/sdk-node": "^0.217.0", "@opentelemetry/sdk-trace-base": "^2.7.1", "@opentelemetry/semantic-conventions": "^1.40.0", "axios": "^1.15.2", "busboy": "^1.0.0", "dotenv": "^17.0.1", "expand-tilde": "^2.0.2", "fast-glob": "^3.3.0", "form-data": "^4.0.4", "isomorphic-ws": "^5.0.0", "pathe": "^2.0.3", "shell-quote": "^1.8.2", "tar": "^7.5.11" } }, "sha512-5jko+VYuOBrjXaDaIP3goS6ajWz3u8pJp5MJELyMnC/2ShXX95Dm/MXlVVMxMi4V83nNBjWhValIylaS7mJpMQ=="], + "@codemirror/language-data": ["@codemirror/language-data@6.5.2", "", { "dependencies": { "@codemirror/lang-angular": "^0.1.0", "@codemirror/lang-cpp": "^6.0.0", "@codemirror/lang-css": "^6.0.0", "@codemirror/lang-go": "^6.0.0", "@codemirror/lang-html": "^6.0.0", "@codemirror/lang-java": "^6.0.0", "@codemirror/lang-javascript": "^6.0.0", "@codemirror/lang-jinja": "^6.0.0", "@codemirror/lang-json": "^6.0.0", "@codemirror/lang-less": "^6.0.0", "@codemirror/lang-liquid": "^6.0.0", "@codemirror/lang-markdown": "^6.0.0", "@codemirror/lang-php": "^6.0.0", "@codemirror/lang-python": "^6.0.0", "@codemirror/lang-rust": "^6.0.0", "@codemirror/lang-sass": "^6.0.0", "@codemirror/lang-sql": "^6.0.0", "@codemirror/lang-vue": "^0.1.1", "@codemirror/lang-wast": "^6.0.0", "@codemirror/lang-xml": "^6.0.0", "@codemirror/lang-yaml": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/legacy-modes": "^6.4.0" } }, "sha512-CPkWBKrNS8stYbEU5kwBwTf3JB1kghlbh4FSAwzGW2TEscdeHHH4FGysREW86Mqnj3Qn09s0/6Ea/TutmoTobg=="], - "@effect/cluster": ["@effect/cluster@0.59.0", "", { "dependencies": { "kubernetes-types": "^1.30.0" }, "peerDependencies": { "@effect/platform": "^0.96.1", "@effect/rpc": "^0.75.1", "@effect/sql": "^0.51.1", "@effect/workflow": "^0.18.2", "effect": "^3.21.2" } }, "sha512-rxtJ0zlcdDDtn9wau0z/PFfwPP2FsYPB2/tSK4tT8DkTYQmACJ5AwRwZm3Ea83iL/gv3df63lRe94oMiS8bFfg=="], + "@codemirror/legacy-modes": ["@codemirror/legacy-modes@6.5.3", "", { "dependencies": { "@codemirror/language": "^6.0.0" } }, "sha512-xCsmIzH78MyWkib9jlPaaun57XNkfbMIhagfaZVd0iLTqlpw3jXaIcbZm72MTmmn64eTZpBVNjbyYh+QXnxRsg=="], - "@effect/experimental": ["@effect/experimental@0.60.0", "", { "dependencies": { "uuid": "^11.0.3" }, "peerDependencies": { "@effect/platform": "^0.96.0", "effect": "^3.21.0", "ioredis": "^5", "lmdb": "^3" }, "optionalPeers": ["ioredis", "lmdb"] }, "sha512-i5zIg7Xup2KgHyqHlYtkgqSE1bNzCL0GbbTQxrpIzKF0q/ebknOk/ox8B/gIq2vImjoEE81h/oxU+6i1NH210g=="], + "@codemirror/lint": ["@codemirror/lint@6.9.7", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.42.0", "crelt": "^1.0.5" } }, "sha512-28/+iWLYxKxsvGYhSYL7zaCZqLz5+FFFDq9tVsvGv9kv8RY4fFAchJ5WX9M3YrrRlTIsECjsXPqeNgnSmNP2dg=="], - "@effect/opentelemetry": ["@effect/opentelemetry@0.63.0", "", { "peerDependencies": { "@effect/platform": "^0.96.0", "@opentelemetry/api": "^1.9", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-logs": ">=0.203.0 <0.300.0", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/sdk-trace-web": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.33.0", "effect": "^3.21.0" } }, "sha512-2yUG2QWNATi1uKP0kwhaP5eLp+c5NDzAL3EOpIcGLBAC0cbXZrx4n9Qw/QwUKxpuV+pbhrBUPCiByyWAFKfuCw=="], + "@codemirror/search": ["@codemirror/search@6.7.1", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.37.0", "crelt": "^1.0.5" } }, "sha512-uMe5UO6PamJtSHrXhhHOzSX3ReWtiJrva6GnPMwSOrZtiExb5X5eExhr2OUZQVvdxPsKpY3Ro2mFbQadpPWmHA=="], - "@effect/platform": ["@effect/platform@0.96.2", "", { "dependencies": { "find-my-way-ts": "^0.1.6", "msgpackr": "^1.11.10", "multipasta": "^0.2.7" }, "peerDependencies": { "effect": "^3.21.4" } }, "sha512-oJm3UztdzZvK7BXkFSV3IdyGuqQrhLmViG/hMDZh99ski7aADesNuv19z4R0heH3bAXnSt/Nb8O9KJQ886C0Tg=="], + "@codemirror/state": ["@codemirror/state@6.7.1", "", { "dependencies": { "@marijn/find-cluster-break": "^1.0.0" } }, "sha512-9QzNDgE4EYDnAHfrTlR2lwiPciiOymLtwKK+8yHQzCc7GXhAP9xdEbEJFy2IWB1j9UGUl9BsgMmTo/ImA02T7A=="], - "@effect/platform-bun": ["@effect/platform-bun@0.90.0", "", { "dependencies": { "@effect/platform-node-shared": "^0.60.0", "multipasta": "^0.2.7" }, "peerDependencies": { "@effect/cluster": "^0.59.0", "@effect/platform": "^0.96.1", "@effect/rpc": "^0.75.1", "@effect/sql": "^0.51.1", "effect": "^3.21.2" } }, "sha512-s+5l3ca/RfQlJciLX9lLuo9RJbZIb3XYHPiBuIR4xy50oYz+b24yK5OBm1Pz01LVauVSEc8t5L/tl+V5n0A6TA=="], + "@codemirror/theme-one-dark": ["@codemirror/theme-one-dark@6.1.3", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/highlight": "^1.0.0" } }, "sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA=="], - "@effect/platform-node-shared": ["@effect/platform-node-shared@0.60.0", "", { "dependencies": { "@parcel/watcher": "^2.5.1", "multipasta": "^0.2.7", "ws": "^8.18.2" }, "peerDependencies": { "@effect/cluster": "^0.59.0", "@effect/platform": "^0.96.1", "@effect/rpc": "^0.75.1", "@effect/sql": "^0.51.1", "effect": "^3.21.2" } }, "sha512-obT8Mau/guSYjehF9pg09FHM/ERXAAVBl/FXRXEyvTc7ZiDGTYnPBihytGNccsfNsgqBdvCE24sflwK6j5nFXA=="], + "@codemirror/view": ["@codemirror/view@6.43.7", "", { "dependencies": { "@codemirror/state": "^6.7.0", "crelt": "^1.0.6", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, "sha512-FZsExxkoxnAN+d9TgqXLg5g4A1oQwzX9WlkOT5i2PKkcW7xx3Bmu0vs90g6fo9Mpdsb/l96dnAraQ8932aO4/g=="], - "@effect/rpc": ["@effect/rpc@0.75.1", "", { "dependencies": { "msgpackr": "^1.11.10" }, "peerDependencies": { "@effect/platform": "^0.96.1", "effect": "^3.21.2" } }, "sha512-8yxF8+mMGGEbF8BUCp34HjdJj7CvTpGeZxBcpsDF6v7zPiGbJL1UDLzA8ZqYjmcngBHhPecbmeONTk/LiLAaEg=="], + "@effect/opentelemetry": ["@effect/opentelemetry@4.0.0-beta.102", "", { "peerDependencies": { "@opentelemetry/api": "^1.9", "@opentelemetry/api-logs": ">=0.203.0 <0.300.0", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-logs": ">=0.203.0 <0.300.0", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/sdk-trace-web": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.33.0", "effect": "^4.0.0-beta.102" }, "optionalPeers": ["@opentelemetry/api", "@opentelemetry/api-logs", "@opentelemetry/resources", "@opentelemetry/sdk-logs", "@opentelemetry/sdk-metrics", "@opentelemetry/sdk-trace-base", "@opentelemetry/sdk-trace-node", "@opentelemetry/sdk-trace-web"] }, "sha512-U15cxJ1uf3+HMnZB0BUQe3U4TuyIPYxSHJ+wEzkF4ZjteN224hsgeTgsyXSFjSIpWDVWfujdGPqmtkDpcMzf6w=="], - "@effect/sql": ["@effect/sql@0.51.1", "", { "dependencies": { "uuid": "^11.0.3" }, "peerDependencies": { "@effect/experimental": "^0.60.0", "@effect/platform": "^0.96.1", "effect": "^3.21.2" } }, "sha512-iPDAefrJcI0HcTk9keP9Gq8Pg08K1HmpnmZZt85AqyTcvorhoNsXDFiKBbPldfV2CortwVkacX8KjO9GPpSYCA=="], + "@effect/platform-bun": ["@effect/platform-bun@4.0.0-beta.102", "", { "dependencies": { "@effect/platform-node-shared": "^4.0.0-beta.102" }, "peerDependencies": { "effect": "^4.0.0-beta.102" } }, "sha512-hTIb0jjTfXhNgnDq2OX5wrigc0OSvTT0VWWb1PLpMM395RJPu8rCIbTlGhy0NS7kZOd8FfgNi9e0sDhgyu+5Ag=="], - "@effect/sql-sqlite-bun": ["@effect/sql-sqlite-bun@0.52.0", "", { "peerDependencies": { "@effect/experimental": "^0.60.0", "@effect/platform": "^0.96.0", "@effect/sql": "^0.51.0", "effect": "^3.21.0" } }, "sha512-iqQ7SvSNxq0HLjKW5IQ29FsCTzOD1CuX1wuBEuPLLgPCvuEykEHLn4zDrs2qJ+O3CBEUm4kiCy29tmfHE7uAdw=="], + "@effect/platform-node-shared": ["@effect/platform-node-shared@4.0.0-beta.102", "", { "dependencies": { "@types/ws": "^8.18.1", "ws": "^8.21.0" }, "peerDependencies": { "effect": "^4.0.0-beta.102" } }, "sha512-gVd793I72MrkX4dXo7eYtRKfNj0RW4eMRfVEKEJI16h2+mBDCzQ+gqMrog2hSTHQnaIbvbYShNQ4TVGuRCYZeQ=="], - "@effect/workflow": ["@effect/workflow@0.18.2", "", { "peerDependencies": { "@effect/experimental": "^0.60.0", "@effect/platform": "^0.96.1", "@effect/rpc": "^0.75.1", "effect": "^3.21.2" } }, "sha512-2av0TexhxHnapQa3eLn6TkniokUFRZKf8dlWlLqbODMpXAJ3mm+DOHWM0ozMGkg9K/+zGCtiL3dMqJyJ8r7G8g=="], + "@effect/sql-sqlite-bun": ["@effect/sql-sqlite-bun@4.0.0-beta.102", "", { "peerDependencies": { "effect": "^4.0.0-beta.102" } }, "sha512-pBO6FBJ+a21j2qHmzJDK1DeJsxm7HpUQBgucw6prHQXLMUBkhOsfZofhw1FKEdGRDEhO0sGTjffa2KP7iOuDIg=="], "@electric-sql/client": ["@electric-sql/client@1.5.24", "", { "dependencies": { "@microsoft/fetch-event-source": "^2.0.1" }, "optionalDependencies": { "@rollup/rollup-darwin-arm64": "^4.18.1" }, "bin": { "intent": "bin/intent.mjs" } }, "sha512-ItOjBFTfiZvYosglF9Dn4TSqE59yL/psoemHJ7vX8gvEUmElHB2QdP5eQC6q9/lswyv7oqhkZT0Kk8kuq2P5vA=="], @@ -201,127 +205,123 @@ "@floating-ui/utils": ["@floating-ui/utils@0.2.12", "", {}, "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww=="], - "@google-cloud/paginator": ["@google-cloud/paginator@5.0.2", "", { "dependencies": { "arrify": "^2.0.0", "extend": "^3.0.2" } }, "sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg=="], + "@hono/node-server": ["@hono/node-server@1.19.14", "", { "peerDependencies": { "hono": "^4" } }, "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw=="], - "@google-cloud/projectify": ["@google-cloud/projectify@4.0.0", "", {}, "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA=="], + "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], - "@google-cloud/promisify": ["@google-cloud/promisify@4.0.0", "", {}, "sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g=="], + "@iconify/utils": ["@iconify/utils@3.1.4", "", { "dependencies": { "@antfu/install-pkg": "^1.1.0", "@iconify/types": "^2.0.0", "import-meta-resolve": "^4.2.0" } }, "sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw=="], - "@google-cloud/run": ["@google-cloud/run@2.3.0", "", { "dependencies": { "google-gax": "^5.0.0" } }, "sha512-wiabDmKc64GY0zlDPhB4SEu839wj5W7/ym6nepLg98OL0wJgbIHp9BT7XX7ay3H0u6VIuksPbwdxeJbBrEJsVQ=="], + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], - "@google-cloud/storage": ["@google-cloud/storage@7.21.0", "", { "dependencies": { "@google-cloud/paginator": "^5.0.0", "@google-cloud/projectify": "^4.0.0", "@google-cloud/promisify": "<4.1.0", "abort-controller": "^3.0.0", "async-retry": "^1.3.3", "duplexify": "^4.1.3", "fast-xml-parser": "^5.3.4", "gaxios": "^6.0.2", "google-auth-library": "^9.6.3", "html-entities": "^2.5.2", "mime": "^3.0.0", "p-limit": "^3.0.1", "retry-request": "^7.0.0", "teeny-request": "^9.0.0" } }, "sha512-l+IFTkd+6Y5LoAuXyYCKNAKtw/Ci+rAMqgdTB1jv4iZiLhw0rtq+0qjIRbBizXkNzEFmXiXUW0H7sZQQvk1ffA=="], + "@lezer/common": ["@lezer/common@1.5.2", "", {}, "sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ=="], - "@grpc/grpc-js": ["@grpc/grpc-js@1.14.4", "", { "dependencies": { "@grpc/proto-loader": "^0.8.0", "@js-sdsl/ordered-map": "^4.4.2" } }, "sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ=="], + "@lezer/cpp": ["@lezer/cpp@1.1.6", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-vh9gWWJOXFVY8HBHK3Twzq8MgwG2iN4GSyzBP9sCGTe37P15x2R14VaBQk0VA0ezTRN1KHYBBsHhvpGZ2Xy/pA=="], - "@grpc/proto-loader": ["@grpc/proto-loader@0.8.1", "", { "dependencies": { "lodash.camelcase": "^4.3.0", "long": "^5.0.0", "protobufjs": "^7.5.5", "yargs": "^17.7.2" }, "bin": { "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" } }, "sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg=="], + "@lezer/css": ["@lezer/css@1.3.5", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.0" } }, "sha512-PrlQ8glBdWS5UOqgnFCmPxAJbhuOhb0WoDnSAXiNQPjivlDujhuUQ1K/fxyk2vFoq4VTBgFtFZOc8sOpiYjz5g=="], - "@hono/node-server": ["@hono/node-server@1.19.14", "", { "peerDependencies": { "hono": "^4" } }, "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw=="], + "@lezer/go": ["@lezer/go@1.0.1", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.3.0" } }, "sha512-xToRsYxwsgJNHTgNdStpcvmbVuKxTapV0dM0wey1geMMRc9aggoVyKgzYp41D2/vVOx+Ii4hmE206kvxIXBVXQ=="], - "@iarna/toml": ["@iarna/toml@2.2.5", "", {}, "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg=="], + "@lezer/highlight": ["@lezer/highlight@1.2.3", "", { "dependencies": { "@lezer/common": "^1.3.0" } }, "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g=="], - "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], + "@lezer/html": ["@lezer/html@1.3.13", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-oI7n6NJml729m7pjm9lvLvmXbdoMoi2f+1pwSDJkl9d68zGr7a9Btz8NdHTGQZtW2DA25ybeuv/SyDb9D5tseg=="], - "@iconify/utils": ["@iconify/utils@3.1.4", "", { "dependencies": { "@antfu/install-pkg": "^1.1.0", "@iconify/types": "^2.0.0", "import-meta-resolve": "^4.2.0" } }, "sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw=="], + "@lezer/java": ["@lezer/java@1.1.3", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw=="], - "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], + "@lezer/javascript": ["@lezer/javascript@1.5.4", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.1.3", "@lezer/lr": "^1.3.0" } }, "sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA=="], - "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], + "@lezer/json": ["@lezer/json@1.0.3", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ=="], - "@js-sdsl/ordered-map": ["@js-sdsl/ordered-map@4.4.2", "", {}, "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw=="], + "@lezer/lr": ["@lezer/lr@1.4.10", "", { "dependencies": { "@lezer/common": "^1.0.0" } }, "sha512-rnCpTIBafOx4mRp43xOxDJbFipJm/c0cia/V5TiGlhmMa+wsSdoGmUN3w5Bqrks/09Q/D4tNAmWaT8p6NRi77A=="], - "@mdx-js/esbuild": ["@mdx-js/esbuild@3.1.1", "", { "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/unist": "^3.0.0", "source-map": "^0.7.0", "vfile": "^6.0.0", "vfile-message": "^4.0.0" }, "peerDependencies": { "esbuild": ">=0.14.0" } }, "sha512-NS35VhTdvKNj5/B1JSD5W3kN1R0WDHgk+zCWq+tSChQw5L2Bgeiz7yyZPFrc5LWuPVOxE1xMbJr82bO9VVzmfQ=="], - - "@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="], - - "@mermaid-js/parser": ["@mermaid-js/parser@1.2.0", "", { "dependencies": { "@chevrotain/types": "~11.1.2" } }, "sha512-oYPyv8A4As1yH5Bx+04iQEQxXuIQDe0GKCNSRgao6z8AM9jixXIfP0vsppRLvGf+nKIOb9/LdpWA4YuJiVvESA=="], + "@lezer/markdown": ["@lezer/markdown@1.7.2", "", { "dependencies": { "@lezer/common": "^1.5.0", "@lezer/highlight": "^1.0.0" } }, "sha512-iTkYvoVcKt3WkeL7qUDyXHONZEwLio4wj8KTNi2dnjQEXBZKMV63BpQrPqfsM+OkvuRbiSTAcycYAsQzLhRNoQ=="], - "@microsoft/fetch-event-source": ["@microsoft/fetch-event-source@2.0.1", "", {}, "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA=="], + "@lezer/php": ["@lezer/php@1.0.5", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.1.0" } }, "sha512-W7asp9DhM6q0W6DYNwIkLSKOvxlXRrif+UXBMxzsJUuqmhE7oVU+gS3THO4S/Puh7Xzgm858UNaFi6dxTP8dJA=="], - "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.29.0", "", { "dependencies": { "@hono/node-server": "^1.19.9", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ=="], + "@lezer/python": ["@lezer/python@1.1.19", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-MhQIURHRytsNzP/YXnqpYKW6la6voAH3kyplTOOiCdjyFY6cWWGFVmYVdHIPrElqSDf4iCDktQCockB9FxuhzQ=="], - "@modelcontextprotocol/server": ["@modelcontextprotocol/server@2.0.0-alpha.2", "", { "dependencies": { "zod": "^4.0" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-gmLgdHzlYM8L7Aw/+VE0kxjT25WKamtUSLNhdOgrJq5CrESvqVSoAfWSJJeNPUXNTluQ+dYDGFbKVitdsJtbPA=="], + "@lezer/rust": ["@lezer/rust@1.0.2", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg=="], - "@msgpackr-extract/msgpackr-extract-darwin-arm64": ["@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw=="], + "@lezer/sass": ["@lezer/sass@1.1.0", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-3mMGdCTUZ/84ArHOuXWQr37pnf7f+Nw9ycPUeKX+wu19b7pSMcZGLbaXwvD2APMBDOGxPmpK/O6S1v1EvLoqgQ=="], - "@msgpackr-extract/msgpackr-extract-darwin-x64": ["@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw=="], + "@lezer/xml": ["@lezer/xml@1.0.6", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww=="], - "@msgpackr-extract/msgpackr-extract-linux-arm": ["@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3", "", { "os": "linux", "cpu": "arm" }, "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw=="], + "@lezer/yaml": ["@lezer/yaml@1.0.4", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.4.0" } }, "sha512-2lrrHqxalACEbxIbsjhqGpSW8kWpUKuY6RHgnSAFZa6qK62wvnPxA8hGOwOoDbwHcOFs5M4o27mjGu+P7TvBmw=="], - "@msgpackr-extract/msgpackr-extract-linux-arm64": ["@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg=="], + "@marijn/find-cluster-break": ["@marijn/find-cluster-break@1.0.3", "", {}, "sha512-FY+MKLBoTsLNJF/eLWaOsXGdz6uh3Iu1axjPf6TUq92IYumcTcXWHoS747JARLkcdlJ/Waiaxc5wQfFO8jC6NA=="], - "@msgpackr-extract/msgpackr-extract-linux-x64": ["@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3", "", { "os": "linux", "cpu": "x64" }, "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg=="], + "@mdx-js/esbuild": ["@mdx-js/esbuild@3.1.1", "", { "dependencies": { "@mdx-js/mdx": "^3.0.0", "@types/unist": "^3.0.0", "source-map": "^0.7.0", "vfile": "^6.0.0", "vfile-message": "^4.0.0" }, "peerDependencies": { "esbuild": ">=0.14.0" } }, "sha512-NS35VhTdvKNj5/B1JSD5W3kN1R0WDHgk+zCWq+tSChQw5L2Bgeiz7yyZPFrc5LWuPVOxE1xMbJr82bO9VVzmfQ=="], - "@msgpackr-extract/msgpackr-extract-win32-x64": ["@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3", "", { "os": "win32", "cpu": "x64" }, "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ=="], + "@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="], - "@nodable/entities": ["@nodable/entities@3.0.0", "", {}, "sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw=="], + "@mermaid-js/parser": ["@mermaid-js/parser@1.2.0", "", { "dependencies": { "@chevrotain/types": "~11.1.2" } }, "sha512-oYPyv8A4As1yH5Bx+04iQEQxXuIQDe0GKCNSRgao6z8AM9jixXIfP0vsppRLvGf+nKIOb9/LdpWA4YuJiVvESA=="], - "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + "@microsoft/fetch-event-source": ["@microsoft/fetch-event-source@2.0.1", "", {}, "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA=="], - "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + "@milkdown/components": ["@milkdown/components@7.21.2", "", { "dependencies": { "@floating-ui/dom": "^1.5.1", "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/exception": "7.21.2", "@milkdown/plugin-diff": "7.21.2", "@milkdown/plugin-tooltip": "7.21.2", "@milkdown/preset-commonmark": "7.21.2", "@milkdown/preset-gfm": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/transformer": "7.21.2", "@milkdown/utils": "7.21.2", "@types/lodash-es": "^4.17.12", "clsx": "^2.0.0", "dompurify": "^3.2.5", "lodash-es": "^4.17.21", "nanoid": "^5.0.9", "unist-util-visit": "^5.0.0", "vue": "^3.5.20" }, "peerDependencies": { "@codemirror/language": "^6", "@codemirror/state": "^6", "@codemirror/view": "^6" } }, "sha512-u3eCgRAnJgglZtJ6m5g09OF3SFPOagCe3xFvqtXRaUdX0/7E9z3hOvXkuisZNQUEF9623qwT/zNhK2rctvuFrg=="], - "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + "@milkdown/core": ["@milkdown/core@7.21.2", "", { "dependencies": { "@milkdown/ctx": "7.21.2", "@milkdown/exception": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/transformer": "7.21.2", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.3" } }, "sha512-b9xrcN9g+o05skEc4O78vGPvwJm1sbfqIPROncZH2vSE/lOIcp9AR1SdqveWmhymd/QILgTzW9WsnJfgQkGMXQ=="], - "@opentelemetry/api": ["@opentelemetry/api@1.9.1", "", {}, "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q=="], + "@milkdown/crepe": ["@milkdown/crepe@7.21.2", "", { "dependencies": { "@codemirror/commands": "^6.2.4", "@codemirror/language": "^6.10.1", "@codemirror/language-data": "^6.3.1", "@codemirror/state": "^6.4.1", "@codemirror/theme-one-dark": "^6.1.2", "@codemirror/view": "^6.16.0", "@milkdown/kit": "7.21.2", "@types/lodash-es": "^4.17.12", "clsx": "^2.0.0", "codemirror": "^6.0.1", "dompurify": "^3.2.5", "katex": "^0.17.0", "lodash-es": "^4.17.21", "prosemirror-virtual-cursor": "^0.4.2", "remark-math": "^6.0.0", "unist-util-visit": "^5.0.0", "vue": "^3.5.20" } }, "sha512-3BaEADeWxVYTn6TwromOKnu/m5GLJvIKGl4VlHJ9dVpdh7VLEwLbggfw5nweQmpnGWEaqyDplk2uPH0xK5MMhg=="], - "@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.213.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-zRM5/Qj6G84Ej3F1yt33xBVY/3tnMxtL1fiDIxYbDWYaZ/eudVw3/PBiZ8G7JwUxXxjW8gU4g6LnOyfGKYHYgw=="], + "@milkdown/ctx": ["@milkdown/ctx@7.21.2", "", { "dependencies": { "@milkdown/exception": "7.21.2" } }, "sha512-dqiA0GeERv86QEde+ZvxqBy4cDmfAsfLTIpi10doFJLKLerei23TVb5lHD8/CGUVqpS995MTu3dAFRBs9C0q5Q=="], - "@opentelemetry/configuration": ["@opentelemetry/configuration@0.217.0", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "yaml": "^2.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0" } }, "sha512-xCtrYOhBqdy6ZOMfe0Oa73ZKF+2LMhoOv4L5vmwAHVvOXUg+V3fvKuEIr9ZyD0Ow+vxllEjWO6PV1wd0DOtyvw=="], + "@milkdown/exception": ["@milkdown/exception@7.21.2", "", {}, "sha512-/6QkN1XmEtVHe5XhPm87lCUtV9qQNRHuAhxki/wtF+10vAeq8xOBW9/S5Kv/zpS9DSgdM/Ce+BPO3+yT1FIvWg=="], - "@opentelemetry/context-async-hooks": ["@opentelemetry/context-async-hooks@2.6.1", "", { "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-XHzhwRNkBpeP8Fs/qjGrAf9r9PRv67wkJQ/7ZPaBQQ68DYlTBBx5MF9LvPx7mhuXcDessKK2b+DcxqwpgkcivQ=="], + "@milkdown/kit": ["@milkdown/kit@7.21.2", "", { "dependencies": { "@milkdown/components": "7.21.2", "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/exception": "7.21.2", "@milkdown/plugin-block": "7.21.2", "@milkdown/plugin-clipboard": "7.21.2", "@milkdown/plugin-cursor": "7.21.2", "@milkdown/plugin-diff": "7.21.2", "@milkdown/plugin-history": "7.21.2", "@milkdown/plugin-indent": "7.21.2", "@milkdown/plugin-listener": "7.21.2", "@milkdown/plugin-slash": "7.21.2", "@milkdown/plugin-streaming": "7.21.2", "@milkdown/plugin-tooltip": "7.21.2", "@milkdown/plugin-trailing": "7.21.2", "@milkdown/plugin-upload": "7.21.2", "@milkdown/preset-commonmark": "7.21.2", "@milkdown/preset-gfm": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/transformer": "7.21.2", "@milkdown/utils": "7.21.2" } }, "sha512-93E5PgJgQXTwn0N8xSmk3Y6+oVvMMQYDV3HF22ZNE8tFVRLOz3vMLJFfxncxY0CONadCpreoOT3Ut+p9JYjySA=="], - "@opentelemetry/core": ["@opentelemetry/core@2.7.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-QAqIj32AtK6+pEVNG7EOVxHdE06RP+FM5qpiEJ4RtDcFIqKUZHYhl7/7UY5efhwmwNAg7j8QbJVBLxMerc0+gw=="], + "@milkdown/plugin-block": ["@milkdown/plugin-block@7.21.2", "", { "dependencies": { "@floating-ui/dom": "^1.5.1", "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2", "@types/lodash-es": "^4.17.12", "lodash-es": "^4.17.21" } }, "sha512-ZAv3QSr9J8+U4u8SVPcKeVeMmSA9OrrwS6jeY4YP/k6OxPfGK7H5+i6qW73gDxXvRzTGMSyTuFOdX4tgcXnV9A=="], - "@opentelemetry/exporter-logs-otlp-grpc": ["@opentelemetry/exporter-logs-otlp-grpc@0.217.0", "", { "dependencies": { "@grpc/grpc-js": "^1.14.3", "@opentelemetry/core": "2.7.1", "@opentelemetry/otlp-exporter-base": "0.217.0", "@opentelemetry/otlp-grpc-exporter-base": "0.217.0", "@opentelemetry/otlp-transformer": "0.217.0", "@opentelemetry/sdk-logs": "0.217.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-vC5S0Dc+noxD86CVtNu1+awCHPA5Kewi1Sg23ps+9lh4YifwsKXh3pe4XTNEKtUJiAcjpJ5dqStGakLbrSE+YQ=="], + "@milkdown/plugin-clipboard": ["@milkdown/plugin-clipboard@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2" } }, "sha512-Noc4rFpVzHvzjNaIKLhvzX2DEeyjWCTzDZR9k6B/0wgD0ZiZSGDnnq8op1Is1s5NjFq6UpCeZtXfs8HuLxbgFA=="], - "@opentelemetry/exporter-logs-otlp-http": ["@opentelemetry/exporter-logs-otlp-http@0.217.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.217.0", "@opentelemetry/core": "2.7.1", "@opentelemetry/otlp-exporter-base": "0.217.0", "@opentelemetry/otlp-transformer": "0.217.0", "@opentelemetry/sdk-logs": "0.217.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-KfLAdt1uilVE+3FxbgVnp2ZrzqbIawzcesnRoi+Kh9ckB5Ld5D8btUgoBvwTbdmuNx1j6b132Wsh72azq+pPNQ=="], + "@milkdown/plugin-cursor": ["@milkdown/plugin-cursor@7.21.2", "", { "dependencies": { "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2", "prosemirror-drop-indicator": "^0.1.0" } }, "sha512-PDENEK8mZ44YTfQyR5fuqVk5ZF8CJLdYpcavcorfhtvVx+3ZpQodDz0q7o42kE17jEMXCfsL/t2gUHxOp3pPIw=="], - "@opentelemetry/exporter-logs-otlp-proto": ["@opentelemetry/exporter-logs-otlp-proto@0.217.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.217.0", "@opentelemetry/core": "2.7.1", "@opentelemetry/otlp-exporter-base": "0.217.0", "@opentelemetry/otlp-transformer": "0.217.0", "@opentelemetry/resources": "2.7.1", "@opentelemetry/sdk-logs": "0.217.0", "@opentelemetry/sdk-trace-base": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-Se0GG/ZO24mQTlQj7zprR4pNI0nKe4lPDPBsuJmi6508b9TlZEuUd3EfyuHk6oJxzL7fGyDFYAbxNigQvRP2ZQ=="], + "@milkdown/plugin-diff": ["@milkdown/plugin-diff@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/transformer": "7.21.2", "@milkdown/utils": "7.21.2" } }, "sha512-I1aLHTAcKk04MFDA/RmhRYPY4kHoSjZf9yoCxl5eNYi3PtOzJ2aoKcBi/uNbU0TG+MoJc/DKizVcaI1t4jyAWg=="], - "@opentelemetry/exporter-metrics-otlp-grpc": ["@opentelemetry/exporter-metrics-otlp-grpc@0.217.0", "", { "dependencies": { "@grpc/grpc-js": "^1.14.3", "@opentelemetry/core": "2.7.1", "@opentelemetry/exporter-metrics-otlp-http": "0.217.0", "@opentelemetry/otlp-exporter-base": "0.217.0", "@opentelemetry/otlp-grpc-exporter-base": "0.217.0", "@opentelemetry/otlp-transformer": "0.217.0", "@opentelemetry/resources": "2.7.1", "@opentelemetry/sdk-metrics": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-0GpJKnCoVaVA1rKBMVPHziznfOQlXgH72S9ktjBAF1AnAVPzX7vVEBGrhwiSxxHDAiefXk+J8znApsMb/K6Z3w=="], + "@milkdown/plugin-history": ["@milkdown/plugin-history@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2" } }, "sha512-iymGm2fm/desC0tAukz3ubHZ7KSj0UFvHZTY8H55IzPnRLsVErnGFOZ5l/VFeHQI4xoBq+NWUBuPFFF4ApxBlw=="], - "@opentelemetry/exporter-metrics-otlp-http": ["@opentelemetry/exporter-metrics-otlp-http@0.217.0", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/otlp-exporter-base": "0.217.0", "@opentelemetry/otlp-transformer": "0.217.0", "@opentelemetry/resources": "2.7.1", "@opentelemetry/sdk-metrics": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-1zkMzzhiNJdVmLxuwkltqWGw4fOOam47bqRxmuQNjyKJe/9NmY5cIrZ4kiQV7sVGxoOgT0ZvGUfLcjvtpC/b9Q=="], + "@milkdown/plugin-indent": ["@milkdown/plugin-indent@7.21.2", "", { "dependencies": { "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2" } }, "sha512-CY7lOWZPckjgsLPhMKa/96lNSbr1Bf5xT8sUQ+rC6Vv1PgRy63R8dTO+99xuHTmZp7XZm33cuswEW7VJuPFA4g=="], - "@opentelemetry/exporter-metrics-otlp-proto": ["@opentelemetry/exporter-metrics-otlp-proto@0.217.0", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/exporter-metrics-otlp-http": "0.217.0", "@opentelemetry/otlp-exporter-base": "0.217.0", "@opentelemetry/otlp-transformer": "0.217.0", "@opentelemetry/resources": "2.7.1", "@opentelemetry/sdk-metrics": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-nfxt/KxVGFkjkO/M+58y1ugHu/dwPtxG4eYq0KApcQ7xk5CHzhdn+IuLZfDSvNDrJ3Uy5q++Fj/wbK7i8yryfQ=="], + "@milkdown/plugin-listener": ["@milkdown/plugin-listener@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@types/lodash-es": "^4.17.12", "lodash-es": "^4.17.21" } }, "sha512-CyVNlB5uyQlH7aAX1kBKF3O+2zATGwXmjWZ7qFLNyII+31Wv4jshAzxHSIBi4qrIWbqBEbT72j2OQTOCdRNLOA=="], - "@opentelemetry/exporter-prometheus": ["@opentelemetry/exporter-prometheus@0.217.0", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/sdk-metrics": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-U9MCXxJu0sBCh5aEkylYRR4xVIL8D1CW6dGwvYXbfFr0qveSorfD0XJchCAWoW6QfAAIcY/yxjf4Dj8OgkHBPw=="], + "@milkdown/plugin-slash": ["@milkdown/plugin-slash@7.21.2", "", { "dependencies": { "@floating-ui/dom": "^1.5.1", "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2", "@types/lodash-es": "^4.17.12", "lodash-es": "^4.17.21" } }, "sha512-da8UxNr73UC/32BQNZnWaalj0HjZIH2zIA6k7fHEgwwSXq3/aAgPc8x80/toHyVBMeeNA0hEcEobJLvEGFYV7g=="], - "@opentelemetry/exporter-trace-otlp-grpc": ["@opentelemetry/exporter-trace-otlp-grpc@0.217.0", "", { "dependencies": { "@grpc/grpc-js": "^1.14.3", "@opentelemetry/core": "2.7.1", "@opentelemetry/otlp-exporter-base": "0.217.0", "@opentelemetry/otlp-grpc-exporter-base": "0.217.0", "@opentelemetry/otlp-transformer": "0.217.0", "@opentelemetry/resources": "2.7.1", "@opentelemetry/sdk-trace-base": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-fPZs2fw7veLH3pEKu8vSepUa2fQpAE2P7al6qU10aH9GrEJJ8YaPgsd5xON7by5rbcEVS71FOU2aWyK6nzB7VQ=="], + "@milkdown/plugin-streaming": ["@milkdown/plugin-streaming@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/plugin-diff": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2" } }, "sha512-gWuMAz4HStGDdtQ2Al9pr35RXk2MzZonJy1ODFuzmFImLpBDAWJaEZkigFWQXijGff00IvS3nkXJSWZQBOesJg=="], - "@opentelemetry/exporter-trace-otlp-http": ["@opentelemetry/exporter-trace-otlp-http@0.217.0", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/otlp-exporter-base": "0.217.0", "@opentelemetry/otlp-transformer": "0.217.0", "@opentelemetry/resources": "2.7.1", "@opentelemetry/sdk-trace-base": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-38YQoqtYjglz2GV94LGUN/djLvxtvGIQO68o6qAFPVshjmwSdX1F2i0c7vn3lEl1L5B/YqjB/bgKXaVx7KO+RQ=="], + "@milkdown/plugin-tooltip": ["@milkdown/plugin-tooltip@7.21.2", "", { "dependencies": { "@floating-ui/dom": "^1.5.1", "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2", "@types/lodash-es": "^4.17.12", "lodash-es": "^4.17.21" } }, "sha512-L8123LL4sv2nsSUN86dwmF9NXwH+TZFaS6bt7Dd43DjZgxb+HMfpDJCLEA9f4zrJgDUr1Tis501WZvQGzPMrTQ=="], - "@opentelemetry/exporter-trace-otlp-proto": ["@opentelemetry/exporter-trace-otlp-proto@0.217.0", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/otlp-exporter-base": "0.217.0", "@opentelemetry/otlp-transformer": "0.217.0", "@opentelemetry/resources": "2.7.1", "@opentelemetry/sdk-trace-base": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-nPV8gKHUiSuTZpQcnZU3/pBlK7crSyEGpZuh5MtWySB0vv6NNG0QvvfKitQt+Fc2Mc6qfyU54KlZcurwoTbrVg=="], + "@milkdown/plugin-trailing": ["@milkdown/plugin-trailing@7.21.2", "", { "dependencies": { "@milkdown/ctx": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2" } }, "sha512-G0hZs94ZwXsZ+skpuitLjBeAFt/3JJz4B4A5pE18xGruEZ2LAObhJ7+Y8sGgcAQvMfl3LcTbuggv3uU5Pr5xxA=="], - "@opentelemetry/exporter-zipkin": ["@opentelemetry/exporter-zipkin@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/sdk-trace-base": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" } }, "sha512-mfsD9bKAxcKrh5+y08TPodvClBO0CznBE3p79YAGnO81WI4LrdsGA65T53e4iTSbCalW4WaUpkbeJcbpyIUHfg=="], + "@milkdown/plugin-upload": ["@milkdown/plugin-upload@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/exception": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/utils": "7.21.2" } }, "sha512-g3c0IXlZSJ9Bcg+iFzAHJ5lLHc6YHf6r1Wl8IQAIXWMh8G4p9N7yXoYknLuZGyT//7s1/mzcc/UI1Yq7kCGNWg=="], - "@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.217.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.217.0", "import-in-the-middle": "^3.0.0", "require-in-the-middle": "^8.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-24ucQMjz7Y34Kw3trbxL2ZrssbtgWnR+Clpaa+YdeWuuyH3Cvk23Q03PcQvqiZrDvt8AmQmjgg9v6Y9PHoxG7w=="], + "@milkdown/preset-commonmark": ["@milkdown/preset-commonmark@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/exception": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/transformer": "7.21.2", "@milkdown/utils": "7.21.2", "remark-inline-links": "^7.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1" } }, "sha512-LpPltwT+2ywK0EufhEAm+YnMaTqohaIdiarDDVfvMjVz7cF3ciXOa2/SOsYK76+/vbyQaUizuIG0sooxYDpHqg=="], - "@opentelemetry/instrumentation-http": ["@opentelemetry/instrumentation-http@0.217.0", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/instrumentation": "0.217.0", "@opentelemetry/semantic-conventions": "^1.29.0", "forwarded-parse": "2.1.2" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-B88Y7k5A9a60pHUboFoeJlgVwXq2T0rsZKj6dTwzSMKSOsNXR4Jz5ovwprVn3kHLAZrkyLEjQtBJ34DYHs1U4Q=="], + "@milkdown/preset-gfm": ["@milkdown/preset-gfm@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/exception": "7.21.2", "@milkdown/preset-commonmark": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/transformer": "7.21.2", "@milkdown/utils": "7.21.2", "prosemirror-safari-ime-span": "^1.0.1", "remark-gfm": "^4.0.1" } }, "sha512-t39W/o2KzCCNdFu9D1GSsSsuEQSCCwM5YQjj16HaHjtUryScjy4epEyXoMffXfT2FOF5oiTdBf+HukvzKFaoqA=="], - "@opentelemetry/otlp-exporter-base": ["@opentelemetry/otlp-exporter-base@0.217.0", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/otlp-transformer": "0.217.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-eYfqnB3UhKu/5frhd1R6+FprKygbhkomuaceMXDyzxbfXB9tKgZOVmjaJ02CkLA6Tdzumxl+e2H+vo2a8jiMPQ=="], + "@milkdown/prose": ["@milkdown/prose@7.21.2", "", { "dependencies": { "@milkdown/exception": "7.21.2", "prosemirror-changeset": "^2.3.1", "prosemirror-commands": "^1.7.1", "prosemirror-dropcursor": "^1.8.2", "prosemirror-gapcursor": "^1.4.0", "prosemirror-history": "^1.5.0", "prosemirror-inputrules": "^1.5.1", "prosemirror-keymap": "^1.2.3", "prosemirror-model": "^1.25.4", "prosemirror-schema-list": "^1.5.1", "prosemirror-state": "^1.4.4", "prosemirror-tables": "^1.8.1", "prosemirror-transform": "^1.10.5", "prosemirror-view": "^1.41.3" } }, "sha512-ufnHhRaevLbqISBpOA5Rl4+S66n+h0JRfoZw2j/WyJ1eBNHg42xoQNXUEI9YiP/GoQPKeOitKux50GpafyNtQw=="], - "@opentelemetry/otlp-grpc-exporter-base": ["@opentelemetry/otlp-grpc-exporter-base@0.217.0", "", { "dependencies": { "@grpc/grpc-js": "^1.14.3", "@opentelemetry/core": "2.7.1", "@opentelemetry/otlp-exporter-base": "0.217.0", "@opentelemetry/otlp-transformer": "0.217.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-7RTAdZuOsCDnsyqTCG4+bDzrfnsWdzkRs7z0AVi/V3tEQx0oKeyc+OuRWYxnRsmaJXgxcmB8vb/lfxn58Dj6Ag=="], + "@milkdown/transformer": ["@milkdown/transformer@7.21.2", "", { "dependencies": { "@milkdown/exception": "7.21.2", "@milkdown/prose": "7.21.2", "remark": "^15.0.1", "unified": "^11.0.3" } }, "sha512-j2VQ6baKy6b6rAo/yo00YwSsWHoW0sqgwRTDqSCwXW8dgdFtl4M2i/73exRLcRQ4MvDOHrSqGS5RcRz+fzPOeQ=="], - "@opentelemetry/otlp-transformer": ["@opentelemetry/otlp-transformer@0.217.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.217.0", "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/sdk-logs": "0.217.0", "@opentelemetry/sdk-metrics": "2.7.1", "@opentelemetry/sdk-trace-base": "2.7.1", "protobufjs": "8.0.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-MKK8UHKFUOGAvbZRWh90MhwHG+Fxm6OROBdjKPCF+HQobjuJ/Kuf8Chs8CR45X1aqotxrMj7OxTdsXe8sXuGVA=="], + "@milkdown/utils": ["@milkdown/utils@7.21.2", "", { "dependencies": { "@milkdown/core": "7.21.2", "@milkdown/ctx": "7.21.2", "@milkdown/exception": "7.21.2", "@milkdown/prose": "7.21.2", "@milkdown/transformer": "7.21.2", "nanoid": "^5.0.9" } }, "sha512-m1ZJDnh+/tnIBxLhh5euNGr1WXvsGnJkaGctsd/an5+73HqHOdtWD6L7oJF8+DQG4Kksr4WPNNZutqYGb6OAxw=="], - "@opentelemetry/propagator-b3": ["@opentelemetry/propagator-b3@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-RJid6E2CKyeGfKBzXKF21ejabGMHypFkPAh3qZ+NvI+SGjuIye79t3PmiqcDgtRzdKH6ynXzbfslQ8DfpRUg2A=="], + "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.29.0", "", { "dependencies": { "@hono/node-server": "^1.19.9", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ=="], - "@opentelemetry/propagator-jaeger": ["@opentelemetry/propagator-jaeger@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-KMjVBHzP4N60bOzxja76M1F1hZZ43lGPga5ix+mkv9+kk1nx9SbkxSvJsMbuVUxdPQmsPTqGShmhN8ulrMOg6Q=="], + "@modelcontextprotocol/server": ["@modelcontextprotocol/server@2.0.0-alpha.2", "", { "dependencies": { "zod": "^4.0" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-gmLgdHzlYM8L7Aw/+VE0kxjT25WKamtUSLNhdOgrJq5CrESvqVSoAfWSJJeNPUXNTluQ+dYDGFbKVitdsJtbPA=="], - "@opentelemetry/resources": ["@opentelemetry/resources@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-DeT6KKolmC4e/dRQvMQ/RwlnzhaqeiFOXY5ngoOPJ07GgVVKxZOg9EcrNZb5aTzUn+iCrJldAgOfQm1O/QfPAQ=="], + "@msgpackr-extract/msgpackr-extract-darwin-arm64": ["@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ=="], - "@opentelemetry/sdk-logs": ["@opentelemetry/sdk-logs@0.213.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.213.0", "@opentelemetry/core": "2.6.0", "@opentelemetry/resources": "2.6.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, "sha512-00xlU3GZXo3kXKve4DLdrAL0NAFUaZ9appU/mn00S/5kSUdAvyYsORaDUfR04Mp2CLagAOhrzfUvYozY/EZX2g=="], + "@msgpackr-extract/msgpackr-extract-darwin-x64": ["@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-zExlW9zUJKZH/tOtVMttwjKa4Xm/3KcNjnE3dPN92uCktwavMxpgCA3MoJK/DOnTWsQgo224OaST27/mPNAf+w=="], - "@opentelemetry/sdk-metrics": ["@opentelemetry/sdk-metrics@2.6.1", "", { "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/resources": "2.6.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, "sha512-9t9hJHX15meBy2NmTJxL+NJfXmnausR2xUDvE19XQce0Qi/GBtDGamU8nS1RMbdgDmhgpm3VaOu2+fiS/SfTpQ=="], + "@msgpackr-extract/msgpackr-extract-linux-arm": ["@msgpackr-extract/msgpackr-extract-linux-arm@3.0.4", "", { "os": "linux", "cpu": "arm" }, "sha512-Tg3yX65f5GbtXLkrYEHE5oibZG9epyYWas7FogTTEJeDEF9JlXJzKgXaNhT3UXlTOeA+AfZpYZYZ0uPj7Cfquw=="], - "@opentelemetry/sdk-node": ["@opentelemetry/sdk-node@0.217.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.217.0", "@opentelemetry/configuration": "0.217.0", "@opentelemetry/context-async-hooks": "2.7.1", "@opentelemetry/core": "2.7.1", "@opentelemetry/exporter-logs-otlp-grpc": "0.217.0", "@opentelemetry/exporter-logs-otlp-http": "0.217.0", "@opentelemetry/exporter-logs-otlp-proto": "0.217.0", "@opentelemetry/exporter-metrics-otlp-grpc": "0.217.0", "@opentelemetry/exporter-metrics-otlp-http": "0.217.0", "@opentelemetry/exporter-metrics-otlp-proto": "0.217.0", "@opentelemetry/exporter-prometheus": "0.217.0", "@opentelemetry/exporter-trace-otlp-grpc": "0.217.0", "@opentelemetry/exporter-trace-otlp-http": "0.217.0", "@opentelemetry/exporter-trace-otlp-proto": "0.217.0", "@opentelemetry/exporter-zipkin": "2.7.1", "@opentelemetry/instrumentation": "0.217.0", "@opentelemetry/otlp-exporter-base": "0.217.0", "@opentelemetry/propagator-b3": "2.7.1", "@opentelemetry/propagator-jaeger": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/sdk-logs": "0.217.0", "@opentelemetry/sdk-metrics": "2.7.1", "@opentelemetry/sdk-trace-base": "2.7.1", "@opentelemetry/sdk-trace-node": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-K/60pSv42+NQiZKy1pAH18nYDkxltsDV4O3SJ233J0E9raU1ksyL9gsKuS8p30bYBb4AMPCfDuutHQaHYpcv0Q=="], + "@msgpackr-extract/msgpackr-extract-linux-arm64": ["@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-dgX0P/9wGPJeHFBG+ZmhgE6bmtMt7NP5CRBGyyktpopdk/mW4POnrpQsSLtKI1dwpc+pPLuXHDh6vvskyQE/sw=="], - "@opentelemetry/sdk-trace": ["@opentelemetry/sdk-trace@2.9.0", "", { "dependencies": { "@opentelemetry/core": "2.9.0", "@opentelemetry/resources": "2.9.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-sGA19HvtrrSKYsseHphluH6j3p6Xa3fqc7c7y8f/7mYWejc1lyDFcpSdD1kYa50HCLUeEo4zA5bW0pniaPszuw=="], + "@msgpackr-extract/msgpackr-extract-linux-x64": ["@msgpackr-extract/msgpackr-extract-linux-x64@3.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-8TNXMEjJc3QEy7R/x1INhgiU+XakDAFUzBhaz7+Rbrs8NH5UQeHQxxmzsSBJGyV6I1jW79undiQm8tOI+D+8FQ=="], - "@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@2.9.0", "", { "dependencies": { "@opentelemetry/core": "2.9.0", "@opentelemetry/resources": "2.9.0", "@opentelemetry/sdk-trace": "2.9.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-cp9zmTl62R8PJrpvFcmc8N2JQU/xfa0S+61q511Nji+QxCfZ8Ifvg7H27G8cANe4crg4RTrWsVvanHiXjSp6ag=="], + "@msgpackr-extract/msgpackr-extract-win32-x64": ["@msgpackr-extract/msgpackr-extract-win32-x64@3.0.4", "", { "os": "win32", "cpu": "x64" }, "sha512-CmCXPQrkbwExx3j946/PtHWHbYJiCRBRDl4BlkRQcJB/YOwQxJRTpoo7aTsortjgoJ1x7opzTSxn7C+ASSLVjQ=="], - "@opentelemetry/sdk-trace-node": ["@opentelemetry/sdk-trace-node@2.6.1", "", { "dependencies": { "@opentelemetry/context-async-hooks": "2.6.1", "@opentelemetry/core": "2.6.1", "@opentelemetry/sdk-trace-base": "2.6.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-Hh2i4FwHWRFhnO2Q/p6svMxy8MPsNCG0uuzUY3glqm0rwM0nQvbTO1dXSp9OqQoTKXcQzaz9q1f65fsurmOhNw=="], + "@ocavue/utils": ["@ocavue/utils@1.7.0", "", {}, "sha512-yEk9ATNBjTZTtuVFMB/MAIF6zJBvJ2+lVNQvK2+O+ggEBGTgx2tp27d4FPgmD5bRsNHHP3D0SleQia/bvIeV8w=="], - "@opentelemetry/sdk-trace-web": ["@opentelemetry/sdk-trace-web@2.6.1", "", { "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/sdk-trace-base": "2.6.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-JQevIjBlWGcKBfuwe7tdxGR/75RERsf1OOIvUzPKq86J8qhzkyjnLTTuPNPLRQF1xxEe65W5aI1Uwl6yWUGPQQ=="], + "@opentelemetry/api": ["@opentelemetry/api@1.9.1", "", {}, "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q=="], "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.40.0", "", {}, "sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw=="], @@ -345,62 +345,12 @@ "@opentui/react": ["@opentui/react@0.4.3", "", { "dependencies": { "@opentui/core": "0.4.3", "react-reconciler": "^0.33.0" }, "peerDependencies": { "react": ">=19.2.0", "react-devtools-core": "^7.0.1", "ws": "^8.18.0" } }, "sha512-HtC/+lMURaZlifiJNVsn84YqKMywXQmkeSNbUTlbbeS6YM6reahaacnZEYZdnEUgklO6+r/J1tG8UBhqO26X7Q=="], - "@parcel/watcher": ["@parcel/watcher@2.5.6", "", { "dependencies": { "detect-libc": "^2.0.3", "is-glob": "^4.0.3", "node-addon-api": "^7.0.0", "picomatch": "^4.0.3" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.6", "@parcel/watcher-darwin-arm64": "2.5.6", "@parcel/watcher-darwin-x64": "2.5.6", "@parcel/watcher-freebsd-x64": "2.5.6", "@parcel/watcher-linux-arm-glibc": "2.5.6", "@parcel/watcher-linux-arm-musl": "2.5.6", "@parcel/watcher-linux-arm64-glibc": "2.5.6", "@parcel/watcher-linux-arm64-musl": "2.5.6", "@parcel/watcher-linux-x64-glibc": "2.5.6", "@parcel/watcher-linux-x64-musl": "2.5.6", "@parcel/watcher-win32-arm64": "2.5.6", "@parcel/watcher-win32-ia32": "2.5.6", "@parcel/watcher-win32-x64": "2.5.6" } }, "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ=="], - - "@parcel/watcher-android-arm64": ["@parcel/watcher-android-arm64@2.5.6", "", { "os": "android", "cpu": "arm64" }, "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A=="], - - "@parcel/watcher-darwin-arm64": ["@parcel/watcher-darwin-arm64@2.5.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA=="], - - "@parcel/watcher-darwin-x64": ["@parcel/watcher-darwin-x64@2.5.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg=="], - - "@parcel/watcher-freebsd-x64": ["@parcel/watcher-freebsd-x64@2.5.6", "", { "os": "freebsd", "cpu": "x64" }, "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng=="], - - "@parcel/watcher-linux-arm-glibc": ["@parcel/watcher-linux-arm-glibc@2.5.6", "", { "os": "linux", "cpu": "arm" }, "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ=="], - - "@parcel/watcher-linux-arm-musl": ["@parcel/watcher-linux-arm-musl@2.5.6", "", { "os": "linux", "cpu": "arm" }, "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg=="], - - "@parcel/watcher-linux-arm64-glibc": ["@parcel/watcher-linux-arm64-glibc@2.5.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA=="], - - "@parcel/watcher-linux-arm64-musl": ["@parcel/watcher-linux-arm64-musl@2.5.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA=="], - - "@parcel/watcher-linux-x64-glibc": ["@parcel/watcher-linux-x64-glibc@2.5.6", "", { "os": "linux", "cpu": "x64" }, "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ=="], - - "@parcel/watcher-linux-x64-musl": ["@parcel/watcher-linux-x64-musl@2.5.6", "", { "os": "linux", "cpu": "x64" }, "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg=="], - - "@parcel/watcher-win32-arm64": ["@parcel/watcher-win32-arm64@2.5.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q=="], - - "@parcel/watcher-win32-ia32": ["@parcel/watcher-win32-ia32@2.5.6", "", { "os": "win32", "cpu": "ia32" }, "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g=="], - - "@parcel/watcher-win32-x64": ["@parcel/watcher-win32-x64@2.5.6", "", { "os": "win32", "cpu": "x64" }, "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw=="], - "@pierre/diffs": ["@pierre/diffs@1.2.12", "", { "dependencies": { "@pierre/theme": "1.1.0", "@pierre/theming": "0.0.2", "@shikijs/transformers": "^3.0.0 || ^4.0.0", "diff": "9.0.0", "hast-util-to-html": "9.0.5", "lru_map": "0.4.1", "shiki": "^3.0.0 || ^4.0.0" }, "peerDependencies": { "react": "^18.3.1 || ^19.0.0", "react-dom": "^18.3.1 || ^19.0.0" } }, "sha512-pY/gmgWL03WnagqCyCnBi3QtRXUv4hCIY6FYqd5b1ZGaoI6a4Bsji8j+yRl2RfzPh/8Hf19rCl1GE80G6a1cLQ=="], "@pierre/theme": ["@pierre/theme@1.1.0", "", {}, "sha512-GC2OWTAfTIIWWYhPCygwG8t2EtePQkRfON4MI2rwIkJylmiyqIttJID2dCL8sUD8cNdEvYkEyfEHHKMeCiDLoQ=="], "@pierre/theming": ["@pierre/theming@0.0.2", "", { "peerDependencies": { "@pierre/theme": "^1.1.0", "@shikijs/themes": "^3.0.0 || ^4.0.0", "react": "^18.3.1 || ^19.0.0", "react-dom": "^18.3.1 || ^19.0.0", "shiki": "^3.0.0 || ^4.0.0" }, "optionalPeers": ["@pierre/theme", "@shikijs/themes", "react", "react-dom", "shiki"] }, "sha512-QM1M4stXfnzfaE8I8YbjXSApV8c+2dBsXJj8eYg9WTpBR/cTmCZIcfGnN4p13iRrYu2Br/R/OJfEL7uR8Qjctw=="], - "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], - - "@protobufjs/aspromise": ["@protobufjs/aspromise@1.1.2", "", {}, "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="], - - "@protobufjs/base64": ["@protobufjs/base64@1.1.2", "", {}, "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="], - - "@protobufjs/codegen": ["@protobufjs/codegen@2.0.5", "", {}, "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g=="], - - "@protobufjs/eventemitter": ["@protobufjs/eventemitter@1.1.1", "", {}, "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg=="], - - "@protobufjs/fetch": ["@protobufjs/fetch@1.1.1", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.1" } }, "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw=="], - - "@protobufjs/float": ["@protobufjs/float@1.0.2", "", {}, "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="], - - "@protobufjs/inquire": ["@protobufjs/inquire@1.1.2", "", {}, "sha512-pa0vFRuws4wkvaXKK1uXZMAwAX4/t8ANaJo45iw/oQHNQ9q5xUzwgFmVJGXiga2BeN+zpX7Vf9vmsiIa2J+MUw=="], - - "@protobufjs/path": ["@protobufjs/path@1.1.2", "", {}, "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="], - - "@protobufjs/pool": ["@protobufjs/pool@1.1.0", "", {}, "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="], - - "@protobufjs/utf8": ["@protobufjs/utf8@1.1.2", "", {}, "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug=="], - "@radix-ui/number": ["@radix-ui/number@1.1.2", "", {}, "sha512-ceTwaxc4I5IOi97DgCotl3pqiyRGvffcc0oOsE2dQYaJOFIDsDt4VWG6xEbg1QePv9QWausCEIppud/tJ1wNig=="], "@radix-ui/primitive": ["@radix-ui/primitive@1.1.5", "", {}, "sha512-d86WIWFYNtGA0H/d8exstrTRTp7eWJYlYJbtNofxr/3ljupZYn6EFDG/Qgu/0Kc8v7yMUxySagqJsL1+PdYjWg=="], @@ -521,6 +471,8 @@ "@radix-ui/rect": ["@radix-ui/rect@1.1.2", "", {}, "sha512-xnXE7wG13PI+cxieVssYXlQJuYVRhH9NBoxt3KNwzghDIA69GMm7d4wXRouHIYjE+KvS6U/MsMO73NdS2MH9ZA=="], + "@reduxjs/toolkit": ["@reduxjs/toolkit@2.12.0", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "@standard-schema/utils": "^0.3.0", "immer": "^11.0.0", "redux": "^5.0.1", "redux-thunk": "^3.1.0", "reselect": "^5.1.0" }, "peerDependencies": { "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" }, "optionalPeers": ["react", "react-redux"] }, "sha512-KiT+RzZbp6mQET+Mg+h2c97+9j1sNflUxQkIHI7Yuzf6Peu+OYpmkn6nbHWmLLWj+1ZODUJFwGZ7gx3L9R9EOw=="], + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.62.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A=="], "@scalar/openapi-types": ["@scalar/openapi-types@0.8.0", "", {}, "sha512-WmaxVSfvY5K/TwcG2B2TU1WOe1As1uc2s7myswtP6dBlcjU3hM08SApxv/jmyGaCE8t4gO5BBhmHY4pDUfmr2g=="], @@ -543,112 +495,110 @@ "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], - "@smithers-orchestrator/accounts": ["@smithers-orchestrator/accounts@0.28.0", "", { "dependencies": { "@smithers-orchestrator/errors": "0.28.0" } }, "sha512-imflica+9A5hIBMwP5WLGIuFymC3Of5bVwvqCYa4wM4jTtVFudtRAONybP4cAgU2E9V+5+AT8FUe0ODnRgpKHw=="], - - "@smithers-orchestrator/agents": ["@smithers-orchestrator/agents@0.28.0", "", { "dependencies": { "@ai-sdk/anthropic": "^4.0.5", "@ai-sdk/openai": "^4.0.5", "@modelcontextprotocol/sdk": "^1.29.0", "@smithers-orchestrator/driver": "0.28.0", "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/observability": "0.28.0", "ai": "^7.0.10", "effect": "3.21.4", "zod": "^4.4.3" } }, "sha512-60CgrJVfS4lRtuL5S2uzhObtPZJeVHt+GRk2x7Ty1VxeZ/M5/BcToQuEOwVCsPOstvpkwpxcsp9LXiV1HkLh/w=="], + "@smthrs/accounts": ["@smthrs/accounts@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0" } }, "sha512-8kxTIYCC+k+ONlKqhorhN6a2M106y/NA1tiEFM8lpjqJ5UKNumEE2Va07Xu14HLzRZVBSL0kBM7FGY4uxvtsbQ=="], - "@smithers-orchestrator/aws": ["@smithers-orchestrator/aws@0.28.0", "", { "dependencies": { "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/sandbox": "0.28.0" }, "optionalDependencies": { "@aws-sdk/client-cloudwatch-logs": "^3.700.0", "@aws-sdk/client-codebuild": "^3.700.0", "@aws-sdk/client-ecs": "^3.700.0", "@aws-sdk/client-s3": "^3.700.0" } }, "sha512-pWD6Ql0flidYx2ZFmA4EJD0+M2Wj703jVpExgNPSAxPDStanxcXMDVk5uU17bSiL96k1VL1cUcwMCHH2GoR6jg=="], + "@smthrs/agents": ["@smthrs/agents@0.33.0", "", { "dependencies": { "@ai-sdk/anthropic": "^4.0.5", "@ai-sdk/openai": "^4.0.5", "@modelcontextprotocol/sdk": "^1.29.0", "@smthrs/driver": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/observability": "0.33.0", "ai": "^7.0.10", "effect": "4.0.0-beta.102", "zod": "^4.4.3" } }, "sha512-dl8UFXLoQgkIse5Nlq1EdL47xFK4SLtdwQK4kPIAyRtzjvT1i8T+oGqscCeKWbJXt+Nd2T8UN/zJRcm5rTlpVw=="], - "@smithers-orchestrator/cli": ["@smithers-orchestrator/cli@0.28.0", "", { "dependencies": { "@clack/core": "^1.4.2", "@clack/prompts": "^1.6.0", "@effect/workflow": "^0.18.2", "@mdx-js/esbuild": "^3.1.1", "@modelcontextprotocol/sdk": "^1.29.0", "@opentui/core": "^0.4.2", "@opentui/react": "^0.4.2", "@pierre/diffs": "^1.2.11", "@smithers-orchestrator/accounts": "0.28.0", "@smithers-orchestrator/agents": "0.28.0", "@smithers-orchestrator/components": "0.28.0", "@smithers-orchestrator/db": "0.28.0", "@smithers-orchestrator/devtools": "0.28.0", "@smithers-orchestrator/driver": "0.28.0", "@smithers-orchestrator/engine": "0.28.0", "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/graph": "0.28.0", "@smithers-orchestrator/memory": "0.28.0", "@smithers-orchestrator/observability": "0.28.0", "@smithers-orchestrator/openapi": "0.28.0", "@smithers-orchestrator/protocol": "0.28.0", "@smithers-orchestrator/review": "0.28.0", "@smithers-orchestrator/scheduler": "0.28.0", "@smithers-orchestrator/scorers": "0.28.0", "@smithers-orchestrator/server": "0.28.0", "@smithers-orchestrator/time-travel": "0.28.0", "@smithers-orchestrator/tui": "0.28.0", "@smithers-orchestrator/usage": "0.28.0", "@smithers-orchestrator/vcs": "0.28.0", "@toon-format/toon": "2.3.0", "@xterm/addon-fit": "^0.11.0", "@xterm/xterm": "^6.0.0", "cron-parser": "^5.6.1", "drizzle-orm": "^0.45.2", "effect": "3.21.4", "incur": "^0.4.10", "picocolors": "^1.1.1", "react": "^19.2.7", "smithers-orchestrator": "0.28.0", "yaml": "^2.9.0", "zod": "^4.4.3" } }, "sha512-Osn7kTnf89lprRHdVRnanx6GZ6wob8QLIv4XDTeCbRs+ur3QKd72V+95lkO98n1DEN1ZI5DfVN+hN8gHp9m4tQ=="], + "@smthrs/aws": ["@smthrs/aws@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/sandbox": "0.33.0" }, "peerDependencies": { "@aws-sdk/client-cloudwatch-logs": "^3.700.0", "@aws-sdk/client-codebuild": "^3.700.0", "@aws-sdk/client-ecs": "^3.700.0", "@aws-sdk/client-s3": "^3.700.0" }, "optionalPeers": ["@aws-sdk/client-cloudwatch-logs", "@aws-sdk/client-codebuild", "@aws-sdk/client-ecs", "@aws-sdk/client-s3"] }, "sha512-AVxOll72h/i4uKUUqX2foN2xAazqvjj1/CylTrqfEtGo0NZ09/do1j4v5Md+GWjMrskyoquTIZ9DlOOnGVQVtA=="], - "@smithers-orchestrator/cloudflare": ["@smithers-orchestrator/cloudflare@0.28.0", "", { "dependencies": { "@smithers-orchestrator/sandbox": "0.28.0" }, "optionalDependencies": { "@cloudflare/sandbox": "^0.12.3" } }, "sha512-A3iBnv2RD9s5rS7jSO4hGdxt2lddhttDwWP38yUsW/knCEVDju6Pv+O9MfuhlpGrmgGpT5nDUjtA8bnBp7St0g=="], + "@smthrs/cli": ["@smthrs/cli@0.33.0", "", { "dependencies": { "@clack/core": "^1.4.2", "@clack/prompts": "^1.6.0", "@mdx-js/esbuild": "^3.1.1", "@modelcontextprotocol/sdk": "^1.29.0", "@opentui/core": "^0.4.2", "@opentui/react": "^0.4.2", "@pierre/diffs": "^1.2.11", "@smthrs/accounts": "0.33.0", "@smthrs/agents": "0.33.0", "@smthrs/components": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/devtools": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/engine": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/memory": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/openapi": "0.33.0", "@smthrs/protocol": "0.33.0", "@smthrs/review": "0.33.0", "@smthrs/scheduler": "0.33.0", "@smthrs/scorers": "0.33.0", "@smthrs/server": "0.33.0", "@smthrs/time-travel": "0.33.0", "@smthrs/tui": "0.33.0", "@smthrs/usage": "0.33.0", "@smthrs/vcs": "0.33.0", "@toon-format/toon": "2.3.0", "@xterm/addon-fit": "^0.11.0", "@xterm/xterm": "^6.0.0", "cron-parser": "^5.6.1", "drizzle-orm": "^0.45.2", "effect": "4.0.0-beta.102", "incur": "^0.4.10", "picocolors": "^1.1.1", "react": "^19.2.7", "smthrs": "0.33.0", "yaml": "^2.9.0", "zod": "^4.4.3" } }, "sha512-s7lRAfo5XLIIJO7y+mML4Y7XTpjzwaXpSmi7v7RVO7n1fALtxkxIJFftBiZZO4UYKxHS9hjmNOgKBnnAznLm2g=="], - "@smithers-orchestrator/components": ["@smithers-orchestrator/components@0.28.0", "", { "dependencies": { "@smithers-orchestrator/agents": "0.28.0", "@smithers-orchestrator/db": "0.28.0", "@smithers-orchestrator/driver": "0.28.0", "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/graph": "0.28.0", "@smithers-orchestrator/memory": "0.28.0", "@smithers-orchestrator/observability": "0.28.0", "@smithers-orchestrator/react-reconciler": "0.28.0", "@smithers-orchestrator/scheduler": "0.28.0", "bippy": "^0.5.42", "react": "^19.2.7", "react-dom": "^19.2.7", "zod": "^4.4.3" } }, "sha512-upn7Hy2w9vzzak3JZv7EvfwhZcm9Kzc841bScWkVyWPPHoAlR+7r1LKu75Idj2UsntIVzNCZWOB15Z4B856qSQ=="], + "@smthrs/cloudflare": ["@smthrs/cloudflare@0.33.0", "", { "dependencies": { "@smthrs/sandbox": "0.33.0" }, "peerDependencies": { "@cloudflare/sandbox": "^0.12.3" }, "optionalPeers": ["@cloudflare/sandbox"] }, "sha512-Go7B4psWVPXJu0YjseAT4xii1YMwfFWflpOMJJUPD6imYbf/frQ+WIkjHlscb3nnSq4X1bOJ0gxT4wOWXAthmQ=="], - "@smithers-orchestrator/control-plane": ["@smithers-orchestrator/control-plane@0.28.0", "", { "dependencies": { "@smithers-orchestrator/errors": "0.28.0" } }, "sha512-YD6+PmcU6PdcxfhjVgX3/53TYl9iWDK/PRJvB9D4MqEAQJYPEgMIa8oPkqlyfFd5TCL0PjH0UI8glZWqrBX3ug=="], + "@smthrs/components": ["@smthrs/components@0.33.0", "", { "dependencies": { "@smthrs/agents": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/memory": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/react-reconciler": "0.33.0", "@smthrs/scheduler": "0.33.0", "bippy": "^0.5.42", "react": "^19.2.7", "react-dom": "^19.2.7", "zod": "^4.4.3" } }, "sha512-vIEG5KHLJc1lYOfePrgvxaIjP2CTgOvAxQFk1Mn5AQ3l+w+D1OzBQUe92ybmHJVNnij7H/mL0vFFYi0zCw24Ow=="], - "@smithers-orchestrator/daytona": ["@smithers-orchestrator/daytona@0.28.0", "", { "dependencies": { "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/sandbox": "0.28.0" }, "optionalDependencies": { "@daytonaio/sdk": "^0.194.0" } }, "sha512-21/IKmRpe9l71UJ92FsXv8joLnU06QtWj9zL3pVC2r1g7n0MrFoAiodVKZVRoS18+6AJFpA8Jj8OFrAdLqJtWg=="], + "@smthrs/control-plane": ["@smthrs/control-plane@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0" } }, "sha512-O7vVm6E7oF7Y8xZW+ErjtI347+OCmQQMYIZeYQA4DCb00FbP1AwSfrAyUWEWXpEmg7d5abUL4yHskkc3XvyhSQ=="], - "@smithers-orchestrator/db": ["@smithers-orchestrator/db@0.28.0", "", { "dependencies": { "@effect/experimental": "^0.60.0", "@effect/sql": "^0.51.1", "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/graph": "0.28.0", "@smithers-orchestrator/observability": "0.28.0", "@smithers-orchestrator/scheduler": "0.28.0", "drizzle-orm": "^0.45.2", "drizzle-zod": "^0.8.3", "effect": "3.21.4", "zod": "^4.4.3" } }, "sha512-ofmD5v90zZKYH9kIW04cO+olKtWhFvNLKY2F5ArrOxmNot5ty5WBkW25Umb+6DLZso3mzLh8rqHe+RtlnENenQ=="], + "@smthrs/daytona": ["@smthrs/daytona@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/sandbox": "0.33.0" }, "peerDependencies": { "@daytonaio/sdk": "^0.194.0" }, "optionalPeers": ["@daytonaio/sdk"] }, "sha512-Dvksc+T29N1xla7ve2HrMs741ARNNqGl+Id5/YdT4SC5KeyVO3sbzsJ7bryRb14jo9qYlsr0RGDH2QWkqQsiDA=="], - "@smithers-orchestrator/devtools": ["@smithers-orchestrator/devtools@0.28.0", "", {}, "sha512-X6Hd3PPy/7oHyJoE3xD2yyPtlyKO1hchC4QvXRTcJWoHamlpRTzK7xwr5xRzVEz3es2QaIrt0laIJ386Ht16qw=="], + "@smthrs/db": ["@smthrs/db@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/scheduler": "0.33.0", "drizzle-orm": "^0.45.2", "drizzle-zod": "^0.8.3", "effect": "4.0.0-beta.102", "zod": "^4.4.3" } }, "sha512-/k1rtnvDdisC2nZg1R9Y4C+Ae1zWc4oNa3YLknUS/TWNFx01QniZlzfIgeQFbVeh2il6otYVt/n5w7pHTWOoFw=="], - "@smithers-orchestrator/driver": ["@smithers-orchestrator/driver@0.28.0", "", { "dependencies": { "@smithers-orchestrator/db": "0.28.0", "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/graph": "0.28.0", "@smithers-orchestrator/observability": "0.28.0", "@smithers-orchestrator/scheduler": "0.28.0", "effect": "3.21.4", "zod": "^4.4.3" } }, "sha512-D4xf3xurE549uu/nto5VQc8QGVCR6MctzuUW+CJocTnXqYvhHZEzcgdXQm0G1O8zgefssXXW3oAYbK4/bh0OJg=="], + "@smthrs/devtools": ["@smthrs/devtools@0.33.0", "", {}, "sha512-8BQlLk4c8DYiEEC27FJ5WZtrwG1cODHFmOuzN/bWnkhogY/B+MqXrEcOQdMMYsVtnrxacBiakZiFX1AP6qN8Fw=="], - "@smithers-orchestrator/electric-proxy": ["@smithers-orchestrator/electric-proxy@0.28.0", "", { "dependencies": { "@smithers-orchestrator/gateway": "0.28.0" }, "bin": { "smithers-electric-proxy": "bin/smithers-electric-proxy.js" } }, "sha512-BLTZAwaRn3TrLTcr5P+nJD0c4TEal2YlYUnNvgdXL3uz6Iyo4uSB5Fc4Op+fcjbKM8QFmFLP2MDMrwOpjCAFvQ=="], + "@smthrs/driver": ["@smthrs/driver@0.33.0", "", { "dependencies": { "@smthrs/db": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/scheduler": "0.33.0", "effect": "4.0.0-beta.102", "zod": "^4.4.3" } }, "sha512-bm5Qx8UxXTR9Fk8WatsakpAToNUMs3ub9/i4r63NJYj9ViJJ4BDqbjTUciAXca7ELdum5CBuu7tIGlPteKQw6A=="], - "@smithers-orchestrator/engine": ["@smithers-orchestrator/engine@0.28.0", "", { "dependencies": { "@effect/cluster": "^0.59.0", "@effect/experimental": "^0.60.0", "@effect/platform-bun": "^0.90.0", "@effect/rpc": "^0.75.1", "@effect/sql": "^0.51.1", "@effect/sql-sqlite-bun": "^0.52.0", "@effect/workflow": "^0.18.2", "@smithers-orchestrator/agents": "0.28.0", "@smithers-orchestrator/components": "0.28.0", "@smithers-orchestrator/db": "0.28.0", "@smithers-orchestrator/driver": "0.28.0", "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/graph": "0.28.0", "@smithers-orchestrator/observability": "0.28.0", "@smithers-orchestrator/react-reconciler": "0.28.0", "@smithers-orchestrator/sandbox": "0.28.0", "@smithers-orchestrator/scheduler": "0.28.0", "@smithers-orchestrator/scorers": "0.28.0", "@smithers-orchestrator/time-travel": "0.28.0", "@smithers-orchestrator/tool-context": "0.28.0", "@smithers-orchestrator/vcs": "0.28.0", "diff": "^9.0.0", "drizzle-orm": "^0.45.2", "effect": "3.21.4", "react": "^19.2.7", "react-dom": "^19.2.7", "zod": "^4.4.3" }, "optionalDependencies": { "@electric-sql/pglite": "0.5.4", "@electric-sql/pglite-socket": "0.2.6", "pg": "^8.22.0" } }, "sha512-LeyEUbl+4geV6LKqfY4ZEDfIjn2h5eG9ThBe1YiLgnFbhY+q05NoXf2TR1xqnpUfyWktZrDyk9NKPgAjvg2Tnw=="], + "@smthrs/electric-proxy": ["@smthrs/electric-proxy@0.33.0", "", { "dependencies": { "@smthrs/gateway": "0.33.0" }, "bin": { "smithers-electric-proxy": "bin/smithers-electric-proxy.js" } }, "sha512-VByPSaFjiMamvy2wvA8YgcHwtIXWeZEHEBP+LMZR9NLtIKXvHZXKZ4Qz4xC9Wf2R7lrhapvSkb8qE1BQ/jZWJA=="], - "@smithers-orchestrator/errors": ["@smithers-orchestrator/errors@0.28.0", "", { "dependencies": { "effect": "3.21.4" } }, "sha512-N1b29R3zaFQAnGKFobeTHMOienMmqZbhoXsvOspVmLN/+ALoy00UoyGFSeW5iplYAzaFDnBODyhwx0RTj5BjUg=="], + "@smthrs/engine": ["@smthrs/engine@0.33.0", "", { "dependencies": { "@effect/platform-bun": "4.0.0-beta.102", "@effect/sql-sqlite-bun": "4.0.0-beta.102", "@smthrs/agents": "0.33.0", "@smthrs/components": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/react-reconciler": "0.33.0", "@smthrs/sandbox": "0.33.0", "@smthrs/scheduler": "0.33.0", "@smthrs/scorers": "0.33.0", "@smthrs/time-travel": "0.33.0", "@smthrs/tool-context": "0.33.0", "@smthrs/vcs": "0.33.0", "diff": "^9.0.0", "drizzle-orm": "^0.45.2", "effect": "4.0.0-beta.102", "react": "^19.2.7", "react-dom": "^19.2.7", "zod": "^4.4.3" }, "optionalDependencies": { "@electric-sql/pglite": "^0.5.4", "@electric-sql/pglite-socket": "^0.2.6", "pg": "^8.22.0" } }, "sha512-09IzZmLnFhnC0E1L6hUYW+71D6t2Eg5bl2Md1a35tSyRJEfiP3zPeL0wl7h2jcxm2YP0Z7kFhrG/1b52k0Dssg=="], - "@smithers-orchestrator/gateway": ["@smithers-orchestrator/gateway@0.28.0", "", { "dependencies": { "@smithers-orchestrator/protocol": "0.28.0" } }, "sha512-W+LLbe+J4iFDSa/dkfsPQSIkOEw2d+eBH4/lkUVNE1+2CODYyJjXSmixnbAhT1dRaDAOVLDDrlurOvaYbKPc0Q=="], + "@smthrs/errors": ["@smthrs/errors@0.33.0", "", { "dependencies": { "effect": "4.0.0-beta.102" } }, "sha512-501B5G4joqGcfjO8XOHXiGc2Ijr8dACdDD5RtXRbxvduu53AoGQXpp9xVoEh6Ey8PqaQiX4b50jneiQoIZXPpg=="], - "@smithers-orchestrator/gateway-client": ["@smithers-orchestrator/gateway-client@0.28.0", "", { "dependencies": { "@smithers-orchestrator/electric-proxy": "^0.28.0", "@smithers-orchestrator/gateway": "0.28.0", "@smithers-orchestrator/protocol": "0.28.0", "@tanstack/db": "0.6.13", "@tanstack/electric-db-collection": "0.3.11", "@tanstack/query-db-collection": "1.0.45", "@tanstack/react-query": "5.101.2" } }, "sha512-RT/QvlUVj6eJTjYqtfNCUKL4ZvmZ4ojYP1jjG+tigFFfmIbRMfuF8kcPc+zUQlFlpc2s2EEgm/ReP+e91yLArQ=="], + "@smthrs/gateway": ["@smthrs/gateway@0.33.0", "", { "dependencies": { "@smthrs/protocol": "0.33.0" } }, "sha512-KPJ9BDXOJWLyE2n7CH759Db7m4is4ctw2g3o/YOaUBidNicPCyt1q7IM1ffEVF92G611/jurkqoNjxhI7/FQOg=="], - "@smithers-orchestrator/gateway-react": ["@smithers-orchestrator/gateway-react@0.28.0", "", { "dependencies": { "@smithers-orchestrator/gateway-client": "0.28.0", "@tanstack/react-db": "0.1.91", "@tanstack/react-query": "5.101.2", "effect": "3.21.4" }, "peerDependencies": { "react": "^19.0.0", "react-dom": "^19.0.0" } }, "sha512-J6dxKCHI1dA/SL2+6yo526qyV/mshgH31ER7rsc7L+uzRB/DhR5QvdPN85Xe9t72ECrsW7oOFK/R/nBT8SxqNA=="], + "@smthrs/gateway-client": ["@smthrs/gateway-client@0.33.0", "", { "dependencies": { "@smthrs/electric-proxy": "^0.33.0", "@smthrs/gateway": "0.33.0", "@smthrs/protocol": "0.33.0", "@smthrs/usage": "0.33.0", "@tanstack/db": "0.6.13", "@tanstack/electric-db-collection": "0.3.11", "@tanstack/query-db-collection": "1.0.45", "@tanstack/react-query": "5.101.2" } }, "sha512-9OwKzHLI7Dl+Mj7OhaWtINvyhxd+b2USaXSJgSo7lKERFEAaCe6s104dRP/7dlanXdyh6CSK+I3+gwvWZ0R61w=="], - "@smithers-orchestrator/gateway-ui": ["@smithers-orchestrator/gateway-ui@0.28.0", "", { "dependencies": { "@smithers-orchestrator/gateway-client": "0.28.0", "@smithers-orchestrator/gateway-react": "0.28.0", "@smithers-orchestrator/ui": "0.28.0", "@smithers-orchestrator/ui-styleguide": "0.28.0" }, "peerDependencies": { "react": "^19.0.0", "react-dom": "^19.0.0" } }, "sha512-5ec79d6RNXmgpxpwurvmdlCW4fbQLg/ZWAOCMrhb0/IyR711P2ln0XiVOf1Vk2j2JqgoVyv62SlBcioq02hSJQ=="], + "@smthrs/gateway-react": ["@smthrs/gateway-react@0.33.0", "", { "dependencies": { "@smthrs/gateway-client": "0.33.0", "@tanstack/react-db": "0.1.91", "@tanstack/react-query": "5.101.2", "effect": "4.0.0-beta.102" }, "peerDependencies": { "react": "^19.0.0", "react-dom": "^19.0.0" } }, "sha512-sf4Da0J/U4KsKMf58KVkuGKDZor6obuqEBMLS7zOWRObEjCsR9nZS5345QyTIrzNW3RW7QNM5susEoj3mxbBdw=="], - "@smithers-orchestrator/gcp": ["@smithers-orchestrator/gcp@0.28.0", "", { "dependencies": { "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/sandbox": "0.28.0" }, "optionalDependencies": { "@google-cloud/run": "^2.0.0", "@google-cloud/storage": "^7.0.0" } }, "sha512-xf8cOby9WpcI0uHpD8HQ0TWv8xr242ZcIM/tfmt+b5g0htC+x/a9zgM41OveZsO9NlXQkLOQL47JM6lyBPGuZQ=="], + "@smthrs/gateway-ui": ["@smthrs/gateway-ui@0.33.0", "", { "dependencies": { "@smthrs/gateway-client": "0.33.0", "@smthrs/gateway-react": "0.33.0", "@smthrs/ui": "0.33.0", "@smthrs/ui-styleguide": "0.33.0", "@xyflow/react": "^12.10.2", "dagre": "^0.8.5" }, "peerDependencies": { "react": "^19.0.0", "react-dom": "^19.0.0" } }, "sha512-DHgbv9E2yM0/BeyHLKR9UvXPgjoNX03M0A/NV4OjVJaAH3vkkRSYz/h41ushTQrS6BEyaZbYMEDL0+RxSNTxOw=="], - "@smithers-orchestrator/graph": ["@smithers-orchestrator/graph@0.28.0", "", { "dependencies": { "@smithers-orchestrator/errors": "0.28.0", "drizzle-orm": "^0.45.2", "zod": "^4.4.3" } }, "sha512-iMQEfshjBGogRUmZp5+inmXm5XxS/5Rs1K4QrCVldpjj0qwrdJ6rOpTOB7yW1772wFT5JhMFTuCI8uozbh1Frg=="], + "@smthrs/gcp": ["@smthrs/gcp@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/sandbox": "0.33.0" }, "peerDependencies": { "@google-cloud/run": "^2.0.0", "@google-cloud/storage": "^7.0.0" }, "optionalPeers": ["@google-cloud/run", "@google-cloud/storage"] }, "sha512-hIot4+LxgujrZFVFhM51QNY3gWZZ4tj6i4R6GI7wvlfL2JruR43+u+q2ikzBTV0QnZDSuPqV9tvnU/nHqEYkUA=="], - "@smithers-orchestrator/integrations": ["@smithers-orchestrator/integrations@0.28.0", "", { "dependencies": { "@smithers-orchestrator/components": "0.28.0", "@smithers-orchestrator/db": "0.28.0", "@smithers-orchestrator/engine": "0.28.0", "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/observability": "0.28.0", "@smithers-orchestrator/react-reconciler": "0.28.0", "@smithers-orchestrator/scheduler": "0.28.0", "effect": "3.21.4", "react": "^19.2.7", "zod": "4.4.3" } }, "sha512-o+skSpsDajKKVwDDsIGlUGK5iHXnyq3Qv/Oz/sK9Ro6RLMvBWZS8gHMN/BhLudXI5hyC+qi7ANoEvYi/+ZZP9Q=="], + "@smthrs/graph": ["@smthrs/graph@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "drizzle-orm": "^0.45.2", "zod": "^4.4.3" } }, "sha512-WTqlfwlATZNsl9aoRI+QHazRX3H81sFX65+nEJPrKOegh/TUJL/KLg6YuLs3acIe3fdPz5sp1QMT9Got0fp9VQ=="], - "@smithers-orchestrator/jj-darwin-arm64": ["@smithers-orchestrator/jj-darwin-arm64@0.28.0", "", { "os": "darwin", "cpu": "arm64", "bin": { "jj": "bin/jj" } }, "sha512-d9SVV+KEeGvIeKjavM/OUSgTuahMz3ajbjcTBO2BBet7Q5rdCKihvUN5ob6n9+fGKABNTWxQpn9KzknMvSTT5w=="], + "@smthrs/integrations": ["@smthrs/integrations@0.33.0", "", { "dependencies": { "@smthrs/components": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/engine": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/react-reconciler": "0.33.0", "@smthrs/scheduler": "0.33.0", "effect": "4.0.0-beta.102", "react": "^19.2.7", "zod": "4.4.3" } }, "sha512-PKE9ZylVA0k0Q5WzqzAaurSgO1or6zbkJdwqsnNAtRh/xt23cD1yfQwxxpDtqQ8gZ19bLE3QAHNTd195b+Doyg=="], - "@smithers-orchestrator/jj-darwin-x64": ["@smithers-orchestrator/jj-darwin-x64@0.28.0", "", { "os": "darwin", "cpu": "x64", "bin": { "jj": "bin/jj" } }, "sha512-wOXpnJJ1oX7bRhQbtQygvva/F9Y04hgCaPyo6OLs9YaBkolXbEyK1YyX9iRQJE0zOlhrzMaPVBnt7b2WQyxzqA=="], + "@smthrs/jj-darwin-arm64": ["@smthrs/jj-darwin-arm64@0.33.0", "", { "os": "darwin", "cpu": "arm64", "bin": { "jj": "bin/jj" } }, "sha512-7Re3DW+zRzNhqc7yybFQszn06kaQ+h8pziqyf3gw19XnMcCFFYV/PvfkdraeYFdTIABBq8rIl7xX7roO8sn8Mg=="], - "@smithers-orchestrator/jj-linux-arm64": ["@smithers-orchestrator/jj-linux-arm64@0.28.0", "", { "os": "linux", "cpu": "arm64", "bin": { "jj": "bin/jj" } }, "sha512-b7P5amrop0C8zyEvbryTLOYM5A76yLFp358yU/xK7F5BqIFhKNpOYEeXa5slI5p5SwEyv7TgKAth+1btNubmAA=="], + "@smthrs/jj-darwin-x64": ["@smthrs/jj-darwin-x64@0.33.0", "", { "os": "darwin", "cpu": "x64", "bin": { "jj": "bin/jj" } }, "sha512-9d+Qjpu/81v22ssYG7aNjBbe0RHXBSkWHJiwsLgy42TE0pu7MwqZU1eWahrjm3tZpmO8jVS39u5582SGbitPfA=="], - "@smithers-orchestrator/jj-linux-x64": ["@smithers-orchestrator/jj-linux-x64@0.28.0", "", { "os": "linux", "cpu": "x64", "bin": { "jj": "bin/jj" } }, "sha512-9nnm/YL5lCaNRNCv0GZMW5EiqLPyt7zBIoxYOqpXkXxd0JuEWwHocmxLn0zkDcK5Ynxlj4PZtpOVS4/r56LZ6Q=="], + "@smthrs/jj-linux-arm64": ["@smthrs/jj-linux-arm64@0.33.0", "", { "os": "linux", "cpu": "arm64", "bin": { "jj": "bin/jj" } }, "sha512-7ORLYp3bv+bMEuIPeM2JFqnATClxZ603DObILlKgt93SVMngFZrMObAGgp29tB3dpmRcD3Co+Ul5v5BSrxYSAQ=="], - "@smithers-orchestrator/jj-win32-x64": ["@smithers-orchestrator/jj-win32-x64@0.28.0", "", { "os": "win32", "cpu": "x64", "bin": { "jj": "bin/jj.exe" } }, "sha512-EPXj/VnW3BAg85t7SLyBTna/KUDLLHoJJWnyyv90z434JweV2bgg1lDUpqt9VPsuj8lu9d631CRfeDRnpw0/og=="], + "@smthrs/jj-linux-x64": ["@smthrs/jj-linux-x64@0.33.0", "", { "os": "linux", "cpu": "x64", "bin": { "jj": "bin/jj" } }, "sha512-hMkHmBBDr011x21Ot/dd6AFaajaabVdmi6omgOeRAMWwJ73WJMCZEHZ6RVRsH+eNh9xRfufqs6r2VUy9nW1glg=="], - "@smithers-orchestrator/memory": ["@smithers-orchestrator/memory@0.28.0", "", { "dependencies": { "@smithers-orchestrator/db": "0.28.0", "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/graph": "0.28.0", "@smithers-orchestrator/observability": "0.28.0", "@smithers-orchestrator/scheduler": "0.28.0", "drizzle-orm": "^0.45.2", "effect": "3.21.4", "zod": "^4.4.3" } }, "sha512-2Xj1JVNWBtICEU5KtaOk6z/b2x5GqjErDA6K+sbs5aWV1WP+9ALaOgyjvkErvdYx/K6bND1cCo3EVf94b9a2rA=="], + "@smthrs/jj-win32-x64": ["@smthrs/jj-win32-x64@0.33.0", "", { "os": "win32", "cpu": "x64", "bin": { "jj": "bin/jj.exe" } }, "sha512-ivJOvwsAeDicx/CZ0z1OudQL+fD8Oir8PmlSJtYM/4A1mRUDj7iAyg+a/yAwGqEUtO4rSaSpiuiTyUfQsg3UWw=="], - "@smithers-orchestrator/observability": ["@smithers-orchestrator/observability@0.28.0", "", { "dependencies": { "@effect/opentelemetry": "^0.63.0", "@effect/platform": "^0.96.2", "@effect/platform-bun": "^0.90.0", "effect": "3.21.4" } }, "sha512-kQrz0pqaJxhC3KXNZldy8jowQ0+8P7ttaucIb+r9FErp1HzbV1hAkVcmBsuCXuFHUovrFJs4Bmu2v6GGckBvuw=="], + "@smthrs/memory": ["@smthrs/memory@0.33.0", "", { "dependencies": { "@smthrs/db": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/scheduler": "0.33.0", "@vectorize-io/hindsight-client": "0.8.4", "drizzle-orm": "^0.45.2", "effect": "4.0.0-beta.102", "zod": "^4.4.3" } }, "sha512-g/CVUQvxMRziRM48Xe4yDLHKnaN0VzLu8ZPMpvkUFs+ToYJAk3lXPuSj0fKQMBXsdKRulomlj26CUWvEFBw4gQ=="], - "@smithers-orchestrator/openapi": ["@smithers-orchestrator/openapi@0.28.0", "", { "dependencies": { "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/observability": "0.28.0", "@smithers-orchestrator/scheduler": "0.28.0", "ai": "^7.0.10", "effect": "3.21.4", "yaml": "^2.9.0", "zod": "^4.4.3" } }, "sha512-Vb9Gkckirf8f/MOLvGivdP9N49O0NyiczDf/Gu/Y35KIqwrPpXCELvSih1nMF1yFjnhUZg93sWCViiAT/WQIvA=="], + "@smthrs/microsandbox": ["@smthrs/microsandbox@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/sandbox": "0.33.0" }, "peerDependencies": { "microsandbox": "0.6.6" }, "optionalPeers": ["microsandbox"] }, "sha512-Ij/yai+AQ193aZe8xwrWQuzxauNN9IMJJHsaETBuKjj/saVTnWID1oSSOrtjqVkRvVhLdJ6/P2gwomypjxcdhg=="], - "@smithers-orchestrator/protocol": ["@smithers-orchestrator/protocol@0.28.0", "", {}, "sha512-vTjSaeh3cO2x9+g5VNEWN9xHV4D8Z27ntNzzdvi0L0CACwEwZMqNqWy3VN5Id2N6w+I16abkiQV9lj1GqRjq/g=="], + "@smthrs/observability": ["@smthrs/observability@0.33.0", "", { "dependencies": { "@effect/opentelemetry": "4.0.0-beta.102", "@effect/platform-bun": "4.0.0-beta.102", "effect": "4.0.0-beta.102" } }, "sha512-LrqSOgS626noFfuF5ltJ4isRza9+RpG5Z/gDm7ADU5Ft9vCFGWlxnccz9yxntoT443pSi0DWDk9aWRnlVTnY9g=="], - "@smithers-orchestrator/react-reconciler": ["@smithers-orchestrator/react-reconciler@0.28.0", "", { "dependencies": { "@smithers-orchestrator/devtools": "0.28.0", "@smithers-orchestrator/driver": "0.28.0", "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/graph": "0.28.0", "bippy": "^0.5.42", "react": "^19.2.7", "react-reconciler": "^0.33.0" } }, "sha512-XU6fLe22NSO239S+pdaNw6TrNDiUNazULiXW2wEFqA3YjFxsTHsxvY+f9BANMvC6M46vhFC0JHwg9urD5q0qpQ=="], + "@smthrs/openapi": ["@smthrs/openapi@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/scheduler": "0.33.0", "ai": "^7.0.10", "effect": "4.0.0-beta.102", "yaml": "^2.9.0", "zod": "^4.4.3" } }, "sha512-k+JYat/tJMjauLsbS0K6n7Ch6OqdJk7i5I1thHJWE2XNEmk4IcyB0TuP1fXEwFAx/AdsgqAeqhpMoQVttsXrLA=="], - "@smithers-orchestrator/review": ["@smithers-orchestrator/review@0.28.0", "", { "dependencies": { "@pierre/diffs": "^1.2.12", "@smithers-orchestrator/agents": "0.28.0", "@smithers-orchestrator/db": "0.28.0", "@smithers-orchestrator/engine": "0.28.0", "@smithers-orchestrator/gateway-ui": "0.28.0", "effect": "3.21.4", "mermaid": "^11.16.0", "smithers-orchestrator": "0.28.0", "zod": "4.4.3" }, "bin": { "smithers-review": "src/cli/main.ts" } }, "sha512-pIK7862Qs1bHAODEZC/umE4bIh/QvBT315y89i2OcL6GdB4QjvF8h1oWeXbw2rMcAmVOh1pSom8Y7htcHPStWw=="], + "@smthrs/protocol": ["@smthrs/protocol@0.33.0", "", {}, "sha512-23q08dp4TcjtiaSUbYb4q45Rr8XYtprFtlfEoji9Zd3uo2uvpdoGpGvsjHM9v20Kc6iRhGV06OC2tKEYCx5mbQ=="], - "@smithers-orchestrator/sandbox": ["@smithers-orchestrator/sandbox@0.28.0", "", { "dependencies": { "@effect/cluster": "^0.59.0", "@effect/rpc": "^0.75.1", "@smithers-orchestrator/db": "0.28.0", "@smithers-orchestrator/driver": "0.28.0", "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/observability": "0.28.0", "@smithers-orchestrator/scheduler": "0.28.0", "effect": "3.21.4" } }, "sha512-QjDnmJNHCOexRo8MnCG6tl9pZJdoOrcyysJy283D+uP3GgP2SgtjaJ1rrpFdLu3Ee3nAv7uefoIog/Z4JWRG9Q=="], + "@smthrs/react-reconciler": ["@smthrs/react-reconciler@0.33.0", "", { "dependencies": { "@smthrs/devtools": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "bippy": "^0.5.42", "react": "^19.2.7", "react-reconciler": "^0.33.0" } }, "sha512-IGeJCUfN14Mu7zGigDrglHo2eJVMYZcL9Y0VKcB6469Hn/wSCLAlhctwHpXtHGI6SDE4HC/OqYlAe73d2jAvXQ=="], - "@smithers-orchestrator/scheduler": ["@smithers-orchestrator/scheduler@0.28.0", "", { "dependencies": { "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/graph": "0.28.0", "effect": "3.21.4" } }, "sha512-5yMYz20fo8UMqGrKLDV41G44cfGQE0TjjPyXqLo7jO7PlNDvInjx3DOuem1W/OfiZYwPCdyrvVMF7kfTaVuzCg=="], + "@smthrs/review": ["@smthrs/review@0.33.0", "", { "dependencies": { "@pierre/diffs": "^1.2.12", "@smthrs/agents": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/engine": "0.33.0", "@smthrs/ui-styleguide": "0.33.0", "effect": "4.0.0-beta.102", "mermaid": "^11.16.0", "smthrs": "0.33.0", "zod": "^4.4.3" }, "bin": { "smithers-review": "src/cli/main.ts" } }, "sha512-6d8479NJ1B1lqVc6Eiee64D/dv7ahdRssGQlgDZdB/l6SjZDYn/q06gXX9M/FwEUp4LNyLzdu5TeLpOEgFDXSg=="], - "@smithers-orchestrator/scorers": ["@smithers-orchestrator/scorers@0.28.0", "", { "dependencies": { "@smithers-orchestrator/agents": "0.28.0", "@smithers-orchestrator/db": "0.28.0", "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/graph": "0.28.0", "@smithers-orchestrator/observability": "0.28.0", "@smithers-orchestrator/scheduler": "0.28.0", "drizzle-orm": "^0.45.2", "effect": "3.21.4", "zod": "^4.4.3" } }, "sha512-yYTzGRxwTrJhM95MQcFL8hAkZHUnbIu9HnPnLhOapxGAxOjXwBpNv/WtsvjYbIpPMwWggkvTgLcQnpQMYhQD/A=="], + "@smthrs/sandbox": ["@smthrs/sandbox@0.33.0", "", { "dependencies": { "@smthrs/db": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/scheduler": "0.33.0", "effect": "4.0.0-beta.102" } }, "sha512-i3F/vPq0E3JEPccWmpO02zDclpx/JMFwxYOzw4wMtQy2d+N5Tyv0sSSUI3qmxkOx5yrEwNxsNO5ggTV3GlbFjQ=="], - "@smithers-orchestrator/server": ["@smithers-orchestrator/server@0.28.0", "", { "dependencies": { "@effect/workflow": "^0.18.2", "@smithers-orchestrator/accounts": "0.28.0", "@smithers-orchestrator/components": "0.28.0", "@smithers-orchestrator/db": "0.28.0", "@smithers-orchestrator/devtools": "0.28.0", "@smithers-orchestrator/driver": "0.28.0", "@smithers-orchestrator/engine": "0.28.0", "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/gateway": "0.28.0", "@smithers-orchestrator/graph": "0.28.0", "@smithers-orchestrator/integrations": "0.28.0", "@smithers-orchestrator/observability": "0.28.0", "@smithers-orchestrator/protocol": "0.28.0", "@smithers-orchestrator/scheduler": "0.28.0", "@smithers-orchestrator/time-travel": "0.28.0", "@smithers-orchestrator/ui-styleguide": "0.28.0", "cron-parser": "^5.6.1", "drizzle-orm": "^0.45.2", "effect": "3.21.4", "hono": "^4.12.27", "react": "^19.2.7", "react-dom": "^19.2.7", "ws": "^8.21.0" } }, "sha512-TmERiE30z3bV0uMpg5bR3xxtEsgOsPZhghPXoLfV9Tv3l+vErjNGSIpHZk9BsbCDLWLUKMd5ULzlvANO6+zNFA=="], + "@smthrs/scheduler": ["@smthrs/scheduler@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "effect": "4.0.0-beta.102" } }, "sha512-X56SHlwiZZDSY6pYQlRwZaIhVQgJgbbj3ZzJq//c9ticG3iwC6jeaG4UHCozdVlY1D8ykKcsdDXm1GQb4HhGqA=="], - "@smithers-orchestrator/telegram": ["@smithers-orchestrator/telegram@0.28.0", "", {}, "sha512-8j/02PPGO2WtvLpFPggQ/fNf6kCp1LtjfKjf0CQeu2z9wyICYqPPmyfYrjABisXicoASLzTtcBH/n87CnNj4oA=="], + "@smthrs/scorers": ["@smthrs/scorers@0.33.0", "", { "dependencies": { "@smthrs/agents": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/scheduler": "0.33.0", "drizzle-orm": "^0.45.2", "effect": "4.0.0-beta.102", "typescript": "~6.0.3", "zod": "^4.4.3" } }, "sha512-ju3omeoYq7Pn9oIqRneCEoGyaAmScGxKQi22e9NAKHHWCzpdiouYBab7Z2qtOk9G5X/4503EsdpFH6JpPHEYpQ=="], - "@smithers-orchestrator/testing": ["@smithers-orchestrator/testing@0.28.0", "", { "dependencies": { "@smithers-orchestrator/components": "0.28.0", "@smithers-orchestrator/db": "0.28.0", "@smithers-orchestrator/driver": "0.28.0", "@smithers-orchestrator/engine": "0.28.0", "@smithers-orchestrator/graph": "0.28.0", "@smithers-orchestrator/react-reconciler": "0.28.0", "@smithers-orchestrator/scheduler": "0.28.0", "effect": "3.21.4", "koffi": "^2.16.2", "zod": "^4.4.3" } }, "sha512-mnzgscrwVmcl5d53wI3jh+qDerS000rQZu/YaqkDxDO2LB3LmMWzkpUm1fQ0CalnMzjaU6Zht70SRCsSkpdQrA=="], + "@smthrs/server": ["@smthrs/server@0.33.0", "", { "dependencies": { "@smthrs/accounts": "0.33.0", "@smthrs/components": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/devtools": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/engine": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/gateway": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/integrations": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/protocol": "0.33.0", "@smthrs/scheduler": "0.33.0", "@smthrs/time-travel": "0.33.0", "@smthrs/ui-styleguide": "0.33.0", "@smthrs/usage": "0.33.0", "cron-parser": "^5.6.1", "drizzle-orm": "^0.45.2", "effect": "4.0.0-beta.102", "hono": "^4.12.27", "react": "^19.2.7", "react-dom": "^19.2.7", "ws": "^8.21.0" }, "peerDependencies": { "playwright": "^1.61.1" }, "optionalPeers": ["playwright"] }, "sha512-iCcgYQTBBwnlnpWoyl8nYd60ETeQNXXBy+jZXSnvj61FoidGzf8u1Tjg/zcKLnh1A5c2o+eGa0YUqgk8FF8v4Q=="], - "@smithers-orchestrator/time-travel": ["@smithers-orchestrator/time-travel@0.28.0", "", { "dependencies": { "@effect/platform": "^0.96.2", "@effect/platform-bun": "^0.90.0", "@smithers-orchestrator/db": "0.28.0", "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/observability": "0.28.0", "@smithers-orchestrator/scheduler": "0.28.0", "@smithers-orchestrator/vcs": "0.28.0", "drizzle-orm": "^0.45.2", "effect": "3.21.4", "picocolors": "^1.1.1" } }, "sha512-wcmdQ+1w4HIwoHWPb9DCu9ciBE1JKtv4r3eX4zaNfCCtgqt1lqP8uliolrzrrXaMEvxfBooFPTGyzF3OhVSr9A=="], + "@smthrs/telegram": ["@smthrs/telegram@0.33.0", "", {}, "sha512-MuNm1lLwPBgyll9P1+yvEsLWad9N2Zro5rCXB09YB0kfVKsmkONwV0J8WeZPO1W/POMoYi44st/lq2NBcaUN8g=="], - "@smithers-orchestrator/tool-context": ["@smithers-orchestrator/tool-context@0.28.0", "", {}, "sha512-m0srLr9iPCvPocPVDAhQTRW9vb0kO/8INSaouMaoavRoZxOSmYNbNBrwIGk7QsbDRNLKjk8UT73DoCWUSS6+2g=="], + "@smthrs/testing": ["@smthrs/testing@0.33.0", "", { "dependencies": { "@smthrs/components": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/engine": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/react-reconciler": "0.33.0", "@smthrs/scheduler": "0.33.0", "effect": "4.0.0-beta.102", "zod": "^4.4.3" }, "peerDependencies": { "koffi": "^2.16.2" }, "optionalPeers": ["koffi"] }, "sha512-f/IfOjG8MOqxtvPJLNJ0LJ21OXMRUAeb8JF6YV3ZU4Ht7td2IWGNXDtyFFG3DQBdqZVhQSOSY5O/WFP/j4fJuQ=="], - "@smithers-orchestrator/tui": ["@smithers-orchestrator/tui@0.28.0", "", { "dependencies": { "@opentui/core": "^0.4.2", "@opentui/react": "^0.4.2", "@smithers-orchestrator/gateway-client": "0.28.0", "@smithers-orchestrator/gateway-react": "0.28.0", "react": "^19.2.7", "react-dom": "^19.2.7" }, "bin": { "smithers-mon": "src/index.tsx" } }, "sha512-rk2/iCG4vGz454eLFa8uRvn+7ua6VM5rkApzvQt62U2Pr5Mg/1X2CB1fCjaozE96exTXxosGh/1OmW10QYvQoQ=="], + "@smthrs/time-travel": ["@smthrs/time-travel@0.33.0", "", { "dependencies": { "@effect/platform-bun": "4.0.0-beta.102", "@smthrs/db": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/react-reconciler": "0.33.0", "@smthrs/scheduler": "0.33.0", "@smthrs/vcs": "0.33.0", "drizzle-orm": "^0.45.2", "effect": "4.0.0-beta.102", "picocolors": "^1.1.1" } }, "sha512-QY+r4R8N10N8rwn3RnBCHpEmGPNVzgXWrZBcj0dZY0TY9TqRaBW6Jbj+7M8RB20Gk6Kgf5Xbha8buY3OSFqgsA=="], - "@smithers-orchestrator/ui": ["@smithers-orchestrator/ui@0.28.0", "", { "dependencies": { "@smithers-orchestrator/ui-styleguide": "0.28.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "radix-ui": "^1.6.1" }, "peerDependencies": { "react": "^19.0.0", "react-dom": "^19.0.0" } }, "sha512-fuuy1bUtS3e2K93601JGJVmgHRMcDzJBBvbn2jQNIR0cYBFghKJvDhQWIsxmOHFWUu0Lyf9gRwf4gHVfQvZjhw=="], + "@smthrs/tool-context": ["@smthrs/tool-context@0.33.0", "", { "dependencies": { "ai": "^7.0.10", "zod": "^4.4.3" } }, "sha512-CBgeh7dOefSfGyWnLPYVQOE/sMGwrwIJq625BcMuuTfTZe+2zj9dCBbsBcrdhCzUf9AWzELu6Ja/SOnmWWETeA=="], - "@smithers-orchestrator/ui-styleguide": ["@smithers-orchestrator/ui-styleguide@0.28.0", "", {}, "sha512-Clw5wSHcfEWh+pwR9p/J7MXIpjxo/B1R1JV5MIrPbBKdlgE5pvB9oWd4L/+W0lZucQpK/jK/SBfCZjKexIdGAA=="], + "@smthrs/tui": ["@smthrs/tui@0.33.0", "", { "dependencies": { "@opentui/core": "^0.4.2", "@opentui/react": "^0.4.2", "@smthrs/gateway-client": "0.33.0", "@smthrs/gateway-react": "0.33.0", "@smthrs/tui-ui": "0.33.0", "@smthrs/ui-core": "0.33.0", "react": "^19.2.7", "react-dom": "^19.2.7" }, "bin": { "smithers-mon": "src/index.tsx" } }, "sha512-gGB6wtxWUrzWd3afKtMk37tQCFGUfP2IgaMIBSzyZukO8581AlE5IxjUnnPk7P93THbMWzyxfhdKhrbi7g0hBA=="], - "@smithers-orchestrator/usage": ["@smithers-orchestrator/usage@0.28.0", "", { "dependencies": { "@smithers-orchestrator/accounts": "0.28.0" } }, "sha512-v8UDh41l8Vu67q86N4xRzzSYf9LO1lwbeE6Kc8QopgSyVu/5GYRX7Z5lPPypEoajhtQsWWPovQT2nLY1cwSqcQ=="], + "@smthrs/tui-ui": ["@smthrs/tui-ui@0.33.0", "", { "dependencies": { "@opentui/core": "^0.4.2", "@opentui/react": "^0.4.2", "react": "^19.2.7" } }, "sha512-uXQNDM1lsoX3GJhwCFOsDQ7jTGscX/jFk/nWeGc/8MnyWURIPdc5R4p48GYVaRhJfVMhqyCP4lGciiliHIaMjg=="], - "@smithers-orchestrator/vcs": ["@smithers-orchestrator/vcs@0.28.0", "", { "dependencies": { "@effect/platform": "^0.96.2", "@smithers-orchestrator/observability": "0.28.0", "effect": "3.21.4" }, "optionalDependencies": { "@smithers-orchestrator/jj-darwin-arm64": "0.28.0", "@smithers-orchestrator/jj-darwin-x64": "0.28.0", "@smithers-orchestrator/jj-linux-arm64": "0.28.0", "@smithers-orchestrator/jj-linux-x64": "0.28.0", "@smithers-orchestrator/jj-win32-x64": "0.28.0" } }, "sha512-sTHrL+M/6fFLbc/7xCsO3AnKqU8eLowKfU4GvcS9rtCU+47OmCd8pcCJqIYy2c+mra5BxHi5H4kUSmdFEuZDsA=="], + "@smthrs/ui": ["@smthrs/ui@0.33.0", "", { "dependencies": { "@milkdown/crepe": "7.21.2", "@milkdown/kit": "7.21.2", "@milkdown/plugin-listener": "7.21.2", "@pierre/diffs": "^1.2.12", "@smthrs/ui-styleguide": "0.33.0", "@xterm/addon-fit": "^0.11.0", "@xterm/xterm": "^6.0.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "d3-force": "3.0.0", "radix-ui": "^1.6.1", "recharts": "^3.2.1" }, "peerDependencies": { "react": "^19.0.0", "react-dom": "^19.0.0" } }, "sha512-20Rp7+12sB+MFr46krN6SnMnS3gQ3qvitISvStnhOQRexcovmu9bZZjSQle73izDDhzt6NSjRP92dyd9Imta1g=="], - "@smithers-orchestrator/vercel": ["@smithers-orchestrator/vercel@0.28.0", "", { "dependencies": { "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/sandbox": "0.28.0" }, "optionalDependencies": { "@vercel/sandbox": "^2.0.0" } }, "sha512-G8hGAgMmmv61iIbDrYOHgUXry15lOLqdWWAlS8pZz9HN2bkF50D7vmgtzMKL54Ohq6CcjOUtgX2SzkR2RtDGZw=="], + "@smthrs/ui-core": ["@smthrs/ui-core@0.33.0", "", { "dependencies": { "@smthrs/gateway-client": "0.33.0", "@smthrs/gateway-react": "0.33.0", "zustand": "^5.0.13" }, "peerDependencies": { "react": "^19.0.0" } }, "sha512-VdthPjNAJ5joiNa/yimp19T0EW+uU5cFlH/gJJc0Rl7o8e05zHavJG198pq916XMFj01wZ01Ok+JjqFqeqe9RA=="], - "@smithy/core": ["@smithy/core@3.29.4", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-G1GRglAabzEhqghJMBAd54FkRS7SAFGHEwbhcI9r+O+LIMuFsLyXkLZkCoFSgAglRu8s/URVXJB0hglq3ZipIg=="], + "@smthrs/ui-styleguide": ["@smthrs/ui-styleguide@0.33.0", "", {}, "sha512-Abttww3uxtcjFUeai35j+ytQmXLRvDffyAFO051zKQQuV2NNywsjpmbowEyeINU0+xqKWxx9qkl89Dj5mRKkDw=="], - "@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.4.9", "", { "dependencies": { "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-2nfV4qRKiYeXU4zD2vvSCfg5dfp/BuhrM73vt7q9gzBhxs4rbPxXY21wo+kyI3bRmXcEGRnCLTaW8O437jzHIg=="], + "@smthrs/usage": ["@smthrs/usage@0.33.0", "", { "dependencies": { "@smthrs/accounts": "0.33.0" } }, "sha512-dmkr6TdoyeTuXSDTikiQm3O6aOQ9VhzjsHnmlQj4ERT8aDRASp3e2fqDZ0Hp3ciRsrfQZ/z4i6mblwTkue07TA=="], - "@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.6.6", "", { "dependencies": { "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-NHLgAlORUFZjn5ZfhYuyyKMlXA1WLYOdGxEhyNxrPpbJzoacGbl0chn1lN2KiZ8mpNVk0tV5607CSYlYs/OFgw=="], + "@smthrs/vcs": ["@smthrs/vcs@0.33.0", "", { "dependencies": { "@smthrs/observability": "0.33.0", "effect": "4.0.0-beta.102" }, "optionalDependencies": { "@smthrs/jj-darwin-arm64": "0.33.0", "@smthrs/jj-darwin-x64": "0.33.0", "@smthrs/jj-linux-arm64": "0.33.0", "@smthrs/jj-linux-x64": "0.33.0", "@smthrs/jj-win32-x64": "0.33.0" } }, "sha512-fh26ZzhIC5TfAn+BEKq9A5A9l9rWrdwfS6bBzB2OKCZ40X11KsH4Nh4DP7z49ChHCVBkrivPo40RV2Yl4XyG7g=="], - "@smithy/node-http-handler": ["@smithy/node-http-handler@4.9.6", "", { "dependencies": { "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-odd+HYx3OLcXRSEz0ZeF3JQdSYdK8QnRgA2N87cPW7coWIbKfRk7a9VQjfeWQLqnzrDLk23KMEn46p8N7M/JFg=="], + "@smthrs/vercel": ["@smthrs/vercel@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/sandbox": "0.33.0" }, "peerDependencies": { "@vercel/sandbox": "^2.0.0" }, "optionalPeers": ["@vercel/sandbox"] }, "sha512-uvM3Yfr29ThAPIw12N5/adCw16sRStpU2Rh6bOhk7HwsmIZ1yovPcyvuOwavv88knhnsrbo+7j+ZonMLkjfb2A=="], - "@smithy/signature-v4": ["@smithy/signature-v4@5.6.5", "", { "dependencies": { "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-MO5VEhwVl0BN7xVoVeNrZfiUFoQtqxUbgl6/RwOTlMMxCSjblG8twSrVTwz3J4w9WZxd2rBfBAUXjH77agspBg=="], - - "@smithy/types": ["@smithy/types@4.16.1", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-0JFs3V2y2M9tKW5na/qxe69Zv+uxLMO7QBbhxF/FHu/Gp2NFZAAL9tWl9PU02xxo07pb3G9FTyjNc6D5uZrJIg=="], + "@smthrs/xstate": ["@smthrs/xstate@0.33.0", "", { "dependencies": { "@smthrs/errors": "0.33.0", "@smthrs/react-reconciler": "0.33.0", "react": "^19.2.7" }, "peerDependencies": { "xstate": "^5.19.0" }, "optionalPeers": ["xstate"] }, "sha512-xd8qeH/E32HFuSQExrqZsyeCslnVeDvD2khcEvOCK0NMuTl9CgVqq7qS6lKhCkPLRyePPUTr+FXZzWtUT4KS1g=="], "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@standard-schema/utils": ["@standard-schema/utils@0.3.0", "", {}, "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g=="], + "@tanstack/db": ["@tanstack/db@0.6.13", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@tanstack/db-ivm": "0.1.18", "@tanstack/pacer-lite": "^0.2.1" }, "peerDependencies": { "typescript": ">=4.7" } }, "sha512-EWR/eE2TO0CIh/nC5P4Ct6UCzDDyX94fnEXxqMMi0/5pbZDa/MCKB1PYad9jqZRSK4AEu2uoF6Y8aOUaZJd24A=="], "@tanstack/db-ivm": ["@tanstack/db-ivm@0.1.18", "", { "dependencies": { "fractional-indexing": "^3.2.0", "sorted-btree": "^1.8.1" }, "peerDependencies": { "typescript": ">=4.7" } }, "sha512-+pZJiRKdoKRM5Epq9T7otD9ZJl82pRFauo7LKuJGrarjVKQ7r+QQlPe3kGdN9LEKSnuNGIWjX9OOY4M8kH4eLw=="], @@ -669,12 +619,8 @@ "@toon-format/toon": ["@toon-format/toon@2.3.0", "", {}, "sha512-/Ew9etdRQKVMnm9fDaCG0JjyAOK/O7T0M97oum1aW4W+UR8ZhVVPBanIV7oWgHBiGlnVxV9M55PWQCHofDV07w=="], - "@tootallnate/once": ["@tootallnate/once@2.0.1", "", {}, "sha512-HqmEUIGRJ5fSXchkVgR5F7qn48bDBzv0kWj/Kfu5e6uci4UlEeng4331LnBkWffb++Ei3FOVLxo8JJWMFBDMeQ=="], - "@types/bun": ["@types/bun@1.3.14", "", { "dependencies": { "bun-types": "1.3.14" } }, "sha512-h1hFqFVcvAvD9j9K7ZW7vd82aSA+rTdznZa+5bwvCwqSB1jmmfLcbIWhOLx1/+boy/xmjgCs/OMUL8hRJSmnPw=="], - "@types/caseless": ["@types/caseless@0.12.5", "", {}, "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg=="], - "@types/d3": ["@types/d3@7.4.3", "", { "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", "@types/d3-brush": "*", "@types/d3-chord": "*", "@types/d3-color": "*", "@types/d3-contour": "*", "@types/d3-delaunay": "*", "@types/d3-dispatch": "*", "@types/d3-drag": "*", "@types/d3-dsv": "*", "@types/d3-ease": "*", "@types/d3-fetch": "*", "@types/d3-force": "*", "@types/d3-format": "*", "@types/d3-geo": "*", "@types/d3-hierarchy": "*", "@types/d3-interpolate": "*", "@types/d3-path": "*", "@types/d3-polygon": "*", "@types/d3-quadtree": "*", "@types/d3-random": "*", "@types/d3-scale": "*", "@types/d3-scale-chromatic": "*", "@types/d3-selection": "*", "@types/d3-shape": "*", "@types/d3-time": "*", "@types/d3-time-format": "*", "@types/d3-timer": "*", "@types/d3-transition": "*", "@types/d3-zoom": "*" } }, "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww=="], "@types/d3-array": ["@types/d3-array@3.2.2", "", {}, "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw=="], @@ -747,6 +693,12 @@ "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], + "@types/katex": ["@types/katex@0.16.8", "", {}, "sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg=="], + + "@types/lodash": ["@types/lodash@4.17.25", "", {}, "sha512-+K1NIO8I+F9/wNulfVvu23QYd0Pe9/OCqRrim4NoYIf1VoEDL90Ve4ClzpyqBLc7NpGGWRvYNCKZ1BE/Jpf8dQ=="], + + "@types/lodash-es": ["@types/lodash-es@4.17.12", "", { "dependencies": { "@types/lodash": "*" } }, "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ=="], + "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], "@types/mdx": ["@types/mdx@2.0.13", "", {}, "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw=="], @@ -759,14 +711,12 @@ "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], - "@types/request": ["@types/request@2.48.13", "", { "dependencies": { "@types/caseless": "*", "@types/node": "*", "@types/tough-cookie": "*", "form-data": "^2.5.5" } }, "sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg=="], - - "@types/tough-cookie": ["@types/tough-cookie@4.0.5", "", {}, "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA=="], - "@types/trusted-types": ["@types/trusted-types@2.0.7", "", {}, "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw=="], "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], + "@types/use-sync-external-store": ["@types/use-sync-external-store@0.0.6", "", {}, "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg=="], + "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], "@typescript/native-preview": ["@typescript/native-preview@7.0.0-dev.20260421.2", "", { "optionalDependencies": { "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20260421.2", "@typescript/native-preview-darwin-x64": "7.0.0-dev.20260421.2", "@typescript/native-preview-linux-arm": "7.0.0-dev.20260421.2", "@typescript/native-preview-linux-arm64": "7.0.0-dev.20260421.2", "@typescript/native-preview-linux-x64": "7.0.0-dev.20260421.2", "@typescript/native-preview-win32-arm64": "7.0.0-dev.20260421.2", "@typescript/native-preview-win32-x64": "7.0.0-dev.20260421.2" }, "bin": { "tsgo": "bin/tsgo.js" } }, "sha512-CmajHI25HpVWE9R1XFoxr+cphJPxoYD3eFioQtAvXYkMFKnLdICMS9pXre9Pybizb75ejRxjKD5/CVG055rEIg=="], @@ -789,9 +739,27 @@ "@upsetjs/venn.js": ["@upsetjs/venn.js@2.0.0", "", { "optionalDependencies": { "d3-selection": "^3.0.0", "d3-transition": "^3.0.1" } }, "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw=="], + "@vectorize-io/hindsight-client": ["@vectorize-io/hindsight-client@0.8.4", "", {}, "sha512-Tk5wRRhRVSZ0FuGcUKqBZIidw/6eS81oTIKV0H5gmzKSM2r2CdoijmOi+NaP0v51rnoxVi0nFEHQXivt0J2+OA=="], + "@vercel/oidc": ["@vercel/oidc@3.2.0", "", {}, "sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug=="], - "@vercel/sandbox": ["@vercel/sandbox@2.6.1", "", { "dependencies": { "@vercel/oidc": "3.2.0", "@workflow/serde": "4.1.0-beta.2", "async-retry": "1.3.3", "jose": "6.2.3", "jsonlines": "0.1.1", "ms": "2.1.3", "picocolors": "^1.1.1", "tar-stream": "3.1.7", "undici": "^7.27.1", "xdg-app-paths": "5.1.0", "zod": "^4.1.1" } }, "sha512-XqjNNyMaC8G/687Un0a9rJg9+9MrfBMrG7q/JKO6LT0PWW/dT2Jp44+zmYVqGAkBungPFCg4BzfBXHTzU+IVyw=="], + "@vue/compiler-core": ["@vue/compiler-core@3.5.40", "", { "dependencies": { "@babel/parser": "^7.29.7", "@vue/shared": "3.5.40", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-39E8IgOhTbVDnoJFMKc2DvYnypcZwUqgUhQkccva/0m6FUwtIKSGV7n1hpVmYcFaoRAwf9pBcwnKlCEsN63ZEQ=="], + + "@vue/compiler-dom": ["@vue/compiler-dom@3.5.40", "", { "dependencies": { "@vue/compiler-core": "3.5.40", "@vue/shared": "3.5.40" } }, "sha512-pwkx4vqlqOspFstrcmzwkKLePVMD3PT65imRzLhanU2V1Fj4K13g6OXjanOyzw3aTAuRk84BOmY8f3rEHqPaVA=="], + + "@vue/compiler-sfc": ["@vue/compiler-sfc@3.5.40", "", { "dependencies": { "@babel/parser": "^7.29.7", "@vue/compiler-core": "3.5.40", "@vue/compiler-dom": "3.5.40", "@vue/compiler-ssr": "3.5.40", "@vue/shared": "3.5.40", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", "postcss": "^8.5.19", "source-map-js": "^1.2.1" } }, "sha512-gIf497P4kpuALcvs5n3AEg1Vdn0pSY4XbjASIfHNYF1/MP3T2Mf2STERTubysBxCRxzJGJYtF/O7vwJrxFB3Vw=="], + + "@vue/compiler-ssr": ["@vue/compiler-ssr@3.5.40", "", { "dependencies": { "@vue/compiler-dom": "3.5.40", "@vue/shared": "3.5.40" } }, "sha512-rrE5xiXG663+vHCHa3J9p2z5OcBRjXmoqenprJxAFQxg5pSshzeBiCE6pu46axapRJ2Adk0YDA2BRZVjiHXnhg=="], + + "@vue/reactivity": ["@vue/reactivity@3.5.40", "", { "dependencies": { "@vue/shared": "3.5.40" } }, "sha512-B7ot9UlUZOi1zbq61/LvE88ZLTV8IlajTdiZTAEiDQgrnIMIZoPr9kGw0Zw46ObW62O9+H/Be3kMbfb7kYPQZA=="], + + "@vue/runtime-core": ["@vue/runtime-core@3.5.40", "", { "dependencies": { "@vue/reactivity": "3.5.40", "@vue/shared": "3.5.40" } }, "sha512-KAZLweuZ6uUJPK1PMSQPgBU5gCjgrrfjUhSglmU9NhH+Zjepa8cnwSydPWDWHDwOgY4g3VcZ+PljbiHlURNCbw=="], + + "@vue/runtime-dom": ["@vue/runtime-dom@3.5.40", "", { "dependencies": { "@vue/reactivity": "3.5.40", "@vue/runtime-core": "3.5.40", "@vue/shared": "3.5.40", "csstype": "^3.2.3" } }, "sha512-ZfrX8ssZQds900L9pr8AuK05ddnMsR4MPMZr8cPN9GoqoPWcXLhjvvbIA2SMv+7a97sJ1vv9pj/zxK0Cq/eEFQ=="], + + "@vue/server-renderer": ["@vue/server-renderer@3.5.40", "", { "dependencies": { "@vue/compiler-ssr": "3.5.40", "@vue/runtime-dom": "3.5.40", "@vue/shared": "3.5.40" } }, "sha512-XNJym9WpevhTVt1HuwOrCRJ5Q+9z4BjTMrDtjTrvx74SmUll8spNTw6whWJa9mEkO4PKn5TihI/bm/8ds2QVJw=="], + + "@vue/shared": ["@vue/shared@3.5.40", "", {}, "sha512-WxnBtruIqOoV3rA4jeKDWzrYI5h7Cp4+pjwDi8kWGHz+IslhiN+wguLVVhtv2l8VoU02rzDCVfDjgCl1lNpZVg=="], "@workflow/serde": ["@workflow/serde@4.1.0", "", {}, "sha512-pav4F2BoirECWR7Nf1TKt+2eETcBj7jj4cBefQ8VXQCA6NPkaKeLfj/zMgi+3zYV5ZIBT4GuUiphsj0/b9hPQQ=="], @@ -799,7 +767,9 @@ "@xterm/xterm": ["@xterm/xterm@6.0.0", "", {}, "sha512-TQwDdQGtwwDt+2cgKDLn0IRaSxYu1tSUjgKarSDkUM0ZNiSRXFpjxEsvc/Zgc5kq5omJ+V0a8/kIM2WD3sMOYg=="], - "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="], + "@xyflow/react": ["@xyflow/react@12.11.2", "", { "dependencies": { "@xyflow/system": "0.0.79", "classcat": "^5.0.3", "zustand": "^4.4.0" }, "peerDependencies": { "@types/react": ">=17", "@types/react-dom": ">=17", "react": ">=17", "react-dom": ">=17" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-eLAlDWJfWnQEhJwGMjlWdAXO9eYllKpliUmPQlAmOLxz6mExXuzMVDUKLMquixgkrtmMFFtug3jGKmYYld12cA=="], + + "@xyflow/system": ["@xyflow/system@0.0.79", "", { "dependencies": { "@types/d3-drag": "^3.0.7", "@types/d3-interpolate": "^3.0.4", "@types/d3-selection": "^3.0.10", "@types/d3-transition": "^3.0.8", "@types/d3-zoom": "^3.0.8", "d3-drag": "^3.0.0", "d3-interpolate": "^3.0.1", "d3-selection": "^3.0.0", "d3-zoom": "^3.0.0" } }, "sha512-czLyOh91NF0hIzbNzwi8I6GlqG23BHh2435OddfI6uiaLH3xdrdygO93gqgH1Bv9mhy8XPFQJOBn1FTq4LvEWA=="], "accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="], @@ -807,8 +777,6 @@ "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], - "agent-base": ["agent-base@6.0.2", "", { "dependencies": { "debug": "4" } }, "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ=="], - "ai": ["ai@7.0.17", "", { "dependencies": { "@ai-sdk/gateway": "4.0.13", "@ai-sdk/provider": "4.0.2", "@ai-sdk/provider-utils": "5.0.5" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kpIjNtN0tyUaxzkAs7b8YF48WZzc71dKu0HqFPSAWg/avu1Ogv50UPE9hpVMr+kb33zsEa6LrAU9DZHMNscvzw=="], "ajv": ["ajv@8.18.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A=="], @@ -817,64 +785,26 @@ "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], - "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], - - "anynum": ["anynum@1.0.1", "", {}, "sha512-N6//FLET/tXYNM/F6ABca1oH6fWB+KlTt909Le28WMDBk8oaT4vY17DCrwg2MvmuqUKt3Ni4N5dGJ/EoBgcO6A=="], - "aria-hidden": ["aria-hidden@1.2.6", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="], - "arrify": ["arrify@2.0.1", "", {}, "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="], - "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], - "async-retry": ["async-retry@1.3.3", "", { "dependencies": { "retry": "0.13.1" } }, "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw=="], - - "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="], - - "aws4fetch": ["aws4fetch@1.0.20", "", {}, "sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g=="], - - "axios": ["axios@1.18.1", "", { "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.5", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } }, "sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g=="], - - "b4a": ["b4a@1.8.1", "", { "peerDependencies": { "react-native-b4a": "*" }, "optionalPeers": ["react-native-b4a"] }, "sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw=="], - "bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], - "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - - "bare-events": ["bare-events@2.9.1", "", { "peerDependencies": { "bare-abort-controller": "*" }, "optionalPeers": ["bare-abort-controller"] }, "sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg=="], - - "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], - - "bignumber.js": ["bignumber.js@9.3.1", "", {}, "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ=="], - "bippy": ["bippy@0.5.43", "", { "peerDependencies": { "react": ">=17.0.1" } }, "sha512-Tvu7b1M7+d8b9/YHaCeODEsi2CgbuoBql+dWSBrNnCuqJ1gMUeY3i0r+319hvjjl5GVBP6FFWxrKnq3fhZER0w=="], "body-parser": ["body-parser@2.2.2", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.3", "http-errors": "^2.0.0", "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.1", "raw-body": "^3.0.1", "type-is": "^2.0.1" } }, "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="], - "bowser": ["bowser@2.14.1", "", {}, "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg=="], - - "brace-expansion": ["brace-expansion@2.1.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA=="], - - "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], - - "buffer": ["buffer@5.6.0", "", { "dependencies": { "base64-js": "^1.0.2", "ieee754": "^1.1.4" } }, "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw=="], - - "buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="], - "bun-ffi-structs": ["bun-ffi-structs@0.2.4", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-AJzsqoVFs1KBbJbWHIYrVZLDC3NhTqqh25awRXqzoLzmBAKr5oqk6+CwuYHAekKx+VBCYVohBoKuRq40dV+TYg=="], "bun-types": ["bun-types@1.3.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-4N0ig0fEomHt5R0KCFWjovxow98rIoRwKolrYdCcknNwMekCXRnWEUvgu5soYV8QXtVsrUD8B95MBOZGPvr6KQ=="], - "busboy": ["busboy@1.6.0", "", { "dependencies": { "streamsearch": "^1.1.0" } }, "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA=="], - "bytes": ["bytes@3.1.2", "", {}, "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="], "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], - "capnweb": ["capnweb@0.8.0", "", {}, "sha512-BK/TuXUiyfLSKsmjojn70yN7oYG/JJzoURZ3tckjg5Zj2KcygPm0A5jyOlswK7SYB4f0Gh9tt+RZ132b80iLfA=="], - "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], "character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], @@ -885,23 +815,15 @@ "character-reference-invalid": ["character-reference-invalid@2.0.1", "", {}, "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="], - "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], - - "cjs-module-lexer": ["cjs-module-lexer@2.2.0", "", {}, "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ=="], - "class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], - "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], + "classcat": ["classcat@5.0.5", "", {}, "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w=="], "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], - "collapse-white-space": ["collapse-white-space@2.1.0", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="], - - "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], - - "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], + "codemirror": ["codemirror@6.0.2", "", { "dependencies": { "@codemirror/autocomplete": "^6.0.0", "@codemirror/commands": "^6.0.0", "@codemirror/language": "^6.0.0", "@codemirror/lint": "^6.0.0", "@codemirror/search": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0" } }, "sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw=="], - "combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="], + "collapse-white-space": ["collapse-white-space@2.1.0", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="], "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], @@ -919,6 +841,8 @@ "cose-base": ["cose-base@1.0.3", "", { "dependencies": { "layout-base": "^1.0.0" } }, "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg=="], + "crelt": ["crelt@1.0.7", "", {}, "sha512-aK6BbWfhf4U/wCcLHKPJl/xa6VkVstRaPywWtMKGwuOLc/wZTyQYuoxgvZnNsBvv7Kg3YTBQYYBCggcviQczuA=="], + "cron-parser": ["cron-parser@5.6.1", "", { "dependencies": { "luxon": "^3.7.2" } }, "sha512-QBm4o1PwZiuY7KFbVvW7FLC8bozy7YWzv+Fz6KRS7sQghzcbDZCGxr/Bc5b6TQreAoSwuWVP491dIcK0THCX6A=="], "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], @@ -995,20 +919,20 @@ "d3-zoom": ["d3-zoom@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "2 - 3", "d3-transition": "2 - 3" } }, "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw=="], - "dagre-d3-es": ["dagre-d3-es@7.0.14", "", { "dependencies": { "d3": "^7.9.0", "lodash-es": "^4.17.21" } }, "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg=="], + "dagre": ["dagre@0.8.5", "", { "dependencies": { "graphlib": "^2.1.8", "lodash": "^4.17.15" } }, "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw=="], - "data-uri-to-buffer": ["data-uri-to-buffer@4.0.1", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="], + "dagre-d3-es": ["dagre-d3-es@7.0.14", "", { "dependencies": { "d3": "^7.9.0", "lodash-es": "^4.17.21" } }, "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg=="], "dayjs": ["dayjs@1.11.21", "", {}, "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA=="], "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + "decimal.js-light": ["decimal.js-light@2.5.1", "", {}, "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg=="], + "decode-named-character-reference": ["decode-named-character-reference@1.3.0", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q=="], "delaunator": ["delaunator@5.1.0", "", { "dependencies": { "robust-predicates": "^3.0.2" } }, "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ=="], - "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="], - "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], @@ -1023,40 +947,28 @@ "dompurify": ["dompurify@3.4.12", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-zQvGet8Z2sWbQhCmfFz/T5QWH2oBmjnqK3qvOjaqaNLrLEF912WamU+ohnTp0TCep/MFVHpdJuCZEdFOdTnEFg=="], - "dotenv": ["dotenv@17.4.2", "", {}, "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw=="], - "drizzle-orm": ["drizzle-orm@0.45.2", "", { "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=4", "@electric-sql/pglite": ">=0.2.0", "@libsql/client": ">=0.10.0", "@libsql/client-wasm": ">=0.10.0", "@neondatabase/serverless": ">=0.10.0", "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1.13", "@prisma/client": "*", "@tidbcloud/serverless": "*", "@types/better-sqlite3": "*", "@types/pg": "*", "@types/sql.js": "*", "@upstash/redis": ">=1.34.7", "@vercel/postgres": ">=0.8.0", "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", "expo-sqlite": ">=14.0.0", "gel": ">=2", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", "sql.js": ">=1", "sqlite3": ">=5" }, "optionalPeers": ["@aws-sdk/client-rds-data", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@libsql/client-wasm", "@neondatabase/serverless", "@op-engineering/op-sqlite", "@opentelemetry/api", "@planetscale/database", "@prisma/client", "@tidbcloud/serverless", "@types/better-sqlite3", "@types/pg", "@types/sql.js", "@upstash/redis", "@vercel/postgres", "@xata.io/client", "better-sqlite3", "bun-types", "expo-sqlite", "gel", "knex", "kysely", "mysql2", "pg", "postgres", "sql.js", "sqlite3"] }, "sha512-kY0BSaTNYWnoDMVoyY8uxmyHjpJW1geOmBMdSSicKo9CIIWkSxMIj2rkeSR51b8KAPB7m+qysjuHme5nKP+E5Q=="], "drizzle-zod": ["drizzle-zod@0.8.3", "", { "peerDependencies": { "drizzle-orm": ">=0.36.0", "zod": "^3.25.0 || ^4.0.0" } }, "sha512-66yVOuvGhKJnTdiqj1/Xaaz9/qzOdRJADpDa68enqS6g3t0kpNkwNYjUuaeXgZfO/UWuIM9HIhSlJ6C5ZraMww=="], "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], - "duplexify": ["duplexify@4.1.3", "", { "dependencies": { "end-of-stream": "^1.4.1", "inherits": "^2.0.3", "readable-stream": "^3.1.1", "stream-shift": "^1.0.2" } }, "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA=="], - - "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], - - "ecdsa-sig-formatter": ["ecdsa-sig-formatter@1.0.11", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ=="], - "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], - "effect": ["effect@3.21.4", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-B89v/xSgPbl1J2Ai2u18jxq3odpFauU1rC6/eSs4FeNHi72kwKdJp12VGigvRV2lK+kRnx+OOz41XV8guZd4gQ=="], + "effect": ["effect@4.0.0-beta.102", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "fast-check": "^4.9.0", "find-my-way-ts": "^0.1.6", "ini": "^7.0.0", "kubernetes-types": "^1.30.0", "msgpackr": "^2.0.4", "multipasta": "^0.2.8", "toml": "^4.1.2", "uuid": "^14.0.1", "yaml": "^2.9.0" } }, "sha512-z8Y+Q76Hh/kjLFZrXu8tGn6e+tDsg45R+UHhxd190pXxD53OGwf/G/zDxXTkse4HJ5mobNZfitLfUCp4fMvu6w=="], "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], - "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], + "entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="], "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], - "es-module-lexer": ["es-module-lexer@2.3.1", "", {}, "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA=="], - "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], - "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], - "es-toolkit": ["es-toolkit@1.49.0", "", {}, "sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g=="], "esast-util-from-estree": ["esast-util-from-estree@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-visit": "^2.0.0", "unist-util-position-from-estree": "^2.0.0" } }, "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ=="], @@ -1065,10 +977,10 @@ "esbuild": ["esbuild@0.28.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.0", "@esbuild/android-arm": "0.28.0", "@esbuild/android-arm64": "0.28.0", "@esbuild/android-x64": "0.28.0", "@esbuild/darwin-arm64": "0.28.0", "@esbuild/darwin-x64": "0.28.0", "@esbuild/freebsd-arm64": "0.28.0", "@esbuild/freebsd-x64": "0.28.0", "@esbuild/linux-arm": "0.28.0", "@esbuild/linux-arm64": "0.28.0", "@esbuild/linux-ia32": "0.28.0", "@esbuild/linux-loong64": "0.28.0", "@esbuild/linux-mips64el": "0.28.0", "@esbuild/linux-ppc64": "0.28.0", "@esbuild/linux-riscv64": "0.28.0", "@esbuild/linux-s390x": "0.28.0", "@esbuild/linux-x64": "0.28.0", "@esbuild/netbsd-arm64": "0.28.0", "@esbuild/netbsd-x64": "0.28.0", "@esbuild/openbsd-arm64": "0.28.0", "@esbuild/openbsd-x64": "0.28.0", "@esbuild/openharmony-arm64": "0.28.0", "@esbuild/sunos-x64": "0.28.0", "@esbuild/win32-arm64": "0.28.0", "@esbuild/win32-ia32": "0.28.0", "@esbuild/win32-x64": "0.28.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw=="], - "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], - "escape-html": ["escape-html@1.0.3", "", {}, "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="], + "escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + "estree-util-attach-comments": ["estree-util-attach-comments@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw=="], "estree-util-build-jsx": ["estree-util-build-jsx@3.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-walker": "^3.0.0" } }, "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ=="], @@ -1085,32 +997,22 @@ "etag": ["etag@1.8.1", "", {}, "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="], - "event-target-shim": ["event-target-shim@5.0.1", "", {}, "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="], - - "events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], - - "events-universal": ["events-universal@1.0.1", "", { "dependencies": { "bare-events": "^2.7.0" } }, "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw=="], + "eventemitter3": ["eventemitter3@5.0.4", "", {}, "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw=="], "eventsource": ["eventsource@3.0.7", "", { "dependencies": { "eventsource-parser": "^3.0.1" } }, "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA=="], "eventsource-parser": ["eventsource-parser@3.0.6", "", {}, "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg=="], - "expand-tilde": ["expand-tilde@2.0.2", "", { "dependencies": { "homedir-polyfill": "^1.0.1" } }, "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw=="], - "express": ["express@5.2.1", "", { "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", "depd": "^2.0.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "finalhandler": "^2.1.0", "fresh": "^2.0.0", "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", "mime-types": "^3.0.0", "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", "proxy-addr": "^2.0.7", "qs": "^6.14.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", "type-is": "^2.0.1", "vary": "^1.1.2" } }, "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw=="], "express-rate-limit": ["express-rate-limit@8.3.2", "", { "dependencies": { "ip-address": "10.1.0" }, "peerDependencies": { "express": ">= 4.11" } }, "sha512-77VmFeJkO0/rvimEDuUC5H30oqUC4EyOhyGccfqoLebB0oiEYfM7nwPrsDsBL1gsTpwfzX8SFy2MT3TDyRq+bg=="], "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], - "fast-check": ["fast-check@3.23.2", "", { "dependencies": { "pure-rand": "^6.1.0" } }, "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A=="], + "fast-check": ["fast-check@4.9.0", "", { "dependencies": { "pure-rand": "^8.0.0" } }, "sha512-7ms6T7SybUev/PQITciI0yLM2pOSFy5zpG8Ty7tQofcVaQUvrMXp6CBwqF6fThLCLOrfBtuHAtwq6Yu4XPCllg=="], "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], - "fast-fifo": ["fast-fifo@1.3.2", "", {}, "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="], - - "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], - "fast-string-truncated-width": ["fast-string-truncated-width@3.0.3", "", {}, "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g=="], "fast-string-width": ["fast-string-width@3.0.2", "", { "dependencies": { "fast-string-truncated-width": "^3.0.2" } }, "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg=="], @@ -1119,44 +1021,18 @@ "fast-wrap-ansi": ["fast-wrap-ansi@0.2.2", "", { "dependencies": { "fast-string-width": "^3.0.2" } }, "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q=="], - "fast-xml-builder": ["fast-xml-builder@1.3.0", "", { "dependencies": { "path-expression-matcher": "^1.6.2", "xml-naming": "^0.3.0" } }, "sha512-F74cZEdCvuw9P41GAC3rod4X04jjWGM1JPEv/GWSqFTWLsdyMSBMBMlm9Hk3GLBgLBbdBNY8yee0pQh2RBVESQ=="], - - "fast-xml-parser": ["fast-xml-parser@5.10.1", "", { "dependencies": { "@nodable/entities": "^3.0.0", "fast-xml-builder": "^1.2.0", "is-unsafe": "^2.0.0", "path-expression-matcher": "^1.6.2", "strnum": "^2.4.1", "xml-naming": "^0.3.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-IEMIf7298kXuZSRFoGfMYrl7is8LpavODgbNz1cwIudv7KwVFnuU+UsMporfq6PD6aXSlawZlARiA3UywCTfMw=="], - - "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], - - "fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="], - - "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], - "finalhandler": ["finalhandler@2.1.1", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA=="], "find-my-way-ts": ["find-my-way-ts@0.1.6", "", {}, "sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA=="], - "follow-redirects": ["follow-redirects@1.16.0", "", { "peerDependencies": { "debug": "*" }, "optionalPeers": ["debug"] }, "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw=="], - - "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], - - "form-data": ["form-data@4.0.6", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.4", "mime-types": "^2.1.35" } }, "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ=="], - - "formdata-polyfill": ["formdata-polyfill@4.0.10", "", { "dependencies": { "fetch-blob": "^3.1.2" } }, "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g=="], - "forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="], - "forwarded-parse": ["forwarded-parse@2.1.2", "", {}, "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw=="], - "fractional-indexing": ["fractional-indexing@3.4.0", "", {}, "sha512-8J3glhz2rrpKG6KmI7wmJo3zH1VjeOpN+vTJSw1fOyO+Viqq3zX6/5NGh6oaZB2qIAYdOYuu5Dz9xp4faOO0Pg=="], "fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="], "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], - "gaxios": ["gaxios@6.7.1", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "is-stream": "^2.0.0", "node-fetch": "^2.6.9", "uuid": "^9.0.1" } }, "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ=="], - - "gcp-metadata": ["gcp-metadata@6.1.1", "", { "dependencies": { "gaxios": "^6.1.1", "google-logging-utils": "^0.0.2", "json-bigint": "^1.0.0" } }, "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A=="], - - "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], - "get-east-asian-width": ["get-east-asian-width@1.5.0", "", {}, "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA=="], "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], @@ -1165,27 +1041,15 @@ "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], - "glob": ["glob@10.5.0", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="], - - "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - - "google-auth-library": ["google-auth-library@9.15.1", "", { "dependencies": { "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", "gaxios": "^6.1.1", "gcp-metadata": "^6.1.0", "gtoken": "^7.0.0", "jws": "^4.0.0" } }, "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng=="], - - "google-gax": ["google-gax@5.0.7", "", { "dependencies": { "@grpc/grpc-js": "^1.12.6", "@grpc/proto-loader": "^0.8.0", "duplexify": "^4.1.3", "google-auth-library": "10.5.0", "google-logging-utils": "1.1.3", "node-fetch": "^3.3.2", "object-hash": "^3.0.0", "proto3-json-serializer": "3.0.4", "protobufjs": "^7.5.4", "retry-request": "^8.0.2", "rimraf": "^5.0.1" } }, "sha512-EhiqaWWJ+9h7sCcKJTsoo6tMcjokVHhWsbSuWCnZJT4vIBP3y4mAoFLnt9SzgkVZeq24ZsFaArr06nnYYku2yA=="], - - "google-logging-utils": ["google-logging-utils@1.1.3", "", {}, "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA=="], - "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], - "gtoken": ["gtoken@7.1.0", "", { "dependencies": { "gaxios": "^6.0.0", "jws": "^4.0.0" } }, "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw=="], + "graphlib": ["graphlib@2.1.8", "", { "dependencies": { "lodash": "^4.17.15" } }, "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A=="], "hachure-fill": ["hachure-fill@0.5.2", "", {}, "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg=="], "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], - "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], - - "hasown": ["hasown@2.0.4", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A=="], + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], "hast-util-to-estree": ["hast-util-to-estree@3.1.3", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", "devlop": "^1.0.0", "estree-util-attach-comments": "^3.0.0", "estree-util-is-identifier-name": "^3.0.0", "hast-util-whitespace": "^3.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" } }, "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w=="], @@ -1195,25 +1059,15 @@ "hast-util-whitespace": ["hast-util-whitespace@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0" } }, "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw=="], - "homedir-polyfill": ["homedir-polyfill@1.0.3", "", { "dependencies": { "parse-passwd": "^1.0.0" } }, "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA=="], - "hono": ["hono@4.12.12", "", {}, "sha512-p1JfQMKaceuCbpJKAPKVqyqviZdS0eUxH9v82oWo1kb9xjQ5wA6iP3FNVAPDFlz5/p7d45lO+BpSk1tuSZMF4Q=="], - "html-entities": ["html-entities@2.6.0", "", {}, "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ=="], - "html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="], "http-errors": ["http-errors@2.0.1", "", { "dependencies": { "depd": "~2.0.0", "inherits": "~2.0.4", "setprototypeof": "~1.2.0", "statuses": "~2.0.2", "toidentifier": "~1.0.1" } }, "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="], - "http-proxy-agent": ["http-proxy-agent@5.0.0", "", { "dependencies": { "@tootallnate/once": "2", "agent-base": "6", "debug": "4" } }, "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w=="], - - "https-proxy-agent": ["https-proxy-agent@5.0.1", "", { "dependencies": { "agent-base": "6", "debug": "4" } }, "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA=="], - "iconv-lite": ["iconv-lite@0.7.2", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw=="], - "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], - - "import-in-the-middle": ["import-in-the-middle@3.3.1", "", { "dependencies": { "cjs-module-lexer": "^2.2.0", "es-module-lexer": "^2.2.0", "module-details-from-path": "^1.0.4" } }, "sha512-0rymlHSFLwZ0ixx8DaQkoIyZojJPY2a0K2nEYslhKJ6jIYO/m0IcCb7iQsFPmS7WmKwISZiIrv5Icstrw/CmqA=="], + "immer": ["immer@11.1.15", "", {}, "sha512-VrNANlmnWQnh5COXIIOQXM9oOJw7naGKlBT74ZOOR6lpVXc3gFEu9FJLDFcpCJ2j+NWr8TIwtWD//T6ZX6TKiQ=="], "import-meta-resolve": ["import-meta-resolve@4.2.0", "", {}, "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg=="], @@ -1221,6 +1075,8 @@ "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], + "ini": ["ini@7.0.0", "", {}, "sha512-ifK0CgjALofS5bkrcTy4RaQ9Vx2Knf/eLeIO+NaswQEpH1UblrtTSCIvN71qQDMq0PeQ/SSPojvEJp9vvvfr+w=="], + "inline-style-parser": ["inline-style-parser@0.2.7", "", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="], "internmap": ["internmap@2.0.3", "", {}, "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="], @@ -1235,78 +1091,70 @@ "is-decimal": ["is-decimal@2.0.1", "", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="], - "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], - - "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], - - "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], - "is-hexadecimal": ["is-hexadecimal@2.0.1", "", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="], - "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], - "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], "is-promise": ["is-promise@4.0.0", "", {}, "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="], - "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], - - "is-unsafe": ["is-unsafe@2.0.0", "", {}, "sha512-2LdV822R+wmI86unXA93WCFpL6g+av8ynWk0nrHyJqGop5VoocYsSLFgN8jrfalT6iGeLNM4KXuVSsULP53kEA=="], - "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], - "isomorphic-ws": ["isomorphic-ws@5.0.0", "", { "peerDependencies": { "ws": "*" } }, "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw=="], - - "jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], - "jose": ["jose@6.2.2", "", {}, "sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ=="], - "json-bigint": ["json-bigint@1.0.0", "", { "dependencies": { "bignumber.js": "^9.0.0" } }, "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ=="], - "json-schema": ["json-schema@0.4.0", "", {}, "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="], "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], "json-schema-typed": ["json-schema-typed@8.0.2", "", {}, "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA=="], - "jsonlines": ["jsonlines@0.1.1", "", {}, "sha512-ekDrAGso79Cvf+dtm+mL8OBI2bmAOt3gssYs833De/C9NmIpWDWyUO4zPgB5x2/OhY366dkhgfPMYfwZF7yOZA=="], - - "jwa": ["jwa@2.0.1", "", { "dependencies": { "buffer-equal-constant-time": "^1.0.1", "ecdsa-sig-formatter": "1.0.11", "safe-buffer": "^5.0.1" } }, "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg=="], - - "jws": ["jws@4.0.1", "", { "dependencies": { "jwa": "^2.0.1", "safe-buffer": "^5.0.1" } }, "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA=="], - - "katex": ["katex@0.16.47", "", { "dependencies": { "commander": "^8.3.0" }, "bin": { "katex": "cli.js" } }, "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg=="], + "katex": ["katex@0.17.0", "", { "dependencies": { "commander": "^8.3.0" }, "bin": { "katex": "cli.js" } }, "sha512-Vdw0ATsQ9V+LuegM/BTwQqV/6cTl5lbGcIrU+BCgLxyf6bo38ybOr372tuSIxir3CN720flu1meYR6XzNMwQnw=="], "khroma": ["khroma@2.1.0", "", {}, "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="], - "koffi": ["koffi@2.16.2", "", {}, "sha512-owU0MRwv6xkrVqCd+33uw6BaYppkTRXbO/rVdJNI2dvZG0gzyRhYwW25eWtc5pauwK8TGh3AbkFONSezdykfSA=="], - "kubernetes-types": ["kubernetes-types@1.30.0", "", {}, "sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q=="], "layout-base": ["layout-base@1.0.2", "", {}, "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="], - "lodash-es": ["lodash-es@4.18.1", "", {}, "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A=="], - - "lodash.camelcase": ["lodash.camelcase@4.3.0", "", {}, "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="], + "lodash": ["lodash@4.18.1", "", {}, "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="], - "long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="], + "lodash-es": ["lodash-es@4.18.1", "", {}, "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A=="], "longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], - "lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], - "lru_map": ["lru_map@0.4.1", "", {}, "sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg=="], "luxon": ["luxon@3.7.2", "", {}, "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew=="], + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + "markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], + "markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="], + "marked": ["marked@17.0.1", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-boeBdiS0ghpWcSwoNm/jJBwdpFaMnZWRzjA6SkUMYb40SVaN1x7mmfGKp0jvexGcx+7y2La5zRZsYFZI6Qpypg=="], "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], + "mdast-util-definitions": ["mdast-util-definitions@6.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ=="], + + "mdast-util-find-and-replace": ["mdast-util-find-and-replace@3.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg=="], + "mdast-util-from-markdown": ["mdast-util-from-markdown@2.0.3", "", { "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "mdast-util-to-string": "^4.0.0", "micromark": "^4.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q=="], + "mdast-util-gfm": ["mdast-util-gfm@3.1.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ=="], + + "mdast-util-gfm-autolink-literal": ["mdast-util-gfm-autolink-literal@2.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-find-and-replace": "^3.0.0", "micromark-util-character": "^2.0.0" } }, "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ=="], + + "mdast-util-gfm-footnote": ["mdast-util-gfm-footnote@2.1.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0" } }, "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ=="], + + "mdast-util-gfm-strikethrough": ["mdast-util-gfm-strikethrough@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg=="], + + "mdast-util-gfm-table": ["mdast-util-gfm-table@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "markdown-table": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg=="], + + "mdast-util-gfm-task-list-item": ["mdast-util-gfm-task-list-item@2.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ=="], + + "mdast-util-math": ["mdast-util-math@3.0.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "longest-streak": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.1.0", "unist-util-remove-position": "^5.0.0" } }, "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w=="], + "mdast-util-mdx": ["mdast-util-mdx@3.0.0", "", { "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w=="], "mdast-util-mdx-expression": ["mdast-util-mdx-expression@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" } }, "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ=="], @@ -1327,14 +1175,28 @@ "merge-descriptors": ["merge-descriptors@2.0.0", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="], - "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], - "mermaid": ["mermaid@11.16.0", "", { "dependencies": { "@braintree/sanitize-url": "^7.1.2", "@iconify/utils": "^3.0.2", "@mermaid-js/parser": "^1.2.0", "@types/d3": "^7.4.3", "@upsetjs/venn.js": "^2.0.0", "cytoscape": "^3.33.3", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", "d3": "^7.9.0", "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.14", "dayjs": "^1.11.20", "dompurify": "^3.3.3", "es-toolkit": "^1.45.1", "katex": "^0.16.45", "khroma": "^2.1.0", "marked": "^16.3.0", "roughjs": "^4.6.6", "stylis": "^4.3.6", "ts-dedent": "^2.2.0", "uuid": "^11.1.0 || ^12 || ^13 || ^14.0.0" } }, "sha512-Zvm3kbstgdpvIJPPItlL7fppIZ3kibvc1oZIGxdvk9t6UFz6flv+Jw7FtRGKwfcI8OckmH04LqG6LlS6X4B1pA=="], "micromark": ["micromark@4.0.2", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="], "micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="], + "micromark-extension-gfm": ["micromark-extension-gfm@3.0.0", "", { "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", "micromark-extension-gfm-strikethrough": "^2.0.0", "micromark-extension-gfm-table": "^2.0.0", "micromark-extension-gfm-tagfilter": "^2.0.0", "micromark-extension-gfm-task-list-item": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w=="], + + "micromark-extension-gfm-autolink-literal": ["micromark-extension-gfm-autolink-literal@2.1.0", "", { "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw=="], + + "micromark-extension-gfm-footnote": ["micromark-extension-gfm-footnote@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw=="], + + "micromark-extension-gfm-strikethrough": ["micromark-extension-gfm-strikethrough@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw=="], + + "micromark-extension-gfm-table": ["micromark-extension-gfm-table@2.1.1", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg=="], + + "micromark-extension-gfm-tagfilter": ["micromark-extension-gfm-tagfilter@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg=="], + + "micromark-extension-gfm-task-list-item": ["micromark-extension-gfm-task-list-item@2.1.0", "", { "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw=="], + + "micromark-extension-math": ["micromark-extension-math@3.1.0", "", { "dependencies": { "@types/katex": "^0.16.0", "devlop": "^1.0.0", "katex": "^0.16.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg=="], + "micromark-extension-mdx-expression": ["micromark-extension-mdx-expression@3.0.1", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q=="], "micromark-extension-mdx-jsx": ["micromark-extension-mdx-jsx@3.0.2", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ=="], @@ -1387,44 +1249,26 @@ "micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="], - "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], - - "mime": ["mime@3.0.0", "", { "bin": { "mime": "cli.js" } }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="], - "mime-db": ["mime-db@1.54.0", "", {}, "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="], "mime-types": ["mime-types@3.0.2", "", { "dependencies": { "mime-db": "^1.54.0" } }, "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="], - "minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="], - - "minipass": ["minipass@7.1.3", "", {}, "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A=="], - - "minizlib": ["minizlib@3.1.0", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw=="], - - "module-details-from-path": ["module-details-from-path@1.0.4", "", {}, "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w=="], - "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - "msgpackr": ["msgpackr@1.12.1", "", { "optionalDependencies": { "msgpackr-extract": "^3.0.2" } }, "sha512-4EUH9tQHnMmEgzW/MdAP0KIfa1T9AF+htl0ffe2n5vb2EKn9y2co8ccpgWko6S52Jy1PQZKwRnx5/KkYjtd9MQ=="], + "msgpackr": ["msgpackr@2.0.5", "", { "optionalDependencies": { "msgpackr-extract": "^3.0.4" } }, "sha512-cef05H/dSYpLpqp3sj/qyZh5vhUYCalnaLO7j1yOmpsR0y/XwLVtK7r5gn+U/F7CTEfMowcGhlUQJDLcLf7jcA=="], - "msgpackr-extract": ["msgpackr-extract@3.0.3", "", { "dependencies": { "node-gyp-build-optional-packages": "5.2.2" }, "optionalDependencies": { "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" }, "bin": { "download-msgpackr-prebuilds": "bin/download-prebuilds.js" } }, "sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA=="], + "msgpackr-extract": ["msgpackr-extract@3.0.4", "", { "dependencies": { "node-gyp-build-optional-packages": "5.2.2" }, "optionalDependencies": { "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.4", "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.4", "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.4", "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.4", "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.4", "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.4" }, "bin": { "download-msgpackr-prebuilds": "bin/download-prebuilds.js" } }, "sha512-4kmO/MdyUIkLIvTPr8VHLil4AtoKIoniWPIEk5+CDy0xnWC84azhSFmuJ7PxZdsYtiP5kEeQsORAVIeMgxT+Hw=="], - "multipasta": ["multipasta@0.2.7", "", {}, "sha512-KPA58d68KgGil15oDqXjkUBEBYc00XvbPj5/X+dyzeo/lWm9Nc25pQRlf1D+gv4OpK7NM0J1odrbu9JNNGvynA=="], + "multipasta": ["multipasta@0.2.8", "", {}, "sha512-ZPWuMKyv0cSO29f7hozp+k6+crZbQijV8ipMvxNxRf2SwtYGTX1ZX89Kd20VV4H9Znonx+EQn+iy1wGQsJ+b+Q=="], - "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], + "nanoid": ["nanoid@5.1.16", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ=="], - "node-addon-api": ["node-addon-api@7.1.1", "", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="], - - "node-domexception": ["node-domexception@1.0.0", "", {}, "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="], - - "node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], + "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], "node-gyp-build-optional-packages": ["node-gyp-build-optional-packages@5.2.2", "", { "dependencies": { "detect-libc": "^2.0.1" }, "bin": { "node-gyp-build-optional-packages": "bin.js", "node-gyp-build-optional-packages-optional": "optional.js", "node-gyp-build-optional-packages-test": "build-test.js" } }, "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw=="], "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], - "object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="], - "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], "on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="], @@ -1435,32 +1279,20 @@ "oniguruma-to-es": ["oniguruma-to-es@4.3.6", "", { "dependencies": { "oniguruma-parser": "^0.12.2", "regex": "^6.1.0", "regex-recursion": "^6.0.2" } }, "sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA=="], - "os-paths": ["os-paths@4.4.0", "", {}, "sha512-wrAwOeXp1RRMFfQY8Sy7VaGVmPocaLwSFOYCGKSyo8qmJ+/yaafCl5BCA1IQZWqFSRBrKDYFeR9d/VyQzfH/jg=="], - - "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], - - "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], + "orderedmap": ["orderedmap@2.1.1", "", {}, "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g=="], "package-manager-detector": ["package-manager-detector@1.7.0", "", {}, "sha512-xg1eHpwYL/D/HEdWw2goFZP6vV0FH7W+PZ5rFkGjdIDLtxq7EkzBUeT3m+lndYCt8wKbmofUu1MUdMCXkCk9ZQ=="], "parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], - "parse-passwd": ["parse-passwd@1.0.0", "", {}, "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q=="], - "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], "path-data-parser": ["path-data-parser@0.1.0", "", {}, "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w=="], - "path-expression-matcher": ["path-expression-matcher@1.6.2", "", {}, "sha512-enSlaiat05iasnzmgNxRj8reFdj3puY2QpNgP1aPIaVfT6nn9ICuPoFlKHk8EN22HcwewshO+mN2DGbkCEOtqQ=="], - "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], - "path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], - "path-to-regexp": ["path-to-regexp@8.4.2", "", {}, "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA=="], - "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - "pg": ["pg@8.22.0", "", { "dependencies": { "pg-connection-string": "^2.14.0", "pg-pool": "^3.14.0", "pg-protocol": "^1.15.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, "optionalDependencies": { "pg-cloudflare": "^1.4.0" }, "peerDependencies": { "pg-native": ">=3.0.1" }, "optionalPeers": ["pg-native"] }, "sha512-8wih1vVIBMxoUM2oB4soJsD9tDnDpLv4OXBJ+EJzFsvycD+lfyIreC2gGHq78f8jbLLt+bvlPTFdFZfJkOuzAA=="], "pg-cloudflare": ["pg-cloudflare@1.4.0", "", {}, "sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A=="], @@ -1479,14 +1311,14 @@ "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], - "pkce-challenge": ["pkce-challenge@5.0.1", "", {}, "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ=="], "points-on-curve": ["points-on-curve@0.2.0", "", {}, "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A=="], "points-on-path": ["points-on-path@0.2.1", "", { "dependencies": { "path-data-parser": "0.1.0", "points-on-curve": "0.2.0" } }, "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g=="], + "postcss": ["postcss@8.5.25", "", { "dependencies": { "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw=="], + "postgres-array": ["postgres-array@2.0.0", "", {}, "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="], "postgres-bytea": ["postgres-bytea@1.0.1", "", {}, "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ=="], @@ -1497,19 +1329,43 @@ "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], - "proto3-json-serializer": ["proto3-json-serializer@3.0.4", "", { "dependencies": { "protobufjs": "^7.4.0" } }, "sha512-E1sbAYg3aEbXrq0n1ojJkRHQJGE1kaE/O6GLA94y8rnJBfgvOPTOd1b9hOceQK1FFZI9qMh1vBERCyO2ifubcw=="], + "prosemirror-changeset": ["prosemirror-changeset@2.4.1", "", { "dependencies": { "prosemirror-transform": "^1.0.0" } }, "sha512-96WBLhOaYhJ+kPhLg3uW359Tz6I/MfcrQfL4EGv4SrcqKEMC1gmoGrXHecPE8eOwTVCJ4IwgfzM8fFad25wNfw=="], - "protobufjs": ["protobufjs@7.6.5", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.5", "@protobufjs/eventemitter": "^1.1.1", "@protobufjs/fetch": "^1.1.1", "@protobufjs/float": "^1.0.2", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", "long": "^5.3.2" } }, "sha512-/FPD0nUc9jH6rfFjji9IBqOz4pcSE3CsT1m7Ep6Mdb0LxSUMj8hgl6GomOvZzpNpAqqGaXA0P3VSrZLFzIhQrw=="], + "prosemirror-commands": ["prosemirror-commands@1.7.1", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.10.2" } }, "sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w=="], - "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], + "prosemirror-drop-indicator": ["prosemirror-drop-indicator@0.1.4", "", { "dependencies": { "@ocavue/utils": "^1.6.0", "prosemirror-model": "^1.25.7", "prosemirror-state": "^1.4.4", "prosemirror-view": "^1.41.8" } }, "sha512-YaRB1pZmU5GCorPVWbc9dbhbwqr4iMBO/AjPu4BTKHCUzxEDUXje2dUyoxOHib/z4uyPUZTJz64h7mHDJZeSzA=="], - "proxy-from-env": ["proxy-from-env@2.1.0", "", {}, "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA=="], + "prosemirror-dropcursor": ["prosemirror-dropcursor@1.8.3", "", { "dependencies": { "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.1.0", "prosemirror-view": "^1.1.0" } }, "sha512-FoYbsJR8gK+DGlqhNoE29Loa38eIZPzQRIb1VMaDNBoo4OLP6vVof/jR8qFY/6XvUd6Dhug8MDCHl2a/h8RTfQ=="], - "pure-rand": ["pure-rand@6.1.0", "", {}, "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA=="], + "prosemirror-gapcursor": ["prosemirror-gapcursor@1.4.1", "", { "dependencies": { "prosemirror-keymap": "^1.0.0", "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-view": "^1.0.0" } }, "sha512-pMdYaEnjNMSwl11yjEGtgTmLkR08m/Vl+Jj443167p9eB3HVQKhYCc4gmHVDsLPODfZfjr/MmirsdyZziXbQKw=="], - "qs": ["qs@6.15.1", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg=="], + "prosemirror-history": ["prosemirror-history@1.5.0", "", { "dependencies": { "prosemirror-state": "^1.2.2", "prosemirror-transform": "^1.0.0", "prosemirror-view": "^1.31.0", "rope-sequence": "^1.3.0" } }, "sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg=="], + + "prosemirror-inputrules": ["prosemirror-inputrules@1.5.1", "", { "dependencies": { "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.0.0" } }, "sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw=="], + + "prosemirror-keymap": ["prosemirror-keymap@1.2.3", "", { "dependencies": { "prosemirror-state": "^1.0.0", "w3c-keyname": "^2.2.0" } }, "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw=="], + + "prosemirror-model": ["prosemirror-model@1.25.11", "", { "dependencies": { "orderedmap": "^2.0.0" } }, "sha512-QWg9RhnpLlogAmp3p96uEFrE5txQpFynd4vhBAELkwgOCWQs/X0yCzB3/hrHqiPwf91RG5KyWq6553zs9JqIOQ=="], + + "prosemirror-safari-ime-span": ["prosemirror-safari-ime-span@1.0.2", "", { "dependencies": { "prosemirror-state": "^1.4.3", "prosemirror-view": "^1.33.8" } }, "sha512-QJqD8s1zE/CuK56kDsUhndh5hiHh/gFnAuPOA9ytva2s85/ZEt2tNWeALTJN48DtWghSKOmiBsvVn2OlnJ5H2w=="], + + "prosemirror-schema-list": ["prosemirror-schema-list@1.5.1", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.7.3" } }, "sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q=="], + + "prosemirror-state": ["prosemirror-state@1.4.4", "", { "dependencies": { "prosemirror-model": "^1.0.0", "prosemirror-transform": "^1.0.0", "prosemirror-view": "^1.27.0" } }, "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw=="], + + "prosemirror-tables": ["prosemirror-tables@1.8.5", "", { "dependencies": { "prosemirror-keymap": "^1.2.3", "prosemirror-model": "^1.25.4", "prosemirror-state": "^1.4.4", "prosemirror-transform": "^1.10.5", "prosemirror-view": "^1.41.4" } }, "sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw=="], + + "prosemirror-transform": ["prosemirror-transform@1.12.0", "", { "dependencies": { "prosemirror-model": "^1.21.0" } }, "sha512-GxboyN4AMIsoHNtz5uf2r2Ru551i5hWeCMD6E2Ib4Eogqoub0NflniaBPVQ4MrGE5yZ8JV9tUHg9qcZTTrcN4w=="], + + "prosemirror-view": ["prosemirror-view@1.42.2", "", { "dependencies": { "prosemirror-model": "^1.25.8", "prosemirror-state": "^1.0.0", "prosemirror-transform": "^1.1.0" } }, "sha512-Pdg0l5kXm8aLDquFAnQFTCITg0q44sLqBlHlpsVLD9segdOao8TOfQdAhCrCXyVgPSRr6UDDROOIWA3bIrN9YQ=="], - "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], + "prosemirror-virtual-cursor": ["prosemirror-virtual-cursor@0.4.2", "", { "peerDependencies": { "prosemirror-model": "^1.0.0", "prosemirror-state": "^1.0.0", "prosemirror-view": "^1.0.0" }, "optionalPeers": ["prosemirror-model", "prosemirror-state", "prosemirror-view"] }, "sha512-pUMKnIuOhhnMcgIJUjhIQTVJruBEGxfMBVQSrK0g2qhGPDm1i12KdsVaFw15dYk+29tZcxjMeR7P5VDKwmbwJg=="], + + "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], + + "pure-rand": ["pure-rand@8.4.2", "", {}, "sha512-vvuOGgcuPJAirlHvuQw1TrOiw7ptaIXXmIbNuiNOY6lNGJJH49PQ1Kj4nd783nPdQhQdicgOjVI2yI/9BD6/Ng=="], + + "qs": ["qs@6.15.1", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg=="], "radix-ui": ["radix-ui@1.6.2", "", { "dependencies": { "@radix-ui/primitive": "1.1.5", "@radix-ui/react-accessible-icon": "1.1.11", "@radix-ui/react-accordion": "1.2.16", "@radix-ui/react-alert-dialog": "1.1.19", "@radix-ui/react-arrow": "1.1.11", "@radix-ui/react-aspect-ratio": "1.1.11", "@radix-ui/react-avatar": "1.2.2", "@radix-ui/react-checkbox": "1.3.7", "@radix-ui/react-collapsible": "1.1.16", "@radix-ui/react-collection": "1.1.12", "@radix-ui/react-compose-refs": "1.1.3", "@radix-ui/react-context": "1.2.0", "@radix-ui/react-context-menu": "2.3.3", "@radix-ui/react-dialog": "1.1.19", "@radix-ui/react-direction": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.15", "@radix-ui/react-dropdown-menu": "2.1.20", "@radix-ui/react-focus-guards": "1.1.4", "@radix-ui/react-focus-scope": "1.1.12", "@radix-ui/react-form": "0.1.12", "@radix-ui/react-hover-card": "1.1.19", "@radix-ui/react-label": "2.1.11", "@radix-ui/react-menu": "2.1.20", "@radix-ui/react-menubar": "1.1.20", "@radix-ui/react-navigation-menu": "1.2.18", "@radix-ui/react-one-time-password-field": "0.1.12", "@radix-ui/react-password-toggle-field": "0.1.7", "@radix-ui/react-popover": "1.1.19", "@radix-ui/react-popper": "1.3.3", "@radix-ui/react-portal": "1.1.13", "@radix-ui/react-presence": "1.1.7", "@radix-ui/react-primitive": "2.1.7", "@radix-ui/react-progress": "1.1.12", "@radix-ui/react-radio-group": "1.4.3", "@radix-ui/react-roving-focus": "1.1.15", "@radix-ui/react-scroll-area": "1.2.14", "@radix-ui/react-select": "2.3.3", "@radix-ui/react-separator": "1.1.11", "@radix-ui/react-slider": "1.4.3", "@radix-ui/react-slot": "1.3.0", "@radix-ui/react-switch": "1.3.3", "@radix-ui/react-tabs": "1.1.17", "@radix-ui/react-toast": "1.2.19", "@radix-ui/react-toggle": "1.1.14", "@radix-ui/react-toggle-group": "1.1.15", "@radix-ui/react-toolbar": "1.1.15", "@radix-ui/react-tooltip": "1.2.12", "@radix-ui/react-use-callback-ref": "1.1.2", "@radix-ui/react-use-controllable-state": "1.2.3", "@radix-ui/react-use-effect-event": "0.0.3", "@radix-ui/react-use-escape-keydown": "1.1.3", "@radix-ui/react-use-is-hydrated": "0.1.1", "@radix-ui/react-use-layout-effect": "1.1.2", "@radix-ui/react-use-size": "1.1.2", "@radix-ui/react-visually-hidden": "1.2.7" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-OwYUjzMwiInCUxgAWpPsavXC3Kh4iyi/49uU1/qZTG3RQDlvegyk1GOMiGvSkjua1RDb3JD3fo3eroL9FV4GQw=="], @@ -1523,15 +1379,19 @@ "react-dom": ["react-dom@19.2.7", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.7" } }, "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ=="], + "react-is": ["react-is@19.2.8", "", {}, "sha512-s5un28nYxKJw5gvUHyW5PCC28CvBqLu9r3cWgzHT4Vo/5fqqkFcdRYsGcKf50WMPpjjFZS5d76fn3YCo2njKwQ=="], + "react-reconciler": ["react-reconciler@0.33.0", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.0" } }, "sha512-KetWRytFv1epdpJc3J4G75I4WrplZE5jOL7Yq0p34+OVOKF4Se7WrdIdVC45XsSSmUTlht2FM/fM1FZb1mfQeA=="], + "react-redux": ["react-redux@9.3.0", "", { "dependencies": { "@types/use-sync-external-store": "^0.0.6", "use-sync-external-store": "^1.4.0" }, "peerDependencies": { "@types/react": "^18.2.25 || ^19", "react": "^18.0 || ^19", "redux": "^5.0.0" }, "optionalPeers": ["@types/react", "redux"] }, "sha512-KQopgqFo/p/fgmAs5qz6p5RWaNAzq40WAu7fJIXnQpYxFPbJYtsJPWvGeF2rOBaY/kEuV77AVsX8TsQzKm+A/g=="], + "react-remove-scroll": ["react-remove-scroll@2.7.2", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q=="], "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], - "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + "recharts": ["recharts@3.10.1", "", { "dependencies": { "@reduxjs/toolkit": "^1.9.0 || 2.x.x", "clsx": "^2.1.1", "decimal.js-light": "^2.5.1", "es-toolkit": "^1.39.3", "eventemitter3": "^5.0.1", "immer": "^11.1.8", "react-redux": "8.x.x || 9.x.x", "reselect": "5.2.0", "tiny-invariant": "^1.3.3", "use-sync-external-store": "^1.2.2", "victory-vendor": "^37.0.2" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-QXFrvt6IVcw7eeZCoyXTwkIJAX3Dv1nyVhMicXJ47GsGDDpcN8z6o644DibE9XjpBTThtsomLKnTV6lc+cVFUA=="], "recma-build-jsx": ["recma-build-jsx@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew=="], @@ -1541,6 +1401,10 @@ "recma-stringify": ["recma-stringify@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-to-js": "^2.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g=="], + "redux": ["redux@5.0.1", "", {}, "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w=="], + + "redux-thunk": ["redux-thunk@3.1.0", "", { "peerDependencies": { "redux": "^5.0.0" } }, "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw=="], + "regex": ["regex@6.1.0", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg=="], "regex-recursion": ["regex-recursion@6.0.2", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg=="], @@ -1549,38 +1413,36 @@ "rehype-recma": ["rehype-recma@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", "hast-util-to-estree": "^3.0.0" } }, "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw=="], - "remark-mdx": ["remark-mdx@3.1.1", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg=="], + "remark": ["remark@15.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A=="], - "remark-parse": ["remark-parse@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="], + "remark-gfm": ["remark-gfm@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="], - "remark-rehype": ["remark-rehype@11.1.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="], + "remark-inline-links": ["remark-inline-links@7.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-definitions": "^6.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-4uj1pPM+F495ySZhTIB6ay2oSkTsKgmYaKk/q5HIdhX2fuyLEegpjWa0VdJRJ01sgOqAFo7MBKdDUejIYBMVMQ=="], - "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], + "remark-math": ["remark-math@6.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-math": "^3.0.0", "micromark-extension-math": "^3.0.0", "unified": "^11.0.0" } }, "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA=="], - "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], + "remark-mdx": ["remark-mdx@3.1.1", "", { "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" } }, "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg=="], - "require-in-the-middle": ["require-in-the-middle@8.0.1", "", { "dependencies": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3" } }, "sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ=="], + "remark-parse": ["remark-parse@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "micromark-util-types": "^2.0.0", "unified": "^11.0.0" } }, "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA=="], - "retry": ["retry@0.13.1", "", {}, "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="], + "remark-rehype": ["remark-rehype@11.1.2", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "mdast-util-to-hast": "^13.0.0", "unified": "^11.0.0", "vfile": "^6.0.0" } }, "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw=="], - "retry-request": ["retry-request@7.0.2", "", { "dependencies": { "@types/request": "^2.48.8", "extend": "^3.0.2", "teeny-request": "^9.0.0" } }, "sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w=="], + "remark-stringify": ["remark-stringify@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="], - "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], + "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], - "rimraf": ["rimraf@5.0.10", "", { "dependencies": { "glob": "^10.3.7" }, "bin": { "rimraf": "dist/esm/bin.mjs" } }, "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ=="], + "reselect": ["reselect@5.2.0", "", {}, "sha512-AgZ3UOZm3YndfrJ4OYjgrT7bmCm/1iqkjvEfH/oYjzh6PD2qw4QuT3jjnXIrpdt4MTpMXclMT3lXbmRY+XRakw=="], "robust-predicates": ["robust-predicates@3.0.3", "", {}, "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA=="], + "rope-sequence": ["rope-sequence@1.3.4", "", {}, "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ=="], + "roughjs": ["roughjs@4.6.6", "", { "dependencies": { "hachure-fill": "^0.5.2", "path-data-parser": "^0.1.0", "points-on-curve": "^0.2.0", "points-on-path": "^0.2.1" } }, "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ=="], "router": ["router@2.2.0", "", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="], - "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], - "rw": ["rw@1.3.3", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="], - "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], - "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], @@ -1607,47 +1469,29 @@ "side-channel-weakmap": ["side-channel-weakmap@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" } }, "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="], - "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], - "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], - "smithers-orchestrator": ["smithers-orchestrator@0.28.0", "", { "dependencies": { "@mdx-js/esbuild": "^3.1.1", "@smithers-orchestrator/agents": "0.28.0", "@smithers-orchestrator/aws": "0.28.0", "@smithers-orchestrator/cli": "0.28.0", "@smithers-orchestrator/cloudflare": "0.28.0", "@smithers-orchestrator/components": "0.28.0", "@smithers-orchestrator/control-plane": "0.28.0", "@smithers-orchestrator/daytona": "0.28.0", "@smithers-orchestrator/db": "0.28.0", "@smithers-orchestrator/driver": "0.28.0", "@smithers-orchestrator/engine": "0.28.0", "@smithers-orchestrator/errors": "0.28.0", "@smithers-orchestrator/gateway-client": "0.28.0", "@smithers-orchestrator/gateway-react": "0.28.0", "@smithers-orchestrator/gateway-ui": "0.28.0", "@smithers-orchestrator/gcp": "0.28.0", "@smithers-orchestrator/graph": "0.28.0", "@smithers-orchestrator/memory": "0.28.0", "@smithers-orchestrator/observability": "0.28.0", "@smithers-orchestrator/openapi": "0.28.0", "@smithers-orchestrator/react-reconciler": "0.28.0", "@smithers-orchestrator/sandbox": "0.28.0", "@smithers-orchestrator/scheduler": "0.28.0", "@smithers-orchestrator/scorers": "0.28.0", "@smithers-orchestrator/server": "0.28.0", "@smithers-orchestrator/telegram": "0.28.0", "@smithers-orchestrator/testing": "0.28.0", "@smithers-orchestrator/time-travel": "0.28.0", "@smithers-orchestrator/tool-context": "0.28.0", "@smithers-orchestrator/ui": "0.28.0", "@smithers-orchestrator/vcs": "0.28.0", "@smithers-orchestrator/vercel": "0.28.0", "ai": "^7.0.10", "diff": "^9.0.0", "drizzle-orm": "^0.45.2", "effect": "3.21.4", "incur": "^0.4.10", "react": "^19.2.7", "zod": "^4.4.3" }, "optionalDependencies": { "@electric-sql/pglite": "0.5.4", "@electric-sql/pglite-socket": "0.2.6", "pg": "^8.22.0" }, "bin": { "smithers": "src/bin/smithers.js" } }, "sha512-p+Qpl+VeefS1xuRo6nYhWqy8dFw+KM7eP2ycALIEh+w3ajtv1dTkmRDbBbQQ9ZkyWJaC/NDFVJDokGjymOJp8g=="], + "smthrs": ["smthrs@0.33.0", "", { "dependencies": { "@mdx-js/esbuild": "^3.1.1", "@smthrs/agents": "0.33.0", "@smthrs/aws": "0.33.0", "@smthrs/cli": "0.33.0", "@smthrs/cloudflare": "0.33.0", "@smthrs/components": "0.33.0", "@smthrs/control-plane": "0.33.0", "@smthrs/daytona": "0.33.0", "@smthrs/db": "0.33.0", "@smthrs/driver": "0.33.0", "@smthrs/engine": "0.33.0", "@smthrs/errors": "0.33.0", "@smthrs/gateway-client": "0.33.0", "@smthrs/gateway-react": "0.33.0", "@smthrs/gateway-ui": "0.33.0", "@smthrs/gcp": "0.33.0", "@smthrs/graph": "0.33.0", "@smthrs/memory": "0.33.0", "@smthrs/microsandbox": "0.33.0", "@smthrs/observability": "0.33.0", "@smthrs/openapi": "0.33.0", "@smthrs/react-reconciler": "0.33.0", "@smthrs/sandbox": "0.33.0", "@smthrs/scheduler": "0.33.0", "@smthrs/scorers": "0.33.0", "@smthrs/server": "0.33.0", "@smthrs/telegram": "0.33.0", "@smthrs/testing": "0.33.0", "@smthrs/time-travel": "0.33.0", "@smthrs/tool-context": "0.33.0", "@smthrs/ui": "0.33.0", "@smthrs/vcs": "0.33.0", "@smthrs/vercel": "0.33.0", "@smthrs/xstate": "0.33.0", "ai": "^7.0.10", "diff": "^9.0.0", "drizzle-orm": "^0.45.2", "effect": "4.0.0-beta.102", "incur": "^0.4.10", "react": "^19.2.7", "zod": "^4.4.3" }, "optionalDependencies": { "@electric-sql/pglite": "^0.5.4", "@electric-sql/pglite-socket": "^0.2.6", "pg": "^8.22.0" }, "bin": { "smithers": "src/bin/smithers.js" } }, "sha512-X2KvPu3Ly5jtgHoOns/YwwEFsGHxadJUk+OjW5mNx4VoYT6rl2gII+9FVGPKHC0cNYBDBoLzvYCX61IvYKWKpQ=="], "sorted-btree": ["sorted-btree@1.8.1", "", {}, "sha512-395+XIP+wqNn3USkFSrNz7G3Ss/MXlZEqesxvzCRFwL14h6e8LukDHdLBePn5pwbm5OQ9vGu8mDyz2lLDIqamQ=="], "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], "split2": ["split2@4.2.0", "", {}, "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg=="], "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], - "stream-browserify": ["stream-browserify@3.0.0", "", { "dependencies": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" } }, "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA=="], - - "stream-events": ["stream-events@1.0.5", "", { "dependencies": { "stubs": "^3.0.0" } }, "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg=="], - - "stream-shift": ["stream-shift@1.0.3", "", {}, "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ=="], - - "streamsearch": ["streamsearch@1.1.0", "", {}, "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg=="], - - "streamx": ["streamx@2.28.0", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw=="], - "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], - "string-width-cjs": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - - "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], - "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], "strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], - "strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - - "strnum": ["strnum@2.4.1", "", { "dependencies": { "anynum": "^1.0.1" } }, "sha512-M9eUSMT2dCB2cTNPG7UYj6KuK7RJR2SN2+yCV/fTW3xzTCS6EaGZ5pSMgDIjB7r8zSfTGk+dvvn9rTjpVS9Mwg=="], - - "stubs": ["stubs@3.0.0", "", {}, "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw=="], + "style-mod": ["style-mod@4.1.3", "", {}, "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ=="], "style-to-js": ["style-to-js@1.1.21", "", { "dependencies": { "style-to-object": "1.0.14" } }, "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="], @@ -1655,23 +1499,15 @@ "stylis": ["stylis@4.4.0", "", {}, "sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA=="], - "tar": ["tar@7.5.20", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-9FcyK4PA6+WbzlTM9WhQm6vB5W7cP7dUiPsv1g7YDwEQnQ1CGpK3MGlKk/ITVWMk05kHZuBhmVhiv8LZoy/PFQ=="], - - "tar-stream": ["tar-stream@3.1.7", "", { "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ=="], - - "teeny-request": ["teeny-request@9.0.0", "", { "dependencies": { "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.0", "node-fetch": "^2.6.9", "stream-events": "^1.0.5", "uuid": "^9.0.0" } }, "sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g=="], - - "text-decoder": ["text-decoder@1.2.7", "", { "dependencies": { "b4a": "^1.6.4" } }, "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ=="], + "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], "tinyexec": ["tinyexec@1.2.4", "", {}, "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg=="], - "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], - "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], "tokenx": ["tokenx@1.3.0", "", {}, "sha512-NLdXTEZkKiO0gZuLtMoZKjCXTREXeZZt8nnnNeyoXtNZAfG/GKGSbQtLU5STspc0rMSwcA+UJfWZkbNU01iKmQ=="], - "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], + "toml": ["toml@4.3.0", "", {}, "sha512-lVb8X9BsPVuH0M4BKeS91tXAmJvCjQ5UIyAbQFaxkKGyUFK2RPkhwaFSQH8vbpl1d23eu/IBH+dwVMHWaq9A5A=="], "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], @@ -1683,9 +1519,7 @@ "type-is": ["type-is@2.0.1", "", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="], - "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - - "undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="], + "typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="], "undici-types": ["undici-types@7.19.2", "", {}, "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg=="], @@ -1697,6 +1531,8 @@ "unist-util-position-from-estree": ["unist-util-position-from-estree@2.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ=="], + "unist-util-remove-position": ["unist-util-remove-position@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q=="], + "unist-util-stringify-position": ["unist-util-stringify-position@4.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ=="], "unist-util-visit": ["unist-util-visit@5.1.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg=="], @@ -1711,9 +1547,7 @@ "use-sync-external-store": ["use-sync-external-store@1.6.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w=="], - "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], - - "uuid": ["uuid@11.1.0", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="], + "uuid": ["uuid@14.0.1", "", { "bin": { "uuid": "dist-node/bin/uuid" } }, "sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew=="], "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], @@ -1721,54 +1555,34 @@ "vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], - "web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], + "victory-vendor": ["victory-vendor@37.3.6", "", { "dependencies": { "@types/d3-array": "^3.0.3", "@types/d3-ease": "^3.0.0", "@types/d3-interpolate": "^3.0.1", "@types/d3-scale": "^4.0.2", "@types/d3-shape": "^3.1.0", "@types/d3-time": "^3.0.0", "@types/d3-timer": "^3.0.0", "d3-array": "^3.1.6", "d3-ease": "^3.0.1", "d3-interpolate": "^3.0.1", "d3-scale": "^4.0.2", "d3-shape": "^3.1.0", "d3-time": "^3.0.0", "d3-timer": "^3.0.1" } }, "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ=="], - "web-tree-sitter": ["web-tree-sitter@0.25.10", "", { "peerDependencies": { "@types/emscripten": "^1.40.0" }, "optionalPeers": ["@types/emscripten"] }, "sha512-Y09sF44/13XvgVKgO2cNDw5rGk6s26MgoZPXLESvMXeefBf7i6/73eFurre0IsTW6E14Y0ArIzhUMmjoc7xyzA=="], + "vue": ["vue@3.5.40", "", { "dependencies": { "@vue/compiler-dom": "3.5.40", "@vue/compiler-sfc": "3.5.40", "@vue/runtime-dom": "3.5.40", "@vue/server-renderer": "3.5.40", "@vue/shared": "3.5.40" }, "peerDependencies": { "typescript": "*" }, "optionalPeers": ["typescript"] }, "sha512-+8PJ4SJXdn/cHGImF4CKdxlWHIN5Dkt7DoufRREM6h6uVCx2m7QxgcEQmmzyOK8A9mcafg7sFbJFYsdFVubTig=="], - "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], + "w3c-keyname": ["w3c-keyname@2.2.8", "", {}, "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="], - "whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], + "web-tree-sitter": ["web-tree-sitter@0.25.10", "", { "peerDependencies": { "@types/emscripten": "^1.40.0" }, "optionalPeers": ["@types/emscripten"] }, "sha512-Y09sF44/13XvgVKgO2cNDw5rGk6s26MgoZPXLESvMXeefBf7i6/73eFurre0IsTW6E14Y0ArIzhUMmjoc7xyzA=="], "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], - "wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], - - "wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], - "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], "ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="], - "xdg-app-paths": ["xdg-app-paths@5.1.0", "", { "dependencies": { "xdg-portable": "^7.0.0" } }, "sha512-RAQ3WkPf4KTU1A8RtFx3gWywzVKe00tfOPFfl2NDGqbIFENQO4kqAJp7mhQjNj/33W5x5hiWWUdyfPq/5SU3QA=="], - - "xdg-portable": ["xdg-portable@7.3.0", "", { "dependencies": { "os-paths": "^4.0.1" } }, "sha512-sqMMuL1rc0FmMBOzCpd0yuy9trqF2yTTVe+E9ogwCSWQCdDEtQUwrZPT6AxqtsFGRNxycgncbP/xmOOSPw5ZUw=="], - - "xml-naming": ["xml-naming@0.3.0", "", {}, "sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ=="], - "xtend": ["xtend@4.0.2", "", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="], - "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], - - "yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], - "yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], - "yargs": ["yargs@17.7.3", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g=="], - - "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], - - "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], - "zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], "zod-to-json-schema": ["zod-to-json-schema@3.25.2", "", { "peerDependencies": { "zod": "^3.25.28 || ^4" } }, "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA=="], + "zustand": ["zustand@4.5.7", "", { "dependencies": { "use-sync-external-store": "^1.2.2" }, "peerDependencies": { "@types/react": ">=16.8", "immer": ">=9.0.6", "react": ">=16.8" }, "optionalPeers": ["@types/react", "immer", "react"] }, "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw=="], + "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], "@ai-sdk/provider-utils/eventsource-parser": ["eventsource-parser@3.0.8", "", {}, "sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ=="], - "@cloudflare/sandbox/hono": ["hono@4.12.28", "", {}, "sha512-YwUvVpSF7m1yOblFPrU3Hbo8XhPheBoiyfGuII6z19LnOr6JpDnyyp7LFNrfV56wS8tpvtBFGRISHN02pDdLOA=="], - "@electric-sql/pglite-age/@electric-sql/pglite": ["@electric-sql/pglite@0.5.3", "", {}, "sha512-iTTYbA5Uesrl+N7zss0J5LopT7KE4j9aymYo+EZZh+rZbARQCUQOs+n2pay64JRUpc3fCkpfrniTNJnvYzOE+g=="], "@electric-sql/pglite-pg_hashids/@electric-sql/pglite": ["@electric-sql/pglite@0.5.3", "", {}, "sha512-iTTYbA5Uesrl+N7zss0J5LopT7KE4j9aymYo+EZZh+rZbARQCUQOs+n2pay64JRUpc3fCkpfrniTNJnvYzOE+g=="], @@ -1785,103 +1599,19 @@ "@electric-sql/pglite-socket/@electric-sql/pglite": ["@electric-sql/pglite@0.5.3", "", {}, "sha512-iTTYbA5Uesrl+N7zss0J5LopT7KE4j9aymYo+EZZh+rZbARQCUQOs+n2pay64JRUpc3fCkpfrniTNJnvYzOE+g=="], - "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], - - "@isaacs/cliui/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], - - "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], - "@modelcontextprotocol/sdk/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], "@modelcontextprotocol/server/zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], - "@opentelemetry/exporter-logs-otlp-grpc/@opentelemetry/sdk-logs": ["@opentelemetry/sdk-logs@0.217.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.217.0", "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, "sha512-BB+PcHItcZDL63dPMW+mJvwN9rk37wuIDjRxbVlg6pPDvDR/7GL7UJHbGsllgoggOoTimsKgENaWPoGch/oE1A=="], - - "@opentelemetry/exporter-logs-otlp-http/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.217.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-Cdq0jW2lknrNfrAm92MyEAvpe2cRsKjdnQLHUL6xRA4IVUnsWx6P65E7NcUO0Y+L4w1Aee5iV8FvjSwd+lrs9A=="], + "@smthrs/server/hono": ["hono@4.12.28", "", {}, "sha512-YwUvVpSF7m1yOblFPrU3Hbo8XhPheBoiyfGuII6z19LnOr6JpDnyyp7LFNrfV56wS8tpvtBFGRISHN02pDdLOA=="], - "@opentelemetry/exporter-logs-otlp-http/@opentelemetry/sdk-logs": ["@opentelemetry/sdk-logs@0.217.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.217.0", "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, "sha512-BB+PcHItcZDL63dPMW+mJvwN9rk37wuIDjRxbVlg6pPDvDR/7GL7UJHbGsllgoggOoTimsKgENaWPoGch/oE1A=="], + "@smthrs/ui-core/zustand": ["zustand@5.0.14", "", { "peerDependencies": { "@types/react": ">=18.0.0", "immer": ">=9.0.6", "react": ">=18.0.0", "use-sync-external-store": ">=1.2.0" }, "optionalPeers": ["@types/react", "immer", "react", "use-sync-external-store"] }, "sha512-/8tAspM5LMPr28b3fwLYrtdj77ECpfZviaP75CMTnwO8ISyaE4GDIG/9rDDYq/cH9D2Xw2A2RXglLInmVBQB/g=="], - "@opentelemetry/exporter-logs-otlp-proto/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.217.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-Cdq0jW2lknrNfrAm92MyEAvpe2cRsKjdnQLHUL6xRA4IVUnsWx6P65E7NcUO0Y+L4w1Aee5iV8FvjSwd+lrs9A=="], + "@vue/compiler-core/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], - "@opentelemetry/exporter-logs-otlp-proto/@opentelemetry/sdk-logs": ["@opentelemetry/sdk-logs@0.217.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.217.0", "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, "sha512-BB+PcHItcZDL63dPMW+mJvwN9rk37wuIDjRxbVlg6pPDvDR/7GL7UJHbGsllgoggOoTimsKgENaWPoGch/oE1A=="], + "@vue/compiler-sfc/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], - "@opentelemetry/exporter-logs-otlp-proto/@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-NAYIlsF8MPUsKqJMiDQJTMPOmlbawC1Iz/omMLygZ1C9am8fTKYjTaI+OZM+WTY3t3Glo0wnOg/6/pac6RGPPw=="], - - "@opentelemetry/exporter-metrics-otlp-grpc/@opentelemetry/sdk-metrics": ["@opentelemetry/sdk-metrics@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, "sha512-MpDJdkiFDs3Pm1RHO3KByuZbuBdJEXEAkiC0+yJdsZGVCdf1RpHR6n+LHDcS7ffmfrt5kVCzJSCfm4z2C7v0uQ=="], - - "@opentelemetry/exporter-metrics-otlp-http/@opentelemetry/sdk-metrics": ["@opentelemetry/sdk-metrics@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, "sha512-MpDJdkiFDs3Pm1RHO3KByuZbuBdJEXEAkiC0+yJdsZGVCdf1RpHR6n+LHDcS7ffmfrt5kVCzJSCfm4z2C7v0uQ=="], - - "@opentelemetry/exporter-metrics-otlp-proto/@opentelemetry/sdk-metrics": ["@opentelemetry/sdk-metrics@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, "sha512-MpDJdkiFDs3Pm1RHO3KByuZbuBdJEXEAkiC0+yJdsZGVCdf1RpHR6n+LHDcS7ffmfrt5kVCzJSCfm4z2C7v0uQ=="], - - "@opentelemetry/exporter-prometheus/@opentelemetry/sdk-metrics": ["@opentelemetry/sdk-metrics@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, "sha512-MpDJdkiFDs3Pm1RHO3KByuZbuBdJEXEAkiC0+yJdsZGVCdf1RpHR6n+LHDcS7ffmfrt5kVCzJSCfm4z2C7v0uQ=="], - - "@opentelemetry/exporter-trace-otlp-grpc/@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-NAYIlsF8MPUsKqJMiDQJTMPOmlbawC1Iz/omMLygZ1C9am8fTKYjTaI+OZM+WTY3t3Glo0wnOg/6/pac6RGPPw=="], - - "@opentelemetry/exporter-trace-otlp-http/@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-NAYIlsF8MPUsKqJMiDQJTMPOmlbawC1Iz/omMLygZ1C9am8fTKYjTaI+OZM+WTY3t3Glo0wnOg/6/pac6RGPPw=="], - - "@opentelemetry/exporter-trace-otlp-proto/@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-NAYIlsF8MPUsKqJMiDQJTMPOmlbawC1Iz/omMLygZ1C9am8fTKYjTaI+OZM+WTY3t3Glo0wnOg/6/pac6RGPPw=="], - - "@opentelemetry/exporter-zipkin/@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-NAYIlsF8MPUsKqJMiDQJTMPOmlbawC1Iz/omMLygZ1C9am8fTKYjTaI+OZM+WTY3t3Glo0wnOg/6/pac6RGPPw=="], - - "@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.217.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-Cdq0jW2lknrNfrAm92MyEAvpe2cRsKjdnQLHUL6xRA4IVUnsWx6P65E7NcUO0Y+L4w1Aee5iV8FvjSwd+lrs9A=="], - - "@opentelemetry/otlp-transformer/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.217.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-Cdq0jW2lknrNfrAm92MyEAvpe2cRsKjdnQLHUL6xRA4IVUnsWx6P65E7NcUO0Y+L4w1Aee5iV8FvjSwd+lrs9A=="], - - "@opentelemetry/otlp-transformer/@opentelemetry/sdk-logs": ["@opentelemetry/sdk-logs@0.217.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.217.0", "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, "sha512-BB+PcHItcZDL63dPMW+mJvwN9rk37wuIDjRxbVlg6pPDvDR/7GL7UJHbGsllgoggOoTimsKgENaWPoGch/oE1A=="], - - "@opentelemetry/otlp-transformer/@opentelemetry/sdk-metrics": ["@opentelemetry/sdk-metrics@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, "sha512-MpDJdkiFDs3Pm1RHO3KByuZbuBdJEXEAkiC0+yJdsZGVCdf1RpHR6n+LHDcS7ffmfrt5kVCzJSCfm4z2C7v0uQ=="], - - "@opentelemetry/otlp-transformer/@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-NAYIlsF8MPUsKqJMiDQJTMPOmlbawC1Iz/omMLygZ1C9am8fTKYjTaI+OZM+WTY3t3Glo0wnOg/6/pac6RGPPw=="], - - "@opentelemetry/otlp-transformer/protobufjs": ["protobufjs@8.0.1", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.4", "@protobufjs/eventemitter": "^1.1.0", "@protobufjs/fetch": "^1.1.0", "@protobufjs/float": "^1.0.2", "@protobufjs/inquire": "^1.1.0", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", "@types/node": ">=13.7.0", "long": "^5.0.0" } }, "sha512-NWWCCscLjs+cOKF/s/XVNFRW7Yih0fdH+9brffR5NZCy8k42yRdl5KlWKMVXuI1vfCoy4o1z80XR/W/QUb3V3w=="], - - "@opentelemetry/sdk-logs/@opentelemetry/core": ["@opentelemetry/core@2.6.0", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-HLM1v2cbZ4TgYN6KEOj+Bbj8rAKriOdkF9Ed3tG25FoprSiQl7kYc+RRT6fUZGOvx0oMi5U67GoFdT+XUn8zEg=="], - - "@opentelemetry/sdk-logs/@opentelemetry/resources": ["@opentelemetry/resources@2.6.0", "", { "dependencies": { "@opentelemetry/core": "2.6.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-D4y/+OGe3JSuYUCBxtH5T9DSAWNcvCb/nQWIga8HNtXTVPQn59j0nTBAgaAXxUVBDl40mG3Tc76b46wPlZaiJQ=="], - - "@opentelemetry/sdk-metrics/@opentelemetry/core": ["@opentelemetry/core@2.6.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-8xHSGWpJP9wBxgBpnqGL0R3PbdWQndL1Qp50qrg71+B28zK5OQmUgcDKLJgzyAAV38t4tOyLMGDD60LneR5W8g=="], - - "@opentelemetry/sdk-metrics/@opentelemetry/resources": ["@opentelemetry/resources@2.6.1", "", { "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-lID/vxSuKWXM55XhAKNoYXu9Cutoq5hFdkbTdI/zDKQktXzcWBVhNsOkiZFTMU9UtEWuGRNe0HUgmsFldIdxVA=="], - - "@opentelemetry/sdk-node/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.217.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-Cdq0jW2lknrNfrAm92MyEAvpe2cRsKjdnQLHUL6xRA4IVUnsWx6P65E7NcUO0Y+L4w1Aee5iV8FvjSwd+lrs9A=="], - - "@opentelemetry/sdk-node/@opentelemetry/context-async-hooks": ["@opentelemetry/context-async-hooks@2.7.1", "", { "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-OPFBYuXEn1E4ja3Y6eeA7O+ZnLBNcXTV5Cgsn1VaqBZ6hC5FnpZPLBNme1LJY8ZtF4aOujPKFoeWN4ik487KuQ=="], - - "@opentelemetry/sdk-node/@opentelemetry/sdk-logs": ["@opentelemetry/sdk-logs@0.217.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.217.0", "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, "sha512-BB+PcHItcZDL63dPMW+mJvwN9rk37wuIDjRxbVlg6pPDvDR/7GL7UJHbGsllgoggOoTimsKgENaWPoGch/oE1A=="], - - "@opentelemetry/sdk-node/@opentelemetry/sdk-metrics": ["@opentelemetry/sdk-metrics@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0 <1.10.0" } }, "sha512-MpDJdkiFDs3Pm1RHO3KByuZbuBdJEXEAkiC0+yJdsZGVCdf1RpHR6n+LHDcS7ffmfrt5kVCzJSCfm4z2C7v0uQ=="], - - "@opentelemetry/sdk-node/@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@2.7.1", "", { "dependencies": { "@opentelemetry/core": "2.7.1", "@opentelemetry/resources": "2.7.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-NAYIlsF8MPUsKqJMiDQJTMPOmlbawC1Iz/omMLygZ1C9am8fTKYjTaI+OZM+WTY3t3Glo0wnOg/6/pac6RGPPw=="], - - "@opentelemetry/sdk-node/@opentelemetry/sdk-trace-node": ["@opentelemetry/sdk-trace-node@2.7.1", "", { "dependencies": { "@opentelemetry/context-async-hooks": "2.7.1", "@opentelemetry/core": "2.7.1", "@opentelemetry/sdk-trace-base": "2.7.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-pCpQxU68lV+I9s9svqMyVu5iHdDDUnqUpSxqwyCU8A9ejEsSnMPCbearwsUO4yk08ZJzAIUCFuReMdVQvHrdvg=="], - - "@opentelemetry/sdk-trace/@opentelemetry/core": ["@opentelemetry/core@2.9.0", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-m2nckMT80NnmjTYSPjJQObBJ+8dgkoajEOUbznL8AHZ3T3yHRk2P7gI1PhEBc1+lOnrYE9UWrWHqJDsmqjmNbw=="], - - "@opentelemetry/sdk-trace/@opentelemetry/resources": ["@opentelemetry/resources@2.9.0", "", { "dependencies": { "@opentelemetry/core": "2.9.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-jyA5MBLQ+Dkl3+JsZkUoUvL7yHvU64kLsvpXKarWm6347Sl1t1bXFTFykUePNpT5WH5pm9a2Qtt03iIYQhZ1Fg=="], - - "@opentelemetry/sdk-trace-base/@opentelemetry/core": ["@opentelemetry/core@2.9.0", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-m2nckMT80NnmjTYSPjJQObBJ+8dgkoajEOUbznL8AHZ3T3yHRk2P7gI1PhEBc1+lOnrYE9UWrWHqJDsmqjmNbw=="], - - "@opentelemetry/sdk-trace-base/@opentelemetry/resources": ["@opentelemetry/resources@2.9.0", "", { "dependencies": { "@opentelemetry/core": "2.9.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-jyA5MBLQ+Dkl3+JsZkUoUvL7yHvU64kLsvpXKarWm6347Sl1t1bXFTFykUePNpT5WH5pm9a2Qtt03iIYQhZ1Fg=="], - - "@opentelemetry/sdk-trace-node/@opentelemetry/core": ["@opentelemetry/core@2.6.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-8xHSGWpJP9wBxgBpnqGL0R3PbdWQndL1Qp50qrg71+B28zK5OQmUgcDKLJgzyAAV38t4tOyLMGDD60LneR5W8g=="], - - "@opentelemetry/sdk-trace-node/@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@2.6.1", "", { "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/resources": "2.6.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-r86ut4T1e8vNwB35CqCcKd45yzqH6/6Wzvpk2/cZB8PsPLlZFTvrh8yfOS3CYZYcUmAx4hHTZJ8AO8Dj8nrdhw=="], - - "@opentelemetry/sdk-trace-web/@opentelemetry/core": ["@opentelemetry/core@2.6.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-8xHSGWpJP9wBxgBpnqGL0R3PbdWQndL1Qp50qrg71+B28zK5OQmUgcDKLJgzyAAV38t4tOyLMGDD60LneR5W8g=="], - - "@opentelemetry/sdk-trace-web/@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@2.6.1", "", { "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/resources": "2.6.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-r86ut4T1e8vNwB35CqCcKd45yzqH6/6Wzvpk2/cZB8PsPLlZFTvrh8yfOS3CYZYcUmAx4hHTZJ8AO8Dj8nrdhw=="], - - "@smithers-orchestrator/server/hono": ["hono@4.12.28", "", {}, "sha512-YwUvVpSF7m1yOblFPrU3Hbo8XhPheBoiyfGuII6z19LnOr6JpDnyyp7LFNrfV56wS8tpvtBFGRISHN02pDdLOA=="], - - "@types/request/form-data": ["form-data@2.5.6", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.4", "mime-types": "^2.1.35", "safe-buffer": "^5.2.1" } }, "sha512-Ogz/E85h9tlfJzpI6TuFpGcHZFhLrb9Gw8wq9v40CxSCPnv7ahKr6Xgtkn0KYCDQJ8DNn5VoMO8EXr9V5PadyA=="], - - "@vercel/sandbox/@workflow/serde": ["@workflow/serde@4.1.0-beta.2", "", {}, "sha512-8kkeoQKLDaKXefjV5dbhBj2aErfKp1Mc4pb6tj8144cF+Em5SPbyMbyLCHp+BVrFfFVCBluCtMx+jjvaFVZGww=="], - - "@vercel/sandbox/jose": ["jose@6.2.3", "", {}, "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw=="], - - "cliui/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - - "cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "bun-ffi-structs/typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], "cytoscape-fcose/cose-base": ["cose-base@2.2.0", "", { "dependencies": { "layout-base": "^2.0.0" } }, "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g=="], @@ -1893,122 +1623,28 @@ "d3-sankey/d3-shape": ["d3-shape@1.3.7", "", { "dependencies": { "d3-path": "1" } }, "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw=="], - "form-data/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], - - "gaxios/https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], - - "gaxios/node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], - - "gaxios/uuid": ["uuid@9.0.1", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="], - - "gcp-metadata/google-logging-utils": ["google-logging-utils@0.0.2", "", {}, "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ=="], - - "get-intrinsic/hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], - - "google-gax/google-auth-library": ["google-auth-library@10.5.0", "", { "dependencies": { "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", "gaxios": "^7.0.0", "gcp-metadata": "^8.0.0", "google-logging-utils": "^1.0.0", "gtoken": "^8.0.0", "jws": "^4.0.0" } }, "sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w=="], - - "google-gax/retry-request": ["retry-request@8.0.3", "", { "dependencies": { "extend": "^3.0.2", "teeny-request": "^10.0.0" } }, "sha512-qqoc4kkGgP9cmQDWELlOpAmfgJOg0Yi7MT82ZjiPWu451ayju4itwomjM4/dBEliify8C1b3tSaeCOldugtwPQ=="], - "incur/@toon-format/toon": ["@toon-format/toon@2.1.0", "", {}, "sha512-JwWptdF5eOA0HaQxbKAzkpQtR4wSWTEfDlEy/y3/4okmOAX1qwnpLZMmtEWr+ncAhTTY1raCKH0kteHhSXnQqg=="], + "mermaid/katex": ["katex@0.16.47", "", { "dependencies": { "commander": "^8.3.0" }, "bin": { "katex": "cli.js" } }, "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg=="], + "mermaid/marked": ["marked@16.4.2", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA=="], - "micromatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + "mermaid/uuid": ["uuid@11.1.0", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="], + + "micromark-extension-math/katex": ["katex@0.16.47", "", { "dependencies": { "commander": "^8.3.0" }, "bin": { "katex": "cli.js" } }, "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg=="], "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], + "postcss/nanoid": ["nanoid@3.3.16", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q=="], + "react-devtools-core/ws": ["ws@7.5.10", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ=="], "string-width/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], - "string-width-cjs/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - - "string-width-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - - "strip-ansi-cjs/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - - "teeny-request/node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], - - "teeny-request/uuid": ["uuid@9.0.1", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="], - - "wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - - "wrap-ansi/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - - "wrap-ansi-cjs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - - "wrap-ansi-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - - "yargs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - - "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], - - "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], - - "@opentelemetry/exporter-logs-otlp-grpc/@opentelemetry/sdk-logs/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.217.0", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-Cdq0jW2lknrNfrAm92MyEAvpe2cRsKjdnQLHUL6xRA4IVUnsWx6P65E7NcUO0Y+L4w1Aee5iV8FvjSwd+lrs9A=="], - - "@opentelemetry/sdk-trace-node/@opentelemetry/sdk-trace-base/@opentelemetry/resources": ["@opentelemetry/resources@2.6.1", "", { "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-lID/vxSuKWXM55XhAKNoYXu9Cutoq5hFdkbTdI/zDKQktXzcWBVhNsOkiZFTMU9UtEWuGRNe0HUgmsFldIdxVA=="], - - "@opentelemetry/sdk-trace-web/@opentelemetry/sdk-trace-base/@opentelemetry/resources": ["@opentelemetry/resources@2.6.1", "", { "dependencies": { "@opentelemetry/core": "2.6.1", "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-lID/vxSuKWXM55XhAKNoYXu9Cutoq5hFdkbTdI/zDKQktXzcWBVhNsOkiZFTMU9UtEWuGRNe0HUgmsFldIdxVA=="], - - "@types/request/form-data/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], - - "cliui/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - - "cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "cytoscape-fcose/cose-base/layout-base": ["layout-base@2.0.1", "", {}, "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="], "d3-sankey/d3-array/internmap": ["internmap@1.0.1", "", {}, "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="], "d3-sankey/d3-shape/d3-path": ["d3-path@1.0.9", "", {}, "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="], - - "form-data/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], - - "gaxios/https-proxy-agent/agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], - - "google-gax/google-auth-library/gaxios": ["gaxios@7.2.0", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "node-fetch": "^3.3.2" } }, "sha512-CUVb4wcYe+771XevyH6HtGmXFAGGKkIC3kswAP8Z1JCe0j80JMaTPZH930DWFrvo0atjh18Arc0pEyUCWa5bfg=="], - - "google-gax/google-auth-library/gcp-metadata": ["gcp-metadata@8.1.3", "", { "dependencies": { "gaxios": "7.1.3", "google-logging-utils": "1.1.3", "json-bigint": "^1.0.0" } }, "sha512-ziTrzUhhpL9Zk5k0HHzgP/KIpWDJT0VMBC/ynt/QIBvTW+UUcSivQRl6VlwTf/EilDxtSWklHoRsKy1c4k+59w=="], - - "google-gax/google-auth-library/gtoken": ["gtoken@8.0.0", "", { "dependencies": { "gaxios": "^7.0.0", "jws": "^4.0.0" } }, "sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw=="], - - "google-gax/retry-request/teeny-request": ["teeny-request@10.1.3", "", { "dependencies": { "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "node-fetch": "^3.3.2", "stream-events": "^1.0.5" } }, "sha512-5yDliI1uWkYPo7W+Zvrxg6YmoWuj5iC5EydewqrRTvc68nyMTZhlPPlLg6cptUGfbQAb+N9XDPDPzF6N081lug=="], - - "string-width-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - - "wrap-ansi-cjs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - - "wrap-ansi-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - - "wrap-ansi/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - - "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - - "yargs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - - "yargs/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - - "@types/request/form-data/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], - - "google-gax/google-auth-library/gaxios/https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], - - "google-gax/google-auth-library/gcp-metadata/gaxios": ["gaxios@7.1.3", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "node-fetch": "^3.3.2", "rimraf": "^5.0.1" } }, "sha512-YGGyuEdVIjqxkxVH1pUTMY/XtmmsApXrCVv5EU25iX6inEPbV+VakJfLealkBtJN69AQmh1eGOdCl9Sm1UP6XQ=="], - - "google-gax/retry-request/teeny-request/http-proxy-agent": ["http-proxy-agent@7.0.2", "", { "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" } }, "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig=="], - - "google-gax/retry-request/teeny-request/https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], - - "yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - - "google-gax/google-auth-library/gaxios/https-proxy-agent/agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], - - "google-gax/google-auth-library/gcp-metadata/gaxios/https-proxy-agent": ["https-proxy-agent@7.0.6", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "4" } }, "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw=="], - - "google-gax/retry-request/teeny-request/http-proxy-agent/agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], - - "google-gax/retry-request/teeny-request/https-proxy-agent/agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], - - "google-gax/google-auth-library/gcp-metadata/gaxios/https-proxy-agent/agent-base": ["agent-base@7.1.4", "", {}, "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ=="], } } diff --git a/workflows/components/codex.ts b/workflows/components/codex.ts index 54a8e1320..97b3f495b 100644 --- a/workflows/components/codex.ts +++ b/workflows/components/codex.ts @@ -1,4 +1,4 @@ -import { CodexAgent } from "smithers-orchestrator"; +import { CodexAgent } from "smthrs"; import { copyFileSync, existsSync, mkdirSync, mkdtempSync, readFileSync, writeFileSync } from "node:fs"; import { homedir, tmpdir } from "node:os"; import { resolve } from "node:path"; diff --git a/workflows/components/gemini-cli.ts b/workflows/components/gemini-cli.ts index b7dd12876..8c87b5602 100644 --- a/workflows/components/gemini-cli.ts +++ b/workflows/components/gemini-cli.ts @@ -1,4 +1,4 @@ -import { BaseCliAgent } from "@smithers-orchestrator/agents"; +import { BaseCliAgent } from "@smthrs/agents"; export class GeminiCliAgent extends BaseCliAgent { readonly cliEngine = "gemini-cli"; diff --git a/workflows/definitions/complete-product.tsx b/workflows/definitions/complete-product.tsx index b8c80b87f..bf970316c 100644 --- a/workflows/definitions/complete-product.tsx +++ b/workflows/definitions/complete-product.tsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ -import { Loop, Parallel, PiAgent, Sequence, Task, Worktree, openSmithersBackend } from "smithers-orchestrator"; +import { Loop, Parallel, PiAgent, Sequence, Task, Worktree, openSmithersBackend } from "smthrs"; import { resolve } from "node:path"; import { z } from "zod"; import { createCodexAgent, parsePositiveInt, type CodexSandbox } from "../components/codex"; diff --git a/workflows/definitions/implement-feature.tsx b/workflows/definitions/implement-feature.tsx index 1801b6fad..985c59f5d 100644 --- a/workflows/definitions/implement-feature.tsx +++ b/workflows/definitions/implement-feature.tsx @@ -1,4 +1,4 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ /** * Lifecycle: @@ -10,7 +10,7 @@ * 6. Review the result, then address findings and re-review until the reviewer approves or reports a real block. */ -import { Loop, Sequence, Task, Worktree, openSmithersBackend } from "smithers-orchestrator"; +import { Loop, Sequence, Task, Worktree, openSmithersBackend } from "smthrs"; import { resolve } from "node:path"; import { z } from "zod"; import { createCodexAgent, parsePositiveInt } from "../components/codex"; diff --git a/workflows/definitions/integrate-complete-product.tsx b/workflows/definitions/integrate-complete-product.tsx index 5e0ea993f..49fc00ddb 100644 --- a/workflows/definitions/integrate-complete-product.tsx +++ b/workflows/definitions/integrate-complete-product.tsx @@ -1,6 +1,6 @@ -/** @jsxImportSource smithers-orchestrator */ +/** @jsxImportSource smthrs */ -import { Loop, Sequence, Task, Worktree, openSmithersBackend } from "smithers-orchestrator"; +import { Loop, Sequence, Task, Worktree, openSmithersBackend } from "smthrs"; import { resolve } from "node:path"; import { z } from "zod"; import { parsePositiveInt } from "../components/codex"; diff --git a/workflows/package.json b/workflows/package.json index 14764b3d3..15efc7fc5 100644 --- a/workflows/package.json +++ b/workflows/package.json @@ -6,13 +6,13 @@ "typecheck": "tsgo --noEmit" }, "dependencies": { - "@smithers-orchestrator/agents": "^0.28.0", + "@smthrs/agents": "^0.33.0", "@mdx-js/esbuild": "^3.1.1", "@mdx-js/mdx": "^3.1.1", "@types/mdx": "^2.0.13", "react": "^19.2.7", "react-dom": "^19.2.7", - "smithers-orchestrator": "^0.28.0", + "smthrs": "^0.33.0", "zod": "^4.4.3" }, "devDependencies": { diff --git a/workflows/preload.ts b/workflows/preload.ts index 04b77ae64..04dc24cf0 100644 --- a/workflows/preload.ts +++ b/workflows/preload.ts @@ -1,3 +1,3 @@ -import { mdxPlugin } from "smithers-orchestrator"; +import { mdxPlugin } from "smthrs"; mdxPlugin(); diff --git a/workflows/tsconfig.json b/workflows/tsconfig.json index 93c4977ee..cde1dd0f3 100644 --- a/workflows/tsconfig.json +++ b/workflows/tsconfig.json @@ -4,7 +4,7 @@ "module": "ESNext", "lib": ["ES2022"], "jsx": "react-jsx", - "jsxImportSource": "smithers-orchestrator", + "jsxImportSource": "smthrs", "moduleResolution": "bundler", "allowImportingTsExtensions": true, "resolveJsonModule": true,