@bastani/atomic 0.9.11-alpha.4 → 0.9.11-alpha.6
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 +55 -0
- package/README.md +12 -5
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/mcp/CHANGELOG.md +6 -0
- package/dist/builtin/mcp/README.md +3 -3
- package/dist/builtin/mcp/cli.js +0 -1
- package/dist/builtin/mcp/config.ts +0 -2
- package/dist/builtin/mcp/package.json +3 -3
- package/dist/builtin/mcp/types.ts +0 -1
- package/dist/builtin/subagents/CHANGELOG.md +19 -0
- package/dist/builtin/subagents/README.md +10 -1
- package/dist/builtin/subagents/agents/code-simplifier.md +47 -102
- package/dist/builtin/subagents/agents/codebase-analyzer.md +27 -130
- package/dist/builtin/subagents/agents/codebase-locator.md +24 -83
- package/dist/builtin/subagents/agents/codebase-online-researcher.md +60 -259
- package/dist/builtin/subagents/agents/codebase-pattern-finder.md +29 -207
- package/dist/builtin/subagents/agents/codebase-research-analyzer.md +28 -150
- package/dist/builtin/subagents/agents/codebase-research-locator.md +21 -118
- package/dist/builtin/subagents/agents/debugger.md +29 -65
- package/dist/builtin/subagents/agents/worker.md +23 -30
- package/dist/builtin/subagents/package.json +4 -4
- package/dist/builtin/subagents/prompts/gather-context-and-clarify.md +18 -11
- package/dist/builtin/subagents/prompts/parallel-cleanup.md +34 -33
- package/dist/builtin/subagents/prompts/parallel-context-build.md +22 -36
- package/dist/builtin/subagents/prompts/parallel-handoff-plan.md +20 -52
- package/dist/builtin/subagents/prompts/parallel-research.md +17 -41
- package/dist/builtin/subagents/prompts/parallel-review.md +23 -28
- package/dist/builtin/subagents/prompts/review-loop.md +18 -27
- package/dist/builtin/subagents/skills/subagent/SKILL.md +6 -6
- package/dist/builtin/subagents/src/extension/prompt-guidance.ts +4 -1
- package/dist/builtin/subagents/src/runs/background/async-execution-chain.ts +23 -4
- package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +2 -0
- package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +10 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner-step.ts +1 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +2 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +8 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +1 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +6 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +2 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +7 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +1 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +3 -0
- package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +1 -2
- package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +1 -0
- package/dist/builtin/subagents/src/runs/shared/pi-args.ts +5 -3
- package/dist/builtin/subagents/src/shared/settings.ts +4 -0
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/workflows/CHANGELOG.md +53 -0
- package/dist/builtin/workflows/README.md +72 -70
- package/dist/builtin/workflows/ambient.d.ts +0 -5
- package/dist/builtin/workflows/builtin/adversarial-verification-prompts.ts +7 -4
- package/dist/builtin/workflows/builtin/adversarial-verification-runner.ts +1 -1
- package/dist/builtin/workflows/builtin/adversarial-verification.ts +2 -1
- package/dist/builtin/workflows/builtin/classify-and-act-prompts.ts +5 -2
- package/dist/builtin/workflows/builtin/classify-and-act-runner.ts +5 -7
- package/dist/builtin/workflows/builtin/classify-and-act.ts +3 -2
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize-prompts.ts +6 -3
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize-runner.ts +5 -5
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize.ts +3 -2
- package/dist/builtin/workflows/builtin/generate-and-filter-prompts.ts +7 -4
- package/dist/builtin/workflows/builtin/generate-and-filter-runner.ts +6 -3
- package/dist/builtin/workflows/builtin/generate-and-filter.ts +3 -2
- package/dist/builtin/workflows/builtin/goal-artifacts.ts +1 -1
- package/dist/builtin/workflows/builtin/goal-models.ts +39 -39
- package/dist/builtin/workflows/builtin/goal-orchestrator-prompts.ts +94 -0
- package/dist/builtin/workflows/builtin/goal-prompts.ts +66 -286
- package/dist/builtin/workflows/builtin/goal-reducer.ts +1 -1
- package/dist/builtin/workflows/builtin/goal-runner.ts +72 -116
- package/dist/builtin/workflows/builtin/goal.ts +9 -8
- package/dist/builtin/workflows/builtin/index.d.ts +17 -112
- package/dist/builtin/workflows/builtin/index.ts +1 -2
- package/dist/builtin/workflows/builtin/loop-until-done-prompts.ts +20 -12
- package/dist/builtin/workflows/builtin/loop-until-done-runner.ts +3 -0
- package/dist/builtin/workflows/builtin/loop-until-done.ts +3 -2
- package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +52 -55
- package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +45 -52
- package/dist/builtin/workflows/builtin/open-claude-design-setup.ts +41 -46
- package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +16 -21
- package/dist/builtin/workflows/builtin/open-claude-design.ts +2 -1
- package/dist/builtin/workflows/builtin/ralph-core.ts +61 -57
- package/dist/builtin/workflows/builtin/ralph-forked-prompts.ts +41 -45
- package/dist/builtin/workflows/builtin/ralph-models.ts +33 -43
- package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +35 -117
- package/dist/builtin/workflows/builtin/ralph-runner.ts +81 -108
- package/dist/builtin/workflows/builtin/ralph.ts +2 -1
- package/dist/builtin/workflows/builtin/shared-prompts.ts +111 -80
- package/dist/builtin/workflows/builtin/steering-context.ts +51 -0
- package/dist/builtin/workflows/builtin/tournament-prompts.ts +21 -12
- package/dist/builtin/workflows/builtin/tournament-runner.ts +3 -0
- package/dist/builtin/workflows/builtin/tournament.ts +3 -2
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/skills/create-spec/SKILL.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +6 -8
- package/dist/builtin/workflows/skills/impeccable/reference/live.md +3 -4
- package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +2 -20
- package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +4 -42
- package/dist/builtin/workflows/skills/impeccable/scripts/hook.mjs +3 -3
- package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +2 -3
- package/dist/builtin/workflows/skills/impeccable/scripts/live-inject.mjs +0 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/live-poll.mjs +2 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/pin.mjs +4 -4
- package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +57 -252
- package/dist/builtin/workflows/skills/prompt-engineer/references/advanced_patterns.md +70 -226
- package/dist/builtin/workflows/skills/prompt-engineer/references/core_prompting.md +64 -103
- package/dist/builtin/workflows/skills/prompt-engineer/references/quality_improvement.md +81 -155
- package/dist/builtin/workflows/src/authoring.d.ts +5 -1
- package/dist/builtin/workflows/src/durable/backend.ts +68 -9
- package/dist/builtin/workflows/src/durable/boundary-lifecycle.ts +148 -0
- package/dist/builtin/workflows/src/durable/boundary-topology.ts +420 -0
- package/dist/builtin/workflows/src/durable/child-invocation.ts +14 -0
- package/dist/builtin/workflows/src/durable/child-primitive.ts +74 -44
- package/dist/builtin/workflows/src/durable/completed-catalog-stage-groups.ts +250 -0
- package/dist/builtin/workflows/src/durable/completed-catalog.ts +205 -131
- package/dist/builtin/workflows/src/durable/completed-inspection.ts +8 -2
- package/dist/builtin/workflows/src/durable/completed-subtree.ts +31 -0
- package/dist/builtin/workflows/src/durable/dbos-backend.ts +28 -24
- package/dist/builtin/workflows/src/durable/dbos-envelope.ts +130 -3
- package/dist/builtin/workflows/src/durable/dbos-metadata.ts +18 -0
- package/dist/builtin/workflows/src/durable/scoped-backend.ts +64 -17
- package/dist/builtin/workflows/src/durable/stage-primitive.ts +60 -60
- package/dist/builtin/workflows/src/durable/stage-topology-validation.ts +234 -0
- package/dist/builtin/workflows/src/durable/stage-topology.ts +53 -0
- package/dist/builtin/workflows/src/durable/tool-failure-checkpoint.ts +49 -0
- package/dist/builtin/workflows/src/durable/tool-outcome.ts +120 -0
- package/dist/builtin/workflows/src/durable/tool-primitive.ts +367 -58
- package/dist/builtin/workflows/src/durable/types.ts +97 -0
- package/dist/builtin/workflows/src/durable/ui-primitive.ts +46 -0
- package/dist/builtin/workflows/src/durable/workflow-child-result.ts +58 -0
- package/dist/builtin/workflows/src/engine/options.ts +1 -0
- package/dist/builtin/workflows/src/engine/primitives/workflow.ts +19 -10
- package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +11 -1
- package/dist/builtin/workflows/src/engine/run-durable-topology.ts +190 -18
- package/dist/builtin/workflows/src/engine/run-terminal-event.ts +37 -0
- package/dist/builtin/workflows/src/engine/run-terminal-failure.ts +50 -0
- package/dist/builtin/workflows/src/engine/run-tool-execution-tracker.ts +152 -0
- package/dist/builtin/workflows/src/engine/run-tool-node-lifecycle.ts +87 -0
- package/dist/builtin/workflows/src/engine/run.ts +111 -110
- package/dist/builtin/workflows/src/engine/runtime.ts +15 -2
- package/dist/builtin/workflows/src/extension/extension-factory.ts +1 -0
- package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +11 -0
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +6599 -4776
- package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +16 -5
- package/dist/builtin/workflows/src/extension/render-result.ts +16 -2
- package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +3 -0
- package/dist/builtin/workflows/src/extension/runtime.ts +4 -0
- package/dist/builtin/workflows/src/extension/wiring.ts +3 -1
- package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +1 -0
- package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +9 -3
- package/dist/builtin/workflows/src/extension/workflow-module-loader.ts +18 -3
- package/dist/builtin/workflows/src/extension/workflow-prompts.ts +27 -9
- package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +43 -0
- package/dist/builtin/workflows/src/extension/workflow-targets.ts +34 -30
- package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +12 -5
- package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +162 -63
- package/dist/builtin/workflows/src/runs/background/run-inspect.ts +7 -1
- package/dist/builtin/workflows/src/runs/background/status.ts +18 -8
- package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +3 -11
- package/dist/builtin/workflows/src/runs/foreground/executor-child-boundary.ts +24 -21
- package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +1 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +30 -13
- package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +102 -53
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +13 -5
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +26 -8
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +11 -4
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-types.ts +4 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-types.ts +7 -1
- package/dist/builtin/workflows/src/runs/foreground/postmortem-stage-chat.ts +35 -1
- package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +136 -17
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +12 -4
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +35 -42
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-options.ts +5 -1
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-pause.ts +195 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-session-options.ts +0 -13
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-types.ts +14 -2
- package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +3 -143
- package/dist/builtin/workflows/src/sdk-surface.ts +1 -1
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +6 -11
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +6 -11
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +57 -6
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +76 -11
- package/dist/builtin/workflows/src/shared/expanded-workflow-graph.ts +206 -116
- package/dist/builtin/workflows/src/shared/intercom-group.ts +17 -10
- package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +30 -0
- package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +5 -0
- package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +3 -3
- package/dist/builtin/workflows/src/shared/store-factory.ts +2 -0
- package/dist/builtin/workflows/src/shared/store-internal.ts +8 -0
- package/dist/builtin/workflows/src/shared/store-public-types.ts +8 -0
- package/dist/builtin/workflows/src/shared/store-run-methods.ts +9 -0
- package/dist/builtin/workflows/src/shared/store-stage-methods.ts +2 -0
- package/dist/builtin/workflows/src/shared/store-tool-node-methods.ts +46 -0
- package/dist/builtin/workflows/src/shared/store-types.ts +34 -0
- package/dist/builtin/workflows/src/shared/types.ts +14 -24
- package/dist/builtin/workflows/src/shared/workflow-failures-classifier.ts +11 -5
- package/dist/builtin/workflows/src/shared/workflow-failures-signals.ts +58 -0
- package/dist/builtin/workflows/src/shared/workflow-run-ownership.ts +53 -0
- package/dist/builtin/workflows/src/tui/graph-view-input.ts +2 -8
- package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +11 -4
- package/dist/builtin/workflows/src/tui/graph-view-render.ts +1 -0
- package/dist/builtin/workflows/src/tui/graph-view-state.ts +27 -9
- package/dist/builtin/workflows/src/tui/graph-view-types.ts +4 -3
- package/dist/builtin/workflows/src/tui/node-card.ts +4 -3
- package/dist/builtin/workflows/src/tui/overlay-adapter.ts +0 -4
- package/dist/builtin/workflows/src/tui/run-detail.ts +53 -17
- package/dist/builtin/workflows/src/tui/session-list.ts +8 -4
- package/dist/builtin/workflows/src/tui/stage-chat-view-render-helpers.ts +12 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +21 -1
- package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +3 -19
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +4 -2
- package/dist/builtin/workflows/src/tui/switcher.ts +13 -3
- package/dist/builtin/workflows/src/tui/workflow-attach-pane-handle.ts +1 -1
- package/dist/builtin/workflows/src/tui/workflow-attach-pane-types.ts +0 -9
- package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +16 -49
- package/dist/builtin/workflows/src/tui/workflow-status.ts +7 -0
- package/dist/builtin/workflows/src/workflows/identity.ts +1 -1
- package/dist/cli/args.d.ts +0 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +1 -20
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.js +1 -1
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +1 -2
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/session-picker.js +2 -1
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/cli/startup-ui.js +2 -2
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/config-self-update.js +1 -1
- package/dist/config-self-update.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +34 -10
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-accessors.d.ts.map +1 -1
- package/dist/core/agent-session-accessors.js +2 -1
- package/dist/core/agent-session-accessors.js.map +1 -1
- package/dist/core/agent-session-auto-compaction.d.ts +4 -3
- package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-auto-compaction.js +55 -59
- package/dist/core/agent-session-auto-compaction.js.map +1 -1
- package/dist/core/agent-session-bash.d.ts +9 -6
- package/dist/core/agent-session-bash.d.ts.map +1 -1
- package/dist/core/agent-session-bash.js +32 -13
- package/dist/core/agent-session-bash.js.map +1 -1
- package/dist/core/agent-session-compaction.d.ts +11 -1
- package/dist/core/agent-session-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-compaction.js +87 -19
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-custom-message-commit.d.ts +14 -0
- package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -0
- package/dist/core/agent-session-custom-message-commit.js +141 -0
- package/dist/core/agent-session-custom-message-commit.js.map +1 -0
- package/dist/core/agent-session-delivery-forwarding.d.ts +9 -0
- package/dist/core/agent-session-delivery-forwarding.d.ts.map +1 -0
- package/dist/core/agent-session-delivery-forwarding.js +36 -0
- package/dist/core/agent-session-delivery-forwarding.js.map +1 -0
- 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 +45 -14
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts +2 -6
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +18 -11
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-message-queue.d.ts +5 -2
- package/dist/core/agent-session-message-queue.d.ts.map +1 -1
- package/dist/core/agent-session-message-queue.js +91 -97
- package/dist/core/agent-session-message-queue.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +47 -39
- 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 -38
- package/dist/core/agent-session-models.d.ts.map +1 -1
- package/dist/core/agent-session-models.js +5 -147
- package/dist/core/agent-session-models.js.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.d.ts +47 -0
- package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -0
- package/dist/core/agent-session-persistent-custom-messages.js +267 -0
- package/dist/core/agent-session-persistent-custom-messages.js.map +1 -0
- package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.js +34 -9
- package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts +2 -0
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +42 -16
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-queue-pause.d.ts +10 -0
- package/dist/core/agent-session-queue-pause.d.ts.map +1 -0
- package/dist/core/agent-session-queue-pause.js +86 -0
- package/dist/core/agent-session-queue-pause.js.map +1 -0
- package/dist/core/agent-session-retry.d.ts +0 -11
- package/dist/core/agent-session-retry.d.ts.map +1 -1
- package/dist/core/agent-session-retry.js +8 -57
- package/dist/core/agent-session-retry.js.map +1 -1
- package/dist/core/agent-session-runtime-auth.d.ts +6 -0
- package/dist/core/agent-session-runtime-auth.d.ts.map +1 -0
- package/dist/core/agent-session-runtime-auth.js +26 -0
- package/dist/core/agent-session-runtime-auth.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts +13 -2
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +32 -6
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +0 -2
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +6 -7
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session-state.d.ts.map +1 -1
- package/dist/core/agent-session-state.js +3 -0
- package/dist/core/agent-session-state.js.map +1 -1
- package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
- package/dist/core/agent-session-tool-hooks.js +6 -1
- package/dist/core/agent-session-tool-hooks.js.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +2 -18
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-transfer.d.ts +4 -0
- package/dist/core/agent-session-transfer.d.ts.map +1 -0
- package/dist/core/agent-session-transfer.js +71 -0
- package/dist/core/agent-session-transfer.js.map +1 -0
- package/dist/core/agent-session-tree.js +1 -1
- package/dist/core/agent-session-tree.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +5 -11
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js +0 -3
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +12 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +8 -2
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/atomic-guide-command.d.ts.map +1 -1
- package/dist/core/atomic-guide-command.js +31 -33
- package/dist/core/atomic-guide-command.js.map +1 -1
- package/dist/core/auth-storage.js +2 -2
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/bash-executor.d.ts +5 -3
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +5 -4
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/builtin-packages.d.ts.map +1 -1
- package/dist/core/builtin-packages.js +0 -6
- package/dist/core/builtin-packages.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts +8 -3
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +17 -6
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction-boundary.d.ts +18 -1
- package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
- package/dist/core/compaction/compaction-boundary.js +2 -2
- package/dist/core/compaction/compaction-boundary.js.map +1 -1
- package/dist/core/compaction/compaction-runner.d.ts +61 -6
- package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
- package/dist/core/compaction/compaction-runner.js +242 -18
- package/dist/core/compaction/compaction-runner.js.map +1 -1
- package/dist/core/compaction/compaction-types.d.ts +53 -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/fallback-planner.d.ts +64 -0
- package/dist/core/compaction/fallback-planner.d.ts.map +1 -0
- package/dist/core/compaction/fallback-planner.js +75 -0
- package/dist/core/compaction/fallback-planner.js.map +1 -0
- package/dist/core/compaction/index.d.ts +3 -0
- package/dist/core/compaction/index.d.ts.map +1 -1
- package/dist/core/compaction/index.js +3 -0
- package/dist/core/compaction/index.js.map +1 -1
- package/dist/core/compaction/planner-outcome.d.ts +86 -0
- package/dist/core/compaction/planner-outcome.d.ts.map +1 -0
- package/dist/core/compaction/planner-outcome.js +122 -0
- package/dist/core/compaction/planner-outcome.js.map +1 -0
- package/dist/core/compaction/range-planner-diagnostics.d.ts +58 -6
- package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
- package/dist/core/compaction/range-planner-diagnostics.js +69 -31
- package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
- package/dist/core/compaction/range-planner.d.ts +36 -8
- package/dist/core/compaction/range-planner.d.ts.map +1 -1
- package/dist/core/compaction/range-planner.js +136 -51
- package/dist/core/compaction/range-planner.js.map +1 -1
- package/dist/core/compaction/region-trimming.d.ts +34 -0
- package/dist/core/compaction/region-trimming.d.ts.map +1 -0
- package/dist/core/compaction/region-trimming.js +73 -0
- package/dist/core/compaction/region-trimming.js.map +1 -0
- package/dist/core/compaction/transcript-serialization.d.ts +8 -1
- package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
- package/dist/core/compaction/transcript-serialization.js +78 -27
- package/dist/core/compaction/transcript-serialization.js.map +1 -1
- package/dist/core/context-tool-pairing.d.ts +19 -0
- package/dist/core/context-tool-pairing.d.ts.map +1 -0
- package/dist/core/context-tool-pairing.js +50 -0
- package/dist/core/context-tool-pairing.js.map +1 -0
- package/dist/core/diagnostics.d.ts +8 -0
- package/dist/core/diagnostics.d.ts.map +1 -1
- package/dist/core/diagnostics.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +3 -0
- 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/index.d.ts +2 -0
- 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.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +48 -27
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-runtime.d.ts +2 -4
- package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
- package/dist/core/extensions/loader-runtime.js +199 -18
- package/dist/core/extensions/loader-runtime.js.map +1 -1
- package/dist/core/extensions/message-types.d.ts +7 -4
- package/dist/core/extensions/message-types.d.ts.map +1 -1
- package/dist/core/extensions/message-types.js.map +1 -1
- package/dist/core/extensions/provider-types.d.ts +9 -4
- 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/runner-context.d.ts +2 -0
- package/dist/core/extensions/runner-context.d.ts.map +1 -1
- package/dist/core/extensions/runner-context.js +4 -0
- package/dist/core/extensions/runner-context.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +1 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +28 -20
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +25 -0
- 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-types.d.ts +7 -3
- 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 +14 -4
- 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 +37 -0
- package/dist/core/fallback-models.d.ts.map +1 -0
- package/dist/core/fallback-models.js +48 -0
- package/dist/core/fallback-models.js.map +1 -0
- package/dist/core/flattened-tool-arguments.d.ts +4 -7
- package/dist/core/flattened-tool-arguments.d.ts.map +1 -1
- package/dist/core/flattened-tool-arguments.js +4 -7
- package/dist/core/flattened-tool-arguments.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js +0 -5
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/messages.d.ts +14 -2
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js +28 -4
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-capabilities.d.ts +18 -0
- package/dist/core/model-capabilities.d.ts.map +1 -0
- package/dist/core/model-capabilities.js +23 -0
- package/dist/core/model-capabilities.js.map +1 -0
- package/dist/core/model-registry-auth.d.ts.map +1 -1
- package/dist/core/model-registry-auth.js +0 -2
- package/dist/core/model-registry-auth.js.map +1 -1
- package/dist/core/model-registry-builtins.d.ts +0 -2
- package/dist/core/model-registry-builtins.d.ts.map +1 -1
- package/dist/core/model-registry-builtins.js +9 -76
- package/dist/core/model-registry-builtins.js.map +1 -1
- package/dist/core/model-registry-custom-loader.d.ts.map +1 -1
- package/dist/core/model-registry-custom-loader.js +1 -12
- package/dist/core/model-registry-custom-loader.js.map +1 -1
- package/dist/core/model-registry-dynamic.d.ts.map +1 -1
- package/dist/core/model-registry-dynamic.js +3 -15
- package/dist/core/model-registry-dynamic.js.map +1 -1
- package/dist/core/model-registry-extension-refresh.d.ts +23 -0
- package/dist/core/model-registry-extension-refresh.d.ts.map +1 -0
- package/dist/core/model-registry-extension-refresh.js +32 -0
- package/dist/core/model-registry-extension-refresh.js.map +1 -0
- package/dist/core/model-registry-schemas.d.ts +118 -9
- package/dist/core/model-registry-schemas.d.ts.map +1 -1
- package/dist/core/model-registry-schemas.js +10 -3
- package/dist/core/model-registry-schemas.js.map +1 -1
- package/dist/core/model-registry-types.d.ts +5 -5
- package/dist/core/model-registry-types.d.ts.map +1 -1
- package/dist/core/model-registry-types.js.map +1 -1
- package/dist/core/model-registry-validation.d.ts +7 -0
- package/dist/core/model-registry-validation.d.ts.map +1 -0
- package/dist/core/model-registry-validation.js +12 -0
- package/dist/core/model-registry-validation.js.map +1 -0
- package/dist/core/model-registry.d.ts +5 -3
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +34 -33
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver-defaults.d.ts.map +1 -1
- package/dist/core/model-resolver-defaults.js +0 -1
- package/dist/core/model-resolver-defaults.js.map +1 -1
- package/dist/core/model-resolver-initial.d.ts.map +1 -1
- package/dist/core/model-resolver-initial.js +9 -0
- package/dist/core/model-resolver-initial.js.map +1 -1
- package/dist/core/model-resolver-patterns.d.ts.map +1 -1
- package/dist/core/model-resolver-patterns.js +0 -2
- package/dist/core/model-resolver-patterns.js.map +1 -1
- package/dist/core/model-resolver-scope.d.ts +2 -0
- package/dist/core/model-resolver-scope.d.ts.map +1 -1
- package/dist/core/model-resolver-scope.js +18 -4
- package/dist/core/model-resolver-scope.js.map +1 -1
- package/dist/core/model-resolver-types.d.ts +2 -0
- package/dist/core/model-resolver-types.d.ts.map +1 -1
- package/dist/core/model-resolver-types.js.map +1 -1
- package/dist/core/oauth-provider-bridge.d.ts +21 -0
- package/dist/core/oauth-provider-bridge.d.ts.map +1 -1
- package/dist/core/oauth-provider-bridge.js +68 -7
- package/dist/core/oauth-provider-bridge.js.map +1 -1
- package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
- package/dist/core/package-manager-auto-resources.js +12 -4
- package/dist/core/package-manager-auto-resources.js.map +1 -1
- package/dist/core/package-manager-resolver.d.ts.map +1 -1
- package/dist/core/package-manager-resolver.js +42 -11
- package/dist/core/package-manager-resolver.js.map +1 -1
- package/dist/core/package-manager-types.d.ts +2 -0
- package/dist/core/package-manager-types.d.ts.map +1 -1
- package/dist/core/package-manager-types.js.map +1 -1
- package/dist/core/package-manager.d.ts +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.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 +17 -11
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resource-loader-assets.d.ts.map +1 -1
- package/dist/core/resource-loader-assets.js +30 -4
- package/dist/core/resource-loader-assets.js.map +1 -1
- package/dist/core/resource-loader-context-files.d.ts.map +1 -1
- package/dist/core/resource-loader-context-files.js +3 -1
- package/dist/core/resource-loader-context-files.js.map +1 -1
- package/dist/core/resource-loader-core.d.ts +2 -1
- package/dist/core/resource-loader-core.d.ts.map +1 -1
- package/dist/core/resource-loader-core.js +3 -0
- package/dist/core/resource-loader-core.js.map +1 -1
- package/dist/core/resource-loader-extensions.d.ts +1 -0
- package/dist/core/resource-loader-extensions.d.ts.map +1 -1
- package/dist/core/resource-loader-extensions.js +120 -7
- package/dist/core/resource-loader-extensions.js.map +1 -1
- package/dist/core/resource-loader-package-resources.d.ts.map +1 -1
- package/dist/core/resource-loader-package-resources.js +14 -1
- package/dist/core/resource-loader-package-resources.js.map +1 -1
- package/dist/core/resource-loader-reload.d.ts.map +1 -1
- package/dist/core/resource-loader-reload.js +2 -1
- package/dist/core/resource-loader-reload.js.map +1 -1
- package/dist/core/resource-loader-source-info.d.ts.map +1 -1
- package/dist/core/resource-loader-source-info.js +6 -3
- package/dist/core/resource-loader-source-info.js.map +1 -1
- package/dist/core/sdk-types.d.ts +11 -10
- 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 -0
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +13 -84
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager-core.d.ts +3 -3
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-core.js +18 -25
- package/dist/core/session-manager-core.js.map +1 -1
- package/dist/core/session-manager-entries.d.ts +2 -5
- package/dist/core/session-manager-entries.d.ts.map +1 -1
- package/dist/core/session-manager-entries.js +2 -8
- package/dist/core/session-manager-entries.js.map +1 -1
- package/dist/core/session-manager-history.d.ts +3 -3
- package/dist/core/session-manager-history.d.ts.map +1 -1
- package/dist/core/session-manager-history.js +49 -27
- package/dist/core/session-manager-history.js.map +1 -1
- package/dist/core/session-manager-storage.d.ts +6 -0
- package/dist/core/session-manager-storage.d.ts.map +1 -1
- package/dist/core/session-manager-storage.js +38 -5
- package/dist/core/session-manager-storage.js.map +1 -1
- package/dist/core/session-manager-types.d.ts +6 -6
- 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.d.ts +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +0 -4
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +0 -50
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-manager-core.d.ts +2 -4
- package/dist/core/settings-manager-core.d.ts.map +1 -1
- package/dist/core/settings-manager-core.js +5 -51
- package/dist/core/settings-manager-core.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/settings-storage.d.ts +3 -1
- package/dist/core/settings-storage.d.ts.map +1 -1
- package/dist/core/settings-storage.js +22 -0
- package/dist/core/settings-storage.js.map +1 -1
- package/dist/core/settings-types.d.ts +2 -4
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +69 -23
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/source-info.d.ts +3 -1
- package/dist/core/source-info.d.ts.map +1 -1
- package/dist/core/source-info.js +2 -0
- package/dist/core/source-info.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +11 -0
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/ask-user-question/ask-user-question.js +1 -1
- package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
- package/dist/core/tools/bash-session-environment.d.ts +13 -0
- package/dist/core/tools/bash-session-environment.d.ts.map +1 -0
- package/dist/core/tools/bash-session-environment.js +35 -0
- package/dist/core/tools/bash-session-environment.js.map +1 -0
- package/dist/core/tools/bash.d.ts +4 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +16 -8
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +3 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +10 -2
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/extensions/index.js +1 -1
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts +3 -2
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +9 -3
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/index-extensions.d.ts +1 -1
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index-extensions.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/main-session-options.d.ts.map +1 -1
- package/dist/main-session-options.js +0 -4
- package/dist/main-session-options.js.map +1 -1
- package/dist/main-session.d.ts.map +1 -1
- package/dist/main-session.js +2 -1
- package/dist/main-session.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +1 -17
- package/dist/main.js.map +1 -1
- package/dist/modes/index.d.ts +1 -1
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/index.js.map +1 -1
- package/dist/modes/interactive/chat-input-actions.d.ts +1 -1
- package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
- package/dist/modes/interactive/chat-input-actions.js +14 -96
- package/dist/modes/interactive/chat-input-actions.js.map +1 -1
- package/dist/modes/interactive/components/atomic-banner.d.ts +9 -8
- package/dist/modes/interactive/components/atomic-banner.d.ts.map +1 -1
- package/dist/modes/interactive/components/atomic-banner.js +68 -24
- package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
- package/dist/modes/interactive/components/atomic-working-status.d.ts +52 -0
- package/dist/modes/interactive/components/atomic-working-status.d.ts.map +1 -0
- package/dist/modes/interactive/components/atomic-working-status.js +202 -0
- package/dist/modes/interactive/components/atomic-working-status.js.map +1 -0
- package/dist/modes/interactive/components/chat-message-renderer.js +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.js +99 -7
- package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-editor.js +3 -3
- package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-events.js +52 -9
- package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.js +23 -7
- package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +2 -0
- package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-runtime.js +67 -18
- package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.d.ts +9 -0
- package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.js +5 -0
- package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-types.d.ts +10 -0
- package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -1
- package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-boundary-message.js +2 -1
- package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts +3 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +9 -2
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts +3 -2
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +14 -43
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +18 -13
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/startup-identity.d.ts +22 -0
- package/dist/modes/interactive/components/startup-identity.d.ts.map +1 -0
- package/dist/modes/interactive/components/startup-identity.js +58 -0
- package/dist/modes/interactive/components/startup-identity.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector-content.js +0 -6
- package/dist/modes/interactive/components/tree-selector-content.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-model.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector-model.js +0 -1
- package/dist/modes/interactive/components/tree-selector-model.js.map +1 -1
- package/dist/modes/interactive/components/working-status.d.ts +5 -11
- package/dist/modes/interactive/components/working-status.d.ts.map +1 -1
- package/dist/modes/interactive/components/working-status.js +14 -15
- package/dist/modes/interactive/components/working-status.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts +23 -0
- package/dist/modes/interactive/external-editor.d.ts.map +1 -0
- package/dist/modes/interactive/external-editor.js +120 -0
- package/dist/modes/interactive/external-editor.js.map +1 -0
- package/dist/modes/interactive/interactive-agent-events.js +25 -20
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-login.js +16 -6
- package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.js +3 -0
- package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-bash-compact.d.ts +2 -1
- package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-bash-compact.js +8 -0
- package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.js +49 -19
- package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-editor-actions.js +4 -3
- package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-dialogs.js +1 -1
- package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.js +3 -2
- package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-initial-session-binding.d.ts +4 -0
- package/dist/modes/interactive/interactive-initial-session-binding.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-initial-session-binding.js +23 -0
- package/dist/modes/interactive/interactive-initial-session-binding.js.map +1 -0
- package/dist/modes/interactive/interactive-input-handling.d.ts +2 -1
- package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-input-handling.js +27 -51
- package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts +11 -7
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.js +14 -6
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.d.ts +2 -4
- package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.js +2 -4
- package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +9 -8
- 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/interactive-mode.d.ts +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +1 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/interactive-model-catalog-startup.d.ts +2 -3
- package/dist/modes/interactive/interactive-model-catalog-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-model-catalog-startup.js +3 -6
- package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-model-routing.js +26 -97
- package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-pause.d.ts +4 -0
- package/dist/modes/interactive/interactive-pause.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-pause.js +8 -0
- package/dist/modes/interactive/interactive-pause.js.map +1 -0
- package/dist/modes/interactive/interactive-process-lifecycle.js +5 -4
- package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
- package/dist/modes/interactive/interactive-prompt-turn.d.ts +2 -0
- package/dist/modes/interactive/interactive-prompt-turn.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-prompt-turn.js +41 -0
- package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -0
- package/dist/modes/interactive/interactive-render-chat.js +20 -8
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-resource-paths.js +11 -2
- package/dist/modes/interactive/interactive-resource-paths.js.map +1 -1
- package/dist/modes/interactive/interactive-resource-rendering.js +99 -0
- package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.js +1 -1
- package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
- package/dist/modes/interactive/interactive-startup-chat-container.d.ts +20 -0
- package/dist/modes/interactive/interactive-startup-chat-container.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-startup-chat-container.js +26 -0
- package/dist/modes/interactive/interactive-startup-chat-container.js.map +1 -0
- package/dist/modes/interactive/interactive-startup.d.ts +1 -1
- package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +30 -25
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-summarization-retry-events.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-summarization-retry-events.js +9 -3
- package/dist/modes/interactive/interactive-summarization-retry-events.js.map +1 -1
- package/dist/modes/interactive/theme/catppuccin-frappe.json +1 -1
- package/dist/modes/interactive/theme/catppuccin-latte.json +1 -1
- package/dist/modes/interactive/theme/catppuccin-macchiato.json +1 -1
- package/dist/modes/interactive/theme/catppuccin-mocha.json +9 -1
- package/dist/modes/interactive/theme/dark.json +1 -1
- package/dist/modes/interactive/theme/light.json +1 -1
- package/dist/modes/interactive/theme/theme-class.d.ts +4 -0
- package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-class.js +7 -0
- package/dist/modes/interactive/theme/theme-class.js.map +1 -1
- package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-loading.js +4 -0
- package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.d.ts +32 -0
- package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.js +8 -0
- package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.json +15 -2
- package/dist/modes/interactive/whimsical-messages.d.ts +1 -0
- package/dist/modes/interactive/whimsical-messages.d.ts.map +1 -1
- package/dist/modes/interactive/whimsical-messages.js +2 -2
- package/dist/modes/interactive/whimsical-messages.js.map +1 -1
- package/dist/modes/interactive-engine/create-isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/create-isolated-runtime.js +3 -1
- package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/engine-args.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-args.js +0 -1
- package/dist/modes/interactive-engine/engine-args.js.map +1 -1
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-custom-ui.js +5 -17
- package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
- package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-render-service.js +8 -19
- package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +2 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
- package/dist/modes/interactive-engine/extension-ui-bridge.js +3 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-auth.d.ts +10 -0
- package/dist/modes/interactive-engine/isolated-auth.d.ts.map +1 -0
- package/dist/modes/interactive-engine/isolated-auth.js +14 -0
- package/dist/modes/interactive-engine/isolated-auth.js.map +1 -0
- package/dist/modes/interactive-engine/isolated-runtime.d.ts +9 -1
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +46 -34
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/protocol.d.ts +1 -1
- package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
- package/dist/modes/interactive-engine/protocol.js +3 -10
- package/dist/modes/interactive-engine/protocol.js.map +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.d.ts +1 -0
- package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.js +10 -1
- package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
- package/dist/modes/interactive-engine/remote-queue-pause.d.ts +13 -0
- package/dist/modes/interactive-engine/remote-queue-pause.d.ts.map +1 -0
- package/dist/modes/interactive-engine/remote-queue-pause.js +38 -0
- package/dist/modes/interactive-engine/remote-queue-pause.js.map +1 -0
- package/dist/modes/interactive-engine/remote-renderer.d.ts +3 -1
- package/dist/modes/interactive-engine/remote-renderer.d.ts.map +1 -1
- package/dist/modes/interactive-engine/remote-renderer.js +4 -1
- package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +5 -0
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/jsonl.d.ts +2 -7
- package/dist/modes/rpc/jsonl.d.ts.map +1 -1
- package/dist/modes/rpc/jsonl.js +7 -24
- package/dist/modes/rpc/jsonl.js.map +1 -1
- package/dist/modes/rpc/queued-writer.d.ts +19 -0
- package/dist/modes/rpc/queued-writer.d.ts.map +1 -0
- package/dist/modes/rpc/{bounded-writer.js → queued-writer.js} +7 -30
- package/dist/modes/rpc/queued-writer.js.map +1 -0
- package/dist/modes/rpc/rpc-bash-request-owners.d.ts +24 -0
- package/dist/modes/rpc/rpc-bash-request-owners.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-bash-request-owners.js +45 -0
- package/dist/modes/rpc/rpc-bash-request-owners.js.map +1 -0
- package/dist/modes/rpc/rpc-client-api.d.ts +8 -5
- package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-api.js +10 -11
- package/dist/modes/rpc/rpc-client-api.js.map +1 -1
- package/dist/modes/rpc/rpc-client-process.d.ts +1 -4
- package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-process.js +2 -14
- package/dist/modes/rpc/rpc-client-process.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +8 -4
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +21 -30
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts +7 -4
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +76 -93
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-input-scheduler.d.ts +3 -3
- package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-input-scheduler.js +7 -4
- package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +5 -5
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts +4 -0
- package/dist/modes/rpc/rpc-model-fallback-prompt.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-model-fallback-prompt.js +11 -0
- package/dist/modes/rpc/rpc-model-fallback-prompt.js.map +1 -0
- package/dist/modes/rpc/rpc-oauth-client.d.ts +22 -0
- package/dist/modes/rpc/rpc-oauth-client.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-oauth-client.js +74 -0
- package/dist/modes/rpc/rpc-oauth-client.js.map +1 -0
- package/dist/modes/rpc/rpc-oauth-interaction.d.ts +9 -0
- package/dist/modes/rpc/rpc-oauth-interaction.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-oauth-interaction.js +49 -0
- package/dist/modes/rpc/rpc-oauth-interaction.js.map +1 -0
- package/dist/modes/rpc/rpc-output-buffer.d.ts +2 -1
- package/dist/modes/rpc/rpc-output-buffer.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-output-buffer.js +4 -39
- package/dist/modes/rpc/rpc-output-buffer.js.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.d.ts +23 -0
- package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-provider-auth.js +145 -0
- package/dist/modes/rpc/rpc-provider-auth.js.map +1 -0
- package/dist/modes/rpc/rpc-responses.d.ts +0 -1
- package/dist/modes/rpc/rpc-responses.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-responses.js +0 -14
- package/dist/modes/rpc/rpc-responses.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +83 -27
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +21 -8
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +3 -1
- package/dist/utils/version-check.js.map +1 -1
- package/docs/changelog.mdx +12 -1
- package/docs/compaction.md +101 -18
- package/docs/custom-provider.md +13 -4
- package/docs/docs.json +1 -0
- package/docs/environment-variables.md +37 -0
- package/docs/extensions.md +45 -9
- package/docs/index.md +1 -0
- package/docs/intercom.md +1 -1
- package/docs/json.md +4 -4
- package/docs/keybindings.md +4 -2
- package/docs/llama-cpp.md +3 -1
- package/docs/models.md +29 -43
- package/docs/providers.md +18 -24
- package/docs/quickstart.md +19 -16
- package/docs/rpc.md +38 -85
- package/docs/sdk.md +15 -22
- package/docs/session-format.md +2 -15
- package/docs/sessions.md +1 -1
- package/docs/settings.md +10 -15
- package/docs/skills.md +8 -0
- package/docs/subagents.md +24 -8
- package/docs/themes.md +10 -1
- package/docs/tui.md +3 -3
- package/docs/usage.md +30 -2
- package/docs/windows.md +1 -1
- package/docs/workflows.md +1128 -522
- package/examples/extensions/README.md +1 -1
- package/examples/extensions/handoff.ts +8 -1
- package/examples/extensions/message-renderer.ts +2 -2
- package/examples/extensions/summarize.ts +3 -0
- package/examples/extensions/working-indicator.ts +2 -2
- package/npm-shrinkwrap.json +40 -46
- package/package.json +9 -7
- package/dist/builtin/cursor/CHANGELOG.md +0 -281
- package/dist/builtin/cursor/LICENSE +0 -26
- package/dist/builtin/cursor/README.md +0 -24
- package/dist/builtin/cursor/index.ts +0 -9
- package/dist/builtin/cursor/package.json +0 -47
- package/dist/builtin/cursor/src/auth.ts +0 -352
- package/dist/builtin/cursor/src/catalog-cache.ts +0 -155
- package/dist/builtin/cursor/src/config.ts +0 -123
- package/dist/builtin/cursor/src/conversation-state.ts +0 -135
- package/dist/builtin/cursor/src/cursor-models-raw.json +0 -412
- package/dist/builtin/cursor/src/model-mapper.ts +0 -369
- package/dist/builtin/cursor/src/model-reference.ts +0 -282
- package/dist/builtin/cursor/src/models.ts +0 -54
- package/dist/builtin/cursor/src/native-loader.ts +0 -71
- package/dist/builtin/cursor/src/proto/README.md +0 -34
- package/dist/builtin/cursor/src/proto/agent_pb.ts +0 -15294
- package/dist/builtin/cursor/src/proto/protobuf-codec-base64.ts +0 -22
- package/dist/builtin/cursor/src/proto/protobuf-codec-json.ts +0 -44
- package/dist/builtin/cursor/src/proto/protobuf-codec-request.ts +0 -311
- package/dist/builtin/cursor/src/proto/protobuf-codec-wire.ts +0 -248
- package/dist/builtin/cursor/src/proto/protobuf-codec.ts +0 -200
- package/dist/builtin/cursor/src/provider.ts +0 -301
- package/dist/builtin/cursor/src/stream.ts +0 -494
- package/dist/builtin/cursor/src/transport-errors.ts +0 -74
- package/dist/builtin/cursor/src/transport-frame.ts +0 -56
- package/dist/builtin/cursor/src/transport-http2.ts +0 -122
- package/dist/builtin/cursor/src/transport-native-client.ts +0 -161
- package/dist/builtin/cursor/src/transport-run-stream.ts +0 -188
- package/dist/builtin/cursor/src/transport-timeouts.ts +0 -87
- package/dist/builtin/cursor/src/transport-types.ts +0 -143
- package/dist/builtin/cursor/src/transport.ts +0 -26
- package/dist/builtin/workflows/builtin/deep-research-codebase-runner.ts +0 -492
- package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +0 -383
- package/dist/builtin/workflows/builtin/deep-research-codebase.d.ts +0 -35
- package/dist/builtin/workflows/builtin/deep-research-codebase.ts +0 -47
- package/dist/builtin/workflows/skills/impeccable/scripts/hook-before-edit.mjs +0 -516
- package/dist/core/context-window.d.ts +0 -54
- package/dist/core/context-window.d.ts.map +0 -1
- package/dist/core/context-window.js +0 -110
- package/dist/core/context-window.js.map +0 -1
- package/dist/core/copilot-anthropic-sse-repair.d.ts +0 -23
- package/dist/core/copilot-anthropic-sse-repair.d.ts.map +0 -1
- package/dist/core/copilot-anthropic-sse-repair.js +0 -340
- package/dist/core/copilot-anthropic-sse-repair.js.map +0 -1
- package/dist/core/copilot-errors.d.ts +0 -9
- package/dist/core/copilot-errors.d.ts.map +0 -1
- package/dist/core/copilot-errors.js +0 -32
- package/dist/core/copilot-errors.js.map +0 -1
- package/dist/core/copilot-gemini-payload-sanitizer.d.ts +0 -72
- package/dist/core/copilot-gemini-payload-sanitizer.d.ts.map +0 -1
- package/dist/core/copilot-gemini-payload-sanitizer.js +0 -296
- package/dist/core/copilot-gemini-payload-sanitizer.js.map +0 -1
- package/dist/core/copilot-gemini-reasoning.d.ts +0 -126
- package/dist/core/copilot-gemini-reasoning.d.ts.map +0 -1
- package/dist/core/copilot-gemini-reasoning.js +0 -265
- package/dist/core/copilot-gemini-reasoning.js.map +0 -1
- package/dist/core/copilot-gemini-tool-arguments.d.ts +0 -42
- package/dist/core/copilot-gemini-tool-arguments.d.ts.map +0 -1
- package/dist/core/copilot-gemini-tool-arguments.js +0 -159
- package/dist/core/copilot-gemini-tool-arguments.js.map +0 -1
- package/dist/core/copilot-hosts.d.ts +0 -12
- package/dist/core/copilot-hosts.d.ts.map +0 -1
- package/dist/core/copilot-hosts.js +0 -33
- package/dist/core/copilot-hosts.js.map +0 -1
- package/dist/core/copilot-model-catalog.d.ts +0 -114
- package/dist/core/copilot-model-catalog.d.ts.map +0 -1
- package/dist/core/copilot-model-catalog.js +0 -392
- package/dist/core/copilot-model-catalog.js.map +0 -1
- package/dist/core/copilot-model-static-fallbacks.d.ts +0 -43
- package/dist/core/copilot-model-static-fallbacks.d.ts.map +0 -1
- package/dist/core/copilot-model-static-fallbacks.js +0 -50
- package/dist/core/copilot-model-static-fallbacks.js.map +0 -1
- package/dist/core/copilot-model-synthesis.d.ts +0 -10
- package/dist/core/copilot-model-synthesis.d.ts.map +0 -1
- package/dist/core/copilot-model-synthesis.js +0 -91
- package/dist/core/copilot-model-synthesis.js.map +0 -1
- package/dist/modes/interactive/components/context-window-selector.d.ts +0 -53
- package/dist/modes/interactive/components/context-window-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/context-window-selector.js +0 -136
- package/dist/modes/interactive/components/context-window-selector.js.map +0 -1
- package/dist/modes/rpc/bounded-writer.d.ts +0 -27
- package/dist/modes/rpc/bounded-writer.d.ts.map +0 -1
- package/dist/modes/rpc/bounded-writer.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-auth-login.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-auth-login.ts"],"names":[],"mappings":"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","sourcesContent":["import { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport { type Api, type Model, type OAuthProviderId, type OAuthSelectPrompt, path, getAuthPath, getDocsPath, defaultModelPerProvider, ExtensionSelectorComponent, LoginDialogComponent, theme } from \"./interactive-mode-deps.ts\";\nimport { hasDefaultModelProvider, isUnknownModel } from \"./interactive-mode-helpers.ts\";\n\nInteractiveModeBase.prototype.completeProviderAuthentication = async function(this: InteractiveModeBase, providerId: string, providerName: string, authType: \"oauth\" | \"api_key\", previousModel: Model<Api> | undefined): Promise<void> {\n await this.session.modelRegistry.refresh();\n\n const actionLabel =\n authType === \"oauth\"\n ? `Logged in to ${providerName}`\n : `Saved API key for ${providerName}`;\n\n let selectedModel: Model<Api> | undefined;\n let selectionError: string | undefined;\n if (isUnknownModel(previousModel)) {\n const availableModels = this.session.modelRegistry.getAvailable();\n const providerModels = availableModels.filter(\n (model) => model.provider === providerId,\n );\n if (!hasDefaultModelProvider(providerId)) {\n selectionError = `${actionLabel}, but no default model is configured for provider \"${providerId}\". Use /model to select a model.`;\n } else if (providerModels.length === 0) {\n selectionError = `${actionLabel}, but no models are available for that provider. Use /model to select a model.`;\n } else {\n const defaultModelId = defaultModelPerProvider[providerId];\n selectedModel = providerModels.find(\n (model) => model.id === defaultModelId,\n );\n if (!selectedModel) {\n selectionError = `${actionLabel}, but its default model \"${defaultModelId}\" is not available. Use /model to select a model.`;\n } else {\n try {\n await this.session.setModel(selectedModel);\n } catch (error: unknown) {\n selectedModel = undefined;\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n selectionError = `${actionLabel}, but selecting its default model failed: ${errorMessage}. Use /model to select a model.`;\n }\n }\n }\n }\n\n await this.updateAvailableProviderCount();\n this.setupAutocompleteProvider();\n this.footer.invalidate();\n this.updateEditorBorderColor();\n if (selectedModel) {\n this.showStatus(\n `${actionLabel}. Selected ${selectedModel.id}. Credentials saved to ${getAuthPath()}`,\n );\n void this.maybeWarnAboutAnthropicSubscriptionAuth(selectedModel);\n this.checkDaxnutsEasterEgg(selectedModel);\n } else {\n this.showStatus(`${actionLabel}. Credentials saved to ${getAuthPath()}`);\n if (selectionError) {\n this.showError(selectionError);\n } else {\n void this.maybeWarnAboutAnthropicSubscriptionAuth();\n }\n }\n\n };\n\nInteractiveModeBase.prototype.showBedrockSetupDialog = function(this: InteractiveModeBase, providerId: string, providerName: string): void {\n const restoreEditor = () => {\n this.editorContainer.clear();\n this.editorContainer.addChild(this.editor);\n this.ui.setFocus(this.editor);\n this.ui.requestRender();\n };\n\n const dialog = new LoginDialogComponent(\n this.ui,\n providerId,\n () => restoreEditor(),\n providerName,\n \"Amazon Bedrock setup\",\n );\n dialog.showDetails([\n theme.fg(\n \"text\",\n \"Amazon Bedrock uses AWS credentials instead of a single API key.\",\n ),\n theme.fg(\n \"text\",\n \"Configure an AWS profile, IAM keys, bearer token, or role-based credentials.\",\n ),\n theme.fg(\"muted\", \"See:\"),\n theme.fg(\"accent\", ` ${path.join(getDocsPath(), \"providers.md\")}`),\n ]);\n\n this.editorContainer.clear();\n this.editorContainer.addChild(dialog);\n this.ui.setFocus(dialog);\n this.ui.requestRender();\n };\n\nInteractiveModeBase.prototype.showApiKeyLoginDialog = async function(this: InteractiveModeBase, providerId: string, providerName: string): Promise<void> {\n const previousModel = this.session.model;\n\n const dialog = new LoginDialogComponent(\n this.ui,\n providerId,\n (_success, _message) => {\n // Completion handled below\n },\n providerName,\n );\n\n this.editorContainer.clear();\n this.editorContainer.addChild(dialog);\n this.ui.setFocus(dialog);\n this.ui.requestRender();\n\n const restoreEditor = () => {\n this.editorContainer.clear();\n this.editorContainer.addChild(this.editor);\n this.ui.setFocus(this.editor);\n this.ui.requestRender();\n };\n\n try {\n const customAuth = this.session.modelRegistry.getCustomApiKeyAuth(providerId);\n if (customAuth) {\n const credential = await customAuth.login({\n signal: dialog.signal,\n prompt: (prompt) => dialog.showPrompt(prompt.message, prompt.placeholder),\n });\n this.session.modelRegistry.authStorage.set(providerId, credential);\n } else {\n const apiKey = (await dialog.showPrompt(\"Enter API key:\")).trim();\n if (!apiKey) throw new Error(\"API key cannot be empty.\");\n this.session.modelRegistry.authStorage.set(providerId, { type: \"api_key\", key: apiKey });\n }\n\n restoreEditor();\n await this.completeProviderAuthentication(\n providerId,\n providerName,\n \"api_key\",\n previousModel,\n );\n } catch (error: unknown) {\n restoreEditor();\n const errorMsg = error instanceof Error ? error.message : String(error);\n if (errorMsg !== \"Login cancelled\") {\n this.showError(\n `Failed to save API key for ${providerName}: ${errorMsg}`,\n );\n }\n }\n };\n\nInteractiveModeBase.prototype.showOAuthLoginSelect = function(this: InteractiveModeBase, dialog: LoginDialogComponent, prompt: OAuthSelectPrompt): Promise<string | undefined> {\n return new Promise((resolve) => {\n const restoreDialog = () => {\n this.editorContainer.clear();\n this.editorContainer.addChild(dialog);\n this.ui.setFocus(dialog);\n this.ui.requestRender();\n };\n const labels = prompt.options.map((option) => option.label);\n const selector = new ExtensionSelectorComponent(\n prompt.message,\n labels,\n (optionLabel) => {\n restoreDialog();\n resolve(\n prompt.options.find((option) => option.label === optionLabel)?.id,\n );\n },\n () => {\n restoreDialog();\n resolve(undefined);\n },\n );\n this.editorContainer.clear();\n this.editorContainer.addChild(selector);\n this.ui.setFocus(selector);\n this.ui.requestRender();\n });\n };\n\nInteractiveModeBase.prototype.showLoginDialog = async function(this: InteractiveModeBase, providerId: string, providerName: string): Promise<void> {\n const providerInfo = this.session.modelRegistry.authStorage\n .getOAuthProviders()\n .find((provider) => provider.id === providerId);\n const previousModel = this.session.model;\n\n // Providers that use callback servers (can paste redirect URL)\n const usesCallbackServer = providerInfo?.usesCallbackServer ?? false;\n\n // Create login dialog component\n const dialog = new LoginDialogComponent(\n this.ui,\n providerId,\n (_success, _message) => {\n // Completion handled below\n },\n providerName,\n );\n\n // Show dialog in editor container\n this.editorContainer.clear();\n this.editorContainer.addChild(dialog);\n this.ui.setFocus(dialog);\n this.ui.requestRender();\n\n // Promise for manual code input (racing with callback server)\n let manualCodeResolve: ((code: string) => void) | undefined;\n let manualCodeReject: ((err: Error) => void) | undefined;\n const manualCodePromise = new Promise<string>((resolve, reject) => {\n manualCodeResolve = resolve;\n manualCodeReject = reject;\n });\n\n // Restore editor helper\n const restoreEditor = () => {\n this.editorContainer.clear();\n this.editorContainer.addChild(this.editor);\n this.ui.setFocus(this.editor);\n this.ui.requestRender();\n };\n\n try {\n await this.session.modelRegistry.authStorage.login(\n providerId as OAuthProviderId,\n {\n onAuth: (info: { url: string; instructions?: string }) => {\n dialog.showAuth(info.url, info.instructions, {\n showCancelHint: !usesCallbackServer,\n });\n\n if (usesCallbackServer) {\n // Show input for manual paste, racing with callback\n dialog\n .showManualInput(\n \"Paste redirect URL below, or complete login in browser:\",\n )\n .then((value) => {\n if (value && manualCodeResolve) {\n manualCodeResolve(value);\n manualCodeResolve = undefined;\n }\n })\n .catch(() => {\n if (manualCodeReject) {\n manualCodeReject(new Error(\"Login cancelled\"));\n manualCodeReject = undefined;\n }\n });\n }\n // For Anthropic: onPrompt is called immediately after\n },\n\n onDeviceCode: (info) => {\n dialog.showDeviceCode(info);\n dialog.showWaiting(\"Waiting for authentication...\");\n },\n\n onPrompt: async (prompt: {\n message: string;\n placeholder?: string;\n }) => {\n return dialog.showPrompt(prompt.message, prompt.placeholder);\n },\n\n onProgress: (message: string) => {\n dialog.showProgress(message);\n },\n\n onInfo: (message, links) => {\n dialog.showInfo(message, links);\n },\n\n onSelect: (prompt: OAuthSelectPrompt) =>\n this.showOAuthLoginSelect(dialog, prompt),\n\n onManualCodeInput: () => manualCodePromise,\n\n onManualCodeCancel: () => {\n dialog.dismissPendingInput();\n manualCodeResolve?.(\"\");\n manualCodeResolve = undefined;\n manualCodeReject = undefined;\n },\n\n signal: dialog.signal,\n },\n );\n\n // Success\n restoreEditor();\n await this.completeProviderAuthentication(\n providerId,\n providerName,\n \"oauth\",\n previousModel,\n );\n } catch (error: unknown) {\n restoreEditor();\n const errorMsg = error instanceof Error ? error.message : String(error);\n if (errorMsg !== \"Login cancelled\") {\n this.showError(`Failed to login to ${providerName}: ${errorMsg}`);\n }\n }\n };\n"]}
|
|
1
|
+
{"version":3,"file":"interactive-auth-login.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-auth-login.ts"],"names":[],"mappings":"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","sourcesContent":["import { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport { type Api, type Model, type OAuthSelectPrompt, path, getAuthPath, getDocsPath, defaultModelPerProvider, ExtensionSelectorComponent, LoginDialogComponent, theme } from \"./interactive-mode-deps.ts\";\nimport { hasDefaultModelProvider, isUnknownModel } from \"./interactive-mode-helpers.ts\";\nimport { isOAuthLoginCancelled } from \"../../core/oauth-provider-bridge.ts\";\n\nInteractiveModeBase.prototype.completeProviderAuthentication = async function(this: InteractiveModeBase, providerId: string, providerName: string, authType: \"oauth\" | \"api_key\", previousModel: Model<Api> | undefined, options: { modelsRefreshed?: boolean } = {}): Promise<void> {\n\tif (!options.modelsRefreshed) {\n\t\tconst result = await this.session.modelRegistry.refresh();\n\t\tconst providerError = result.errors.get(providerId);\n\t\tif (providerError) throw providerError;\n\t\tif (result.aborted) throw new Error(`Model refresh aborted after authenticating ${providerName}`);\n\t}\n\n const actionLabel =\n authType === \"oauth\"\n ? `Logged in to ${providerName}`\n : `Saved API key for ${providerName}`;\n\n let selectedModel: Model<Api> | undefined;\n let selectionError: string | undefined;\n if (isUnknownModel(previousModel)) {\n const availableModels = this.session.modelRegistry.getAvailable();\n const providerModels = availableModels.filter(\n (model) => model.provider === providerId,\n );\n if (!hasDefaultModelProvider(providerId)) {\n selectionError = `${actionLabel}, but no default model is configured for provider \"${providerId}\". Use /model to select a model.`;\n } else if (providerModels.length === 0) {\n selectionError = `${actionLabel}, but no models are available for that provider. Use /model to select a model.`;\n } else {\n const defaultModelId = defaultModelPerProvider[providerId];\n selectedModel = providerModels.find(\n (model) => model.id === defaultModelId,\n );\n if (!selectedModel) {\n selectionError = `${actionLabel}, but its default model \"${defaultModelId}\" is not available. Use /model to select a model.`;\n } else {\n try {\n await this.session.setModel(selectedModel);\n } catch (error: unknown) {\n selectedModel = undefined;\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n selectionError = `${actionLabel}, but selecting its default model failed: ${errorMessage}. Use /model to select a model.`;\n }\n }\n }\n }\n\n await this.updateAvailableProviderCount();\n this.setupAutocompleteProvider();\n this.footer.invalidate();\n this.updateEditorBorderColor();\n if (selectedModel) {\n this.showStatus(\n `${actionLabel}. Selected ${selectedModel.id}. Credentials saved to ${getAuthPath()}`,\n );\n void this.maybeWarnAboutAnthropicSubscriptionAuth(selectedModel);\n this.checkDaxnutsEasterEgg(selectedModel);\n } else {\n this.showStatus(`${actionLabel}. Credentials saved to ${getAuthPath()}`);\n if (selectionError) {\n this.showError(selectionError);\n } else {\n void this.maybeWarnAboutAnthropicSubscriptionAuth();\n }\n }\n\n };\n\nInteractiveModeBase.prototype.showBedrockSetupDialog = function(this: InteractiveModeBase, providerId: string, providerName: string): void {\n const restoreEditor = () => {\n this.editorContainer.clear();\n this.editorContainer.addChild(this.editor);\n this.ui.setFocus(this.editor);\n this.ui.requestRender();\n };\n\n const dialog = new LoginDialogComponent(\n this.ui,\n providerId,\n () => restoreEditor(),\n providerName,\n \"Amazon Bedrock setup\",\n );\n dialog.showDetails([\n theme.fg(\n \"text\",\n \"Amazon Bedrock uses AWS credentials instead of a single API key.\",\n ),\n theme.fg(\n \"text\",\n \"Configure an AWS profile, IAM keys, bearer token, or role-based credentials.\",\n ),\n theme.fg(\"muted\", \"See:\"),\n theme.fg(\"accent\", ` ${path.join(getDocsPath(), \"providers.md\")}`),\n ]);\n\n this.editorContainer.clear();\n this.editorContainer.addChild(dialog);\n this.ui.setFocus(dialog);\n this.ui.requestRender();\n };\n\nInteractiveModeBase.prototype.showApiKeyLoginDialog = async function(this: InteractiveModeBase, providerId: string, providerName: string): Promise<void> {\n const previousModel = this.session.model;\n\n const dialog = new LoginDialogComponent(\n this.ui,\n providerId,\n (_success, _message) => {\n // Completion handled below\n },\n providerName,\n );\n\n this.editorContainer.clear();\n this.editorContainer.addChild(dialog);\n this.ui.setFocus(dialog);\n this.ui.requestRender();\n\n const restoreEditor = () => {\n this.editorContainer.clear();\n this.editorContainer.addChild(this.editor);\n this.ui.setFocus(this.editor);\n this.ui.requestRender();\n };\n\n try {\n const customAuth = this.session.modelRegistry.getCustomApiKeyAuth(providerId);\n if (customAuth) {\n const credential = await customAuth.login({\n signal: dialog.signal,\n prompt: (prompt) => dialog.showPrompt(prompt.message, prompt.placeholder),\n });\n this.session.modelRegistry.authStorage.set(providerId, credential);\n } else {\n const apiKey = (await dialog.showPrompt(\"Enter API key:\")).trim();\n if (!apiKey) throw new Error(\"API key cannot be empty.\");\n this.session.modelRegistry.authStorage.set(providerId, { type: \"api_key\", key: apiKey });\n }\n\n restoreEditor();\n await this.completeProviderAuthentication(\n providerId,\n providerName,\n \"api_key\",\n previousModel,\n );\n } catch (error: unknown) {\n restoreEditor();\n\t\tconst errorMsg = error instanceof Error ? error.message : String(error);\n\t\tif (!isOAuthLoginCancelled(error)) {\n\t\t\tthis.showError(`Failed to save API key for ${providerName}: ${errorMsg}`);\n\t\t}\n }\n };\n\nInteractiveModeBase.prototype.showOAuthLoginSelect = function(this: InteractiveModeBase, dialog: LoginDialogComponent, prompt: OAuthSelectPrompt): Promise<string | undefined> {\n return new Promise((resolve) => {\n const restoreDialog = () => {\n this.editorContainer.clear();\n this.editorContainer.addChild(dialog);\n this.ui.setFocus(dialog);\n this.ui.requestRender();\n };\n const labels = prompt.options.map((option) => option.label);\n const selector = new ExtensionSelectorComponent(\n prompt.message,\n labels,\n (optionLabel) => {\n restoreDialog();\n resolve(\n prompt.options.find((option) => option.label === optionLabel)?.id,\n );\n },\n () => {\n restoreDialog();\n resolve(undefined);\n },\n );\n this.editorContainer.clear();\n this.editorContainer.addChild(selector);\n this.ui.setFocus(selector);\n this.ui.requestRender();\n });\n };\n\nInteractiveModeBase.prototype.showLoginDialog = async function(this: InteractiveModeBase, providerId: string, providerName: string): Promise<void> {\n const providerInfo = this.session.modelRegistry.authStorage\n .getOAuthProviders()\n .find((provider) => provider.id === providerId);\n const previousModel = this.session.model;\n\n // Providers that use callback servers (can paste redirect URL)\n const usesCallbackServer = providerInfo?.usesCallbackServer ?? false;\n\n // Create login dialog component\n const dialog = new LoginDialogComponent(\n this.ui,\n providerId,\n (_success, _message) => {\n // Completion handled below\n },\n providerName,\n );\n\n // Show dialog in editor container\n this.editorContainer.clear();\n this.editorContainer.addChild(dialog);\n this.ui.setFocus(dialog);\n this.ui.requestRender();\n\n // Promise for manual code input (racing with callback server)\n let manualCodeResolve: ((code: string) => void) | undefined;\n let manualCodeReject: ((err: Error) => void) | undefined;\n const manualCodePromise = new Promise<string>((resolve, reject) => {\n manualCodeResolve = resolve;\n manualCodeReject = reject;\n });\n\n // Restore editor helper\n const restoreEditor = () => {\n this.editorContainer.clear();\n this.editorContainer.addChild(this.editor);\n this.ui.setFocus(this.editor);\n this.ui.requestRender();\n };\n\n\tlet loginSucceeded = false;\n\ttry {\n\t\tconst loginResult = await this.runtimeHost.loginOAuthProvider(\n\t\t\tproviderId,\n\t\t\t{\n onAuth: (info: { url: string; instructions?: string }) => {\n dialog.showAuth(info.url, info.instructions, {\n showCancelHint: !usesCallbackServer,\n });\n\n if (usesCallbackServer) {\n // Show input for manual paste, racing with callback\n dialog\n .showManualInput(\n \"Paste redirect URL below, or complete login in browser:\",\n )\n .then((value) => {\n if (value && manualCodeResolve) {\n manualCodeResolve(value);\n manualCodeResolve = undefined;\n }\n })\n .catch(() => {\n if (manualCodeReject) {\n manualCodeReject(new Error(\"Login cancelled\"));\n manualCodeReject = undefined;\n }\n });\n }\n // For Anthropic: onPrompt is called immediately after\n },\n\n onDeviceCode: (info) => {\n dialog.showDeviceCode(info);\n dialog.showWaiting(\"Waiting for authentication...\");\n },\n\n onPrompt: async (prompt: {\n message: string;\n placeholder?: string;\n }) => {\n return dialog.showPrompt(prompt.message, prompt.placeholder);\n },\n\n onProgress: (message: string) => {\n dialog.showProgress(message);\n },\n\n onInfo: (message, links) => {\n dialog.showInfo(message, links);\n },\n\n onSelect: (prompt: OAuthSelectPrompt) =>\n this.showOAuthLoginSelect(dialog, prompt),\n\n onManualCodeInput: () => manualCodePromise,\n\n onManualCodeCancel: () => {\n dialog.dismissPendingInput();\n manualCodeResolve?.(\"\");\n manualCodeResolve = undefined;\n manualCodeReject = undefined;\n },\n\n signal: dialog.signal,\n },\n\t\t);\n\t\tloginSucceeded = true;\n\n // Success\n restoreEditor();\n\t\tawait this.completeProviderAuthentication(\n\t\t\tproviderId,\n\t\t\tproviderName,\n\t\t\t\"oauth\",\n\t\t\tpreviousModel,\n\t\t\tloginResult,\n\t\t);\n } catch (error: unknown) {\n restoreEditor();\n\t\tconst errorMsg = error instanceof Error ? error.message : String(error);\n\t\tif (loginSucceeded || !isOAuthLoginCancelled(error)) {\n\t\t\tthis.showError(`Failed to login to ${providerName}: ${errorMsg}`);\n\t\t}\n }\n };\n"]}
|
|
@@ -57,8 +57,11 @@ InteractiveModeBase.prototype.getLoginProviderOptions = function (authType) {
|
|
|
57
57
|
};
|
|
58
58
|
InteractiveModeBase.prototype.getLogoutProviderOptions = function () {
|
|
59
59
|
const authStorage = this.session.modelRegistry.authStorage;
|
|
60
|
+
const supportedProviderIds = new Set(this.getLoginProviderOptions().map((provider) => provider.id));
|
|
60
61
|
const options = [];
|
|
61
62
|
for (const providerId of authStorage.list()) {
|
|
63
|
+
if (!supportedProviderIds.has(providerId))
|
|
64
|
+
continue;
|
|
62
65
|
const credential = authStorage.get(providerId);
|
|
63
66
|
if (!credential)
|
|
64
67
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-auth-routing.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-auth-routing.ts"],"names":[],"mappings":"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","sourcesContent":["import { builtinProviders } from \"@earendil-works/pi-ai/providers/all\";\nimport type { AuthStatus } from \"../../core/auth-storage.ts\";\nimport { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport {\n type AuthSelectorProvider,\n ExtensionSelectorComponent,\n OAuthSelectorComponent,\n} from \"./interactive-mode-deps.ts\";\nimport { BEDROCK_PROVIDER_ID } from \"./interactive-mode-helpers.ts\";\nimport { resolveLoginProviderReference } from \"./login-provider-options.ts\";\n\nexport function formatLogoutStatus(\n providerName: string,\n authType: \"oauth\" | \"api_key\",\n authStatus: AuthStatus,\n): string {\n const action = authType === \"oauth\"\n ? `Logged out of ${providerName}`\n : `Removed stored API key for ${providerName}`;\n return authStatus.source\n ? `${action}. Authentication remains active through ${authStatus.label ?? authStatus.source}.`\n : action;\n}\n\nexport function getBuiltinApiKeyLoginOptions(\n getDisplayName: (providerId: string) => string,\n): AuthSelectorProvider[] {\n return builtinProviders()\n .filter((provider) => provider.auth.apiKey !== undefined)\n .map((provider) => ({\n id: provider.id,\n name: getDisplayName(provider.id),\n authType: \"api_key\" as const,\n }));\n}\n\nInteractiveModeBase.prototype.getLoginProviderOptions = function(\n this: InteractiveModeBase,\n authType?: \"oauth\" | \"api_key\",\n): AuthSelectorProvider[] {\n const authStorage = this.session.modelRegistry.authStorage;\n const oauthProviders = authStorage.getOAuthProviders();\n const options: AuthSelectorProvider[] = oauthProviders.map((provider) => ({\n id: provider.id,\n name: this.session.modelRegistry.getProviderDisplayName(provider.id),\n authType: \"oauth\",\n }));\n\n const builtins = builtinProviders();\n const builtinIds = new Set(builtins.map((provider) => provider.id));\n options.push(...getBuiltinApiKeyLoginOptions(\n (providerId) => this.session.modelRegistry.getProviderDisplayName(providerId),\n ));\n const customApiKeyProviders = this.session.modelRegistry.getCustomApiKeyAuthProviders();\n const customApiKeyProviderIds = new Set(customApiKeyProviders.map((provider) => provider.id));\n options.push(...customApiKeyProviders.map((provider) => ({\n ...provider,\n authType: \"api_key\" as const,\n })));\n\n // Legacy extension/config providers do not expose pi-ai auth metadata. Keep\n // Atomic's existing API-key behavior for model-backed, non-OAuth providers.\n const oauthProviderIds = new Set(oauthProviders.map((provider) => provider.id));\n const modelProviderIds = new Set(\n this.session.modelRegistry.getAll().map((model) => model.provider),\n );\n for (const providerId of modelProviderIds) {\n if (builtinIds.has(providerId) || oauthProviderIds.has(providerId) || customApiKeyProviderIds.has(providerId)) continue;\n options.push({\n id: providerId,\n name: this.session.modelRegistry.getProviderDisplayName(providerId),\n authType: \"api_key\",\n });\n }\n\n const filtered = authType\n ? options.filter((option) => option.authType === authType)\n : options;\n return filtered.sort((a, b) => a.name.localeCompare(b.name));\n};\n\nInteractiveModeBase.prototype.getLogoutProviderOptions = function(\n this: InteractiveModeBase,\n): AuthSelectorProvider[] {\n const authStorage = this.session.modelRegistry.authStorage;\n const options: AuthSelectorProvider[] = [];\n for (const providerId of authStorage.list()) {\n const credential = authStorage.get(providerId);\n if (!credential) continue;\n options.push({\n id: providerId,\n name: this.session.modelRegistry.getProviderDisplayName(providerId),\n authType: credential.type,\n });\n }\n return options.sort((a, b) => a.name.localeCompare(b.name));\n};\n\nInteractiveModeBase.prototype.startProviderLogin = async function(\n this: InteractiveModeBase,\n providerOption: AuthSelectorProvider,\n): Promise<void> {\n if (providerOption.authType === \"oauth\") {\n await this.showLoginDialog(providerOption.id, providerOption.name);\n } else if (providerOption.id === BEDROCK_PROVIDER_ID) {\n this.showBedrockSetupDialog(providerOption.id, providerOption.name);\n } else {\n await this.showApiKeyLoginDialog(providerOption.id, providerOption.name);\n }\n};\n\nInteractiveModeBase.prototype.handleLoginCommand = async function(\n this: InteractiveModeBase,\n providerRef?: string,\n): Promise<void> {\n if (!providerRef?.trim()) {\n this.showLoginAuthTypeSelector();\n return;\n }\n const resolution = resolveLoginProviderReference(\n this.getLoginProviderOptions(),\n providerRef,\n );\n if (resolution.kind === \"direct\") {\n await this.startProviderLogin(resolution.option);\n } else if (resolution.kind === \"choose_method\") {\n this.showLoginAuthTypeSelector(resolution.options);\n } else {\n this.showLoginProviderSelector(undefined, resolution.initialSearch);\n }\n};\n\nInteractiveModeBase.prototype.showLoginAuthTypeSelector = function(\n this: InteractiveModeBase,\n providerOptions?: AuthSelectorProvider[],\n): void {\n const subscriptionLabel = \"Use a subscription\";\n const apiKeyLabel = \"Use an API key\";\n const choices = providerOptions\n ? providerOptions.map((provider) =>\n provider.authType === \"oauth\" ? subscriptionLabel : apiKeyLabel\n )\n : [subscriptionLabel, apiKeyLabel];\n this.showSelector((done) => {\n const selector = new ExtensionSelectorComponent(\n \"Select authentication method:\",\n choices,\n (option) => {\n done();\n const authType = option === subscriptionLabel ? \"oauth\" : \"api_key\";\n const directOption = providerOptions?.find(\n (provider) => provider.authType === authType,\n );\n if (directOption) void this.startProviderLogin(directOption);\n else this.showLoginProviderSelector(authType);\n },\n () => {\n done();\n this.ui.requestRender();\n },\n );\n return { component: selector, focus: selector };\n });\n};\n\nInteractiveModeBase.prototype.showLoginProviderSelector = function(\n this: InteractiveModeBase,\n authType?: \"oauth\" | \"api_key\",\n initialSearchInput?: string,\n): void {\n const providerOptions = this.getLoginProviderOptions(authType);\n if (providerOptions.length === 0) {\n const message = authType === \"oauth\"\n ? \"No subscription providers available.\"\n : authType === \"api_key\"\n ? \"No API key providers available.\"\n : \"No login providers available.\";\n this.showStatus(message);\n return;\n }\n\n this.showSelector((done) => {\n const selector = new OAuthSelectorComponent(\n \"login\",\n this.session.modelRegistry.authStorage,\n providerOptions,\n async (providerId, selectedAuthType) => {\n done();\n const providerOption = providerOptions.find(\n (provider) =>\n provider.id === providerId && provider.authType === selectedAuthType,\n );\n if (providerOption) await this.startProviderLogin(providerOption);\n },\n () => {\n done();\n if (authType) this.showLoginAuthTypeSelector();\n else this.ui.requestRender();\n },\n (providerId) => this.session.modelRegistry.getProviderAuthStatus(providerId),\n initialSearchInput,\n );\n return { component: selector, focus: selector };\n });\n};\n\nInteractiveModeBase.prototype.showOAuthSelector = async function(\n this: InteractiveModeBase,\n mode: \"login\" | \"logout\",\n): Promise<void> {\n if (mode === \"login\") {\n this.showLoginAuthTypeSelector();\n return;\n }\n const providerOptions = this.getLogoutProviderOptions();\n if (providerOptions.length === 0) {\n this.showStatus(\n \"No stored credentials to remove. /logout only removes credentials saved by /login; environment variables and models.json config are unchanged.\",\n );\n return;\n }\n this.showSelector((done) => {\n const selector = new OAuthSelectorComponent(\n mode,\n this.session.modelRegistry.authStorage,\n providerOptions,\n async (providerId, selectedAuthType) => {\n done();\n const providerOption = providerOptions.find(\n (provider) =>\n provider.id === providerId && provider.authType === selectedAuthType,\n );\n if (!providerOption) return;\n try {\n const result = await this.runtimeHost.logoutProvider(providerOption.id);\n await this.updateAvailableProviderCount();\n this.setupAutocompleteProvider();\n this.showStatus(formatLogoutStatus(\n providerOption.name,\n providerOption.authType,\n result.authStatus,\n ));\n } catch (error: unknown) {\n this.showError(\n `Logout failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n () => {\n done();\n this.ui.requestRender();\n },\n );\n return { component: selector, focus: selector };\n });\n};\n"]}
|
|
1
|
+
{"version":3,"file":"interactive-auth-routing.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-auth-routing.ts"],"names":[],"mappings":"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","sourcesContent":["import { builtinProviders } from \"@earendil-works/pi-ai/providers/all\";\nimport type { AuthStatus } from \"../../core/auth-storage.ts\";\nimport { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport {\n type AuthSelectorProvider,\n ExtensionSelectorComponent,\n OAuthSelectorComponent,\n} from \"./interactive-mode-deps.ts\";\nimport { BEDROCK_PROVIDER_ID } from \"./interactive-mode-helpers.ts\";\nimport { resolveLoginProviderReference } from \"./login-provider-options.ts\";\n\nexport function formatLogoutStatus(\n providerName: string,\n authType: \"oauth\" | \"api_key\",\n authStatus: AuthStatus,\n): string {\n const action = authType === \"oauth\"\n ? `Logged out of ${providerName}`\n : `Removed stored API key for ${providerName}`;\n return authStatus.source\n ? `${action}. Authentication remains active through ${authStatus.label ?? authStatus.source}.`\n : action;\n}\n\nexport function getBuiltinApiKeyLoginOptions(\n getDisplayName: (providerId: string) => string,\n): AuthSelectorProvider[] {\n return builtinProviders()\n .filter((provider) => provider.auth.apiKey !== undefined)\n .map((provider) => ({\n id: provider.id,\n name: getDisplayName(provider.id),\n authType: \"api_key\" as const,\n }));\n}\n\nInteractiveModeBase.prototype.getLoginProviderOptions = function(\n this: InteractiveModeBase,\n authType?: \"oauth\" | \"api_key\",\n): AuthSelectorProvider[] {\n const authStorage = this.session.modelRegistry.authStorage;\n const oauthProviders = authStorage.getOAuthProviders();\n const options: AuthSelectorProvider[] = oauthProviders.map((provider) => ({\n id: provider.id,\n name: this.session.modelRegistry.getProviderDisplayName(provider.id),\n authType: \"oauth\",\n }));\n\n const builtins = builtinProviders();\n const builtinIds = new Set(builtins.map((provider) => provider.id));\n options.push(...getBuiltinApiKeyLoginOptions(\n (providerId) => this.session.modelRegistry.getProviderDisplayName(providerId),\n ));\n const customApiKeyProviders = this.session.modelRegistry.getCustomApiKeyAuthProviders();\n const customApiKeyProviderIds = new Set(customApiKeyProviders.map((provider) => provider.id));\n options.push(...customApiKeyProviders.map((provider) => ({\n ...provider,\n authType: \"api_key\" as const,\n })));\n\n // Legacy extension/config providers do not expose pi-ai auth metadata. Keep\n // Atomic's existing API-key behavior for model-backed, non-OAuth providers.\n const oauthProviderIds = new Set(oauthProviders.map((provider) => provider.id));\n const modelProviderIds = new Set(\n this.session.modelRegistry.getAll().map((model) => model.provider),\n );\n for (const providerId of modelProviderIds) {\n if (builtinIds.has(providerId) || oauthProviderIds.has(providerId) || customApiKeyProviderIds.has(providerId)) continue;\n options.push({\n id: providerId,\n name: this.session.modelRegistry.getProviderDisplayName(providerId),\n authType: \"api_key\",\n });\n }\n\n const filtered = authType\n ? options.filter((option) => option.authType === authType)\n : options;\n return filtered.sort((a, b) => a.name.localeCompare(b.name));\n};\n\nInteractiveModeBase.prototype.getLogoutProviderOptions = function(\n this: InteractiveModeBase,\n): AuthSelectorProvider[] {\n const authStorage = this.session.modelRegistry.authStorage;\n const supportedProviderIds = new Set(\n this.getLoginProviderOptions().map((provider) => provider.id),\n );\n const options: AuthSelectorProvider[] = [];\n for (const providerId of authStorage.list()) {\n if (!supportedProviderIds.has(providerId)) continue;\n const credential = authStorage.get(providerId);\n if (!credential) continue;\n options.push({\n id: providerId,\n name: this.session.modelRegistry.getProviderDisplayName(providerId),\n authType: credential.type,\n });\n }\n return options.sort((a, b) => a.name.localeCompare(b.name));\n};\n\nInteractiveModeBase.prototype.startProviderLogin = async function(\n this: InteractiveModeBase,\n providerOption: AuthSelectorProvider,\n): Promise<void> {\n if (providerOption.authType === \"oauth\") {\n await this.showLoginDialog(providerOption.id, providerOption.name);\n } else if (providerOption.id === BEDROCK_PROVIDER_ID) {\n this.showBedrockSetupDialog(providerOption.id, providerOption.name);\n } else {\n await this.showApiKeyLoginDialog(providerOption.id, providerOption.name);\n }\n};\n\nInteractiveModeBase.prototype.handleLoginCommand = async function(\n this: InteractiveModeBase,\n providerRef?: string,\n): Promise<void> {\n if (!providerRef?.trim()) {\n this.showLoginAuthTypeSelector();\n return;\n }\n const resolution = resolveLoginProviderReference(\n this.getLoginProviderOptions(),\n providerRef,\n );\n if (resolution.kind === \"direct\") {\n await this.startProviderLogin(resolution.option);\n } else if (resolution.kind === \"choose_method\") {\n this.showLoginAuthTypeSelector(resolution.options);\n } else {\n this.showLoginProviderSelector(undefined, resolution.initialSearch);\n }\n};\n\nInteractiveModeBase.prototype.showLoginAuthTypeSelector = function(\n this: InteractiveModeBase,\n providerOptions?: AuthSelectorProvider[],\n): void {\n const subscriptionLabel = \"Use a subscription\";\n const apiKeyLabel = \"Use an API key\";\n const choices = providerOptions\n ? providerOptions.map((provider) =>\n provider.authType === \"oauth\" ? subscriptionLabel : apiKeyLabel\n )\n : [subscriptionLabel, apiKeyLabel];\n this.showSelector((done) => {\n const selector = new ExtensionSelectorComponent(\n \"Select authentication method:\",\n choices,\n (option) => {\n done();\n const authType = option === subscriptionLabel ? \"oauth\" : \"api_key\";\n const directOption = providerOptions?.find(\n (provider) => provider.authType === authType,\n );\n if (directOption) void this.startProviderLogin(directOption);\n else this.showLoginProviderSelector(authType);\n },\n () => {\n done();\n this.ui.requestRender();\n },\n );\n return { component: selector, focus: selector };\n });\n};\n\nInteractiveModeBase.prototype.showLoginProviderSelector = function(\n this: InteractiveModeBase,\n authType?: \"oauth\" | \"api_key\",\n initialSearchInput?: string,\n): void {\n const providerOptions = this.getLoginProviderOptions(authType);\n if (providerOptions.length === 0) {\n const message = authType === \"oauth\"\n ? \"No subscription providers available.\"\n : authType === \"api_key\"\n ? \"No API key providers available.\"\n : \"No login providers available.\";\n this.showStatus(message);\n return;\n }\n\n this.showSelector((done) => {\n const selector = new OAuthSelectorComponent(\n \"login\",\n this.session.modelRegistry.authStorage,\n providerOptions,\n async (providerId, selectedAuthType) => {\n done();\n const providerOption = providerOptions.find(\n (provider) =>\n provider.id === providerId && provider.authType === selectedAuthType,\n );\n if (providerOption) await this.startProviderLogin(providerOption);\n },\n () => {\n done();\n if (authType) this.showLoginAuthTypeSelector();\n else this.ui.requestRender();\n },\n (providerId) => this.session.modelRegistry.getProviderAuthStatus(providerId),\n initialSearchInput,\n );\n return { component: selector, focus: selector };\n });\n};\n\nInteractiveModeBase.prototype.showOAuthSelector = async function(\n this: InteractiveModeBase,\n mode: \"login\" | \"logout\",\n): Promise<void> {\n if (mode === \"login\") {\n this.showLoginAuthTypeSelector();\n return;\n }\n const providerOptions = this.getLogoutProviderOptions();\n if (providerOptions.length === 0) {\n this.showStatus(\n \"No stored credentials to remove. /logout only removes credentials saved by /login; environment variables and models.json config are unchanged.\",\n );\n return;\n }\n this.showSelector((done) => {\n const selector = new OAuthSelectorComponent(\n mode,\n this.session.modelRegistry.authStorage,\n providerOptions,\n async (providerId, selectedAuthType) => {\n done();\n const providerOption = providerOptions.find(\n (provider) =>\n provider.id === providerId && provider.authType === selectedAuthType,\n );\n if (!providerOption) return;\n try {\n const result = await this.runtimeHost.logoutProvider(providerOption.id);\n await this.updateAvailableProviderCount();\n this.setupAutocompleteProvider();\n this.showStatus(formatLogoutStatus(\n providerOption.name,\n providerOption.authType,\n result.authStatus,\n ));\n } catch (error: unknown) {\n this.showError(\n `Logout failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n () => {\n done();\n this.ui.requestRender();\n },\n );\n return { component: selector, focus: selector };\n });\n};\n"]}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
/** Warning shown when `/compact` is submitted while a compaction is already running. */
|
|
2
|
+
export declare const COMPACTION_ALREADY_IN_PROGRESS_WARNING = "Compaction is already in progress. Wait for it to finish before running /compact again.";
|
|
2
3
|
//# sourceMappingURL=interactive-bash-compact.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-bash-compact.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-bash-compact.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"interactive-bash-compact.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-bash-compact.ts"],"names":[],"mappings":"AAGA,wFAAwF;AACxF,eAAO,MAAM,sCAAsC,4FACwC,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { InteractiveModeBase } from "./interactive-mode-base.js";
|
|
2
2
|
import { BashExecutionComponent } from "./interactive-mode-deps.js";
|
|
3
|
+
/** Warning shown when `/compact` is submitted while a compaction is already running. */
|
|
4
|
+
export const COMPACTION_ALREADY_IN_PROGRESS_WARNING = "Compaction is already in progress. Wait for it to finish before running /compact again.";
|
|
3
5
|
InteractiveModeBase.prototype.handleBashCommand = async function (command, excludeFromContext = false) {
|
|
4
6
|
const extensionRunner = this.session.extensionRunner;
|
|
5
7
|
// Emit user_bash event to let extensions intercept
|
|
@@ -70,6 +72,12 @@ InteractiveModeBase.prototype.handleBashCommand = async function (command, exclu
|
|
|
70
72
|
this.ui.requestRender();
|
|
71
73
|
};
|
|
72
74
|
InteractiveModeBase.prototype.handleCompactCommand = async function () {
|
|
75
|
+
// Guard every caller, not just the `/compact` input branch: starting a second
|
|
76
|
+
// compaction would race the live one and append a duplicate boundary.
|
|
77
|
+
if (this.session.isCompacting) {
|
|
78
|
+
this.showWarning(COMPACTION_ALREADY_IN_PROGRESS_WARNING);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
73
81
|
const entries = this.sessionManager.getEntries();
|
|
74
82
|
const messageCount = entries.filter((e) => e.type === "message").length;
|
|
75
83
|
if (messageCount < 2) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-bash-compact.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-bash-compact.ts"],"names":[],"mappings":"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","sourcesContent":["import { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport { type TruncationResult, BashExecutionComponent } from \"./interactive-mode-deps.ts\";\n\nInteractiveModeBase.prototype.handleBashCommand = async function(this: InteractiveModeBase, command: string, excludeFromContext = false): Promise<void> {\n const extensionRunner = this.session.extensionRunner;\n\n // Emit user_bash event to let extensions intercept\n const eventResult = await extensionRunner.emitUserBash({\n type: \"user_bash\",\n command,\n excludeFromContext,\n cwd: this.sessionManager.getCwd(),\n });\n\n // If extension returned a full result, use it directly\n if (eventResult?.result) {\n const result = eventResult.result;\n\n // Create UI component for display\n this.bashComponent = new BashExecutionComponent(\n command,\n this.ui,\n excludeFromContext,\n );\n if (this.session.isStreaming) {\n this.pendingMessagesContainer.addChild(this.bashComponent);\n this.pendingBashComponents.push(this.bashComponent);\n } else {\n this.chatContainer.addChild(this.bashComponent);\n }\n\n // Show output and complete\n if (result.output) {\n this.bashComponent.appendOutput(result.output);\n }\n this.bashComponent.setComplete(\n result.exitCode,\n result.cancelled,\n result.truncated\n ? ({ truncated: true, content: result.output } as TruncationResult)\n : undefined,\n result.fullOutputPath,\n );\n\n // Record the result in session\n this.session.recordBashResult(command, result, { excludeFromContext });\n this.bashComponent = undefined;\n this.ui.requestRender();\n return;\n }\n\n // Normal execution path (possibly with custom operations)\n const isDeferred = this.session.isStreaming;\n this.bashComponent = new BashExecutionComponent(\n command,\n this.ui,\n excludeFromContext,\n );\n\n if (isDeferred) {\n // Show in pending area when agent is streaming\n this.pendingMessagesContainer.addChild(this.bashComponent);\n this.pendingBashComponents.push(this.bashComponent);\n } else {\n // Show in chat immediately when agent is idle\n this.chatContainer.addChild(this.bashComponent);\n }\n this.ui.requestRender();\n\n try {\n const result = await this.session.executeBash(\n command,\n (chunk) => {\n if (this.bashComponent) {\n this.bashComponent.appendOutput(chunk);\n this.ui.requestRender();\n }\n },\n { excludeFromContext, operations: eventResult?.operations },\n );\n\n if (this.bashComponent) {\n this.bashComponent.setComplete(\n result.exitCode,\n result.cancelled,\n result.truncated\n ? ({ truncated: true, content: result.output } as TruncationResult)\n : undefined,\n result.fullOutputPath,\n );\n }\n } catch (error) {\n if (this.bashComponent) {\n this.bashComponent.setComplete(undefined, false);\n }\n this.showError(\n `Bash command failed: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n );\n }\n\n this.bashComponent = undefined;\n this.ui.requestRender();\n };\n\nInteractiveModeBase.prototype.handleCompactCommand = async function(this: InteractiveModeBase): Promise<void> {\n const entries = this.sessionManager.getEntries();\n const messageCount = entries.filter((e) => e.type === \"message\").length;\n\n if (messageCount < 2) {\n this.showWarning(\"Nothing to compact (no messages yet)\");\n return;\n }\n\n if (this.loadingAnimation) {\n this.loadingAnimation.stop();\n this.loadingAnimation = undefined;\n }\n this.statusContainer.clear();\n\n try {\n await this.session.compact();\n } catch {\n // Ignore, will be emitted as an event\n }\n };\n\nInteractiveModeBase.prototype.stop = function(this: InteractiveModeBase): void {\n this.disposeInteractiveEngineHost();\n this.disposeInteractiveEngineHost = () => {};\n if (this.settingsManager.getShowTerminalProgress()) {\n this.ui.terminal.setProgress(false);\n }\n if (this.loadingAnimation) {\n this.loadingAnimation.stop();\n this.loadingAnimation = undefined;\n }\n this.themeController.disableAutoSync();\n this.clearExtensionTerminalInputListeners();\n this.footer.dispose();\n this.footerDataProvider.dispose();\n if (this.unsubscribe) {\n this.unsubscribe();\n }\n if (this.isInitialized) {\n this.ui.stop();\n this.isInitialized = false;\n }\n this.unregisterSignalHandlers();\n };\n"]}
|
|
1
|
+
{"version":3,"file":"interactive-bash-compact.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-bash-compact.ts"],"names":[],"mappings":"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","sourcesContent":["import { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport { type TruncationResult, BashExecutionComponent } from \"./interactive-mode-deps.ts\";\n\n/** Warning shown when `/compact` is submitted while a compaction is already running. */\nexport const COMPACTION_ALREADY_IN_PROGRESS_WARNING =\n \"Compaction is already in progress. Wait for it to finish before running /compact again.\";\n\nInteractiveModeBase.prototype.handleBashCommand = async function(this: InteractiveModeBase, command: string, excludeFromContext = false): Promise<void> {\n const extensionRunner = this.session.extensionRunner;\n\n // Emit user_bash event to let extensions intercept\n const eventResult = await extensionRunner.emitUserBash({\n type: \"user_bash\",\n command,\n excludeFromContext,\n cwd: this.sessionManager.getCwd(),\n });\n\n // If extension returned a full result, use it directly\n if (eventResult?.result) {\n const result = eventResult.result;\n\n // Create UI component for display\n this.bashComponent = new BashExecutionComponent(\n command,\n this.ui,\n excludeFromContext,\n );\n if (this.session.isStreaming) {\n this.pendingMessagesContainer.addChild(this.bashComponent);\n this.pendingBashComponents.push(this.bashComponent);\n } else {\n this.chatContainer.addChild(this.bashComponent);\n }\n\n // Show output and complete\n if (result.output) {\n this.bashComponent.appendOutput(result.output);\n }\n this.bashComponent.setComplete(\n result.exitCode,\n result.cancelled,\n result.truncated\n ? ({ truncated: true, content: result.output } as TruncationResult)\n : undefined,\n result.fullOutputPath,\n );\n\n // Record the result in session\n this.session.recordBashResult(command, result, { excludeFromContext });\n this.bashComponent = undefined;\n this.ui.requestRender();\n return;\n }\n\n // Normal execution path (possibly with custom operations)\n const isDeferred = this.session.isStreaming;\n this.bashComponent = new BashExecutionComponent(\n command,\n this.ui,\n excludeFromContext,\n );\n\n if (isDeferred) {\n // Show in pending area when agent is streaming\n this.pendingMessagesContainer.addChild(this.bashComponent);\n this.pendingBashComponents.push(this.bashComponent);\n } else {\n // Show in chat immediately when agent is idle\n this.chatContainer.addChild(this.bashComponent);\n }\n this.ui.requestRender();\n\n try {\n const result = await this.session.executeBash(\n command,\n (chunk) => {\n if (this.bashComponent) {\n this.bashComponent.appendOutput(chunk);\n this.ui.requestRender();\n }\n },\n { excludeFromContext, operations: eventResult?.operations },\n );\n\n if (this.bashComponent) {\n this.bashComponent.setComplete(\n result.exitCode,\n result.cancelled,\n result.truncated\n ? ({ truncated: true, content: result.output } as TruncationResult)\n : undefined,\n result.fullOutputPath,\n );\n }\n } catch (error) {\n if (this.bashComponent) {\n this.bashComponent.setComplete(undefined, false);\n }\n this.showError(\n `Bash command failed: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n );\n }\n\n this.bashComponent = undefined;\n this.ui.requestRender();\n };\n\nInteractiveModeBase.prototype.handleCompactCommand = async function(this: InteractiveModeBase): Promise<void> {\n // Guard every caller, not just the `/compact` input branch: starting a second\n // compaction would race the live one and append a duplicate boundary.\n if (this.session.isCompacting) {\n this.showWarning(COMPACTION_ALREADY_IN_PROGRESS_WARNING);\n return;\n }\n\n const entries = this.sessionManager.getEntries();\n const messageCount = entries.filter((e) => e.type === \"message\").length;\n\n if (messageCount < 2) {\n this.showWarning(\"Nothing to compact (no messages yet)\");\n return;\n }\n\n if (this.loadingAnimation) {\n this.loadingAnimation.stop();\n this.loadingAnimation = undefined;\n }\n this.statusContainer.clear();\n\n try {\n await this.session.compact();\n } catch {\n // Ignore, will be emitted as an event\n }\n };\n\nInteractiveModeBase.prototype.stop = function(this: InteractiveModeBase): void {\n this.disposeInteractiveEngineHost();\n this.disposeInteractiveEngineHost = () => {};\n if (this.settingsManager.getShowTerminalProgress()) {\n this.ui.terminal.setProgress(false);\n }\n if (this.loadingAnimation) {\n this.loadingAnimation.stop();\n this.loadingAnimation = undefined;\n }\n this.themeController.disableAutoSync();\n this.clearExtensionTerminalInputListeners();\n this.footer.dispose();\n this.footerDataProvider.dispose();\n if (this.unsubscribe) {\n this.unsubscribe();\n }\n if (this.isInitialized) {\n this.ui.stop();\n this.isInitialized = false;\n }\n this.unregisterSignalHandlers();\n };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-deferred-startup.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-deferred-startup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"interactive-deferred-startup.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-deferred-startup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAajE,MAAM,WAAW,mBAAmB;IAChC,sBAAsB,EAAE,OAAO,CAAC;IAChC,sBAAsB,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAClD,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAEH,wBAAsB,6BAA6B,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAa1F;AA6DH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCpF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InteractiveModeBase } from "./interactive-mode-base.js";
|
|
2
2
|
import { modelsAreEqual } from "@earendil-works/pi-ai/compat";
|
|
3
|
-
import { recordTimeSinceReset, resolveModelScopeWithDiagnostics, resolveRestoredModelReference, setRegisteredThemes } from "./interactive-mode-deps.js";
|
|
3
|
+
import { findInitialModel, formatNoModelsAvailableMessage, recordTimeSinceReset, resolveModelScopeWithDiagnostics, resolveRestoredModelReference, setRegisteredThemes, } from "./interactive-mode-deps.js";
|
|
4
|
+
import { releaseStartupChatOutput } from "./interactive-startup-chat-container.js";
|
|
4
5
|
export async function ensureDeferredStartupComplete(mode) {
|
|
5
6
|
if (!mode.deferredStartupPending && !mode.deferredStartupPromise)
|
|
6
7
|
return;
|
|
@@ -30,7 +31,12 @@ InteractiveModeBase.prototype.completeDeferredStartup = async function () {
|
|
|
30
31
|
try {
|
|
31
32
|
await this.bindCurrentSessionExtensions();
|
|
32
33
|
await this.session.reload({ reason: "startup" });
|
|
33
|
-
|
|
34
|
+
// A prompt turn keeps its own working loader mounted from submit until
|
|
35
|
+
// `agent_start` or `compaction_start` takes over; tearing it down here
|
|
36
|
+
// would leave the rest of startup and prompt preflight with no indicator.
|
|
37
|
+
if (!this.promptTurnWorkingLoaderActive) {
|
|
38
|
+
this.stopWorkingLoader();
|
|
39
|
+
}
|
|
34
40
|
this.deferredStartupPending = false;
|
|
35
41
|
recordTimeSinceReset("deferred-extension-load");
|
|
36
42
|
setRegisteredThemes(this.session.resourceLoader.getThemes().themes);
|
|
@@ -39,15 +45,10 @@ InteractiveModeBase.prototype.completeDeferredStartup = async function () {
|
|
|
39
45
|
this.setupExtensionShortcuts(this.session.extensionRunner);
|
|
40
46
|
await applyDeferredModelScope(this);
|
|
41
47
|
await this.retryDeferredModelRestore(this.startupNoticesContainer);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
this.showLoadedResources({ force: true, showDiagnosticsWhenQuiet: true, targetContainer: this.startupNoticesContainer });
|
|
47
|
-
// Keep the subscription warning after the RESOURCES disclosure.
|
|
48
|
-
void this.maybeWarnAboutAnthropicSubscriptionAuth(undefined, this.startupNoticesContainer);
|
|
49
|
-
this.showStartupNoticesIfNeeded(this.startupNoticesContainer);
|
|
50
|
-
}
|
|
48
|
+
this.showLoadedResources({ force: true, showDiagnosticsWhenQuiet: true, targetContainer: this.resourceDisclosureContainer });
|
|
49
|
+
// Keep the subscription warning after the RESOURCES disclosure.
|
|
50
|
+
void this.maybeWarnAboutAnthropicSubscriptionAuth(undefined, this.startupNoticesContainer);
|
|
51
|
+
this.showStartupNoticesIfNeeded(this.startupNoticesContainer);
|
|
51
52
|
const modelsJsonError = this.session.modelRegistry.getError();
|
|
52
53
|
if (modelsJsonError) {
|
|
53
54
|
this.showError(`models.json error: ${modelsJsonError}`);
|
|
@@ -57,12 +58,21 @@ InteractiveModeBase.prototype.completeDeferredStartup = async function () {
|
|
|
57
58
|
this.ui.requestRender();
|
|
58
59
|
}
|
|
59
60
|
catch (error) {
|
|
60
|
-
this
|
|
61
|
+
// Same ownership rule as the success path: this catch swallows the error,
|
|
62
|
+
// so prompt preflight continues and must keep its indicator.
|
|
63
|
+
if (!this.promptTurnWorkingLoaderActive) {
|
|
64
|
+
this.stopWorkingLoader();
|
|
65
|
+
}
|
|
61
66
|
this.deferredStartupPending = false;
|
|
62
67
|
this.showError(`Extension loading failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
63
68
|
// The RESOURCES disclosure will not render; surface the held warning.
|
|
64
69
|
void this.maybeWarnAboutAnthropicSubscriptionAuth(undefined, this.startupNoticesContainer);
|
|
65
70
|
}
|
|
71
|
+
finally {
|
|
72
|
+
// Extension loading has either produced the disclosure or definitively
|
|
73
|
+
// failed, so startup ordering is resolved before any prompt can run.
|
|
74
|
+
releaseStartupChatOutput(this);
|
|
75
|
+
}
|
|
66
76
|
};
|
|
67
77
|
export async function applyDeferredModelScope(mode) {
|
|
68
78
|
const patterns = mode.options.deferredModelScopePatterns;
|
|
@@ -94,15 +104,14 @@ export async function applyDeferredModelScope(mode) {
|
|
|
94
104
|
}
|
|
95
105
|
}
|
|
96
106
|
/**
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
107
|
+
* Session-restored models and complete settings defaults may depend on an
|
|
108
|
+
* extension provider. Re-evaluate them after deferred registration finishes,
|
|
109
|
+
* then surface only the final warning state.
|
|
100
110
|
*/
|
|
101
111
|
InteractiveModeBase.prototype.retryDeferredModelRestore = async function (targetContainer) {
|
|
102
|
-
const
|
|
103
|
-
if (!
|
|
112
|
+
const preliminaryFallbackMessage = this.options.modelFallbackMessage;
|
|
113
|
+
if (!preliminaryFallbackMessage)
|
|
104
114
|
return;
|
|
105
|
-
}
|
|
106
115
|
const savedModel = this.sessionManager.buildSessionContext().model;
|
|
107
116
|
if (!savedModel && this.session.model && this.session.modelRegistry.hasConfiguredAuth(this.session.model)) {
|
|
108
117
|
return;
|
|
@@ -113,7 +122,28 @@ InteractiveModeBase.prototype.retryDeferredModelRestore = async function (target
|
|
|
113
122
|
await this.session.setModel(restoredModel);
|
|
114
123
|
return;
|
|
115
124
|
}
|
|
125
|
+
this.showWarning(preliminaryFallbackMessage, targetContainer);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const defaultProvider = this.settingsManager.getDefaultProvider();
|
|
129
|
+
const defaultModelId = this.settingsManager.getDefaultModel();
|
|
130
|
+
if (defaultProvider && defaultModelId) {
|
|
131
|
+
const result = await findInitialModel({
|
|
132
|
+
scopedModels: [],
|
|
133
|
+
isContinuing: false,
|
|
134
|
+
defaultProvider,
|
|
135
|
+
defaultModelId,
|
|
136
|
+
defaultThinkingLevel: this.settingsManager.getDefaultThinkingLevel(),
|
|
137
|
+
modelRegistry: this.session.modelRegistry,
|
|
138
|
+
});
|
|
139
|
+
if (result.model) {
|
|
140
|
+
await this.session.setModel(result.model);
|
|
141
|
+
this.session.setThinkingLevel(result.thinkingLevel);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
this.showWarning(result.fallbackMessage ?? formatNoModelsAvailableMessage(), targetContainer);
|
|
145
|
+
return;
|
|
116
146
|
}
|
|
117
|
-
this.showWarning(
|
|
147
|
+
this.showWarning(preliminaryFallbackMessage, targetContainer);
|
|
118
148
|
};
|
|
119
149
|
//# sourceMappingURL=interactive-deferred-startup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-deferred-startup.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-deferred-startup.ts"],"names":[],"mappings":"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","sourcesContent":["import { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport { modelsAreEqual } from \"@earendil-works/pi-ai/compat\";\nimport { type Container, recordTimeSinceReset, resolveModelScopeWithDiagnostics, resolveRestoredModelReference, setRegisteredThemes } from \"./interactive-mode-deps.ts\";\n\nexport interface DeferredStartupMode {\n deferredStartupPending: boolean;\n deferredStartupPromise: Promise<void> | undefined;\n completeDeferredStartup(): Promise<void>;\n }\n\nexport async function ensureDeferredStartupComplete(mode: DeferredStartupMode): Promise<void> {\n if (!mode.deferredStartupPending && !mode.deferredStartupPromise) return;\n const startupPromise = mode.deferredStartupPromise ?? Promise.resolve().then(() => mode.completeDeferredStartup());\n mode.deferredStartupPromise = startupPromise;\n try {\n await startupPromise;\n } catch {\n mode.deferredStartupPending = false;\n } finally {\n if (mode.deferredStartupPromise === startupPromise && !mode.deferredStartupPending) {\n mode.deferredStartupPromise = undefined;\n }\n }\n }\n\nInteractiveModeBase.prototype.ensureDeferredStartupComplete = async function(this: InteractiveModeBase): Promise<void> {\n await ensureDeferredStartupComplete(this);\n };\n\n/**\n * Finishes a startup where extension loading was deferred so the TUI could\n * paint immediately. Loads extension code via session.reload(), then applies\n * the same post-load UI wiring as /reload and discloses loaded resources.\n */\nInteractiveModeBase.prototype.completeDeferredStartup = async function(this: InteractiveModeBase): Promise<void> {\n try {\n await this.bindCurrentSessionExtensions();\n await this.session.reload({ reason: \"startup\" });\n\n this.stopWorkingLoader();\n this.deferredStartupPending = false;\n recordTimeSinceReset(\"deferred-extension-load\");\n\n setRegisteredThemes(this.session.resourceLoader.getThemes().themes);\n await this.themeController.applyFromSettings();\n this.setupAutocompleteProvider();\n this.setupExtensionShortcuts(this.session.extensionRunner);\n await applyDeferredModelScope(this);\n await this.retryDeferredModelRestore(this.startupNoticesContainer);\n if (this.deferLoadedResourcesDisclosureUntilAgentEnd) {\n this.pendingLoadedResourcesDisclosure = true;\n } else {\n this.showLoadedResources({ force: true, showDiagnosticsWhenQuiet: true, targetContainer: this.startupNoticesContainer });\n // Keep the subscription warning after the RESOURCES disclosure.\n void this.maybeWarnAboutAnthropicSubscriptionAuth(undefined, this.startupNoticesContainer);\n this.showStartupNoticesIfNeeded(this.startupNoticesContainer);\n }\n const modelsJsonError = this.session.modelRegistry.getError();\n if (modelsJsonError) {\n this.showError(`models.json error: ${modelsJsonError}`);\n }\n void this.updateAvailableProviderCount().catch(() => {});\n this.updateEditorBorderColor();\n this.ui.requestRender();\n } catch (error) {\n this.stopWorkingLoader();\n this.deferredStartupPending = false;\n this.showError(\n `Extension loading failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n // The RESOURCES disclosure will not render; surface the held warning.\n void this.maybeWarnAboutAnthropicSubscriptionAuth(undefined, this.startupNoticesContainer);\n }\n };\n\nexport async function applyDeferredModelScope(mode: InteractiveModeBase): Promise<void> {\n const patterns = mode.options.deferredModelScopePatterns;\n if (!patterns || patterns.length === 0) {\n return;\n }\n\n const { scopedModels, diagnostics } = await resolveModelScopeWithDiagnostics(patterns, mode.session.modelRegistry);\n for (const diagnostic of diagnostics) {\n mode.showWarning(diagnostic.message);\n }\n mode.session.setScopedModels(scopedModels);\n\n if (mode.sessionManager.buildSessionContext().messages.length > 0 || scopedModels.length === 0) {\n return;\n }\n\n const currentModel = mode.session.model;\n if (currentModel && scopedModels.some((scoped) => modelsAreEqual(scoped.model, currentModel))) {\n return;\n }\n\n const savedProvider = mode.settingsManager.getDefaultProvider();\n const savedModelId = mode.settingsManager.getDefaultModel();\n const savedModel = savedProvider && savedModelId ? mode.session.modelRegistry.find(savedProvider, savedModelId) : undefined;\n const preferred = savedModel ? scopedModels.find((scoped) => modelsAreEqual(scoped.model, savedModel)) : undefined;\n const nextScopedModel = preferred ?? scopedModels[0];\n if (mode.session.modelRegistry.hasConfiguredAuth(nextScopedModel.model)) {\n await mode.session.setModel(nextScopedModel.model);\n if (nextScopedModel.thinkingLevel && !mode.options.deferredModelScopePreserveThinking) {\n mode.session.setThinkingLevel(nextScopedModel.thinkingLevel);\n }\n }\n }\n\n/**\n * A session model saved with an extension-registered provider cannot resolve\n * until extensions load; retry the restore now and only surface the fallback\n * warning if it still fails.\n */\nInteractiveModeBase.prototype.retryDeferredModelRestore = async function(this: InteractiveModeBase, targetContainer?: Container): Promise<void> {\n const fallbackMessage = this.options.modelFallbackMessage;\n if (!fallbackMessage) {\n return;\n }\n const savedModel = this.sessionManager.buildSessionContext().model;\n if (!savedModel && this.session.model && this.session.modelRegistry.hasConfiguredAuth(this.session.model)) {\n return;\n }\n if (savedModel) {\n const restoredModel = await resolveRestoredModelReference(\n savedModel.provider,\n savedModel.modelId,\n this.session.modelRegistry,\n );\n if (restoredModel && this.session.modelRegistry.hasConfiguredAuth(restoredModel)) {\n await this.session.setModel(restoredModel);\n return;\n }\n }\n this.showWarning(fallbackMessage, targetContainer);\n };\n"]}
|
|
1
|
+
{"version":3,"file":"interactive-deferred-startup.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-deferred-startup.ts"],"names":[],"mappings":"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","sourcesContent":["import { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport { modelsAreEqual } from \"@earendil-works/pi-ai/compat\";\nimport {\n type Container,\n findInitialModel,\n formatNoModelsAvailableMessage,\n recordTimeSinceReset,\n resolveModelScopeWithDiagnostics,\n resolveRestoredModelReference,\n setRegisteredThemes,\n} from \"./interactive-mode-deps.ts\";\nimport { releaseStartupChatOutput } from \"./interactive-startup-chat-container.ts\";\n\nexport interface DeferredStartupMode {\n deferredStartupPending: boolean;\n deferredStartupPromise: Promise<void> | undefined;\n completeDeferredStartup(): Promise<void>;\n }\n\nexport async function ensureDeferredStartupComplete(mode: DeferredStartupMode): Promise<void> {\n if (!mode.deferredStartupPending && !mode.deferredStartupPromise) return;\n const startupPromise = mode.deferredStartupPromise ?? Promise.resolve().then(() => mode.completeDeferredStartup());\n mode.deferredStartupPromise = startupPromise;\n try {\n await startupPromise;\n } catch {\n mode.deferredStartupPending = false;\n } finally {\n if (mode.deferredStartupPromise === startupPromise && !mode.deferredStartupPending) {\n mode.deferredStartupPromise = undefined;\n }\n }\n }\n\nInteractiveModeBase.prototype.ensureDeferredStartupComplete = async function(this: InteractiveModeBase): Promise<void> {\n await ensureDeferredStartupComplete(this);\n };\n\n/**\n * Finishes a startup where extension loading was deferred so the TUI could\n * paint immediately. Loads extension code via session.reload(), then applies\n * the same post-load UI wiring as /reload and discloses loaded resources.\n */\nInteractiveModeBase.prototype.completeDeferredStartup = async function(this: InteractiveModeBase): Promise<void> {\n try {\n await this.bindCurrentSessionExtensions();\n await this.session.reload({ reason: \"startup\" });\n\n // A prompt turn keeps its own working loader mounted from submit until\n // `agent_start` or `compaction_start` takes over; tearing it down here\n // would leave the rest of startup and prompt preflight with no indicator.\n if (!this.promptTurnWorkingLoaderActive) {\n this.stopWorkingLoader();\n }\n this.deferredStartupPending = false;\n recordTimeSinceReset(\"deferred-extension-load\");\n\n setRegisteredThemes(this.session.resourceLoader.getThemes().themes);\n await this.themeController.applyFromSettings();\n this.setupAutocompleteProvider();\n this.setupExtensionShortcuts(this.session.extensionRunner);\n await applyDeferredModelScope(this);\n await this.retryDeferredModelRestore(this.startupNoticesContainer);\n this.showLoadedResources({ force: true, showDiagnosticsWhenQuiet: true, targetContainer: this.resourceDisclosureContainer });\n // Keep the subscription warning after the RESOURCES disclosure.\n void this.maybeWarnAboutAnthropicSubscriptionAuth(undefined, this.startupNoticesContainer);\n this.showStartupNoticesIfNeeded(this.startupNoticesContainer);\n const modelsJsonError = this.session.modelRegistry.getError();\n if (modelsJsonError) {\n this.showError(`models.json error: ${modelsJsonError}`);\n }\n void this.updateAvailableProviderCount().catch(() => {});\n this.updateEditorBorderColor();\n this.ui.requestRender();\n } catch (error) {\n // Same ownership rule as the success path: this catch swallows the error,\n // so prompt preflight continues and must keep its indicator.\n if (!this.promptTurnWorkingLoaderActive) {\n this.stopWorkingLoader();\n }\n this.deferredStartupPending = false;\n this.showError(\n `Extension loading failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n // The RESOURCES disclosure will not render; surface the held warning.\n void this.maybeWarnAboutAnthropicSubscriptionAuth(undefined, this.startupNoticesContainer);\n } finally {\n // Extension loading has either produced the disclosure or definitively\n // failed, so startup ordering is resolved before any prompt can run.\n releaseStartupChatOutput(this);\n }\n };\n\nexport async function applyDeferredModelScope(mode: InteractiveModeBase): Promise<void> {\n const patterns = mode.options.deferredModelScopePatterns;\n if (!patterns || patterns.length === 0) {\n return;\n }\n\n const { scopedModels, diagnostics } = await resolveModelScopeWithDiagnostics(patterns, mode.session.modelRegistry);\n for (const diagnostic of diagnostics) {\n mode.showWarning(diagnostic.message);\n }\n mode.session.setScopedModels(scopedModels);\n\n if (mode.sessionManager.buildSessionContext().messages.length > 0 || scopedModels.length === 0) {\n return;\n }\n\n const currentModel = mode.session.model;\n if (currentModel && scopedModels.some((scoped) => modelsAreEqual(scoped.model, currentModel))) {\n return;\n }\n\n const savedProvider = mode.settingsManager.getDefaultProvider();\n const savedModelId = mode.settingsManager.getDefaultModel();\n const savedModel = savedProvider && savedModelId ? mode.session.modelRegistry.find(savedProvider, savedModelId) : undefined;\n const preferred = savedModel ? scopedModels.find((scoped) => modelsAreEqual(scoped.model, savedModel)) : undefined;\n const nextScopedModel = preferred ?? scopedModels[0];\n if (mode.session.modelRegistry.hasConfiguredAuth(nextScopedModel.model)) {\n await mode.session.setModel(nextScopedModel.model);\n if (nextScopedModel.thinkingLevel && !mode.options.deferredModelScopePreserveThinking) {\n mode.session.setThinkingLevel(nextScopedModel.thinkingLevel);\n }\n }\n }\n\n/**\n * Session-restored models and complete settings defaults may depend on an\n * extension provider. Re-evaluate them after deferred registration finishes,\n * then surface only the final warning state.\n */\nInteractiveModeBase.prototype.retryDeferredModelRestore = async function(this: InteractiveModeBase, targetContainer?: Container): Promise<void> {\n const preliminaryFallbackMessage = this.options.modelFallbackMessage;\n if (!preliminaryFallbackMessage) return;\n\n const savedModel = this.sessionManager.buildSessionContext().model;\n if (!savedModel && this.session.model && this.session.modelRegistry.hasConfiguredAuth(this.session.model)) {\n return;\n }\n if (savedModel) {\n const restoredModel = await resolveRestoredModelReference(\n savedModel.provider,\n savedModel.modelId,\n this.session.modelRegistry,\n );\n if (restoredModel && this.session.modelRegistry.hasConfiguredAuth(restoredModel)) {\n await this.session.setModel(restoredModel);\n return;\n }\n this.showWarning(preliminaryFallbackMessage, targetContainer);\n return;\n }\n\n const defaultProvider = this.settingsManager.getDefaultProvider();\n const defaultModelId = this.settingsManager.getDefaultModel();\n if (defaultProvider && defaultModelId) {\n const result = await findInitialModel({\n scopedModels: [],\n isContinuing: false,\n defaultProvider,\n defaultModelId,\n defaultThinkingLevel: this.settingsManager.getDefaultThinkingLevel(),\n modelRegistry: this.session.modelRegistry,\n });\n if (result.model) {\n await this.session.setModel(result.model);\n this.session.setThinkingLevel(result.thinkingLevel);\n return;\n }\n this.showWarning(result.fallbackMessage ?? formatNoModelsAvailableMessage(), targetContainer);\n return;\n }\n\n this.showWarning(preliminaryFallbackMessage, targetContainer);\n };\n"]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { InteractiveModeBase } from "./interactive-mode-base.js";
|
|
2
2
|
import { getCapabilities, hyperlink, Spacer, Text, APP_NAME, CHANGELOG_URL, openExternalEditorForText, DynamicBorder, theme } from "./interactive-mode-deps.js";
|
|
3
3
|
import { ExpandableText, isExpandable } from "./interactive-mode-helpers.js";
|
|
4
|
+
import { StartupIdentityComponent } from "./components/startup-identity.js";
|
|
4
5
|
InteractiveModeBase.prototype.refreshBuiltInHeader = function () {
|
|
5
|
-
if (this.builtInHeader instanceof ExpandableText) {
|
|
6
|
+
if (this.builtInHeader instanceof ExpandableText || this.builtInHeader instanceof StartupIdentityComponent) {
|
|
6
7
|
this.builtInHeader.refresh();
|
|
7
8
|
}
|
|
8
9
|
};
|
|
@@ -80,9 +81,9 @@ InteractiveModeBase.prototype.toggleThinkingBlockVisibility = function () {
|
|
|
80
81
|
}
|
|
81
82
|
this.showStatus(`Thinking blocks: ${this.hideThinkingBlock ? "hidden" : "visible"}`);
|
|
82
83
|
};
|
|
83
|
-
InteractiveModeBase.prototype.openExternalEditor = function () {
|
|
84
|
+
InteractiveModeBase.prototype.openExternalEditor = async function () {
|
|
84
85
|
const currentText = this.editor.getExpandedText?.() ?? this.editor.getText();
|
|
85
|
-
const updated = openExternalEditorForText(currentText, this.ui, {
|
|
86
|
+
const updated = await openExternalEditorForText(currentText, this.ui, {
|
|
86
87
|
editorCommand: this.settingsManager.getExternalEditorCommand(),
|
|
87
88
|
showWarning: (message) => this.showWarning(message),
|
|
88
89
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-editor-actions.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-editor-actions.ts"],"names":[],"mappings":"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","sourcesContent":["import { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport { getCapabilities, hyperlink, Spacer, Text, APP_NAME, CHANGELOG_URL, openExternalEditorForText, DynamicBorder, theme } from \"./interactive-mode-deps.ts\";\nimport { ExpandableText, isExpandable } from \"./interactive-mode-helpers.ts\";\n\nInteractiveModeBase.prototype.refreshBuiltInHeader = function(this: InteractiveModeBase): void {\n if (this.builtInHeader instanceof ExpandableText) {\n this.builtInHeader.refresh();\n }\n };\n\nInteractiveModeBase.prototype.updateEditorBorderColor = function(this: InteractiveModeBase): void {\n if (this.isBashMode) {\n this.editor.borderColor = theme.getBashModeBorderColor();\n } else {\n const level = this.session.thinkingLevel || \"off\";\n this.editor.borderColor = theme.getThinkingBorderColor(level);\n }\n this.ui.requestRender();\n };\n\nInteractiveModeBase.prototype.cycleThinkingLevel = function(this: InteractiveModeBase): void {\n const newLevel = this.session.cycleThinkingLevel();\n if (newLevel === undefined) {\n this.showStatus(\"Current model does not support thinking\");\n } else {\n this.footer.invalidate();\n this.updateEditorBorderColor();\n this.showStatus(`Thinking level: ${newLevel}`);\n }\n };\n\nInteractiveModeBase.prototype.cycleModel = async function(this: InteractiveModeBase, direction: \"forward\" | \"backward\"): Promise<void> {\n try {\n const result = await this.session.cycleModel(direction);\n if (result === undefined) {\n const msg =\n this.session.scopedModels.length > 0\n ? \"Only one model in scope\"\n : \"Only one model available\";\n this.showStatus(msg);\n } else {\n this.footer.invalidate();\n this.updateEditorBorderColor();\n const thinkingStr =\n result.model.reasoning && result.thinkingLevel !== \"off\"\n ? ` (thinking: ${result.thinkingLevel})`\n : \"\";\n this.showStatus(\n `Switched to ${result.model.name || result.model.id}${thinkingStr}`,\n );\n void this.maybeWarnAboutAnthropicSubscriptionAuth(result.model);\n }\n } catch (error) {\n this.showError(error instanceof Error ? error.message : String(error));\n }\n };\n\nInteractiveModeBase.prototype.toggleToolOutputExpansion = function(this: InteractiveModeBase): void {\n this.setToolsExpanded(!this.toolOutputExpanded);\n };\n\nInteractiveModeBase.prototype.setToolsExpanded = function(this: InteractiveModeBase, expanded: boolean): void {\n this.toolOutputExpanded = expanded;\n const activeHeader = this.customHeader ?? this.builtInHeader;\n if (isExpandable(activeHeader)) {\n activeHeader.setExpanded(expanded);\n }\n for (const child of this.chatContainer.children) {\n if (isExpandable(child)) {\n child.setExpanded(expanded);\n }\n }\n this.ui.requestRender();\n };\n\nInteractiveModeBase.prototype.toggleThinkingBlockVisibility = function(this: InteractiveModeBase): void {\n this.hideThinkingBlock = !this.hideThinkingBlock;\n this.settingsManager.setHideThinkingBlock(this.hideThinkingBlock);\n\n // Rebuild chat from session messages\n this.chatContainer.clear();\n this.rebuildChatFromMessages();\n\n // If streaming, re-add the streaming component with updated visibility and re-render\n if (this.streamingComponent && this.streamingMessage) {\n this.streamingComponent.setHideThinkingBlock(this.hideThinkingBlock);\n this.streamingComponent.updateContent(this.streamingMessage);\n this.chatContainer.addChild(this.streamingComponent);\n }\n\n this.showStatus(\n `Thinking blocks: ${this.hideThinkingBlock ? \"hidden\" : \"visible\"}`,\n );\n };\n\nInteractiveModeBase.prototype.openExternalEditor = function(this: InteractiveModeBase): void {\n const currentText = this.editor.getExpandedText?.() ?? this.editor.getText();\n const updated = openExternalEditorForText(currentText, this.ui, {\n editorCommand: this.settingsManager.getExternalEditorCommand(),\n showWarning: (message) => this.showWarning(message),\n });\n if (updated !== undefined) this.editor.setText(updated);\n };\n\nInteractiveModeBase.prototype.clearEditor = function(this: InteractiveModeBase): void {\n this.editor.setText(\"\");\n this.ui.requestRender();\n };\n\nInteractiveModeBase.prototype.showError = function(this: InteractiveModeBase, errorMessage: string): void {\n this.chatContainer.addChild(new Spacer(1));\n this.chatContainer.addChild(\n new Text(theme.fg(\"error\", `Error: ${errorMessage}`), 1, 0),\n );\n this.chatContainer.addChild(new Spacer(1));\n this.ui.requestRender();\n };\n\nInteractiveModeBase.prototype.showWarning = function(this: InteractiveModeBase, warningMessage: string, targetContainer = this.chatContainer): void {\n targetContainer.addChild(new Spacer(1));\n targetContainer.addChild(\n new Text(theme.fg(\"warning\", `Warning: ${warningMessage}`), 1, 0),\n );\n this.ui.requestRender();\n };\n\nInteractiveModeBase.prototype.showNewVersionNotification = function(this: InteractiveModeBase, newVersion: string, targetContainer = this.chatContainer): void {\n const action = theme.fg(\"accent\", `${APP_NAME} update`);\n const updateInstruction =\n theme.fg(\"muted\", `New version ${newVersion} is available. Run `) +\n action;\n const changelogLine = CHANGELOG_URL\n ? `\\n${theme.fg(\"muted\", \"Changelog: \")}${\n getCapabilities().hyperlinks\n ? hyperlink(theme.fg(\"accent\", \"open changelog\"), CHANGELOG_URL)\n : theme.fg(\"accent\", CHANGELOG_URL)\n }`\n : \"\";\n\n targetContainer.addChild(new Spacer(1));\n targetContainer.addChild(\n new DynamicBorder((text) => theme.fg(\"warning\", text)),\n );\n targetContainer.addChild(\n new Text(\n `${theme.bold(theme.fg(\"warning\", \"Update Available\"))}\\n${updateInstruction}${changelogLine}`,\n 1,\n 0,\n ),\n );\n targetContainer.addChild(\n new DynamicBorder((text) => theme.fg(\"warning\", text)),\n );\n this.ui.requestRender();\n };\n\nInteractiveModeBase.prototype.showPackageUpdateNotification = function(this: InteractiveModeBase, packages: string[], targetContainer = this.chatContainer): void {\n const action = theme.fg(\"accent\", `${APP_NAME} update --extensions`);\n const updateInstruction =\n theme.fg(\"muted\", \"Package updates are available. Run \") + action;\n const packageLines = packages.map((pkg) => `- ${pkg}`).join(\"\\n\");\n\n targetContainer.addChild(new Spacer(1));\n targetContainer.addChild(\n new DynamicBorder((text) => theme.fg(\"warning\", text)),\n );\n targetContainer.addChild(\n new Text(\n `${theme.bold(theme.fg(\"warning\", \"Package Updates Available\"))}\\n${updateInstruction}\\n${theme.fg(\"muted\", \"Packages:\")}\\n${packageLines}`,\n 1,\n 0,\n ),\n );\n targetContainer.addChild(\n new DynamicBorder((text) => theme.fg(\"warning\", text)),\n );\n this.ui.requestRender();\n };\n"]}
|
|
1
|
+
{"version":3,"file":"interactive-editor-actions.js","sourceRoot":"","sources":["../../../src/modes/interactive/interactive-editor-actions.ts"],"names":[],"mappings":"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","sourcesContent":["import { InteractiveModeBase } from \"./interactive-mode-base.ts\";\nimport { getCapabilities, hyperlink, Spacer, Text, APP_NAME, CHANGELOG_URL, openExternalEditorForText, DynamicBorder, theme } from \"./interactive-mode-deps.ts\";\nimport { ExpandableText, isExpandable } from \"./interactive-mode-helpers.ts\";\nimport { StartupIdentityComponent } from \"./components/startup-identity.ts\";\n\nInteractiveModeBase.prototype.refreshBuiltInHeader = function(this: InteractiveModeBase): void {\n if (this.builtInHeader instanceof ExpandableText || this.builtInHeader instanceof StartupIdentityComponent) {\n this.builtInHeader.refresh();\n }\n };\n\nInteractiveModeBase.prototype.updateEditorBorderColor = function(this: InteractiveModeBase): void {\n if (this.isBashMode) {\n this.editor.borderColor = theme.getBashModeBorderColor();\n } else {\n const level = this.session.thinkingLevel || \"off\";\n this.editor.borderColor = theme.getThinkingBorderColor(level);\n }\n this.ui.requestRender();\n };\n\nInteractiveModeBase.prototype.cycleThinkingLevel = function(this: InteractiveModeBase): void {\n const newLevel = this.session.cycleThinkingLevel();\n if (newLevel === undefined) {\n this.showStatus(\"Current model does not support thinking\");\n } else {\n this.footer.invalidate();\n this.updateEditorBorderColor();\n this.showStatus(`Thinking level: ${newLevel}`);\n }\n };\n\nInteractiveModeBase.prototype.cycleModel = async function(this: InteractiveModeBase, direction: \"forward\" | \"backward\"): Promise<void> {\n try {\n const result = await this.session.cycleModel(direction);\n if (result === undefined) {\n const msg =\n this.session.scopedModels.length > 0\n ? \"Only one model in scope\"\n : \"Only one model available\";\n this.showStatus(msg);\n } else {\n this.footer.invalidate();\n this.updateEditorBorderColor();\n const thinkingStr =\n result.model.reasoning && result.thinkingLevel !== \"off\"\n ? ` (thinking: ${result.thinkingLevel})`\n : \"\";\n this.showStatus(\n `Switched to ${result.model.name || result.model.id}${thinkingStr}`,\n );\n void this.maybeWarnAboutAnthropicSubscriptionAuth(result.model);\n }\n } catch (error) {\n this.showError(error instanceof Error ? error.message : String(error));\n }\n };\n\nInteractiveModeBase.prototype.toggleToolOutputExpansion = function(this: InteractiveModeBase): void {\n this.setToolsExpanded(!this.toolOutputExpanded);\n };\n\nInteractiveModeBase.prototype.setToolsExpanded = function(this: InteractiveModeBase, expanded: boolean): void {\n this.toolOutputExpanded = expanded;\n const activeHeader = this.customHeader ?? this.builtInHeader;\n if (isExpandable(activeHeader)) {\n activeHeader.setExpanded(expanded);\n }\n for (const child of this.chatContainer.children) {\n if (isExpandable(child)) {\n child.setExpanded(expanded);\n }\n }\n this.ui.requestRender();\n };\n\nInteractiveModeBase.prototype.toggleThinkingBlockVisibility = function(this: InteractiveModeBase): void {\n this.hideThinkingBlock = !this.hideThinkingBlock;\n this.settingsManager.setHideThinkingBlock(this.hideThinkingBlock);\n\n // Rebuild chat from session messages\n this.chatContainer.clear();\n this.rebuildChatFromMessages();\n\n // If streaming, re-add the streaming component with updated visibility and re-render\n if (this.streamingComponent && this.streamingMessage) {\n this.streamingComponent.setHideThinkingBlock(this.hideThinkingBlock);\n this.streamingComponent.updateContent(this.streamingMessage);\n this.chatContainer.addChild(this.streamingComponent);\n }\n\n this.showStatus(\n `Thinking blocks: ${this.hideThinkingBlock ? \"hidden\" : \"visible\"}`,\n );\n };\n\nInteractiveModeBase.prototype.openExternalEditor = async function(this: InteractiveModeBase): Promise<void> {\n const currentText = this.editor.getExpandedText?.() ?? this.editor.getText();\n const updated = await openExternalEditorForText(currentText, this.ui, {\n editorCommand: this.settingsManager.getExternalEditorCommand(),\n showWarning: (message) => this.showWarning(message),\n });\n if (updated !== undefined) this.editor.setText(updated);\n };\n\nInteractiveModeBase.prototype.clearEditor = function(this: InteractiveModeBase): void {\n this.editor.setText(\"\");\n this.ui.requestRender();\n };\n\nInteractiveModeBase.prototype.showError = function(this: InteractiveModeBase, errorMessage: string): void {\n this.chatContainer.addChild(new Spacer(1));\n this.chatContainer.addChild(\n new Text(theme.fg(\"error\", `Error: ${errorMessage}`), 1, 0),\n );\n this.chatContainer.addChild(new Spacer(1));\n this.ui.requestRender();\n };\n\nInteractiveModeBase.prototype.showWarning = function(this: InteractiveModeBase, warningMessage: string, targetContainer = this.chatContainer): void {\n targetContainer.addChild(new Spacer(1));\n targetContainer.addChild(\n new Text(theme.fg(\"warning\", `Warning: ${warningMessage}`), 1, 0),\n );\n this.ui.requestRender();\n };\n\nInteractiveModeBase.prototype.showNewVersionNotification = function(this: InteractiveModeBase, newVersion: string, targetContainer = this.chatContainer): void {\n const action = theme.fg(\"accent\", `${APP_NAME} update`);\n const updateInstruction =\n theme.fg(\"muted\", `New version ${newVersion} is available. Run `) +\n action;\n const changelogLine = CHANGELOG_URL\n ? `\\n${theme.fg(\"muted\", \"Changelog: \")}${\n getCapabilities().hyperlinks\n ? hyperlink(theme.fg(\"accent\", \"open changelog\"), CHANGELOG_URL)\n : theme.fg(\"accent\", CHANGELOG_URL)\n }`\n : \"\";\n\n targetContainer.addChild(new Spacer(1));\n targetContainer.addChild(\n new DynamicBorder((text) => theme.fg(\"warning\", text)),\n );\n targetContainer.addChild(\n new Text(\n `${theme.bold(theme.fg(\"warning\", \"Update Available\"))}\\n${updateInstruction}${changelogLine}`,\n 1,\n 0,\n ),\n );\n targetContainer.addChild(\n new DynamicBorder((text) => theme.fg(\"warning\", text)),\n );\n this.ui.requestRender();\n };\n\nInteractiveModeBase.prototype.showPackageUpdateNotification = function(this: InteractiveModeBase, packages: string[], targetContainer = this.chatContainer): void {\n const action = theme.fg(\"accent\", `${APP_NAME} update --extensions`);\n const updateInstruction =\n theme.fg(\"muted\", \"Package updates are available. Run \") + action;\n const packageLines = packages.map((pkg) => `- ${pkg}`).join(\"\\n\");\n\n targetContainer.addChild(new Spacer(1));\n targetContainer.addChild(\n new DynamicBorder((text) => theme.fg(\"warning\", text)),\n );\n targetContainer.addChild(\n new Text(\n `${theme.bold(theme.fg(\"warning\", \"Package Updates Available\"))}\\n${updateInstruction}\\n${theme.fg(\"muted\", \"Packages:\")}\\n${packageLines}`,\n 1,\n 0,\n ),\n );\n targetContainer.addChild(\n new DynamicBorder((text) => theme.fg(\"warning\", text)),\n );\n this.ui.requestRender();\n };\n"]}
|
|
@@ -88,7 +88,7 @@ InteractiveModeBase.prototype.showExtensionEditor = function (title, prefill) {
|
|
|
88
88
|
}, () => {
|
|
89
89
|
this.hideExtensionEditor();
|
|
90
90
|
resolve(undefined);
|
|
91
|
-
});
|
|
91
|
+
}, undefined, this.settingsManager.getExternalEditorCommand());
|
|
92
92
|
this.editorContainer.clear();
|
|
93
93
|
this.editorContainer.addChild(this.extensionEditor);
|
|
94
94
|
this.ui.setFocus(this.extensionEditor);
|