gsd-pi 2.54.0 → 2.56.0-dev.603f970
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +19 -19
- package/dist/headless-events.d.ts +2 -0
- package/dist/headless-events.js +3 -0
- package/dist/headless-ui.d.ts +27 -1
- package/dist/headless-ui.js +203 -13
- package/dist/headless.js +62 -7
- package/dist/resources/extensions/bg-shell/bg-shell-lifecycle.js +2 -2
- package/dist/resources/extensions/bg-shell/utilities.js +34 -5
- package/dist/resources/extensions/gsd/auto/phases.js +22 -3
- package/dist/resources/extensions/gsd/auto/run-unit.js +6 -0
- package/dist/resources/extensions/gsd/auto/session.js +2 -0
- package/dist/resources/extensions/gsd/auto-artifact-paths.js +6 -0
- package/dist/resources/extensions/gsd/auto-dashboard.js +5 -2
- package/dist/resources/extensions/gsd/auto-dispatch.js +1 -1
- package/dist/resources/extensions/gsd/auto-model-selection.js +28 -4
- package/dist/resources/extensions/gsd/auto-post-unit.js +1 -1
- package/dist/resources/extensions/gsd/auto-prompts.js +9 -0
- package/dist/resources/extensions/gsd/auto-start.js +31 -11
- package/dist/resources/extensions/gsd/auto-worktree.js +39 -14
- package/dist/resources/extensions/gsd/bootstrap/agent-end-recovery.js +5 -1
- package/dist/resources/extensions/gsd/bootstrap/provider-error-resume.js +18 -0
- package/dist/resources/extensions/gsd/bootstrap/register-extension.js +18 -5
- package/dist/resources/extensions/gsd/bootstrap/register-shortcuts.js +20 -0
- package/dist/resources/extensions/gsd/commands/catalog.js +2 -1
- package/dist/resources/extensions/gsd/commands/handlers/parallel.js +15 -1
- package/dist/resources/extensions/gsd/complexity-classifier.js +1 -0
- package/dist/resources/extensions/gsd/crash-recovery.js +2 -2
- package/dist/resources/extensions/gsd/dashboard-overlay.js +2 -0
- package/dist/resources/extensions/gsd/docs/preferences-reference.md +4 -2
- package/dist/resources/extensions/gsd/guided-flow.js +17 -16
- package/dist/resources/extensions/gsd/metrics.js +4 -1
- package/dist/resources/extensions/gsd/parallel-monitor-overlay.js +413 -0
- package/dist/resources/extensions/gsd/parallel-orchestrator.js +5 -1
- package/dist/resources/extensions/gsd/preferences-models.js +12 -0
- package/dist/resources/extensions/gsd/roadmap-slices.js +1 -0
- package/dist/resources/extensions/gsd/session-lock.js +46 -12
- package/dist/resources/extensions/gsd/skill-health.js +2 -2
- package/dist/resources/extensions/gsd/visualizer-overlay.js +3 -3
- package/dist/resources/extensions/shared/format-utils.js +1 -1
- package/dist/resources/extensions/subagent/agents.js +8 -3
- package/dist/resources/extensions/subagent/worker-registry.js +2 -1
- package/dist/web/standalone/.next/BUILD_ID +1 -1
- package/dist/web/standalone/.next/app-path-routes-manifest.json +20 -20
- package/dist/web/standalone/.next/build-manifest.json +4 -4
- package/dist/web/standalone/.next/prerender-manifest.json +3 -3
- package/dist/web/standalone/.next/react-loadable-manifest.json +2 -2
- package/dist/web/standalone/.next/required-server-files.json +3 -3
- package/dist/web/standalone/.next/server/app/_global-error/page.js +3 -3
- package/dist/web/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.html +2 -2
- package/dist/web/standalone/.next/server/app/_global-error.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found/page.js +2 -2
- package/dist/web/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.html +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.rsc +3 -3
- package/dist/web/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/dist/web/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/api/boot/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/boot/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/input/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/resize/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/bridge-terminal/stream/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/browse-directories/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/browse-directories/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/captures/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/dev-mode/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/dev-mode/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/doctor/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/experimental/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/experimental/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/export-data/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/files/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/forensics/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/history/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/hooks/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/inspect/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/knowledge/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/live-state/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/onboarding/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/preferences/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/preferences/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/recovery/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/remote-questions/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/remote-questions/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/browser/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/command/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/events/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/session/events/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/session/manage/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/settings-data/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/skill-health/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/steer/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/switch-root/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/input/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/input/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/resize/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route.js +2 -2
- package/dist/web/standalone/.next/server/app/api/terminal/sessions/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route.js +4 -4
- package/dist/web/standalone/.next/server/app/api/terminal/stream/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/upload/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/terminal/upload/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/undo/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route.js +1 -1
- package/dist/web/standalone/.next/server/app/api/visualizer/route_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app/index.html +1 -1
- package/dist/web/standalone/.next/server/app/index.rsc +4 -4
- package/dist/web/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dist/web/standalone/.next/server/app/index.segments/_full.segment.rsc +4 -4
- package/dist/web/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/dist/web/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/dist/web/standalone/.next/server/app/page.js +2 -2
- package/dist/web/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/web/standalone/.next/server/app-paths-manifest.json +20 -20
- package/dist/web/standalone/.next/server/chunks/2229.js +3 -3
- package/dist/web/standalone/.next/server/chunks/7471.js +3 -3
- package/dist/web/standalone/.next/server/middleware-build-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/dist/web/standalone/.next/server/middleware.js +2 -2
- package/dist/web/standalone/.next/server/next-font-manifest.js +1 -1
- package/dist/web/standalone/.next/server/next-font-manifest.json +1 -1
- package/dist/web/standalone/.next/server/pages/404.html +1 -1
- package/dist/web/standalone/.next/server/pages/500.html +2 -2
- package/dist/web/standalone/.next/server/server-reference-manifest.json +1 -1
- package/dist/web/standalone/.next/static/chunks/6502.2305d0afd2385711.js +9 -0
- package/dist/web/standalone/.next/static/chunks/app/_not-found/{page-2f24283c162b6ab3.js → page-f2a7482d42a5614b.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/{layout-9ecfd95f343793f0.js → layout-a16c7a7ecdf0c2cf.js} +1 -1
- package/dist/web/standalone/.next/static/chunks/app/page-0c485498795110d6.js +1 -0
- package/dist/web/standalone/.next/static/chunks/main-app-fdab67f7802d7832.js +1 -0
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-459824ffb8c323dd.js +1 -0
- package/dist/web/standalone/.next/static/chunks/{webpack-bca0e732db0dcec3.js → webpack-4332cbd5dd1be584.js} +1 -1
- package/dist/web/standalone/node_modules/node-pty/build/Makefile +2 -2
- package/dist/web/standalone/node_modules/node-pty/build/Release/pty.node +0 -0
- package/dist/web/standalone/node_modules/node-pty/build/pty.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_except.target.mk +14 -14
- package/dist/web/standalone/node_modules/node-pty/node-addon-api/node_addon_api_maybe.target.mk +14 -14
- package/dist/web/standalone/server.js +1 -1
- package/package.json +6 -4
- package/packages/daemon/node_modules/@anthropic-ai/sdk/CHANGELOG.md +1677 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/LICENSE +8 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/README.md +674 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.d.mts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.d.ts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.js +226 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.mjs +223 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/api-promise.d.mts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/api-promise.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/api-promise.d.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/api-promise.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/api-promise.js +6 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/api-promise.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/api-promise.mjs +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/api-promise.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/bin/cli +53 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/bin/migration-config.json +7 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/client.d.mts +225 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/client.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/client.d.ts +225 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/client.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/client.js +536 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/client.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/client.mjs +531 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/client.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/api-promise.d.mts +49 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/api-promise.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/api-promise.d.ts +49 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/api-promise.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/api-promise.js +76 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/api-promise.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/api-promise.mjs +72 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/api-promise.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/error.d.mts +47 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/error.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/error.d.ts +47 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/error.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/error.js +114 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/error.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/error.mjs +98 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/error.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/pagination.d.mts +63 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/pagination.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/pagination.d.ts +63 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/pagination.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/pagination.js +123 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/pagination.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/pagination.mjs +117 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/pagination.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/resource.d.mts +6 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/resource.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/resource.d.ts +6 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/resource.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/resource.js +11 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/resource.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/resource.mjs +7 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/resource.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/streaming.d.mts +31 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/streaming.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/streaming.d.ts +31 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/streaming.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/streaming.js +282 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/streaming.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/streaming.mjs +277 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/streaming.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/uploads.d.mts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/uploads.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/uploads.d.ts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/uploads.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/uploads.js +6 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/uploads.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/uploads.mjs +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/core/uploads.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/error.d.mts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/error.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/error.d.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/error.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/error.js +6 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/error.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/error.mjs +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/error.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/index.d.mts +7 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/index.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/index.d.ts +7 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/index.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/index.js +35 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/index.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/index.mjs +8 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/index.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.mts +73 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.ts +73 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/builtin-types.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/builtin-types.js +4 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/builtin-types.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/builtin-types.mjs +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/builtin-types.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/constants.d.mts +5 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/constants.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/constants.d.ts +5 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/constants.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/constants.js +15 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/constants.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/constants.mjs +12 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/constants.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.mts +10 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.ts +10 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.js +39 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.mjs +35 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.mts +17 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.ts +17 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/line.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/line.js +113 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/line.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/line.mjs +108 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/decoders/line.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/detect-platform.d.mts +15 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/detect-platform.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/detect-platform.d.ts +15 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/detect-platform.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/detect-platform.js +162 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/detect-platform.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/detect-platform.mjs +157 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/detect-platform.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/errors.d.mts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/errors.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/errors.d.ts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/errors.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/errors.js +41 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/errors.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/errors.mjs +36 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/errors.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/headers.d.mts +22 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/headers.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/headers.d.ts +22 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/headers.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/headers.js +79 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/headers.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/headers.mjs +74 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/headers.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/parse.d.mts +17 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/parse.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/parse.d.ts +17 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/parse.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/parse.js +55 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/parse.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/parse.mjs +51 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/parse.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/request-options.d.mts +34 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/request-options.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/request-options.d.ts +34 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/request-options.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/request-options.js +14 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/request-options.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/request-options.mjs +10 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/request-options.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shim-types.d.mts +28 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shim-types.d.ts +28 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shims.d.mts +20 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shims.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shims.d.ts +20 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shims.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shims.js +92 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shims.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shims.mjs +85 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/shims.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/stream-utils.d.mts +8 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/stream-utils.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/stream-utils.d.ts +8 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/stream-utils.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/stream-utils.js +38 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/stream-utils.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/stream-utils.mjs +35 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/stream-utils.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/to-file.d.mts +45 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/to-file.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/to-file.d.ts +45 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/to-file.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/to-file.js +96 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/to-file.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/to-file.mjs +93 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/to-file.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/tslib.js +81 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/tslib.mjs +17 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/types.d.mts +67 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/types.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/types.d.ts +67 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/types.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/types.js +4 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/types.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/types.mjs +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/types.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/uploads.d.mts +42 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/uploads.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/uploads.d.ts +42 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/uploads.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/uploads.js +146 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/uploads.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/uploads.mjs +136 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/uploads.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/base64.d.mts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/base64.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/base64.d.ts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/base64.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/base64.js +38 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/base64.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/base64.mjs +33 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/base64.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/bytes.d.mts +4 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/bytes.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/bytes.d.ts +4 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/bytes.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/bytes.js +31 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/bytes.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/bytes.mjs +26 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/bytes.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/env.d.mts +9 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/env.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/env.d.ts +9 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/env.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/env.js +22 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/env.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/env.mjs +18 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/env.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/log.d.mts +37 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/log.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/log.d.ts +37 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/log.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/log.js +86 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/log.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/log.mjs +80 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/log.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/path.d.mts +15 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/path.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/path.d.ts +15 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/path.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/path.js +58 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/path.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/path.mjs +53 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/path.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/sleep.d.mts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/sleep.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/sleep.d.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/sleep.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/sleep.js +7 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/sleep.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/sleep.mjs +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/sleep.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/uuid.d.mts +5 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/uuid.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/uuid.d.ts +5 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/uuid.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/uuid.js +19 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/uuid.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/uuid.mjs +15 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/uuid.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/values.d.mts +16 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/values.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/values.d.ts +16 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/values.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/values.js +109 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/values.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/values.mjs +92 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils/values.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils.d.mts +7 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils.d.ts +7 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils.js +11 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils.mjs +8 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/internal/utils.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.mts +114 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.ts +114 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.js +553 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.mjs +549 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.mts +114 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.ts +114 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/MessageStream.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/MessageStream.js +553 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/MessageStream.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/MessageStream.mjs +549 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/lib/MessageStream.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/package.json +185 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/pagination.d.mts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/pagination.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/pagination.d.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/pagination.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/pagination.js +6 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/pagination.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/pagination.mjs +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/pagination.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resource.d.mts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resource.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resource.d.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resource.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resource.js +6 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resource.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resource.mjs +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resource.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.mts +61 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.ts +61 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/beta.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/beta.js +25 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/beta.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/beta.mjs +20 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/beta.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/files.d.mts +151 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/files.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/files.d.ts +151 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/files.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/files.js +122 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/files.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/files.mjs +118 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/files.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/index.d.mts +5 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/index.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/index.d.ts +5 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/index.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/index.js +13 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/index.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/index.mjs +6 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/index.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.mts +343 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.ts +343 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.js +204 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.mjs +200 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.mts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.ts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.js +9 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.mjs +4 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/index.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.mts +1561 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.ts +1561 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.js +86 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.mjs +81 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages.d.mts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages.d.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages.js +6 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages.mjs +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/messages.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/models.d.mts +74 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/models.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/models.d.ts +74 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/models.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/models.js +60 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/models.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/models.mjs +56 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta/models.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta.d.mts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta.d.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta.js +6 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta.mjs +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/beta.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/completions.d.mts +183 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/completions.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/completions.d.ts +183 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/completions.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/completions.js +23 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/completions.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/completions.mjs +19 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/completions.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/index.d.mts +6 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/index.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/index.d.ts +6 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/index.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/index.js +15 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/index.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/index.mjs +7 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/index.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.mts +304 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.ts +304 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/batches.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/batches.js +153 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/batches.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/batches.mjs +149 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/batches.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/index.d.mts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/index.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/index.d.ts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/index.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/index.js +9 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/index.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/index.mjs +4 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/index.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.mts +1264 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.ts +1264 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/messages.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/messages.js +72 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/messages.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/messages.mjs +67 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages/messages.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages.d.mts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages.d.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages.js +6 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages.mjs +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/messages.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/models.d.mts +59 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/models.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/models.d.ts +59 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/models.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/models.js +45 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/models.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/models.mjs +41 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/models.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/shared.d.mts +42 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/shared.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/shared.d.ts +42 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/shared.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/shared.js +4 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/shared.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/shared.mjs +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/shared.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/top-level.d.mts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/top-level.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/top-level.d.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/top-level.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/top-level.js +4 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/top-level.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/top-level.mjs +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources/top-level.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources.d.mts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources.d.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources.js +5 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources.mjs +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/resources.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/_vendor/partial-json-parser/README.md +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/_vendor/partial-json-parser/parser.ts +264 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/api-promise.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/client.ts +1070 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/core/README.md +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/core/api-promise.ts +101 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/core/error.ts +133 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/core/pagination.ts +201 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/core/resource.ts +11 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/core/streaming.ts +331 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/core/uploads.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/error.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/index.ts +23 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/README.md +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/builtin-types.ts +93 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/constants.ts +12 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/decoders/jsonl.ts +48 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/decoders/line.ts +135 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/detect-platform.ts +196 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/errors.ts +33 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/headers.ts +99 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/parse.ts +84 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/request-options.ts +39 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/shim-types.d.ts +28 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/shims.ts +107 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/stream-utils.ts +32 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/to-file.ts +159 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/types.ts +92 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/uploads.ts +193 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils/base64.ts +40 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils/bytes.ts +32 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils/env.ts +18 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils/log.ts +127 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils/path.ts +65 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils/sleep.ts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils/uuid.ts +17 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils/values.ts +102 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/internal/utils.ts +8 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/lib/.keep +4 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/lib/BetaMessageStream.ts +683 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/lib/MessageStream.ts +684 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/pagination.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resource.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta/beta.ts +380 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta/files.ts +258 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta/index.ts +148 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/batches.ts +502 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/index.ts +135 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta/messages/messages.ts +2249 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta/messages.ts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta/models.ts +118 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/beta.ts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/completions.ts +231 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/index.ts +121 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/messages/batches.ts +396 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/messages/index.ts +110 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/messages/messages.ts +1783 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/messages.ts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/models.ts +103 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/shared.ts +72 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources/top-level.ts +3 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/resources.ts +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/streaming.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/tsconfig.json +11 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/uploads.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/src/version.ts +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/streaming.d.mts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/streaming.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/streaming.d.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/streaming.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/streaming.js +6 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/streaming.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/streaming.mjs +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/streaming.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/uploads.d.mts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/uploads.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/uploads.d.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/uploads.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/uploads.js +6 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/uploads.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/uploads.mjs +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/uploads.mjs.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/version.d.mts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/version.d.mts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/version.d.ts +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/version.d.ts.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/version.js +5 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/version.js.map +1 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/version.mjs +2 -0
- package/packages/daemon/node_modules/@anthropic-ai/sdk/version.mjs.map +1 -0
- package/packages/daemon/node_modules/zod/LICENSE +21 -0
- package/packages/daemon/node_modules/zod/README.md +208 -0
- package/packages/daemon/node_modules/zod/index.cjs +33 -0
- package/packages/daemon/node_modules/zod/index.d.cts +4 -0
- package/packages/daemon/node_modules/zod/index.d.ts +4 -0
- package/packages/daemon/node_modules/zod/index.js +4 -0
- package/packages/daemon/node_modules/zod/package.json +118 -0
- package/packages/daemon/node_modules/zod/src/index.ts +4 -0
- package/packages/daemon/node_modules/zod/src/v3/ZodError.ts +330 -0
- package/packages/daemon/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
- package/packages/daemon/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
- package/packages/daemon/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
- package/packages/daemon/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
- package/packages/daemon/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
- package/packages/daemon/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
- package/packages/daemon/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
- package/packages/daemon/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
- package/packages/daemon/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
- package/packages/daemon/node_modules/zod/src/v3/errors.ts +13 -0
- package/packages/daemon/node_modules/zod/src/v3/external.ts +6 -0
- package/packages/daemon/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
- package/packages/daemon/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
- package/packages/daemon/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
- package/packages/daemon/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
- package/packages/daemon/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
- package/packages/daemon/node_modules/zod/src/v3/helpers/util.ts +224 -0
- package/packages/daemon/node_modules/zod/src/v3/index.ts +4 -0
- package/packages/daemon/node_modules/zod/src/v3/locales/en.ts +124 -0
- package/packages/daemon/node_modules/zod/src/v3/standard-schema.ts +113 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/array.test.ts +71 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/base.test.ts +29 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/complex.test.ts +56 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/date.test.ts +32 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/default.test.ts +112 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/description.test.ts +33 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/error.test.ts +551 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/function.test.ts +257 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/map.test.ts +110 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/nan.test.ts +21 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/number.test.ts +176 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/object.test.ts +434 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/record.test.ts +171 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/set.test.ts +142 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/string.test.ts +916 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
- package/packages/daemon/node_modules/zod/src/v3/tests/void.test.ts +15 -0
- package/packages/daemon/node_modules/zod/src/v3/types.ts +5136 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/checks.ts +30 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/coerce.ts +27 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/compat.ts +66 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/errors.ts +75 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/external.ts +50 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/index.ts +5 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/iso.ts +90 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/parse.ts +33 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/schemas.ts +2054 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/brand.test.ts +63 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/catch.test.ts +252 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/continuability.test.ts +352 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/date.test.ts +31 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/datetime.test.ts +296 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/default.test.ts +313 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +619 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +527 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/file.test.ts +91 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +175 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/function.test.ts +268 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/index.test.ts +829 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +34 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/intersection.test.ts +171 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/json.test.ts +108 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/literal.test.ts +92 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/map.test.ts +196 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +86 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/number.test.ts +247 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/object.test.ts +563 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/optional.test.ts +123 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/partial.test.ts +147 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +127 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/pipe.test.ts +81 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/prefault.test.ts +37 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +298 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/record.test.ts +342 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +356 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/refine.test.ts +532 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/registries.test.ts +204 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/set.test.ts +179 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +57 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +109 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/string.test.ts +881 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +66 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +758 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2314 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/transform.test.ts +250 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/tuple.test.ts +163 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/union.test.ts +94 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
- package/packages/daemon/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
- package/packages/daemon/node_modules/zod/src/v4/core/api.ts +1594 -0
- package/packages/daemon/node_modules/zod/src/v4/core/checks.ts +1283 -0
- package/packages/daemon/node_modules/zod/src/v4/core/config.ts +15 -0
- package/packages/daemon/node_modules/zod/src/v4/core/core.ts +134 -0
- package/packages/daemon/node_modules/zod/src/v4/core/doc.ts +44 -0
- package/packages/daemon/node_modules/zod/src/v4/core/errors.ts +424 -0
- package/packages/daemon/node_modules/zod/src/v4/core/function.ts +176 -0
- package/packages/daemon/node_modules/zod/src/v4/core/index.ts +15 -0
- package/packages/daemon/node_modules/zod/src/v4/core/json-schema.ts +143 -0
- package/packages/daemon/node_modules/zod/src/v4/core/parse.ts +94 -0
- package/packages/daemon/node_modules/zod/src/v4/core/regexes.ts +135 -0
- package/packages/daemon/node_modules/zod/src/v4/core/registries.ts +96 -0
- package/packages/daemon/node_modules/zod/src/v4/core/schemas.ts +3842 -0
- package/packages/daemon/node_modules/zod/src/v4/core/standard-schema.ts +64 -0
- package/packages/daemon/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
- package/packages/daemon/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
- package/packages/daemon/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
- package/packages/daemon/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
- package/packages/daemon/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
- package/packages/daemon/node_modules/zod/src/v4/core/to-json-schema.ts +977 -0
- package/packages/daemon/node_modules/zod/src/v4/core/util.ts +775 -0
- package/packages/daemon/node_modules/zod/src/v4/core/versions.ts +5 -0
- package/packages/daemon/node_modules/zod/src/v4/core/zsf.ts +323 -0
- package/packages/daemon/node_modules/zod/src/v4/index.ts +4 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/ar.ts +125 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/az.ts +121 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/be.ts +184 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/ca.ts +127 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/cs.ts +142 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/de.ts +124 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/en.ts +127 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/eo.ts +125 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/es.ts +125 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/fa.ts +134 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/fi.ts +131 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/fr-CA.ts +126 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/fr.ts +124 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/he.ts +125 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/hu.ts +126 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/id.ts +125 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/index.ts +39 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/it.ts +125 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/ja.ts +122 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/kh.ts +126 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/ko.ts +131 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/mk.ts +127 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/ms.ts +124 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/nl.ts +126 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/no.ts +124 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/ota.ts +125 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/pl.ts +126 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/ps.ts +133 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/pt.ts +123 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/ru.ts +184 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/sl.ts +126 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/sv.ts +127 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/ta.ts +125 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/th.ts +126 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/tr.ts +121 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/ua.ts +126 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/ur.ts +126 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/vi.ts +125 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/zh-CN.ts +123 -0
- package/packages/daemon/node_modules/zod/src/v4/locales/zh-TW.ts +125 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/checks.ts +32 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/coerce.ts +22 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/external.ts +40 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/index.ts +3 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/iso.ts +62 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/parse.ts +1 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/schemas.ts +1579 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/tests/brand.test.ts +51 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/tests/functions.test.ts +43 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/tests/index.test.ts +871 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/tests/object.test.ts +185 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
- package/packages/daemon/node_modules/zod/src/v4/mini/tests/string.test.ts +299 -0
- package/packages/daemon/node_modules/zod/src/v4-mini/index.ts +1 -0
- package/packages/daemon/node_modules/zod/v3/ZodError.cjs +138 -0
- package/packages/daemon/node_modules/zod/v3/ZodError.d.cts +164 -0
- package/packages/daemon/node_modules/zod/v3/ZodError.d.ts +164 -0
- package/packages/daemon/node_modules/zod/v3/ZodError.js +133 -0
- package/packages/daemon/node_modules/zod/v3/errors.cjs +17 -0
- package/packages/daemon/node_modules/zod/v3/errors.d.cts +5 -0
- package/packages/daemon/node_modules/zod/v3/errors.d.ts +5 -0
- package/packages/daemon/node_modules/zod/v3/errors.js +9 -0
- package/packages/daemon/node_modules/zod/v3/external.cjs +22 -0
- package/packages/daemon/node_modules/zod/v3/external.d.cts +6 -0
- package/packages/daemon/node_modules/zod/v3/external.d.ts +6 -0
- package/packages/daemon/node_modules/zod/v3/external.js +6 -0
- package/packages/daemon/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
- package/packages/daemon/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
- package/packages/daemon/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
- package/packages/daemon/node_modules/zod/v3/helpers/enumUtil.js +1 -0
- package/packages/daemon/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
- package/packages/daemon/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
- package/packages/daemon/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
- package/packages/daemon/node_modules/zod/v3/helpers/errorUtil.js +6 -0
- package/packages/daemon/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
- package/packages/daemon/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
- package/packages/daemon/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
- package/packages/daemon/node_modules/zod/v3/helpers/parseUtil.js +109 -0
- package/packages/daemon/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
- package/packages/daemon/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
- package/packages/daemon/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
- package/packages/daemon/node_modules/zod/v3/helpers/partialUtil.js +1 -0
- package/packages/daemon/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
- package/packages/daemon/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
- package/packages/daemon/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
- package/packages/daemon/node_modules/zod/v3/helpers/typeAliases.js +1 -0
- package/packages/daemon/node_modules/zod/v3/helpers/util.cjs +137 -0
- package/packages/daemon/node_modules/zod/v3/helpers/util.d.cts +85 -0
- package/packages/daemon/node_modules/zod/v3/helpers/util.d.ts +85 -0
- package/packages/daemon/node_modules/zod/v3/helpers/util.js +133 -0
- package/packages/daemon/node_modules/zod/v3/index.cjs +33 -0
- package/packages/daemon/node_modules/zod/v3/index.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v3/index.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v3/index.js +4 -0
- package/packages/daemon/node_modules/zod/v3/locales/en.cjs +111 -0
- package/packages/daemon/node_modules/zod/v3/locales/en.d.cts +3 -0
- package/packages/daemon/node_modules/zod/v3/locales/en.d.ts +3 -0
- package/packages/daemon/node_modules/zod/v3/locales/en.js +109 -0
- package/packages/daemon/node_modules/zod/v3/standard-schema.cjs +2 -0
- package/packages/daemon/node_modules/zod/v3/standard-schema.d.cts +102 -0
- package/packages/daemon/node_modules/zod/v3/standard-schema.d.ts +102 -0
- package/packages/daemon/node_modules/zod/v3/standard-schema.js +1 -0
- package/packages/daemon/node_modules/zod/v3/types.cjs +3775 -0
- package/packages/daemon/node_modules/zod/v3/types.d.cts +1031 -0
- package/packages/daemon/node_modules/zod/v3/types.d.ts +1031 -0
- package/packages/daemon/node_modules/zod/v3/types.js +3693 -0
- package/packages/daemon/node_modules/zod/v4/classic/checks.cjs +32 -0
- package/packages/daemon/node_modules/zod/v4/classic/checks.d.cts +1 -0
- package/packages/daemon/node_modules/zod/v4/classic/checks.d.ts +1 -0
- package/packages/daemon/node_modules/zod/v4/classic/checks.js +1 -0
- package/packages/daemon/node_modules/zod/v4/classic/coerce.cjs +47 -0
- package/packages/daemon/node_modules/zod/v4/classic/coerce.d.cts +17 -0
- package/packages/daemon/node_modules/zod/v4/classic/coerce.d.ts +17 -0
- package/packages/daemon/node_modules/zod/v4/classic/coerce.js +17 -0
- package/packages/daemon/node_modules/zod/v4/classic/compat.cjs +57 -0
- package/packages/daemon/node_modules/zod/v4/classic/compat.d.cts +46 -0
- package/packages/daemon/node_modules/zod/v4/classic/compat.d.ts +46 -0
- package/packages/daemon/node_modules/zod/v4/classic/compat.js +27 -0
- package/packages/daemon/node_modules/zod/v4/classic/errors.cjs +67 -0
- package/packages/daemon/node_modules/zod/v4/classic/errors.d.cts +30 -0
- package/packages/daemon/node_modules/zod/v4/classic/errors.d.ts +30 -0
- package/packages/daemon/node_modules/zod/v4/classic/errors.js +41 -0
- package/packages/daemon/node_modules/zod/v4/classic/external.cjs +70 -0
- package/packages/daemon/node_modules/zod/v4/classic/external.d.cts +13 -0
- package/packages/daemon/node_modules/zod/v4/classic/external.d.ts +13 -0
- package/packages/daemon/node_modules/zod/v4/classic/external.js +18 -0
- package/packages/daemon/node_modules/zod/v4/classic/index.cjs +33 -0
- package/packages/daemon/node_modules/zod/v4/classic/index.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/classic/index.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/classic/index.js +4 -0
- package/packages/daemon/node_modules/zod/v4/classic/iso.cjs +60 -0
- package/packages/daemon/node_modules/zod/v4/classic/iso.d.cts +22 -0
- package/packages/daemon/node_modules/zod/v4/classic/iso.d.ts +22 -0
- package/packages/daemon/node_modules/zod/v4/classic/iso.js +30 -0
- package/packages/daemon/node_modules/zod/v4/classic/parse.cjs +32 -0
- package/packages/daemon/node_modules/zod/v4/classic/parse.d.cts +23 -0
- package/packages/daemon/node_modules/zod/v4/classic/parse.d.ts +23 -0
- package/packages/daemon/node_modules/zod/v4/classic/parse.js +6 -0
- package/packages/daemon/node_modules/zod/v4/classic/schemas.cjs +1109 -0
- package/packages/daemon/node_modules/zod/v4/classic/schemas.d.cts +630 -0
- package/packages/daemon/node_modules/zod/v4/classic/schemas.d.ts +630 -0
- package/packages/daemon/node_modules/zod/v4/classic/schemas.js +1006 -0
- package/packages/daemon/node_modules/zod/v4/core/api.cjs +1039 -0
- package/packages/daemon/node_modules/zod/v4/core/api.d.cts +284 -0
- package/packages/daemon/node_modules/zod/v4/core/api.d.ts +284 -0
- package/packages/daemon/node_modules/zod/v4/core/api.js +906 -0
- package/packages/daemon/node_modules/zod/v4/core/checks.cjs +591 -0
- package/packages/daemon/node_modules/zod/v4/core/checks.d.cts +278 -0
- package/packages/daemon/node_modules/zod/v4/core/checks.d.ts +278 -0
- package/packages/daemon/node_modules/zod/v4/core/checks.js +565 -0
- package/packages/daemon/node_modules/zod/v4/core/core.cjs +67 -0
- package/packages/daemon/node_modules/zod/v4/core/core.d.cts +49 -0
- package/packages/daemon/node_modules/zod/v4/core/core.d.ts +49 -0
- package/packages/daemon/node_modules/zod/v4/core/core.js +61 -0
- package/packages/daemon/node_modules/zod/v4/core/doc.cjs +39 -0
- package/packages/daemon/node_modules/zod/v4/core/doc.d.cts +14 -0
- package/packages/daemon/node_modules/zod/v4/core/doc.d.ts +14 -0
- package/packages/daemon/node_modules/zod/v4/core/doc.js +35 -0
- package/packages/daemon/node_modules/zod/v4/core/errors.cjs +226 -0
- package/packages/daemon/node_modules/zod/v4/core/errors.d.cts +208 -0
- package/packages/daemon/node_modules/zod/v4/core/errors.d.ts +208 -0
- package/packages/daemon/node_modules/zod/v4/core/errors.js +195 -0
- package/packages/daemon/node_modules/zod/v4/core/function.cjs +102 -0
- package/packages/daemon/node_modules/zod/v4/core/function.d.cts +52 -0
- package/packages/daemon/node_modules/zod/v4/core/function.d.ts +52 -0
- package/packages/daemon/node_modules/zod/v4/core/function.js +75 -0
- package/packages/daemon/node_modules/zod/v4/core/index.cjs +44 -0
- package/packages/daemon/node_modules/zod/v4/core/index.d.cts +15 -0
- package/packages/daemon/node_modules/zod/v4/core/index.d.ts +15 -0
- package/packages/daemon/node_modules/zod/v4/core/index.js +15 -0
- package/packages/daemon/node_modules/zod/v4/core/json-schema.cjs +2 -0
- package/packages/daemon/node_modules/zod/v4/core/json-schema.d.cts +87 -0
- package/packages/daemon/node_modules/zod/v4/core/json-schema.d.ts +87 -0
- package/packages/daemon/node_modules/zod/v4/core/json-schema.js +1 -0
- package/packages/daemon/node_modules/zod/v4/core/parse.cjs +87 -0
- package/packages/daemon/node_modules/zod/v4/core/parse.d.cts +25 -0
- package/packages/daemon/node_modules/zod/v4/core/parse.d.ts +25 -0
- package/packages/daemon/node_modules/zod/v4/core/parse.js +57 -0
- package/packages/daemon/node_modules/zod/v4/core/regexes.cjs +103 -0
- package/packages/daemon/node_modules/zod/v4/core/regexes.d.cts +62 -0
- package/packages/daemon/node_modules/zod/v4/core/regexes.d.ts +62 -0
- package/packages/daemon/node_modules/zod/v4/core/regexes.js +95 -0
- package/packages/daemon/node_modules/zod/v4/core/registries.cjs +56 -0
- package/packages/daemon/node_modules/zod/v4/core/registries.d.cts +35 -0
- package/packages/daemon/node_modules/zod/v4/core/registries.d.ts +35 -0
- package/packages/daemon/node_modules/zod/v4/core/registries.js +51 -0
- package/packages/daemon/node_modules/zod/v4/core/schemas.cjs +1748 -0
- package/packages/daemon/node_modules/zod/v4/core/schemas.d.cts +1041 -0
- package/packages/daemon/node_modules/zod/v4/core/schemas.d.ts +1041 -0
- package/packages/daemon/node_modules/zod/v4/core/schemas.js +1717 -0
- package/packages/daemon/node_modules/zod/v4/core/standard-schema.cjs +2 -0
- package/packages/daemon/node_modules/zod/v4/core/standard-schema.d.cts +55 -0
- package/packages/daemon/node_modules/zod/v4/core/standard-schema.d.ts +55 -0
- package/packages/daemon/node_modules/zod/v4/core/standard-schema.js +1 -0
- package/packages/daemon/node_modules/zod/v4/core/to-json-schema.cjs +854 -0
- package/packages/daemon/node_modules/zod/v4/core/to-json-schema.d.cts +88 -0
- package/packages/daemon/node_modules/zod/v4/core/to-json-schema.d.ts +88 -0
- package/packages/daemon/node_modules/zod/v4/core/to-json-schema.js +849 -0
- package/packages/daemon/node_modules/zod/v4/core/util.cjs +539 -0
- package/packages/daemon/node_modules/zod/v4/core/util.d.cts +183 -0
- package/packages/daemon/node_modules/zod/v4/core/util.d.ts +183 -0
- package/packages/daemon/node_modules/zod/v4/core/util.js +493 -0
- package/packages/daemon/node_modules/zod/v4/core/versions.cjs +8 -0
- package/packages/daemon/node_modules/zod/v4/core/versions.d.cts +5 -0
- package/packages/daemon/node_modules/zod/v4/core/versions.d.ts +5 -0
- package/packages/daemon/node_modules/zod/v4/core/versions.js +5 -0
- package/packages/daemon/node_modules/zod/v4/index.cjs +22 -0
- package/packages/daemon/node_modules/zod/v4/index.d.cts +3 -0
- package/packages/daemon/node_modules/zod/v4/index.d.ts +3 -0
- package/packages/daemon/node_modules/zod/v4/index.js +3 -0
- package/packages/daemon/node_modules/zod/v4/locales/ar.cjs +142 -0
- package/packages/daemon/node_modules/zod/v4/locales/ar.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ar.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ar.js +116 -0
- package/packages/daemon/node_modules/zod/v4/locales/az.cjs +141 -0
- package/packages/daemon/node_modules/zod/v4/locales/az.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/az.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/az.js +115 -0
- package/packages/daemon/node_modules/zod/v4/locales/be.cjs +190 -0
- package/packages/daemon/node_modules/zod/v4/locales/be.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/be.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/be.js +164 -0
- package/packages/daemon/node_modules/zod/v4/locales/ca.cjs +144 -0
- package/packages/daemon/node_modules/zod/v4/locales/ca.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ca.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ca.js +118 -0
- package/packages/daemon/node_modules/zod/v4/locales/cs.cjs +161 -0
- package/packages/daemon/node_modules/zod/v4/locales/cs.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/cs.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/cs.js +135 -0
- package/packages/daemon/node_modules/zod/v4/locales/de.cjs +142 -0
- package/packages/daemon/node_modules/zod/v4/locales/de.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/de.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/de.js +116 -0
- package/packages/daemon/node_modules/zod/v4/locales/en.cjs +145 -0
- package/packages/daemon/node_modules/zod/v4/locales/en.d.cts +5 -0
- package/packages/daemon/node_modules/zod/v4/locales/en.d.ts +5 -0
- package/packages/daemon/node_modules/zod/v4/locales/en.js +117 -0
- package/packages/daemon/node_modules/zod/v4/locales/eo.cjs +144 -0
- package/packages/daemon/node_modules/zod/v4/locales/eo.d.cts +5 -0
- package/packages/daemon/node_modules/zod/v4/locales/eo.d.ts +5 -0
- package/packages/daemon/node_modules/zod/v4/locales/eo.js +116 -0
- package/packages/daemon/node_modules/zod/v4/locales/es.cjs +143 -0
- package/packages/daemon/node_modules/zod/v4/locales/es.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/es.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/es.js +117 -0
- package/packages/daemon/node_modules/zod/v4/locales/fa.cjs +148 -0
- package/packages/daemon/node_modules/zod/v4/locales/fa.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/fa.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/fa.js +122 -0
- package/packages/daemon/node_modules/zod/v4/locales/fi.cjs +148 -0
- package/packages/daemon/node_modules/zod/v4/locales/fi.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/fi.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/fi.js +122 -0
- package/packages/daemon/node_modules/zod/v4/locales/fr-CA.cjs +143 -0
- package/packages/daemon/node_modules/zod/v4/locales/fr-CA.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/fr-CA.js +117 -0
- package/packages/daemon/node_modules/zod/v4/locales/fr.cjs +142 -0
- package/packages/daemon/node_modules/zod/v4/locales/fr.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/fr.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/fr.js +116 -0
- package/packages/daemon/node_modules/zod/v4/locales/he.cjs +143 -0
- package/packages/daemon/node_modules/zod/v4/locales/he.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/he.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/he.js +117 -0
- package/packages/daemon/node_modules/zod/v4/locales/hu.cjs +143 -0
- package/packages/daemon/node_modules/zod/v4/locales/hu.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/hu.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/hu.js +117 -0
- package/packages/daemon/node_modules/zod/v4/locales/id.cjs +142 -0
- package/packages/daemon/node_modules/zod/v4/locales/id.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/id.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/id.js +116 -0
- package/packages/daemon/node_modules/zod/v4/locales/index.cjs +84 -0
- package/packages/daemon/node_modules/zod/v4/locales/index.d.cts +39 -0
- package/packages/daemon/node_modules/zod/v4/locales/index.d.ts +39 -0
- package/packages/daemon/node_modules/zod/v4/locales/index.js +39 -0
- package/packages/daemon/node_modules/zod/v4/locales/it.cjs +143 -0
- package/packages/daemon/node_modules/zod/v4/locales/it.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/it.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/it.js +117 -0
- package/packages/daemon/node_modules/zod/v4/locales/ja.cjs +141 -0
- package/packages/daemon/node_modules/zod/v4/locales/ja.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ja.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ja.js +115 -0
- package/packages/daemon/node_modules/zod/v4/locales/kh.cjs +143 -0
- package/packages/daemon/node_modules/zod/v4/locales/kh.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/kh.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/kh.js +117 -0
- package/packages/daemon/node_modules/zod/v4/locales/ko.cjs +147 -0
- package/packages/daemon/node_modules/zod/v4/locales/ko.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ko.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ko.js +121 -0
- package/packages/daemon/node_modules/zod/v4/locales/mk.cjs +144 -0
- package/packages/daemon/node_modules/zod/v4/locales/mk.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/mk.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/mk.js +118 -0
- package/packages/daemon/node_modules/zod/v4/locales/ms.cjs +142 -0
- package/packages/daemon/node_modules/zod/v4/locales/ms.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ms.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ms.js +116 -0
- package/packages/daemon/node_modules/zod/v4/locales/nl.cjs +143 -0
- package/packages/daemon/node_modules/zod/v4/locales/nl.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/nl.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/nl.js +117 -0
- package/packages/daemon/node_modules/zod/v4/locales/no.cjs +142 -0
- package/packages/daemon/node_modules/zod/v4/locales/no.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/no.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/no.js +116 -0
- package/packages/daemon/node_modules/zod/v4/locales/ota.cjs +143 -0
- package/packages/daemon/node_modules/zod/v4/locales/ota.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ota.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ota.js +117 -0
- package/packages/daemon/node_modules/zod/v4/locales/pl.cjs +143 -0
- package/packages/daemon/node_modules/zod/v4/locales/pl.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/pl.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/pl.js +117 -0
- package/packages/daemon/node_modules/zod/v4/locales/ps.cjs +148 -0
- package/packages/daemon/node_modules/zod/v4/locales/ps.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ps.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ps.js +122 -0
- package/packages/daemon/node_modules/zod/v4/locales/pt.cjs +142 -0
- package/packages/daemon/node_modules/zod/v4/locales/pt.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/pt.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/pt.js +116 -0
- package/packages/daemon/node_modules/zod/v4/locales/ru.cjs +190 -0
- package/packages/daemon/node_modules/zod/v4/locales/ru.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ru.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ru.js +164 -0
- package/packages/daemon/node_modules/zod/v4/locales/sl.cjs +143 -0
- package/packages/daemon/node_modules/zod/v4/locales/sl.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/sl.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/sl.js +117 -0
- package/packages/daemon/node_modules/zod/v4/locales/sv.cjs +144 -0
- package/packages/daemon/node_modules/zod/v4/locales/sv.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/sv.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/sv.js +118 -0
- package/packages/daemon/node_modules/zod/v4/locales/ta.cjs +143 -0
- package/packages/daemon/node_modules/zod/v4/locales/ta.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ta.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ta.js +117 -0
- package/packages/daemon/node_modules/zod/v4/locales/th.cjs +143 -0
- package/packages/daemon/node_modules/zod/v4/locales/th.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/th.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/th.js +117 -0
- package/packages/daemon/node_modules/zod/v4/locales/tr.cjs +143 -0
- package/packages/daemon/node_modules/zod/v4/locales/tr.d.cts +5 -0
- package/packages/daemon/node_modules/zod/v4/locales/tr.d.ts +5 -0
- package/packages/daemon/node_modules/zod/v4/locales/tr.js +115 -0
- package/packages/daemon/node_modules/zod/v4/locales/ua.cjs +143 -0
- package/packages/daemon/node_modules/zod/v4/locales/ua.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ua.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ua.js +117 -0
- package/packages/daemon/node_modules/zod/v4/locales/ur.cjs +143 -0
- package/packages/daemon/node_modules/zod/v4/locales/ur.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ur.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/ur.js +117 -0
- package/packages/daemon/node_modules/zod/v4/locales/vi.cjs +142 -0
- package/packages/daemon/node_modules/zod/v4/locales/vi.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/vi.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/vi.js +116 -0
- package/packages/daemon/node_modules/zod/v4/locales/zh-CN.cjs +142 -0
- package/packages/daemon/node_modules/zod/v4/locales/zh-CN.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/zh-CN.js +116 -0
- package/packages/daemon/node_modules/zod/v4/locales/zh-TW.cjs +143 -0
- package/packages/daemon/node_modules/zod/v4/locales/zh-TW.d.cts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
- package/packages/daemon/node_modules/zod/v4/locales/zh-TW.js +117 -0
- package/packages/daemon/node_modules/zod/v4/mini/checks.cjs +34 -0
- package/packages/daemon/node_modules/zod/v4/mini/checks.d.cts +1 -0
- package/packages/daemon/node_modules/zod/v4/mini/checks.d.ts +1 -0
- package/packages/daemon/node_modules/zod/v4/mini/checks.js +1 -0
- package/packages/daemon/node_modules/zod/v4/mini/coerce.cjs +47 -0
- package/packages/daemon/node_modules/zod/v4/mini/coerce.d.cts +7 -0
- package/packages/daemon/node_modules/zod/v4/mini/coerce.d.ts +7 -0
- package/packages/daemon/node_modules/zod/v4/mini/coerce.js +17 -0
- package/packages/daemon/node_modules/zod/v4/mini/external.cjs +62 -0
- package/packages/daemon/node_modules/zod/v4/mini/external.d.cts +11 -0
- package/packages/daemon/node_modules/zod/v4/mini/external.d.ts +11 -0
- package/packages/daemon/node_modules/zod/v4/mini/external.js +13 -0
- package/packages/daemon/node_modules/zod/v4/mini/index.cjs +32 -0
- package/packages/daemon/node_modules/zod/v4/mini/index.d.cts +3 -0
- package/packages/daemon/node_modules/zod/v4/mini/index.d.ts +3 -0
- package/packages/daemon/node_modules/zod/v4/mini/index.js +3 -0
- package/packages/daemon/node_modules/zod/v4/mini/iso.cjs +60 -0
- package/packages/daemon/node_modules/zod/v4/mini/iso.d.cts +22 -0
- package/packages/daemon/node_modules/zod/v4/mini/iso.d.ts +22 -0
- package/packages/daemon/node_modules/zod/v4/mini/iso.js +30 -0
- package/packages/daemon/node_modules/zod/v4/mini/parse.cjs +8 -0
- package/packages/daemon/node_modules/zod/v4/mini/parse.d.cts +1 -0
- package/packages/daemon/node_modules/zod/v4/mini/parse.d.ts +1 -0
- package/packages/daemon/node_modules/zod/v4/mini/parse.js +1 -0
- package/packages/daemon/node_modules/zod/v4/mini/schemas.cjs +839 -0
- package/packages/daemon/node_modules/zod/v4/mini/schemas.d.cts +356 -0
- package/packages/daemon/node_modules/zod/v4/mini/schemas.d.ts +356 -0
- package/packages/daemon/node_modules/zod/v4/mini/schemas.js +732 -0
- package/packages/daemon/node_modules/zod/v4-mini/index.cjs +17 -0
- package/packages/daemon/node_modules/zod/v4-mini/index.d.cts +1 -0
- package/packages/daemon/node_modules/zod/v4-mini/index.d.ts +1 -0
- package/packages/daemon/node_modules/zod/v4-mini/index.js +1 -0
- package/packages/daemon/package.json +48 -0
- package/packages/daemon/src/channel-manager.ts +223 -0
- package/packages/daemon/src/cli.ts +47 -0
- package/packages/daemon/src/commands.ts +110 -0
- package/packages/daemon/src/config.ts +137 -0
- package/packages/daemon/src/daemon.test.ts +660 -0
- package/packages/daemon/src/daemon.ts +176 -0
- package/packages/daemon/src/discord-bot.test.ts +792 -0
- package/packages/daemon/src/discord-bot.ts +421 -0
- package/packages/daemon/src/event-bridge.test.ts +619 -0
- package/packages/daemon/src/event-bridge.ts +488 -0
- package/packages/daemon/src/event-formatter.test.ts +402 -0
- package/packages/daemon/src/event-formatter.ts +386 -0
- package/packages/daemon/src/index.ts +46 -0
- package/packages/daemon/src/logger.ts +88 -0
- package/packages/daemon/src/message-batcher.test.ts +308 -0
- package/packages/daemon/src/message-batcher.ts +210 -0
- package/packages/daemon/src/orchestrator.test.ts +583 -0
- package/packages/daemon/src/orchestrator.ts +440 -0
- package/packages/daemon/src/project-scanner.test.ts +235 -0
- package/packages/daemon/src/project-scanner.ts +99 -0
- package/packages/daemon/src/session-manager.test.ts +822 -0
- package/packages/daemon/src/session-manager.ts +394 -0
- package/packages/daemon/src/types.ts +199 -0
- package/packages/daemon/src/verbosity.test.ts +171 -0
- package/packages/daemon/src/verbosity.ts +101 -0
- package/packages/daemon/tsconfig.json +24 -0
- package/packages/pi-ai/dist/models.custom.d.ts +23 -0
- package/packages/pi-ai/dist/models.custom.d.ts.map +1 -1
- package/packages/pi-ai/dist/models.custom.js +24 -0
- package/packages/pi-ai/dist/models.custom.js.map +1 -1
- package/packages/pi-ai/dist/models.test.js +29 -0
- package/packages/pi-ai/dist/models.test.js.map +1 -1
- package/packages/pi-ai/src/models.custom.ts +25 -0
- package/packages/pi-ai/src/models.test.ts +33 -0
- package/packages/pi-coding-agent/dist/core/model-registry.d.ts +1 -1
- package/packages/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/core/model-registry.js.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.d.ts +2 -0
- package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.d.ts.map +1 -1
- package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.js +14 -2
- package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.js.map +1 -1
- package/packages/pi-coding-agent/package.json +1 -1
- package/packages/pi-coding-agent/src/core/model-registry.ts +1 -1
- package/packages/pi-coding-agent/src/modes/interactive/components/provider-manager.ts +16 -2
- package/pkg/package.json +1 -1
- package/scripts/ensure-workspace-builds.cjs +45 -41
- package/src/resources/extensions/bg-shell/bg-shell-lifecycle.ts +2 -2
- package/src/resources/extensions/bg-shell/utilities.ts +39 -4
- package/src/resources/extensions/gsd/auto/loop-deps.ts +4 -1
- package/src/resources/extensions/gsd/auto/phases.ts +28 -4
- package/src/resources/extensions/gsd/auto/run-unit.ts +10 -0
- package/src/resources/extensions/gsd/auto/session.ts +3 -0
- package/src/resources/extensions/gsd/auto-artifact-paths.ts +6 -0
- package/src/resources/extensions/gsd/auto-dashboard.ts +5 -2
- package/src/resources/extensions/gsd/auto-dispatch.ts +1 -1
- package/src/resources/extensions/gsd/auto-model-selection.ts +33 -3
- package/src/resources/extensions/gsd/auto-post-unit.ts +1 -1
- package/src/resources/extensions/gsd/auto-prompts.ts +15 -0
- package/src/resources/extensions/gsd/auto-start.ts +36 -11
- package/src/resources/extensions/gsd/auto-worktree.ts +46 -13
- package/src/resources/extensions/gsd/bootstrap/agent-end-recovery.ts +5 -4
- package/src/resources/extensions/gsd/bootstrap/provider-error-resume.ts +53 -0
- package/src/resources/extensions/gsd/bootstrap/register-extension.ts +19 -6
- package/src/resources/extensions/gsd/bootstrap/register-shortcuts.ts +24 -0
- package/src/resources/extensions/gsd/commands/catalog.ts +2 -1
- package/src/resources/extensions/gsd/commands/handlers/parallel.ts +19 -1
- package/src/resources/extensions/gsd/complexity-classifier.ts +1 -0
- package/src/resources/extensions/gsd/crash-recovery.ts +2 -3
- package/src/resources/extensions/gsd/dashboard-overlay.ts +2 -0
- package/src/resources/extensions/gsd/docs/preferences-reference.md +4 -2
- package/src/resources/extensions/gsd/guided-flow.ts +17 -16
- package/src/resources/extensions/gsd/metrics.ts +5 -2
- package/src/resources/extensions/gsd/parallel-monitor-overlay.ts +497 -0
- package/src/resources/extensions/gsd/parallel-orchestrator.ts +6 -1
- package/src/resources/extensions/gsd/preferences-models.ts +12 -0
- package/src/resources/extensions/gsd/preferences-types.ts +4 -0
- package/src/resources/extensions/gsd/roadmap-slices.ts +1 -0
- package/src/resources/extensions/gsd/session-lock.ts +46 -12
- package/src/resources/extensions/gsd/skill-health.ts +2 -2
- package/src/resources/extensions/gsd/tests/auto-loop.test.ts +39 -1
- package/src/resources/extensions/gsd/tests/auto-model-selection.test.ts +139 -0
- package/src/resources/extensions/gsd/tests/auto-start-cold-db-bootstrap.test.ts +37 -0
- package/src/resources/extensions/gsd/tests/auto-start-model-capture.test.ts +28 -0
- package/src/resources/extensions/gsd/tests/custom-engine-loop-integration.test.ts +1 -1
- package/src/resources/extensions/gsd/tests/{all-milestones-complete-merge.test.ts → integration/all-milestones-complete-merge.test.ts} +3 -3
- package/src/resources/extensions/gsd/tests/{atomic-task-closeout.test.ts → integration/atomic-task-closeout.test.ts} +1 -1
- package/src/resources/extensions/gsd/tests/{auto-preflight.test.ts → integration/auto-preflight.test.ts} +1 -1
- package/src/resources/extensions/gsd/tests/{auto-recovery.test.ts → integration/auto-recovery.test.ts} +7 -7
- package/src/resources/extensions/gsd/tests/{auto-secrets-gate.test.ts → integration/auto-secrets-gate.test.ts} +2 -2
- package/src/resources/extensions/gsd/tests/{auto-stash-merge.test.ts → integration/auto-stash-merge.test.ts} +3 -3
- package/src/resources/extensions/gsd/tests/{auto-worktree-milestone-merge.test.ts → integration/auto-worktree-milestone-merge.test.ts} +4 -4
- package/src/resources/extensions/gsd/tests/{auto-worktree.test.ts → integration/auto-worktree.test.ts} +5 -5
- package/src/resources/extensions/gsd/tests/{continue-here.test.ts → integration/continue-here.test.ts} +3 -3
- package/src/resources/extensions/gsd/tests/{doctor-completion-deferral.test.ts → integration/doctor-completion-deferral.test.ts} +1 -1
- package/src/resources/extensions/gsd/tests/{doctor-delimiter-fix.test.ts → integration/doctor-delimiter-fix.test.ts} +1 -1
- package/src/resources/extensions/gsd/tests/{doctor-enhancements.test.ts → integration/doctor-enhancements.test.ts} +3 -3
- package/src/resources/extensions/gsd/tests/{doctor-environment-worktree.test.ts → integration/doctor-environment-worktree.test.ts} +1 -1
- package/src/resources/extensions/gsd/tests/{doctor-environment.test.ts → integration/doctor-environment.test.ts} +1 -1
- package/src/resources/extensions/gsd/tests/{doctor-fixlevel.test.ts → integration/doctor-fixlevel.test.ts} +2 -2
- package/src/resources/extensions/gsd/tests/{doctor-git.test.ts → integration/doctor-git.test.ts} +1 -1
- package/src/resources/extensions/gsd/tests/{doctor-proactive.test.ts → integration/doctor-proactive.test.ts} +1 -1
- package/src/resources/extensions/gsd/tests/{doctor-roadmap-summary-atomicity.test.ts → integration/doctor-roadmap-summary-atomicity.test.ts} +1 -1
- package/src/resources/extensions/gsd/tests/{doctor-runtime.test.ts → integration/doctor-runtime.test.ts} +1 -1
- package/src/resources/extensions/gsd/tests/{doctor.test.ts → integration/doctor.test.ts} +1 -1
- package/src/resources/extensions/gsd/tests/{e2e-workflow-pipeline-integration.test.ts → integration/e2e-workflow-pipeline-integration.test.ts} +5 -5
- package/src/resources/extensions/gsd/tests/{feature-branch-lifecycle-integration.test.ts → integration/feature-branch-lifecycle-integration.test.ts} +4 -4
- package/src/resources/extensions/gsd/tests/{git-locale.test.ts → integration/git-locale.test.ts} +4 -4
- package/src/resources/extensions/gsd/tests/{git-self-heal.test.ts → integration/git-self-heal.test.ts} +1 -1
- package/src/resources/extensions/gsd/tests/{git-service.test.ts → integration/git-service.test.ts} +4 -4
- package/src/resources/extensions/gsd/tests/{gitignore-tracked-gsd.test.ts → integration/gitignore-tracked-gsd.test.ts} +2 -2
- package/src/resources/extensions/gsd/tests/{idle-recovery.test.ts → integration/idle-recovery.test.ts} +3 -3
- package/src/resources/extensions/gsd/tests/{inherited-repo-home-dir.test.ts → integration/inherited-repo-home-dir.test.ts} +1 -1
- package/src/resources/extensions/gsd/tests/{integration-lifecycle.test.ts → integration/integration-lifecycle.test.ts} +4 -4
- package/src/resources/extensions/gsd/tests/{integration-mixed-milestones.test.ts → integration/integration-mixed-milestones.test.ts} +6 -6
- package/src/resources/extensions/gsd/tests/{integration-proof.test.ts → integration/integration-proof.test.ts} +12 -12
- package/src/resources/extensions/gsd/tests/{migrate-command.test.ts → integration/migrate-command.test.ts} +2 -2
- package/src/resources/extensions/gsd/tests/{milestone-transition-worktree.test.ts → integration/milestone-transition-worktree.test.ts} +3 -3
- package/src/resources/extensions/gsd/tests/{parallel-merge.test.ts → integration/parallel-merge.test.ts} +3 -3
- package/src/resources/extensions/gsd/tests/{parallel-workers-multi-milestone-e2e.test.ts → integration/parallel-workers-multi-milestone-e2e.test.ts} +3 -3
- package/src/resources/extensions/gsd/tests/{paths.test.ts → integration/paths.test.ts} +1 -1
- package/src/resources/extensions/gsd/tests/{plugin-importer-live.test.ts → integration/plugin-importer-live.test.ts} +2 -2
- package/src/resources/extensions/gsd/tests/{queue-completed-milestone-perf.test.ts → integration/queue-completed-milestone-perf.test.ts} +3 -3
- package/src/resources/extensions/gsd/tests/{queue-reorder-e2e.test.ts → integration/queue-reorder-e2e.test.ts} +5 -5
- package/src/resources/extensions/gsd/tests/{quick-branch-lifecycle.test.ts → integration/quick-branch-lifecycle.test.ts} +5 -5
- package/src/resources/extensions/gsd/tests/{run-uat.test.ts → integration/run-uat.test.ts} +4 -4
- package/src/resources/extensions/gsd/tests/{token-savings.test.ts → integration/token-savings.test.ts} +3 -3
- package/src/resources/extensions/gsd/tests/{worktree-e2e.test.ts → integration/worktree-e2e.test.ts} +4 -4
- package/src/resources/extensions/gsd/tests/journal-integration.test.ts +56 -1
- package/src/resources/extensions/gsd/tests/model-unittype-mapping.test.ts +192 -0
- package/src/resources/extensions/gsd/tests/parallel-monitor-overlay.test.ts +60 -0
- package/src/resources/extensions/gsd/tests/parallel-worker-lock-contention.test.ts +226 -0
- package/src/resources/extensions/gsd/tests/plan-milestone-queue-context.test.ts +48 -0
- package/src/resources/extensions/gsd/tests/preferences-worktree-sync.test.ts +61 -19
- package/src/resources/extensions/gsd/tests/provider-errors.test.ts +98 -0
- package/src/resources/extensions/gsd/tests/register-extension-guard.test.ts +59 -0
- package/src/resources/extensions/gsd/tests/roadmap-slices.test.ts +17 -0
- package/src/resources/extensions/gsd/tests/sqlite-unavailable-gate.test.ts +14 -12
- package/src/resources/extensions/gsd/tests/subagent-agent-discovery.test.ts +44 -0
- package/src/resources/extensions/gsd/tests/worktree-preferences-sync.test.ts +49 -24
- package/src/resources/extensions/gsd/visualizer-overlay.ts +3 -3
- package/src/resources/extensions/shared/format-utils.ts +1 -1
- package/src/resources/extensions/subagent/agents.ts +8 -2
- package/src/resources/extensions/subagent/worker-registry.ts +2 -1
- package/dist/web/standalone/.next/static/chunks/4024.87fd909ae0110f50.js +0 -9
- package/dist/web/standalone/.next/static/chunks/app/page-fbecd1237e2d6d1f.js +0 -1
- package/dist/web/standalone/.next/static/chunks/main-app-d3d4c336195465f9.js +0 -1
- package/dist/web/standalone/.next/static/chunks/next/dist/client/components/builtin/global-error-ab5a8926e07ec673.js +0 -1
- /package/dist/web/standalone/.next/static/{KixbEdSRlU9zzYdZdrJ7A → 3XCsmJU9i9WebfYynW_BO}/_buildManifest.js +0 -0
- /package/dist/web/standalone/.next/static/{KixbEdSRlU9zzYdZdrJ7A → 3XCsmJU9i9WebfYynW_BO}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Model registry - manages built-in and custom models, provides API key resolution.\n */\n\nimport {\n\ttype Api,\n\tapplyCapabilityPatches,\n\ttype AssistantMessageEventStream,\n\ttype Context,\n\tgetApiProvider,\n\tgetModels,\n\tgetProviders,\n\ttype KnownProvider,\n\ttype Model,\n\ttype OAuthProviderInterface,\n\ttype OpenAICompletionsCompat,\n\ttype OpenAIResponsesCompat,\n\tregisterApiProvider,\n\tresetApiProviders,\n\ttype SimpleStreamOptions,\n} from \"@gsd/pi-ai\";\nimport { registerOAuthProvider, resetOAuthProviders } from \"@gsd/pi-ai/oauth\";\nimport { type Static, Type } from \"@sinclair/typebox\";\nimport AjvModule from \"ajv\";\nimport { existsSync, readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { getAgentDir } from \"../config.js\";\nimport type { AuthStorage } from \"./auth-storage.js\";\nimport { ModelDiscoveryCache } from \"./discovery-cache.js\";\nimport type { DiscoveredModel, DiscoveryResult } from \"./model-discovery.js\";\nimport { getDefaultTTL, getDiscoverableProviders, getDiscoveryAdapter } from \"./model-discovery.js\";\nimport { clearConfigValueCache, resolveConfigValue, resolveHeaders } from \"./resolve-config-value.js\";\nimport { isLocalModel } from \"./local-model-check.js\";\n\nconst Ajv = (AjvModule as any).default || AjvModule;\nconst ajv = new Ajv();\n\n// Schema for OpenRouter routing preferences\nconst OpenRouterRoutingSchema = Type.Object({\n\tonly: Type.Optional(Type.Array(Type.String())),\n\torder: Type.Optional(Type.Array(Type.String())),\n});\n\n// Schema for Vercel AI Gateway routing preferences\nconst VercelGatewayRoutingSchema = Type.Object({\n\tonly: Type.Optional(Type.Array(Type.String())),\n\torder: Type.Optional(Type.Array(Type.String())),\n});\n\n// Schema for OpenAI compatibility settings\nconst OpenAICompletionsCompatSchema = Type.Object({\n\tsupportsStore: Type.Optional(Type.Boolean()),\n\tsupportsDeveloperRole: Type.Optional(Type.Boolean()),\n\tsupportsReasoningEffort: Type.Optional(Type.Boolean()),\n\tsupportsUsageInStreaming: Type.Optional(Type.Boolean()),\n\tmaxTokensField: Type.Optional(Type.Union([Type.Literal(\"max_completion_tokens\"), Type.Literal(\"max_tokens\")])),\n\trequiresToolResultName: Type.Optional(Type.Boolean()),\n\trequiresAssistantAfterToolResult: Type.Optional(Type.Boolean()),\n\trequiresThinkingAsText: Type.Optional(Type.Boolean()),\n\trequiresMistralToolIds: Type.Optional(Type.Boolean()),\n\tthinkingFormat: Type.Optional(Type.Union([Type.Literal(\"openai\"), Type.Literal(\"zai\"), Type.Literal(\"qwen\")])),\n\topenRouterRouting: Type.Optional(OpenRouterRoutingSchema),\n\tvercelGatewayRouting: Type.Optional(VercelGatewayRoutingSchema),\n});\n\nconst OpenAIResponsesCompatSchema = Type.Object({\n\t// Reserved for future use\n});\n\nconst OpenAICompatSchema = Type.Union([OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema]);\n\n// Schema for custom model definition\n// Most fields are optional with sensible defaults for local models (Ollama, LM Studio, etc.)\nconst ModelDefinitionSchema = Type.Object({\n\tid: Type.String({ minLength: 1 }),\n\tname: Type.Optional(Type.String({ minLength: 1 })),\n\tapi: Type.Optional(Type.String({ minLength: 1 })),\n\tbaseUrl: Type.Optional(Type.String({ minLength: 1 })),\n\treasoning: Type.Optional(Type.Boolean()),\n\tinput: Type.Optional(Type.Array(Type.Union([Type.Literal(\"text\"), Type.Literal(\"image\")]))),\n\tcost: Type.Optional(\n\t\tType.Object({\n\t\t\tinput: Type.Number(),\n\t\t\toutput: Type.Number(),\n\t\t\tcacheRead: Type.Number(),\n\t\t\tcacheWrite: Type.Number(),\n\t\t}),\n\t),\n\tcontextWindow: Type.Optional(Type.Number()),\n\tmaxTokens: Type.Optional(Type.Number()),\n\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tcompat: Type.Optional(OpenAICompatSchema),\n});\n\n// Schema for per-model overrides (all fields optional, merged with built-in model)\nconst ModelOverrideSchema = Type.Object({\n\tname: Type.Optional(Type.String({ minLength: 1 })),\n\treasoning: Type.Optional(Type.Boolean()),\n\tinput: Type.Optional(Type.Array(Type.Union([Type.Literal(\"text\"), Type.Literal(\"image\")]))),\n\tcost: Type.Optional(\n\t\tType.Object({\n\t\t\tinput: Type.Optional(Type.Number()),\n\t\t\toutput: Type.Optional(Type.Number()),\n\t\t\tcacheRead: Type.Optional(Type.Number()),\n\t\t\tcacheWrite: Type.Optional(Type.Number()),\n\t\t}),\n\t),\n\tcontextWindow: Type.Optional(Type.Number()),\n\tmaxTokens: Type.Optional(Type.Number()),\n\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tcompat: Type.Optional(OpenAICompatSchema),\n});\n\ntype ModelOverride = Static<typeof ModelOverrideSchema>;\n\nconst ProviderConfigSchema = Type.Object({\n\tbaseUrl: Type.Optional(Type.String({ minLength: 1 })),\n\tapiKey: Type.Optional(Type.String({ minLength: 1 })),\n\tapi: Type.Optional(Type.String({ minLength: 1 })),\n\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tauthHeader: Type.Optional(Type.Boolean()),\n\tmodels: Type.Optional(Type.Array(ModelDefinitionSchema)),\n\tmodelOverrides: Type.Optional(Type.Record(Type.String(), ModelOverrideSchema)),\n});\n\nconst ModelsConfigSchema = Type.Object({\n\tproviders: Type.Record(Type.String(), ProviderConfigSchema),\n});\n\najv.addSchema(ModelsConfigSchema, \"ModelsConfig\");\n\ntype ModelsConfig = Static<typeof ModelsConfigSchema>;\n\nexport type ProviderAuthMode = \"apiKey\" | \"oauth\" | \"externalCli\" | \"none\";\n\n/** Provider override config (baseUrl, headers, apiKey) without custom models */\ninterface ProviderOverride {\n\tbaseUrl?: string;\n\theaders?: Record<string, string>;\n\tapiKey?: string;\n}\n\n/** Result of loading custom models from models.json */\ninterface CustomModelsResult {\n\tmodels: Model<Api>[];\n\t/** Providers with baseUrl/headers/apiKey overrides for built-in models */\n\toverrides: Map<string, ProviderOverride>;\n\t/** Per-model overrides: provider -> modelId -> override */\n\tmodelOverrides: Map<string, Map<string, ModelOverride>>;\n\terror: string | undefined;\n}\n\nfunction emptyCustomModelsResult(error?: string): CustomModelsResult {\n\treturn { models: [], overrides: new Map(), modelOverrides: new Map(), error };\n}\n\nfunction mergeCompat(\n\tbaseCompat: Model<Api>[\"compat\"],\n\toverrideCompat: ModelOverride[\"compat\"],\n): Model<Api>[\"compat\"] | undefined {\n\tif (!overrideCompat) return baseCompat;\n\n\tconst base = baseCompat as OpenAICompletionsCompat | OpenAIResponsesCompat | undefined;\n\tconst override = overrideCompat as OpenAICompletionsCompat | OpenAIResponsesCompat;\n\tconst merged = { ...base, ...override } as OpenAICompletionsCompat | OpenAIResponsesCompat;\n\n\tconst baseCompletions = base as OpenAICompletionsCompat | undefined;\n\tconst overrideCompletions = override as OpenAICompletionsCompat;\n\tconst mergedCompletions = merged as OpenAICompletionsCompat;\n\n\tif (baseCompletions?.openRouterRouting || overrideCompletions.openRouterRouting) {\n\t\tmergedCompletions.openRouterRouting = {\n\t\t\t...baseCompletions?.openRouterRouting,\n\t\t\t...overrideCompletions.openRouterRouting,\n\t\t};\n\t}\n\n\tif (baseCompletions?.vercelGatewayRouting || overrideCompletions.vercelGatewayRouting) {\n\t\tmergedCompletions.vercelGatewayRouting = {\n\t\t\t...baseCompletions?.vercelGatewayRouting,\n\t\t\t...overrideCompletions.vercelGatewayRouting,\n\t\t};\n\t}\n\n\treturn merged as Model<Api>[\"compat\"];\n}\n\n/**\n * Deep merge a model override into a model.\n * Handles nested objects (cost, compat) by merging rather than replacing.\n */\nfunction applyModelOverride(model: Model<Api>, override: ModelOverride): Model<Api> {\n\tconst result = { ...model };\n\n\t// Simple field overrides\n\tif (override.name !== undefined) result.name = override.name;\n\tif (override.reasoning !== undefined) result.reasoning = override.reasoning;\n\tif (override.input !== undefined) result.input = override.input as (\"text\" | \"image\")[];\n\tif (override.contextWindow !== undefined) result.contextWindow = override.contextWindow;\n\tif (override.maxTokens !== undefined) result.maxTokens = override.maxTokens;\n\n\t// Merge cost (partial override)\n\tif (override.cost) {\n\t\tresult.cost = {\n\t\t\tinput: override.cost.input ?? model.cost.input,\n\t\t\toutput: override.cost.output ?? model.cost.output,\n\t\t\tcacheRead: override.cost.cacheRead ?? model.cost.cacheRead,\n\t\t\tcacheWrite: override.cost.cacheWrite ?? model.cost.cacheWrite,\n\t\t};\n\t}\n\n\t// Merge headers\n\tif (override.headers) {\n\t\tconst resolvedHeaders = resolveHeaders(override.headers);\n\t\tresult.headers = resolvedHeaders ? { ...model.headers, ...resolvedHeaders } : model.headers;\n\t}\n\n\t// Deep merge compat\n\tresult.compat = mergeCompat(model.compat, override.compat);\n\n\treturn result;\n}\n\n\n/**\n * Model registry - loads and manages models, resolves API keys via AuthStorage.\n */\nexport class ModelRegistry {\n\tprivate models: Model<Api>[] = [];\n\tprivate discoveredModels: Model<Api>[] = [];\n\tprivate discoveryCache: ModelDiscoveryCache;\n\tprivate customProviderApiKeys: Map<string, string> = new Map();\n\tprivate registeredProviders: Map<string, ProviderConfigInput> = new Map();\n\tprivate loadError: string | undefined = undefined;\n\n\tconstructor(\n\t\treadonly authStorage: AuthStorage,\n\t\tprivate modelsJsonPath: string | undefined = join(getAgentDir(), \"models.json\"),\n\t) {\n\t\tthis.discoveryCache = new ModelDiscoveryCache();\n\n\t\t// Set up fallback resolver for custom provider API keys\n\t\tthis.authStorage.setFallbackResolver((provider) => {\n\t\t\tconst keyConfig = this.customProviderApiKeys.get(provider);\n\t\t\tif (keyConfig) {\n\t\t\t\treturn resolveConfigValue(keyConfig);\n\t\t\t}\n\t\t\treturn undefined;\n\t\t});\n\n\t\t// Refresh models when credentials change (e.g., OAuth token refresh with new model limits)\n\t\tthis.authStorage.onCredentialChange(() => this.refresh());\n\n\t\t// Load models\n\t\tthis.loadModels();\n\t}\n\n\t/**\n\t * Reload models from disk (built-in + custom from models.json).\n\t */\n\trefresh(): void {\n\t\tthis.customProviderApiKeys.clear();\n\t\tthis.loadError = undefined;\n\n\t\t// Ensure dynamic API/OAuth registrations are rebuilt from current provider state.\n\t\tresetApiProviders();\n\t\tresetOAuthProviders();\n\n\t\tthis.loadModels();\n\n\t\tfor (const [providerName, config] of this.registeredProviders.entries()) {\n\t\t\tthis.applyProviderConfig(providerName, config);\n\t\t}\n\t}\n\n\t/**\n\t * Get any error from loading models.json (undefined if no error).\n\t */\n\tgetError(): string | undefined {\n\t\treturn this.loadError;\n\t}\n\n\tprivate loadModels(): void {\n\t\t// Load custom models and overrides from models.json\n\t\tconst {\n\t\t\tmodels: customModels,\n\t\t\toverrides,\n\t\t\tmodelOverrides,\n\t\t\terror,\n\t\t} = this.modelsJsonPath ? this.loadCustomModels(this.modelsJsonPath) : emptyCustomModelsResult();\n\n\t\tif (error) {\n\t\t\tthis.loadError = error;\n\t\t\t// Keep built-in models even if custom models failed to load\n\t\t}\n\n\t\tconst builtInModels = this.loadBuiltInModels(overrides, modelOverrides);\n\t\tlet combined = this.mergeCustomModels(builtInModels, customModels);\n\n\t\t// Let OAuth providers modify their models (e.g., update baseUrl)\n\t\tfor (const oauthProvider of this.authStorage.getOAuthProviders()) {\n\t\t\tconst cred = this.authStorage.get(oauthProvider.id);\n\t\t\tif (cred?.type === \"oauth\" && oauthProvider.modifyModels) {\n\t\t\t\tcombined = oauthProvider.modifyModels(combined, cred);\n\t\t\t}\n\t\t}\n\n\t\t// Apply capability patches so custom/discovered/extension models get\n\t\t// capabilities (supportsXhigh, supportsServiceTier, etc.) that the\n\t\t// static pi-ai registry applies at module load for built-in models.\n\t\tthis.models = applyCapabilityPatches(combined);\n\t}\n\n\t/** Load built-in models and apply provider/model overrides */\n\tprivate loadBuiltInModels(\n\t\toverrides: Map<string, ProviderOverride>,\n\t\tmodelOverrides: Map<string, Map<string, ModelOverride>>,\n\t): Model<Api>[] {\n\t\treturn getProviders().flatMap((provider) => {\n\t\t\tconst models = getModels(provider as KnownProvider) as Model<Api>[];\n\t\t\tconst providerOverride = overrides.get(provider);\n\t\t\tconst perModelOverrides = modelOverrides.get(provider);\n\n\t\t\treturn models.map((m) => {\n\t\t\t\tlet model = m;\n\n\t\t\t\t// Apply provider-level baseUrl/headers override\n\t\t\t\tif (providerOverride) {\n\t\t\t\t\tconst resolvedHeaders = resolveHeaders(providerOverride.headers);\n\t\t\t\t\tmodel = {\n\t\t\t\t\t\t...model,\n\t\t\t\t\t\tbaseUrl: providerOverride.baseUrl ?? model.baseUrl,\n\t\t\t\t\t\theaders: resolvedHeaders ? { ...model.headers, ...resolvedHeaders } : model.headers,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Apply per-model override\n\t\t\t\tconst modelOverride = perModelOverrides?.get(m.id);\n\t\t\t\tif (modelOverride) {\n\t\t\t\t\tmodel = applyModelOverride(model, modelOverride);\n\t\t\t\t}\n\n\t\t\t\treturn model;\n\t\t\t});\n\t\t});\n\t}\n\n\t/** Merge custom models into built-in list by provider+id (custom wins on conflicts). */\n\tprivate mergeCustomModels(builtInModels: Model<Api>[], customModels: Model<Api>[]): Model<Api>[] {\n\t\tconst merged = [...builtInModels];\n\t\tfor (const customModel of customModels) {\n\t\t\tconst existingIndex = merged.findIndex((m) => m.provider === customModel.provider && m.id === customModel.id);\n\t\t\tif (existingIndex >= 0) {\n\t\t\t\tmerged[existingIndex] = customModel;\n\t\t\t} else {\n\t\t\t\tmerged.push(customModel);\n\t\t\t}\n\t\t}\n\t\treturn merged;\n\t}\n\n\tprivate loadCustomModels(modelsJsonPath: string): CustomModelsResult {\n\t\tif (!existsSync(modelsJsonPath)) {\n\t\t\treturn emptyCustomModelsResult();\n\t\t}\n\n\t\ttry {\n\t\t\tconst content = readFileSync(modelsJsonPath, \"utf-8\");\n\t\t\tconst config: ModelsConfig = JSON.parse(content);\n\n\t\t\t// Validate schema\n\t\t\tconst validate = ajv.getSchema(\"ModelsConfig\")!;\n\t\t\tif (!validate(config)) {\n\t\t\t\tconst errors =\n\t\t\t\t\tvalidate.errors?.map((e: any) => ` - ${e.instancePath || \"root\"}: ${e.message}`).join(\"\\n\") ||\n\t\t\t\t\t\"Unknown schema error\";\n\t\t\t\treturn emptyCustomModelsResult(`Invalid models.json schema:\\n${errors}\\n\\nFile: ${modelsJsonPath}`);\n\t\t\t}\n\n\t\t\t// Additional validation\n\t\t\tthis.validateConfig(config);\n\n\t\t\tconst overrides = new Map<string, ProviderOverride>();\n\t\t\tconst modelOverrides = new Map<string, Map<string, ModelOverride>>();\n\n\t\t\tfor (const [providerName, providerConfig] of Object.entries(config.providers)) {\n\t\t\t\t// Apply provider-level baseUrl/headers/apiKey override to built-in models when configured.\n\t\t\t\tif (providerConfig.baseUrl || providerConfig.headers || providerConfig.apiKey) {\n\t\t\t\t\toverrides.set(providerName, {\n\t\t\t\t\t\tbaseUrl: providerConfig.baseUrl,\n\t\t\t\t\t\theaders: providerConfig.headers,\n\t\t\t\t\t\tapiKey: providerConfig.apiKey,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Store API key for fallback resolver.\n\t\t\t\tif (providerConfig.apiKey) {\n\t\t\t\t\tthis.customProviderApiKeys.set(providerName, providerConfig.apiKey);\n\t\t\t\t}\n\n\t\t\t\tif (providerConfig.modelOverrides) {\n\t\t\t\t\tmodelOverrides.set(providerName, new Map(Object.entries(providerConfig.modelOverrides)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn { models: this.parseModels(config), overrides, modelOverrides, error: undefined };\n\t\t} catch (error) {\n\t\t\tif (error instanceof SyntaxError) {\n\t\t\t\treturn emptyCustomModelsResult(`Failed to parse models.json: ${error.message}\\n\\nFile: ${modelsJsonPath}`);\n\t\t\t}\n\t\t\treturn emptyCustomModelsResult(\n\t\t\t\t`Failed to load models.json: ${error instanceof Error ? error.message : error}\\n\\nFile: ${modelsJsonPath}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate validateConfig(config: ModelsConfig): void {\n\t\tfor (const [providerName, providerConfig] of Object.entries(config.providers)) {\n\t\t\tconst hasProviderApi = !!providerConfig.api;\n\t\t\tconst models = providerConfig.models ?? [];\n\t\t\tconst hasModelOverrides =\n\t\t\t\tproviderConfig.modelOverrides && Object.keys(providerConfig.modelOverrides).length > 0;\n\n\t\t\tif (models.length === 0) {\n\t\t\t\t// Override-only config: needs baseUrl OR modelOverrides (or both)\n\t\t\t\tif (!providerConfig.baseUrl && !hasModelOverrides) {\n\t\t\t\t\tthrow new Error(`Provider ${providerName}: must specify \"baseUrl\", \"modelOverrides\", or \"models\".`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Custom models are merged into provider models and require endpoint + auth.\n\t\t\t\tif (!providerConfig.baseUrl) {\n\t\t\t\t\tthrow new Error(`Provider ${providerName}: \"baseUrl\" is required when defining custom models.`);\n\t\t\t\t}\n\t\t\t\tif (!providerConfig.apiKey) {\n\t\t\t\t\tthrow new Error(`Provider ${providerName}: \"apiKey\" is required when defining custom models.`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const modelDef of models) {\n\t\t\t\tconst hasModelApi = !!modelDef.api;\n\n\t\t\t\tif (!hasProviderApi && !hasModelApi) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Provider ${providerName}, model ${modelDef.id}: no \"api\" specified. Set at provider or model level.`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (!modelDef.id) throw new Error(`Provider ${providerName}: model missing \"id\"`);\n\t\t\t\t// Validate contextWindow/maxTokens only if provided (they have defaults)\n\t\t\t\tif (modelDef.contextWindow !== undefined && modelDef.contextWindow <= 0)\n\t\t\t\t\tthrow new Error(`Provider ${providerName}, model ${modelDef.id}: invalid contextWindow`);\n\t\t\t\tif (modelDef.maxTokens !== undefined && modelDef.maxTokens <= 0)\n\t\t\t\t\tthrow new Error(`Provider ${providerName}, model ${modelDef.id}: invalid maxTokens`);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate parseModels(config: ModelsConfig): Model<Api>[] {\n\t\tconst models: Model<Api>[] = [];\n\n\t\tfor (const [providerName, providerConfig] of Object.entries(config.providers)) {\n\t\t\tconst modelDefs = providerConfig.models ?? [];\n\t\t\tif (modelDefs.length === 0) continue; // Override-only, no custom models\n\n\t\t\t// Store API key config for fallback resolver\n\t\t\tif (providerConfig.apiKey) {\n\t\t\t\tthis.customProviderApiKeys.set(providerName, providerConfig.apiKey);\n\t\t\t}\n\n\t\t\tfor (const modelDef of modelDefs) {\n\t\t\t\tconst api = modelDef.api || providerConfig.api;\n\t\t\t\tif (!api) continue;\n\n\t\t\t\t// Merge headers: provider headers are base, model headers override\n\t\t\t\t// Resolve env vars and shell commands in header values\n\t\t\t\tconst providerHeaders = resolveHeaders(providerConfig.headers);\n\t\t\t\tconst modelHeaders = resolveHeaders(modelDef.headers);\n\t\t\t\tlet headers = providerHeaders || modelHeaders ? { ...providerHeaders, ...modelHeaders } : undefined;\n\n\t\t\t\t// If authHeader is true, add Authorization header with resolved API key\n\t\t\t\tif (providerConfig.authHeader && providerConfig.apiKey) {\n\t\t\t\t\tconst resolvedKey = resolveConfigValue(providerConfig.apiKey);\n\t\t\t\t\tif (resolvedKey) {\n\t\t\t\t\t\theaders = { ...headers, Authorization: `Bearer ${resolvedKey}` };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Provider baseUrl is required when custom models are defined.\n\t\t\t\t// Individual models can override it with modelDef.baseUrl.\n\t\t\t\tconst defaultCost = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };\n\t\t\t\tmodels.push({\n\t\t\t\t\tid: modelDef.id,\n\t\t\t\t\tname: modelDef.name ?? modelDef.id,\n\t\t\t\t\tapi: api as Api,\n\t\t\t\t\tprovider: providerName,\n\t\t\t\t\tbaseUrl: modelDef.baseUrl ?? providerConfig.baseUrl!,\n\t\t\t\t\treasoning: modelDef.reasoning ?? false,\n\t\t\t\t\tinput: (modelDef.input ?? [\"text\"]) as (\"text\" | \"image\")[],\n\t\t\t\t\tcost: modelDef.cost ?? defaultCost,\n\t\t\t\t\tcontextWindow: modelDef.contextWindow ?? 128000,\n\t\t\t\t\tmaxTokens: modelDef.maxTokens ?? 16384,\n\t\t\t\t\theaders,\n\t\t\t\t\tcompat: modelDef.compat,\n\t\t\t\t} as Model<Api>);\n\t\t\t}\n\t\t}\n\n\t\treturn models;\n\t}\n\n\t/**\n\t * Get all models (built-in + custom).\n\t * If models.json had errors, returns only built-in models.\n\t */\n\tgetAll(): Model<Api>[] {\n\t\treturn this.models;\n\t}\n\n\t/**\n\t * Get only models that have auth configured.\n\t * This is a fast check that doesn't refresh OAuth tokens.\n\t */\n\tgetAvailable(): Model<Api>[] {\n\t\treturn this.models.filter((m) => this.isProviderRequestReady(m.provider));\n\t}\n\n\t/**\n\t * Get auth mode for a provider.\n\t * Defaults to \"apiKey\" for built-ins and providers without explicit mode.\n\t */\n\tgetProviderAuthMode(provider: string): ProviderAuthMode {\n\t\tconst config = this.registeredProviders.get(provider);\n\t\tif (!config) return \"apiKey\";\n\t\tif (config.authMode) return config.authMode;\n\t\tif (config.oauth) return \"oauth\";\n\t\tif (config.apiKey) return \"apiKey\";\n\t\treturn \"apiKey\";\n\t}\n\n\t/**\n\t * Whether a provider can be used for requests/fallback without hard auth gating.\n\t */\n\tisProviderRequestReady(provider: string): boolean {\n\t\tconst config = this.registeredProviders.get(provider);\n\t\tif (config?.isReady) return config.isReady();\n\t\tconst authMode = this.getProviderAuthMode(provider);\n\t\tif (authMode === \"externalCli\" || authMode === \"none\") return true;\n\t\treturn this.authStorage.hasAuth(provider);\n\t}\n\n\t/**\n\t * Find a model by provider and ID.\n\t */\n\tfind(provider: string, modelId: string): Model<Api> | undefined {\n\t\treturn this.models.find((m) => m.provider === provider && m.id === modelId);\n\t}\n\n\t/**\n\t * Get API key for a model.\n\t * Returns undefined for externalCli/none providers (no key needed).\n\t * @param sessionId - Optional session ID for sticky credential selection\n\t */\n\tasync getApiKey(model: Model<Api>, sessionId?: string): Promise<string | undefined> {\n\t\tconst authMode = this.getProviderAuthMode(model.provider);\n\t\tif (authMode === \"externalCli\" || authMode === \"none\") return undefined;\n\t\treturn this.authStorage.getApiKey(model.provider, sessionId, { baseUrl: model.baseUrl });\n\t}\n\n\t/**\n\t * Get API key for a provider.\n\t * Returns undefined for externalCli/none providers (no key needed).\n\t * @param sessionId - Optional session ID for sticky credential selection\n\t */\n\tasync getApiKeyForProvider(provider: string, sessionId?: string): Promise<string | undefined> {\n\t\tconst authMode = this.getProviderAuthMode(provider);\n\t\tif (authMode === \"externalCli\" || authMode === \"none\") return undefined;\n\t\treturn this.authStorage.getApiKey(provider, sessionId);\n\t}\n\n\t/**\n\t * Check if a model is using OAuth credentials (subscription).\n\t */\n\tisUsingOAuth(model: Model<Api>): boolean {\n\t\tconst cred = this.authStorage.get(model.provider);\n\t\treturn cred?.type === \"oauth\";\n\t}\n\n\t/**\n\t * Register a provider dynamically (from extensions).\n\t *\n\t * If provider has models: replaces all existing models for this provider.\n\t * If provider has only baseUrl/headers: overrides existing models' URLs.\n\t * If provider has oauth: registers OAuth provider for /login support.\n\t */\n\tregisterProvider(providerName: string, config: ProviderConfigInput): void {\n\t\tthis.registeredProviders.set(providerName, config);\n\t\tthis.applyProviderConfig(providerName, config);\n\t}\n\n\t/**\n\t * Unregister a previously registered provider.\n\t *\n\t * Removes the provider from the registry and reloads models from disk so that\n\t * built-in models overridden by this provider are restored to their original state.\n\t * Also resets dynamic OAuth and API stream registrations before reapplying\n\t * remaining dynamic providers.\n\t * Has no effect if the provider was never registered.\n\t */\n\tunregisterProvider(providerName: string): void {\n\t\tif (!this.registeredProviders.has(providerName)) return;\n\t\tthis.registeredProviders.delete(providerName);\n\t\tthis.customProviderApiKeys.delete(providerName);\n\t\tthis.refresh();\n\t}\n\n\tprivate applyProviderConfig(providerName: string, config: ProviderConfigInput): void {\n\t\t// Register OAuth provider if provided\n\t\tif (config.oauth) {\n\t\t\t// Ensure the OAuth provider ID matches the provider name\n\t\t\tconst oauthProvider: OAuthProviderInterface = {\n\t\t\t\t...config.oauth,\n\t\t\t\tid: providerName,\n\t\t\t};\n\t\t\tregisterOAuthProvider(oauthProvider);\n\t\t}\n\n\t\tif (config.streamSimple) {\n\t\t\tif (!config.api) {\n\t\t\t\tthrow new Error(`Provider ${providerName}: \"api\" is required when registering streamSimple.`);\n\t\t\t}\n\t\t\tconst rawStreamSimple = config.streamSimple;\n\t\t\tconst authMode = config.authMode ?? \"apiKey\";\n\n\t\t\t// Keyless providers never see apiKey in options — enforced at registration,\n\t\t\t// not by convention. Prevents undefined from reaching any handler.\n\t\t\tconst streamSimple = (authMode === \"externalCli\" || authMode === \"none\")\n\t\t\t\t? ((model: Model<Api>, context: Context, options?: SimpleStreamOptions) => {\n\t\t\t\t\t\tconst { apiKey: _, ...opts } = options ?? {};\n\t\t\t\t\t\treturn rawStreamSimple(model, context, opts as SimpleStreamOptions);\n\t\t\t\t\t})\n\t\t\t\t: rawStreamSimple;\n\n\t\t\t// Guard: if there's already a handler registered for this API, wrap\n\t\t\t// the new one so it only fires for models from this provider and\n\t\t\t// delegates to the previous handler for all other providers. Without\n\t\t\t// this, a custom provider using api:\"anthropic-messages\" would clobber\n\t\t\t// the built-in Anthropic stream handler (#2536).\n\t\t\tconst existingProvider = getApiProvider(config.api as Api);\n\t\t\tconst scopedStream = existingProvider\n\t\t\t\t? (model: Model<Api>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream => {\n\t\t\t\t\t\tif (model.provider === providerName) {\n\t\t\t\t\t\t\treturn streamSimple(model, context, options);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn existingProvider.streamSimple(model, context, options);\n\t\t\t\t\t}\n\t\t\t\t: streamSimple;\n\n\t\t\tconst newFullStream = (model: Model<Api>, context: Context, options?: SimpleStreamOptions) =>\n\t\t\t\tscopedStream(model, context, options as SimpleStreamOptions);\n\t\t\tconst scopedFullStream = existingProvider\n\t\t\t\t? (model: Model<Api>, context: Context, options?: Record<string, unknown>) => {\n\t\t\t\t\t\tif (model.provider === providerName) {\n\t\t\t\t\t\t\treturn newFullStream(model, context, options as SimpleStreamOptions);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn existingProvider.stream(model, context, options);\n\t\t\t\t\t}\n\t\t\t\t: newFullStream;\n\n\t\t\tregisterApiProvider(\n\t\t\t\t{\n\t\t\t\t\tapi: config.api,\n\t\t\t\t\tstream: scopedFullStream as any,\n\t\t\t\t\tstreamSimple: scopedStream,\n\t\t\t\t},\n\t\t\t\t`provider:${providerName}`,\n\t\t\t);\n\t\t}\n\n\t\t// Store API key for auth resolution\n\t\tif (config.apiKey) {\n\t\t\tthis.customProviderApiKeys.set(providerName, config.apiKey);\n\t\t}\n\n\t\tif (config.models && config.models.length > 0) {\n\t\t\t// Full replacement: remove existing models for this provider\n\t\t\tthis.models = this.models.filter((m) => m.provider !== providerName);\n\n\t\t\t// Validate required fields\n\t\t\tif (!config.baseUrl) {\n\t\t\t\tthrow new Error(`Provider ${providerName}: \"baseUrl\" is required when defining models.`);\n\t\t\t}\n\t\t\tconst authMode = config.authMode ?? (config.oauth ? \"oauth\" : config.apiKey ? \"apiKey\" : \"apiKey\");\n\t\t\tif (authMode === \"apiKey\" && !config.apiKey && !config.oauth) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Provider ${providerName}: \"apiKey\" or \"oauth\" is required when authMode is \"apiKey\" (the default). ` +\n\t\t\t\t\t`Set authMode to \"externalCli\" or \"none\" for keyless providers.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ((authMode === \"externalCli\" || authMode === \"none\") && !config.streamSimple) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Provider ${providerName}: \"streamSimple\" is required when authMode is \"${authMode}\". ` +\n\t\t\t\t\t`Keyless providers must supply their own stream handler.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ((authMode === \"externalCli\" || authMode === \"none\") && config.apiKey) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Provider ${providerName}: \"apiKey\" cannot be set when authMode is \"${authMode}\". ` +\n\t\t\t\t\t`Keyless providers should not provide API key credentials.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Parse and add new models\n\t\t\tfor (const modelDef of config.models) {\n\t\t\t\tconst api = modelDef.api || config.api;\n\t\t\t\tif (!api) {\n\t\t\t\t\tthrow new Error(`Provider ${providerName}, model ${modelDef.id}: no \"api\" specified.`);\n\t\t\t\t}\n\n\t\t\t\t// Merge headers\n\t\t\t\tconst providerHeaders = resolveHeaders(config.headers);\n\t\t\t\tconst modelHeaders = resolveHeaders(modelDef.headers);\n\t\t\t\tlet headers = providerHeaders || modelHeaders ? { ...providerHeaders, ...modelHeaders } : undefined;\n\n\t\t\t\t// If authHeader is true, add Authorization header\n\t\t\t\tif (config.authHeader && config.apiKey) {\n\t\t\t\t\tconst resolvedKey = resolveConfigValue(config.apiKey);\n\t\t\t\t\tif (resolvedKey) {\n\t\t\t\t\t\theaders = { ...headers, Authorization: `Bearer ${resolvedKey}` };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.models.push({\n\t\t\t\t\tid: modelDef.id,\n\t\t\t\t\tname: modelDef.name,\n\t\t\t\t\tapi: api as Api,\n\t\t\t\t\tprovider: providerName,\n\t\t\t\t\tbaseUrl: config.baseUrl,\n\t\t\t\t\treasoning: modelDef.reasoning,\n\t\t\t\t\tinput: modelDef.input as (\"text\" | \"image\")[],\n\t\t\t\t\tcost: modelDef.cost,\n\t\t\t\t\tcontextWindow: modelDef.contextWindow,\n\t\t\t\t\tmaxTokens: modelDef.maxTokens,\n\t\t\t\t\theaders,\n\t\t\t\t\tcompat: modelDef.compat,\n\t\t\t\t} as Model<Api>);\n\t\t\t}\n\n\t\t\t// Apply OAuth modifyModels if credentials exist (e.g., to update baseUrl)\n\t\t\tif (config.oauth?.modifyModels) {\n\t\t\t\tconst cred = this.authStorage.get(providerName);\n\t\t\t\tif (cred?.type === \"oauth\") {\n\t\t\t\t\tthis.models = config.oauth.modifyModels(this.models, cred);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Ensure newly added extension models get capability patches\n\t\t\tthis.models = applyCapabilityPatches(this.models);\n\t\t} else if (config.baseUrl) {\n\t\t\t// Override-only: update baseUrl/headers for existing models\n\t\t\tconst resolvedHeaders = resolveHeaders(config.headers);\n\t\t\tthis.models = this.models.map((m) => {\n\t\t\t\tif (m.provider !== providerName) return m;\n\t\t\t\treturn {\n\t\t\t\t\t...m,\n\t\t\t\t\tbaseUrl: config.baseUrl ?? m.baseUrl,\n\t\t\t\t\theaders: resolvedHeaders ? { ...m.headers, ...resolvedHeaders } : m.headers,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Discover models from all providers that support discovery.\n\t * Results are cached and merged into the registry (never overrides existing models).\n\t */\n\tasync discoverModels(providers?: string[]): Promise<DiscoveryResult[]> {\n\t\tconst targetProviders = providers ?? getDiscoverableProviders();\n\t\tconst results: DiscoveryResult[] = [];\n\n\t\tfor (const providerName of targetProviders) {\n\t\t\tconst adapter = getDiscoveryAdapter(providerName);\n\t\t\tif (!adapter.supportsDiscovery) continue;\n\n\t\t\t// Skip if cache is still fresh\n\t\t\tif (!this.discoveryCache.isStale(providerName)) {\n\t\t\t\tconst cached = this.discoveryCache.get(providerName);\n\t\t\t\tif (cached) {\n\t\t\t\t\tresults.push({\n\t\t\t\t\t\tprovider: providerName,\n\t\t\t\t\t\tmodels: cached.models,\n\t\t\t\t\t\tfetchedAt: cached.fetchedAt,\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst apiKey = await this.authStorage.getApiKey(providerName);\n\t\t\t\tif (!apiKey && !this.isProviderRequestReady(providerName)) continue;\n\n\t\t\t\tconst models = await adapter.fetchModels(apiKey ?? \"\", undefined);\n\t\t\t\tthis.discoveryCache.set(providerName, models);\n\t\t\t\tresults.push({\n\t\t\t\t\tprovider: providerName,\n\t\t\t\t\tmodels,\n\t\t\t\t\tfetchedAt: Date.now(),\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tresults.push({\n\t\t\t\t\tprovider: providerName,\n\t\t\t\t\tmodels: [],\n\t\t\t\t\tfetchedAt: Date.now(),\n\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Convert and merge discovered models, then apply capability patches\n\t\tthis.discoveredModels = applyCapabilityPatches(this.convertDiscoveredModels(results));\n\t\treturn results;\n\t}\n\n\t/**\n\t * Get all models including discovered ones.\n\t * Discovered models are appended but never override existing models.\n\t */\n\tgetAllWithDiscovered(): Model<Api>[] {\n\t\tconst existingIds = new Set(this.models.map((m) => `${m.provider}/${m.id}`));\n\t\tconst unique = this.discoveredModels.filter((m) => !existingIds.has(`${m.provider}/${m.id}`));\n\t\treturn [...this.models, ...unique];\n\t}\n\n\t/**\n\t * Check if a model was added via discovery (not built-in or custom).\n\t */\n\tisDiscovered(model: Model<Api>): boolean {\n\t\treturn this.discoveredModels.some((m) => m.provider === model.provider && m.id === model.id);\n\t}\n\n\t/**\n\t * Get the discovery cache instance.\n\t */\n\tgetDiscoveryCache(): ModelDiscoveryCache {\n\t\treturn this.discoveryCache;\n\t}\n\n\t/**\n\t * Convert DiscoveryResult[] into Model<Api>[] with default values.\n\t */\n\tprivate convertDiscoveredModels(results: DiscoveryResult[]): Model<Api>[] {\n\t\tconst converted: Model<Api>[] = [];\n\t\tfor (const result of results) {\n\t\t\tif (result.error) continue;\n\t\t\tfor (const dm of result.models) {\n\t\t\t\tconverted.push({\n\t\t\t\t\tid: dm.id,\n\t\t\t\t\tname: dm.name ?? dm.id,\n\t\t\t\t\tapi: \"openai\" as Api,\n\t\t\t\t\tprovider: result.provider,\n\t\t\t\t\tbaseUrl: \"\",\n\t\t\t\t\treasoning: dm.reasoning ?? false,\n\t\t\t\t\tinput: dm.input ?? [\"text\"],\n\t\t\t\t\tcost: dm.cost ?? { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n\t\t\t\t\tcontextWindow: dm.contextWindow ?? 128000,\n\t\t\t\t\tmaxTokens: dm.maxTokens ?? 16384,\n\t\t\t\t} as Model<Api>);\n\t\t\t}\n\t\t}\n\t\treturn converted;\n\t}\n\n\t/**\n\t * Check if a model's baseUrl points to a local endpoint.\n\t * Delegates to standalone isLocalModel() function.\n\t */\n\tstatic isLocalModel(model: Model<Api>): boolean {\n\t\treturn isLocalModel(model);\n\t}\n\n\t/**\n\t * Check if all models in the registry are local.\n\t * Returns true only if every model passes isLocalModel().\n\t * Returns false if there are no models.\n\t */\n\tisAllLocalChain(): boolean {\n\t\tconst models = this.getAll();\n\t\tif (models.length === 0) return false;\n\t\treturn models.every((m) => isLocalModel(m));\n\t}\n}\n\n/**\n * Input type for registerProvider API.\n */\nexport interface ProviderConfigInput {\n\tauthMode?: ProviderAuthMode;\n\t/** Optional readiness check. Called by isProviderRequestReady() before default auth checks.\n\t * Trusted at the same level as extension code — extensions already have arbitrary code execution. */\n\tisReady?: () => boolean;\n\tbaseUrl?: string;\n\tapiKey?: string;\n\tapi?: Api;\n\tstreamSimple?: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\theaders?: Record<string, string>;\n\tauthHeader?: boolean;\n\t/** OAuth provider for /login support */\n\toauth?: Omit<OAuthProviderInterface, \"id\">;\n\tmodels?: Array<{\n\t\tid: string;\n\t\tname: string;\n\t\tapi?: Api;\n\t\tbaseUrl?: string;\n\t\treasoning: boolean;\n\t\tinput: (\"text\" | \"image\")[];\n\t\tcost: { input: number; output: number; cacheRead: number; cacheWrite: number };\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t\theaders?: Record<string, string>;\n\t\tcompat?: Model<Api>[\"compat\"];\n\t}>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/core/model-registry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Model registry - manages built-in and custom models, provides API key resolution.\n */\n\nimport {\n\ttype Api,\n\tapplyCapabilityPatches,\n\ttype AssistantMessageEventStream,\n\ttype Context,\n\tgetApiProvider,\n\tgetModels,\n\tgetProviders,\n\ttype KnownProvider,\n\ttype Model,\n\ttype OAuthProviderInterface,\n\ttype OpenAICompletionsCompat,\n\ttype OpenAIResponsesCompat,\n\tregisterApiProvider,\n\tresetApiProviders,\n\ttype SimpleStreamOptions,\n} from \"@gsd/pi-ai\";\nimport { registerOAuthProvider, resetOAuthProviders } from \"@gsd/pi-ai/oauth\";\nimport { type Static, Type } from \"@sinclair/typebox\";\nimport AjvModule from \"ajv\";\nimport { existsSync, readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { getAgentDir } from \"../config.js\";\nimport type { AuthStorage } from \"./auth-storage.js\";\nimport { ModelDiscoveryCache } from \"./discovery-cache.js\";\nimport type { DiscoveredModel, DiscoveryResult } from \"./model-discovery.js\";\nimport { getDefaultTTL, getDiscoverableProviders, getDiscoveryAdapter } from \"./model-discovery.js\";\nimport { clearConfigValueCache, resolveConfigValue, resolveHeaders } from \"./resolve-config-value.js\";\nimport { isLocalModel } from \"./local-model-check.js\";\n\nconst Ajv = (AjvModule as any).default || AjvModule;\nconst ajv = new Ajv();\n\n// Schema for OpenRouter routing preferences\nconst OpenRouterRoutingSchema = Type.Object({\n\tonly: Type.Optional(Type.Array(Type.String())),\n\torder: Type.Optional(Type.Array(Type.String())),\n});\n\n// Schema for Vercel AI Gateway routing preferences\nconst VercelGatewayRoutingSchema = Type.Object({\n\tonly: Type.Optional(Type.Array(Type.String())),\n\torder: Type.Optional(Type.Array(Type.String())),\n});\n\n// Schema for OpenAI compatibility settings\nconst OpenAICompletionsCompatSchema = Type.Object({\n\tsupportsStore: Type.Optional(Type.Boolean()),\n\tsupportsDeveloperRole: Type.Optional(Type.Boolean()),\n\tsupportsReasoningEffort: Type.Optional(Type.Boolean()),\n\tsupportsUsageInStreaming: Type.Optional(Type.Boolean()),\n\tmaxTokensField: Type.Optional(Type.Union([Type.Literal(\"max_completion_tokens\"), Type.Literal(\"max_tokens\")])),\n\trequiresToolResultName: Type.Optional(Type.Boolean()),\n\trequiresAssistantAfterToolResult: Type.Optional(Type.Boolean()),\n\trequiresThinkingAsText: Type.Optional(Type.Boolean()),\n\trequiresMistralToolIds: Type.Optional(Type.Boolean()),\n\tthinkingFormat: Type.Optional(Type.Union([Type.Literal(\"openai\"), Type.Literal(\"zai\"), Type.Literal(\"qwen\")])),\n\topenRouterRouting: Type.Optional(OpenRouterRoutingSchema),\n\tvercelGatewayRouting: Type.Optional(VercelGatewayRoutingSchema),\n});\n\nconst OpenAIResponsesCompatSchema = Type.Object({\n\t// Reserved for future use\n});\n\nconst OpenAICompatSchema = Type.Union([OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema]);\n\n// Schema for custom model definition\n// Most fields are optional with sensible defaults for local models (Ollama, LM Studio, etc.)\nconst ModelDefinitionSchema = Type.Object({\n\tid: Type.String({ minLength: 1 }),\n\tname: Type.Optional(Type.String({ minLength: 1 })),\n\tapi: Type.Optional(Type.String({ minLength: 1 })),\n\tbaseUrl: Type.Optional(Type.String({ minLength: 1 })),\n\treasoning: Type.Optional(Type.Boolean()),\n\tinput: Type.Optional(Type.Array(Type.Union([Type.Literal(\"text\"), Type.Literal(\"image\")]))),\n\tcost: Type.Optional(\n\t\tType.Object({\n\t\t\tinput: Type.Number(),\n\t\t\toutput: Type.Number(),\n\t\t\tcacheRead: Type.Number(),\n\t\t\tcacheWrite: Type.Number(),\n\t\t}),\n\t),\n\tcontextWindow: Type.Optional(Type.Number()),\n\tmaxTokens: Type.Optional(Type.Number()),\n\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tcompat: Type.Optional(OpenAICompatSchema),\n});\n\n// Schema for per-model overrides (all fields optional, merged with built-in model)\nconst ModelOverrideSchema = Type.Object({\n\tname: Type.Optional(Type.String({ minLength: 1 })),\n\treasoning: Type.Optional(Type.Boolean()),\n\tinput: Type.Optional(Type.Array(Type.Union([Type.Literal(\"text\"), Type.Literal(\"image\")]))),\n\tcost: Type.Optional(\n\t\tType.Object({\n\t\t\tinput: Type.Optional(Type.Number()),\n\t\t\toutput: Type.Optional(Type.Number()),\n\t\t\tcacheRead: Type.Optional(Type.Number()),\n\t\t\tcacheWrite: Type.Optional(Type.Number()),\n\t\t}),\n\t),\n\tcontextWindow: Type.Optional(Type.Number()),\n\tmaxTokens: Type.Optional(Type.Number()),\n\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tcompat: Type.Optional(OpenAICompatSchema),\n});\n\ntype ModelOverride = Static<typeof ModelOverrideSchema>;\n\nconst ProviderConfigSchema = Type.Object({\n\tbaseUrl: Type.Optional(Type.String({ minLength: 1 })),\n\tapiKey: Type.Optional(Type.String({ minLength: 1 })),\n\tapi: Type.Optional(Type.String({ minLength: 1 })),\n\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\tauthHeader: Type.Optional(Type.Boolean()),\n\tmodels: Type.Optional(Type.Array(ModelDefinitionSchema)),\n\tmodelOverrides: Type.Optional(Type.Record(Type.String(), ModelOverrideSchema)),\n});\n\nconst ModelsConfigSchema = Type.Object({\n\tproviders: Type.Record(Type.String(), ProviderConfigSchema),\n});\n\najv.addSchema(ModelsConfigSchema, \"ModelsConfig\");\n\ntype ModelsConfig = Static<typeof ModelsConfigSchema>;\n\nexport type ProviderAuthMode = \"apiKey\" | \"oauth\" | \"externalCli\" | \"none\";\n\n/** Provider override config (baseUrl, headers, apiKey) without custom models */\ninterface ProviderOverride {\n\tbaseUrl?: string;\n\theaders?: Record<string, string>;\n\tapiKey?: string;\n}\n\n/** Result of loading custom models from models.json */\ninterface CustomModelsResult {\n\tmodels: Model<Api>[];\n\t/** Providers with baseUrl/headers/apiKey overrides for built-in models */\n\toverrides: Map<string, ProviderOverride>;\n\t/** Per-model overrides: provider -> modelId -> override */\n\tmodelOverrides: Map<string, Map<string, ModelOverride>>;\n\terror: string | undefined;\n}\n\nfunction emptyCustomModelsResult(error?: string): CustomModelsResult {\n\treturn { models: [], overrides: new Map(), modelOverrides: new Map(), error };\n}\n\nfunction mergeCompat(\n\tbaseCompat: Model<Api>[\"compat\"],\n\toverrideCompat: ModelOverride[\"compat\"],\n): Model<Api>[\"compat\"] | undefined {\n\tif (!overrideCompat) return baseCompat;\n\n\tconst base = baseCompat as OpenAICompletionsCompat | OpenAIResponsesCompat | undefined;\n\tconst override = overrideCompat as OpenAICompletionsCompat | OpenAIResponsesCompat;\n\tconst merged = { ...base, ...override } as OpenAICompletionsCompat | OpenAIResponsesCompat;\n\n\tconst baseCompletions = base as OpenAICompletionsCompat | undefined;\n\tconst overrideCompletions = override as OpenAICompletionsCompat;\n\tconst mergedCompletions = merged as OpenAICompletionsCompat;\n\n\tif (baseCompletions?.openRouterRouting || overrideCompletions.openRouterRouting) {\n\t\tmergedCompletions.openRouterRouting = {\n\t\t\t...baseCompletions?.openRouterRouting,\n\t\t\t...overrideCompletions.openRouterRouting,\n\t\t};\n\t}\n\n\tif (baseCompletions?.vercelGatewayRouting || overrideCompletions.vercelGatewayRouting) {\n\t\tmergedCompletions.vercelGatewayRouting = {\n\t\t\t...baseCompletions?.vercelGatewayRouting,\n\t\t\t...overrideCompletions.vercelGatewayRouting,\n\t\t};\n\t}\n\n\treturn merged as Model<Api>[\"compat\"];\n}\n\n/**\n * Deep merge a model override into a model.\n * Handles nested objects (cost, compat) by merging rather than replacing.\n */\nfunction applyModelOverride(model: Model<Api>, override: ModelOverride): Model<Api> {\n\tconst result = { ...model };\n\n\t// Simple field overrides\n\tif (override.name !== undefined) result.name = override.name;\n\tif (override.reasoning !== undefined) result.reasoning = override.reasoning;\n\tif (override.input !== undefined) result.input = override.input as (\"text\" | \"image\")[];\n\tif (override.contextWindow !== undefined) result.contextWindow = override.contextWindow;\n\tif (override.maxTokens !== undefined) result.maxTokens = override.maxTokens;\n\n\t// Merge cost (partial override)\n\tif (override.cost) {\n\t\tresult.cost = {\n\t\t\tinput: override.cost.input ?? model.cost.input,\n\t\t\toutput: override.cost.output ?? model.cost.output,\n\t\t\tcacheRead: override.cost.cacheRead ?? model.cost.cacheRead,\n\t\t\tcacheWrite: override.cost.cacheWrite ?? model.cost.cacheWrite,\n\t\t};\n\t}\n\n\t// Merge headers\n\tif (override.headers) {\n\t\tconst resolvedHeaders = resolveHeaders(override.headers);\n\t\tresult.headers = resolvedHeaders ? { ...model.headers, ...resolvedHeaders } : model.headers;\n\t}\n\n\t// Deep merge compat\n\tresult.compat = mergeCompat(model.compat, override.compat);\n\n\treturn result;\n}\n\n\n/**\n * Model registry - loads and manages models, resolves API keys via AuthStorage.\n */\nexport class ModelRegistry {\n\tprivate models: Model<Api>[] = [];\n\tprivate discoveredModels: Model<Api>[] = [];\n\tprivate discoveryCache: ModelDiscoveryCache;\n\tprivate customProviderApiKeys: Map<string, string> = new Map();\n\tprivate registeredProviders: Map<string, ProviderConfigInput> = new Map();\n\tprivate loadError: string | undefined = undefined;\n\n\tconstructor(\n\t\treadonly authStorage: AuthStorage,\n\t\treadonly modelsJsonPath: string | undefined = join(getAgentDir(), \"models.json\"),\n\t) {\n\t\tthis.discoveryCache = new ModelDiscoveryCache();\n\n\t\t// Set up fallback resolver for custom provider API keys\n\t\tthis.authStorage.setFallbackResolver((provider) => {\n\t\t\tconst keyConfig = this.customProviderApiKeys.get(provider);\n\t\t\tif (keyConfig) {\n\t\t\t\treturn resolveConfigValue(keyConfig);\n\t\t\t}\n\t\t\treturn undefined;\n\t\t});\n\n\t\t// Refresh models when credentials change (e.g., OAuth token refresh with new model limits)\n\t\tthis.authStorage.onCredentialChange(() => this.refresh());\n\n\t\t// Load models\n\t\tthis.loadModels();\n\t}\n\n\t/**\n\t * Reload models from disk (built-in + custom from models.json).\n\t */\n\trefresh(): void {\n\t\tthis.customProviderApiKeys.clear();\n\t\tthis.loadError = undefined;\n\n\t\t// Ensure dynamic API/OAuth registrations are rebuilt from current provider state.\n\t\tresetApiProviders();\n\t\tresetOAuthProviders();\n\n\t\tthis.loadModels();\n\n\t\tfor (const [providerName, config] of this.registeredProviders.entries()) {\n\t\t\tthis.applyProviderConfig(providerName, config);\n\t\t}\n\t}\n\n\t/**\n\t * Get any error from loading models.json (undefined if no error).\n\t */\n\tgetError(): string | undefined {\n\t\treturn this.loadError;\n\t}\n\n\tprivate loadModels(): void {\n\t\t// Load custom models and overrides from models.json\n\t\tconst {\n\t\t\tmodels: customModels,\n\t\t\toverrides,\n\t\t\tmodelOverrides,\n\t\t\terror,\n\t\t} = this.modelsJsonPath ? this.loadCustomModels(this.modelsJsonPath) : emptyCustomModelsResult();\n\n\t\tif (error) {\n\t\t\tthis.loadError = error;\n\t\t\t// Keep built-in models even if custom models failed to load\n\t\t}\n\n\t\tconst builtInModels = this.loadBuiltInModels(overrides, modelOverrides);\n\t\tlet combined = this.mergeCustomModels(builtInModels, customModels);\n\n\t\t// Let OAuth providers modify their models (e.g., update baseUrl)\n\t\tfor (const oauthProvider of this.authStorage.getOAuthProviders()) {\n\t\t\tconst cred = this.authStorage.get(oauthProvider.id);\n\t\t\tif (cred?.type === \"oauth\" && oauthProvider.modifyModels) {\n\t\t\t\tcombined = oauthProvider.modifyModels(combined, cred);\n\t\t\t}\n\t\t}\n\n\t\t// Apply capability patches so custom/discovered/extension models get\n\t\t// capabilities (supportsXhigh, supportsServiceTier, etc.) that the\n\t\t// static pi-ai registry applies at module load for built-in models.\n\t\tthis.models = applyCapabilityPatches(combined);\n\t}\n\n\t/** Load built-in models and apply provider/model overrides */\n\tprivate loadBuiltInModels(\n\t\toverrides: Map<string, ProviderOverride>,\n\t\tmodelOverrides: Map<string, Map<string, ModelOverride>>,\n\t): Model<Api>[] {\n\t\treturn getProviders().flatMap((provider) => {\n\t\t\tconst models = getModels(provider as KnownProvider) as Model<Api>[];\n\t\t\tconst providerOverride = overrides.get(provider);\n\t\t\tconst perModelOverrides = modelOverrides.get(provider);\n\n\t\t\treturn models.map((m) => {\n\t\t\t\tlet model = m;\n\n\t\t\t\t// Apply provider-level baseUrl/headers override\n\t\t\t\tif (providerOverride) {\n\t\t\t\t\tconst resolvedHeaders = resolveHeaders(providerOverride.headers);\n\t\t\t\t\tmodel = {\n\t\t\t\t\t\t...model,\n\t\t\t\t\t\tbaseUrl: providerOverride.baseUrl ?? model.baseUrl,\n\t\t\t\t\t\theaders: resolvedHeaders ? { ...model.headers, ...resolvedHeaders } : model.headers,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Apply per-model override\n\t\t\t\tconst modelOverride = perModelOverrides?.get(m.id);\n\t\t\t\tif (modelOverride) {\n\t\t\t\t\tmodel = applyModelOverride(model, modelOverride);\n\t\t\t\t}\n\n\t\t\t\treturn model;\n\t\t\t});\n\t\t});\n\t}\n\n\t/** Merge custom models into built-in list by provider+id (custom wins on conflicts). */\n\tprivate mergeCustomModels(builtInModels: Model<Api>[], customModels: Model<Api>[]): Model<Api>[] {\n\t\tconst merged = [...builtInModels];\n\t\tfor (const customModel of customModels) {\n\t\t\tconst existingIndex = merged.findIndex((m) => m.provider === customModel.provider && m.id === customModel.id);\n\t\t\tif (existingIndex >= 0) {\n\t\t\t\tmerged[existingIndex] = customModel;\n\t\t\t} else {\n\t\t\t\tmerged.push(customModel);\n\t\t\t}\n\t\t}\n\t\treturn merged;\n\t}\n\n\tprivate loadCustomModels(modelsJsonPath: string): CustomModelsResult {\n\t\tif (!existsSync(modelsJsonPath)) {\n\t\t\treturn emptyCustomModelsResult();\n\t\t}\n\n\t\ttry {\n\t\t\tconst content = readFileSync(modelsJsonPath, \"utf-8\");\n\t\t\tconst config: ModelsConfig = JSON.parse(content);\n\n\t\t\t// Validate schema\n\t\t\tconst validate = ajv.getSchema(\"ModelsConfig\")!;\n\t\t\tif (!validate(config)) {\n\t\t\t\tconst errors =\n\t\t\t\t\tvalidate.errors?.map((e: any) => ` - ${e.instancePath || \"root\"}: ${e.message}`).join(\"\\n\") ||\n\t\t\t\t\t\"Unknown schema error\";\n\t\t\t\treturn emptyCustomModelsResult(`Invalid models.json schema:\\n${errors}\\n\\nFile: ${modelsJsonPath}`);\n\t\t\t}\n\n\t\t\t// Additional validation\n\t\t\tthis.validateConfig(config);\n\n\t\t\tconst overrides = new Map<string, ProviderOverride>();\n\t\t\tconst modelOverrides = new Map<string, Map<string, ModelOverride>>();\n\n\t\t\tfor (const [providerName, providerConfig] of Object.entries(config.providers)) {\n\t\t\t\t// Apply provider-level baseUrl/headers/apiKey override to built-in models when configured.\n\t\t\t\tif (providerConfig.baseUrl || providerConfig.headers || providerConfig.apiKey) {\n\t\t\t\t\toverrides.set(providerName, {\n\t\t\t\t\t\tbaseUrl: providerConfig.baseUrl,\n\t\t\t\t\t\theaders: providerConfig.headers,\n\t\t\t\t\t\tapiKey: providerConfig.apiKey,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Store API key for fallback resolver.\n\t\t\t\tif (providerConfig.apiKey) {\n\t\t\t\t\tthis.customProviderApiKeys.set(providerName, providerConfig.apiKey);\n\t\t\t\t}\n\n\t\t\t\tif (providerConfig.modelOverrides) {\n\t\t\t\t\tmodelOverrides.set(providerName, new Map(Object.entries(providerConfig.modelOverrides)));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn { models: this.parseModels(config), overrides, modelOverrides, error: undefined };\n\t\t} catch (error) {\n\t\t\tif (error instanceof SyntaxError) {\n\t\t\t\treturn emptyCustomModelsResult(`Failed to parse models.json: ${error.message}\\n\\nFile: ${modelsJsonPath}`);\n\t\t\t}\n\t\t\treturn emptyCustomModelsResult(\n\t\t\t\t`Failed to load models.json: ${error instanceof Error ? error.message : error}\\n\\nFile: ${modelsJsonPath}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate validateConfig(config: ModelsConfig): void {\n\t\tfor (const [providerName, providerConfig] of Object.entries(config.providers)) {\n\t\t\tconst hasProviderApi = !!providerConfig.api;\n\t\t\tconst models = providerConfig.models ?? [];\n\t\t\tconst hasModelOverrides =\n\t\t\t\tproviderConfig.modelOverrides && Object.keys(providerConfig.modelOverrides).length > 0;\n\n\t\t\tif (models.length === 0) {\n\t\t\t\t// Override-only config: needs baseUrl OR modelOverrides (or both)\n\t\t\t\tif (!providerConfig.baseUrl && !hasModelOverrides) {\n\t\t\t\t\tthrow new Error(`Provider ${providerName}: must specify \"baseUrl\", \"modelOverrides\", or \"models\".`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Custom models are merged into provider models and require endpoint + auth.\n\t\t\t\tif (!providerConfig.baseUrl) {\n\t\t\t\t\tthrow new Error(`Provider ${providerName}: \"baseUrl\" is required when defining custom models.`);\n\t\t\t\t}\n\t\t\t\tif (!providerConfig.apiKey) {\n\t\t\t\t\tthrow new Error(`Provider ${providerName}: \"apiKey\" is required when defining custom models.`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const modelDef of models) {\n\t\t\t\tconst hasModelApi = !!modelDef.api;\n\n\t\t\t\tif (!hasProviderApi && !hasModelApi) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Provider ${providerName}, model ${modelDef.id}: no \"api\" specified. Set at provider or model level.`,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (!modelDef.id) throw new Error(`Provider ${providerName}: model missing \"id\"`);\n\t\t\t\t// Validate contextWindow/maxTokens only if provided (they have defaults)\n\t\t\t\tif (modelDef.contextWindow !== undefined && modelDef.contextWindow <= 0)\n\t\t\t\t\tthrow new Error(`Provider ${providerName}, model ${modelDef.id}: invalid contextWindow`);\n\t\t\t\tif (modelDef.maxTokens !== undefined && modelDef.maxTokens <= 0)\n\t\t\t\t\tthrow new Error(`Provider ${providerName}, model ${modelDef.id}: invalid maxTokens`);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate parseModels(config: ModelsConfig): Model<Api>[] {\n\t\tconst models: Model<Api>[] = [];\n\n\t\tfor (const [providerName, providerConfig] of Object.entries(config.providers)) {\n\t\t\tconst modelDefs = providerConfig.models ?? [];\n\t\t\tif (modelDefs.length === 0) continue; // Override-only, no custom models\n\n\t\t\t// Store API key config for fallback resolver\n\t\t\tif (providerConfig.apiKey) {\n\t\t\t\tthis.customProviderApiKeys.set(providerName, providerConfig.apiKey);\n\t\t\t}\n\n\t\t\tfor (const modelDef of modelDefs) {\n\t\t\t\tconst api = modelDef.api || providerConfig.api;\n\t\t\t\tif (!api) continue;\n\n\t\t\t\t// Merge headers: provider headers are base, model headers override\n\t\t\t\t// Resolve env vars and shell commands in header values\n\t\t\t\tconst providerHeaders = resolveHeaders(providerConfig.headers);\n\t\t\t\tconst modelHeaders = resolveHeaders(modelDef.headers);\n\t\t\t\tlet headers = providerHeaders || modelHeaders ? { ...providerHeaders, ...modelHeaders } : undefined;\n\n\t\t\t\t// If authHeader is true, add Authorization header with resolved API key\n\t\t\t\tif (providerConfig.authHeader && providerConfig.apiKey) {\n\t\t\t\t\tconst resolvedKey = resolveConfigValue(providerConfig.apiKey);\n\t\t\t\t\tif (resolvedKey) {\n\t\t\t\t\t\theaders = { ...headers, Authorization: `Bearer ${resolvedKey}` };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Provider baseUrl is required when custom models are defined.\n\t\t\t\t// Individual models can override it with modelDef.baseUrl.\n\t\t\t\tconst defaultCost = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };\n\t\t\t\tmodels.push({\n\t\t\t\t\tid: modelDef.id,\n\t\t\t\t\tname: modelDef.name ?? modelDef.id,\n\t\t\t\t\tapi: api as Api,\n\t\t\t\t\tprovider: providerName,\n\t\t\t\t\tbaseUrl: modelDef.baseUrl ?? providerConfig.baseUrl!,\n\t\t\t\t\treasoning: modelDef.reasoning ?? false,\n\t\t\t\t\tinput: (modelDef.input ?? [\"text\"]) as (\"text\" | \"image\")[],\n\t\t\t\t\tcost: modelDef.cost ?? defaultCost,\n\t\t\t\t\tcontextWindow: modelDef.contextWindow ?? 128000,\n\t\t\t\t\tmaxTokens: modelDef.maxTokens ?? 16384,\n\t\t\t\t\theaders,\n\t\t\t\t\tcompat: modelDef.compat,\n\t\t\t\t} as Model<Api>);\n\t\t\t}\n\t\t}\n\n\t\treturn models;\n\t}\n\n\t/**\n\t * Get all models (built-in + custom).\n\t * If models.json had errors, returns only built-in models.\n\t */\n\tgetAll(): Model<Api>[] {\n\t\treturn this.models;\n\t}\n\n\t/**\n\t * Get only models that have auth configured.\n\t * This is a fast check that doesn't refresh OAuth tokens.\n\t */\n\tgetAvailable(): Model<Api>[] {\n\t\treturn this.models.filter((m) => this.isProviderRequestReady(m.provider));\n\t}\n\n\t/**\n\t * Get auth mode for a provider.\n\t * Defaults to \"apiKey\" for built-ins and providers without explicit mode.\n\t */\n\tgetProviderAuthMode(provider: string): ProviderAuthMode {\n\t\tconst config = this.registeredProviders.get(provider);\n\t\tif (!config) return \"apiKey\";\n\t\tif (config.authMode) return config.authMode;\n\t\tif (config.oauth) return \"oauth\";\n\t\tif (config.apiKey) return \"apiKey\";\n\t\treturn \"apiKey\";\n\t}\n\n\t/**\n\t * Whether a provider can be used for requests/fallback without hard auth gating.\n\t */\n\tisProviderRequestReady(provider: string): boolean {\n\t\tconst config = this.registeredProviders.get(provider);\n\t\tif (config?.isReady) return config.isReady();\n\t\tconst authMode = this.getProviderAuthMode(provider);\n\t\tif (authMode === \"externalCli\" || authMode === \"none\") return true;\n\t\treturn this.authStorage.hasAuth(provider);\n\t}\n\n\t/**\n\t * Find a model by provider and ID.\n\t */\n\tfind(provider: string, modelId: string): Model<Api> | undefined {\n\t\treturn this.models.find((m) => m.provider === provider && m.id === modelId);\n\t}\n\n\t/**\n\t * Get API key for a model.\n\t * Returns undefined for externalCli/none providers (no key needed).\n\t * @param sessionId - Optional session ID for sticky credential selection\n\t */\n\tasync getApiKey(model: Model<Api>, sessionId?: string): Promise<string | undefined> {\n\t\tconst authMode = this.getProviderAuthMode(model.provider);\n\t\tif (authMode === \"externalCli\" || authMode === \"none\") return undefined;\n\t\treturn this.authStorage.getApiKey(model.provider, sessionId, { baseUrl: model.baseUrl });\n\t}\n\n\t/**\n\t * Get API key for a provider.\n\t * Returns undefined for externalCli/none providers (no key needed).\n\t * @param sessionId - Optional session ID for sticky credential selection\n\t */\n\tasync getApiKeyForProvider(provider: string, sessionId?: string): Promise<string | undefined> {\n\t\tconst authMode = this.getProviderAuthMode(provider);\n\t\tif (authMode === \"externalCli\" || authMode === \"none\") return undefined;\n\t\treturn this.authStorage.getApiKey(provider, sessionId);\n\t}\n\n\t/**\n\t * Check if a model is using OAuth credentials (subscription).\n\t */\n\tisUsingOAuth(model: Model<Api>): boolean {\n\t\tconst cred = this.authStorage.get(model.provider);\n\t\treturn cred?.type === \"oauth\";\n\t}\n\n\t/**\n\t * Register a provider dynamically (from extensions).\n\t *\n\t * If provider has models: replaces all existing models for this provider.\n\t * If provider has only baseUrl/headers: overrides existing models' URLs.\n\t * If provider has oauth: registers OAuth provider for /login support.\n\t */\n\tregisterProvider(providerName: string, config: ProviderConfigInput): void {\n\t\tthis.registeredProviders.set(providerName, config);\n\t\tthis.applyProviderConfig(providerName, config);\n\t}\n\n\t/**\n\t * Unregister a previously registered provider.\n\t *\n\t * Removes the provider from the registry and reloads models from disk so that\n\t * built-in models overridden by this provider are restored to their original state.\n\t * Also resets dynamic OAuth and API stream registrations before reapplying\n\t * remaining dynamic providers.\n\t * Has no effect if the provider was never registered.\n\t */\n\tunregisterProvider(providerName: string): void {\n\t\tif (!this.registeredProviders.has(providerName)) return;\n\t\tthis.registeredProviders.delete(providerName);\n\t\tthis.customProviderApiKeys.delete(providerName);\n\t\tthis.refresh();\n\t}\n\n\tprivate applyProviderConfig(providerName: string, config: ProviderConfigInput): void {\n\t\t// Register OAuth provider if provided\n\t\tif (config.oauth) {\n\t\t\t// Ensure the OAuth provider ID matches the provider name\n\t\t\tconst oauthProvider: OAuthProviderInterface = {\n\t\t\t\t...config.oauth,\n\t\t\t\tid: providerName,\n\t\t\t};\n\t\t\tregisterOAuthProvider(oauthProvider);\n\t\t}\n\n\t\tif (config.streamSimple) {\n\t\t\tif (!config.api) {\n\t\t\t\tthrow new Error(`Provider ${providerName}: \"api\" is required when registering streamSimple.`);\n\t\t\t}\n\t\t\tconst rawStreamSimple = config.streamSimple;\n\t\t\tconst authMode = config.authMode ?? \"apiKey\";\n\n\t\t\t// Keyless providers never see apiKey in options — enforced at registration,\n\t\t\t// not by convention. Prevents undefined from reaching any handler.\n\t\t\tconst streamSimple = (authMode === \"externalCli\" || authMode === \"none\")\n\t\t\t\t? ((model: Model<Api>, context: Context, options?: SimpleStreamOptions) => {\n\t\t\t\t\t\tconst { apiKey: _, ...opts } = options ?? {};\n\t\t\t\t\t\treturn rawStreamSimple(model, context, opts as SimpleStreamOptions);\n\t\t\t\t\t})\n\t\t\t\t: rawStreamSimple;\n\n\t\t\t// Guard: if there's already a handler registered for this API, wrap\n\t\t\t// the new one so it only fires for models from this provider and\n\t\t\t// delegates to the previous handler for all other providers. Without\n\t\t\t// this, a custom provider using api:\"anthropic-messages\" would clobber\n\t\t\t// the built-in Anthropic stream handler (#2536).\n\t\t\tconst existingProvider = getApiProvider(config.api as Api);\n\t\t\tconst scopedStream = existingProvider\n\t\t\t\t? (model: Model<Api>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream => {\n\t\t\t\t\t\tif (model.provider === providerName) {\n\t\t\t\t\t\t\treturn streamSimple(model, context, options);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn existingProvider.streamSimple(model, context, options);\n\t\t\t\t\t}\n\t\t\t\t: streamSimple;\n\n\t\t\tconst newFullStream = (model: Model<Api>, context: Context, options?: SimpleStreamOptions) =>\n\t\t\t\tscopedStream(model, context, options as SimpleStreamOptions);\n\t\t\tconst scopedFullStream = existingProvider\n\t\t\t\t? (model: Model<Api>, context: Context, options?: Record<string, unknown>) => {\n\t\t\t\t\t\tif (model.provider === providerName) {\n\t\t\t\t\t\t\treturn newFullStream(model, context, options as SimpleStreamOptions);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn existingProvider.stream(model, context, options);\n\t\t\t\t\t}\n\t\t\t\t: newFullStream;\n\n\t\t\tregisterApiProvider(\n\t\t\t\t{\n\t\t\t\t\tapi: config.api,\n\t\t\t\t\tstream: scopedFullStream as any,\n\t\t\t\t\tstreamSimple: scopedStream,\n\t\t\t\t},\n\t\t\t\t`provider:${providerName}`,\n\t\t\t);\n\t\t}\n\n\t\t// Store API key for auth resolution\n\t\tif (config.apiKey) {\n\t\t\tthis.customProviderApiKeys.set(providerName, config.apiKey);\n\t\t}\n\n\t\tif (config.models && config.models.length > 0) {\n\t\t\t// Full replacement: remove existing models for this provider\n\t\t\tthis.models = this.models.filter((m) => m.provider !== providerName);\n\n\t\t\t// Validate required fields\n\t\t\tif (!config.baseUrl) {\n\t\t\t\tthrow new Error(`Provider ${providerName}: \"baseUrl\" is required when defining models.`);\n\t\t\t}\n\t\t\tconst authMode = config.authMode ?? (config.oauth ? \"oauth\" : config.apiKey ? \"apiKey\" : \"apiKey\");\n\t\t\tif (authMode === \"apiKey\" && !config.apiKey && !config.oauth) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Provider ${providerName}: \"apiKey\" or \"oauth\" is required when authMode is \"apiKey\" (the default). ` +\n\t\t\t\t\t`Set authMode to \"externalCli\" or \"none\" for keyless providers.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ((authMode === \"externalCli\" || authMode === \"none\") && !config.streamSimple) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Provider ${providerName}: \"streamSimple\" is required when authMode is \"${authMode}\". ` +\n\t\t\t\t\t`Keyless providers must supply their own stream handler.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif ((authMode === \"externalCli\" || authMode === \"none\") && config.apiKey) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Provider ${providerName}: \"apiKey\" cannot be set when authMode is \"${authMode}\". ` +\n\t\t\t\t\t`Keyless providers should not provide API key credentials.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Parse and add new models\n\t\t\tfor (const modelDef of config.models) {\n\t\t\t\tconst api = modelDef.api || config.api;\n\t\t\t\tif (!api) {\n\t\t\t\t\tthrow new Error(`Provider ${providerName}, model ${modelDef.id}: no \"api\" specified.`);\n\t\t\t\t}\n\n\t\t\t\t// Merge headers\n\t\t\t\tconst providerHeaders = resolveHeaders(config.headers);\n\t\t\t\tconst modelHeaders = resolveHeaders(modelDef.headers);\n\t\t\t\tlet headers = providerHeaders || modelHeaders ? { ...providerHeaders, ...modelHeaders } : undefined;\n\n\t\t\t\t// If authHeader is true, add Authorization header\n\t\t\t\tif (config.authHeader && config.apiKey) {\n\t\t\t\t\tconst resolvedKey = resolveConfigValue(config.apiKey);\n\t\t\t\t\tif (resolvedKey) {\n\t\t\t\t\t\theaders = { ...headers, Authorization: `Bearer ${resolvedKey}` };\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.models.push({\n\t\t\t\t\tid: modelDef.id,\n\t\t\t\t\tname: modelDef.name,\n\t\t\t\t\tapi: api as Api,\n\t\t\t\t\tprovider: providerName,\n\t\t\t\t\tbaseUrl: config.baseUrl,\n\t\t\t\t\treasoning: modelDef.reasoning,\n\t\t\t\t\tinput: modelDef.input as (\"text\" | \"image\")[],\n\t\t\t\t\tcost: modelDef.cost,\n\t\t\t\t\tcontextWindow: modelDef.contextWindow,\n\t\t\t\t\tmaxTokens: modelDef.maxTokens,\n\t\t\t\t\theaders,\n\t\t\t\t\tcompat: modelDef.compat,\n\t\t\t\t} as Model<Api>);\n\t\t\t}\n\n\t\t\t// Apply OAuth modifyModels if credentials exist (e.g., to update baseUrl)\n\t\t\tif (config.oauth?.modifyModels) {\n\t\t\t\tconst cred = this.authStorage.get(providerName);\n\t\t\t\tif (cred?.type === \"oauth\") {\n\t\t\t\t\tthis.models = config.oauth.modifyModels(this.models, cred);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Ensure newly added extension models get capability patches\n\t\t\tthis.models = applyCapabilityPatches(this.models);\n\t\t} else if (config.baseUrl) {\n\t\t\t// Override-only: update baseUrl/headers for existing models\n\t\t\tconst resolvedHeaders = resolveHeaders(config.headers);\n\t\t\tthis.models = this.models.map((m) => {\n\t\t\t\tif (m.provider !== providerName) return m;\n\t\t\t\treturn {\n\t\t\t\t\t...m,\n\t\t\t\t\tbaseUrl: config.baseUrl ?? m.baseUrl,\n\t\t\t\t\theaders: resolvedHeaders ? { ...m.headers, ...resolvedHeaders } : m.headers,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Discover models from all providers that support discovery.\n\t * Results are cached and merged into the registry (never overrides existing models).\n\t */\n\tasync discoverModels(providers?: string[]): Promise<DiscoveryResult[]> {\n\t\tconst targetProviders = providers ?? getDiscoverableProviders();\n\t\tconst results: DiscoveryResult[] = [];\n\n\t\tfor (const providerName of targetProviders) {\n\t\t\tconst adapter = getDiscoveryAdapter(providerName);\n\t\t\tif (!adapter.supportsDiscovery) continue;\n\n\t\t\t// Skip if cache is still fresh\n\t\t\tif (!this.discoveryCache.isStale(providerName)) {\n\t\t\t\tconst cached = this.discoveryCache.get(providerName);\n\t\t\t\tif (cached) {\n\t\t\t\t\tresults.push({\n\t\t\t\t\t\tprovider: providerName,\n\t\t\t\t\t\tmodels: cached.models,\n\t\t\t\t\t\tfetchedAt: cached.fetchedAt,\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst apiKey = await this.authStorage.getApiKey(providerName);\n\t\t\t\tif (!apiKey && !this.isProviderRequestReady(providerName)) continue;\n\n\t\t\t\tconst models = await adapter.fetchModels(apiKey ?? \"\", undefined);\n\t\t\t\tthis.discoveryCache.set(providerName, models);\n\t\t\t\tresults.push({\n\t\t\t\t\tprovider: providerName,\n\t\t\t\t\tmodels,\n\t\t\t\t\tfetchedAt: Date.now(),\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tresults.push({\n\t\t\t\t\tprovider: providerName,\n\t\t\t\t\tmodels: [],\n\t\t\t\t\tfetchedAt: Date.now(),\n\t\t\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Convert and merge discovered models, then apply capability patches\n\t\tthis.discoveredModels = applyCapabilityPatches(this.convertDiscoveredModels(results));\n\t\treturn results;\n\t}\n\n\t/**\n\t * Get all models including discovered ones.\n\t * Discovered models are appended but never override existing models.\n\t */\n\tgetAllWithDiscovered(): Model<Api>[] {\n\t\tconst existingIds = new Set(this.models.map((m) => `${m.provider}/${m.id}`));\n\t\tconst unique = this.discoveredModels.filter((m) => !existingIds.has(`${m.provider}/${m.id}`));\n\t\treturn [...this.models, ...unique];\n\t}\n\n\t/**\n\t * Check if a model was added via discovery (not built-in or custom).\n\t */\n\tisDiscovered(model: Model<Api>): boolean {\n\t\treturn this.discoveredModels.some((m) => m.provider === model.provider && m.id === model.id);\n\t}\n\n\t/**\n\t * Get the discovery cache instance.\n\t */\n\tgetDiscoveryCache(): ModelDiscoveryCache {\n\t\treturn this.discoveryCache;\n\t}\n\n\t/**\n\t * Convert DiscoveryResult[] into Model<Api>[] with default values.\n\t */\n\tprivate convertDiscoveredModels(results: DiscoveryResult[]): Model<Api>[] {\n\t\tconst converted: Model<Api>[] = [];\n\t\tfor (const result of results) {\n\t\t\tif (result.error) continue;\n\t\t\tfor (const dm of result.models) {\n\t\t\t\tconverted.push({\n\t\t\t\t\tid: dm.id,\n\t\t\t\t\tname: dm.name ?? dm.id,\n\t\t\t\t\tapi: \"openai\" as Api,\n\t\t\t\t\tprovider: result.provider,\n\t\t\t\t\tbaseUrl: \"\",\n\t\t\t\t\treasoning: dm.reasoning ?? false,\n\t\t\t\t\tinput: dm.input ?? [\"text\"],\n\t\t\t\t\tcost: dm.cost ?? { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n\t\t\t\t\tcontextWindow: dm.contextWindow ?? 128000,\n\t\t\t\t\tmaxTokens: dm.maxTokens ?? 16384,\n\t\t\t\t} as Model<Api>);\n\t\t\t}\n\t\t}\n\t\treturn converted;\n\t}\n\n\t/**\n\t * Check if a model's baseUrl points to a local endpoint.\n\t * Delegates to standalone isLocalModel() function.\n\t */\n\tstatic isLocalModel(model: Model<Api>): boolean {\n\t\treturn isLocalModel(model);\n\t}\n\n\t/**\n\t * Check if all models in the registry are local.\n\t * Returns true only if every model passes isLocalModel().\n\t * Returns false if there are no models.\n\t */\n\tisAllLocalChain(): boolean {\n\t\tconst models = this.getAll();\n\t\tif (models.length === 0) return false;\n\t\treturn models.every((m) => isLocalModel(m));\n\t}\n}\n\n/**\n * Input type for registerProvider API.\n */\nexport interface ProviderConfigInput {\n\tauthMode?: ProviderAuthMode;\n\t/** Optional readiness check. Called by isProviderRequestReady() before default auth checks.\n\t * Trusted at the same level as extension code — extensions already have arbitrary code execution. */\n\tisReady?: () => boolean;\n\tbaseUrl?: string;\n\tapiKey?: string;\n\tapi?: Api;\n\tstreamSimple?: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\theaders?: Record<string, string>;\n\tauthHeader?: boolean;\n\t/** OAuth provider for /login support */\n\toauth?: Omit<OAuthProviderInterface, \"id\">;\n\tmodels?: Array<{\n\t\tid: string;\n\t\tname: string;\n\t\tapi?: Api;\n\t\tbaseUrl?: string;\n\t\treasoning: boolean;\n\t\tinput: (\"text\" | \"image\")[];\n\t\tcost: { input: number; output: number; cacheRead: number; cacheWrite: number };\n\t\tcontextWindow: number;\n\t\tmaxTokens: number;\n\t\theaders?: Record<string, string>;\n\t\tcompat?: Model<Api>[\"compat\"];\n\t}>;\n}\n"]}
|
|
@@ -15,10 +15,12 @@ export declare class ProviderManagerComponent extends Container implements Focus
|
|
|
15
15
|
private tui;
|
|
16
16
|
private authStorage;
|
|
17
17
|
private modelRegistry;
|
|
18
|
+
private modelsJsonWriter;
|
|
18
19
|
private onDone;
|
|
19
20
|
private onDiscover;
|
|
20
21
|
constructor(tui: TUI, authStorage: AuthStorage, modelRegistry: ModelRegistry, onDone: () => void, onDiscover: (provider: string) => void);
|
|
21
22
|
private loadProviders;
|
|
23
|
+
private clampSelectedIndex;
|
|
22
24
|
private updateList;
|
|
23
25
|
handleInput(keyData: string): void;
|
|
24
26
|
}
|
package/packages/pi-coding-agent/dist/modes/interactive/components/provider-manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-manager.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/provider-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,SAAS,EACT,KAAK,SAAS,EAId,KAAK,GAAG,EACR,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"provider-manager.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/provider-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,SAAS,EACT,KAAK,SAAS,EAId,KAAK,GAAG,EACR,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAYrE,qBAAa,wBAAyB,SAAQ,SAAU,YAAW,SAAS;IAC3E,OAAO,CAAC,QAAQ,CAAS;IACzB,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;IAED,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,UAAU,CAA6B;gBAG9C,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,IAAI,EAClB,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI;IAgCvC,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,UAAU;IA0BlB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAgClC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { Container, getEditorKeybindings, Spacer, Text, } from "@gsd/pi-tui";
|
|
6
6
|
import { getDiscoverableProviders } from "../../../core/model-discovery.js";
|
|
7
|
+
import { ModelsJsonWriter } from "../../../core/models-json-writer.js";
|
|
7
8
|
import { theme } from "../theme/theme.js";
|
|
8
9
|
import { rawKeyHint } from "./keybinding-hints.js";
|
|
9
10
|
export class ProviderManagerComponent extends Container {
|
|
@@ -21,6 +22,7 @@ export class ProviderManagerComponent extends Container {
|
|
|
21
22
|
this.tui = tui;
|
|
22
23
|
this.authStorage = authStorage;
|
|
23
24
|
this.modelRegistry = modelRegistry;
|
|
25
|
+
this.modelsJsonWriter = new ModelsJsonWriter(this.modelRegistry.modelsJsonPath);
|
|
24
26
|
this.onDone = onDone;
|
|
25
27
|
this.onDiscover = onDiscover;
|
|
26
28
|
// Header
|
|
@@ -29,7 +31,7 @@ export class ProviderManagerComponent extends Container {
|
|
|
29
31
|
// Hints
|
|
30
32
|
const hints = [
|
|
31
33
|
rawKeyHint("d", "discover"),
|
|
32
|
-
rawKeyHint("r", "remove
|
|
34
|
+
rawKeyHint("r", "remove"),
|
|
33
35
|
rawKeyHint("esc", "close"),
|
|
34
36
|
].join(" ");
|
|
35
37
|
this.addChild(new Text(hints, 0, 0));
|
|
@@ -61,6 +63,14 @@ export class ProviderManagerComponent extends Container {
|
|
|
61
63
|
supportsDiscovery: discoverableSet.has(name),
|
|
62
64
|
modelCount: providerModelCounts.get(name) ?? 0,
|
|
63
65
|
}));
|
|
66
|
+
this.clampSelectedIndex();
|
|
67
|
+
}
|
|
68
|
+
clampSelectedIndex() {
|
|
69
|
+
if (this.providers.length === 0) {
|
|
70
|
+
this.selectedIndex = 0;
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
this.selectedIndex = Math.min(this.selectedIndex, this.providers.length - 1);
|
|
64
74
|
}
|
|
65
75
|
updateList() {
|
|
66
76
|
this.listContainer.clear();
|
|
@@ -109,8 +119,10 @@ export class ProviderManagerComponent extends Container {
|
|
|
109
119
|
}
|
|
110
120
|
else if (keyData === "r" || keyData === "R") {
|
|
111
121
|
const provider = this.providers[this.selectedIndex];
|
|
112
|
-
if (provider
|
|
122
|
+
if (provider) {
|
|
113
123
|
this.authStorage.remove(provider.name);
|
|
124
|
+
this.modelsJsonWriter.removeProvider(provider.name);
|
|
125
|
+
this.modelRegistry.refresh();
|
|
114
126
|
this.loadProviders();
|
|
115
127
|
this.updateList();
|
|
116
128
|
this.tui.requestRender();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-manager.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/provider-manager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * TUI component for managing provider configurations.\n * Shows providers with auth status, discovery support, and model counts.\n */\n\nimport {\n\tContainer,\n\ttype Focusable,\n\tgetEditorKeybindings,\n\tSpacer,\n\tText,\n\ttype TUI,\n} from \"@gsd/pi-tui\";\nimport type { AuthStorage } from \"../../../core/auth-storage.js\";\nimport { getDiscoverableProviders } from \"../../../core/model-discovery.js\";\nimport type { ModelRegistry } from \"../../../core/model-registry.js\";\nimport { theme } from \"../theme/theme.js\";\nimport { rawKeyHint } from \"./keybinding-hints.js\";\n\ninterface ProviderInfo {\n\tname: string;\n\thasAuth: boolean;\n\tsupportsDiscovery: boolean;\n\tmodelCount: number;\n}\n\nexport class ProviderManagerComponent extends Container implements Focusable {\n\tprivate _focused = false;\n\tget focused(): boolean {\n\t\treturn this._focused;\n\t}\n\tset focused(value: boolean) {\n\t\tthis._focused = value;\n\t}\n\n\tprivate providers: ProviderInfo[] = [];\n\tprivate selectedIndex = 0;\n\tprivate listContainer: Container;\n\tprivate tui: TUI;\n\tprivate authStorage: AuthStorage;\n\tprivate modelRegistry: ModelRegistry;\n\tprivate onDone: () => void;\n\tprivate onDiscover: (provider: string) => void;\n\n\tconstructor(\n\t\ttui: TUI,\n\t\tauthStorage: AuthStorage,\n\t\tmodelRegistry: ModelRegistry,\n\t\tonDone: () => void,\n\t\tonDiscover: (provider: string) => void,\n\t) {\n\t\tsuper();\n\n\t\tthis.tui = tui;\n\t\tthis.authStorage = authStorage;\n\t\tthis.modelRegistry = modelRegistry;\n\t\tthis.onDone = onDone;\n\t\tthis.onDiscover = onDiscover;\n\n\t\t// Header\n\t\tthis.addChild(new Text(theme.fg(\"accent\", \"Provider Manager\"), 0, 0));\n\t\tthis.addChild(new Spacer(1));\n\n\t\t// Hints\n\t\tconst hints = [\n\t\t\trawKeyHint(\"d\", \"discover\"),\n\t\t\trawKeyHint(\"r\", \"remove auth\"),\n\t\t\trawKeyHint(\"esc\", \"close\"),\n\t\t].join(\" \");\n\t\tthis.addChild(new Text(hints, 0, 0));\n\t\tthis.addChild(new Spacer(1));\n\n\t\t// List\n\t\tthis.listContainer = new Container();\n\t\tthis.addChild(this.listContainer);\n\n\t\tthis.loadProviders();\n\t\tthis.updateList();\n\t}\n\n\tprivate loadProviders(): void {\n\t\tconst discoverableSet = new Set(getDiscoverableProviders());\n\t\tconst allModels = this.modelRegistry.getAll();\n\n\t\t// Group models by provider\n\t\tconst providerModelCounts = new Map<string, number>();\n\t\tfor (const model of allModels) {\n\t\t\tproviderModelCounts.set(model.provider, (providerModelCounts.get(model.provider) ?? 0) + 1);\n\t\t}\n\n\t\t// Build provider list from all known providers\n\t\tconst providerNames = new Set([\n\t\t\t...providerModelCounts.keys(),\n\t\t\t...discoverableSet,\n\t\t]);\n\n\t\tthis.providers = Array.from(providerNames)\n\t\t\t.sort()\n\t\t\t.map((name) => ({\n\t\t\t\tname,\n\t\t\t\thasAuth: this.authStorage.hasAuth(name),\n\t\t\t\tsupportsDiscovery: discoverableSet.has(name),\n\t\t\t\tmodelCount: providerModelCounts.get(name) ?? 0,\n\t\t\t}));\n\t}\n\n\tprivate updateList(): void {\n\t\tthis.listContainer.clear();\n\n\t\tfor (let i = 0; i < this.providers.length; i++) {\n\t\t\tconst p = this.providers[i];\n\t\t\tconst isSelected = i === this.selectedIndex;\n\n\t\t\tconst authBadge = p.hasAuth ? theme.fg(\"success\", \"[auth]\") : theme.fg(\"muted\", \"[no auth]\");\n\t\t\tconst discoveryBadge = p.supportsDiscovery ? theme.fg(\"accent\", \"[discovery]\") : \"\";\n\t\t\tconst countBadge = theme.fg(\"muted\", `(${p.modelCount} models)`);\n\n\t\t\tconst prefix = isSelected ? theme.fg(\"accent\", \"> \") : \" \";\n\t\t\tconst nameText = isSelected ? theme.fg(\"accent\", p.name) : p.name;\n\n\t\t\tconst parts = [prefix, nameText, \" \", authBadge];\n\t\t\tif (discoveryBadge) parts.push(\" \", discoveryBadge);\n\t\t\tparts.push(\" \", countBadge);\n\n\t\t\tthis.listContainer.addChild(new Text(parts.join(\"\"), 0, 0));\n\t\t}\n\n\t\tif (this.providers.length === 0) {\n\t\t\tthis.listContainer.addChild(new Text(theme.fg(\"muted\", \" No providers configured\"), 0, 0));\n\t\t}\n\t}\n\n\thandleInput(keyData: string): void {\n\t\tconst kb = getEditorKeybindings();\n\n\t\tif (kb.matches(keyData, \"selectUp\")) {\n\t\t\tif (this.providers.length === 0) return;\n\t\t\tthis.selectedIndex = this.selectedIndex === 0 ? this.providers.length - 1 : this.selectedIndex - 1;\n\t\t\tthis.updateList();\n\t\t\tthis.tui.requestRender();\n\t\t} else if (kb.matches(keyData, \"selectDown\")) {\n\t\t\tif (this.providers.length === 0) return;\n\t\t\tthis.selectedIndex = this.selectedIndex === this.providers.length - 1 ? 0 : this.selectedIndex + 1;\n\t\t\tthis.updateList();\n\t\t\tthis.tui.requestRender();\n\t\t} else if (kb.matches(keyData, \"selectCancel\")) {\n\t\t\tthis.onDone();\n\t\t} else if (keyData === \"d\" || keyData === \"D\") {\n\t\t\tconst provider = this.providers[this.selectedIndex];\n\t\t\tif (provider?.supportsDiscovery) {\n\t\t\t\tthis.onDiscover(provider.name);\n\t\t\t}\n\t\t} else if (keyData === \"r\" || keyData === \"R\") {\n\t\t\tconst provider = this.providers[this.selectedIndex];\n\t\t\tif (provider?.hasAuth) {\n\t\t\t\tthis.authStorage.remove(provider.name);\n\t\t\t\tthis.loadProviders();\n\t\t\t\tthis.updateList();\n\t\t\t\tthis.tui.requestRender();\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"provider-manager.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/provider-manager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * TUI component for managing provider configurations.\n * Shows providers with auth status, discovery support, and model counts.\n */\n\nimport {\n\tContainer,\n\ttype Focusable,\n\tgetEditorKeybindings,\n\tSpacer,\n\tText,\n\ttype TUI,\n} from \"@gsd/pi-tui\";\nimport type { AuthStorage } from \"../../../core/auth-storage.js\";\nimport { getDiscoverableProviders } from \"../../../core/model-discovery.js\";\nimport type { ModelRegistry } from \"../../../core/model-registry.js\";\nimport { ModelsJsonWriter } from \"../../../core/models-json-writer.js\";\nimport { theme } from \"../theme/theme.js\";\nimport { rawKeyHint } from \"./keybinding-hints.js\";\n\ninterface ProviderInfo {\n\tname: string;\n\thasAuth: boolean;\n\tsupportsDiscovery: boolean;\n\tmodelCount: number;\n}\n\nexport class ProviderManagerComponent extends Container implements Focusable {\n\tprivate _focused = false;\n\tget focused(): boolean {\n\t\treturn this._focused;\n\t}\n\tset focused(value: boolean) {\n\t\tthis._focused = value;\n\t}\n\n\tprivate providers: ProviderInfo[] = [];\n\tprivate selectedIndex = 0;\n\tprivate listContainer: Container;\n\tprivate tui: TUI;\n\tprivate authStorage: AuthStorage;\n\tprivate modelRegistry: ModelRegistry;\n\tprivate modelsJsonWriter: ModelsJsonWriter;\n\tprivate onDone: () => void;\n\tprivate onDiscover: (provider: string) => void;\n\n\tconstructor(\n\t\ttui: TUI,\n\t\tauthStorage: AuthStorage,\n\t\tmodelRegistry: ModelRegistry,\n\t\tonDone: () => void,\n\t\tonDiscover: (provider: string) => void,\n\t) {\n\t\tsuper();\n\n\t\tthis.tui = tui;\n\t\tthis.authStorage = authStorage;\n\t\tthis.modelRegistry = modelRegistry;\n\t\tthis.modelsJsonWriter = new ModelsJsonWriter(this.modelRegistry.modelsJsonPath);\n\t\tthis.onDone = onDone;\n\t\tthis.onDiscover = onDiscover;\n\n\t\t// Header\n\t\tthis.addChild(new Text(theme.fg(\"accent\", \"Provider Manager\"), 0, 0));\n\t\tthis.addChild(new Spacer(1));\n\n\t\t// Hints\n\t\tconst hints = [\n\t\t\trawKeyHint(\"d\", \"discover\"),\n\t\t\trawKeyHint(\"r\", \"remove\"),\n\t\t\trawKeyHint(\"esc\", \"close\"),\n\t\t].join(\" \");\n\t\tthis.addChild(new Text(hints, 0, 0));\n\t\tthis.addChild(new Spacer(1));\n\n\t\t// List\n\t\tthis.listContainer = new Container();\n\t\tthis.addChild(this.listContainer);\n\n\t\tthis.loadProviders();\n\t\tthis.updateList();\n\t}\n\n\tprivate loadProviders(): void {\n\t\tconst discoverableSet = new Set(getDiscoverableProviders());\n\t\tconst allModels = this.modelRegistry.getAll();\n\n\t\t// Group models by provider\n\t\tconst providerModelCounts = new Map<string, number>();\n\t\tfor (const model of allModels) {\n\t\t\tproviderModelCounts.set(model.provider, (providerModelCounts.get(model.provider) ?? 0) + 1);\n\t\t}\n\n\t\t// Build provider list from all known providers\n\t\tconst providerNames = new Set([\n\t\t\t...providerModelCounts.keys(),\n\t\t\t...discoverableSet,\n\t\t]);\n\n\t\tthis.providers = Array.from(providerNames)\n\t\t\t.sort()\n\t\t\t.map((name) => ({\n\t\t\t\tname,\n\t\t\t\thasAuth: this.authStorage.hasAuth(name),\n\t\t\t\tsupportsDiscovery: discoverableSet.has(name),\n\t\t\t\tmodelCount: providerModelCounts.get(name) ?? 0,\n\t\t\t}));\n\t\tthis.clampSelectedIndex();\n\t}\n\n\tprivate clampSelectedIndex(): void {\n\t\tif (this.providers.length === 0) {\n\t\t\tthis.selectedIndex = 0;\n\t\t\treturn;\n\t\t}\n\t\tthis.selectedIndex = Math.min(this.selectedIndex, this.providers.length - 1);\n\t}\n\n\tprivate updateList(): void {\n\t\tthis.listContainer.clear();\n\n\t\tfor (let i = 0; i < this.providers.length; i++) {\n\t\t\tconst p = this.providers[i];\n\t\t\tconst isSelected = i === this.selectedIndex;\n\n\t\t\tconst authBadge = p.hasAuth ? theme.fg(\"success\", \"[auth]\") : theme.fg(\"muted\", \"[no auth]\");\n\t\t\tconst discoveryBadge = p.supportsDiscovery ? theme.fg(\"accent\", \"[discovery]\") : \"\";\n\t\t\tconst countBadge = theme.fg(\"muted\", `(${p.modelCount} models)`);\n\n\t\t\tconst prefix = isSelected ? theme.fg(\"accent\", \"> \") : \" \";\n\t\t\tconst nameText = isSelected ? theme.fg(\"accent\", p.name) : p.name;\n\n\t\t\tconst parts = [prefix, nameText, \" \", authBadge];\n\t\t\tif (discoveryBadge) parts.push(\" \", discoveryBadge);\n\t\t\tparts.push(\" \", countBadge);\n\n\t\t\tthis.listContainer.addChild(new Text(parts.join(\"\"), 0, 0));\n\t\t}\n\n\t\tif (this.providers.length === 0) {\n\t\t\tthis.listContainer.addChild(new Text(theme.fg(\"muted\", \" No providers configured\"), 0, 0));\n\t\t}\n\t}\n\n\thandleInput(keyData: string): void {\n\t\tconst kb = getEditorKeybindings();\n\n\t\tif (kb.matches(keyData, \"selectUp\")) {\n\t\t\tif (this.providers.length === 0) return;\n\t\t\tthis.selectedIndex = this.selectedIndex === 0 ? this.providers.length - 1 : this.selectedIndex - 1;\n\t\t\tthis.updateList();\n\t\t\tthis.tui.requestRender();\n\t\t} else if (kb.matches(keyData, \"selectDown\")) {\n\t\t\tif (this.providers.length === 0) return;\n\t\t\tthis.selectedIndex = this.selectedIndex === this.providers.length - 1 ? 0 : this.selectedIndex + 1;\n\t\t\tthis.updateList();\n\t\t\tthis.tui.requestRender();\n\t\t} else if (kb.matches(keyData, \"selectCancel\")) {\n\t\t\tthis.onDone();\n\t\t} else if (keyData === \"d\" || keyData === \"D\") {\n\t\t\tconst provider = this.providers[this.selectedIndex];\n\t\t\tif (provider?.supportsDiscovery) {\n\t\t\t\tthis.onDiscover(provider.name);\n\t\t\t}\n\t\t} else if (keyData === \"r\" || keyData === \"R\") {\n\t\t\tconst provider = this.providers[this.selectedIndex];\n\t\t\tif (provider) {\n\t\t\t\tthis.authStorage.remove(provider.name);\n\t\t\t\tthis.modelsJsonWriter.removeProvider(provider.name);\n\t\t\t\tthis.modelRegistry.refresh();\n\t\t\t\tthis.loadProviders();\n\t\t\t\tthis.updateList();\n\t\t\t\tthis.tui.requestRender();\n\t\t\t}\n\t\t}\n\t}\n}\n"]}
|
|
@@ -235,7 +235,7 @@ export class ModelRegistry {
|
|
|
235
235
|
|
|
236
236
|
constructor(
|
|
237
237
|
readonly authStorage: AuthStorage,
|
|
238
|
-
|
|
238
|
+
readonly modelsJsonPath: string | undefined = join(getAgentDir(), "models.json"),
|
|
239
239
|
) {
|
|
240
240
|
this.discoveryCache = new ModelDiscoveryCache();
|
|
241
241
|
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
import type { AuthStorage } from "../../../core/auth-storage.js";
|
|
15
15
|
import { getDiscoverableProviders } from "../../../core/model-discovery.js";
|
|
16
16
|
import type { ModelRegistry } from "../../../core/model-registry.js";
|
|
17
|
+
import { ModelsJsonWriter } from "../../../core/models-json-writer.js";
|
|
17
18
|
import { theme } from "../theme/theme.js";
|
|
18
19
|
import { rawKeyHint } from "./keybinding-hints.js";
|
|
19
20
|
|
|
@@ -39,6 +40,7 @@ export class ProviderManagerComponent extends Container implements Focusable {
|
|
|
39
40
|
private tui: TUI;
|
|
40
41
|
private authStorage: AuthStorage;
|
|
41
42
|
private modelRegistry: ModelRegistry;
|
|
43
|
+
private modelsJsonWriter: ModelsJsonWriter;
|
|
42
44
|
private onDone: () => void;
|
|
43
45
|
private onDiscover: (provider: string) => void;
|
|
44
46
|
|
|
@@ -54,6 +56,7 @@ export class ProviderManagerComponent extends Container implements Focusable {
|
|
|
54
56
|
this.tui = tui;
|
|
55
57
|
this.authStorage = authStorage;
|
|
56
58
|
this.modelRegistry = modelRegistry;
|
|
59
|
+
this.modelsJsonWriter = new ModelsJsonWriter(this.modelRegistry.modelsJsonPath);
|
|
57
60
|
this.onDone = onDone;
|
|
58
61
|
this.onDiscover = onDiscover;
|
|
59
62
|
|
|
@@ -64,7 +67,7 @@ export class ProviderManagerComponent extends Container implements Focusable {
|
|
|
64
67
|
// Hints
|
|
65
68
|
const hints = [
|
|
66
69
|
rawKeyHint("d", "discover"),
|
|
67
|
-
rawKeyHint("r", "remove
|
|
70
|
+
rawKeyHint("r", "remove"),
|
|
68
71
|
rawKeyHint("esc", "close"),
|
|
69
72
|
].join(" ");
|
|
70
73
|
this.addChild(new Text(hints, 0, 0));
|
|
@@ -102,6 +105,15 @@ export class ProviderManagerComponent extends Container implements Focusable {
|
|
|
102
105
|
supportsDiscovery: discoverableSet.has(name),
|
|
103
106
|
modelCount: providerModelCounts.get(name) ?? 0,
|
|
104
107
|
}));
|
|
108
|
+
this.clampSelectedIndex();
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
private clampSelectedIndex(): void {
|
|
112
|
+
if (this.providers.length === 0) {
|
|
113
|
+
this.selectedIndex = 0;
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
this.selectedIndex = Math.min(this.selectedIndex, this.providers.length - 1);
|
|
105
117
|
}
|
|
106
118
|
|
|
107
119
|
private updateList(): void {
|
|
@@ -152,8 +164,10 @@ export class ProviderManagerComponent extends Container implements Focusable {
|
|
|
152
164
|
}
|
|
153
165
|
} else if (keyData === "r" || keyData === "R") {
|
|
154
166
|
const provider = this.providers[this.selectedIndex];
|
|
155
|
-
if (provider
|
|
167
|
+
if (provider) {
|
|
156
168
|
this.authStorage.remove(provider.name);
|
|
169
|
+
this.modelsJsonWriter.removeProvider(provider.name);
|
|
170
|
+
this.modelRegistry.refresh();
|
|
157
171
|
this.loadProviders();
|
|
158
172
|
this.updateList();
|
|
159
173
|
this.tui.requestRender();
|
package/pkg/package.json
CHANGED
|
@@ -18,25 +18,6 @@ const { existsSync, statSync, readdirSync } = require('fs')
|
|
|
18
18
|
const { resolve, join } = require('path')
|
|
19
19
|
const { execSync } = require('child_process')
|
|
20
20
|
|
|
21
|
-
const root = resolve(__dirname, '..')
|
|
22
|
-
const packagesDir = join(root, 'packages')
|
|
23
|
-
|
|
24
|
-
// Skip if packages/ doesn't exist (published tarball / end-user install)
|
|
25
|
-
if (!existsSync(packagesDir)) process.exit(0)
|
|
26
|
-
|
|
27
|
-
// Skip in CI — the pipeline runs `npm run build` explicitly
|
|
28
|
-
if (process.env.CI === 'true' || process.env.CI === '1') process.exit(0)
|
|
29
|
-
|
|
30
|
-
// Workspace packages that need dist/index.js at runtime.
|
|
31
|
-
// Order matters: dependencies must build before dependents.
|
|
32
|
-
const WORKSPACE_PACKAGES = [
|
|
33
|
-
'native',
|
|
34
|
-
'pi-tui',
|
|
35
|
-
'pi-ai',
|
|
36
|
-
'pi-agent-core',
|
|
37
|
-
'pi-coding-agent',
|
|
38
|
-
]
|
|
39
|
-
|
|
40
21
|
/**
|
|
41
22
|
* Returns the most recent mtime (ms) of any .ts file under dir, recursively.
|
|
42
23
|
* Returns 0 if no .ts files found.
|
|
@@ -56,31 +37,54 @@ function newestSrcMtime(dir) {
|
|
|
56
37
|
return newest
|
|
57
38
|
}
|
|
58
39
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
40
|
+
if (require.main === module) {
|
|
41
|
+
const root = resolve(__dirname, '..')
|
|
42
|
+
const packagesDir = join(root, 'packages')
|
|
43
|
+
|
|
44
|
+
// Skip if packages/ doesn't exist (published tarball / end-user install)
|
|
45
|
+
if (!existsSync(packagesDir)) process.exit(0)
|
|
46
|
+
|
|
47
|
+
// Skip in CI — the pipeline runs `npm run build` explicitly
|
|
48
|
+
if (process.env.CI === 'true' || process.env.CI === '1') process.exit(0)
|
|
49
|
+
|
|
50
|
+
// Workspace packages that need dist/index.js at runtime.
|
|
51
|
+
// Order matters: dependencies must build before dependents.
|
|
52
|
+
const WORKSPACE_PACKAGES = [
|
|
53
|
+
'native',
|
|
54
|
+
'pi-tui',
|
|
55
|
+
'pi-ai',
|
|
56
|
+
'pi-agent-core',
|
|
57
|
+
'pi-coding-agent',
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
const stale = []
|
|
61
|
+
for (const pkg of WORKSPACE_PACKAGES) {
|
|
62
|
+
const distIndex = join(packagesDir, pkg, 'dist', 'index.js')
|
|
63
|
+
if (!existsSync(distIndex)) {
|
|
64
|
+
stale.push(pkg)
|
|
65
|
+
continue
|
|
66
|
+
}
|
|
67
|
+
const distMtime = statSync(distIndex).mtimeMs
|
|
68
|
+
const srcMtime = newestSrcMtime(join(packagesDir, pkg, 'src'))
|
|
69
|
+
if (srcMtime > distMtime) {
|
|
70
|
+
stale.push(pkg)
|
|
71
|
+
}
|
|
70
72
|
}
|
|
71
|
-
}
|
|
72
73
|
|
|
73
|
-
if (stale.length === 0) process.exit(0)
|
|
74
|
+
if (stale.length === 0) process.exit(0)
|
|
74
75
|
|
|
75
|
-
process.stderr.write(` Building ${stale.length} workspace package(s) with stale or missing dist/: ${stale.join(', ')}\n`)
|
|
76
|
+
process.stderr.write(` Building ${stale.length} workspace package(s) with stale or missing dist/: ${stale.join(', ')}\n`)
|
|
76
77
|
|
|
77
|
-
for (const pkg of stale) {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
78
|
+
for (const pkg of stale) {
|
|
79
|
+
const pkgDir = join(packagesDir, pkg)
|
|
80
|
+
try {
|
|
81
|
+
execSync('npm run build', { cwd: pkgDir, stdio: 'pipe' })
|
|
82
|
+
process.stderr.write(` ✓ ${pkg}\n`)
|
|
83
|
+
} catch (err) {
|
|
84
|
+
process.stderr.write(` ✗ ${pkg} build failed: ${err.message}\n`)
|
|
85
|
+
// Non-fatal — the user can run `npm run build` manually
|
|
86
|
+
}
|
|
85
87
|
}
|
|
86
88
|
}
|
|
89
|
+
|
|
90
|
+
module.exports = { newestSrcMtime }
|