@bastani/atomic 0.9.14 → 0.9.15
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 +45 -0
- package/README.md +1 -1
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/mcp/CHANGELOG.md +14 -0
- package/dist/builtin/mcp/package.json +4 -4
- package/dist/builtin/mcp/sampling-handler.ts +2 -2
- package/dist/builtin/mcp/types.ts +1 -1
- package/dist/builtin/subagents/CHANGELOG.md +40 -0
- package/dist/builtin/subagents/README.md +5 -22
- package/dist/builtin/subagents/agents/code-simplifier.md +2 -2
- package/dist/builtin/subagents/agents/codebase-analyzer.md +2 -2
- package/dist/builtin/subagents/agents/codebase-locator.md +2 -2
- package/dist/builtin/subagents/agents/codebase-online-researcher.md +2 -2
- package/dist/builtin/subagents/agents/codebase-pattern-finder.md +2 -2
- package/dist/builtin/subagents/agents/codebase-research-analyzer.md +2 -2
- package/dist/builtin/subagents/agents/codebase-research-locator.md +2 -2
- package/dist/builtin/subagents/agents/worker.md +2 -2
- package/dist/builtin/subagents/package.json +4 -4
- package/dist/builtin/subagents/skills/subagent/SKILL.md +6 -6
- package/dist/builtin/subagents/src/agents/agent-loaders.ts +0 -4
- package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +1 -12
- package/dist/builtin/subagents/src/agents/agent-management.ts +0 -1
- package/dist/builtin/subagents/src/agents/agent-serializer.ts +7 -6
- package/dist/builtin/subagents/src/agents/agent-types.ts +0 -1
- package/dist/builtin/subagents/src/extension/schemas.ts +2 -2
- package/dist/builtin/subagents/src/extension/startup-maintenance.ts +2 -2
- package/dist/builtin/subagents/src/intercom/result-intercom.ts +0 -127
- package/dist/builtin/subagents/src/runs/foreground/inprocess-run-sync.ts +1 -3
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +15 -106
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +0 -3
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +2 -13
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +2 -12
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +1 -20
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +0 -6
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +10 -21
- package/dist/builtin/subagents/src/runs/inprocess/attempt-handles.ts +104 -0
- package/dist/builtin/subagents/src/runs/inprocess/index.ts +10 -21
- package/dist/builtin/subagents/src/runs/inprocess/prompt-behavior.ts +2 -3
- package/dist/builtin/subagents/src/runs/inprocess/runner.ts +11 -32
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/temp-cleanup.ts +69 -0
- package/dist/builtin/subagents/src/shared/model-resolution.ts +1 -1
- package/dist/builtin/subagents/src/shared/types-config.ts +0 -4
- package/dist/builtin/subagents/src/shared/types-depth.ts +15 -103
- package/dist/builtin/subagents/src/shared/types-foreground-state.ts +56 -0
- package/dist/builtin/subagents/src/shared/types-results.ts +1 -59
- package/dist/builtin/subagents/src/shared/types-runtime.ts +0 -2
- package/dist/builtin/subagents/src/shared/types.ts +1 -1
- package/dist/builtin/subagents/src/shared/utils.ts +1 -1
- package/dist/builtin/subagents/src/slash/slash-live-state.ts +1 -1
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/web-access/summary-review.ts +2 -2
- package/dist/builtin/web-access/web-search-summary.ts +2 -2
- package/dist/builtin/workflows/CHANGELOG.md +30 -0
- package/dist/builtin/workflows/README.md +2 -2
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +60473 -401
- package/dist/builtin/workflows/src/extension/public-types.ts +1 -1
- package/dist/builtin/workflows/src/extension/wiring.ts +1 -1
- package/dist/builtin/workflows/src/extension/workflow-heartbeat-delivery.ts +48 -4
- package/dist/builtin/workflows/src/extension/workflow-tool.ts +1 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +5 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +35 -2
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +1 -1
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-pause.ts +6 -0
- package/dist/builtin/workflows/src/tui/chat-surface-message.ts +15 -13
- package/dist/builtin/workflows/src/tui/store-widget-installer.ts +25 -2
- package/dist/bun/cli.js +1 -1
- package/dist/bun/cli.js.map +1 -1
- package/dist/bun/register-bedrock.js +2 -2
- package/dist/bun/register-bedrock.js.map +1 -1
- package/dist/cli/auth-check.d.ts +1 -1
- package/dist/cli/auth-check.d.ts.map +1 -1
- package/dist/cli/auth-check.js +1 -1
- package/dist/cli/auth-check.js.map +1 -1
- package/dist/cli/credential-print.d.ts +1 -1
- package/dist/cli/credential-print.d.ts.map +1 -1
- package/dist/cli/credential-print.js +2 -2
- package/dist/cli/credential-print.js.map +1 -1
- package/dist/cli/file-processor.d.ts +1 -1
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/initial-message.d.ts +1 -1
- package/dist/cli/initial-message.d.ts.map +1 -1
- package/dist/cli/initial-message.js.map +1 -1
- package/dist/cli/list-models.js.map +1 -1
- package/dist/core/agent-session-auto-compaction.d.ts +1 -1
- package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-auto-compaction.js +1 -1
- package/dist/core/agent-session-auto-compaction.js.map +1 -1
- package/dist/core/agent-session-events.d.ts +1 -1
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-events.js +1 -1
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-export.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +1 -1
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-message-queue.d.ts +1 -1
- package/dist/core/agent-session-message-queue.d.ts.map +1 -1
- package/dist/core/agent-session-message-queue.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +2 -2
- 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 +2 -2
- package/dist/core/agent-session-models.d.ts.map +1 -1
- package/dist/core/agent-session-models.js +2 -2
- package/dist/core/agent-session-models.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-retry.d.ts +1 -1
- package/dist/core/agent-session-retry.d.ts.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.js +1 -1
- 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 +1 -1
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +1 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session-state.d.ts +1 -1
- package/dist/core/agent-session-state.d.ts.map +1 -1
- package/dist/core/agent-session-state.js.map +1 -1
- package/dist/core/agent-session-tree.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +1 -1
- 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 +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/anthropic-thinking-guard.d.ts +1 -1
- package/dist/core/anthropic-thinking-guard.d.ts.map +1 -1
- package/dist/core/anthropic-thinking-guard.js +1 -1
- package/dist/core/anthropic-thinking-guard.js.map +1 -1
- package/dist/core/auth-storage.d.ts +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/cache-stats.d.ts +1 -1
- package/dist/core/cache-stats.d.ts.map +1 -1
- package/dist/core/cache-stats.js.map +1 -1
- package/dist/core/cloudflare-gateway-binding.d.ts +1 -1
- package/dist/core/cloudflare-gateway-binding.d.ts.map +1 -1
- package/dist/core/cloudflare-gateway-binding.js +1 -1
- package/dist/core/cloudflare-gateway-binding.js.map +1 -1
- package/dist/core/codex-fast-mode.d.ts +2 -2
- package/dist/core/codex-fast-mode.d.ts.map +1 -1
- package/dist/core/codex-fast-mode.js +3 -2
- package/dist/core/codex-fast-mode.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts +2 -2
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +2 -2
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction-runner.d.ts +2 -2
- package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
- package/dist/core/compaction/compaction-runner.js.map +1 -1
- package/dist/core/compaction/compaction-types.d.ts +2 -2
- package/dist/core/compaction/compaction-types.d.ts.map +1 -1
- package/dist/core/compaction/compaction-types.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +1 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/fallback-planner.d.ts +1 -1
- package/dist/core/compaction/fallback-planner.d.ts.map +1 -1
- package/dist/core/compaction/fallback-planner.js.map +1 -1
- package/dist/core/compaction/planner-outcome.d.ts +1 -1
- package/dist/core/compaction/planner-outcome.d.ts.map +1 -1
- package/dist/core/compaction/planner-outcome.js +1 -1
- package/dist/core/compaction/planner-outcome.js.map +1 -1
- package/dist/core/compaction/range-planner-diagnostics.d.ts +1 -1
- package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
- package/dist/core/compaction/range-planner-diagnostics.js +1 -1
- package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
- package/dist/core/compaction/range-planner.d.ts +2 -2
- package/dist/core/compaction/range-planner.d.ts.map +1 -1
- package/dist/core/compaction/range-planner.js +2 -2
- package/dist/core/compaction/range-planner.js.map +1 -1
- package/dist/core/compaction/session-summarization.d.ts +2 -2
- package/dist/core/compaction/session-summarization.d.ts.map +1 -1
- package/dist/core/compaction/session-summarization.js +2 -2
- package/dist/core/compaction/session-summarization.js.map +1 -1
- package/dist/core/compaction/transcript-serialization.d.ts +1 -1
- package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
- package/dist/core/compaction/transcript-serialization.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +1 -1
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/experimental.d.ts +1 -1
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/experimental.js.map +1 -1
- package/dist/core/export-html/tool-renderer.js.map +1 -1
- package/dist/core/extensions/agent-events.d.ts +2 -2
- package/dist/core/extensions/agent-events.d.ts.map +1 -1
- package/dist/core/extensions/agent-events.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +2 -2
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +1 -7
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/event-results.d.ts +1 -1
- package/dist/core/extensions/event-results.d.ts.map +1 -1
- package/dist/core/extensions/event-results.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +21 -9
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/provider-types.d.ts +2 -2
- package/dist/core/extensions/provider-types.d.ts.map +1 -1
- package/dist/core/extensions/provider-types.js.map +1 -1
- package/dist/core/extensions/reactive-widget.d.ts +6 -0
- package/dist/core/extensions/reactive-widget.d.ts.map +1 -1
- package/dist/core/extensions/reactive-widget.js +62 -6
- package/dist/core/extensions/reactive-widget.js.map +1 -1
- package/dist/core/extensions/runner-context.d.ts +1 -1
- package/dist/core/extensions/runner-context.d.ts.map +1 -1
- package/dist/core/extensions/runner-context.js.map +1 -1
- package/dist/core/extensions/runner-events.d.ts +1 -1
- package/dist/core/extensions/runner-events.d.ts.map +1 -1
- package/dist/core/extensions/runner-events.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +2 -2
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +2 -2
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/tool-events.d.ts +1 -1
- package/dist/core/extensions/tool-events.d.ts.map +1 -1
- package/dist/core/extensions/tool-events.js.map +1 -1
- package/dist/core/extensions/tool-types.d.ts +2 -2
- package/dist/core/extensions/tool-types.d.ts.map +1 -1
- package/dist/core/extensions/tool-types.js.map +1 -1
- package/dist/core/extensions/ui-types.d.ts +2 -0
- package/dist/core/extensions/ui-types.d.ts.map +1 -1
- package/dist/core/extensions/ui-types.js.map +1 -1
- package/dist/core/fallback-models.d.ts +1 -1
- package/dist/core/fallback-models.d.ts.map +1 -1
- package/dist/core/fallback-models.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js +14 -0
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/messages.d.ts +1 -1
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-capabilities.d.ts +1 -1
- package/dist/core/model-capabilities.d.ts.map +1 -1
- package/dist/core/model-capabilities.js.map +1 -1
- package/dist/core/model-fallback-failures.d.ts.map +1 -1
- package/dist/core/model-fallback-failures.js +18 -1
- package/dist/core/model-fallback-failures.js.map +1 -1
- package/dist/core/model-registry.d.ts +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver-cli.js.map +1 -1
- package/dist/core/model-resolver-defaults.d.ts +1 -1
- package/dist/core/model-resolver-defaults.d.ts.map +1 -1
- package/dist/core/model-resolver-defaults.js +1 -1
- package/dist/core/model-resolver-defaults.js.map +1 -1
- package/dist/core/model-resolver-initial.d.ts +1 -1
- package/dist/core/model-resolver-initial.d.ts.map +1 -1
- package/dist/core/model-resolver-initial.js.map +1 -1
- package/dist/core/model-resolver-patterns.d.ts +1 -1
- package/dist/core/model-resolver-patterns.d.ts.map +1 -1
- package/dist/core/model-resolver-patterns.js.map +1 -1
- package/dist/core/model-resolver-scope.d.ts +1 -1
- package/dist/core/model-resolver-scope.d.ts.map +1 -1
- package/dist/core/model-resolver-scope.js +1 -1
- package/dist/core/model-resolver-scope.js.map +1 -1
- package/dist/core/model-resolver-types.d.ts +1 -1
- package/dist/core/model-resolver-types.d.ts.map +1 -1
- package/dist/core/model-resolver-types.js.map +1 -1
- package/dist/core/model-runtime-auth.d.ts +1 -1
- package/dist/core/model-runtime-auth.d.ts.map +1 -1
- package/dist/core/model-runtime-auth.js.map +1 -1
- package/dist/core/model-runtime-providers.d.ts +2 -2
- package/dist/core/model-runtime-providers.d.ts.map +1 -1
- package/dist/core/model-runtime-providers.js +2 -2
- package/dist/core/model-runtime-providers.js.map +1 -1
- package/dist/core/model-runtime-restoration.d.ts +1 -1
- package/dist/core/model-runtime-restoration.d.ts.map +1 -1
- package/dist/core/model-runtime-restoration.js.map +1 -1
- package/dist/core/model-runtime-snapshot.d.ts +1 -1
- package/dist/core/model-runtime-snapshot.d.ts.map +1 -1
- package/dist/core/model-runtime-snapshot.js.map +1 -1
- package/dist/core/model-runtime-streaming.d.ts +1 -1
- package/dist/core/model-runtime-streaming.d.ts.map +1 -1
- package/dist/core/model-runtime-streaming.js +1 -1
- package/dist/core/model-runtime-streaming.js.map +1 -1
- package/dist/core/model-runtime-types.d.ts +1 -1
- package/dist/core/model-runtime-types.d.ts.map +1 -1
- package/dist/core/model-runtime-types.js.map +1 -1
- package/dist/core/model-runtime.d.ts +8 -1
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +15 -3
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/models-store.d.ts +1 -1
- package/dist/core/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/oauth-login.d.ts +1 -1
- package/dist/core/oauth-login.d.ts.map +1 -1
- package/dist/core/oauth-login.js.map +1 -1
- package/dist/core/oauth-provider-metadata.d.ts +1 -1
- package/dist/core/oauth-provider-metadata.d.ts.map +1 -1
- package/dist/core/oauth-provider-metadata.js.map +1 -1
- package/dist/core/openai-responses-payload-sanitizer.d.ts +1 -1
- package/dist/core/openai-responses-payload-sanitizer.d.ts.map +1 -1
- package/dist/core/openai-responses-payload-sanitizer.js.map +1 -1
- package/dist/core/provider-attribution.d.ts +1 -1
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/provider-composer-internal.d.ts +1 -1
- package/dist/core/provider-composer-internal.d.ts.map +1 -1
- package/dist/core/provider-composer-internal.js.map +1 -1
- package/dist/core/provider-composer.d.ts +1 -1
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +2 -2
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/provider-context-usage.d.ts.map +1 -1
- package/dist/core/provider-context-usage.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/runtime-credentials.d.ts +1 -1
- package/dist/core/runtime-credentials.d.ts.map +1 -1
- package/dist/core/runtime-credentials.js.map +1 -1
- package/dist/core/sdk-types.d.ts +1 -1
- 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 +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +30 -6
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager-core.d.ts +2 -2
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-core.js.map +1 -1
- package/dist/core/session-manager-entries.d.ts +1 -1
- package/dist/core/session-manager-entries.d.ts.map +1 -1
- package/dist/core/session-manager-entries.js.map +1 -1
- package/dist/core/session-manager-list.js.map +1 -1
- package/dist/core/session-manager-types.d.ts +1 -1
- package/dist/core/session-manager-types.d.ts.map +1 -1
- package/dist/core/session-manager-types.js.map +1 -1
- package/dist/core/session-manager-validation.js +1 -1
- package/dist/core/session-manager-validation.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +1 -0
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +11 -0
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-types.d.ts +2 -1
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/summarization-retry.d.ts +1 -1
- package/dist/core/summarization-retry.d.ts.map +1 -1
- package/dist/core/summarization-retry.js.map +1 -1
- package/dist/core/tools/bash-session-environment.d.ts +1 -1
- package/dist/core/tools/bash-session-environment.d.ts.map +1 -1
- package/dist/core/tools/bash-session-environment.js.map +1 -1
- package/dist/core/tools/oversized-tool-result.d.ts +1 -1
- package/dist/core/tools/oversized-tool-result.d.ts.map +1 -1
- package/dist/core/tools/oversized-tool-result.js.map +1 -1
- package/dist/core/tools/read-url.d.ts +1 -1
- package/dist/core/tools/read-url.d.ts.map +1 -1
- package/dist/core/tools/read-url.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts +1 -1
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/resource-selectors.d.ts +1 -1
- package/dist/core/tools/resource-selectors.d.ts.map +1 -1
- package/dist/core/tools/resource-selectors.js +2 -7
- package/dist/core/tools/resource-selectors.js.map +1 -1
- package/dist/core/typebox-compat.js +1 -1
- package/dist/core/typebox-compat.js.map +1 -1
- package/dist/core/usage-totals.d.ts +1 -1
- package/dist/core/usage-totals.d.ts.map +1 -1
- package/dist/core/usage-totals.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +1 -1
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/main-app-mode.d.ts +1 -1
- package/dist/main-app-mode.d.ts.map +1 -1
- package/dist/main-app-mode.js.map +1 -1
- package/dist/main-session-options.js +1 -1
- package/dist/main-session-options.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.d.ts +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +1 -1
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts +1 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.js +1 -1
- package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.js +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-context.js +26 -0
- package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.js +7 -2
- package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts +1 -0
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.js +1 -0
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.d.ts +1 -1
- package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.js +1 -1
- package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.js +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +2 -0
- package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
- package/dist/modes/interactive/model-catalog-refresh.d.ts +1 -1
- package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -1
- package/dist/modes/interactive/model-catalog-refresh.js.map +1 -1
- package/dist/modes/interactive/streaming-assistant-message.d.ts +1 -1
- package/dist/modes/interactive/streaming-assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/streaming-assistant-message.js.map +1 -1
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts +3 -0
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-custom-ui.js +26 -3
- package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/remote-component.d.ts +2 -1
- package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -1
- package/dist/modes/interactive-engine/remote-component.js +14 -0
- package/dist/modes/interactive-engine/remote-component.js.map +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
- package/dist/modes/json-event.d.ts +1 -1
- package/dist/modes/json-event.d.ts.map +1 -1
- package/dist/modes/json-event.js.map +1 -1
- package/dist/modes/print-mode.d.ts +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.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-client.d.ts +1 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-extension-ui.js +4 -1
- package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.d.ts +1 -1
- package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +2 -2
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/utils/tool-result-images.d.ts +1 -1
- package/dist/utils/tool-result-images.d.ts.map +1 -1
- package/dist/utils/tool-result-images.js.map +1 -1
- package/docs/custom-provider.md +11 -8
- package/docs/development.md +0 -2
- package/docs/extensions.md +2 -2
- package/docs/json.md +1 -1
- package/docs/models/artificial-analysis-index.md +2 -2
- package/docs/models/model-selection.md +8 -8
- package/docs/models/pareto-efficiency.md +10 -10
- package/docs/models.md +9 -3
- package/docs/packages.md +1 -1
- package/docs/providers.md +5 -3
- package/docs/quickstart.md +1 -1
- package/docs/rpc.md +1 -1
- package/docs/sdk.md +2 -2
- package/docs/session-format.md +2 -2
- package/docs/settings.md +2 -1
- package/docs/subagents.md +5 -6
- package/docs/tui.md +3 -0
- package/docs/workflows.md +3 -1
- package/examples/extensions/README.md +1 -1
- package/examples/extensions/custom-footer.ts +1 -1
- package/examples/extensions/custom-provider-anthropic/index.ts +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +1 -1
- package/examples/extensions/handoff.ts +2 -2
- package/examples/extensions/hello.ts +1 -1
- package/examples/extensions/plan-mode/index.ts +1 -1
- package/examples/extensions/preset.ts +1 -1
- package/examples/extensions/qna.ts +1 -1
- package/examples/extensions/subagent/display.ts +1 -1
- package/examples/extensions/subagent/runner.ts +1 -1
- package/examples/extensions/subagent/types.ts +1 -1
- package/examples/extensions/summarize.ts +2 -2
- package/examples/extensions/tool-override.ts +1 -1
- package/examples/sdk/02-custom-model.ts +1 -1
- package/examples/sdk/12-full-control.ts +1 -1
- package/examples/sdk/README.md +1 -1
- package/npm-shrinkwrap.json +54 -31
- package/package.json +3 -3
- package/dist/builtin/subagents/src/extension/fanout-child.ts +0 -259
- package/dist/builtin/subagents/src/runs/inprocess/nested-routing.ts +0 -218
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-api.ts +0 -55
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-control.ts +0 -178
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-core.ts +0 -187
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-paths.ts +0 -57
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-projection.ts +0 -42
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-registry.ts +0 -352
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-rendering.ts +0 -136
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-sanitize.ts +0 -252
- package/dist/builtin/subagents/src/shared/types-nested.ts +0 -127
- package/dist/core/copilot-env-routing.d.ts +0 -36
- package/dist/core/copilot-env-routing.d.ts.map +0 -1
- package/dist/core/copilot-env-routing.js +0 -94
- package/dist/core/copilot-env-routing.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CreateAgentSessionOptions, DefaultResourceLoaderInheritanceSnapshot } from "@bastani/atomic";
|
|
2
|
-
import type { Api, Model } from "@
|
|
2
|
+
import type { Api, Model } from "@bastani/pi-ai/compat";
|
|
3
3
|
import type { StageSessionRuntime } from "../runs/foreground/stage-runner.js";
|
|
4
4
|
import type { SessionManager } from "../shared/persistence-restore.js";
|
|
5
5
|
import type { RunStatus, StageStatus } from "../shared/store-types.js";
|
|
@@ -327,7 +327,7 @@ function makeWorkflowStageOrchestrationContext(
|
|
|
327
327
|
workflowRunId: meta.runId,
|
|
328
328
|
workflowStageId: meta.stageId,
|
|
329
329
|
workflowStageName: meta.stageName,
|
|
330
|
-
constraints: { disableWorkflowTool: true
|
|
330
|
+
constraints: { disableWorkflowTool: true },
|
|
331
331
|
...(intercomGroup ? { intercomGroup } : {}),
|
|
332
332
|
lateMessageRouter: {
|
|
333
333
|
routeMessage(message, options) {
|
|
@@ -24,6 +24,13 @@ export const defaultWorkflowHeartbeatTimerApi: WorkflowHeartbeatTimerApi = {
|
|
|
24
24
|
*/
|
|
25
25
|
export const WORKFLOW_HEARTBEAT_MAX_DELIVERY_ATTEMPTS = 5;
|
|
26
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Maximum time a single host admission may remain in flight. Two minutes is
|
|
29
|
+
* comfortably shorter than the default fifteen-minute heartbeat cadence while
|
|
30
|
+
* leaving a legitimately slow host enough time to admit a card.
|
|
31
|
+
*/
|
|
32
|
+
export const WORKFLOW_HEARTBEAT_DELIVERY_TIMEOUT_MS = 120_000;
|
|
33
|
+
|
|
27
34
|
interface WorkflowHeartbeatDeliveryOptions {
|
|
28
35
|
readonly emit: (details: WorkflowHeartbeatEventDetails) => boolean | Promise<boolean>;
|
|
29
36
|
/**
|
|
@@ -83,6 +90,9 @@ export function createWorkflowHeartbeatDelivery(options: WorkflowHeartbeatDelive
|
|
|
83
90
|
const retryTimers = new Set<WorkflowHeartbeatTimerHandle>();
|
|
84
91
|
const queue: WorkflowHeartbeatEventDetails[] = [];
|
|
85
92
|
let attempt = 0;
|
|
93
|
+
let attemptToken = 0;
|
|
94
|
+
let activeAttemptToken: number | undefined;
|
|
95
|
+
let watchdogHandle: WorkflowHeartbeatTimerHandle | undefined;
|
|
86
96
|
let running = false;
|
|
87
97
|
let active = true;
|
|
88
98
|
/**
|
|
@@ -97,8 +107,16 @@ export function createWorkflowHeartbeatDelivery(options: WorkflowHeartbeatDelive
|
|
|
97
107
|
*/
|
|
98
108
|
let headDiscarded = false;
|
|
99
109
|
|
|
110
|
+
const clearWatchdog = (): void => {
|
|
111
|
+
if (watchdogHandle === undefined) return;
|
|
112
|
+
options.timers.clearTimeout(watchdogHandle);
|
|
113
|
+
watchdogHandle = undefined;
|
|
114
|
+
};
|
|
115
|
+
|
|
100
116
|
/** Finish the head identity and start the next one, in handover order. */
|
|
101
117
|
const settleHead = (details: WorkflowHeartbeatEventDetails, delivered: boolean): void => {
|
|
118
|
+
clearWatchdog();
|
|
119
|
+
activeAttemptToken = undefined;
|
|
102
120
|
queue.shift();
|
|
103
121
|
attempt = 0;
|
|
104
122
|
running = false;
|
|
@@ -123,7 +141,12 @@ export function createWorkflowHeartbeatDelivery(options: WorkflowHeartbeatDelive
|
|
|
123
141
|
running = true;
|
|
124
142
|
attempt += 1;
|
|
125
143
|
const thisAttempt = attempt;
|
|
144
|
+
const thisAttemptToken = ++attemptToken;
|
|
145
|
+
activeAttemptToken = thisAttemptToken;
|
|
126
146
|
const settle = (delivered: boolean): void => {
|
|
147
|
+
if (activeAttemptToken !== thisAttemptToken) return;
|
|
148
|
+
activeAttemptToken = undefined;
|
|
149
|
+
clearWatchdog();
|
|
127
150
|
// A discarded head settles straight through, whatever the host answered:
|
|
128
151
|
// no retry, and the real result is still reported once.
|
|
129
152
|
if (delivered || headDiscarded || thisAttempt >= WORKFLOW_HEARTBEAT_MAX_DELIVERY_ATTEMPTS || !active) {
|
|
@@ -141,9 +164,29 @@ export function createWorkflowHeartbeatDelivery(options: WorkflowHeartbeatDelive
|
|
|
141
164
|
handle.unref?.();
|
|
142
165
|
retryTimers.add(handle);
|
|
143
166
|
};
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
167
|
+
let result: boolean | Promise<boolean>;
|
|
168
|
+
try {
|
|
169
|
+
result = options.emit(details);
|
|
170
|
+
} catch {
|
|
171
|
+
// A host can throw synchronously before returning its admission result.
|
|
172
|
+
// Treat that exactly like an asynchronous rejection so the failed head
|
|
173
|
+
// enters capped backoff instead of leaving `running` set forever.
|
|
174
|
+
settle(false);
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
if (typeof result === "boolean") {
|
|
178
|
+
settle(result);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const watchdog = options.timers.setTimeout(() => {
|
|
182
|
+
if (activeAttemptToken !== thisAttemptToken) return;
|
|
183
|
+
activeAttemptToken = undefined;
|
|
184
|
+
watchdogHandle = undefined;
|
|
185
|
+
settleHead(details, false);
|
|
186
|
+
}, WORKFLOW_HEARTBEAT_DELIVERY_TIMEOUT_MS);
|
|
187
|
+
watchdogHandle = watchdog;
|
|
188
|
+
watchdog.unref?.();
|
|
189
|
+
void result.then(settle, () => settle(false));
|
|
147
190
|
};
|
|
148
191
|
|
|
149
192
|
const deliver = (details: WorkflowHeartbeatEventDetails): void => {
|
|
@@ -187,11 +230,12 @@ export function createWorkflowHeartbeatDelivery(options: WorkflowHeartbeatDelive
|
|
|
187
230
|
discard,
|
|
188
231
|
dispose() {
|
|
189
232
|
active = false;
|
|
233
|
+
clearWatchdog();
|
|
190
234
|
for (const handle of retryTimers) options.timers.clearTimeout(handle);
|
|
191
235
|
retryTimers.clear();
|
|
192
236
|
queue.length = 0;
|
|
193
237
|
// An in-flight send is left to settle on its own; `active` keeps it from
|
|
194
|
-
// starting a further retry.
|
|
238
|
+
// starting a further retry. Its watchdog is cleared with the other timers.
|
|
195
239
|
},
|
|
196
240
|
};
|
|
197
241
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getSupportedThinkingLevels } from "@
|
|
1
|
+
import { getSupportedThinkingLevels } from "@bastani/pi-ai/compat";
|
|
2
2
|
import { inspectRun } from "../runs/background/status.js";
|
|
3
3
|
import { store } from "../shared/store.js";
|
|
4
4
|
import type { WorkflowExecutionPolicy } from "../shared/types.js";
|
|
@@ -274,6 +274,11 @@ export function createWorkflowStageFactory(input: {
|
|
|
274
274
|
};
|
|
275
275
|
const dropStageControlForCompletion = async (): Promise<void> => {
|
|
276
276
|
runtime.dropStageControlHandle();
|
|
277
|
+
// A registry/session clear can release a confirmed-paused handle before
|
|
278
|
+
// its owner resumes. The handle is then ownerless, so normal completion
|
|
279
|
+
// must make the second disposal call that drains the controller's deferred
|
|
280
|
+
// cleanup instead of retaining the session and its listeners forever.
|
|
281
|
+
if (state.liveHandleReleased) await disposeInnerContext();
|
|
277
282
|
};
|
|
278
283
|
const throwIfStageMutationBlocked = (): void => {
|
|
279
284
|
if (state.stageClosedByWorkflowExit) {
|
|
@@ -229,6 +229,8 @@ export class StageSessionController {
|
|
|
229
229
|
private unresolvedContextOverflowMessage: string | undefined;
|
|
230
230
|
private generationSealed = false;
|
|
231
231
|
private disposed = false;
|
|
232
|
+
private pendingDisposal = false;
|
|
233
|
+
private disposalPromise: Promise<void> | undefined;
|
|
232
234
|
private pendingThinkingLevel: Parameters<StageContext["setThinkingLevel"]>[0] | undefined;
|
|
233
235
|
private readonly pendingListeners = new Set<(event: StageSessionEvent) => void>();
|
|
234
236
|
private readonly listenerUnsubscribes = new Map<(event: StageSessionEvent) => void, () => void>();
|
|
@@ -530,6 +532,17 @@ export class StageSessionController {
|
|
|
530
532
|
}
|
|
531
533
|
|
|
532
534
|
async disposeAll(): Promise<void> {
|
|
535
|
+
if (this.disposalPromise !== undefined) return this.disposalPromise;
|
|
536
|
+
if (this.pauseControl.isConfirmedPaused()) {
|
|
537
|
+
this.pendingDisposal = true;
|
|
538
|
+
return;
|
|
539
|
+
}
|
|
540
|
+
this.pendingDisposal = false;
|
|
541
|
+
this.disposalPromise = this.finishDisposeAll();
|
|
542
|
+
return this.disposalPromise;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
private async finishDisposeAll(): Promise<void> {
|
|
533
546
|
this.disposed = true;
|
|
534
547
|
const reason = new Error(`atomic-workflows: stage "${this.opts.stageName}" session has been disposed`);
|
|
535
548
|
this.markAbort(reason);
|
|
@@ -546,11 +559,25 @@ export class StageSessionController {
|
|
|
546
559
|
await disposeStageSession(this.session);
|
|
547
560
|
}
|
|
548
561
|
|
|
562
|
+
/**
|
|
563
|
+
* A disposal deferred by a confirmed pause still has to happen once that
|
|
564
|
+
* pause is gone. Abort/kill rejects the parked waiter, so the session and its
|
|
565
|
+
* listeners must be torn down here rather than leaked.
|
|
566
|
+
*/
|
|
567
|
+
private async drainPendingDisposal(): Promise<void> {
|
|
568
|
+
if (!this.pendingDisposal) return;
|
|
569
|
+
await this.disposeAll();
|
|
570
|
+
}
|
|
571
|
+
|
|
549
572
|
async abort(): Promise<void> {
|
|
550
573
|
const reason = new DOMException("stage aborted", "AbortError");
|
|
551
574
|
this.markAbort(reason);
|
|
552
575
|
this.pauseControl.reject(reason);
|
|
553
|
-
|
|
576
|
+
try {
|
|
577
|
+
await this.session?.abort();
|
|
578
|
+
} finally {
|
|
579
|
+
await this.drainPendingDisposal();
|
|
580
|
+
}
|
|
554
581
|
}
|
|
555
582
|
requestPause(): Promise<void> {
|
|
556
583
|
const pause = this.pauseControl.requestPause();
|
|
@@ -572,7 +599,12 @@ export class StageSessionController {
|
|
|
572
599
|
beforeResolve?: (result: StageSessionPauseResumeResult) => void,
|
|
573
600
|
beforeRelease?: () => void,
|
|
574
601
|
): Promise<StageSessionPauseResumeResult> {
|
|
575
|
-
return this.pauseControl.resume(message, beforeResolve, beforeRelease)
|
|
602
|
+
return this.pauseControl.resume(message, beforeResolve, beforeRelease).then((result) => {
|
|
603
|
+
// Ownership has returned to live execution, but a handle released while
|
|
604
|
+
// paused may already be gone from the registry. Keep the deferred-disposal
|
|
605
|
+
// marker so terminal teardown can drain it for this ownerless execution.
|
|
606
|
+
return result;
|
|
607
|
+
});
|
|
576
608
|
}
|
|
577
609
|
isPaused(): boolean {
|
|
578
610
|
return this.pauseControl.isPaused();
|
|
@@ -600,6 +632,7 @@ export class StageSessionController {
|
|
|
600
632
|
this.markAbort(reason);
|
|
601
633
|
void this.session?.abort().catch(() => {});
|
|
602
634
|
this.pauseControl.reject(reason);
|
|
635
|
+
void this.drainPendingDisposal().catch(() => {});
|
|
603
636
|
};
|
|
604
637
|
if (signal.aborted) onAbort();
|
|
605
638
|
else signal.addEventListener("abort", onAbort, { once: true });
|
|
@@ -19,7 +19,7 @@ function workflowOrchestrationContext(
|
|
|
19
19
|
workflowRunId: meta.runId,
|
|
20
20
|
workflowStageId: meta.stageId,
|
|
21
21
|
workflowStageName: meta.stageName,
|
|
22
|
-
constraints: { disableWorkflowTool: true as const
|
|
22
|
+
constraints: { disableWorkflowTool: true as const },
|
|
23
23
|
};
|
|
24
24
|
const intercomGroup = stageHasIntercomAccess(stageOptions)
|
|
25
25
|
? resolveStageGroup(stageOptions, meta.workflowIntercomGroup)
|
|
@@ -29,6 +29,7 @@ interface PauseRequest {
|
|
|
29
29
|
readonly abortBoundary: PromiseWithResolvers<void>;
|
|
30
30
|
readonly runnerOwnedDeliveries: Set<Promise<void>>;
|
|
31
31
|
readonly nativeQueuePause?: NativeQueuePauseControl;
|
|
32
|
+
confirmed: boolean;
|
|
32
33
|
resumePromise?: Promise<StageSessionPauseResumeResult>;
|
|
33
34
|
}
|
|
34
35
|
|
|
@@ -47,6 +48,9 @@ export class StageSessionPause {
|
|
|
47
48
|
isPaused(): boolean {
|
|
48
49
|
return this.request !== null;
|
|
49
50
|
}
|
|
51
|
+
isConfirmedPaused(): boolean {
|
|
52
|
+
return this.request?.confirmed === true;
|
|
53
|
+
}
|
|
50
54
|
|
|
51
55
|
async requestPause(): Promise<void> {
|
|
52
56
|
if (this.request) return this.request.abortBoundary.promise;
|
|
@@ -56,6 +60,7 @@ export class StageSessionPause {
|
|
|
56
60
|
deferred: Promise.withResolvers<PauseResumeResolution>(),
|
|
57
61
|
abortBoundary: Promise.withResolvers<void>(),
|
|
58
62
|
runnerOwnedDeliveries: new Set(),
|
|
63
|
+
confirmed: false,
|
|
59
64
|
...(nativeQueuePause === undefined ? {} : { nativeQueuePause }),
|
|
60
65
|
};
|
|
61
66
|
void request.deferred.promise.catch(() => {});
|
|
@@ -67,6 +72,7 @@ export class StageSessionPause {
|
|
|
67
72
|
await session?.abort();
|
|
68
73
|
request.abortBoundary.resolve();
|
|
69
74
|
await request.abortBoundary.promise;
|
|
75
|
+
request.confirmed = true;
|
|
70
76
|
} catch (error) {
|
|
71
77
|
failed = true;
|
|
72
78
|
request.abortBoundary.reject(error);
|
|
@@ -221,19 +221,21 @@ export function emitChatSurface(
|
|
|
221
221
|
// the stored `content`. Default to a complete printable rendering so
|
|
222
222
|
// headless `/workflow list|status|status <id>` is useful without a TUI.
|
|
223
223
|
const content = options.content ?? renderChatSurfacePlainText(payload);
|
|
224
|
-
(
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
224
|
+
void send.call(
|
|
225
|
+
pi,
|
|
226
|
+
{
|
|
227
|
+
customType: CHAT_SURFACE_CUSTOM_TYPE,
|
|
228
|
+
content,
|
|
229
|
+
display: true,
|
|
230
|
+
details: payload,
|
|
231
|
+
},
|
|
232
|
+
// A workflow card is an already-rendered transcript surface, not a request
|
|
233
|
+
// for a model turn. Without this, a card emitted while a turn is streaming
|
|
234
|
+
// is queued as steering behind that turn and does not appear until the turn
|
|
235
|
+
// ends — so `/workflow` dispatch/list/status cards raced any lifecycle
|
|
236
|
+
// notice that had just started a turn.
|
|
237
|
+
{ triggerTurn: false },
|
|
238
|
+
);
|
|
237
239
|
}
|
|
238
240
|
|
|
239
241
|
// ---------------------------------------------------------------------------
|
|
@@ -62,6 +62,8 @@ export type WidgetRenderState = ReactiveWidgetRenderState;
|
|
|
62
62
|
interface UiSlice {
|
|
63
63
|
setWidget?: (key: string, factory: WidgetFactory | undefined, opts?: { placement?: string }) => void;
|
|
64
64
|
requestRender?: () => void;
|
|
65
|
+
onWidgetRelease?: (key: string, listener: () => void) => () => void;
|
|
66
|
+
notify?: (message: string, type?: "info" | "warning" | "error") => void;
|
|
65
67
|
}
|
|
66
68
|
|
|
67
69
|
interface TimerApi extends ReactiveWidgetTimerApi {}
|
|
@@ -82,6 +84,15 @@ export interface LiveWidgetAPI {
|
|
|
82
84
|
|
|
83
85
|
const WIDGET_KEY = "workflow.run";
|
|
84
86
|
|
|
87
|
+
function reportWidgetFailure(ui: UiSlice | undefined, message: string): void {
|
|
88
|
+
if (ui?.notify) {
|
|
89
|
+
ui.notify.call(ui, message, "warning");
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
console.error(message);
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
|
|
85
96
|
function liveWidgetSnapshot(storeInstance: Store): StoreSnapshot {
|
|
86
97
|
return {
|
|
87
98
|
runs: storeInstance.runs(),
|
|
@@ -100,13 +111,22 @@ export function installStoreWidget(
|
|
|
100
111
|
timers: TimerApi = defaultTimerApi,
|
|
101
112
|
): () => void {
|
|
102
113
|
const ui = pi.ui;
|
|
103
|
-
if (!ui?.setWidget)
|
|
114
|
+
if (!ui?.setWidget) {
|
|
115
|
+
// An absent ui slice is normal during extension load: factories run
|
|
116
|
+
// before the host binds ctx.ui, and session_start re-installs against
|
|
117
|
+
// the real UI. Only a present-but-widget-less ui names a degraded host.
|
|
118
|
+
if (ui) reportWidgetFailure(ui, "Workflow progress widget is unavailable in this host.");
|
|
119
|
+
return () => {};
|
|
120
|
+
}
|
|
121
|
+
const setWidget = ui.setWidget;
|
|
104
122
|
|
|
105
123
|
const requestRender = ui.requestRender;
|
|
124
|
+
const onWidgetRelease = ui.onWidgetRelease;
|
|
106
125
|
const controller = installReactiveWidget<StoreSnapshot, unknown>({
|
|
107
126
|
ui: {
|
|
108
|
-
setWidget: (key, factory, opts) =>
|
|
127
|
+
setWidget: (key, factory, opts) => setWidget.call(ui, key, factory, opts),
|
|
109
128
|
...(requestRender ? { requestRender: () => requestRender.call(ui) } : {}),
|
|
129
|
+
...(onWidgetRelease ? { onWidgetRelease: (key, listener) => onWidgetRelease.call(ui, key, listener) } : {}),
|
|
110
130
|
},
|
|
111
131
|
key: WIDGET_KEY,
|
|
112
132
|
placement: "belowEditor",
|
|
@@ -121,6 +141,9 @@ export function installStoreWidget(
|
|
|
121
141
|
// writes that fight native main-chat scrollback).
|
|
122
142
|
requestRenderOnStateNoop: false,
|
|
123
143
|
isStaleError: isStaleExtensionContextError,
|
|
144
|
+
onMountError: (error) => {
|
|
145
|
+
reportWidgetFailure(ui, `Workflow progress widget could not mount: ${error.message}`);
|
|
146
|
+
},
|
|
124
147
|
});
|
|
125
148
|
|
|
126
149
|
return () => controller.dispose();
|
package/dist/bun/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { registerBunOAuthFlows } from "@
|
|
2
|
+
import { registerBunOAuthFlows } from "@bastani/pi-ai/bun-oauth";
|
|
3
3
|
// Register before the application graph loads so Bun's standalone compiler embeds every login adapter.
|
|
4
4
|
registerBunOAuthFlows();
|
|
5
5
|
import { APP_NAME } from "../config.js";
|
package/dist/bun/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bun/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/bun/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,uGAAuG;AACvG,qBAAqB,EAAE,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;AACzB,OAAO,CAAC,WAAW,GAAG,CAAC,GAAG,EAAE,GAAE,CAAC,CAA+B,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,iBAAiB,EAAE,CAAC;AAEpB,0EAA0E;AAC1E,mDAAmD;AACnD,KAAK,MAAM,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC","sourcesContent":["#!/usr/bin/env node\nimport { registerBunOAuthFlows } from \"@bastani/pi-ai/bun-oauth\";\n\n// Register before the application graph loads so Bun's standalone compiler embeds every login adapter.\nregisterBunOAuthFlows();\n\nimport { APP_NAME } from \"../config.ts\";\n\nprocess.title = APP_NAME;\nprocess.emitWarning = (() => {}) as typeof process.emitWarning;\n\nimport { restoreSandboxEnv } from \"./restore-sandbox-env.ts\";\n\nrestoreSandboxEnv();\n\n// No top-level await: the compiled binary is built with --bytecode (CJS),\n// which forbids TLA anywhere in the bundled graph.\nvoid import(\"./register-bedrock.ts\").then(() => import(\"../cli.ts\"));\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { bedrockProviderModule } from "@
|
|
2
|
-
import { setBedrockProviderModule } from "@
|
|
1
|
+
import { bedrockProviderModule } from "@bastani/pi-ai/bedrock-provider";
|
|
2
|
+
import { setBedrockProviderModule } from "@bastani/pi-ai/compat";
|
|
3
3
|
setBedrockProviderModule(bedrockProviderModule);
|
|
4
4
|
//# sourceMappingURL=register-bedrock.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-bedrock.js","sourceRoot":"","sources":["../../src/bun/register-bedrock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"register-bedrock.js","sourceRoot":"","sources":["../../src/bun/register-bedrock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,wBAAwB,CAAC,qBAAqB,CAAC,CAAC","sourcesContent":["import { bedrockProviderModule } from \"@bastani/pi-ai/bedrock-provider\";\nimport { setBedrockProviderModule } from \"@bastani/pi-ai/compat\";\n\nsetBedrockProviderModule(bedrockProviderModule);\n"]}
|
package/dist/cli/auth-check.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-check.d.ts","sourceRoot":"","sources":["../../src/cli/auth-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,eAAe,EAAe,MAAM,
|
|
1
|
+
{"version":3,"file":"auth-check.d.ts","sourceRoot":"","sources":["../../src/cli/auth-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,eAAe,EAAe,MAAM,gBAAgB,CAAC;AAEpF,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAsC,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEnF,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;AAChE,MAAM,MAAM,eAAe,GACxB,oBAAoB,GACpB,4BAA4B,GAC5B,oBAAoB,GACpB,0BAA0B,GAC1B,eAAe,CAAC;AAEnB,MAAM,MAAM,eAAe,GACxB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAA;CAAE,GACpE;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GAClE;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,CAAC;AAOrE,wBAAsB,iBAAiB,CACtC,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,OAAO,GAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,eAAe,CAAA;CAAuB,GAC/E,OAAO,CAAC,eAAe,CAAC,CAqC1B;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMnH;AAUD,kGAAkG;AAClG,wBAAsB,qBAAqB,CAC1C,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,eAAe,EAC5B,OAAO,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAa7B;AAED,wBAAsB,2BAA2B,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CAarG"}
|
package/dist/cli/auth-check.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ModelsError } from "@
|
|
1
|
+
import { ModelsError } from "@bastani/pi-ai";
|
|
2
2
|
import { findExactModelReferenceMatch, resolveCliModel } from "../core/model-resolver.js";
|
|
3
3
|
import { ModelRuntime } from "../core/model-runtime.js";
|
|
4
4
|
import { InMemoryCodingAgentModelsStore } from "../core/models-store.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-check.js","sourceRoot":"","sources":["../../src/cli/auth-check.ts"],"names":[],"mappings":"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","sourcesContent":["import { type AuthResult, type CredentialStore, ModelsError } from \"@earendil-works/pi-ai\";\nimport { findExactModelReferenceMatch, resolveCliModel } from \"../core/model-resolver.ts\";\nimport { ModelRuntime } from \"../core/model-runtime.js\";\nimport { InMemoryCodingAgentModelsStore } from \"../core/models-store.ts\";\nimport type { Args } from \"./args.ts\";\nimport { AuthCommandError, validateAuthCheckArgs } from \"./auth-command.ts\";\nimport { DEFAULT_BEARER_TOKEN_MIN_EXPIRY_MS, Secret } from \"./credential-print.ts\";\n\nexport type AuthCheckStatus = \"ready\" | \"not_ready\" | \"invalid\";\nexport type AuthCheckReason =\n\t| \"provider_not_found\"\n\t| \"credentials_not_configured\"\n\t| \"credential_expired\"\n\t| \"credential_not_available\"\n\t| \"invalid_state\";\n\nexport type AuthCheckResult =\n\t| { status: \"ready\"; provider: string; authType: \"api_key\" | \"oauth\" }\n\t| { status: \"not_ready\"; provider: string; reason: AuthCheckReason }\n\t| { status: \"invalid\"; provider?: string; reason: \"invalid_state\" };\n\nasync function storedOAuthIsExpired(providerId: string, credentials: CredentialStore | undefined): Promise<boolean> {\n\tconst credential = await credentials?.read(providerId);\n\treturn credential?.type === \"oauth\" && Date.now() >= credential.expires;\n}\n\nexport async function checkProviderAuth(\n\targs: Args,\n\tmodelRuntime: ModelRuntime,\n\toptions: { refresh: boolean; credentials?: CredentialStore } = { refresh: false },\n): Promise<AuthCheckResult> {\n\tconst { provider: cliProvider, model: cliModel } = validateAuthCheckArgs(args);\n\tlet provider = cliProvider;\n\tif (cliModel) {\n\t\tconst resolved = resolveCliModel({ cliProvider, cliModel, modelRuntime });\n\t\tif (resolved.error || !resolved.model) {\n\t\t\tthrow new AuthCommandError(resolved.error ?? `Unable to resolve model \"${cliModel}\"`);\n\t\t}\n\t\tprovider = resolved.model.provider;\n\t}\n\tif (!provider) throw new AuthCommandError(\"Unable to resolve an auth provider\");\n\tif (modelRuntime.getError()) {\n\t\treturn { status: \"invalid\", provider, reason: \"invalid_state\" };\n\t}\n\tif (!modelRuntime.getProvider(provider)) {\n\t\treturn { status: \"not_ready\", provider, reason: \"provider_not_found\" };\n\t}\n\ttry {\n\t\tconst auth = await modelRuntime.checkAuth(provider);\n\t\tif (!auth) return { status: \"not_ready\", provider, reason: \"credentials_not_configured\" };\n\t\tif (options.refresh) {\n\t\t\tif (!(await modelRuntime.getAuth(provider))) {\n\t\t\t\treturn { status: \"not_ready\", provider, reason: \"credentials_not_configured\" };\n\t\t\t}\n\t\t} else if (auth.type === \"oauth\" && (await storedOAuthIsExpired(provider, options.credentials))) {\n\t\t\t// checkAuth reports an OAuth credential's kind without considering its\n\t\t\t// expiry. A no-refresh probe cannot rescue an expired token, so report\n\t\t\t// it as not ready instead of claiming the next request would work.\n\t\t\treturn { status: \"not_ready\", provider, reason: \"credential_expired\" };\n\t\t}\n\t\treturn { status: \"ready\", provider, authType: auth.type };\n\t} catch (error) {\n\t\tif (error instanceof ModelsError && error.code === \"oauth\") {\n\t\t\treturn { status: \"not_ready\", provider, reason: \"credential_not_available\" };\n\t\t}\n\t\treturn { status: \"invalid\", provider, reason: \"invalid_state\" };\n\t}\n}\n\n/**\n * A credential export must name one target, not accept the CLI resolver's fuzzy\n * cross-provider match. Provider flags are explicit; a model-only export is\n * explicit only when its exact reference resolves uniquely to the provider.\n */\nexport function hasExplicitCredentialExportTarget(args: Args, modelRuntime: ModelRuntime, provider: string): boolean {\n\tconst { provider: cliProvider, model: cliModel } = validateAuthCheckArgs(args);\n\tif (cliProvider) return true;\n\tif (!cliModel) return false;\n\tconst exactModel = findExactModelReferenceMatch(cliModel, [...modelRuntime.getModels()]);\n\treturn exactModel?.provider.toLowerCase() === provider.toLowerCase();\n}\n\nfunction getAuthCredential(auth: AuthResult | undefined): string | undefined {\n\tif (auth?.auth.apiKey) return auth.auth.apiKey;\n\tconst authorization = Object.entries(auth?.auth.headers ?? {}).find(\n\t\t([name]) => name.toLowerCase() === \"authorization\",\n\t)?.[1];\n\treturn typeof authorization === \"string\" ? /^Bearer\\s+(.+)$/iu.exec(authorization)?.[1] : undefined;\n}\n\n/** Resolve the credential that the checked provider would use, without exposing it to callers. */\nexport async function getProviderCredential(\n\tproviderId: string,\n\tmodelRuntime: ModelRuntime,\n\tcredentials: CredentialStore,\n\toptions: { refresh: boolean },\n): Promise<Secret | undefined> {\n\tif (!options.refresh) {\n\t\tconst stored = await credentials.read(providerId);\n\t\tif (stored?.type === \"oauth\") {\n\t\t\treturn stored.expires - Date.now() >= DEFAULT_BEARER_TOKEN_MIN_EXPIRY_MS\n\t\t\t\t? new Secret(stored.access)\n\t\t\t\t: undefined;\n\t\t}\n\t}\n\tconst credential = getAuthCredential(\n\t\tawait modelRuntime.getAuth(providerId, { minOAuthValidityMs: DEFAULT_BEARER_TOKEN_MIN_EXPIRY_MS }),\n\t);\n\treturn credential === undefined ? undefined : new Secret(credential);\n}\n\nexport async function createAuthCheckModelRuntime(credentials: CredentialStore): Promise<ModelRuntime> {\n\tconst runtime = await ModelRuntime.create({\n\t\tcredentials,\n\t\tmodelsStore: new InMemoryCodingAgentModelsStore(),\n\t\tallowModelNetwork: false,\n\t\trefreshOnCreate: false,\n\t});\n\t// The create-time refresh is intentionally skipped, so the snapshot has not\n\t// yet learned which stored providers are configured. Publish that metadata\n\t// without a catalog refresh, provider probe, network call, or auth.json write:\n\t// resolveCliModel needs it to choose a provider for an unqualified model ID.\n\tawait runtime.reloadCredentials({ refreshAvailability: false });\n\treturn runtime;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"auth-check.js","sourceRoot":"","sources":["../../src/cli/auth-check.ts"],"names":[],"mappings":"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","sourcesContent":["import { type AuthResult, type CredentialStore, ModelsError } from \"@bastani/pi-ai\";\nimport { findExactModelReferenceMatch, resolveCliModel } from \"../core/model-resolver.ts\";\nimport { ModelRuntime } from \"../core/model-runtime.js\";\nimport { InMemoryCodingAgentModelsStore } from \"../core/models-store.ts\";\nimport type { Args } from \"./args.ts\";\nimport { AuthCommandError, validateAuthCheckArgs } from \"./auth-command.ts\";\nimport { DEFAULT_BEARER_TOKEN_MIN_EXPIRY_MS, Secret } from \"./credential-print.ts\";\n\nexport type AuthCheckStatus = \"ready\" | \"not_ready\" | \"invalid\";\nexport type AuthCheckReason =\n\t| \"provider_not_found\"\n\t| \"credentials_not_configured\"\n\t| \"credential_expired\"\n\t| \"credential_not_available\"\n\t| \"invalid_state\";\n\nexport type AuthCheckResult =\n\t| { status: \"ready\"; provider: string; authType: \"api_key\" | \"oauth\" }\n\t| { status: \"not_ready\"; provider: string; reason: AuthCheckReason }\n\t| { status: \"invalid\"; provider?: string; reason: \"invalid_state\" };\n\nasync function storedOAuthIsExpired(providerId: string, credentials: CredentialStore | undefined): Promise<boolean> {\n\tconst credential = await credentials?.read(providerId);\n\treturn credential?.type === \"oauth\" && Date.now() >= credential.expires;\n}\n\nexport async function checkProviderAuth(\n\targs: Args,\n\tmodelRuntime: ModelRuntime,\n\toptions: { refresh: boolean; credentials?: CredentialStore } = { refresh: false },\n): Promise<AuthCheckResult> {\n\tconst { provider: cliProvider, model: cliModel } = validateAuthCheckArgs(args);\n\tlet provider = cliProvider;\n\tif (cliModel) {\n\t\tconst resolved = resolveCliModel({ cliProvider, cliModel, modelRuntime });\n\t\tif (resolved.error || !resolved.model) {\n\t\t\tthrow new AuthCommandError(resolved.error ?? `Unable to resolve model \"${cliModel}\"`);\n\t\t}\n\t\tprovider = resolved.model.provider;\n\t}\n\tif (!provider) throw new AuthCommandError(\"Unable to resolve an auth provider\");\n\tif (modelRuntime.getError()) {\n\t\treturn { status: \"invalid\", provider, reason: \"invalid_state\" };\n\t}\n\tif (!modelRuntime.getProvider(provider)) {\n\t\treturn { status: \"not_ready\", provider, reason: \"provider_not_found\" };\n\t}\n\ttry {\n\t\tconst auth = await modelRuntime.checkAuth(provider);\n\t\tif (!auth) return { status: \"not_ready\", provider, reason: \"credentials_not_configured\" };\n\t\tif (options.refresh) {\n\t\t\tif (!(await modelRuntime.getAuth(provider))) {\n\t\t\t\treturn { status: \"not_ready\", provider, reason: \"credentials_not_configured\" };\n\t\t\t}\n\t\t} else if (auth.type === \"oauth\" && (await storedOAuthIsExpired(provider, options.credentials))) {\n\t\t\t// checkAuth reports an OAuth credential's kind without considering its\n\t\t\t// expiry. A no-refresh probe cannot rescue an expired token, so report\n\t\t\t// it as not ready instead of claiming the next request would work.\n\t\t\treturn { status: \"not_ready\", provider, reason: \"credential_expired\" };\n\t\t}\n\t\treturn { status: \"ready\", provider, authType: auth.type };\n\t} catch (error) {\n\t\tif (error instanceof ModelsError && error.code === \"oauth\") {\n\t\t\treturn { status: \"not_ready\", provider, reason: \"credential_not_available\" };\n\t\t}\n\t\treturn { status: \"invalid\", provider, reason: \"invalid_state\" };\n\t}\n}\n\n/**\n * A credential export must name one target, not accept the CLI resolver's fuzzy\n * cross-provider match. Provider flags are explicit; a model-only export is\n * explicit only when its exact reference resolves uniquely to the provider.\n */\nexport function hasExplicitCredentialExportTarget(args: Args, modelRuntime: ModelRuntime, provider: string): boolean {\n\tconst { provider: cliProvider, model: cliModel } = validateAuthCheckArgs(args);\n\tif (cliProvider) return true;\n\tif (!cliModel) return false;\n\tconst exactModel = findExactModelReferenceMatch(cliModel, [...modelRuntime.getModels()]);\n\treturn exactModel?.provider.toLowerCase() === provider.toLowerCase();\n}\n\nfunction getAuthCredential(auth: AuthResult | undefined): string | undefined {\n\tif (auth?.auth.apiKey) return auth.auth.apiKey;\n\tconst authorization = Object.entries(auth?.auth.headers ?? {}).find(\n\t\t([name]) => name.toLowerCase() === \"authorization\",\n\t)?.[1];\n\treturn typeof authorization === \"string\" ? /^Bearer\\s+(.+)$/iu.exec(authorization)?.[1] : undefined;\n}\n\n/** Resolve the credential that the checked provider would use, without exposing it to callers. */\nexport async function getProviderCredential(\n\tproviderId: string,\n\tmodelRuntime: ModelRuntime,\n\tcredentials: CredentialStore,\n\toptions: { refresh: boolean },\n): Promise<Secret | undefined> {\n\tif (!options.refresh) {\n\t\tconst stored = await credentials.read(providerId);\n\t\tif (stored?.type === \"oauth\") {\n\t\t\treturn stored.expires - Date.now() >= DEFAULT_BEARER_TOKEN_MIN_EXPIRY_MS\n\t\t\t\t? new Secret(stored.access)\n\t\t\t\t: undefined;\n\t\t}\n\t}\n\tconst credential = getAuthCredential(\n\t\tawait modelRuntime.getAuth(providerId, { minOAuthValidityMs: DEFAULT_BEARER_TOKEN_MIN_EXPIRY_MS }),\n\t);\n\treturn credential === undefined ? undefined : new Secret(credential);\n}\n\nexport async function createAuthCheckModelRuntime(credentials: CredentialStore): Promise<ModelRuntime> {\n\tconst runtime = await ModelRuntime.create({\n\t\tcredentials,\n\t\tmodelsStore: new InMemoryCodingAgentModelsStore(),\n\t\tallowModelNetwork: false,\n\t\trefreshOnCreate: false,\n\t});\n\t// The create-time refresh is intentionally skipped, so the snapshot has not\n\t// yet learned which stored providers are configured. Publish that metadata\n\t// without a catalog refresh, provider probe, network call, or auth.json write:\n\t// resolveCliModel needs it to choose a provider for an unqualified model ID.\n\tawait runtime.reloadCredentials({ refreshAvailability: false });\n\treturn runtime;\n}\n"]}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* candidate loop.
|
|
23
23
|
*/
|
|
24
24
|
import { inspect } from "node:util";
|
|
25
|
-
import { ModelsError } from "@
|
|
25
|
+
import { ModelsError } from "@bastani/pi-ai";
|
|
26
26
|
import type { ModelRuntime } from "../core/model-runtime.js";
|
|
27
27
|
import type { Args } from "./args.ts";
|
|
28
28
|
export type CredentialPrintKind = "api_key" | "bearer_token";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-print.d.ts","sourceRoot":"","sources":["../../src/cli/credential-print.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"credential-print.d.ts","sourceRoot":"","sources":["../../src/cli/credential-print.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,cAAc,CAAC;AAE7D,8EAA8E;AAC9E,eAAO,MAAM,kCAAkC,QAAc,CAAC;AAE9D;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GACjC,OAAO,GACP,wBAAwB,GACxB,mBAAmB,GACnB,4BAA4B,GAC5B,eAAe,GACf,wBAAwB,GACxB,kBAAkB,GAClB,sBAAsB,GACtB,qBAAqB,CAAC;AAEzB;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,wBAAwB,EAAE,MAAM,CAU/D,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,wBAAwB,CAEtE,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,YAAY,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAKzF;CACD;AAED;;;;;;;;;;GAUG;AACH,qBAAa,MAAM;;IAGlB,YAAY,KAAK,EAAE,MAAM,EAExB;IAED,qEAAqE;IACrE,IAAI,IAAI,MAAM,CAOb;IAED,QAAQ,IAAI,KAAK,CAEhB;IAED,MAAM,IAAI,KAAK,CAEd;IAED,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,KAAK,CAE5B;IAED,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAEzB;CACD;AAED,iGAAiG;AACjG,MAAM,WAAW,oBAAoB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAmCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,oBAAoB,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAmChH;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAO3E;AA6BD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAiB5D;AAsDD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAY3D;AAED;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,6BAA6B,CAAC;AAEtE;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,qBAAqB,CAAC;AAEhE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,oBAAoB,CAe7E;AA8CD;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC9C,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,mBAAmB,EACzB,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CA6GjB"}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* candidate loop.
|
|
23
23
|
*/
|
|
24
24
|
import { inspect } from "node:util";
|
|
25
|
-
import { ModelsError } from "@
|
|
25
|
+
import { ModelsError } from "@bastani/pi-ai";
|
|
26
26
|
import { resolveCliModel } from "../core/model-resolver.js";
|
|
27
27
|
import { flushRawStdout, RawStdoutWriteError, writeRawStdoutOnce } from "../core/output-guard.js";
|
|
28
28
|
/** Bearer tokens are refreshed unless they still have this much life left. */
|
|
@@ -421,7 +421,7 @@ export async function resolveCredentialForPrint(args, modelRuntime, kind, minExp
|
|
|
421
421
|
// `checkAuth()` is the only non-mutating probe and cannot tell a candidate
|
|
422
422
|
// that will authenticate from one that will fail, which is what keeps
|
|
423
423
|
// exits 5 and 6 reachable. Nor does resolving without refreshing exist —
|
|
424
|
-
// `resolveStoredOAuth` in `@
|
|
424
|
+
// `resolveStoredOAuth` in `@bastani/pi-ai` refreshes whenever the
|
|
425
425
|
// token falls inside `max(DEFAULT_OAUTH_MINIMUM_VALIDITY_MS,
|
|
426
426
|
// minOAuthValidityMs ?? 0)`, so omitting `minOAuthValidityMs` only lowers
|
|
427
427
|
// that window to five minutes and drops the post-refresh check exit 6 is
|