@aiden-ade/sandbox-agent 0.1.59 → 0.1.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/binding-switch-git.test.d.ts +2 -0
- package/dist/__tests__/binding-switch-git.test.d.ts.map +1 -0
- package/dist/__tests__/binding-switch-git.test.js +610 -0
- package/dist/__tests__/binding-switch-git.test.js.map +1 -0
- package/dist/__tests__/cli-ensure-install.test.d.ts +2 -0
- package/dist/__tests__/cli-ensure-install.test.d.ts.map +1 -0
- package/dist/__tests__/cli-ensure-install.test.js +109 -0
- package/dist/__tests__/cli-ensure-install.test.js.map +1 -0
- package/dist/__tests__/cli-executable.test.d.ts +2 -0
- package/dist/__tests__/cli-executable.test.d.ts.map +1 -0
- package/dist/__tests__/cli-executable.test.js +129 -0
- package/dist/__tests__/cli-executable.test.js.map +1 -0
- package/dist/__tests__/cli-help.test.d.ts +2 -0
- package/dist/__tests__/cli-help.test.d.ts.map +1 -0
- package/dist/__tests__/cli-help.test.js +34 -0
- package/dist/__tests__/cli-help.test.js.map +1 -0
- package/dist/__tests__/computer-readiness.test.d.ts +2 -0
- package/dist/__tests__/computer-readiness.test.d.ts.map +1 -0
- package/dist/__tests__/computer-readiness.test.js +63 -0
- package/dist/__tests__/computer-readiness.test.js.map +1 -0
- package/dist/__tests__/core-agent-workflow-context.test.d.ts +2 -0
- package/dist/__tests__/core-agent-workflow-context.test.d.ts.map +1 -0
- package/dist/__tests__/core-agent-workflow-context.test.js +139 -0
- package/dist/__tests__/core-agent-workflow-context.test.js.map +1 -0
- package/dist/__tests__/daemon-reconcile-ask.test.d.ts +2 -0
- package/dist/__tests__/daemon-reconcile-ask.test.d.ts.map +1 -0
- package/dist/__tests__/daemon-reconcile-ask.test.js +86 -0
- package/dist/__tests__/daemon-reconcile-ask.test.js.map +1 -0
- package/dist/__tests__/daemon-socket.integration.test.d.ts +2 -0
- package/dist/__tests__/daemon-socket.integration.test.d.ts.map +1 -0
- package/dist/__tests__/daemon-socket.integration.test.js +450 -0
- package/dist/__tests__/daemon-socket.integration.test.js.map +1 -0
- package/dist/__tests__/daemon.test.d.ts +2 -0
- package/dist/__tests__/daemon.test.d.ts.map +1 -0
- package/dist/__tests__/daemon.test.js +3975 -0
- package/dist/__tests__/daemon.test.js.map +1 -0
- package/dist/__tests__/ensure-shared-checkout-branch.test.d.ts +2 -0
- package/dist/__tests__/ensure-shared-checkout-branch.test.d.ts.map +1 -0
- package/dist/__tests__/ensure-shared-checkout-branch.test.js +129 -0
- package/dist/__tests__/ensure-shared-checkout-branch.test.js.map +1 -0
- package/dist/__tests__/event-outbox-persist-failure.test.d.ts +2 -0
- package/dist/__tests__/event-outbox-persist-failure.test.d.ts.map +1 -0
- package/dist/__tests__/event-outbox-persist-failure.test.js +84 -0
- package/dist/__tests__/event-outbox-persist-failure.test.js.map +1 -0
- package/dist/__tests__/event-outbox.test.d.ts +2 -0
- package/dist/__tests__/event-outbox.test.d.ts.map +1 -0
- package/dist/__tests__/event-outbox.test.js +256 -0
- package/dist/__tests__/event-outbox.test.js.map +1 -0
- package/dist/__tests__/fake-provider-cli.test.d.ts +2 -0
- package/dist/__tests__/fake-provider-cli.test.d.ts.map +1 -0
- package/dist/__tests__/fake-provider-cli.test.js +46 -0
- package/dist/__tests__/fake-provider-cli.test.js.map +1 -0
- package/dist/__tests__/generated-images.test.d.ts +2 -0
- package/dist/__tests__/generated-images.test.d.ts.map +1 -0
- package/dist/__tests__/generated-images.test.js +132 -0
- package/dist/__tests__/generated-images.test.js.map +1 -0
- package/dist/__tests__/lifecycle-logger.test.d.ts +2 -0
- package/dist/__tests__/lifecycle-logger.test.d.ts.map +1 -0
- package/dist/__tests__/lifecycle-logger.test.js +49 -0
- package/dist/__tests__/lifecycle-logger.test.js.map +1 -0
- package/dist/__tests__/local-skill-scan.test.d.ts +2 -0
- package/dist/__tests__/local-skill-scan.test.d.ts.map +1 -0
- package/dist/__tests__/local-skill-scan.test.js +91 -0
- package/dist/__tests__/local-skill-scan.test.js.map +1 -0
- package/dist/__tests__/local-workspace-migration.test.d.ts +2 -0
- package/dist/__tests__/local-workspace-migration.test.d.ts.map +1 -0
- package/dist/__tests__/local-workspace-migration.test.js +195 -0
- package/dist/__tests__/local-workspace-migration.test.js.map +1 -0
- package/dist/__tests__/mcp-inspect-timeout.test.d.ts +2 -0
- package/dist/__tests__/mcp-inspect-timeout.test.d.ts.map +1 -0
- package/dist/__tests__/mcp-inspect-timeout.test.js +97 -0
- package/dist/__tests__/mcp-inspect-timeout.test.js.map +1 -0
- package/dist/__tests__/mcp-readiness.test.d.ts +2 -0
- package/dist/__tests__/mcp-readiness.test.d.ts.map +1 -0
- package/dist/__tests__/mcp-readiness.test.js +267 -0
- package/dist/__tests__/mcp-readiness.test.js.map +1 -0
- package/dist/__tests__/mcp-registration-cli.test.d.ts +2 -0
- package/dist/__tests__/mcp-registration-cli.test.d.ts.map +1 -0
- package/dist/__tests__/mcp-registration-cli.test.js +71 -0
- package/dist/__tests__/mcp-registration-cli.test.js.map +1 -0
- package/dist/__tests__/mcp-registration.test.d.ts +2 -0
- package/dist/__tests__/mcp-registration.test.d.ts.map +1 -0
- package/dist/__tests__/mcp-registration.test.js +426 -0
- package/dist/__tests__/mcp-registration.test.js.map +1 -0
- package/dist/__tests__/model-scan-runner.test.d.ts +2 -0
- package/dist/__tests__/model-scan-runner.test.d.ts.map +1 -0
- package/dist/__tests__/model-scan-runner.test.js +67 -0
- package/dist/__tests__/model-scan-runner.test.js.map +1 -0
- package/dist/__tests__/network-diagnostics.test.d.ts +2 -0
- package/dist/__tests__/network-diagnostics.test.d.ts.map +1 -0
- package/dist/__tests__/network-diagnostics.test.js +26 -0
- package/dist/__tests__/network-diagnostics.test.js.map +1 -0
- package/dist/__tests__/observable-map.test.d.ts +2 -0
- package/dist/__tests__/observable-map.test.d.ts.map +1 -0
- package/dist/__tests__/observable-map.test.js +54 -0
- package/dist/__tests__/observable-map.test.js.map +1 -0
- package/dist/__tests__/provider-auth-preflight.test.d.ts +2 -0
- package/dist/__tests__/provider-auth-preflight.test.d.ts.map +1 -0
- package/dist/__tests__/provider-auth-preflight.test.js +123 -0
- package/dist/__tests__/provider-auth-preflight.test.js.map +1 -0
- package/dist/__tests__/provider-model-discovery.test.d.ts +2 -0
- package/dist/__tests__/provider-model-discovery.test.d.ts.map +1 -0
- package/dist/__tests__/provider-model-discovery.test.js +472 -0
- package/dist/__tests__/provider-model-discovery.test.js.map +1 -0
- package/dist/__tests__/remove-worktrees-if-clean.test.d.ts +2 -0
- package/dist/__tests__/remove-worktrees-if-clean.test.d.ts.map +1 -0
- package/dist/__tests__/remove-worktrees-if-clean.test.js +221 -0
- package/dist/__tests__/remove-worktrees-if-clean.test.js.map +1 -0
- package/dist/__tests__/resume-fallback-env.test.d.ts +2 -0
- package/dist/__tests__/resume-fallback-env.test.d.ts.map +1 -0
- package/dist/__tests__/resume-fallback-env.test.js +28 -0
- package/dist/__tests__/resume-fallback-env.test.js.map +1 -0
- package/dist/__tests__/run-journal.test.d.ts +2 -0
- package/dist/__tests__/run-journal.test.d.ts.map +1 -0
- package/dist/__tests__/run-journal.test.js +121 -0
- package/dist/__tests__/run-journal.test.js.map +1 -0
- package/dist/__tests__/run-start-gate.test.d.ts +2 -0
- package/dist/__tests__/run-start-gate.test.d.ts.map +1 -0
- package/dist/__tests__/run-start-gate.test.js +29 -0
- package/dist/__tests__/run-start-gate.test.js.map +1 -0
- package/dist/__tests__/runtime-capabilities-sync.test.d.ts +2 -0
- package/dist/__tests__/runtime-capabilities-sync.test.d.ts.map +1 -0
- package/dist/__tests__/runtime-capabilities-sync.test.js +66 -0
- package/dist/__tests__/runtime-capabilities-sync.test.js.map +1 -0
- package/dist/__tests__/runtime-config.test.d.ts +2 -0
- package/dist/__tests__/runtime-config.test.d.ts.map +1 -0
- package/dist/__tests__/runtime-config.test.js +102 -0
- package/dist/__tests__/runtime-config.test.js.map +1 -0
- package/dist/__tests__/runtime-presenter-heartbeat.test.d.ts +2 -0
- package/dist/__tests__/runtime-presenter-heartbeat.test.d.ts.map +1 -0
- package/dist/__tests__/runtime-presenter-heartbeat.test.js +159 -0
- package/dist/__tests__/runtime-presenter-heartbeat.test.js.map +1 -0
- package/dist/__tests__/sandbox-outbox.test.d.ts +2 -0
- package/dist/__tests__/sandbox-outbox.test.d.ts.map +1 -0
- package/dist/__tests__/sandbox-outbox.test.js +214 -0
- package/dist/__tests__/sandbox-outbox.test.js.map +1 -0
- package/dist/__tests__/sandbox-workflow-context.test.d.ts +2 -0
- package/dist/__tests__/sandbox-workflow-context.test.d.ts.map +1 -0
- package/dist/__tests__/sandbox-workflow-context.test.js +396 -0
- package/dist/__tests__/sandbox-workflow-context.test.js.map +1 -0
- package/dist/__tests__/service-manager.test.d.ts +2 -0
- package/dist/__tests__/service-manager.test.d.ts.map +1 -0
- package/dist/__tests__/service-manager.test.js +50 -0
- package/dist/__tests__/service-manager.test.js.map +1 -0
- package/dist/__tests__/sleep-inhibitor.test.d.ts +2 -0
- package/dist/__tests__/sleep-inhibitor.test.d.ts.map +1 -0
- package/dist/__tests__/sleep-inhibitor.test.js +236 -0
- package/dist/__tests__/sleep-inhibitor.test.js.map +1 -0
- package/dist/__tests__/status-local-workspace.test.d.ts +2 -0
- package/dist/__tests__/status-local-workspace.test.d.ts.map +1 -0
- package/dist/__tests__/status-local-workspace.test.js +121 -0
- package/dist/__tests__/status-local-workspace.test.js.map +1 -0
- package/dist/__tests__/suspension-detector.test.d.ts +2 -0
- package/dist/__tests__/suspension-detector.test.d.ts.map +1 -0
- package/dist/__tests__/suspension-detector.test.js +112 -0
- package/dist/__tests__/suspension-detector.test.js.map +1 -0
- package/dist/__tests__/web-presenter-parent-events.test.d.ts +2 -0
- package/dist/__tests__/web-presenter-parent-events.test.d.ts.map +1 -0
- package/dist/__tests__/web-presenter-parent-events.test.js +130 -0
- package/dist/__tests__/web-presenter-parent-events.test.js.map +1 -0
- package/dist/__tests__/workspace-relocation.test.d.ts +2 -0
- package/dist/__tests__/workspace-relocation.test.d.ts.map +1 -0
- package/dist/__tests__/workspace-relocation.test.js +66 -0
- package/dist/__tests__/workspace-relocation.test.js.map +1 -0
- package/dist/__tests__/workspace-run-lease.test.d.ts +2 -0
- package/dist/__tests__/workspace-run-lease.test.d.ts.map +1 -0
- package/dist/__tests__/workspace-run-lease.test.js +230 -0
- package/dist/__tests__/workspace-run-lease.test.js.map +1 -0
- package/dist/__tests__/ws-client-heartbeat-volatile.test.d.ts +2 -0
- package/dist/__tests__/ws-client-heartbeat-volatile.test.d.ts.map +1 -0
- package/dist/__tests__/ws-client-heartbeat-volatile.test.js +61 -0
- package/dist/__tests__/ws-client-heartbeat-volatile.test.js.map +1 -0
- package/dist/__tests__/ws-client-heartbeat.integration.test.d.ts +2 -0
- package/dist/__tests__/ws-client-heartbeat.integration.test.d.ts.map +1 -0
- package/dist/__tests__/ws-client-heartbeat.integration.test.js +109 -0
- package/dist/__tests__/ws-client-heartbeat.integration.test.js.map +1 -0
- package/dist/__tests__/ws-client-user-message-ack.integration.test.d.ts +2 -0
- package/dist/__tests__/ws-client-user-message-ack.integration.test.d.ts.map +1 -0
- package/dist/__tests__/ws-client-user-message-ack.integration.test.js +167 -0
- package/dist/__tests__/ws-client-user-message-ack.integration.test.js.map +1 -0
- package/dist/aiden-system-prompt.d.ts +6 -0
- package/dist/aiden-system-prompt.d.ts.map +1 -0
- package/dist/aiden-system-prompt.js +6 -0
- package/dist/aiden-system-prompt.js.map +1 -0
- package/dist/binding-switch-git.d.ts +26 -0
- package/dist/binding-switch-git.d.ts.map +1 -0
- package/dist/binding-switch-git.js +973 -0
- package/dist/binding-switch-git.js.map +1 -0
- package/dist/cli-ensure-install.d.ts +39 -0
- package/dist/cli-ensure-install.d.ts.map +1 -0
- package/dist/cli-ensure-install.js +133 -0
- package/dist/cli-ensure-install.js.map +1 -0
- package/dist/cli-executable.d.ts +97 -0
- package/dist/cli-executable.d.ts.map +1 -0
- package/dist/cli-executable.js +432 -0
- package/dist/cli-executable.js.map +1 -0
- package/dist/cli-help.d.ts +7 -0
- package/dist/cli-help.d.ts.map +1 -0
- package/dist/cli-help.js +49 -0
- package/dist/cli-help.js.map +1 -0
- package/dist/computer-readiness.d.ts +42 -0
- package/dist/computer-readiness.d.ts.map +1 -0
- package/dist/computer-readiness.js +191 -0
- package/dist/computer-readiness.js.map +1 -0
- package/dist/core-agent.d.ts +47 -0
- package/dist/core-agent.d.ts.map +1 -0
- package/dist/core-agent.js +364 -0
- package/dist/core-agent.js.map +1 -0
- package/dist/daemon.d.ts +392 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +4711 -0
- package/dist/daemon.js.map +1 -0
- package/dist/event-outbox.d.ts +83 -0
- package/dist/event-outbox.d.ts.map +1 -0
- package/dist/event-outbox.js +440 -0
- package/dist/event-outbox.js.map +1 -0
- package/dist/fake-provider-cli.d.ts +13 -0
- package/dist/fake-provider-cli.d.ts.map +1 -0
- package/dist/fake-provider-cli.js +53 -0
- package/dist/fake-provider-cli.js.map +1 -0
- package/dist/generated-images.d.ts +2 -0
- package/dist/generated-images.d.ts.map +1 -0
- package/dist/generated-images.js +2 -0
- package/dist/generated-images.js.map +1 -0
- package/dist/index.cjs +129 -29
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +209 -0
- package/dist/index.js.map +1 -0
- package/dist/lifecycle-logger.d.ts +25 -0
- package/dist/lifecycle-logger.d.ts.map +1 -0
- package/dist/lifecycle-logger.js +73 -0
- package/dist/lifecycle-logger.js.map +1 -0
- package/dist/local-skill-scan.d.ts +21 -0
- package/dist/local-skill-scan.d.ts.map +1 -0
- package/dist/local-skill-scan.js +109 -0
- package/dist/local-skill-scan.js.map +1 -0
- package/dist/local-workspace-migration.d.ts +68 -0
- package/dist/local-workspace-migration.d.ts.map +1 -0
- package/dist/local-workspace-migration.js +157 -0
- package/dist/local-workspace-migration.js.map +1 -0
- package/dist/mcp-readiness.d.ts +59 -0
- package/dist/mcp-readiness.d.ts.map +1 -0
- package/dist/mcp-readiness.js +202 -0
- package/dist/mcp-readiness.js.map +1 -0
- package/dist/mcp-registration.d.ts +75 -0
- package/dist/mcp-registration.d.ts.map +1 -0
- package/dist/mcp-registration.js +563 -0
- package/dist/mcp-registration.js.map +1 -0
- package/dist/model-scan-runner.d.ts +15 -0
- package/dist/model-scan-runner.d.ts.map +1 -0
- package/dist/model-scan-runner.js +51 -0
- package/dist/model-scan-runner.js.map +1 -0
- package/dist/network-diagnostics.d.ts +8 -0
- package/dist/network-diagnostics.d.ts.map +1 -0
- package/dist/network-diagnostics.js +56 -0
- package/dist/network-diagnostics.js.map +1 -0
- package/dist/observable-map.d.ts +25 -0
- package/dist/observable-map.d.ts.map +1 -0
- package/dist/observable-map.js +42 -0
- package/dist/observable-map.js.map +1 -0
- package/dist/provider-auth-preflight.d.ts +22 -0
- package/dist/provider-auth-preflight.d.ts.map +1 -0
- package/dist/provider-auth-preflight.js +110 -0
- package/dist/provider-auth-preflight.js.map +1 -0
- package/dist/provider-model-discovery.d.ts +38 -0
- package/dist/provider-model-discovery.d.ts.map +1 -0
- package/dist/provider-model-discovery.js +519 -0
- package/dist/provider-model-discovery.js.map +1 -0
- package/dist/resume-fallback-env.d.ts +20 -0
- package/dist/resume-fallback-env.d.ts.map +1 -0
- package/dist/resume-fallback-env.js +30 -0
- package/dist/resume-fallback-env.js.map +1 -0
- package/dist/run-journal.d.ts +53 -0
- package/dist/run-journal.d.ts.map +1 -0
- package/dist/run-journal.js +193 -0
- package/dist/run-journal.js.map +1 -0
- package/dist/run-start-gate.d.ts +9 -0
- package/dist/run-start-gate.d.ts.map +1 -0
- package/dist/run-start-gate.js +24 -0
- package/dist/run-start-gate.js.map +1 -0
- package/dist/runtime-backends.d.ts +2 -0
- package/dist/runtime-backends.d.ts.map +1 -0
- package/dist/runtime-backends.js +2 -0
- package/dist/runtime-backends.js.map +1 -0
- package/dist/runtime-capabilities-sync.d.ts +33 -0
- package/dist/runtime-capabilities-sync.d.ts.map +1 -0
- package/dist/runtime-capabilities-sync.js +56 -0
- package/dist/runtime-capabilities-sync.js.map +1 -0
- package/dist/runtime-config.d.ts +24 -0
- package/dist/runtime-config.d.ts.map +1 -0
- package/dist/runtime-config.js +124 -0
- package/dist/runtime-config.js.map +1 -0
- package/dist/sandbox-outbox.d.ts +122 -0
- package/dist/sandbox-outbox.d.ts.map +1 -0
- package/dist/sandbox-outbox.js +180 -0
- package/dist/sandbox-outbox.js.map +1 -0
- package/dist/sandbox.d.ts +44 -0
- package/dist/sandbox.d.ts.map +1 -0
- package/dist/sandbox.js +438 -0
- package/dist/sandbox.js.map +1 -0
- package/dist/service-manager.d.ts +28 -0
- package/dist/service-manager.d.ts.map +1 -0
- package/dist/service-manager.js +259 -0
- package/dist/service-manager.js.map +1 -0
- package/dist/sleep-inhibitor.d.ts +111 -0
- package/dist/sleep-inhibitor.d.ts.map +1 -0
- package/dist/sleep-inhibitor.js +412 -0
- package/dist/sleep-inhibitor.js.map +1 -0
- package/dist/suspension-detector.d.ts +48 -0
- package/dist/suspension-detector.d.ts.map +1 -0
- package/dist/suspension-detector.js +89 -0
- package/dist/suspension-detector.js.map +1 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/updater.d.ts +15 -0
- package/dist/updater.d.ts.map +1 -0
- package/dist/updater.js +50 -0
- package/dist/updater.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/dist/web-presenter.d.ts +55 -0
- package/dist/web-presenter.d.ts.map +1 -0
- package/dist/web-presenter.js +265 -0
- package/dist/web-presenter.js.map +1 -0
- package/dist/workspace-relocation.d.ts +22 -0
- package/dist/workspace-relocation.d.ts.map +1 -0
- package/dist/workspace-relocation.js +90 -0
- package/dist/workspace-relocation.js.map +1 -0
- package/dist/workspace-run-lease.d.ts +97 -0
- package/dist/workspace-run-lease.d.ts.map +1 -0
- package/dist/workspace-run-lease.js +241 -0
- package/dist/workspace-run-lease.js.map +1 -0
- package/dist/ws-client.d.ts +194 -0
- package/dist/ws-client.d.ts.map +1 -0
- package/dist/ws-client.js +282 -0
- package/dist/ws-client.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-scan-runner.js","sourceRoot":"","sources":["../src/model-scan-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAE1B,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AAaxC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAgC,EAChC,OAA6B;IAE7B,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;QACxC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;IAChC,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE;QACvB,MAAM,eAAe,GAAG;YACtB,GAAG,CAAC,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;YACpC,GAAG,uBAAuB,CAAC,SAAS,CAAC;SACtC,CAAC;QACF,MAAM,0BAA0B,CAAC;YAC/B,YAAY,EAAE,OAAO,CAAC,eAAe,EAAE;YACvC,QAAQ,EAAE,eAAe;YACzB,GAAG,OAAO,CAAC,kBAAkB;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;YAC9B,MAAM,gBAAgB,GAAG;gBACvB,GAAG,CAAC,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;gBACpC,GAAG,uBAAuB,CAAC,UAAU,CAAC;aACvC,CAAC;YACF,MAAM,0BAA0B,CAAC;gBAC/B,YAAY,EAAE,OAAO,CAAC,eAAe,EAAE;gBACvC,QAAQ,EAAE,gBAAgB;gBAC1B,GAAG,OAAO,CAAC,kBAAkB;aAC9B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,cAAc,GAAG;gBACrB,GAAG,CAAC,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;gBACpC,GAAG,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC;aAC9C,CAAC;YACF,MAAM,0BAA0B,CAAC;gBAC/B,YAAY,EAAE,OAAO,CAAC,eAAe,EAAE;gBACvC,QAAQ,EAAE,cAAc;gBACxB,GAAG,OAAO,CAAC,kBAAkB;aAC9B,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,IAAI,CAAC;IACb,CAAC;YAAS,CAAC;QACT,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type TransportFailureCode = "backend_unreachable" | "network_dns_failure" | "network_intercepted" | "network_proxy_auth_required" | "network_tls_failure";
|
|
2
|
+
/**
|
|
3
|
+
* Classify only transport causes supported by concrete error evidence. Generic
|
|
4
|
+
* timeouts/resets stay `backend_unreachable`; the daemon must not guess that a
|
|
5
|
+
* VPN or captive portal is responsible without an observable DNS/TLS/HTTP clue.
|
|
6
|
+
*/
|
|
7
|
+
export declare function classifyTransportFailure(error: unknown): TransportFailureCode;
|
|
8
|
+
//# sourceMappingURL=network-diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-diagnostics.d.ts","sourceRoot":"","sources":["../src/network-diagnostics.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAC5B,qBAAqB,GACrB,qBAAqB,GACrB,qBAAqB,GACrB,6BAA6B,GAC7B,qBAAqB,CAAC;AAoC1B;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAkC7E"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
function collectEvidence(error) {
|
|
2
|
+
const text = [];
|
|
3
|
+
const statuses = [];
|
|
4
|
+
const pending = [error];
|
|
5
|
+
const seen = new Set();
|
|
6
|
+
while (pending.length > 0 && seen.size < 12) {
|
|
7
|
+
const value = pending.shift();
|
|
8
|
+
if (typeof value === "string") {
|
|
9
|
+
text.push(value);
|
|
10
|
+
continue;
|
|
11
|
+
}
|
|
12
|
+
if (!value || typeof value !== "object" || seen.has(value))
|
|
13
|
+
continue;
|
|
14
|
+
seen.add(value);
|
|
15
|
+
const record = value;
|
|
16
|
+
for (const key of ["message", "code", "name"]) {
|
|
17
|
+
if (typeof record[key] === "string")
|
|
18
|
+
text.push(record[key]);
|
|
19
|
+
}
|
|
20
|
+
for (const key of ["status", "statusCode"]) {
|
|
21
|
+
if (typeof record[key] === "number")
|
|
22
|
+
statuses.push(record[key]);
|
|
23
|
+
}
|
|
24
|
+
for (const key of ["cause", "description", "context", "response"]) {
|
|
25
|
+
if (record[key] !== undefined)
|
|
26
|
+
pending.push(record[key]);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return { text: text.join(" ").toLowerCase(), statuses };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Classify only transport causes supported by concrete error evidence. Generic
|
|
33
|
+
* timeouts/resets stay `backend_unreachable`; the daemon must not guess that a
|
|
34
|
+
* VPN or captive portal is responsible without an observable DNS/TLS/HTTP clue.
|
|
35
|
+
*/
|
|
36
|
+
export function classifyTransportFailure(error) {
|
|
37
|
+
const evidence = collectEvidence(error);
|
|
38
|
+
const unexpectedStatus = evidence.text.match(/unexpected (?:server )?response:\s*(\d{3})/i);
|
|
39
|
+
const status = unexpectedStatus ? Number.parseInt(unexpectedStatus[1], 10) : undefined;
|
|
40
|
+
const statuses = status === undefined ? evidence.statuses : [...evidence.statuses, status];
|
|
41
|
+
if (statuses.includes(407) ||
|
|
42
|
+
/proxy authentication required|proxy_authentication_required/.test(evidence.text)) {
|
|
43
|
+
return "network_proxy_auth_required";
|
|
44
|
+
}
|
|
45
|
+
if (/\b(enotfound|eai_again|eai_nodata)\b|getaddrinfo|dns (?:lookup|resolution)/.test(evidence.text)) {
|
|
46
|
+
return "network_dns_failure";
|
|
47
|
+
}
|
|
48
|
+
if (/self_signed_cert|self signed certificate|unable to verify|certificate (?:has expired|is not yet valid|rejected)|cert_(?:has_expired|not_yet_valid)|tlsv\d|ssl routines|hostname.*certificate/.test(evidence.text)) {
|
|
49
|
+
return "network_tls_failure";
|
|
50
|
+
}
|
|
51
|
+
if (statuses.some((candidate) => candidate === 200 || [301, 302, 303, 307, 308].includes(candidate))) {
|
|
52
|
+
return "network_intercepted";
|
|
53
|
+
}
|
|
54
|
+
return "backend_unreachable";
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=network-diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-diagnostics.js","sourceRoot":"","sources":["../src/network-diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A `Map` that reports membership changes.
|
|
3
|
+
*
|
|
4
|
+
* Used where state is derived from "does this map have any entries?" and the
|
|
5
|
+
* map is mutated from many call sites. Subscribing to the map itself means a
|
|
6
|
+
* future mutation site cannot silently forget to keep the derived state in
|
|
7
|
+
* sync — the failure mode that left desktop sleep prevention wired to a code
|
|
8
|
+
* path nothing actually called.
|
|
9
|
+
*
|
|
10
|
+
* `onChange` fires only on real changes: deleting an absent key or clearing an
|
|
11
|
+
* empty map is a no-op.
|
|
12
|
+
*/
|
|
13
|
+
export declare class ObservableMap<K, V> extends Map<K, V> {
|
|
14
|
+
/**
|
|
15
|
+
* Invoked after every membership change.
|
|
16
|
+
*
|
|
17
|
+
* Assigned after construction rather than passed to the constructor because
|
|
18
|
+
* `Map`'s constructor may populate entries before subclass fields exist.
|
|
19
|
+
*/
|
|
20
|
+
onChange: (() => void) | null;
|
|
21
|
+
set(key: K, value: V): this;
|
|
22
|
+
delete(key: K): boolean;
|
|
23
|
+
clear(): void;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=observable-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observable-map.d.ts","sourceRoot":"","sources":["../src/observable-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,qBAAa,aAAa,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAChD;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAQ;IAErC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAQ3B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAMvB,KAAK,IAAI,IAAI;CAKd"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A `Map` that reports membership changes.
|
|
3
|
+
*
|
|
4
|
+
* Used where state is derived from "does this map have any entries?" and the
|
|
5
|
+
* map is mutated from many call sites. Subscribing to the map itself means a
|
|
6
|
+
* future mutation site cannot silently forget to keep the derived state in
|
|
7
|
+
* sync — the failure mode that left desktop sleep prevention wired to a code
|
|
8
|
+
* path nothing actually called.
|
|
9
|
+
*
|
|
10
|
+
* `onChange` fires only on real changes: deleting an absent key or clearing an
|
|
11
|
+
* empty map is a no-op.
|
|
12
|
+
*/
|
|
13
|
+
export class ObservableMap extends Map {
|
|
14
|
+
/**
|
|
15
|
+
* Invoked after every membership change.
|
|
16
|
+
*
|
|
17
|
+
* Assigned after construction rather than passed to the constructor because
|
|
18
|
+
* `Map`'s constructor may populate entries before subclass fields exist.
|
|
19
|
+
*/
|
|
20
|
+
onChange = null;
|
|
21
|
+
set(key, value) {
|
|
22
|
+
const existed = super.has(key);
|
|
23
|
+
const result = super.set(key, value);
|
|
24
|
+
// Replacing a value for an existing key does not change membership.
|
|
25
|
+
if (!existed)
|
|
26
|
+
this.onChange?.();
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
delete(key) {
|
|
30
|
+
const removed = super.delete(key);
|
|
31
|
+
if (removed)
|
|
32
|
+
this.onChange?.();
|
|
33
|
+
return removed;
|
|
34
|
+
}
|
|
35
|
+
clear() {
|
|
36
|
+
const had = this.size > 0;
|
|
37
|
+
super.clear();
|
|
38
|
+
if (had)
|
|
39
|
+
this.onChange?.();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=observable-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observable-map.js","sourceRoot":"","sources":["../src/observable-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,aAAoB,SAAQ,GAAS;IAChD;;;;;OAKG;IACH,QAAQ,GAAwB,IAAI,CAAC;IAErC,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACrC,oEAAoE;QACpE,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,GAAM;QACX,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,OAAO;YAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1B,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,IAAI,GAAG;YAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type CliVersionProbeResult } from "./cli-executable.js";
|
|
2
|
+
export type ProviderAuthPreflightStatus = "ready" | "auth_required" | "unknown";
|
|
3
|
+
export interface ProviderAuthPreflightResult {
|
|
4
|
+
status: ProviderAuthPreflightStatus;
|
|
5
|
+
message?: string;
|
|
6
|
+
}
|
|
7
|
+
type Probe = (executable: string, env: Record<string, string>, args: string[], timeoutMs: number) => Promise<CliVersionProbeResult>;
|
|
8
|
+
/** Drop sticky ready state. Call when a run fails with a clear auth error. */
|
|
9
|
+
export declare function invalidateProviderAuthPreflight(backendKind?: string, executable?: string): void;
|
|
10
|
+
/** Test-only: clear the sticky ready cache between cases. */
|
|
11
|
+
export declare function __resetProviderAuthPreflightCache(): void;
|
|
12
|
+
/** True when provider stderr/error text clearly means the CLI is signed out. */
|
|
13
|
+
export declare function looksLikeProviderAuthFailure(text: string): boolean;
|
|
14
|
+
export declare function preflightProviderAuth(input: {
|
|
15
|
+
backendKind: string;
|
|
16
|
+
executable: string;
|
|
17
|
+
env: Record<string, string>;
|
|
18
|
+
probe?: Probe;
|
|
19
|
+
timeoutMs?: number;
|
|
20
|
+
}): Promise<ProviderAuthPreflightResult>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=provider-auth-preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-auth-preflight.d.ts","sourceRoot":"","sources":["../src/provider-auth-preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAoB,MAAM,qBAAqB,CAAC;AAEnF,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG,eAAe,GAAG,SAAS,CAAC;AAEhF,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,2BAA2B,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,KAAK,KAAK,GAAG,CACX,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,IAAI,EAAE,MAAM,EAAE,EACd,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAkCpC,8EAA8E;AAC9E,wBAAgB,+BAA+B,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAY/F;AAED,6DAA6D;AAC7D,wBAAgB,iCAAiC,IAAI,IAAI,CAExD;AAoBD,gFAAgF;AAChF,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElE;AAQD,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAwCvC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { runCliProbeAsync } from "./cli-executable.js";
|
|
2
|
+
const AUTH_PROBES = {
|
|
3
|
+
claude_cli: {
|
|
4
|
+
args: ["auth", "status", "--json"],
|
|
5
|
+
label: "Claude Code",
|
|
6
|
+
loginCommand: "claude auth login",
|
|
7
|
+
},
|
|
8
|
+
codex_app_server: {
|
|
9
|
+
args: ["login", "status"],
|
|
10
|
+
label: "Codex",
|
|
11
|
+
loginCommand: "codex login",
|
|
12
|
+
},
|
|
13
|
+
cursor_agent_cli: {
|
|
14
|
+
args: ["status", "--format", "json"],
|
|
15
|
+
label: "Cursor Agent",
|
|
16
|
+
loginCommand: "cursor-agent login",
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Sticky "ready" only — keyed by provider binary. Auth is a session concern for
|
|
21
|
+
* the local daemon: once Cursor/Claude/Codex has proven signed-in, later sends
|
|
22
|
+
* skip the ~3s status probe until we see a definitive sign-out (or invalidate).
|
|
23
|
+
*
|
|
24
|
+
* Never sticky-cache `auth_required`: after the user logs in, the next send must
|
|
25
|
+
* re-probe and succeed. Never cache `unknown` (timeouts must not block forever).
|
|
26
|
+
*/
|
|
27
|
+
const readyAuthCache = new Map();
|
|
28
|
+
function authCacheKey(backendKind, executable) {
|
|
29
|
+
return `${backendKind}::${executable}`;
|
|
30
|
+
}
|
|
31
|
+
/** Drop sticky ready state. Call when a run fails with a clear auth error. */
|
|
32
|
+
export function invalidateProviderAuthPreflight(backendKind, executable) {
|
|
33
|
+
if (!backendKind) {
|
|
34
|
+
readyAuthCache.clear();
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (executable) {
|
|
38
|
+
readyAuthCache.delete(authCacheKey(backendKind, executable));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
for (const key of [...readyAuthCache.keys()]) {
|
|
42
|
+
if (key.startsWith(`${backendKind}::`))
|
|
43
|
+
readyAuthCache.delete(key);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Test-only: clear the sticky ready cache between cases. */
|
|
47
|
+
export function __resetProviderAuthPreflightCache() {
|
|
48
|
+
readyAuthCache.clear();
|
|
49
|
+
}
|
|
50
|
+
function jsonAuthenticationState(output) {
|
|
51
|
+
try {
|
|
52
|
+
const parsed = JSON.parse(output);
|
|
53
|
+
for (const key of ["authenticated", "isAuthenticated", "loggedIn", "isLoggedIn"]) {
|
|
54
|
+
if (typeof parsed[key] === "boolean")
|
|
55
|
+
return parsed[key];
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// Text status output is handled below.
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
function definitivelySignedOut(output) {
|
|
64
|
+
return /not\s+(logged\s+in|authenticated)|login\s+required|authentication\s+required|no\s+authentication|unauthorized/i.test(output);
|
|
65
|
+
}
|
|
66
|
+
/** True when provider stderr/error text clearly means the CLI is signed out. */
|
|
67
|
+
export function looksLikeProviderAuthFailure(text) {
|
|
68
|
+
return definitivelySignedOut(text);
|
|
69
|
+
}
|
|
70
|
+
function unsupportedStatusCommand(output) {
|
|
71
|
+
return /unknown\s+(command|option)|unrecognized\s+(command|option|subcommand)|invalid\s+subcommand/i.test(output);
|
|
72
|
+
}
|
|
73
|
+
export async function preflightProviderAuth(input) {
|
|
74
|
+
const spec = AUTH_PROBES[input.backendKind];
|
|
75
|
+
if (!spec)
|
|
76
|
+
return { status: "unknown" };
|
|
77
|
+
const cacheKey = authCacheKey(input.backendKind, input.executable);
|
|
78
|
+
// Custom probes (tests) always run; production reuses sticky ready.
|
|
79
|
+
if (!input.probe) {
|
|
80
|
+
const cached = readyAuthCache.get(cacheKey);
|
|
81
|
+
if (cached?.status === "ready") {
|
|
82
|
+
return cached;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const result = await (input.probe ?? runCliProbeAsync)(input.executable, input.env, spec.args, input.timeoutMs ?? 3_000);
|
|
86
|
+
const output = `${result.stdout}\n${result.stderr}`.trim();
|
|
87
|
+
const jsonState = jsonAuthenticationState(result.stdout.trim());
|
|
88
|
+
const signedOut = jsonState === false || definitivelySignedOut(output);
|
|
89
|
+
if (signedOut) {
|
|
90
|
+
// Clear any stale ready so the next send re-probes after the user logs in.
|
|
91
|
+
if (!input.probe)
|
|
92
|
+
readyAuthCache.delete(cacheKey);
|
|
93
|
+
return {
|
|
94
|
+
status: "auth_required",
|
|
95
|
+
message: `${spec.label} is installed but not signed in. Run \`${spec.loginCommand}\` on this computer, then try again.`,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
if (result.status === 0) {
|
|
99
|
+
const ready = { status: "ready" };
|
|
100
|
+
if (!input.probe)
|
|
101
|
+
readyAuthCache.set(cacheKey, ready);
|
|
102
|
+
return ready;
|
|
103
|
+
}
|
|
104
|
+
if (unsupportedStatusCommand(output))
|
|
105
|
+
return { status: "unknown" };
|
|
106
|
+
// Timeouts, crashes, and unfamiliar output must not become false auth
|
|
107
|
+
// failures. The provider retains its existing launch/error handling.
|
|
108
|
+
return { status: "unknown" };
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=provider-auth-preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-auth-preflight.js","sourceRoot":"","sources":["../src/provider-auth-preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export declare const MODEL_DISCOVERY_TIMEOUT_MS = 8000;
|
|
2
|
+
export declare function extractModelIdsFromJson(value: unknown): string[];
|
|
3
|
+
/** Parse `codex debug models` JSON — only slugs the CLI exposes in the picker. */
|
|
4
|
+
export declare function extractCodexModelSlugsFromDebugJson(value: unknown): string[];
|
|
5
|
+
/** Parse `codex debug models` JSON and expand supported reasoning levels for effort merge. */
|
|
6
|
+
export declare function extractCodexDiscoveredModelIdsFromDebugJson(value: unknown): string[];
|
|
7
|
+
/** Lossless native OpenCode model capabilities for provider-defined variants. */
|
|
8
|
+
export interface OpenCodeDiscoveredModelCapability {
|
|
9
|
+
id: string;
|
|
10
|
+
variants: string[];
|
|
11
|
+
}
|
|
12
|
+
export declare function extractOpenCodeModelCapabilitiesFromVerboseOutput(text: string): OpenCodeDiscoveredModelCapability[];
|
|
13
|
+
/**
|
|
14
|
+
* Expand `opencode models --verbose` output into discovery ids. A reasoning-capable
|
|
15
|
+
* model with tunable variants emits one `<id>-<variant>` per known variant (e.g.
|
|
16
|
+
* `opencode/deepseek-v4-flash-free-low`, `...-medium`, `...-high`, `...-max`) — these
|
|
17
|
+
* collapse back to base + effort via the existing `parseModelEffortSuffix` machinery,
|
|
18
|
+
* exactly like Codex's `debug models` reasoning-tier expansion. A model with
|
|
19
|
+
* `reasoning: true` but no (recognized) tunable variant — e.g. `big-pickle`, which
|
|
20
|
+
* always reasons with no selectable level — emits its bare id only, so it is never
|
|
21
|
+
* treated as effort-tunable. An unrecognized variant key is dropped rather than
|
|
22
|
+
* guessed at, so it can never corrupt a base model id.
|
|
23
|
+
*/
|
|
24
|
+
export declare function extractOpenCodeDiscoveredModelIdsFromVerboseOutput(text: string): string[];
|
|
25
|
+
export declare function extractModelIdsFromText(value: string): string[];
|
|
26
|
+
/** Parse `cursor-agent models` lines like `gpt-5.3-codex - Codex 5.3`. */
|
|
27
|
+
export declare function extractModelIdsFromLabeledList(value: string): string[];
|
|
28
|
+
export declare function isValidClaudeModelId(id: string): boolean;
|
|
29
|
+
/** Drop short Claude id prefixes when a longer sibling exists (e.g. claude-opus-4 vs claude-opus-4-6). */
|
|
30
|
+
export declare function filterClaudePrefixModelIds(ids: readonly string[]): string[];
|
|
31
|
+
/** Drop dated API snapshot ids when the undated sibling is present. */
|
|
32
|
+
export declare function filterClaudeDatedModelIds(ids: readonly string[]): string[];
|
|
33
|
+
/** Claude Code has no non-interactive model list yet; scrape embedded ids from the binary. */
|
|
34
|
+
export declare function extractClaudeModelIdsFromExecutable(executable: string): string[];
|
|
35
|
+
export declare function getCatalogModelIds(provider: string): string[];
|
|
36
|
+
export declare function supportsProviderModelDiscovery(provider: string): boolean;
|
|
37
|
+
export declare function discoverProviderModels(provider: string, executable: string, env: Record<string, string>): Promise<string[]>;
|
|
38
|
+
//# sourceMappingURL=provider-model-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-model-discovery.d.ts","sourceRoot":"","sources":["../src/provider-model-discovery.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AA6ChD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAgBhE;AAED,kFAAkF;AAClF,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAe5E;AAqBD,8FAA8F;AAC9F,wBAAgB,2CAA2C,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CA+BpF;AA0CD,iFAAiF;AACjF,MAAM,WAAW,iCAAiC;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA2ED,wBAAgB,iDAAiD,CAC/D,IAAI,EAAE,MAAM,GACX,iCAAiC,EAAE,CAmBrC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kDAAkD,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBzF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAc/D;AAED,0EAA0E;AAC1E,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAYtE;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAgBxD;AAED,0GAA0G;AAC1G,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAW3E;AAED,uEAAuE;AACvE,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAO1E;AAUD,8FAA8F;AAC9F,wBAAgB,mCAAmC,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAahF;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAG7D;AAgJD,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExE;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC,CA0BnB"}
|