@bastani/atomic 0.9.11-alpha.6 → 0.9.11-alpha.8
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/CHANGELOG.md +38 -0
- package/README.md +3 -5
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/mcp/sampling-handler.ts +1 -5
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +1 -0
- package/dist/builtin/workflows/README.md +1 -1
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/skills/impeccable/SKILL.md +33 -129
- package/dist/builtin/workflows/skills/impeccable/agents/impeccable_asset_producer.toml +11 -3
- package/dist/builtin/workflows/skills/impeccable/agents/impeccable_documenter.toml +26 -0
- package/dist/builtin/workflows/skills/impeccable/agents/impeccable_finish_reviewer.toml +35 -0
- package/dist/builtin/workflows/skills/impeccable/reference/android.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/animate.md +72 -189
- package/dist/builtin/workflows/skills/impeccable/reference/audit.md +10 -9
- package/dist/builtin/workflows/skills/impeccable/reference/audit.native.md +2 -2
- package/dist/builtin/workflows/skills/impeccable/reference/bolder.md +19 -108
- package/dist/builtin/workflows/skills/impeccable/reference/clarify.md +59 -253
- package/dist/builtin/workflows/skills/impeccable/reference/colorize.md +51 -222
- package/dist/builtin/workflows/skills/impeccable/reference/craft-floor.md +45 -0
- package/dist/builtin/workflows/skills/impeccable/reference/craft.md +3 -121
- package/dist/builtin/workflows/skills/impeccable/reference/critique.md +28 -20
- package/dist/builtin/workflows/skills/impeccable/reference/degraded/asset-producer.md +97 -0
- package/dist/builtin/workflows/skills/impeccable/reference/degraded/documenter.md +23 -0
- package/dist/builtin/workflows/skills/impeccable/reference/degraded/finish-reviewer.md +32 -0
- package/dist/builtin/workflows/skills/impeccable/reference/degraded/manual-edit-applier.md +92 -0
- package/dist/builtin/workflows/skills/impeccable/reference/delight.md +47 -279
- package/dist/builtin/workflows/skills/impeccable/reference/distill.md +2 -2
- package/dist/builtin/workflows/skills/impeccable/reference/doctor.md +53 -0
- package/dist/builtin/workflows/skills/impeccable/reference/document.md +60 -73
- package/dist/builtin/workflows/skills/impeccable/reference/harden.md +1 -12
- package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +17 -4
- package/dist/builtin/workflows/skills/impeccable/reference/init.md +64 -163
- package/dist/builtin/workflows/skills/impeccable/reference/ios.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/layout.md +52 -153
- package/dist/builtin/workflows/skills/impeccable/reference/live.md +44 -32
- package/dist/builtin/workflows/skills/impeccable/reference/new-work.md +105 -0
- package/dist/builtin/workflows/skills/impeccable/reference/{product.md → operate.md} +6 -5
- package/dist/builtin/workflows/skills/impeccable/reference/optimize.md +4 -4
- package/dist/builtin/workflows/skills/impeccable/reference/overdrive.md +1 -4
- package/dist/builtin/workflows/skills/impeccable/reference/polish.md +68 -212
- package/dist/builtin/workflows/skills/impeccable/reference/quieter.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/routing.md +18 -0
- package/dist/builtin/workflows/skills/impeccable/reference/shape.md +38 -144
- package/dist/builtin/workflows/skills/impeccable/reference/typeset.md +48 -269
- package/dist/builtin/workflows/skills/impeccable/reference/visualize.md +38 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/command-metadata.json +1 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/concept-seed.mjs +584 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/context-signals.mjs +117 -9
- package/dist/builtin/workflows/skills/impeccable/scripts/context.mjs +486 -59
- package/dist/builtin/workflows/skills/impeccable/scripts/critique-storage.mjs +16 -45
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/browser/injected/index.mjs +96 -10
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/cli/main.mjs +143 -26
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/design-system.mjs +181 -12
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +3187 -182
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +102 -7
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +282 -70
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +183 -15
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +22 -7
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/findings.mjs +7 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/node/file-system.mjs +16 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/registry/antipatterns.mjs +155 -42
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +2988 -155
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/constants.mjs +11 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/doctor.mjs +336 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/generate-image.mjs +232 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +90 -10
- package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +410 -78
- package/dist/builtin/workflows/skills/impeccable/scripts/hook.mjs +25 -8
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/artifact-schema.mjs +93 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/composition-catalog.mjs +165 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/concept-catalog.mjs +329 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-config.mjs +20 -5
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-paths.mjs +16 -8
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/provider.mjs +1 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness-deep.mjs +455 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness-notice.mjs +169 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness.mjs +457 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/surface-briefs.mjs +151 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/target-slug.mjs +33 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/template-extensions.mjs +146 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/completion.mjs +10 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/live/event-validation.mjs +15 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/generation-preflight.mjs +149 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/poll-lanes.mjs +14 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/session-store.mjs +109 -32
- package/dist/builtin/workflows/skills/impeccable/scripts/live/source-lock.mjs +105 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/source-search.mjs +105 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/sveltekit-adapter.mjs +8 -6
- package/dist/builtin/workflows/skills/impeccable/scripts/live/tanstack-adapter.mjs +280 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +208 -68
- package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +563 -112
- package/dist/builtin/workflows/skills/impeccable/scripts/live-commit-manual-edits.mjs +3 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-inject.mjs +198 -13
- package/dist/builtin/workflows/skills/impeccable/scripts/live-insert.mjs +24 -6
- package/dist/builtin/workflows/skills/impeccable/scripts/live-manual-edit-evidence.mjs +6 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/live-poll.mjs +44 -14
- package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +398 -33
- package/dist/builtin/workflows/skills/impeccable/scripts/live-status.mjs +9 -5
- package/dist/builtin/workflows/skills/impeccable/scripts/live-wrap.mjs +81 -67
- package/dist/builtin/workflows/skills/impeccable/scripts/live.mjs +7 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/palette.mjs +76 -81
- package/dist/builtin/workflows/skills/impeccable/scripts/pin.mjs +2 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/serve-question.mjs +890 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/surface-brief.mjs +74 -0
- package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +1 -24
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +232 -50
- package/dist/builtin/workflows/src/extension/workflow-model-catalog.ts +26 -0
- package/dist/builtin/workflows/src/extension/workflow-prompts.ts +3 -2
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +23 -9
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-replay.ts +1 -0
- package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +20 -5
- package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +10 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-delivery-activity.ts +86 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +6 -2
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +24 -18
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-send-user-message.ts +8 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +3 -3
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-session.ts +2 -2
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +16 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-delivery-activity.ts +121 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-live-events.ts +42 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +16 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +4 -0
- package/dist/cli/list-models.d.ts +2 -2
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +5 -5
- package/dist/cli/list-models.js.map +1 -1
- package/dist/core/agent-session-accessors.js +1 -1
- package/dist/core/agent-session-accessors.js.map +1 -1
- package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-auto-compaction.js +2 -5
- package/dist/core/agent-session-auto-compaction.js.map +1 -1
- package/dist/core/agent-session-compaction.js +1 -1
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +5 -5
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +4 -4
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-models.d.ts +1 -1
- package/dist/core/agent-session-models.d.ts.map +1 -1
- package/dist/core/agent-session-models.js +18 -14
- package/dist/core/agent-session-models.js.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.js +2 -4
- package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +3 -7
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-retry.js +1 -1
- package/dist/core/agent-session-retry.js.map +1 -1
- package/dist/core/agent-session-runtime-auth.d.ts +3 -3
- package/dist/core/agent-session-runtime-auth.d.ts.map +1 -1
- package/dist/core/agent-session-runtime-auth.js +4 -14
- package/dist/core/agent-session-runtime-auth.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +3 -3
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +3 -8
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +16 -23
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +2 -1
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +2 -2
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +1 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage-backends.d.ts +1 -0
- package/dist/core/auth-storage-backends.d.ts.map +1 -1
- package/dist/core/auth-storage-backends.js +18 -4
- package/dist/core/auth-storage-backends.js.map +1 -1
- package/dist/core/auth-storage.d.ts +12 -139
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +68 -374
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/copilot-env-routing.d.ts +36 -0
- package/dist/core/copilot-env-routing.d.ts.map +1 -0
- package/dist/core/copilot-env-routing.js +94 -0
- package/dist/core/copilot-env-routing.js.map +1 -0
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +10 -2
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/provider-types.d.ts +0 -40
- package/dist/core/extensions/provider-types.d.ts.map +1 -1
- package/dist/core/extensions/provider-types.js.map +1 -1
- package/dist/core/fallback-models.d.ts +4 -4
- package/dist/core/fallback-models.d.ts.map +1 -1
- package/dist/core/fallback-models.js +3 -3
- package/dist/core/fallback-models.js.map +1 -1
- package/dist/core/model-config.d.ts +542 -0
- package/dist/core/model-config.d.ts.map +1 -0
- package/dist/core/{model-registry-schemas.js → model-config.js} +85 -34
- package/dist/core/model-config.js.map +1 -0
- package/dist/core/model-registry.d.ts +25 -85
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +65 -388
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver-cli.d.ts +2 -2
- package/dist/core/model-resolver-cli.d.ts.map +1 -1
- package/dist/core/model-resolver-cli.js +2 -2
- package/dist/core/model-resolver-cli.js.map +1 -1
- package/dist/core/model-resolver-initial.d.ts +4 -4
- package/dist/core/model-resolver-initial.d.ts.map +1 -1
- package/dist/core/model-resolver-initial.js +17 -17
- package/dist/core/model-resolver-initial.js.map +1 -1
- package/dist/core/model-resolver-scope.d.ts +3 -3
- package/dist/core/model-resolver-scope.d.ts.map +1 -1
- package/dist/core/model-resolver-scope.js +4 -4
- package/dist/core/model-resolver-scope.js.map +1 -1
- package/dist/core/model-runtime-auth.d.ts +7 -0
- package/dist/core/model-runtime-auth.d.ts.map +1 -0
- package/dist/core/model-runtime-auth.js +14 -0
- package/dist/core/model-runtime-auth.js.map +1 -0
- package/dist/core/model-runtime-providers.d.ts +6 -0
- package/dist/core/model-runtime-providers.d.ts.map +1 -0
- package/dist/core/model-runtime-providers.js +22 -0
- package/dist/core/model-runtime-providers.js.map +1 -0
- package/dist/core/model-runtime-restoration.d.ts +6 -0
- package/dist/core/model-runtime-restoration.d.ts.map +1 -0
- package/dist/core/model-runtime-restoration.js +21 -0
- package/dist/core/model-runtime-restoration.js.map +1 -0
- package/dist/core/model-runtime-snapshot.d.ts +16 -0
- package/dist/core/model-runtime-snapshot.d.ts.map +1 -0
- package/dist/core/model-runtime-snapshot.js +52 -0
- package/dist/core/model-runtime-snapshot.js.map +1 -0
- package/dist/core/model-runtime-streaming.d.ts +17 -0
- package/dist/core/model-runtime-streaming.d.ts.map +1 -0
- package/dist/core/model-runtime-streaming.js +66 -0
- package/dist/core/model-runtime-streaming.js.map +1 -0
- package/dist/core/model-runtime-types.d.ts +21 -0
- package/dist/core/model-runtime-types.d.ts.map +1 -0
- package/dist/core/model-runtime-types.js +2 -0
- package/dist/core/model-runtime-types.js.map +1 -0
- package/dist/core/model-runtime.d.ts +50 -29
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +330 -90
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/models-store.d.ts +2 -10
- package/dist/core/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js +2 -29
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/oauth-login.d.ts +24 -0
- package/dist/core/oauth-login.d.ts.map +1 -0
- package/dist/core/oauth-login.js +87 -0
- package/dist/core/oauth-login.js.map +1 -0
- package/dist/core/oauth-provider-metadata.d.ts +5 -0
- package/dist/core/oauth-provider-metadata.d.ts.map +1 -0
- package/dist/core/oauth-provider-metadata.js +19 -0
- package/dist/core/oauth-provider-metadata.js.map +1 -0
- package/dist/core/provider-composer-internal.d.ts +53 -0
- package/dist/core/provider-composer-internal.d.ts.map +1 -0
- package/dist/core/provider-composer-internal.js +273 -0
- package/dist/core/provider-composer-internal.js.map +1 -0
- package/dist/core/provider-composer.d.ts +16 -0
- package/dist/core/provider-composer.d.ts.map +1 -0
- package/dist/core/provider-composer.js +108 -0
- package/dist/core/provider-composer.js.map +1 -0
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +74 -122
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resolve-config-value.d.ts +8 -7
- package/dist/core/resolve-config-value.d.ts.map +1 -1
- package/dist/core/resolve-config-value.js +26 -23
- package/dist/core/resolve-config-value.js.map +1 -1
- package/dist/core/runtime-credentials.d.ts +16 -0
- package/dist/core/runtime-credentials.d.ts.map +1 -0
- package/dist/core/runtime-credentials.js +42 -0
- package/dist/core/runtime-credentials.js.map +1 -0
- package/dist/core/sdk-types.d.ts +1 -7
- package/dist/core/sdk-types.d.ts.map +1 -1
- package/dist/core/sdk-types.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +27 -28
- package/dist/core/sdk.js.map +1 -1
- package/dist/extensions/llama/index.js +1 -1
- package/dist/extensions/llama/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts +2 -4
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +25 -17
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/dist/main-runtime-api-key.d.ts +6 -0
- package/dist/main-runtime-api-key.d.ts.map +1 -0
- package/dist/main-runtime-api-key.js +6 -0
- package/dist/main-runtime-api-key.js.map +1 -0
- package/dist/main-session-options.d.ts +2 -2
- package/dist/main-session-options.d.ts.map +1 -1
- package/dist/main-session-options.js +3 -3
- package/dist/main-session-options.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +9 -11
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.js +2 -14
- package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-events.js +9 -0
- package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +25 -0
- package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-runtime.js +53 -0
- package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.d.ts +13 -0
- package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.js +22 -1
- package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
- package/dist/modes/interactive/components/footer.js +1 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +1 -3
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +4 -3
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +56 -73
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +4 -3
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +15 -24
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.js +10 -4
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-login.js +20 -31
- package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.d.ts +1 -1
- package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.js +21 -47
- package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js +3 -3
- package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.js +8 -8
- package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.js +2 -1
- package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-model-catalog-startup.js +2 -2
- package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-model-routing.js +11 -11
- package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +1 -1
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.js +2 -2
- package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +1 -1
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-auth.d.ts +2 -2
- package/dist/modes/interactive-engine/isolated-auth.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-auth.js +4 -3
- package/dist/modes/interactive-engine/isolated-auth.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +4 -3
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.d.ts +0 -1
- package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.js +11 -50
- package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
- package/dist/modes/rpc/rpc-client-api.d.ts +2 -2
- package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-api.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +26 -19
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-oauth-client.d.ts +1 -1
- package/dist/modes/rpc/rpc-oauth-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-oauth-client.js +1 -1
- package/dist/modes/rpc/rpc-oauth-client.js.map +1 -1
- package/dist/modes/rpc/rpc-oauth-interaction.d.ts +1 -1
- package/dist/modes/rpc/rpc-oauth-interaction.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-oauth-interaction.js +1 -1
- package/dist/modes/rpc/rpc-oauth-interaction.js.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.d.ts +4 -5
- package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.js +19 -66
- package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
- package/dist/modes/rpc/rpc-session-binding.js +1 -1
- package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +7 -4
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +5 -7
- package/dist/package-manager-cli.js.map +1 -1
- package/docs/changelog.mdx +1 -1
- package/docs/custom-provider.md +1 -1
- package/docs/models.md +4 -6
- package/docs/providers.md +13 -0
- package/docs/quickstart.md +2 -1
- package/docs/sdk.md +32 -49
- package/docs/tui.md +7 -2
- package/docs/workflows.md +4 -4
- package/examples/sdk/02-custom-model.ts +8 -10
- package/examples/sdk/09-api-keys-and-oauth.ts +17 -23
- package/examples/sdk/12-full-control.ts +9 -11
- package/examples/sdk/README.md +17 -21
- package/npm-shrinkwrap.json +23 -23
- package/package.json +2 -2
- package/dist/builtin/workflows/skills/impeccable/reference/brand.md +0 -108
- package/dist/builtin/workflows/skills/impeccable/reference/codex.md +0 -105
- package/dist/builtin/workflows/skills/impeccable/reference/interaction-design.md +0 -189
- package/dist/core/model-registry-auth.d.ts +0 -10
- package/dist/core/model-registry-auth.d.ts.map +0 -1
- package/dist/core/model-registry-auth.js +0 -98
- package/dist/core/model-registry-auth.js.map +0 -1
- package/dist/core/model-registry-builtins.d.ts +0 -8
- package/dist/core/model-registry-builtins.d.ts.map +0 -1
- package/dist/core/model-registry-builtins.js +0 -104
- package/dist/core/model-registry-builtins.js.map +0 -1
- package/dist/core/model-registry-custom-loader.d.ts +0 -3
- package/dist/core/model-registry-custom-loader.d.ts.map +0 -1
- package/dist/core/model-registry-custom-loader.js +0 -255
- package/dist/core/model-registry-custom-loader.js.map +0 -1
- package/dist/core/model-registry-dynamic.d.ts +0 -7
- package/dist/core/model-registry-dynamic.d.ts.map +0 -1
- package/dist/core/model-registry-dynamic.js +0 -189
- package/dist/core/model-registry-dynamic.js.map +0 -1
- package/dist/core/model-registry-extension-refresh.d.ts +0 -23
- package/dist/core/model-registry-extension-refresh.d.ts.map +0 -1
- package/dist/core/model-registry-extension-refresh.js +0 -32
- package/dist/core/model-registry-extension-refresh.js.map +0 -1
- package/dist/core/model-registry-loader.d.ts +0 -5
- package/dist/core/model-registry-loader.d.ts.map +0 -1
- package/dist/core/model-registry-loader.js +0 -29
- package/dist/core/model-registry-loader.js.map +0 -1
- package/dist/core/model-registry-schemas.d.ts +0 -1399
- package/dist/core/model-registry-schemas.d.ts.map +0 -1
- package/dist/core/model-registry-schemas.js.map +0 -1
- package/dist/core/model-registry-types.d.ts +0 -91
- package/dist/core/model-registry-types.d.ts.map +0 -1
- package/dist/core/model-registry-types.js +0 -2
- package/dist/core/model-registry-types.js.map +0 -1
- package/dist/core/model-registry-validation.d.ts +0 -7
- package/dist/core/model-registry-validation.d.ts.map +0 -1
- package/dist/core/model-registry-validation.js +0 -12
- package/dist/core/model-registry-validation.js.map +0 -1
- package/dist/core/oauth-compat.d.ts +0 -17
- package/dist/core/oauth-compat.d.ts.map +0 -1
- package/dist/core/oauth-compat.js +0 -2
- package/dist/core/oauth-compat.js.map +0 -1
- package/dist/core/oauth-provider-bridge.d.ts +0 -63
- package/dist/core/oauth-provider-bridge.d.ts.map +0 -1
- package/dist/core/oauth-provider-bridge.js +0 -232
- package/dist/core/oauth-provider-bridge.js.map +0 -1
|
@@ -35,11 +35,11 @@ function splitCustomModelThinkingSuffix(pattern) {
|
|
|
35
35
|
* return a thinking level from "<pattern>:<thinking>" so the caller can apply it.
|
|
36
36
|
*/
|
|
37
37
|
export function resolveCliModel(options) {
|
|
38
|
-
const { cliProvider, cliModel,
|
|
38
|
+
const { cliProvider, cliModel, modelRuntime } = options;
|
|
39
39
|
if (!cliModel) {
|
|
40
40
|
return { model: undefined, warning: undefined, error: undefined };
|
|
41
41
|
}
|
|
42
|
-
const availableModels =
|
|
42
|
+
const availableModels = [...modelRuntime.getModels()];
|
|
43
43
|
if (availableModels.length === 0) {
|
|
44
44
|
return {
|
|
45
45
|
model: undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-resolver-cli.js","sourceRoot":"","sources":["../../src/core/model-resolver-cli.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Api, Model } from \"@earendil-works/pi-ai/compat\";\nimport { isValidThinkingLevel } from \"../cli/args.ts\";\nimport { buildFallbackModel, parseModelPattern } from \"./model-resolver-patterns.ts\";\nimport type { ResolveCliModelResult } from \"./model-resolver-types.ts\";\nimport type { ModelRegistry } from \"./model-registry.ts\";\n\nfunction buildProviderMap(availableModels: Model<Api>[]): Map<string, string> {\n const providerMap = new Map<string, string>();\n for (const model of availableModels) {\n providerMap.set(model.provider.toLowerCase(), model.provider);\n }\n return providerMap;\n}\n\nfunction findRawExactModel(cliModel: string, availableModels: Model<Api>[]): Model<Api> | undefined {\n const lower = cliModel.toLowerCase();\n return availableModels.find(\n (m) => m.id.toLowerCase() === lower || `${m.provider}/${m.id}`.toLowerCase() === lower,\n );\n}\n\nfunction splitCustomModelThinkingSuffix(pattern: string): {\n modelId: string;\n thinkingLevel: ResolveCliModelResult[\"thinkingLevel\"];\n} {\n const lastColonIndex = pattern.lastIndexOf(\":\");\n if (lastColonIndex <= 0) return { modelId: pattern, thinkingLevel: undefined };\n\n const suffix = pattern.substring(lastColonIndex + 1);\n if (!isValidThinkingLevel(suffix)) return { modelId: pattern, thinkingLevel: undefined };\n\n return {\n modelId: pattern.substring(0, lastColonIndex),\n thinkingLevel: suffix,\n };\n}\n\n/**\n * Resolve a single model from CLI flags.\n *\n * Supports:\n * - --provider <provider> --model <pattern>\n * - --model <provider>/<pattern>\n * - Fuzzy matching (same rules as model scoping: exact id, then partial id/name)\n *\n * Note: This does not apply the thinking level by itself, but it may *parse* and\n * return a thinking level from \"<pattern>:<thinking>\" so the caller can apply it.\n */\nexport function resolveCliModel(options: {\n cliProvider?: string;\n cliModel?: string;\n modelRegistry: ModelRegistry;\n}): ResolveCliModelResult {\n const { cliProvider, cliModel, modelRegistry } = options;\n\n if (!cliModel) {\n return { model: undefined, warning: undefined, error: undefined };\n }\n\n const availableModels = modelRegistry.getAll();\n if (availableModels.length === 0) {\n return {\n model: undefined,\n warning: undefined,\n error: \"No models available. Check your installation or add models to models.json.\",\n };\n }\n\n const providerMap = buildProviderMap(availableModels);\n\n // A registered raw ID may itself look like \"provider/model:thinking\" (for example,\n // a gateway-owned ID). Preserve that exact ID before provider inference consumes the suffix.\n const rawPattern = splitCustomModelThinkingSuffix(cliModel);\n if (!cliProvider && rawPattern.thinkingLevel !== undefined) {\n const exact = findRawExactModel(cliModel, availableModels);\n if (exact) {\n return { model: exact, warning: undefined, thinkingLevel: undefined, error: undefined };\n }\n }\n\n let provider = cliProvider ? providerMap.get(cliProvider.toLowerCase()) : undefined;\n if (cliProvider && !provider) {\n return {\n model: undefined,\n warning: undefined,\n error: `Unknown provider \"${cliProvider}\". Use --list-models to see available providers/models.`,\n };\n }\n\n let pattern = cliModel;\n let inferredProvider = false;\n\n if (!provider) {\n const slashIndex = cliModel.indexOf(\"/\");\n if (slashIndex !== -1) {\n const maybeProvider = cliModel.substring(0, slashIndex);\n const canonical = providerMap.get(maybeProvider.toLowerCase());\n if (canonical) {\n provider = canonical;\n pattern = cliModel.substring(slashIndex + 1);\n inferredProvider = true;\n }\n }\n }\n\n if (!provider) {\n const exact = findRawExactModel(cliModel, availableModels);\n if (exact) {\n return { model: exact, warning: undefined, thinkingLevel: undefined, error: undefined };\n }\n }\n\n if (cliProvider && provider) {\n const prefix = `${provider}/`;\n if (cliModel.toLowerCase().startsWith(prefix.toLowerCase())) {\n pattern = cliModel.substring(prefix.length);\n }\n }\n\n const candidates = provider ? availableModels.filter((m) => m.provider === provider) : availableModels;\n const { model, thinkingLevel, warning } = parseModelPattern(pattern, candidates, {\n allowInvalidThinkingLevelFallback: false,\n });\n\n if (model) {\n return { model, thinkingLevel, warning, error: undefined };\n }\n\n if (inferredProvider) {\n const exact = findRawExactModel(cliModel, availableModels);\n if (exact) {\n return { model: exact, warning: undefined, thinkingLevel: undefined, error: undefined };\n }\n\n const fallback = parseModelPattern(cliModel, availableModels, {\n allowInvalidThinkingLevelFallback: false,\n });\n if (fallback.model) {\n return {\n model: fallback.model,\n thinkingLevel: fallback.thinkingLevel,\n warning: fallback.warning,\n error: undefined,\n };\n }\n }\n\n if (provider) {\n // Registered resolution above takes precedence, including model IDs whose final colon\n // segment happens to look like a thinking level. Only custom fallback splits it.\n const customPattern = splitCustomModelThinkingSuffix(pattern);\n const fallbackModel = buildFallbackModel(provider, customPattern.modelId, availableModels);\n if (fallbackModel) {\n const customModel =\n customPattern.thinkingLevel && customPattern.thinkingLevel !== \"off\"\n ? { ...fallbackModel, reasoning: true }\n : fallbackModel;\n const fallbackWarning = warning\n ? `${warning} Model \"${customPattern.modelId}\" not found for provider \"${provider}\". Using custom model id.`\n : `Model \"${customPattern.modelId}\" not found for provider \"${provider}\". Using custom model id.`;\n return {\n model: customModel,\n thinkingLevel: customPattern.thinkingLevel,\n warning: fallbackWarning,\n error: undefined,\n };\n }\n }\n\n const display = provider ? `${provider}/${pattern}` : cliModel;\n return {\n model: undefined,\n thinkingLevel: undefined,\n warning,\n error: `Model \"${display}\" not found. Use --list-models to see available models.`,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"model-resolver-cli.js","sourceRoot":"","sources":["../../src/core/model-resolver-cli.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Api, Model } from \"@earendil-works/pi-ai/compat\";\nimport { isValidThinkingLevel } from \"../cli/args.ts\";\nimport { buildFallbackModel, parseModelPattern } from \"./model-resolver-patterns.ts\";\nimport type { ResolveCliModelResult } from \"./model-resolver-types.ts\";\nimport type { ModelRuntime } from \"./model-runtime.ts\";\n\nfunction buildProviderMap(availableModels: Model<Api>[]): Map<string, string> {\n const providerMap = new Map<string, string>();\n for (const model of availableModels) {\n providerMap.set(model.provider.toLowerCase(), model.provider);\n }\n return providerMap;\n}\n\nfunction findRawExactModel(cliModel: string, availableModels: Model<Api>[]): Model<Api> | undefined {\n const lower = cliModel.toLowerCase();\n return availableModels.find(\n (m) => m.id.toLowerCase() === lower || `${m.provider}/${m.id}`.toLowerCase() === lower,\n );\n}\n\nfunction splitCustomModelThinkingSuffix(pattern: string): {\n modelId: string;\n thinkingLevel: ResolveCliModelResult[\"thinkingLevel\"];\n} {\n const lastColonIndex = pattern.lastIndexOf(\":\");\n if (lastColonIndex <= 0) return { modelId: pattern, thinkingLevel: undefined };\n\n const suffix = pattern.substring(lastColonIndex + 1);\n if (!isValidThinkingLevel(suffix)) return { modelId: pattern, thinkingLevel: undefined };\n\n return {\n modelId: pattern.substring(0, lastColonIndex),\n thinkingLevel: suffix,\n };\n}\n\n/**\n * Resolve a single model from CLI flags.\n *\n * Supports:\n * - --provider <provider> --model <pattern>\n * - --model <provider>/<pattern>\n * - Fuzzy matching (same rules as model scoping: exact id, then partial id/name)\n *\n * Note: This does not apply the thinking level by itself, but it may *parse* and\n * return a thinking level from \"<pattern>:<thinking>\" so the caller can apply it.\n */\nexport function resolveCliModel(options: {\n cliProvider?: string;\n cliModel?: string;\n modelRuntime: ModelRuntime;\n}): ResolveCliModelResult {\n const { cliProvider, cliModel, modelRuntime } = options;\n\n if (!cliModel) {\n return { model: undefined, warning: undefined, error: undefined };\n }\n\n const availableModels = [...modelRuntime.getModels()];\n if (availableModels.length === 0) {\n return {\n model: undefined,\n warning: undefined,\n error: \"No models available. Check your installation or add models to models.json.\",\n };\n }\n\n const providerMap = buildProviderMap(availableModels);\n\n // A registered raw ID may itself look like \"provider/model:thinking\" (for example,\n // a gateway-owned ID). Preserve that exact ID before provider inference consumes the suffix.\n const rawPattern = splitCustomModelThinkingSuffix(cliModel);\n if (!cliProvider && rawPattern.thinkingLevel !== undefined) {\n const exact = findRawExactModel(cliModel, availableModels);\n if (exact) {\n return { model: exact, warning: undefined, thinkingLevel: undefined, error: undefined };\n }\n }\n\n let provider = cliProvider ? providerMap.get(cliProvider.toLowerCase()) : undefined;\n if (cliProvider && !provider) {\n return {\n model: undefined,\n warning: undefined,\n error: `Unknown provider \"${cliProvider}\". Use --list-models to see available providers/models.`,\n };\n }\n\n let pattern = cliModel;\n let inferredProvider = false;\n\n if (!provider) {\n const slashIndex = cliModel.indexOf(\"/\");\n if (slashIndex !== -1) {\n const maybeProvider = cliModel.substring(0, slashIndex);\n const canonical = providerMap.get(maybeProvider.toLowerCase());\n if (canonical) {\n provider = canonical;\n pattern = cliModel.substring(slashIndex + 1);\n inferredProvider = true;\n }\n }\n }\n\n if (!provider) {\n const exact = findRawExactModel(cliModel, availableModels);\n if (exact) {\n return { model: exact, warning: undefined, thinkingLevel: undefined, error: undefined };\n }\n }\n\n if (cliProvider && provider) {\n const prefix = `${provider}/`;\n if (cliModel.toLowerCase().startsWith(prefix.toLowerCase())) {\n pattern = cliModel.substring(prefix.length);\n }\n }\n\n const candidates = provider ? availableModels.filter((m) => m.provider === provider) : availableModels;\n const { model, thinkingLevel, warning } = parseModelPattern(pattern, candidates, {\n allowInvalidThinkingLevelFallback: false,\n });\n\n if (model) {\n return { model, thinkingLevel, warning, error: undefined };\n }\n\n if (inferredProvider) {\n const exact = findRawExactModel(cliModel, availableModels);\n if (exact) {\n return { model: exact, warning: undefined, thinkingLevel: undefined, error: undefined };\n }\n\n const fallback = parseModelPattern(cliModel, availableModels, {\n allowInvalidThinkingLevelFallback: false,\n });\n if (fallback.model) {\n return {\n model: fallback.model,\n thinkingLevel: fallback.thinkingLevel,\n warning: fallback.warning,\n error: undefined,\n };\n }\n }\n\n if (provider) {\n // Registered resolution above takes precedence, including model IDs whose final colon\n // segment happens to look like a thinking level. Only custom fallback splits it.\n const customPattern = splitCustomModelThinkingSuffix(pattern);\n const fallbackModel = buildFallbackModel(provider, customPattern.modelId, availableModels);\n if (fallbackModel) {\n const customModel =\n customPattern.thinkingLevel && customPattern.thinkingLevel !== \"off\"\n ? { ...fallbackModel, reasoning: true }\n : fallbackModel;\n const fallbackWarning = warning\n ? `${warning} Model \"${customPattern.modelId}\" not found for provider \"${provider}\". Using custom model id.`\n : `Model \"${customPattern.modelId}\" not found for provider \"${provider}\". Using custom model id.`;\n return {\n model: customModel,\n thinkingLevel: customPattern.thinkingLevel,\n warning: fallbackWarning,\n error: undefined,\n };\n }\n }\n\n const display = provider ? `${provider}/${pattern}` : cliModel;\n return {\n model: undefined,\n thinkingLevel: undefined,\n warning,\n error: `Model \"${display}\" not found. Use --list-models to see available models.`,\n };\n}\n"]}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
|
|
2
2
|
import type { Api, Model } from "@earendil-works/pi-ai/compat";
|
|
3
|
-
import type {
|
|
3
|
+
import type { ModelRuntime } from "./model-runtime.ts";
|
|
4
4
|
import type { InitialModelResult, ScopedModel } from "./model-resolver-types.ts";
|
|
5
5
|
/**
|
|
6
6
|
* Resolve a model reference persisted in a session. Exact unauthenticated
|
|
7
7
|
* models are authoritative failures; only an absent id may be reconstructed
|
|
8
8
|
* from an authenticated model for the same dynamic/custom provider.
|
|
9
9
|
*/
|
|
10
|
-
export declare function resolveRestoredModelReference(provider: string, modelId: string,
|
|
10
|
+
export declare function resolveRestoredModelReference(provider: string, modelId: string, modelRuntime: ModelRuntime): Promise<Model<Api> | undefined>;
|
|
11
11
|
/**
|
|
12
12
|
* Find the initial model to use based on priority:
|
|
13
13
|
* 1. CLI args (provider + model)
|
|
@@ -24,12 +24,12 @@ export declare function findInitialModel(options: {
|
|
|
24
24
|
defaultProvider?: string;
|
|
25
25
|
defaultModelId?: string;
|
|
26
26
|
defaultThinkingLevel?: ThinkingLevel;
|
|
27
|
-
|
|
27
|
+
modelRuntime: ModelRuntime;
|
|
28
28
|
}): Promise<InitialModelResult>;
|
|
29
29
|
/**
|
|
30
30
|
* Restore model from session, with fallback to available models
|
|
31
31
|
*/
|
|
32
|
-
export declare function restoreModelFromSession(savedProvider: string, savedModelId: string, currentModel: Model<Api> | undefined, shouldPrintMessages: boolean,
|
|
32
|
+
export declare function restoreModelFromSession(savedProvider: string, savedModelId: string, currentModel: Model<Api> | undefined, shouldPrintMessages: boolean, modelRuntime: ModelRuntime): Promise<{
|
|
33
33
|
model: Model<Api> | undefined;
|
|
34
34
|
fallbackMessage: string | undefined;
|
|
35
35
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-resolver-initial.d.ts","sourceRoot":"","sources":["../../src/core/model-resolver-initial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"model-resolver-initial.d.ts","sourceRoot":"","sources":["../../src/core/model-resolver-initial.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAajF;;;;GAIG;AACH,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAKjC;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,aAAa,CAAC;IACrC,YAAY,EAAE,YAAY,CAAC;CAC5B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA2E9B;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,EACpC,mBAAmB,EAAE,OAAO,EAC5B,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC;IACT,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAC9B,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,CAAC,CAyCD"}
|
|
@@ -4,21 +4,21 @@ import { findPreferredAvailableModel } from "./model-resolver-defaults.js";
|
|
|
4
4
|
import { buildFallbackModel } from "./model-resolver-patterns.js";
|
|
5
5
|
import { resolveCliModel } from "./model-resolver-cli.js";
|
|
6
6
|
const CONFIGURED_DEFAULT_MODEL_UNAVAILABLE_MESSAGE = "Configured default model is unavailable or unsupported. Update defaultProvider/defaultModel or use /model.";
|
|
7
|
-
async function buildConfiguredProviderFallbackModel(provider, modelId,
|
|
8
|
-
return buildFallbackModel(provider, modelId, await
|
|
7
|
+
async function buildConfiguredProviderFallbackModel(provider, modelId, modelRuntime) {
|
|
8
|
+
return buildFallbackModel(provider, modelId, await [...modelRuntime.getAvailableSnapshot()]);
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* Resolve a model reference persisted in a session. Exact unauthenticated
|
|
12
12
|
* models are authoritative failures; only an absent id may be reconstructed
|
|
13
13
|
* from an authenticated model for the same dynamic/custom provider.
|
|
14
14
|
*/
|
|
15
|
-
export async function resolveRestoredModelReference(provider, modelId,
|
|
16
|
-
const found =
|
|
15
|
+
export async function resolveRestoredModelReference(provider, modelId, modelRuntime) {
|
|
16
|
+
const found = modelRuntime.getModel(provider, modelId);
|
|
17
17
|
if (found)
|
|
18
|
-
return
|
|
19
|
-
if (!
|
|
18
|
+
return modelRuntime.hasConfiguredAuth(found.provider) ? found : undefined;
|
|
19
|
+
if (!modelRuntime.canRestoreUnknownModel(provider))
|
|
20
20
|
return undefined;
|
|
21
|
-
return buildConfiguredProviderFallbackModel(provider, modelId,
|
|
21
|
+
return buildConfiguredProviderFallbackModel(provider, modelId, modelRuntime);
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
24
|
* Find the initial model to use based on priority:
|
|
@@ -29,14 +29,14 @@ export async function resolveRestoredModelReference(provider, modelId, modelRegi
|
|
|
29
29
|
* 5. First available model with valid API key
|
|
30
30
|
*/
|
|
31
31
|
export async function findInitialModel(options) {
|
|
32
|
-
const { cliProvider, cliModel, scopedModels, isContinuing, defaultProvider, defaultModelId, defaultThinkingLevel,
|
|
32
|
+
const { cliProvider, cliModel, scopedModels, isContinuing, defaultProvider, defaultModelId, defaultThinkingLevel, modelRuntime, } = options;
|
|
33
33
|
let model;
|
|
34
34
|
let thinkingLevel = DEFAULT_THINKING_LEVEL;
|
|
35
35
|
if (cliProvider && cliModel) {
|
|
36
36
|
const resolved = resolveCliModel({
|
|
37
37
|
cliProvider,
|
|
38
38
|
cliModel,
|
|
39
|
-
|
|
39
|
+
modelRuntime,
|
|
40
40
|
});
|
|
41
41
|
if (resolved.error) {
|
|
42
42
|
console.error(chalk.red(resolved.error));
|
|
@@ -58,15 +58,15 @@ export async function findInitialModel(options) {
|
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
if (defaultProvider && defaultModelId) {
|
|
61
|
-
const found =
|
|
62
|
-
if (found &&
|
|
61
|
+
const found = modelRuntime.getModel(defaultProvider, defaultModelId);
|
|
62
|
+
if (found && modelRuntime.hasConfiguredAuth(found.provider)) {
|
|
63
63
|
model = found;
|
|
64
64
|
if (defaultThinkingLevel) {
|
|
65
65
|
thinkingLevel = defaultThinkingLevel;
|
|
66
66
|
}
|
|
67
67
|
return { model, thinkingLevel, fallbackMessage: undefined };
|
|
68
68
|
}
|
|
69
|
-
if (!
|
|
69
|
+
if (!modelRuntime.getProvider(defaultProvider)) {
|
|
70
70
|
return {
|
|
71
71
|
model: undefined,
|
|
72
72
|
thinkingLevel: DEFAULT_THINKING_LEVEL,
|
|
@@ -75,7 +75,7 @@ export async function findInitialModel(options) {
|
|
|
75
75
|
};
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
const availableModels = await
|
|
78
|
+
const availableModels = await [...modelRuntime.getAvailableSnapshot()];
|
|
79
79
|
if (availableModels.length > 0) {
|
|
80
80
|
return {
|
|
81
81
|
model: findPreferredAvailableModel(availableModels),
|
|
@@ -92,9 +92,9 @@ export async function findInitialModel(options) {
|
|
|
92
92
|
/**
|
|
93
93
|
* Restore model from session, with fallback to available models
|
|
94
94
|
*/
|
|
95
|
-
export async function restoreModelFromSession(savedProvider, savedModelId, currentModel, shouldPrintMessages,
|
|
96
|
-
const exactRestoredModel =
|
|
97
|
-
const restoredModel = await resolveRestoredModelReference(savedProvider, savedModelId,
|
|
95
|
+
export async function restoreModelFromSession(savedProvider, savedModelId, currentModel, shouldPrintMessages, modelRuntime) {
|
|
96
|
+
const exactRestoredModel = modelRuntime.getModel(savedProvider, savedModelId);
|
|
97
|
+
const restoredModel = await resolveRestoredModelReference(savedProvider, savedModelId, modelRuntime);
|
|
98
98
|
if (restoredModel) {
|
|
99
99
|
if (shouldPrintMessages) {
|
|
100
100
|
console.log(chalk.dim(`Restored model: ${savedProvider}/${savedModelId}`));
|
|
@@ -114,7 +114,7 @@ export async function restoreModelFromSession(savedProvider, savedModelId, curre
|
|
|
114
114
|
fallbackMessage: `Could not restore model ${savedProvider}/${savedModelId} (${reason}). Using ${currentModel.provider}/${currentModel.id}.`,
|
|
115
115
|
};
|
|
116
116
|
}
|
|
117
|
-
const availableModels = await
|
|
117
|
+
const availableModels = await [...modelRuntime.getAvailableSnapshot()];
|
|
118
118
|
const fallbackModel = findPreferredAvailableModel(availableModels);
|
|
119
119
|
if (fallbackModel) {
|
|
120
120
|
if (shouldPrintMessages) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-resolver-initial.js","sourceRoot":"","sources":["../../src/core/model-resolver-initial.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { Api, Model } from \"@earendil-works/pi-ai/compat\";\nimport chalk from \"chalk\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.ts\";\nimport type { ModelRegistry } from \"./model-registry.ts\";\nimport { findPreferredAvailableModel } from \"./model-resolver-defaults.ts\";\nimport { buildFallbackModel } from \"./model-resolver-patterns.ts\";\nimport { resolveCliModel } from \"./model-resolver-cli.ts\";\nimport type { InitialModelResult, ScopedModel } from \"./model-resolver-types.ts\";\n\nconst CONFIGURED_DEFAULT_MODEL_UNAVAILABLE_MESSAGE =\n \"Configured default model is unavailable or unsupported. Update defaultProvider/defaultModel or use /model.\";\n\nasync function buildConfiguredProviderFallbackModel(\n provider: string,\n modelId: string,\n modelRegistry: ModelRegistry,\n): Promise<Model<Api> | undefined> {\n return buildFallbackModel(provider, modelId, await modelRegistry.getAvailable());\n}\n\n/**\n * Resolve a model reference persisted in a session. Exact unauthenticated\n * models are authoritative failures; only an absent id may be reconstructed\n * from an authenticated model for the same dynamic/custom provider.\n */\nexport async function resolveRestoredModelReference(\n provider: string,\n modelId: string,\n modelRegistry: ModelRegistry,\n): Promise<Model<Api> | undefined> {\n const found = modelRegistry.find(provider, modelId);\n if (found) return modelRegistry.hasConfiguredAuth(found) ? found : undefined;\n if (!modelRegistry.canRestoreUnknownModel(provider)) return undefined;\n return buildConfiguredProviderFallbackModel(provider, modelId, modelRegistry);\n}\n\n/**\n * Find the initial model to use based on priority:\n * 1. CLI args (provider + model)\n * 2. First model from scoped models (if not continuing/resuming)\n * 3. Restored from session (if continuing/resuming)\n * 4. Saved default from settings\n * 5. First available model with valid API key\n */\nexport async function findInitialModel(options: {\n cliProvider?: string;\n cliModel?: string;\n scopedModels: ScopedModel[];\n isContinuing: boolean;\n defaultProvider?: string;\n defaultModelId?: string;\n defaultThinkingLevel?: ThinkingLevel;\n modelRegistry: ModelRegistry;\n}): Promise<InitialModelResult> {\n const {\n cliProvider,\n cliModel,\n scopedModels,\n isContinuing,\n defaultProvider,\n defaultModelId,\n defaultThinkingLevel,\n modelRegistry,\n } = options;\n\n let model: Model<Api> | undefined;\n let thinkingLevel: ThinkingLevel = DEFAULT_THINKING_LEVEL;\n\n if (cliProvider && cliModel) {\n const resolved = resolveCliModel({\n cliProvider,\n cliModel,\n modelRegistry,\n });\n if (resolved.error) {\n console.error(chalk.red(resolved.error));\n process.exit(1);\n }\n if (resolved.model) {\n return {\n model: resolved.model,\n thinkingLevel: DEFAULT_THINKING_LEVEL,\n fallbackMessage: undefined,\n };\n }\n }\n\n if (scopedModels.length > 0 && !isContinuing) {\n return {\n model: scopedModels[0].model,\n thinkingLevel: scopedModels[0].thinkingLevel ?? defaultThinkingLevel ?? DEFAULT_THINKING_LEVEL,\n fallbackMessage: undefined,\n };\n }\n\n if (defaultProvider && defaultModelId) {\n const found = modelRegistry.find(defaultProvider, defaultModelId);\n if (found && modelRegistry.hasConfiguredAuth(found)) {\n model = found;\n if (defaultThinkingLevel) {\n thinkingLevel = defaultThinkingLevel;\n }\n return { model, thinkingLevel, fallbackMessage: undefined };\n }\n if (!modelRegistry.hasProvider(defaultProvider)) {\n return {\n model: undefined,\n thinkingLevel: DEFAULT_THINKING_LEVEL,\n fallbackMessage: CONFIGURED_DEFAULT_MODEL_UNAVAILABLE_MESSAGE,\n fallbackReason: \"configured-provider-unsupported\",\n };\n }\n }\n\n const availableModels = await modelRegistry.getAvailable();\n if (availableModels.length > 0) {\n return {\n model: findPreferredAvailableModel(availableModels),\n thinkingLevel: DEFAULT_THINKING_LEVEL,\n fallbackMessage: undefined,\n };\n }\n\n return {\n model: undefined,\n thinkingLevel: DEFAULT_THINKING_LEVEL,\n fallbackMessage: undefined,\n };\n}\n\n/**\n * Restore model from session, with fallback to available models\n */\nexport async function restoreModelFromSession(\n savedProvider: string,\n savedModelId: string,\n currentModel: Model<Api> | undefined,\n shouldPrintMessages: boolean,\n modelRegistry: ModelRegistry,\n): Promise<{\n model: Model<Api> | undefined;\n fallbackMessage: string | undefined;\n}> {\n const exactRestoredModel = modelRegistry.find(savedProvider, savedModelId);\n const restoredModel = await resolveRestoredModelReference(savedProvider, savedModelId, modelRegistry);\n\n if (restoredModel) {\n if (shouldPrintMessages) {\n console.log(chalk.dim(`Restored model: ${savedProvider}/${savedModelId}`));\n }\n return { model: restoredModel, fallbackMessage: undefined };\n }\n\n const reason = !exactRestoredModel ? \"model no longer exists\" : \"no auth configured\";\n\n if (shouldPrintMessages) {\n console.error(chalk.yellow(`Warning: Could not restore model ${savedProvider}/${savedModelId} (${reason}).`));\n }\n\n if (currentModel) {\n if (shouldPrintMessages) {\n console.log(chalk.dim(`Falling back to: ${currentModel.provider}/${currentModel.id}`));\n }\n return {\n model: currentModel,\n fallbackMessage: `Could not restore model ${savedProvider}/${savedModelId} (${reason}). Using ${currentModel.provider}/${currentModel.id}.`,\n };\n }\n\n const availableModels = await modelRegistry.getAvailable();\n const fallbackModel = findPreferredAvailableModel(availableModels);\n if (fallbackModel) {\n if (shouldPrintMessages) {\n console.log(chalk.dim(`Falling back to: ${fallbackModel.provider}/${fallbackModel.id}`));\n }\n\n return {\n model: fallbackModel,\n fallbackMessage: `Could not restore model ${savedProvider}/${savedModelId} (${reason}). Using ${fallbackModel.provider}/${fallbackModel.id}.`,\n };\n }\n\n return { model: undefined, fallbackMessage: undefined };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"model-resolver-initial.js","sourceRoot":"","sources":["../../src/core/model-resolver-initial.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { Api, Model } from \"@earendil-works/pi-ai/compat\";\nimport chalk from \"chalk\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.ts\";\nimport type { ModelRuntime } from \"./model-runtime.ts\";\nimport { findPreferredAvailableModel } from \"./model-resolver-defaults.ts\";\nimport { buildFallbackModel } from \"./model-resolver-patterns.ts\";\nimport { resolveCliModel } from \"./model-resolver-cli.ts\";\nimport type { InitialModelResult, ScopedModel } from \"./model-resolver-types.ts\";\n\nconst CONFIGURED_DEFAULT_MODEL_UNAVAILABLE_MESSAGE =\n \"Configured default model is unavailable or unsupported. Update defaultProvider/defaultModel or use /model.\";\n\nasync function buildConfiguredProviderFallbackModel(\n provider: string,\n modelId: string,\n modelRuntime: ModelRuntime,\n): Promise<Model<Api> | undefined> {\n return buildFallbackModel(provider, modelId, await [...modelRuntime.getAvailableSnapshot()]);\n}\n\n/**\n * Resolve a model reference persisted in a session. Exact unauthenticated\n * models are authoritative failures; only an absent id may be reconstructed\n * from an authenticated model for the same dynamic/custom provider.\n */\nexport async function resolveRestoredModelReference(\n provider: string,\n modelId: string,\n modelRuntime: ModelRuntime,\n): Promise<Model<Api> | undefined> {\n const found = modelRuntime.getModel(provider, modelId);\n if (found) return modelRuntime.hasConfiguredAuth(found.provider) ? found : undefined;\n if (!modelRuntime.canRestoreUnknownModel(provider)) return undefined;\n return buildConfiguredProviderFallbackModel(provider, modelId, modelRuntime);\n}\n\n/**\n * Find the initial model to use based on priority:\n * 1. CLI args (provider + model)\n * 2. First model from scoped models (if not continuing/resuming)\n * 3. Restored from session (if continuing/resuming)\n * 4. Saved default from settings\n * 5. First available model with valid API key\n */\nexport async function findInitialModel(options: {\n cliProvider?: string;\n cliModel?: string;\n scopedModels: ScopedModel[];\n isContinuing: boolean;\n defaultProvider?: string;\n defaultModelId?: string;\n defaultThinkingLevel?: ThinkingLevel;\n modelRuntime: ModelRuntime;\n}): Promise<InitialModelResult> {\n const {\n cliProvider,\n cliModel,\n scopedModels,\n isContinuing,\n defaultProvider,\n defaultModelId,\n defaultThinkingLevel,\n modelRuntime,\n } = options;\n\n let model: Model<Api> | undefined;\n let thinkingLevel: ThinkingLevel = DEFAULT_THINKING_LEVEL;\n\n if (cliProvider && cliModel) {\n const resolved = resolveCliModel({\n cliProvider,\n cliModel,\n modelRuntime,\n });\n if (resolved.error) {\n console.error(chalk.red(resolved.error));\n process.exit(1);\n }\n if (resolved.model) {\n return {\n model: resolved.model,\n thinkingLevel: DEFAULT_THINKING_LEVEL,\n fallbackMessage: undefined,\n };\n }\n }\n\n if (scopedModels.length > 0 && !isContinuing) {\n return {\n model: scopedModels[0].model,\n thinkingLevel: scopedModels[0].thinkingLevel ?? defaultThinkingLevel ?? DEFAULT_THINKING_LEVEL,\n fallbackMessage: undefined,\n };\n }\n\n if (defaultProvider && defaultModelId) {\n const found = modelRuntime.getModel(defaultProvider, defaultModelId);\n if (found && modelRuntime.hasConfiguredAuth(found.provider)) {\n model = found;\n if (defaultThinkingLevel) {\n thinkingLevel = defaultThinkingLevel;\n }\n return { model, thinkingLevel, fallbackMessage: undefined };\n }\n if (!modelRuntime.getProvider(defaultProvider)) {\n return {\n model: undefined,\n thinkingLevel: DEFAULT_THINKING_LEVEL,\n fallbackMessage: CONFIGURED_DEFAULT_MODEL_UNAVAILABLE_MESSAGE,\n fallbackReason: \"configured-provider-unsupported\",\n };\n }\n }\n\n const availableModels = await [...modelRuntime.getAvailableSnapshot()];\n if (availableModels.length > 0) {\n return {\n model: findPreferredAvailableModel(availableModels),\n thinkingLevel: DEFAULT_THINKING_LEVEL,\n fallbackMessage: undefined,\n };\n }\n\n return {\n model: undefined,\n thinkingLevel: DEFAULT_THINKING_LEVEL,\n fallbackMessage: undefined,\n };\n}\n\n/**\n * Restore model from session, with fallback to available models\n */\nexport async function restoreModelFromSession(\n savedProvider: string,\n savedModelId: string,\n currentModel: Model<Api> | undefined,\n shouldPrintMessages: boolean,\n modelRuntime: ModelRuntime,\n): Promise<{\n model: Model<Api> | undefined;\n fallbackMessage: string | undefined;\n}> {\n const exactRestoredModel = modelRuntime.getModel(savedProvider, savedModelId);\n const restoredModel = await resolveRestoredModelReference(savedProvider, savedModelId, modelRuntime);\n\n if (restoredModel) {\n if (shouldPrintMessages) {\n console.log(chalk.dim(`Restored model: ${savedProvider}/${savedModelId}`));\n }\n return { model: restoredModel, fallbackMessage: undefined };\n }\n\n const reason = !exactRestoredModel ? \"model no longer exists\" : \"no auth configured\";\n\n if (shouldPrintMessages) {\n console.error(chalk.yellow(`Warning: Could not restore model ${savedProvider}/${savedModelId} (${reason}).`));\n }\n\n if (currentModel) {\n if (shouldPrintMessages) {\n console.log(chalk.dim(`Falling back to: ${currentModel.provider}/${currentModel.id}`));\n }\n return {\n model: currentModel,\n fallbackMessage: `Could not restore model ${savedProvider}/${savedModelId} (${reason}). Using ${currentModel.provider}/${currentModel.id}.`,\n };\n }\n\n const availableModels = await [...modelRuntime.getAvailableSnapshot()];\n const fallbackModel = findPreferredAvailableModel(availableModels);\n if (fallbackModel) {\n if (shouldPrintMessages) {\n console.log(chalk.dim(`Falling back to: ${fallbackModel.provider}/${fallbackModel.id}`));\n }\n\n return {\n model: fallbackModel,\n fallbackMessage: `Could not restore model ${savedProvider}/${savedModelId} (${reason}). Using ${fallbackModel.provider}/${fallbackModel.id}.`,\n };\n }\n\n return { model: undefined, fallbackMessage: undefined };\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ModelRuntime } from "./model-runtime.ts";
|
|
2
2
|
import type { ScopedModel } from "./model-resolver-types.ts";
|
|
3
3
|
export interface ModelScopeDiagnostic {
|
|
4
4
|
type: "warning";
|
|
@@ -21,6 +21,6 @@ export interface ResolveModelScopeResult {
|
|
|
21
21
|
* The algorithm tries to match the full pattern first, then progressively
|
|
22
22
|
* strips colon-suffixes to find a match.
|
|
23
23
|
*/
|
|
24
|
-
export declare function resolveModelScopeWithDiagnostics(patterns: string[],
|
|
25
|
-
export declare function resolveModelScope(patterns: string[],
|
|
24
|
+
export declare function resolveModelScopeWithDiagnostics(patterns: string[], modelRuntime: ModelRuntime): Promise<ResolveModelScopeResult>;
|
|
25
|
+
export declare function resolveModelScope(patterns: string[], modelRuntime: ModelRuntime): Promise<ScopedModel[]>;
|
|
26
26
|
//# sourceMappingURL=model-resolver-scope.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-resolver-scope.d.ts","sourceRoot":"","sources":["../../src/core/model-resolver-scope.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"model-resolver-scope.d.ts","sourceRoot":"","sources":["../../src/core/model-resolver-scope.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,UAAU,GAAG,wBAAwB,CAAC;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAoBD;;;;;;;;;;GAUG;AACH,wBAAsB,gCAAgC,CACpD,QAAQ,EAAE,MAAM,EAAE,EAClB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,uBAAuB,CAAC,CAyDlC;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAM9G"}
|
|
@@ -28,8 +28,8 @@ function parseGlobThinkingLevel(pattern) {
|
|
|
28
28
|
* The algorithm tries to match the full pattern first, then progressively
|
|
29
29
|
* strips colon-suffixes to find a match.
|
|
30
30
|
*/
|
|
31
|
-
export async function resolveModelScopeWithDiagnostics(patterns,
|
|
32
|
-
const availableModels = await
|
|
31
|
+
export async function resolveModelScopeWithDiagnostics(patterns, modelRuntime) {
|
|
32
|
+
const availableModels = await [...modelRuntime.getAvailableSnapshot()];
|
|
33
33
|
const scopedModels = [];
|
|
34
34
|
const diagnostics = [];
|
|
35
35
|
for (const pattern of patterns) {
|
|
@@ -78,8 +78,8 @@ export async function resolveModelScopeWithDiagnostics(patterns, modelRegistry)
|
|
|
78
78
|
}
|
|
79
79
|
return { scopedModels, diagnostics };
|
|
80
80
|
}
|
|
81
|
-
export async function resolveModelScope(patterns,
|
|
82
|
-
const { scopedModels, diagnostics } = await resolveModelScopeWithDiagnostics(patterns,
|
|
81
|
+
export async function resolveModelScope(patterns, modelRuntime) {
|
|
82
|
+
const { scopedModels, diagnostics } = await resolveModelScopeWithDiagnostics(patterns, modelRuntime);
|
|
83
83
|
for (const diagnostic of diagnostics) {
|
|
84
84
|
console.warn(chalk.yellow(`Warning: ${diagnostic.message}`));
|
|
85
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-resolver-scope.js","sourceRoot":"","sources":["../../src/core/model-resolver-scope.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAe/F,SAAS,iBAAiB,CAAC,OAAe;IACxC,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAe;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC/C,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;AAChF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,QAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"model-resolver-scope.js","sourceRoot":"","sources":["../../src/core/model-resolver-scope.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport { modelsAreEqual } from \"@earendil-works/pi-ai/compat\";\nimport chalk from \"chalk\";\nimport { minimatch } from \"minimatch\";\nimport { isValidThinkingLevel } from \"../cli/args.ts\";\nimport type { ModelRuntime } from \"./model-runtime.ts\";\nimport { findExactModelReferenceMatch, parseModelPattern } from \"./model-resolver-patterns.ts\";\nimport type { ScopedModel } from \"./model-resolver-types.ts\";\n\nexport interface ModelScopeDiagnostic {\n type: \"warning\";\n code: \"no-match\" | \"invalid-thinking-level\";\n message: string;\n pattern: string;\n}\n\nexport interface ResolveModelScopeResult {\n scopedModels: ScopedModel[];\n diagnostics: ModelScopeDiagnostic[];\n}\n\nfunction hasGlobCharacters(pattern: string): boolean {\n return pattern.includes(\"*\") || pattern.includes(\"?\") || pattern.includes(\"[\");\n}\n\nfunction parseGlobThinkingLevel(pattern: string): { globPattern: string; thinkingLevel?: ThinkingLevel } {\n const colonIdx = pattern.lastIndexOf(\":\");\n if (colonIdx === -1) {\n return { globPattern: pattern };\n }\n\n const suffix = pattern.substring(colonIdx + 1);\n if (!isValidThinkingLevel(suffix)) {\n return { globPattern: pattern };\n }\n\n return { globPattern: pattern.substring(0, colonIdx), thinkingLevel: suffix };\n}\n\n/**\n * Resolve model patterns to actual Model objects with optional thinking levels\n * Format: \"pattern:level\" where :level is optional\n * For each pattern, finds all matching models and picks the best version:\n * 1. Prefer alias (e.g., claude-sonnet-4-5) over dated versions (claude-sonnet-4-5-20250929)\n * 2. If no alias, pick the latest dated version\n *\n * Supports models with colons in their IDs (e.g., OpenRouter's model:exacto).\n * The algorithm tries to match the full pattern first, then progressively\n * strips colon-suffixes to find a match.\n */\nexport async function resolveModelScopeWithDiagnostics(\n patterns: string[],\n modelRuntime: ModelRuntime,\n): Promise<ResolveModelScopeResult> {\n const availableModels = await [...modelRuntime.getAvailableSnapshot()];\n const scopedModels: ScopedModel[] = [];\n const diagnostics: ModelScopeDiagnostic[] = [];\n for (const pattern of patterns) {\n const completeExactMatch = findExactModelReferenceMatch(pattern, availableModels);\n if (completeExactMatch) {\n if (!scopedModels.find((sm) => modelsAreEqual(sm.model, completeExactMatch))) {\n scopedModels.push({ model: completeExactMatch, thinkingLevel: undefined });\n }\n continue;\n }\n\n if (hasGlobCharacters(pattern)) {\n const { globPattern, thinkingLevel } = parseGlobThinkingLevel(pattern);\n const exactMatch = findExactModelReferenceMatch(globPattern, availableModels);\n if (exactMatch) {\n if (!scopedModels.find((sm) => modelsAreEqual(sm.model, exactMatch))) {\n scopedModels.push({ model: exactMatch, thinkingLevel });\n }\n continue;\n }\n const matchingModels = availableModels.filter((m) => {\n const fullId = `${m.provider}/${m.id}`;\n return minimatch(fullId, globPattern, { nocase: true }) || minimatch(m.id, globPattern, { nocase: true });\n });\n\n if (matchingModels.length === 0) {\n diagnostics.push({ type: \"warning\", code: \"no-match\", message: `No models match pattern \"${pattern}\"`, pattern });\n continue;\n }\n\n for (const model of matchingModels) {\n if (!scopedModels.find((sm) => modelsAreEqual(sm.model, model))) {\n scopedModels.push({ model, thinkingLevel });\n }\n }\n continue;\n }\n\n const { model, thinkingLevel, warning } = parseModelPattern(pattern, availableModels);\n\n if (warning) {\n diagnostics.push({ type: \"warning\", code: \"invalid-thinking-level\", message: warning, pattern });\n }\n\n if (!model) {\n diagnostics.push({ type: \"warning\", code: \"no-match\", message: `No models match pattern \"${pattern}\"`, pattern });\n continue;\n }\n\n if (!scopedModels.find((sm) => modelsAreEqual(sm.model, model))) {\n scopedModels.push({ model, thinkingLevel });\n }\n }\n\n return { scopedModels, diagnostics };\n}\n\nexport async function resolveModelScope(patterns: string[], modelRuntime: ModelRuntime): Promise<ScopedModel[]> {\n const { scopedModels, diagnostics } = await resolveModelScopeWithDiagnostics(patterns, modelRuntime);\n for (const diagnostic of diagnostics) {\n console.warn(chalk.yellow(`Warning: ${diagnostic.message}`));\n }\n return scopedModels;\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Api, AuthResult, Model } from "@earendil-works/pi-ai";
|
|
2
|
+
import type { ModelConfig } from "./model-config.ts";
|
|
3
|
+
import type { ModelRuntimeAuthOverrides } from "./model-runtime-types.ts";
|
|
4
|
+
import type { ProviderConfigInput } from "./provider-composer.ts";
|
|
5
|
+
/** Apply models.json and extension headers after pi-ai resolves provider credentials. */
|
|
6
|
+
export declare function mergeConfiguredAuthHeaders(resolution: AuthResult, model: Model<Api>, config: ModelConfig, extension: ProviderConfigInput | undefined, overrides: ModelRuntimeAuthOverrides): AuthResult;
|
|
7
|
+
//# sourceMappingURL=model-runtime-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-runtime-auth.d.ts","sourceRoot":"","sources":["../../src/core/model-runtime-auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAIlE,yFAAyF;AACzF,wBAAgB,0BAA0B,CACzC,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,mBAAmB,GAAG,SAAS,EAC1C,SAAS,EAAE,yBAAyB,GAClC,UAAU,CAcZ"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { resolveConfiguredModelHeaders } from "./provider-composer.js";
|
|
2
|
+
import { mergeHeaders } from "./model-runtime-streaming.js";
|
|
3
|
+
/** Apply models.json and extension headers after pi-ai resolves provider credentials. */
|
|
4
|
+
export function mergeConfiguredAuthHeaders(resolution, model, config, extension, overrides) {
|
|
5
|
+
const configuredHeaders = resolveConfiguredModelHeaders(model, config.getProvider(model.provider), extension, { ...(resolution.env ?? {}), ...(overrides.env ?? {}) });
|
|
6
|
+
return {
|
|
7
|
+
...resolution,
|
|
8
|
+
auth: {
|
|
9
|
+
...resolution.auth,
|
|
10
|
+
headers: mergeHeaders(resolution.auth.headers, configuredHeaders),
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=model-runtime-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-runtime-auth.js","sourceRoot":"","sources":["../../src/core/model-runtime-auth.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,yFAAyF;AACzF,MAAM,UAAU,0BAA0B,CACzC,UAAsB,EACtB,KAAiB,EACjB,MAAmB,EACnB,SAA0C,EAC1C,SAAoC;IAEpC,MAAM,iBAAiB,GAAG,6BAA6B,CACtD,KAAK,EACL,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,EAClC,SAAS,EACT,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CACvD,CAAC;IACF,OAAO;QACN,GAAG,UAAU;QACb,IAAI,EAAE;YACL,GAAG,UAAU,CAAC,IAAI;YAClB,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;SACjE;KACD,CAAC;AACH,CAAC","sourcesContent":["import type { Api, AuthResult, Model } from \"@earendil-works/pi-ai\";\nimport type { ModelConfig } from \"./model-config.ts\";\nimport type { ModelRuntimeAuthOverrides } from \"./model-runtime-types.ts\";\nimport type { ProviderConfigInput } from \"./provider-composer.ts\";\nimport { resolveConfiguredModelHeaders } from \"./provider-composer.ts\";\nimport { mergeHeaders } from \"./model-runtime-streaming.ts\";\n\n/** Apply models.json and extension headers after pi-ai resolves provider credentials. */\nexport function mergeConfiguredAuthHeaders(\n\tresolution: AuthResult,\n\tmodel: Model<Api>,\n\tconfig: ModelConfig,\n\textension: ProviderConfigInput | undefined,\n\toverrides: ModelRuntimeAuthOverrides,\n): AuthResult {\n\tconst configuredHeaders = resolveConfiguredModelHeaders(\n\t\tmodel,\n\t\tconfig.getProvider(model.provider),\n\t\textension,\n\t\t{ ...(resolution.env ?? {}), ...(overrides.env ?? {}) },\n\t);\n\treturn {\n\t\t...resolution,\n\t\tauth: {\n\t\t\t...resolution.auth,\n\t\t\theaders: mergeHeaders(resolution.auth.headers, configuredHeaders),\n\t\t},\n\t};\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Provider } from "@earendil-works/pi-ai";
|
|
2
|
+
import { type CopilotRoutingEnv } from "./copilot-env-routing.ts";
|
|
3
|
+
import type { ModelConfig } from "./model-config.ts";
|
|
4
|
+
/** Rebuild the builtin layer, including configured Radius gateways. */
|
|
5
|
+
export declare function configureBuiltinProviders(target: Map<string, Provider>, defaults: ReadonlyMap<string, Provider>, config: ModelConfig, env?: CopilotRoutingEnv): void;
|
|
6
|
+
//# sourceMappingURL=model-runtime-providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-runtime-providers.d.ts","sourceRoot":"","sources":["../../src/core/model-runtime-providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAAE,KAAK,iBAAiB,EAAyB,MAAM,0BAA0B,CAAC;AACzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,uEAAuE;AACvE,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EAC7B,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,EACvC,MAAM,EAAE,WAAW,EACnB,GAAG,GAAE,iBAA+B,GAClC,IAAI,CAmBN"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as builtinProviderCatalog from "@earendil-works/pi-ai/providers/all";
|
|
2
|
+
import { withCopilotEnvBaseUrl } from "./copilot-env-routing.js";
|
|
3
|
+
/** Rebuild the builtin layer, including configured Radius gateways. */
|
|
4
|
+
export function configureBuiltinProviders(target, defaults, config, env = process.env) {
|
|
5
|
+
target.clear();
|
|
6
|
+
// Copilot env-token auth needs a routed host; models.json overrides still win
|
|
7
|
+
// because they are composed on top of this builtin layer.
|
|
8
|
+
for (const [providerId, provider] of defaults) {
|
|
9
|
+
target.set(providerId, withCopilotEnvBaseUrl(provider, env));
|
|
10
|
+
}
|
|
11
|
+
for (const providerId of config.getProviderIds()) {
|
|
12
|
+
const providerConfig = config.getProvider(providerId);
|
|
13
|
+
if (providerConfig?.oauth !== "radius" || !providerConfig.baseUrl)
|
|
14
|
+
continue;
|
|
15
|
+
target.set(providerId, builtinProviderCatalog.radiusProvider({
|
|
16
|
+
id: providerId,
|
|
17
|
+
name: providerConfig.name ?? providerId,
|
|
18
|
+
gateway: providerConfig.baseUrl.replace(/\/v1\/?$/u, ""),
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=model-runtime-providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-runtime-providers.js","sourceRoot":"","sources":["../../src/core/model-runtime-providers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,sBAAsB,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAA0B,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGzF,uEAAuE;AACvE,MAAM,UAAU,yBAAyB,CACxC,MAA6B,EAC7B,QAAuC,EACvC,MAAmB,EACnB,GAAG,GAAsB,OAAO,CAAC,GAAG;IAEpC,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,8EAA8E;IAC9E,0DAA0D;IAC1D,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,qBAAqB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;QAClD,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,cAAc,EAAE,KAAK,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,OAAO;YAAE,SAAS;QAC5E,MAAM,CAAC,GAAG,CACT,UAAU,EACV,sBAAsB,CAAC,cAAc,CAAC;YACrC,EAAE,EAAE,UAAU;YACd,IAAI,EAAE,cAAc,CAAC,IAAI,IAAI,UAAU;YACvC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SACxD,CAAC,CACF,CAAC;IACH,CAAC;AACF,CAAC","sourcesContent":["import type { Provider } from \"@earendil-works/pi-ai\";\nimport * as builtinProviderCatalog from \"@earendil-works/pi-ai/providers/all\";\nimport { type CopilotRoutingEnv, withCopilotEnvBaseUrl } from \"./copilot-env-routing.ts\";\nimport type { ModelConfig } from \"./model-config.ts\";\n\n/** Rebuild the builtin layer, including configured Radius gateways. */\nexport function configureBuiltinProviders(\n\ttarget: Map<string, Provider>,\n\tdefaults: ReadonlyMap<string, Provider>,\n\tconfig: ModelConfig,\n\tenv: CopilotRoutingEnv = process.env,\n): void {\n\ttarget.clear();\n\t// Copilot env-token auth needs a routed host; models.json overrides still win\n\t// because they are composed on top of this builtin layer.\n\tfor (const [providerId, provider] of defaults) {\n\t\ttarget.set(providerId, withCopilotEnvBaseUrl(provider, env));\n\t}\n\tfor (const providerId of config.getProviderIds()) {\n\t\tconst providerConfig = config.getProvider(providerId);\n\t\tif (providerConfig?.oauth !== \"radius\" || !providerConfig.baseUrl) continue;\n\t\ttarget.set(\n\t\t\tproviderId,\n\t\t\tbuiltinProviderCatalog.radiusProvider({\n\t\t\t\tid: providerId,\n\t\t\t\tname: providerConfig.name ?? providerId,\n\t\t\t\tgateway: providerConfig.baseUrl.replace(/\\/v1\\/?$/u, \"\"),\n\t\t\t}),\n\t\t);\n\t}\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Provider } from "@earendil-works/pi-ai";
|
|
2
|
+
import type { ModelsJsonProvider } from "./model-config.ts";
|
|
3
|
+
import type { ProviderConfigInput } from "./provider-composer.ts";
|
|
4
|
+
/** Whether an authenticated provider may reconstruct an absent saved model ID. */
|
|
5
|
+
export declare function canRestoreUnknownModel(providerId: string, builtin: Provider | undefined, modelsConfig: ModelsJsonProvider | undefined, extension: ProviderConfigInput | undefined, nativeExtension: Provider | undefined): boolean;
|
|
6
|
+
//# sourceMappingURL=model-runtime-restoration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-runtime-restoration.d.ts","sourceRoot":"","sources":["../../src/core/model-runtime-restoration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAmBlE,kFAAkF;AAClF,wBAAgB,sBAAsB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,QAAQ,GAAG,SAAS,EAC7B,YAAY,EAAE,kBAAkB,GAAG,SAAS,EAC5C,SAAS,EAAE,mBAAmB,GAAG,SAAS,EAC1C,eAAe,EAAE,QAAQ,GAAG,SAAS,GACnC,OAAO,CAMT"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const REMOTE_CATALOG_PROVIDERS = new Set(["github-copilot", "openrouter", "vercel-ai-gateway"]);
|
|
2
|
+
const OPENAI_COMPATIBLE_APIS = new Set(["openai-completions", "openai-responses"]);
|
|
3
|
+
function hasOpenAICompatibleModel(models, defaultApi) {
|
|
4
|
+
return models?.some((model) => {
|
|
5
|
+
const api = model.api ?? defaultApi;
|
|
6
|
+
return api !== undefined && OPENAI_COMPATIBLE_APIS.has(api);
|
|
7
|
+
}) === true;
|
|
8
|
+
}
|
|
9
|
+
/** Whether an authenticated provider may reconstruct an absent saved model ID. */
|
|
10
|
+
export function canRestoreUnknownModel(providerId, builtin, modelsConfig, extension, nativeExtension) {
|
|
11
|
+
if (REMOTE_CATALOG_PROVIDERS.has(providerId))
|
|
12
|
+
return true;
|
|
13
|
+
if (builtin !== undefined)
|
|
14
|
+
return false;
|
|
15
|
+
if (hasOpenAICompatibleModel(modelsConfig?.models, modelsConfig?.api))
|
|
16
|
+
return true;
|
|
17
|
+
if (hasOpenAICompatibleModel(extension?.models, extension?.api))
|
|
18
|
+
return true;
|
|
19
|
+
return hasOpenAICompatibleModel(nativeExtension?.getModels(), undefined);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=model-runtime-restoration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-runtime-restoration.js","sourceRoot":"","sources":["../../src/core/model-runtime-restoration.ts"],"names":[],"mappings":"AAIA,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAChG,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAM,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC,CAAC;AAMxF,SAAS,wBAAwB,CAChC,MAA8C,EAC9C,UAA2B;IAE3B,OAAO,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,UAAU,CAAC;QACpC,OAAO,GAAG,KAAK,SAAS,IAAI,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC,CAAC,KAAK,IAAI,CAAC;AACb,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,sBAAsB,CACrC,UAAkB,EAClB,OAA6B,EAC7B,YAA4C,EAC5C,SAA0C,EAC1C,eAAqC;IAErC,IAAI,wBAAwB,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACnF,IAAI,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,OAAO,wBAAwB,CAAC,eAAe,EAAE,SAAS,EAAE,EAAE,SAAS,CAAC,CAAC;AAC1E,CAAC","sourcesContent":["import type { Api, Provider } from \"@earendil-works/pi-ai\";\nimport type { ModelsJsonProvider } from \"./model-config.ts\";\nimport type { ProviderConfigInput } from \"./provider-composer.ts\";\n\nconst REMOTE_CATALOG_PROVIDERS = new Set([\"github-copilot\", \"openrouter\", \"vercel-ai-gateway\"]);\nconst OPENAI_COMPATIBLE_APIS = new Set<Api>([\"openai-completions\", \"openai-responses\"]);\n\ntype ConfiguredModel = {\n\tapi?: Api;\n};\n\nfunction hasOpenAICompatibleModel(\n\tmodels: readonly ConfiguredModel[] | undefined,\n\tdefaultApi: Api | undefined,\n): boolean {\n\treturn models?.some((model) => {\n\t\tconst api = model.api ?? defaultApi;\n\t\treturn api !== undefined && OPENAI_COMPATIBLE_APIS.has(api);\n\t}) === true;\n}\n\n/** Whether an authenticated provider may reconstruct an absent saved model ID. */\nexport function canRestoreUnknownModel(\n\tproviderId: string,\n\tbuiltin: Provider | undefined,\n\tmodelsConfig: ModelsJsonProvider | undefined,\n\textension: ProviderConfigInput | undefined,\n\tnativeExtension: Provider | undefined,\n): boolean {\n\tif (REMOTE_CATALOG_PROVIDERS.has(providerId)) return true;\n\tif (builtin !== undefined) return false;\n\tif (hasOpenAICompatibleModel(modelsConfig?.models, modelsConfig?.api)) return true;\n\tif (hasOpenAICompatibleModel(extension?.models, extension?.api)) return true;\n\treturn hasOpenAICompatibleModel(nativeExtension?.getModels(), undefined);\n}\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Api, AuthCheck, CredentialInfo, Model } from "@earendil-works/pi-ai";
|
|
2
|
+
import type { AuthStatus } from "./provider-composer.ts";
|
|
3
|
+
export interface ModelRuntimeSnapshot {
|
|
4
|
+
all: readonly Model<Api>[];
|
|
5
|
+
available: readonly Model<Api>[];
|
|
6
|
+
configuredProviders: ReadonlySet<string>;
|
|
7
|
+
storedProviders: ReadonlySet<string>;
|
|
8
|
+
storedCredentialTypes: ReadonlyMap<string, CredentialInfo["type"]>;
|
|
9
|
+
auth: ReadonlyMap<string, AuthCheck | undefined>;
|
|
10
|
+
}
|
|
11
|
+
export declare function createEmptyModelRuntimeSnapshot(): ModelRuntimeSnapshot;
|
|
12
|
+
export declare function createModelRuntimeSnapshot(all: readonly Model<Api>[], available: readonly Model<Api>[], checks: readonly (readonly [string, AuthCheck | undefined])[], credentials: readonly CredentialInfo[]): ModelRuntimeSnapshot;
|
|
13
|
+
export declare function updateSnapshotModels(snapshot: ModelRuntimeSnapshot, all: readonly Model<Api>[]): ModelRuntimeSnapshot;
|
|
14
|
+
export declare function addRuntimeApiKeyProvider(snapshot: ModelRuntimeSnapshot, providerId: string): ModelRuntimeSnapshot;
|
|
15
|
+
export declare function getSnapshotProviderAuthStatus(snapshot: ModelRuntimeSnapshot, providerId: string, hasRuntimeApiKey: boolean, configured: AuthStatus | undefined): AuthStatus;
|
|
16
|
+
//# sourceMappingURL=model-runtime-snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-runtime-snapshot.d.ts","sourceRoot":"","sources":["../../src/core/model-runtime-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,WAAW,oBAAoB;IACpC,GAAG,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IAC3B,SAAS,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IACjC,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,qBAAqB,EAAE,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;CACjD;AAED,wBAAgB,+BAA+B,IAAI,oBAAoB,CAStE;AAED,wBAAgB,0BAA0B,CACzC,GAAG,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,EAC1B,SAAS,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,EAChC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC,EAAE,EAC7D,WAAW,EAAE,SAAS,cAAc,EAAE,GACpC,oBAAoB,CAetB;AAED,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,EAAE,SAAS,KAAK,CAAC,GAAG,CAAC,EAAE,GACxB,oBAAoB,CAMtB;AAED,wBAAgB,wBAAwB,CACvC,QAAQ,EAAE,oBAAoB,EAC9B,UAAU,EAAE,MAAM,GAChB,oBAAoB,CAStB;AAED,wBAAgB,6BAA6B,CAC5C,QAAQ,EAAE,oBAAoB,EAC9B,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,OAAO,EACzB,UAAU,EAAE,UAAU,GAAG,SAAS,GAChC,UAAU,CAMZ"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export function createEmptyModelRuntimeSnapshot() {
|
|
2
|
+
return {
|
|
3
|
+
all: [],
|
|
4
|
+
available: [],
|
|
5
|
+
configuredProviders: new Set(),
|
|
6
|
+
storedProviders: new Set(),
|
|
7
|
+
storedCredentialTypes: new Map(),
|
|
8
|
+
auth: new Map(),
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export function createModelRuntimeSnapshot(all, available, checks, credentials) {
|
|
12
|
+
const auth = new Map(checks);
|
|
13
|
+
const configuredProviders = new Set(checks
|
|
14
|
+
.filter((entry) => entry[1] !== undefined)
|
|
15
|
+
.map(([providerId]) => providerId));
|
|
16
|
+
return {
|
|
17
|
+
all,
|
|
18
|
+
available,
|
|
19
|
+
configuredProviders,
|
|
20
|
+
storedProviders: new Set(credentials.map((entry) => entry.providerId)),
|
|
21
|
+
storedCredentialTypes: new Map(credentials.map((entry) => [entry.providerId, entry.type])),
|
|
22
|
+
auth,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export function updateSnapshotModels(snapshot, all) {
|
|
26
|
+
return {
|
|
27
|
+
...snapshot,
|
|
28
|
+
all,
|
|
29
|
+
available: all.filter((model) => snapshot.configuredProviders.has(model.provider)),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function addRuntimeApiKeyProvider(snapshot, providerId) {
|
|
33
|
+
const configuredProviders = new Set(snapshot.configuredProviders).add(providerId);
|
|
34
|
+
return {
|
|
35
|
+
...snapshot,
|
|
36
|
+
auth: new Map(snapshot.auth).set(providerId, { type: "api_key", source: "runtime API key" }),
|
|
37
|
+
configuredProviders,
|
|
38
|
+
storedProviders: new Set(snapshot.storedProviders).add(providerId),
|
|
39
|
+
available: snapshot.all.filter((model) => configuredProviders.has(model.provider)),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function getSnapshotProviderAuthStatus(snapshot, providerId, hasRuntimeApiKey, configured) {
|
|
43
|
+
if (hasRuntimeApiKey)
|
|
44
|
+
return { configured: true, source: "runtime" };
|
|
45
|
+
if (snapshot.storedProviders.has(providerId))
|
|
46
|
+
return { configured: true, source: "stored" };
|
|
47
|
+
if (configured)
|
|
48
|
+
return configured;
|
|
49
|
+
const check = snapshot.auth.get(providerId);
|
|
50
|
+
return check ? { configured: true, source: "environment", label: check.source } : { configured: false };
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=model-runtime-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-runtime-snapshot.js","sourceRoot":"","sources":["../../src/core/model-runtime-snapshot.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Api, AuthCheck, CredentialInfo, Model } from \"@earendil-works/pi-ai\";\nimport type { AuthStatus } from \"./provider-composer.ts\";\n\nexport interface ModelRuntimeSnapshot {\n\tall: readonly Model<Api>[];\n\tavailable: readonly Model<Api>[];\n\tconfiguredProviders: ReadonlySet<string>;\n\tstoredProviders: ReadonlySet<string>;\n\tstoredCredentialTypes: ReadonlyMap<string, CredentialInfo[\"type\"]>;\n\tauth: ReadonlyMap<string, AuthCheck | undefined>;\n}\n\nexport function createEmptyModelRuntimeSnapshot(): ModelRuntimeSnapshot {\n\treturn {\n\t\tall: [],\n\t\tavailable: [],\n\t\tconfiguredProviders: new Set(),\n\t\tstoredProviders: new Set(),\n\t\tstoredCredentialTypes: new Map(),\n\t\tauth: new Map(),\n\t};\n}\n\nexport function createModelRuntimeSnapshot(\n\tall: readonly Model<Api>[],\n\tavailable: readonly Model<Api>[],\n\tchecks: readonly (readonly [string, AuthCheck | undefined])[],\n\tcredentials: readonly CredentialInfo[],\n): ModelRuntimeSnapshot {\n\tconst auth = new Map(checks);\n\tconst configuredProviders = new Set(\n\t\tchecks\n\t\t\t.filter((entry): entry is readonly [string, AuthCheck] => entry[1] !== undefined)\n\t\t\t.map(([providerId]) => providerId),\n\t);\n\treturn {\n\t\tall,\n\t\tavailable,\n\t\tconfiguredProviders,\n\t\tstoredProviders: new Set(credentials.map((entry) => entry.providerId)),\n\t\tstoredCredentialTypes: new Map(credentials.map((entry) => [entry.providerId, entry.type])),\n\t\tauth,\n\t};\n}\n\nexport function updateSnapshotModels(\n\tsnapshot: ModelRuntimeSnapshot,\n\tall: readonly Model<Api>[],\n): ModelRuntimeSnapshot {\n\treturn {\n\t\t...snapshot,\n\t\tall,\n\t\tavailable: all.filter((model) => snapshot.configuredProviders.has(model.provider)),\n\t};\n}\n\nexport function addRuntimeApiKeyProvider(\n\tsnapshot: ModelRuntimeSnapshot,\n\tproviderId: string,\n): ModelRuntimeSnapshot {\n\tconst configuredProviders = new Set(snapshot.configuredProviders).add(providerId);\n\treturn {\n\t\t...snapshot,\n\t\tauth: new Map(snapshot.auth).set(providerId, { type: \"api_key\", source: \"runtime API key\" }),\n\t\tconfiguredProviders,\n\t\tstoredProviders: new Set(snapshot.storedProviders).add(providerId),\n\t\tavailable: snapshot.all.filter((model) => configuredProviders.has(model.provider)),\n\t};\n}\n\nexport function getSnapshotProviderAuthStatus(\n\tsnapshot: ModelRuntimeSnapshot,\n\tproviderId: string,\n\thasRuntimeApiKey: boolean,\n\tconfigured: AuthStatus | undefined,\n): AuthStatus {\n\tif (hasRuntimeApiKey) return { configured: true, source: \"runtime\" };\n\tif (snapshot.storedProviders.has(providerId)) return { configured: true, source: \"stored\" };\n\tif (configured) return configured;\n\tconst check = snapshot.auth.get(providerId);\n\treturn check ? { configured: true, source: \"environment\", label: check.source } : { configured: false };\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type Api, type AssistantMessage, type AssistantMessageEventStream, type AuthResult, type Context, type Model, type ModelsApiStreamOptions, type ModelsSimpleStreamOptions, type MutableModels, type ProviderHeaders } from "@earendil-works/pi-ai";
|
|
2
|
+
import type { ModelRuntimeAuthOverrides } from "./model-runtime-types.ts";
|
|
3
|
+
export declare function mergeHeaders(base: ProviderHeaders | undefined, override: ProviderHeaders | undefined): ProviderHeaders | undefined;
|
|
4
|
+
type ResolveAuth = (model: Model<Api>, overrides?: ModelRuntimeAuthOverrides) => Promise<AuthResult | undefined>;
|
|
5
|
+
/** Streaming request preparation split from ModelRuntime solely for Atomic's 500-line source gate. */
|
|
6
|
+
export declare class ModelRuntimeStreaming {
|
|
7
|
+
private readonly models;
|
|
8
|
+
private readonly resolveAuth;
|
|
9
|
+
constructor(models: MutableModels, resolveAuth: ResolveAuth);
|
|
10
|
+
private prepareRequest;
|
|
11
|
+
stream<TApi extends Api>(model: Model<TApi>, context: Context, options?: ModelsApiStreamOptions<TApi>): AssistantMessageEventStream;
|
|
12
|
+
complete<TApi extends Api>(model: Model<TApi>, context: Context, options?: ModelsApiStreamOptions<TApi>): Promise<AssistantMessage>;
|
|
13
|
+
streamSimple(model: Model<Api>, context: Context, options?: ModelsSimpleStreamOptions): AssistantMessageEventStream;
|
|
14
|
+
completeSimple(model: Model<Api>, context: Context, options?: ModelsSimpleStreamOptions): Promise<AssistantMessage>;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=model-runtime-streaming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-runtime-streaming.d.ts","sourceRoot":"","sources":["../../src/core/model-runtime-streaming.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,GAAG,EAER,KAAK,gBAAgB,EACrB,KAAK,2BAA2B,EAChC,KAAK,UAAU,EACf,KAAK,OAAO,EAEZ,KAAK,KAAK,EACV,KAAK,sBAAsB,EAE3B,KAAK,yBAAyB,EAE9B,KAAK,aAAa,EAElB,KAAK,eAAe,EAGpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,wBAAgB,YAAY,CAC3B,IAAI,EAAE,eAAe,GAAG,SAAS,EACjC,QAAQ,EAAE,eAAe,GAAG,SAAS,GACnC,eAAe,GAAG,SAAS,CAW7B;AAED,KAAK,WAAW,GAAG,CAClB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EACjB,SAAS,CAAC,EAAE,yBAAyB,KACjC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;AAErC,sGAAsG;AACtG,qBAAa,qBAAqB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,YAAY,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAG1D;YAEa,cAAc;IA4B5B,MAAM,CAAC,IAAI,SAAS,GAAG,EACtB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,sBAAsB,CAAC,IAAI,CAAC,GACpC,2BAA2B,CAY7B;IAED,QAAQ,CAAC,IAAI,SAAS,GAAG,EACxB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,sBAAsB,CAAC,IAAI,CAAC,GACpC,OAAO,CAAC,gBAAgB,CAAC,CAE3B;IAED,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,2BAA2B,CAKlH;IAED,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAElH;CACD"}
|