@bastani/atomic 0.9.11-alpha.9 → 0.9.12-alpha.1
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 +147 -0
- package/README.md +1 -1
- package/dist/builtin/intercom/CHANGELOG.md +12 -0
- package/dist/builtin/intercom/closed-workflow-stage-message.ts +1 -1
- package/dist/builtin/intercom/contact-supervisor-tool.ts +1 -1
- package/dist/builtin/intercom/index-heavy.ts +2 -2
- package/dist/builtin/intercom/intercom-tool.ts +2 -2
- package/dist/builtin/intercom/intercom-utils.ts +1 -1
- package/dist/builtin/intercom/lifecycle.ts +2 -2
- package/dist/builtin/intercom/overlay.ts +2 -2
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/intercom/reply-tracker.ts +1 -1
- package/dist/builtin/intercom/subagent-relay.ts +10 -7
- package/dist/builtin/mcp/CHANGELOG.md +16 -0
- package/dist/builtin/mcp/apps-cancellation.ts +1 -1
- package/dist/builtin/mcp/commands.ts +7 -7
- package/dist/builtin/mcp/direct-tool-executor.ts +1 -1
- package/dist/builtin/mcp/direct-tools.ts +3 -3
- package/dist/builtin/mcp/host-html-template.ts +1 -1
- package/dist/builtin/mcp/index.ts +3 -3
- package/dist/builtin/mcp/init.ts +6 -6
- package/dist/builtin/mcp/mcp-auth-flow.ts +1 -1
- package/dist/builtin/mcp/mcp-callback-server.ts +1 -1
- package/dist/builtin/mcp/mcp-panel-state.ts +1 -1
- package/dist/builtin/mcp/mcp-panel.ts +1 -1
- package/dist/builtin/mcp/metadata-cache.ts +1 -1
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/mcp/proxy-call.ts +2 -2
- package/dist/builtin/mcp/proxy-info-modes.ts +2 -2
- package/dist/builtin/mcp/sampling-handler.ts +1 -1
- package/dist/builtin/mcp/server-manager.ts +3 -3
- package/dist/builtin/mcp/startup-warmup.ts +5 -5
- package/dist/builtin/mcp/state.ts +1 -1
- package/dist/builtin/mcp/tool-call-timeout.ts +1 -1
- package/dist/builtin/mcp/tool-metadata.ts +2 -2
- package/dist/builtin/mcp/types.ts +1 -1
- package/dist/builtin/mcp/ui-server.ts +4 -4
- package/dist/builtin/mcp/ui-session.ts +3 -3
- package/dist/builtin/subagents/CHANGELOG.md +26 -0
- package/dist/builtin/subagents/agents/code-simplifier.md +2 -2
- package/dist/builtin/subagents/agents/codebase-analyzer.md +2 -2
- package/dist/builtin/subagents/agents/codebase-locator.md +2 -2
- package/dist/builtin/subagents/agents/codebase-online-researcher.md +2 -2
- package/dist/builtin/subagents/agents/codebase-pattern-finder.md +2 -2
- package/dist/builtin/subagents/agents/codebase-research-analyzer.md +2 -2
- package/dist/builtin/subagents/agents/codebase-research-locator.md +2 -2
- package/dist/builtin/subagents/agents/worker.md +2 -2
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/subagents/src/extension/notification-content.ts +14 -9
- package/dist/builtin/subagents/src/runs/background/notify.ts +20 -4
- package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +5 -5
- package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +1 -1
- package/dist/builtin/subagents/src/runs/background/result-status.ts +2 -2
- package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +2 -2
- package/dist/builtin/subagents/src/runs/background/result-watcher.ts +1 -1
- package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +1 -1
- package/dist/builtin/subagents/src/shared/artifacts.ts +1 -1
- package/dist/builtin/web-access/CHANGELOG.md +26 -0
- package/dist/builtin/web-access/content-tools.ts +1 -0
- package/dist/builtin/web-access/flat-string.ts +37 -0
- package/dist/builtin/web-access/github-api.ts +2 -1
- package/dist/builtin/web-access/github-extract.ts +3 -2
- package/dist/builtin/web-access/index-heavy.ts +1 -1
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/workflows/CHANGELOG.md +68 -0
- package/dist/builtin/workflows/README.md +1 -1
- package/dist/builtin/workflows/builtin/goal-ledger.ts +6 -4
- package/dist/builtin/workflows/builtin/goal-prompts.ts +4 -1
- package/dist/builtin/workflows/builtin/goal-runner.ts +2 -1
- package/dist/builtin/workflows/builtin/goal.ts +1 -1
- package/dist/builtin/workflows/builtin/ralph-core.ts +15 -13
- package/dist/builtin/workflows/builtin/ralph-forked-prompts.ts +7 -6
- package/dist/builtin/workflows/builtin/ralph-models.ts +4 -4
- package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +2 -1
- package/dist/builtin/workflows/builtin/ralph-runner.ts +7 -9
- package/dist/builtin/workflows/builtin/ralph.ts +2 -1
- package/dist/builtin/workflows/builtin/shared-prompts.ts +34 -7
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/src/authoring/keep-context.ts +46 -0
- package/dist/builtin/workflows/src/authoring.d.ts +11 -0
- package/dist/builtin/workflows/src/durable/completed-catalog.ts +14 -8
- package/dist/builtin/workflows/src/durable/completed-inspection.ts +10 -11
- package/dist/builtin/workflows/src/durable/resume-catalog.ts +1 -1
- package/dist/builtin/workflows/src/durable/resume-eligibility.ts +42 -0
- package/dist/builtin/workflows/src/durable/resume-runtime.ts +36 -37
- package/dist/builtin/workflows/src/durable/tool-primitive.ts +10 -2
- package/dist/builtin/workflows/src/engine/run.ts +1 -0
- package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +12 -8
- package/dist/builtin/workflows/src/extension/hil-answer-notifications.ts +5 -2
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +2001 -897
- package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +6 -3
- package/dist/builtin/workflows/src/extension/postmortem-deps.ts +3 -2
- package/dist/builtin/workflows/src/extension/render-result.ts +4 -11
- package/dist/builtin/workflows/src/extension/runtime-durable-resume.ts +17 -20
- package/dist/builtin/workflows/src/extension/runtime.ts +3 -3
- package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +1 -1
- package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +3 -7
- package/dist/builtin/workflows/src/extension/workflow-durable-resume-command.ts +21 -24
- package/dist/builtin/workflows/src/extension/workflow-prompts.ts +4 -0
- package/dist/builtin/workflows/src/extension/workflow-resume-picker-rows.ts +38 -26
- package/dist/builtin/workflows/src/extension/workflow-resume-shadow.ts +2 -1
- package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +56 -64
- package/dist/builtin/workflows/src/extension/workflow-schema.ts +2 -2
- package/dist/builtin/workflows/src/extension/workflow-status-summary.ts +0 -5
- package/dist/builtin/workflows/src/extension/workflow-targets.ts +17 -20
- package/dist/builtin/workflows/src/extension/workflow-tool-content.ts +1 -1
- package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +24 -51
- package/dist/builtin/workflows/src/extension/workflow-tool-inspection.ts +7 -29
- package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +5 -13
- package/dist/builtin/workflows/src/extension/workflow-tool.ts +4 -13
- package/dist/builtin/workflows/src/runs/background/quit.ts +4 -3
- package/dist/builtin/workflows/src/runs/background/run-inspect.ts +8 -8
- package/dist/builtin/workflows/src/runs/background/status.ts +2 -1
- package/dist/builtin/workflows/src/runs/background/workflow-lifecycle-aggregate.ts +2 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +5 -5
- package/dist/builtin/workflows/src/runs/foreground/executor-lifecycle.ts +4 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-scheduler.ts +2 -0
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +23 -8
- package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +6 -2
- package/dist/builtin/workflows/src/runs/foreground/executor-task-prompts.ts +5 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +56 -10
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +6 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +137 -6
- package/dist/builtin/workflows/src/sdk-surface.ts +1 -0
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +2 -0
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +2 -0
- package/dist/builtin/workflows/src/shared/expanded-workflow-graph.ts +159 -10
- package/dist/builtin/workflows/src/shared/flat-string.ts +33 -0
- package/dist/builtin/workflows/src/shared/graph-store-snapshot.ts +144 -0
- package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +2 -3
- package/dist/builtin/workflows/src/shared/run-id.ts +36 -0
- package/dist/builtin/workflows/src/shared/store-internal.ts +32 -3
- package/dist/builtin/workflows/src/shared/store-observation.ts +10 -0
- package/dist/builtin/workflows/src/shared/store-public-types.ts +8 -0
- package/dist/builtin/workflows/src/shared/store-run-methods.ts +14 -0
- package/dist/builtin/workflows/src/shared/store-types.ts +4 -0
- package/dist/builtin/workflows/src/shared/types.ts +2 -0
- package/dist/builtin/workflows/src/shared/workflow-artifacts.ts +261 -0
- package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +39 -23
- package/dist/builtin/workflows/src/tui/graph-canvas.ts +26 -9
- package/dist/builtin/workflows/src/tui/graph-view-constants.ts +3 -0
- package/dist/builtin/workflows/src/tui/graph-view-graph-render.ts +95 -98
- package/dist/builtin/workflows/src/tui/graph-view-render.ts +7 -20
- package/dist/builtin/workflows/src/tui/graph-view-state.ts +160 -13
- package/dist/builtin/workflows/src/tui/layout.ts +8 -2
- package/dist/builtin/workflows/src/tui/node-card.ts +57 -45
- package/dist/builtin/workflows/src/tui/overlay-adapter.ts +4 -2
- package/dist/builtin/workflows/src/tui/prompt-card-render.ts +291 -21
- package/dist/builtin/workflows/src/tui/prompt-card.ts +1 -1
- package/dist/builtin/workflows/src/tui/renderers.ts +0 -1
- package/dist/builtin/workflows/src/tui/run-detail.ts +52 -35
- package/dist/builtin/workflows/src/tui/run-identity-rows.ts +97 -0
- package/dist/builtin/workflows/src/tui/session-overlays.ts +24 -3
- package/dist/builtin/workflows/src/tui/session-picker.ts +94 -41
- package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +190 -26
- package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +52 -18
- package/dist/builtin/workflows/src/tui/stage-chat-view-input.ts +9 -5
- package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +44 -4
- package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +3 -1
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +3 -2
- package/dist/builtin/workflows/src/tui/status-list.ts +67 -45
- package/dist/builtin/workflows/src/tui/store-widget-installer.ts +7 -6
- package/dist/builtin/workflows/src/tui/widget.ts +49 -40
- package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +15 -10
- package/dist/builtin/workflows/src/tui/workflow-resume-selector.ts +21 -8
- package/dist/core/agent-session-accessors.d.ts.map +1 -1
- package/dist/core/agent-session-accessors.js +5 -0
- package/dist/core/agent-session-accessors.js.map +1 -1
- package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-auto-compaction.js +5 -0
- package/dist/core/agent-session-auto-compaction.js.map +1 -1
- package/dist/core/agent-session-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-compaction.js +3 -0
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-events.js +2 -1
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-message-queue.d.ts +3 -7
- package/dist/core/agent-session-message-queue.d.ts.map +1 -1
- package/dist/core/agent-session-message-queue.js +27 -13
- package/dist/core/agent-session-message-queue.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +6 -4
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.js +6 -3
- package/dist/core/agent-session-persistent-custom-messages.js.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.js +11 -2
- package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +5 -3
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-tree.d.ts.map +1 -1
- package/dist/core/agent-session-tree.js +4 -0
- package/dist/core/agent-session-tree.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +4 -0
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +3 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +1 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/async/session-manager.d.ts +1 -1
- package/dist/core/async/session-manager.js.map +1 -1
- package/dist/core/auth-storage-backends.d.ts.map +1 -1
- package/dist/core/auth-storage-backends.js +12 -1
- package/dist/core/auth-storage-backends.js.map +1 -1
- package/dist/core/bounded-model-refresh.d.ts +14 -0
- package/dist/core/bounded-model-refresh.d.ts.map +1 -0
- package/dist/core/bounded-model-refresh.js +38 -0
- package/dist/core/bounded-model-refresh.js.map +1 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction-boundary.d.ts +2 -2
- package/dist/core/compaction/compaction-boundary.js.map +1 -1
- package/dist/core/compaction/compaction-parameters.d.ts +5 -0
- package/dist/core/compaction/compaction-parameters.d.ts.map +1 -1
- package/dist/core/compaction/compaction-parameters.js +6 -5
- package/dist/core/compaction/compaction-parameters.js.map +1 -1
- package/dist/core/compaction/compaction-runner.d.ts +4 -0
- package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
- package/dist/core/compaction/compaction-runner.js +5 -1
- package/dist/core/compaction/compaction-runner.js.map +1 -1
- package/dist/core/compaction/compaction-types.d.ts +7 -1
- 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/deleted-ranges.d.ts.map +1 -1
- package/dist/core/compaction/deleted-ranges.js +2 -0
- package/dist/core/compaction/deleted-ranges.js.map +1 -1
- package/dist/core/compaction/fallback-planner.d.ts +1 -1
- package/dist/core/compaction/fallback-planner.js.map +1 -1
- package/dist/core/compaction/range-planner.d.ts +3 -3
- package/dist/core/compaction/range-planner.d.ts.map +1 -1
- package/dist/core/compaction/range-planner.js +12 -14
- package/dist/core/compaction/range-planner.js.map +1 -1
- package/dist/core/compaction/transcript-serialization.d.ts +12 -0
- package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
- package/dist/core/compaction/transcript-serialization.js +99 -1
- package/dist/core/compaction/transcript-serialization.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +3 -0
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js +16 -0
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/context-tool-pairing.d.ts +4 -4
- package/dist/core/context-tool-pairing.js +4 -4
- package/dist/core/context-tool-pairing.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js +26 -1
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/messages.d.ts +18 -6
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js +46 -18
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-refresh-timeout.d.ts +9 -0
- package/dist/core/model-refresh-timeout.d.ts.map +1 -0
- package/dist/core/model-refresh-timeout.js +9 -0
- package/dist/core/model-refresh-timeout.js.map +1 -0
- package/dist/core/model-runtime-snapshot.d.ts +3 -0
- package/dist/core/model-runtime-snapshot.d.ts.map +1 -1
- package/dist/core/model-runtime-snapshot.js +59 -0
- package/dist/core/model-runtime-snapshot.js.map +1 -1
- package/dist/core/model-runtime.d.ts +7 -1
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +72 -17
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +4 -3
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager-core.d.ts +1 -1
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-core.js +2 -2
- package/dist/core/session-manager-core.js.map +1 -1
- package/dist/core/session-manager-entries.d.ts +1 -1
- package/dist/core/session-manager-entries.d.ts.map +1 -1
- package/dist/core/session-manager-entries.js +2 -1
- package/dist/core/session-manager-entries.js.map +1 -1
- package/dist/core/session-manager-history.d.ts.map +1 -1
- package/dist/core/session-manager-history.js +2 -2
- package/dist/core/session-manager-history.js.map +1 -1
- package/dist/core/session-manager-types.d.ts +3 -0
- package/dist/core/session-manager-types.d.ts.map +1 -1
- package/dist/core/session-manager-types.js.map +1 -1
- package/dist/core/tools/bash-async-execution.d.ts +1 -1
- package/dist/core/tools/bash-async-execution.js.map +1 -1
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/oversized-tool-result.js.map +1 -1
- package/dist/extensions/index.d.ts +1 -1
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/llama/huggingface-ui.d.ts +2 -2
- package/dist/extensions/llama/huggingface-ui.js.map +1 -1
- package/dist/extensions/llama/index.d.ts +1 -1
- package/dist/extensions/llama/index.js.map +1 -1
- package/dist/extensions/llama/ui.d.ts +1 -1
- package/dist/extensions/llama/ui.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main-app-mode.d.ts +1 -0
- package/dist/main-app-mode.d.ts.map +1 -1
- package/dist/main-app-mode.js +3 -0
- package/dist/main-app-mode.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +8 -3
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.d.ts +7 -2
- package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.js +13 -4
- package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-editor.d.ts +3 -1
- package/dist/modes/interactive/components/chat-session-host-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-editor.js +2 -2
- package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-events.d.ts +3 -0
- package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-events.js +5 -4
- package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.d.ts +16 -2
- package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.js +35 -5
- package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +1 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +0 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +25 -35
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-editor-actions.js +2 -1
- package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
- package/dist/modes/interactive/interactive-input-handling.js +1 -1
- package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +4 -1
- 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-model-routing.js +4 -1
- package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-pause.d.ts +3 -1
- package/dist/modes/interactive/interactive-pause.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-pause.js +5 -1
- package/dist/modes/interactive/interactive-pause.js.map +1 -1
- package/dist/modes/interactive/interactive-queueing.js +3 -3
- package/dist/modes/interactive/interactive-queueing.js.map +1 -1
- package/dist/modes/interactive-engine/engine-health.d.ts +6 -0
- package/dist/modes/interactive-engine/engine-health.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-health.js +15 -1
- package/dist/modes/interactive-engine/engine-health.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-auth.js +1 -1
- package/dist/modes/interactive-engine/isolated-auth.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.d.ts +1 -0
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +7 -1
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.js +5 -1
- package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
- package/dist/modes/interactive-engine/remote-queue-pause.d.ts +1 -1
- package/dist/modes/interactive-engine/remote-queue-pause.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +23 -7
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-input-scheduler.js +1 -1
- package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +2 -1
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/docs/compaction.md +24 -0
- package/docs/custom-provider.md +3 -3
- package/docs/extensions.md +3 -1
- package/docs/index.md +10 -0
- package/docs/keybindings.md +1 -1
- package/docs/models.md +2 -0
- package/docs/providers.md +7 -3
- package/docs/quickstart.md +7 -1
- package/docs/session-format.md +2 -0
- package/docs/termux.md +3 -1
- package/docs/usage.md +3 -2
- package/docs/workflows.md +138 -46
- package/npm-shrinkwrap.json +69 -37
- package/package.json +4 -4
- package/dist/builtin/workflows/src/tui/toast.ts +0 -107
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"isolated-runtime.js","sourceRoot":"","sources":["../../../src/modes/interactive-engine/isolated-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Api, Model } from \"@earendil-works/pi-ai/compat\";\nimport type { AgentSession, AgentSessionEvent } from \"../../core/agent-session.ts\";\nimport { AgentSessionRuntime, type CreateAgentSessionRuntimeFactory } from \"../../core/agent-session-runtime.ts\";\nimport type { PromptOptions } from \"../../core/agent-session-types.ts\";\nimport type { ResourceOverlap } from \"../../core/diagnostics.ts\";\nimport { SessionManager } from \"../../core/session-manager.ts\";\nimport type { RpcClient } from \"../rpc/rpc-client.ts\";\nimport type {\n\tRpcAutocompleteItem,\n\tRpcEvent,\n\tRpcExtensionUIRequest,\n\tRpcExtensionUIResponse,\n\tRpcModelCatalog,\n\tRpcSlashCommand,\n} from \"../rpc/rpc-types.ts\";\nimport type { ActivityWatchdogDiagnostic } from \"./activity-watchdog.ts\";\nimport type { InteractiveEngineGenerationEndedListener } from \"./engine-generation.ts\";\nimport { type EngineDiagnosticListener, EngineHealthController } from \"./engine-health.ts\";\nimport { type AtomicOAuthLoginCallbacks, loginIsolatedOAuthProvider } from \"./isolated-auth.ts\";\nimport type { EngineKeybindingState, InteractiveEngineCommand, InteractiveEngineMessage } from \"./protocol.ts\";\nimport { RemoteCommandCatalog, type RemoteCommandsListener } from \"./remote-command-catalog.ts\";\nimport { RemoteModelCatalog } from \"./remote-model-catalog.ts\";\nimport { RemoteQueuePause } from \"./remote-queue-pause.js\";\nexport class IsolatedInteractiveRuntime extends AgentSessionRuntime {\n\tprivate readonly client: RpcClient;\n\tprivate readonly patchedSessions = new WeakSet<AgentSession>();\n\tprivate streaming = false;\n\tprivate compacting = false;\n\tprivate readonly activeBashRequestIds = new Map<string | symbol, string>();\n\tprivate steeringMessages: string[] = [];\n\tprivate followUpMessages: string[] = [];\n\tprivate engineCallbackActive = false;\n\tprivate readonly queuePause: RemoteQueuePause;\n\tprivate autoCompactionEnabled = true;\n\tprivate autoRetryEnabled = true;\n\tprivate remoteSessionName: string | undefined;\n\tprivate remoteSessionFile: string | undefined;\n\tprivate readonly health: EngineHealthController;\n\tprivate readonly remoteCommands: RemoteCommandCatalog;\n\tprivate readonly remoteModelCatalog: RemoteModelCatalog;\n\tprivate resourceOverlaps: ResourceOverlap[] = [];\n\n\tconstructor(localRuntime: AgentSessionRuntime, createRuntime: CreateAgentSessionRuntimeFactory, client: RpcClient) {\n\t\tsuper(\n\t\t\tlocalRuntime.session,\n\t\t\tlocalRuntime.services,\n\t\t\tcreateRuntime,\n\t\t\t[...localRuntime.diagnostics],\n\t\t\tlocalRuntime.modelFallbackMessage,\n\t\t\tlocalRuntime.modelFallbackReason,\n\t\t);\n\t\tthis.client = client;\n\t\tthis.remoteCommands = new RemoteCommandCatalog(client);\n\t\tthis.remoteModelCatalog = new RemoteModelCatalog(client);\n\t\tthis.queuePause = new RemoteQueuePause(client);\n\t\tthis.health = new EngineHealthController({\n\t\t\tstop: () => this.client.stop(),\n\t\t\trestart: async () => {\n\t\t\t\tawait this.client.restart(this.remoteSessionFile);\n\t\t\t\tawait this.initializeFromEngine();\n\t\t\t},\n\t\t\tclearActivity: () => {\n\t\t\t\tthis.streaming = false;\n\t\t\t\tthis.compacting = false;\n\t\t\t\tthis.engineCallbackActive = false;\n\t\t\t\tthis.health.markCooperativeAbortSettled();\n\t\t\t},\n\t\t});\n\t\tthis.client.onEvent((event) => this.observeEvent(event));\n\t\tthis.client.onGenerationEnded((event) => this.health.handleGenerationEnded(event));\n\t}\n\n\toverride get session(): AgentSession {\n\t\tconst session = super.session;\n\t\tthis.patchSession(session);\n\t\treturn session;\n\t}\n\tasync initializeFromEngine(): Promise<void> {\n\t\tconst state = await this.client.getState();\n\t\tconst catalog = await this.client.requestInternal<RpcModelCatalog>({ type: \"get_available_models\" });\n\t\tif (state.sessionFile && super.session.sessionManager.getSessionFile() !== state.sessionFile) {\n\t\t\tawait super.switchSession(state.sessionFile);\n\t\t}\n\t\tconst session = super.session;\n\t\tthis.remoteModelCatalog.apply(catalog);\n\t\tthis.remoteModelCatalog.patch(session);\n\t\t(session.agent.state as { model?: Model<Api> }).model = state.model;\n\t\tsession.agent.state.thinkingLevel = state.thinkingLevel;\n\t\tsession.agent.steeringMode = state.steeringMode;\n\t\tsession.agent.followUpMode = state.followUpMode;\n\t\tthis.autoCompactionEnabled = state.autoCompactionEnabled;\n\t\tthis.resourceOverlaps = state.resourceOverlaps ?? [];\n\t\tthis.remoteSessionName = state.sessionName;\n\t\tthis.remoteSessionFile = state.sessionFile;\n\t\tthis.streaming = state.isStreaming;\n\t\tthis.compacting = state.isCompacting;\n\t\tthis.queuePause.synchronize(state.queuedMessagesPaused === true);\n\t\tthis.replaceModelFallback(state.modelFallbackMessage, state.modelFallbackReason);\n\t\tthis.refreshSessionView();\n\t\tthis.engineCallbackActive = false;\n\t\tthis.health.clearUnresponsive();\n\t\tthis.health.markCooperativeAbortSettled();\n\t\t// Non-blocking refresh so isolated autocomplete lists engine-only extension\n\t\t// commands after bind/restart/reload/new/resume/fork. See RemoteCommandCatalog.\n\t\tthis.remoteCommands.refresh();\n\t}\n\n\toverride async loginOAuthProvider(provider: string, callbacks: AtomicOAuthLoginCallbacks) {\n\t\treturn loginIsolatedOAuthProvider(super.session, this.client, this.remoteModelCatalog, provider, callbacks);\n\t}\n\n\toverride async logoutProvider(provider: string) {\n\t\tconst result = await this.client.logoutProvider(provider);\n\t\tthis.remoteModelCatalog.applyModels({ models: result.models, scopedModels: result.scopedModels ?? [] });\n\t\tawait super.session.modelRuntime.reloadCredentials();\n\t\tsuper.session.refreshCurrentModelFromRegistry();\n\t\treturn result;\n\t}\n\n\tonDiagnostic(listener: EngineDiagnosticListener): () => void {\n\t\treturn this.health.onDiagnostic(listener);\n\t}\n\n\tonEngineMessage(listener: (message: InteractiveEngineMessage) => void): () => void {\n\t\treturn this.client.onInteractiveEngineMessage(listener);\n\t}\n\tonKeybindingState(listener: (state: EngineKeybindingState) => void): () => void {\n\t\treturn this.client.onInteractiveEngineKeybindingState(listener);\n\t}\n\n\tsendEngineCommand(command: InteractiveEngineCommand): void {\n\t\tthis.client.sendInteractiveEngineCommand(command);\n\t}\n\n\tgetRemoteCommands(): readonly RpcSlashCommand[] {\n\t\treturn this.remoteCommands.getCommands();\n\t}\n\tonRemoteCommandsChanged(listener: RemoteCommandsListener): () => void {\n\t\treturn this.remoteCommands.onChange(listener);\n\t}\n\tgetRemoteCommandCompletions(commandName: string, argumentPrefix: string): Promise<RpcAutocompleteItem[] | null> {\n\t\treturn this.client.getCommandCompletions(commandName, argumentPrefix);\n\t}\n\n\tasync invokeRemoteShortcut(key: string): Promise<void> {\n\t\tawait this.client.requestInternal<void>({ type: \"invoke_shortcut\", key });\n\t}\n\n\twaitUntilBound(): Promise<void> {\n\t\treturn this.client.waitForInteractiveEngineBound();\n\t}\n\tgetEnginePid(): number | undefined {\n\t\treturn this.client.getEnginePid();\n\t}\n\tgetEngineGeneration(): number {\n\t\treturn this.client.getGeneration();\n\t}\n\tisRecovering(): boolean {\n\t\treturn this.health.isRecovering();\n\t}\n\t/** Subscribe to host-local engine generation death (see engine-generation.ts). */\n\tonGenerationEnded(listener: InteractiveEngineGenerationEndedListener): () => void {\n\t\treturn this.client.onGenerationEnded(listener);\n\t}\n\t/**\n\t * A heartbeat proves the child's event loop is turning again, so a stall the\n\t * watchdog already reported must stop arming the Ctrl+C escape hatch. Fed by a\n\t * dedicated client callback rather than a generic engine-message subscriber,\n\t * which would consume buffered startup custom-UI messages.\n\t */\n\tnoteEngineHeartbeat(): void {\n\t\tthis.health.clearUnresponsive();\n\t}\n\t/** True only when the engine is provably not answering (see EngineHealthController). */\n\tneedsExplicitTermination(): boolean {\n\t\treturn this.health.needsExplicitTermination();\n\t}\n\t/** Explicit user-driven engine termination and recovery (Ctrl+C escape hatch). */\n\tterminateAndRecover(): Promise<void> {\n\t\treturn this.health.terminate();\n\t}\n\tgetResourceOverlaps(): readonly ResourceOverlap[] {\n\t\treturn this.resourceOverlaps;\n\t}\n\tasync synchronize(): Promise<void> {\n\t\tconst state = await this.client.getState();\n\t\tthis.remoteSessionFile = state.sessionFile;\n\t\tthis.remoteSessionName = state.sessionName;\n\t\tthis.resourceOverlaps = state.resourceOverlaps ?? [];\n\t}\n\n\tsetEngineCallbackActive(active: boolean): void {\n\t\tthis.engineCallbackActive = active;\n\t}\n\n\tinterruptBlockedCallback(): boolean {\n\t\tif (!this.engineCallbackActive) return false;\n\t\tthis.dispatchBestEffort(\"interrupt\", this.session.abort());\n\t\treturn true;\n\t}\n\n\tsetExtensionUIHandler(\n\t\thandler: (request: RpcExtensionUIRequest) => Promise<RpcExtensionUIResponse | undefined>,\n\t): () => void {\n\t\treturn this.client.onExtensionUIRequest((request) => {\n\t\t\tvoid handler(request)\n\t\t\t\t.then(async (response) => {\n\t\t\t\t\tif (response) await this.client.respondExtensionUI(response);\n\t\t\t\t})\n\t\t\t\t.catch((error: Error) => {\n\t\t\t\t\tthis.emitDiagnostic({\n\t\t\t\t\t\tactivity: undefined,\n\t\t\t\t\t\telapsedMs: 0,\n\t\t\t\t\t\tlevel: \"unresponsive\",\n\t\t\t\t\t\tmessage: `Interactive engine UI bridge failed: ${error.message}`,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t});\n\t}\n\n\temitDiagnostic(diagnostic: ActivityWatchdogDiagnostic): void {\n\t\tthis.engineCallbackActive = true;\n\t\tthis.health.publish(diagnostic);\n\t}\n\n\toverride async switchSession(sessionPath: string): Promise<{ cancelled: boolean }> {\n\t\tconst result = await this.client.switchSession(sessionPath);\n\t\tif (!result.cancelled) {\n\t\t\tawait super.switchSession(sessionPath);\n\t\t\tawait this.initializeFromEngine();\n\t\t}\n\t\treturn result;\n\t}\n\n\toverride async newSession(options?: { parentSession?: string }): Promise<{ cancelled: boolean }> {\n\t\tconst result = await this.client.newSession(options?.parentSession);\n\t\tif (result.cancelled) return result;\n\t\tconst state = await this.client.getState();\n\t\tif (state.sessionFile) await super.switchSession(state.sessionFile);\n\t\telse this.resetUnpersistedSessionView();\n\t\tawait this.initializeFromEngine();\n\t\treturn result;\n\t}\n\n\toverride async importFromJsonl(inputPath: string, cwdOverride?: string): Promise<{ cancelled: boolean }> {\n\t\tconst result = await this.client.requestInternal<{ cancelled: boolean }>({\n\t\t\ttype: \"import_session\",\n\t\t\tinputPath,\n\t\t\tcwdOverride,\n\t\t});\n\t\tif (result.cancelled) return result;\n\t\tconst state = await this.client.getState();\n\t\tif (state.sessionFile) await super.switchSession(state.sessionFile);\n\t\tawait this.initializeFromEngine();\n\t\treturn result;\n\t}\n\n\toverride async fork(\n\t\tentryId: string,\n\t\toptions?: { position?: \"before\" | \"at\" },\n\t): Promise<{ cancelled: boolean; selectedText?: string }> {\n\t\tlet selectedText: string | undefined;\n\t\tlet cancelled: boolean;\n\t\tif (options?.position === \"at\") {\n\t\t\tcancelled = (await this.client.clone()).cancelled;\n\t\t} else {\n\t\t\tconst result = await this.client.fork(entryId);\n\t\t\tcancelled = result.cancelled;\n\t\t\tselectedText = result.text;\n\t\t}\n\t\tif (cancelled) return { cancelled: true };\n\t\tconst state = await this.client.getState();\n\t\tif (state.sessionFile) await super.switchSession(state.sessionFile);\n\t\tawait this.initializeFromEngine();\n\t\treturn { cancelled: false, selectedText };\n\t}\n\n\t/**\n\t * The child engine already settled (and persisted) its own turn before it\n\t * reported the replacement, and the host facade's `abort()` is `abortAndRecover()`\n\t * — an unbounded cooperative round trip. Re-entering it during teardown would\n\t * hang session replacement on an unresponsive or dead engine, which is exactly\n\t * what engine recovery exists to survive.\n\t */\n\tprotected override async settleActiveResponseBeforeTeardown(): Promise<void> {}\n\n\toverride async dispose(): Promise<void> {\n\t\t// Joins any in-flight replacement: shutdown voids the client's restart\n\t\t// permit and waits for the attempt, so nothing spawns after this returns.\n\t\tawait this.health.shutdown();\n\t\tawait this.client.stop();\n\t\tawait super.dispose();\n\t}\n\n\tprivate patchSession(session: AgentSession): void {\n\t\tif (this.patchedSessions.has(session)) return;\n\t\tthis.patchedSessions.add(session);\n\t\tthis.patchSessionManager(session.sessionManager);\n\t\tObject.defineProperties(session, {\n\t\t\tisStreaming: { configurable: true, get: () => this.streaming },\n\t\t\tisCompacting: { configurable: true, get: () => this.compacting },\n\t\t\tisBashRunning: { configurable: true, get: () => this.activeBashRequestIds.size > 0 },\n\t\t\tsessionName: { configurable: true, get: () => this.remoteSessionName },\n\t\t\tsessionFile: { configurable: true, get: () => this.remoteSessionFile },\n\t\t\tautoCompactionEnabled: { configurable: true, get: () => this.autoCompactionEnabled },\n\t\t\tautoRetryEnabled: { configurable: true, get: () => this.autoRetryEnabled },\n\t\t\tqueuedMessagesPaused: { configurable: true, get: () => this.queuePause.isPaused },\n\t\t\tsubscribe: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (listener: (event: AgentSessionEvent) => void) => this.client.onEvent(listener),\n\t\t\t},\n\t\t\tprompt: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: async (text: string, options?: PromptOptions) => {\n\t\t\t\t\tawait this.client.prompt(text, options?.images, options?.streamingBehavior);\n\t\t\t\t\toptions?.preflightResult?.(true);\n\t\t\t\t},\n\t\t\t},\n\t\t\tsteer: { configurable: true, value: (text: string) => this.client.steer(text) },\n\t\t\tfollowUp: { configurable: true, value: (text: string) => this.client.followUp(text) },\n\t\t\tabort: { configurable: true, value: () => this.abortAndRecover() },\n\t\t\texecuteBash: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: async (\n\t\t\t\t\tcommand: string,\n\t\t\t\t\tonChunk?: Parameters<AgentSession[\"executeBash\"]>[1],\n\t\t\t\t\toptions?: Parameters<AgentSession[\"executeBash\"]>[2],\n\t\t\t\t) => {\n\t\t\t\t\tconst key = options?.id ?? Symbol(\"isolated-bash-request\");\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn await this.client.userBashWithUpdates(command, (delta, channel) => onChunk?.(delta, channel), {\n\t\t\t\t\t\t\texcludeFromContext: options?.excludeFromContext,\n\t\t\t\t\t\t\tonRequestId: (requestId) => this.activeBashRequestIds.set(key, requestId),\n\t\t\t\t\t\t});\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.activeBashRequestIds.delete(key);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\trecordBashResult: { configurable: true, value: () => {} },\n\t\t\tabortBash: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (id?: string) => {\n\t\t\t\t\tif (id === undefined) this.dispatchBestEffort(\"abort bash\", this.client.abortBash());\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst requestId = this.activeBashRequestIds.get(id);\n\t\t\t\t\t\tif (requestId) this.dispatchBestEffort(\"abort bash\", this.client.abortBash(requestId));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\tcompact: { configurable: true, value: () => this.client.compact() },\n\t\t\tabortCompaction: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () =>\n\t\t\t\t\tthis.dispatchBestEffort(\n\t\t\t\t\t\t\"abort compaction\",\n\t\t\t\t\t\tthis.client.requestInternal<void>({ type: \"abort_compaction\" }),\n\t\t\t\t\t),\n\t\t\t},\n\t\t\tabortRetry: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => this.dispatchBestEffort(\"abort retry\", this.client.abortRetry()),\n\t\t\t},\n\t\t\tnavigateTree: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: async (targetId: string, options?: Parameters<AgentSession[\"navigateTree\"]>[1]) =>\n\t\t\t\t\tthis.client.requestInternal<Awaited<ReturnType<AgentSession[\"navigateTree\"]>>>({\n\t\t\t\t\t\ttype: \"navigate_tree\",\n\t\t\t\t\t\ttargetId,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t}),\n\t\t\t},\n\t\t\treload: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: async () => {\n\t\t\t\t\tawait this.client.requestInternal<void>({ type: \"reload\" });\n\t\t\t\t\tawait this.initializeFromEngine();\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetSessionName: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (name: string) => {\n\t\t\t\t\tthis.remoteSessionName = name;\n\t\t\t\t\tthis.dispatchBestEffort(\n\t\t\t\t\t\t\"set session name\",\n\t\t\t\t\t\tthis.client.setSessionName(name).then(() => this.refreshSessionView()),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t},\n\t\t\tgetSteeringMessages: { configurable: true, value: () => [...this.steeringMessages] },\n\t\t\tgetFollowUpMessages: { configurable: true, value: () => [...this.followUpMessages] },\n\t\t\tclearQueue: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tconst queued = { steering: [...this.steeringMessages], followUp: [...this.followUpMessages] };\n\t\t\t\t\tthis.steeringMessages = [];\n\t\t\t\t\tthis.followUpMessages = [];\n\t\t\t\t\tthis.dispatchBestEffort(\"clear queue\", this.client.requestInternal({ type: \"clear_queue\" }));\n\t\t\t\t\treturn queued;\n\t\t\t\t},\n\t\t\t},\n\t\t\tpauseQueuedMessages: { configurable: true, value: () => this.queuePause.pause() },\n\t\t\tresumeQueuedMessages: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (beforeRelease?: () => void) => this.queuePause.resume(beforeRelease),\n\t\t\t},\n\t\t\tsetModel: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: async (model: Model<Api>) => {\n\t\t\t\t\tconst selected = await this.client.setModel(model.provider, model.id);\n\t\t\t\t\tsession.agent.state.model = session.modelRuntime.getModel(selected.provider, selected.id) ?? model;\n\t\t\t\t\tthis.resolveModelFallback();\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetThinkingLevel: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (level: AgentSession[\"thinkingLevel\"]) => {\n\t\t\t\t\tsession.agent.state.thinkingLevel = level;\n\t\t\t\t\tthis.dispatchBestEffort(\"set thinking level\", this.client.setThinkingLevel(level));\n\t\t\t\t},\n\t\t\t},\n\t\t\tcycleModel: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: async (direction?: \"forward\" | \"backward\") => {\n\t\t\t\t\tconst previousModel = session.model;\n\t\t\t\t\tconst result = await this.client.cycleModel(direction);\n\t\t\t\t\tif (!result) return undefined;\n\t\t\t\t\tconst model = session.modelRuntime.getModel(result.model.provider, result.model.id) ?? result.model;\n\t\t\t\t\tsession.agent.state.model = model;\n\t\t\t\t\tsession.agent.state.thinkingLevel = result.thinkingLevel;\n\t\t\t\t\tthis.resolveModelFallbackAfterExplicitModelSelection(previousModel, model);\n\t\t\t\t\treturn { ...result, model };\n\t\t\t\t},\n\t\t\t},\n\t\t\tcycleThinkingLevel: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tconst levels = session.getAvailableThinkingLevels();\n\t\t\t\t\tif (levels.length <= 1) return undefined;\n\t\t\t\t\tconst current = levels.indexOf(session.thinkingLevel);\n\t\t\t\t\tconst level = levels[(current + 1) % levels.length]!;\n\t\t\t\t\tsession.agent.state.thinkingLevel = level;\n\t\t\t\t\tthis.dispatchBestEffort(\"cycle thinking level\", this.client.setThinkingLevel(level));\n\t\t\t\t\treturn level;\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetSteeringMode: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (mode: \"all\" | \"one-at-a-time\") => {\n\t\t\t\t\tsession.agent.steeringMode = mode;\n\t\t\t\t\tthis.dispatchBestEffort(\"set steering mode\", this.client.setSteeringMode(mode));\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetFollowUpMode: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (mode: \"all\" | \"one-at-a-time\") => {\n\t\t\t\t\tsession.agent.followUpMode = mode;\n\t\t\t\t\tthis.dispatchBestEffort(\"set follow-up mode\", this.client.setFollowUpMode(mode));\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetAutoCompactionEnabled: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (enabled: boolean) => {\n\t\t\t\t\tthis.autoCompactionEnabled = enabled;\n\t\t\t\t\tthis.dispatchBestEffort(\"set auto compaction\", this.client.setAutoCompaction(enabled));\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetAutoRetryEnabled: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (enabled: boolean) => {\n\t\t\t\t\tthis.autoRetryEnabled = enabled;\n\t\t\t\t\tthis.dispatchBestEffort(\"set auto retry\", this.client.setAutoRetry(enabled));\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Cooperative interrupt. Requests the engine's own abort and waits for it —\n\t * no timeout, no termination, no restart. A genuinely wedged engine is the\n\t * user's call to terminate with Ctrl+C (see terminateAndRecover), never an\n\t * automatic consequence of pressing Escape.\n\t */\n\tprivate async abortAndRecover(): Promise<void> {\n\t\tawait this.queuePause.settleBeforeAbort();\n\t\tthis.health.markCooperativeAbortStarted();\n\t\ttry {\n\t\t\tawait this.client.abort();\n\t\t} finally {\n\t\t\tthis.health.markCooperativeAbortSettled();\n\t\t\tthis.engineCallbackActive = false;\n\t\t}\n\t}\n\n\tprivate dispatchBestEffort(label: string, operation: Promise<unknown>): void {\n\t\tvoid operation.catch((error: Error) => {\n\t\t\tif (this.health.isRecovering()) return;\n\t\t\tthis.emitDiagnostic({\n\t\t\t\tactivity: undefined,\n\t\t\t\telapsedMs: 0,\n\t\t\t\tlevel: \"unresponsive\",\n\t\t\t\tmessage: `Interactive engine ${label} failed: ${error.message}`,\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate resetUnpersistedSessionView(): void {\n\t\tconst session = super.session;\n\t\tconst manager = SessionManager.create(session.sessionManager.getCwd(), session.sessionManager.getSessionDir());\n\t\tObject.defineProperty(session, \"sessionManager\", { configurable: true, value: manager });\n\t\tthis.patchSessionManager(manager);\n\t\tsession.agent.state.messages = [];\n\t}\n\n\tprivate patchSessionManager(manager: SessionManager): void {\n\t\tObject.defineProperty(manager, \"appendLabelChange\", {\n\t\t\tconfigurable: true,\n\t\t\tvalue: (entryId: string, label?: string) => {\n\t\t\t\tthis.dispatchBestEffort(\n\t\t\t\t\t\"set label\",\n\t\t\t\t\tthis.client\n\t\t\t\t\t\t.requestInternal<void>({ type: \"set_label\", entryId, label })\n\t\t\t\t\t\t.then(() => this.refreshSessionView()),\n\t\t\t\t);\n\t\t\t},\n\t\t});\n\t}\n\n\tprivate refreshSessionView(): void {\n\t\tconst session = super.session;\n\t\tconst sessionFile = session.sessionFile;\n\t\tif (!sessionFile) return;\n\t\tconst currentManager = session.sessionManager;\n\t\tconst refreshed = SessionManager.open(sessionFile, currentManager.getSessionDir(), currentManager.getCwd());\n\t\tObject.defineProperty(session, \"sessionManager\", { configurable: true, value: refreshed });\n\t\tthis.patchSessionManager(refreshed);\n\t\tsession.agent.state.messages = refreshed.buildSessionContext().messages;\n\t}\n\n\tprivate observeEvent(event: RpcEvent): void {\n\t\tconst session = super.session;\n\t\tswitch (event.type) {\n\t\t\tcase \"agent_start\":\n\t\t\t\tthis.streaming = true;\n\t\t\t\tbreak;\n\t\t\tcase \"agent_end\":\n\t\t\t\tthis.streaming = false;\n\t\t\t\tthis.refreshSessionView();\n\t\t\t\tbreak;\n\t\t\tcase \"compaction_start\":\n\t\t\t\tthis.compacting = true;\n\t\t\t\tbreak;\n\t\t\tcase \"compaction_end\":\n\t\t\t\tthis.compacting = false;\n\t\t\t\tbreak;\n\t\t\tcase \"queue_update\":\n\t\t\t\tthis.steeringMessages = [...event.steering];\n\t\t\t\tthis.followUpMessages = [...event.followUp];\n\t\t\t\tbreak;\n\t\t\tcase \"model_changed\":\n\t\t\t\tsession.agent.state.model = event.model;\n\t\t\t\tbreak;\n\t\t\tcase \"thinking_level_changed\":\n\t\t\t\tsession.agent.state.thinkingLevel = event.level;\n\t\t\t\tbreak;\n\t\t\tcase \"session_info_changed\":\n\t\t\t\tthis.remoteSessionName = event.name;\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"isolated-runtime.js","sourceRoot":"","sources":["../../../src/modes/interactive-engine/isolated-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Api, Model } from \"@earendil-works/pi-ai/compat\";\nimport type { AgentSession, AgentSessionEvent, CompactionReason } from \"../../core/agent-session.ts\";\nimport { AgentSessionRuntime, type CreateAgentSessionRuntimeFactory } from \"../../core/agent-session-runtime.ts\";\nimport type { PromptOptions } from \"../../core/agent-session-types.ts\";\nimport type { ResourceOverlap } from \"../../core/diagnostics.ts\";\nimport { SessionManager } from \"../../core/session-manager.ts\";\nimport type { RpcClient } from \"../rpc/rpc-client.ts\";\nimport type {\n\tRpcAutocompleteItem,\n\tRpcEvent,\n\tRpcExtensionUIRequest,\n\tRpcExtensionUIResponse,\n\tRpcModelCatalog,\n\tRpcSlashCommand,\n} from \"../rpc/rpc-types.ts\";\nimport type { ActivityWatchdogDiagnostic } from \"./activity-watchdog.ts\";\nimport type { InteractiveEngineGenerationEndedListener } from \"./engine-generation.ts\";\nimport { type EngineDiagnosticListener, EngineHealthController } from \"./engine-health.ts\";\nimport { type AtomicOAuthLoginCallbacks, loginIsolatedOAuthProvider } from \"./isolated-auth.ts\";\nimport type { EngineKeybindingState, InteractiveEngineCommand, InteractiveEngineMessage } from \"./protocol.ts\";\nimport { RemoteCommandCatalog, type RemoteCommandsListener } from \"./remote-command-catalog.ts\";\nimport { RemoteModelCatalog } from \"./remote-model-catalog.ts\";\nimport { RemoteQueuePause } from \"./remote-queue-pause.js\";\nexport class IsolatedInteractiveRuntime extends AgentSessionRuntime {\n\tprivate readonly client: RpcClient;\n\tprivate readonly patchedSessions = new WeakSet<AgentSession>();\n\tprivate streaming = false;\n\tprivate compacting = false;\n\tprivate compactionReason: CompactionReason | undefined;\n\tprivate readonly activeBashRequestIds = new Map<string | symbol, string>();\n\tprivate steeringMessages: string[] = [];\n\tprivate followUpMessages: string[] = [];\n\tprivate engineCallbackActive = false;\n\tprivate readonly queuePause: RemoteQueuePause;\n\tprivate autoCompactionEnabled = true;\n\tprivate autoRetryEnabled = true;\n\tprivate remoteSessionName: string | undefined;\n\tprivate remoteSessionFile: string | undefined;\n\tprivate readonly health: EngineHealthController;\n\tprivate readonly remoteCommands: RemoteCommandCatalog;\n\tprivate readonly remoteModelCatalog: RemoteModelCatalog;\n\tprivate resourceOverlaps: ResourceOverlap[] = [];\n\n\tconstructor(localRuntime: AgentSessionRuntime, createRuntime: CreateAgentSessionRuntimeFactory, client: RpcClient) {\n\t\tsuper(\n\t\t\tlocalRuntime.session,\n\t\t\tlocalRuntime.services,\n\t\t\tcreateRuntime,\n\t\t\t[...localRuntime.diagnostics],\n\t\t\tlocalRuntime.modelFallbackMessage,\n\t\t\tlocalRuntime.modelFallbackReason,\n\t\t);\n\t\tthis.client = client;\n\t\tthis.remoteCommands = new RemoteCommandCatalog(client);\n\t\tthis.remoteModelCatalog = new RemoteModelCatalog(client);\n\t\tthis.queuePause = new RemoteQueuePause(client);\n\t\tthis.health = new EngineHealthController({\n\t\t\tstop: () => this.client.stop(),\n\t\t\trestart: async () => {\n\t\t\t\tawait this.client.restart(this.remoteSessionFile);\n\t\t\t\tawait this.initializeFromEngine();\n\t\t\t},\n\t\t\tclearActivity: () => {\n\t\t\t\tthis.streaming = false;\n\t\t\t\tthis.compacting = false;\n\t\t\t\tthis.compactionReason = undefined;\n\t\t\t\tthis.engineCallbackActive = false;\n\t\t\t\tthis.health.markCooperativeAbortSettled();\n\t\t\t},\n\t\t});\n\t\tthis.client.onEvent((event) => this.observeEvent(event));\n\t\tthis.client.onGenerationEnded((event) => this.health.handleGenerationEnded(event));\n\t}\n\n\toverride get session(): AgentSession {\n\t\tconst session = super.session;\n\t\tthis.patchSession(session);\n\t\treturn session;\n\t}\n\tasync initializeFromEngine(): Promise<void> {\n\t\tconst state = await this.client.getState();\n\t\tconst catalog = await this.client.requestInternal<RpcModelCatalog>({ type: \"get_available_models\" });\n\t\tif (state.sessionFile && super.session.sessionManager.getSessionFile() !== state.sessionFile) {\n\t\t\tawait super.switchSession(state.sessionFile);\n\t\t}\n\t\tconst session = super.session;\n\t\tthis.remoteModelCatalog.apply(catalog);\n\t\tthis.remoteModelCatalog.patch(session);\n\t\t(session.agent.state as { model?: Model<Api> }).model = state.model;\n\t\tsession.agent.state.thinkingLevel = state.thinkingLevel;\n\t\tsession.agent.steeringMode = state.steeringMode;\n\t\tsession.agent.followUpMode = state.followUpMode;\n\t\tthis.autoCompactionEnabled = state.autoCompactionEnabled;\n\t\tthis.resourceOverlaps = state.resourceOverlaps ?? [];\n\t\tthis.remoteSessionName = state.sessionName;\n\t\tthis.remoteSessionFile = state.sessionFile;\n\t\tthis.streaming = state.isStreaming;\n\t\tthis.compacting = state.isCompacting;\n\t\tthis.compactionReason = state.isCompacting ? state.compactionReason : undefined;\n\t\tthis.queuePause.synchronize(state.queuedMessagesPaused === true);\n\t\tthis.replaceModelFallback(state.modelFallbackMessage, state.modelFallbackReason);\n\t\tthis.refreshSessionView();\n\t\tthis.engineCallbackActive = false;\n\t\tthis.health.clearUnresponsive();\n\t\tthis.health.markCooperativeAbortSettled();\n\t\t// Non-blocking refresh so isolated autocomplete lists engine-only extension\n\t\t// commands after bind/restart/reload/new/resume/fork. See RemoteCommandCatalog.\n\t\tthis.remoteCommands.refresh();\n\t}\n\n\toverride async loginOAuthProvider(provider: string, callbacks: AtomicOAuthLoginCallbacks) {\n\t\treturn loginIsolatedOAuthProvider(super.session, this.client, this.remoteModelCatalog, provider, callbacks);\n\t}\n\n\toverride async logoutProvider(provider: string) {\n\t\tconst result = await this.client.logoutProvider(provider);\n\t\tthis.remoteModelCatalog.applyModels({ models: result.models, scopedModels: result.scopedModels ?? [] });\n\t\tawait super.session.modelRuntime.reloadCredentials({ refreshAvailability: false });\n\t\tsuper.session.modelRuntime.applyExternalProviderAuthStatus(provider, result.authStatus);\n\t\tsuper.session.refreshCurrentModelFromRegistry();\n\t\treturn result;\n\t}\n\n\tonDiagnostic(listener: EngineDiagnosticListener): () => void {\n\t\treturn this.health.onDiagnostic(listener);\n\t}\n\n\tonEngineMessage(listener: (message: InteractiveEngineMessage) => void): () => void {\n\t\treturn this.client.onInteractiveEngineMessage(listener);\n\t}\n\tonKeybindingState(listener: (state: EngineKeybindingState) => void): () => void {\n\t\treturn this.client.onInteractiveEngineKeybindingState(listener);\n\t}\n\n\tsendEngineCommand(command: InteractiveEngineCommand): void {\n\t\tthis.client.sendInteractiveEngineCommand(command);\n\t}\n\n\tgetRemoteCommands(): readonly RpcSlashCommand[] {\n\t\treturn this.remoteCommands.getCommands();\n\t}\n\tonRemoteCommandsChanged(listener: RemoteCommandsListener): () => void {\n\t\treturn this.remoteCommands.onChange(listener);\n\t}\n\tgetRemoteCommandCompletions(commandName: string, argumentPrefix: string): Promise<RpcAutocompleteItem[] | null> {\n\t\treturn this.client.getCommandCompletions(commandName, argumentPrefix);\n\t}\n\n\tasync invokeRemoteShortcut(key: string): Promise<void> {\n\t\tawait this.client.requestInternal<void>({ type: \"invoke_shortcut\", key });\n\t}\n\n\twaitUntilBound(): Promise<void> {\n\t\treturn this.client.waitForInteractiveEngineBound();\n\t}\n\tgetEnginePid(): number | undefined {\n\t\treturn this.client.getEnginePid();\n\t}\n\tgetEngineGeneration(): number {\n\t\treturn this.client.getGeneration();\n\t}\n\tisRecovering(): boolean {\n\t\treturn this.health.isRecovering();\n\t}\n\t/** Subscribe to host-local engine generation death (see engine-generation.ts). */\n\tonGenerationEnded(listener: InteractiveEngineGenerationEndedListener): () => void {\n\t\treturn this.client.onGenerationEnded(listener);\n\t}\n\t/**\n\t * A heartbeat proves the child's event loop is turning again, so a stall the\n\t * watchdog already reported must stop arming the Ctrl+C escape hatch. Fed by a\n\t * dedicated client callback rather than a generic engine-message subscriber,\n\t * which would consume buffered startup custom-UI messages.\n\t */\n\tnoteEngineHeartbeat(): void {\n\t\tthis.health.clearUnresponsive();\n\t}\n\t/** True only when the engine is provably not answering (see EngineHealthController). */\n\tneedsExplicitTermination(): boolean {\n\t\treturn this.health.needsExplicitTermination();\n\t}\n\t/** Explicit user-driven engine termination and recovery (Ctrl+C escape hatch). */\n\tterminateAndRecover(): Promise<void> {\n\t\treturn this.health.terminate();\n\t}\n\tgetResourceOverlaps(): readonly ResourceOverlap[] {\n\t\treturn this.resourceOverlaps;\n\t}\n\tasync synchronize(): Promise<void> {\n\t\tconst state = await this.client.getState();\n\t\tthis.remoteSessionFile = state.sessionFile;\n\t\tthis.remoteSessionName = state.sessionName;\n\t\tthis.resourceOverlaps = state.resourceOverlaps ?? [];\n\t}\n\n\tsetEngineCallbackActive(active: boolean): void {\n\t\tthis.engineCallbackActive = active;\n\t}\n\n\tinterruptBlockedCallback(): boolean {\n\t\tif (!this.engineCallbackActive) return false;\n\t\tthis.dispatchBestEffort(\"interrupt\", this.session.abort());\n\t\treturn true;\n\t}\n\n\tsetExtensionUIHandler(\n\t\thandler: (request: RpcExtensionUIRequest) => Promise<RpcExtensionUIResponse | undefined>,\n\t): () => void {\n\t\treturn this.client.onExtensionUIRequest((request) => {\n\t\t\tvoid handler(request)\n\t\t\t\t.then(async (response) => {\n\t\t\t\t\tif (response) await this.client.respondExtensionUI(response);\n\t\t\t\t})\n\t\t\t\t.catch((error: Error) => {\n\t\t\t\t\tthis.emitDiagnostic({\n\t\t\t\t\t\tactivity: undefined,\n\t\t\t\t\t\telapsedMs: 0,\n\t\t\t\t\t\tlevel: \"unresponsive\",\n\t\t\t\t\t\tmessage: `Interactive engine UI bridge failed: ${error.message}`,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t});\n\t}\n\n\temitDiagnostic(diagnostic: ActivityWatchdogDiagnostic): void {\n\t\tthis.engineCallbackActive = true;\n\t\tthis.health.publish(diagnostic);\n\t}\n\n\toverride async switchSession(sessionPath: string): Promise<{ cancelled: boolean }> {\n\t\tconst result = await this.client.switchSession(sessionPath);\n\t\tif (!result.cancelled) {\n\t\t\tawait super.switchSession(sessionPath);\n\t\t\tawait this.initializeFromEngine();\n\t\t}\n\t\treturn result;\n\t}\n\n\toverride async newSession(options?: { parentSession?: string }): Promise<{ cancelled: boolean }> {\n\t\tconst result = await this.client.newSession(options?.parentSession);\n\t\tif (result.cancelled) return result;\n\t\tconst state = await this.client.getState();\n\t\tif (state.sessionFile) await super.switchSession(state.sessionFile);\n\t\telse this.resetUnpersistedSessionView();\n\t\tawait this.initializeFromEngine();\n\t\treturn result;\n\t}\n\n\toverride async importFromJsonl(inputPath: string, cwdOverride?: string): Promise<{ cancelled: boolean }> {\n\t\tconst result = await this.client.requestInternal<{ cancelled: boolean }>({\n\t\t\ttype: \"import_session\",\n\t\t\tinputPath,\n\t\t\tcwdOverride,\n\t\t});\n\t\tif (result.cancelled) return result;\n\t\tconst state = await this.client.getState();\n\t\tif (state.sessionFile) await super.switchSession(state.sessionFile);\n\t\tawait this.initializeFromEngine();\n\t\treturn result;\n\t}\n\n\toverride async fork(\n\t\tentryId: string,\n\t\toptions?: { position?: \"before\" | \"at\" },\n\t): Promise<{ cancelled: boolean; selectedText?: string }> {\n\t\tlet selectedText: string | undefined;\n\t\tlet cancelled: boolean;\n\t\tif (options?.position === \"at\") {\n\t\t\tcancelled = (await this.client.clone()).cancelled;\n\t\t} else {\n\t\t\tconst result = await this.client.fork(entryId);\n\t\t\tcancelled = result.cancelled;\n\t\t\tselectedText = result.text;\n\t\t}\n\t\tif (cancelled) return { cancelled: true };\n\t\tconst state = await this.client.getState();\n\t\tif (state.sessionFile) await super.switchSession(state.sessionFile);\n\t\tawait this.initializeFromEngine();\n\t\treturn { cancelled: false, selectedText };\n\t}\n\n\t/**\n\t * The child engine already settled (and persisted) its own turn before it\n\t * reported the replacement, and the host facade's `abort()` is `abortAndRecover()`\n\t * — an unbounded cooperative round trip. Re-entering it during teardown would\n\t * hang session replacement on an unresponsive or dead engine, which is exactly\n\t * what engine recovery exists to survive.\n\t */\n\tprotected override async settleActiveResponseBeforeTeardown(): Promise<void> {}\n\n\toverride async dispose(): Promise<void> {\n\t\t// Joins any in-flight replacement: shutdown voids the client's restart\n\t\t// permit and waits for the attempt, so nothing spawns after this returns.\n\t\tawait this.health.shutdown();\n\t\tawait this.client.stop();\n\t\tawait super.dispose();\n\t}\n\n\tprivate patchSession(session: AgentSession): void {\n\t\tif (this.patchedSessions.has(session)) return;\n\t\tthis.patchedSessions.add(session);\n\t\tthis.patchSessionManager(session.sessionManager);\n\t\tObject.defineProperties(session, {\n\t\t\tisStreaming: { configurable: true, get: () => this.streaming },\n\t\t\tisCompacting: { configurable: true, get: () => this.compacting },\n\t\t\tcompactionReason: { configurable: true, get: () => this.compactionReason },\n\t\t\tisBashRunning: { configurable: true, get: () => this.activeBashRequestIds.size > 0 },\n\t\t\tsessionName: { configurable: true, get: () => this.remoteSessionName },\n\t\t\tsessionFile: { configurable: true, get: () => this.remoteSessionFile },\n\t\t\tautoCompactionEnabled: { configurable: true, get: () => this.autoCompactionEnabled },\n\t\t\tautoRetryEnabled: { configurable: true, get: () => this.autoRetryEnabled },\n\t\t\tqueuedMessagesPaused: { configurable: true, get: () => this.queuePause.isPaused },\n\t\t\tsubscribe: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (listener: (event: AgentSessionEvent) => void) => this.client.onEvent(listener),\n\t\t\t},\n\t\t\tprompt: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: async (text: string, options?: PromptOptions) => {\n\t\t\t\t\tawait this.client.prompt(text, options?.images, options?.streamingBehavior);\n\t\t\t\t\toptions?.preflightResult?.(true);\n\t\t\t\t},\n\t\t\t},\n\t\t\tsteer: { configurable: true, value: (text: string) => this.client.steer(text) },\n\t\t\tfollowUp: { configurable: true, value: (text: string) => this.client.followUp(text) },\n\t\t\tabort: { configurable: true, value: () => this.abortAndRecover() },\n\t\t\texecuteBash: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: async (\n\t\t\t\t\tcommand: string,\n\t\t\t\t\tonChunk?: Parameters<AgentSession[\"executeBash\"]>[1],\n\t\t\t\t\toptions?: Parameters<AgentSession[\"executeBash\"]>[2],\n\t\t\t\t) => {\n\t\t\t\t\tconst key = options?.id ?? Symbol(\"isolated-bash-request\");\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn await this.client.userBashWithUpdates(command, (delta, channel) => onChunk?.(delta, channel), {\n\t\t\t\t\t\t\texcludeFromContext: options?.excludeFromContext,\n\t\t\t\t\t\t\tonRequestId: (requestId) => this.activeBashRequestIds.set(key, requestId),\n\t\t\t\t\t\t});\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tthis.activeBashRequestIds.delete(key);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\trecordBashResult: { configurable: true, value: () => {} },\n\t\t\tabortBash: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (id?: string) => {\n\t\t\t\t\tif (id === undefined) this.dispatchBestEffort(\"abort bash\", this.client.abortBash());\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst requestId = this.activeBashRequestIds.get(id);\n\t\t\t\t\t\tif (requestId) this.dispatchBestEffort(\"abort bash\", this.client.abortBash(requestId));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\tcompact: { configurable: true, value: () => this.client.compact() },\n\t\t\tabortCompaction: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () =>\n\t\t\t\t\tthis.dispatchBestEffort(\n\t\t\t\t\t\t\"abort compaction\",\n\t\t\t\t\t\tthis.client.requestInternal<void>({ type: \"abort_compaction\" }),\n\t\t\t\t\t),\n\t\t\t},\n\t\t\tabortRetry: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => this.dispatchBestEffort(\"abort retry\", this.client.abortRetry()),\n\t\t\t},\n\t\t\tnavigateTree: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: async (targetId: string, options?: Parameters<AgentSession[\"navigateTree\"]>[1]) =>\n\t\t\t\t\tthis.client.requestInternal<Awaited<ReturnType<AgentSession[\"navigateTree\"]>>>({\n\t\t\t\t\t\ttype: \"navigate_tree\",\n\t\t\t\t\t\ttargetId,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t}),\n\t\t\t},\n\t\t\treload: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: async () => {\n\t\t\t\t\tawait this.client.requestInternal<void>({ type: \"reload\" });\n\t\t\t\t\tawait this.initializeFromEngine();\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetSessionName: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (name: string) => {\n\t\t\t\t\tthis.remoteSessionName = name;\n\t\t\t\t\tthis.dispatchBestEffort(\n\t\t\t\t\t\t\"set session name\",\n\t\t\t\t\t\tthis.client.setSessionName(name).then(() => this.refreshSessionView()),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t},\n\t\t\tgetSteeringMessages: { configurable: true, value: () => [...this.steeringMessages] },\n\t\t\tgetFollowUpMessages: { configurable: true, value: () => [...this.followUpMessages] },\n\t\t\tclearQueue: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tconst queued = { steering: [...this.steeringMessages], followUp: [...this.followUpMessages] };\n\t\t\t\t\tthis.steeringMessages = [];\n\t\t\t\t\tthis.followUpMessages = [];\n\t\t\t\t\tthis.dispatchBestEffort(\"clear queue\", this.client.requestInternal({ type: \"clear_queue\" }));\n\t\t\t\t\treturn queued;\n\t\t\t\t},\n\t\t\t},\n\t\t\tpauseQueuedMessages: { configurable: true, value: () => this.queuePause.pause() },\n\t\t\tresumeQueuedMessages: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (beforeRelease?: () => void) => this.queuePause.resume(beforeRelease),\n\t\t\t},\n\t\t\tsetModel: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: async (model: Model<Api>) => {\n\t\t\t\t\tconst selected = await this.client.setModel(model.provider, model.id);\n\t\t\t\t\tsession.agent.state.model = session.modelRuntime.getModel(selected.provider, selected.id) ?? model;\n\t\t\t\t\tthis.resolveModelFallback();\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetThinkingLevel: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (level: AgentSession[\"thinkingLevel\"]) => {\n\t\t\t\t\tsession.agent.state.thinkingLevel = level;\n\t\t\t\t\tthis.dispatchBestEffort(\"set thinking level\", this.client.setThinkingLevel(level));\n\t\t\t\t},\n\t\t\t},\n\t\t\tcycleModel: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: async (direction?: \"forward\" | \"backward\") => {\n\t\t\t\t\tconst previousModel = session.model;\n\t\t\t\t\tconst result = await this.client.cycleModel(direction);\n\t\t\t\t\tif (!result) return undefined;\n\t\t\t\t\tconst model = session.modelRuntime.getModel(result.model.provider, result.model.id) ?? result.model;\n\t\t\t\t\tsession.agent.state.model = model;\n\t\t\t\t\tsession.agent.state.thinkingLevel = result.thinkingLevel;\n\t\t\t\t\tthis.resolveModelFallbackAfterExplicitModelSelection(previousModel, model);\n\t\t\t\t\treturn { ...result, model };\n\t\t\t\t},\n\t\t\t},\n\t\t\tcycleThinkingLevel: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: () => {\n\t\t\t\t\tconst levels = session.getAvailableThinkingLevels();\n\t\t\t\t\tif (levels.length <= 1) return undefined;\n\t\t\t\t\tconst current = levels.indexOf(session.thinkingLevel);\n\t\t\t\t\tconst level = levels[(current + 1) % levels.length]!;\n\t\t\t\t\tsession.agent.state.thinkingLevel = level;\n\t\t\t\t\tthis.dispatchBestEffort(\"cycle thinking level\", this.client.setThinkingLevel(level));\n\t\t\t\t\treturn level;\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetSteeringMode: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (mode: \"all\" | \"one-at-a-time\") => {\n\t\t\t\t\tsession.agent.steeringMode = mode;\n\t\t\t\t\tthis.dispatchBestEffort(\"set steering mode\", this.client.setSteeringMode(mode));\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetFollowUpMode: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (mode: \"all\" | \"one-at-a-time\") => {\n\t\t\t\t\tsession.agent.followUpMode = mode;\n\t\t\t\t\tthis.dispatchBestEffort(\"set follow-up mode\", this.client.setFollowUpMode(mode));\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetAutoCompactionEnabled: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (enabled: boolean) => {\n\t\t\t\t\tthis.autoCompactionEnabled = enabled;\n\t\t\t\t\tthis.dispatchBestEffort(\"set auto compaction\", this.client.setAutoCompaction(enabled));\n\t\t\t\t},\n\t\t\t},\n\t\t\tsetAutoRetryEnabled: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (enabled: boolean) => {\n\t\t\t\t\tthis.autoRetryEnabled = enabled;\n\t\t\t\t\tthis.dispatchBestEffort(\"set auto retry\", this.client.setAutoRetry(enabled));\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Cooperative interrupt. Requests the engine's own abort and waits for it —\n\t * no timeout, no termination, no restart. A genuinely wedged engine is the\n\t * user's call to terminate with Ctrl+C (see terminateAndRecover), never an\n\t * automatic consequence of pressing Escape.\n\t */\n\tprivate async abortAndRecover(): Promise<void> {\n\t\tawait this.queuePause.settleBeforeAbort();\n\t\tthis.health.markCooperativeAbortStarted();\n\t\ttry {\n\t\t\tawait this.client.abort();\n\t\t} finally {\n\t\t\tthis.health.markCooperativeAbortSettled();\n\t\t\tthis.engineCallbackActive = false;\n\t\t}\n\t}\n\n\tprivate dispatchBestEffort(label: string, operation: Promise<unknown>): void {\n\t\tvoid operation.catch((error: Error) => {\n\t\t\tif (this.health.isRecovering()) return;\n\t\t\tthis.emitDiagnostic({\n\t\t\t\tactivity: undefined,\n\t\t\t\telapsedMs: 0,\n\t\t\t\tlevel: \"unresponsive\",\n\t\t\t\tmessage: `Interactive engine ${label} failed: ${error.message}`,\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate resetUnpersistedSessionView(): void {\n\t\tconst session = super.session;\n\t\tconst manager = SessionManager.create(session.sessionManager.getCwd(), session.sessionManager.getSessionDir());\n\t\tObject.defineProperty(session, \"sessionManager\", { configurable: true, value: manager });\n\t\tthis.patchSessionManager(manager);\n\t\tsession.agent.state.messages = [];\n\t}\n\n\tprivate patchSessionManager(manager: SessionManager): void {\n\t\tObject.defineProperty(manager, \"appendLabelChange\", {\n\t\t\tconfigurable: true,\n\t\t\tvalue: (entryId: string, label?: string) => {\n\t\t\t\tthis.dispatchBestEffort(\n\t\t\t\t\t\"set label\",\n\t\t\t\t\tthis.client\n\t\t\t\t\t\t.requestInternal<void>({ type: \"set_label\", entryId, label })\n\t\t\t\t\t\t.then(() => this.refreshSessionView()),\n\t\t\t\t);\n\t\t\t},\n\t\t});\n\t}\n\n\tprivate refreshSessionView(): void {\n\t\tconst session = super.session;\n\t\tconst sessionFile = session.sessionFile;\n\t\tif (!sessionFile) return;\n\t\tconst currentManager = session.sessionManager;\n\t\tconst refreshed = SessionManager.open(sessionFile, currentManager.getSessionDir(), currentManager.getCwd());\n\t\tObject.defineProperty(session, \"sessionManager\", { configurable: true, value: refreshed });\n\t\tthis.patchSessionManager(refreshed);\n\t\tsession.agent.state.messages = refreshed.buildSessionContext().messages;\n\t}\n\n\tprivate observeEvent(event: RpcEvent): void {\n\t\tconst session = super.session;\n\t\tswitch (event.type) {\n\t\t\tcase \"agent_start\":\n\t\t\t\tthis.streaming = true;\n\t\t\t\tbreak;\n\t\t\tcase \"agent_end\":\n\t\t\t\tthis.streaming = false;\n\t\t\t\tthis.refreshSessionView();\n\t\t\t\tbreak;\n\t\t\tcase \"compaction_start\":\n\t\t\t\tthis.compacting = true;\n\t\t\t\tthis.compactionReason = event.reason;\n\t\t\t\tbreak;\n\t\t\tcase \"compaction_end\":\n\t\t\t\tthis.compacting = false;\n\t\t\t\tthis.compactionReason = undefined;\n\t\t\t\tbreak;\n\t\t\tcase \"queue_update\":\n\t\t\t\tthis.steeringMessages = [...event.steering];\n\t\t\t\tthis.followUpMessages = [...event.followUp];\n\t\t\t\tbreak;\n\t\t\tcase \"model_changed\":\n\t\t\t\tsession.agent.state.model = event.model;\n\t\t\t\tbreak;\n\t\t\tcase \"thinking_level_changed\":\n\t\t\t\tsession.agent.state.thinkingLevel = event.level;\n\t\t\t\tbreak;\n\t\t\tcase \"session_info_changed\":\n\t\t\t\tthis.remoteSessionName = event.name;\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-model-catalog.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive-engine/remote-model-catalog.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"remote-model-catalog.d.ts","sourceRoot":"","sources":["../../../src/modes/interactive-engine/remote-model-catalog.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAS3D,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,YAAY,CAAmF;IACvG,OAAO,CAAC,cAAc,CAAsD;IAC5E,OAAO,CAAC,iBAAiB,CAAK;IAE9B,YAAY,MAAM,EAAE,SAAS,EAE5B;IAED,KAAK,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAGpC;IAED,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,cAAc,CAAC,GAAG,IAAI,CAG3E;IAED,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAwBjC;YAEa,OAAO;YAoBP,cAAc;CAgB5B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { INTERACTIVE_MODEL_REFRESH_TIMEOUT_MS } from "../../core/model-refresh-timeout.js";
|
|
1
2
|
export class RemoteModelCatalog {
|
|
2
3
|
constructor(client) {
|
|
3
4
|
this.models = [];
|
|
@@ -42,7 +43,10 @@ export class RemoteModelCatalog {
|
|
|
42
43
|
if (options.signal?.aborted)
|
|
43
44
|
return { aborted: true, errors: new Map() };
|
|
44
45
|
const remoteRefresh = this.client.refreshModels({
|
|
45
|
-
|
|
46
|
+
// AbortSignal cannot cross the RPC boundary. Give the engine the same
|
|
47
|
+
// deadline so an abandoned frontend refresh cannot occupy its command
|
|
48
|
+
// scheduler after the selector has already returned to cached models.
|
|
49
|
+
timeoutMs: options.timeoutMs ?? (options.signal ? INTERACTIVE_MODEL_REFRESH_TIMEOUT_MS : undefined),
|
|
46
50
|
force: options.force,
|
|
47
51
|
allowNetwork: options.allowNetwork,
|
|
48
52
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-model-catalog.js","sourceRoot":"","sources":["../../../src/modes/interactive-engine/remote-model-catalog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"remote-model-catalog.js","sourceRoot":"","sources":["../../../src/modes/interactive-engine/remote-model-catalog.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ModelsRefreshResult } from \"@earendil-works/pi-ai\";\nimport type { Api, Model } from \"@earendil-works/pi-ai/compat\";\nimport type { AgentSession } from \"../../core/agent-session.ts\";\nimport { INTERACTIVE_MODEL_REFRESH_TIMEOUT_MS } from \"../../core/model-refresh-timeout.ts\";\nimport type { RpcClient } from \"../rpc/rpc-client.ts\";\nimport type { RpcModelCatalog } from \"../rpc/rpc-types.ts\";\n\ninterface RemoteModelRefreshOptions {\n\tsignal?: AbortSignal;\n\ttimeoutMs?: number;\n\tforce?: boolean;\n\tallowNetwork?: boolean;\n}\n\nexport class RemoteModelCatalog {\n\tprivate readonly client: RpcClient;\n\tprivate models: Model<Api>[] = [];\n\tprivate scopedModels: Array<{ model: Model<Api>; thinkingLevel?: AgentSession[\"thinkingLevel\"] }> = [];\n\tprivate oauthProviders: NonNullable<RpcModelCatalog[\"oauthProviders\"]> = [];\n\tprivate refreshGeneration = 0;\n\n\tconstructor(client: RpcClient) {\n\t\tthis.client = client;\n\t}\n\n\tapply(catalog: RpcModelCatalog): void {\n\t\tthis.applyModels(catalog);\n\t\tif (catalog.oauthProviders) this.oauthProviders = catalog.oauthProviders;\n\t}\n\n\tapplyModels(catalog: Pick<RpcModelCatalog, \"models\" | \"scopedModels\">): void {\n\t\tthis.models = catalog.models;\n\t\tthis.scopedModels = catalog.scopedModels;\n\t}\n\n\tpatch(session: AgentSession): void {\n\t\tconst runtime = session.modelRuntime;\n\t\tObject.defineProperties(runtime, {\n\t\t\trefresh: { configurable: true, value: (options = {}) => this.refresh(options) },\n\t\t\tgetAvailableSnapshot: { configurable: true, value: () => [...this.models] },\n\t\t\tgetModels: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (provider?: string) =>\n\t\t\t\t\tprovider ? this.models.filter((model) => model.provider === provider) : [...this.models],\n\t\t\t},\n\t\t\tgetModel: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (provider: string, modelId: string) =>\n\t\t\t\t\tthis.models.find((model) => model.provider === provider && model.id === modelId),\n\t\t\t},\n\t\t\thasConfiguredAuth: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: (provider: string) =>\n\t\t\t\t\truntime.getProviderAuthStatus(provider).configured ||\n\t\t\t\t\tthis.models.some((model) => model.provider === provider),\n\t\t\t},\n\t\t\tgetOAuthProviderMetadata: { configurable: true, value: () => [...this.oauthProviders] },\n\t\t});\n\t\tObject.defineProperty(session, \"scopedModels\", { configurable: true, get: () => this.scopedModels });\n\t}\n\n\tprivate async refresh(options: RemoteModelRefreshOptions = {}): Promise<ModelsRefreshResult> {\n\t\tconst generation = ++this.refreshGeneration;\n\t\tif (options.signal?.aborted) return { aborted: true, errors: new Map() };\n\t\tconst remoteRefresh = this.client.refreshModels({\n\t\t\t// AbortSignal cannot cross the RPC boundary. Give the engine the same\n\t\t\t// deadline so an abandoned frontend refresh cannot occupy its command\n\t\t\t// scheduler after the selector has already returned to cached models.\n\t\t\ttimeoutMs: options.timeoutMs ?? (options.signal ? INTERACTIVE_MODEL_REFRESH_TIMEOUT_MS : undefined),\n\t\t\tforce: options.force,\n\t\t\tallowNetwork: options.allowNetwork,\n\t\t});\n\t\tconst result = await this.waitForRefresh(remoteRefresh, options.signal);\n\t\tif (!result || options.signal?.aborted) return { aborted: true, errors: new Map() };\n\t\tif (generation === this.refreshGeneration) this.apply(result);\n\t\treturn {\n\t\t\taborted: result.aborted,\n\t\t\terrors: new Map(result.errors.map(({ provider, message }) => [provider, new Error(message)])),\n\t\t};\n\t}\n\n\tprivate async waitForRefresh(\n\t\tremoteRefresh: ReturnType<RpcClient[\"refreshModels\"]>,\n\t\tsignal: AbortSignal | undefined,\n\t): Promise<Awaited<typeof remoteRefresh> | undefined> {\n\t\tif (!signal) return remoteRefresh;\n\t\tlet abort: (() => void) | undefined;\n\t\tconst aborted = new Promise<undefined>((resolve) => {\n\t\t\tabort = () => resolve(undefined);\n\t\t\tsignal.addEventListener(\"abort\", abort, { once: true });\n\t\t});\n\t\ttry {\n\t\t\treturn await Promise.race([remoteRefresh, aborted]);\n\t\t} finally {\n\t\t\tif (abort) signal.removeEventListener(\"abort\", abort);\n\t\t}\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-queue-pause.js","sourceRoot":"","sources":["../../../src/modes/interactive-engine/remote-queue-pause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAG7C,MAAM,OAAO,gBAAgB;IAK5B,YAAY,MAA0C;QAJ9C,WAAM,GAAG,KAAK,CAAC;QAKtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,WAAW,CAAC,MAAe;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,KAAK;QACJ,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAO,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,aAA0B;QACtC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC/B,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,CAAC,YAAY,CAAC;QAC/C,aAAa,EAAE,EAAE,CAAC;QAClB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAwB,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAClH,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,iBAAiB;QACtB,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;CACD","sourcesContent":["import { sleep } from \"../../utils/sleep.
|
|
1
|
+
{"version":3,"file":"remote-queue-pause.js","sourceRoot":"","sources":["../../../src/modes/interactive-engine/remote-queue-pause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAG7C,MAAM,OAAO,gBAAgB;IAK5B,YAAY,MAA0C;QAJ9C,WAAM,GAAG,KAAK,CAAC;QAKtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,WAAW,CAAC,MAAe;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,KAAK;QACJ,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAO,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,aAA0B;QACtC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC/B,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,CAAC,YAAY,CAAC;QAC/C,aAAa,EAAE,EAAE,CAAC;QAClB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAwB,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAClH,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,iBAAiB;QACtB,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;CACD","sourcesContent":["import { sleep } from \"../../utils/sleep.ts\";\nimport type { RpcClient } from \"../rpc/rpc-client.ts\";\n\nexport class RemoteQueuePause {\n\tprivate paused = false;\n\tprivate pauseRequest: Promise<void> | undefined;\n\tprivate readonly client: Pick<RpcClient, \"requestInternal\">;\n\n\tconstructor(client: Pick<RpcClient, \"requestInternal\">) {\n\t\tthis.client = client;\n\t}\n\n\tget isPaused(): boolean {\n\t\treturn this.paused;\n\t}\n\n\tsynchronize(paused: boolean): void {\n\t\tthis.paused = paused;\n\t\tthis.pauseRequest = undefined;\n\t}\n\n\tpause(): void {\n\t\tif (this.paused) return;\n\t\tthis.paused = true;\n\t\tconst request = this.client.requestInternal<void>({ type: \"pause_queued_messages\" });\n\t\tthis.pauseRequest = request;\n\t\tvoid request.catch(() => {});\n\t}\n\n\tasync resume(beforeRelease?: () => void): Promise<boolean> {\n\t\tif (!this.paused) return false;\n\t\tif (this.pauseRequest) await this.pauseRequest;\n\t\tbeforeRelease?.();\n\t\tconst { released } = await this.client.requestInternal<{ released: boolean }>({ type: \"resume_queued_messages\" });\n\t\tthis.pauseRequest = undefined;\n\t\tthis.paused = false;\n\t\treturn released;\n\t}\n\n\tasync settleBeforeAbort(): Promise<void> {\n\t\tif (this.pauseRequest) await Promise.race([this.pauseRequest, sleep(100)]);\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-command-handler.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-command-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAEhF,OAAO,EAAE,KAAK,kBAAkB,EAAmB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAIN,KAAK,SAAS,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAoC,MAAM,gBAAgB,CAAC;AAEhG,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;AAC1F,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,GAAG;IAAE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAElG,UAAU,wBAAwB;IACjC,WAAW,EAAE,mBAAmB,CAAC;IACjC,UAAU,EAAE,MAAM,YAAY,CAAC;IAC/B,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,iBAAiB,CAAC,EAAE,4BAA4B,CAAC,YAAY,CAAC,CAAC;IAC/D,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,wBAAwB,CAAC,EAAE,2BAA2B,CAAC;CACvD;AAED,wBAAgB,uBAAuB,CAAC,EACvC,WAAW,EACX,UAAU,EACV,aAAa,EACb,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,wBAAwB,GACxB,EAAE,wBAAwB,GAAG,wBAAwB,
|
|
1
|
+
{"version":3,"file":"rpc-command-handler.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-command-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAEhF,OAAO,EAAE,KAAK,kBAAkB,EAAmB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAIN,KAAK,SAAS,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAoC,MAAM,gBAAgB,CAAC;AAEhG,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;AAC1F,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,GAAG;IAAE,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC;AAElG,UAAU,wBAAwB;IACjC,WAAW,EAAE,mBAAmB,CAAC;IACjC,UAAU,EAAE,MAAM,YAAY,CAAC;IAC/B,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,iBAAiB,CAAC,EAAE,4BAA4B,CAAC,YAAY,CAAC,CAAC;IAC/D,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,wBAAwB,CAAC,EAAE,2BAA2B,CAAC;CACvD;AAED,wBAAgB,uBAAuB,CAAC,EACvC,WAAW,EACX,UAAU,EACV,aAAa,EACb,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,wBAAwB,GACxB,EAAE,wBAAwB,GAAG,wBAAwB,CAierD"}
|
|
@@ -75,6 +75,7 @@ export function createRpcCommandHandler({ runtimeHost, getSession, rebindSession
|
|
|
75
75
|
thinkingLevel: session.thinkingLevel,
|
|
76
76
|
isStreaming: session.isStreaming,
|
|
77
77
|
isCompacting: session.isCompacting,
|
|
78
|
+
compactionReason: session.compactionReason,
|
|
78
79
|
steeringMode: session.steeringMode,
|
|
79
80
|
followUpMode: session.followUpMode,
|
|
80
81
|
sessionFile: session.sessionFile,
|
|
@@ -129,15 +130,30 @@ export function createRpcCommandHandler({ runtimeHost, getSession, rebindSession
|
|
|
129
130
|
return createRpcSuccessResponse(id, "logout_provider", result);
|
|
130
131
|
}
|
|
131
132
|
case "refresh_models": {
|
|
132
|
-
await session.modelRuntime.reloadCredentials();
|
|
133
133
|
const controller = command.timeoutMs === undefined ? undefined : new AbortController();
|
|
134
|
-
const
|
|
134
|
+
const timedOut = Symbol("model refresh timed out");
|
|
135
|
+
let timeout;
|
|
136
|
+
const timeoutResult = controller && command.timeoutMs !== undefined
|
|
137
|
+
? new Promise((resolve) => {
|
|
138
|
+
timeout = setTimeout(() => {
|
|
139
|
+
controller.abort();
|
|
140
|
+
resolve(timedOut);
|
|
141
|
+
}, command.timeoutMs);
|
|
142
|
+
})
|
|
143
|
+
: undefined;
|
|
135
144
|
try {
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
145
|
+
const refresh = (async () => {
|
|
146
|
+
await session.modelRuntime.reloadCredentials({ refreshAvailability: false });
|
|
147
|
+
if (controller?.signal.aborted)
|
|
148
|
+
return { aborted: true, errors: new Map() };
|
|
149
|
+
return session.modelRuntime.refresh({
|
|
150
|
+
allowNetwork: command.allowNetwork,
|
|
151
|
+
force: command.force,
|
|
152
|
+
signal: controller?.signal,
|
|
153
|
+
});
|
|
154
|
+
})();
|
|
155
|
+
const outcome = timeoutResult ? await Promise.race([refresh, timeoutResult]) : await refresh;
|
|
156
|
+
const result = outcome === timedOut ? { aborted: true, errors: new Map() } : outcome;
|
|
141
157
|
return createRpcSuccessResponse(id, "refresh_models", {
|
|
142
158
|
aborted: result.aborted,
|
|
143
159
|
errors: [...result.errors].map(([provider, error]) => ({ provider, message: error.message })),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-command-handler.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-command-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import type { KeyId } from \"@earendil-works/pi-tui\";\nimport type { AgentSession } from \"../../core/agent-session.ts\";\nimport type { AgentSessionRuntime } from \"../../core/agent-session-runtime.ts\";\nimport { runCallback } from \"../../core/callback-activity.ts\";\nimport { KeybindingsManager } from \"../../core/keybindings.ts\";\nimport { RpcBashRequestOwners } from \"./rpc-bash-request-owners.ts\";\nimport type { RpcPendingExtensionRequests } from \"./rpc-extension-ui.ts\";\nimport type { KeybindingsReloadCoordinator } from \"./rpc-keybindings-reload.ts\";\nimport { rejectUnsupportedProviderPrompt } from \"./rpc-model-fallback-prompt.ts\";\nimport { type ProviderLoginInput, RpcProviderAuth } from \"./rpc-provider-auth.ts\";\nimport {\n\tcreateRpcErrorResponse,\n\tcreateRpcSuccessResponse,\n\tformatRpcErrorMessage,\n\ttype RpcOutput,\n} from \"./rpc-responses.ts\";\nimport type { RpcCommand, RpcResponse, RpcSessionState, RpcSlashCommand } from \"./rpc-types.ts\";\n\nexport type RpcCommandHandler = (command: RpcCommand) => Promise<RpcResponse | undefined>;\nexport type ManagedRpcCommandHandler = RpcCommandHandler & { disposeActiveBash(): Promise<void> };\n\ninterface RpcCommandHandlerOptions {\n\truntimeHost: AgentSessionRuntime;\n\tgetSession: () => AgentSession;\n\trebindSession: () => Promise<void>;\n\toutput: RpcOutput;\n\tkeybindings?: KeybindingsManager;\n\treloadCoordinator?: KeybindingsReloadCoordinator<AgentSession>;\n\tinputForm?: ProviderLoginInput;\n\tpendingExtensionRequests?: RpcPendingExtensionRequests;\n}\n\nexport function createRpcCommandHandler({\n\truntimeHost,\n\tgetSession,\n\trebindSession,\n\toutput,\n\tkeybindings,\n\treloadCoordinator,\n\tinputForm,\n\tpendingExtensionRequests,\n}: RpcCommandHandlerOptions): ManagedRpcCommandHandler {\n\tlet fallbackShortcutKeybindings: KeybindingsManager | undefined;\n\tconst providerAuth = new RpcProviderAuth(inputForm, {\n\t\toutput,\n\t\tpending: pendingExtensionRequests ?? new Map(),\n\t});\n\tconst bashOwners = new RpcBashRequestOwners(output);\n\tconst getShortcutBindings = () => {\n\t\tif (keybindings) return keybindings.getEffectiveConfig();\n\t\tif (fallbackShortcutKeybindings) fallbackShortcutKeybindings.reload();\n\t\telse fallbackShortcutKeybindings = KeybindingsManager.create(runtimeHost.services.agentDir);\n\t\treturn fallbackShortcutKeybindings.getEffectiveConfig();\n\t};\n\tconst handleCommand = (async (command: RpcCommand): Promise<RpcResponse | undefined> => {\n\t\tconst id = command.id;\n\t\tconst session = getSession();\n\t\tswitch (command.type) {\n\t\t\tcase \"prompt\": {\n\t\t\t\tif (rejectUnsupportedProviderPrompt(runtimeHost, output, id)) return undefined;\n\t\t\t\tlet preflightSucceeded = false;\n\t\t\t\tvoid session\n\t\t\t\t\t.prompt(command.message, {\n\t\t\t\t\t\timages: command.images,\n\t\t\t\t\t\tstreamingBehavior: command.streamingBehavior,\n\t\t\t\t\t\tsource: \"rpc\",\n\t\t\t\t\t\tpreflightResult: (didSucceed) => {\n\t\t\t\t\t\t\tif (didSucceed) {\n\t\t\t\t\t\t\t\tpreflightSucceeded = true;\n\t\t\t\t\t\t\t\toutput(createRpcSuccessResponse(id, \"prompt\"));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t\t.catch((promptError: unknown) => {\n\t\t\t\t\t\tif (!preflightSucceeded) {\n\t\t\t\t\t\t\toutput(createRpcErrorResponse(id, \"prompt\", formatRpcErrorMessage(promptError)));\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tcase \"steer\": {\n\t\t\t\tawait session.steer(command.message, command.images);\n\t\t\t\treturn createRpcSuccessResponse(id, \"steer\");\n\t\t\t}\n\n\t\t\tcase \"follow_up\": {\n\t\t\t\tawait session.followUp(command.message, command.images);\n\t\t\t\treturn createRpcSuccessResponse(id, \"follow_up\");\n\t\t\t}\n\n\t\t\tcase \"abort\": {\n\t\t\t\tawait session.abort();\n\t\t\t\treturn createRpcSuccessResponse(id, \"abort\");\n\t\t\t}\n\t\t\tcase \"new_session\": {\n\t\t\t\tconst options = command.parentSession ? { parentSession: command.parentSession } : undefined;\n\t\t\t\tconst result = await runtimeHost.newSession(options);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"new_session\", result);\n\t\t\t}\n\n\t\t\tcase \"get_state\": {\n\t\t\t\tconst state: RpcSessionState = {\n\t\t\t\t\tmodel: session.model,\n\t\t\t\t\tmodelFallbackMessage: runtimeHost.modelFallbackMessage,\n\t\t\t\t\tmodelFallbackReason: runtimeHost.modelFallbackReason,\n\t\t\t\t\tthinkingLevel: session.thinkingLevel,\n\t\t\t\t\tisStreaming: session.isStreaming,\n\t\t\t\t\tisCompacting: session.isCompacting,\n\t\t\t\t\tsteeringMode: session.steeringMode,\n\t\t\t\t\tfollowUpMode: session.followUpMode,\n\t\t\t\t\tsessionFile: session.sessionFile,\n\t\t\t\t\tsessionId: session.sessionId,\n\t\t\t\t\tsessionName: session.sessionName,\n\t\t\t\t\tautoCompactionEnabled: session.autoCompactionEnabled,\n\t\t\t\t\tmessageCount: session.messages.length,\n\t\t\t\t\tpendingMessageCount: session.pendingMessageCount,\n\t\t\t\t\tqueuedMessagesPaused: session.queuedMessagesPaused,\n\t\t\t\t\tresourceOverlaps: session.resourceLoader.getExtensions().overlaps ?? [],\n\t\t\t\t};\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_state\", state);\n\t\t\t}\n\t\t\tcase \"set_model\": {\n\t\t\t\tconst models = await session.modelRuntime.getAvailableSnapshot();\n\t\t\t\tconst model = models.find(\n\t\t\t\t\t(candidate) => candidate.provider === command.provider && candidate.id === command.modelId,\n\t\t\t\t);\n\t\t\t\tif (!model) {\n\t\t\t\t\treturn createRpcErrorResponse(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t\"set_model\",\n\t\t\t\t\t\t`Model not found: ${command.provider}/${command.modelId}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait session.setModel(model);\n\t\t\t\truntimeHost.resolveModelFallback();\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_model\", session.model ?? model);\n\t\t\t}\n\t\t\tcase \"cycle_model\": {\n\t\t\t\tconst previousModel = session.model;\n\t\t\t\tconst result = await session.cycleModel(command.direction);\n\t\t\t\truntimeHost.resolveModelFallbackAfterExplicitModelSelection(previousModel, result?.model);\n\t\t\t\treturn createRpcSuccessResponse(id, \"cycle_model\", result ?? null);\n\t\t\t}\n\t\t\tcase \"get_available_models\": {\n\t\t\t\tconst models = await session.modelRuntime.getAvailableSnapshot();\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_available_models\", {\n\t\t\t\t\tmodels,\n\t\t\t\t\tscopedModels: session.scopedModels,\n\t\t\t\t\tcustomAuthProviders: [],\n\t\t\t\t\toauthProviders: session.modelRuntime.getOAuthProviderMetadata(),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"login_provider\": {\n\t\t\t\tconst result =\n\t\t\t\t\tcommand.authType === \"oauth\"\n\t\t\t\t\t\t? await providerAuth.loginOAuth(session, command.provider, command.loginId)\n\t\t\t\t\t\t: await providerAuth.login(session, command.provider, command.loginId);\n\t\t\t\treturn createRpcSuccessResponse(id, \"login_provider\", result);\n\t\t\t}\n\n\t\t\tcase \"save_provider_credential\":\n\t\t\t\treturn createRpcSuccessResponse(\n\t\t\t\t\tid,\n\t\t\t\t\t\"save_provider_credential\",\n\t\t\t\t\tawait providerAuth.save(session, command.provider, command.credential),\n\t\t\t\t);\n\n\t\t\tcase \"cancel_login_provider\":\n\t\t\t\tproviderAuth.cancel(command.provider, command.loginId);\n\t\t\t\treturn createRpcSuccessResponse(id, \"cancel_login_provider\");\n\n\t\t\tcase \"logout_provider\": {\n\t\t\t\tconst result = await runtimeHost.logoutProvider(command.provider);\n\t\t\t\treturn createRpcSuccessResponse(id, \"logout_provider\", result);\n\t\t\t}\n\t\t\tcase \"refresh_models\": {\n\t\t\t\tawait session.modelRuntime.reloadCredentials();\n\t\t\t\tconst controller = command.timeoutMs === undefined ? undefined : new AbortController();\n\t\t\t\tconst timeout = controller ? setTimeout(() => controller.abort(), command.timeoutMs) : undefined;\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await session.modelRuntime.refresh({\n\t\t\t\t\t\tallowNetwork: command.allowNetwork,\n\t\t\t\t\t\tforce: command.force,\n\t\t\t\t\t\tsignal: controller?.signal,\n\t\t\t\t\t});\n\t\t\t\t\treturn createRpcSuccessResponse(id, \"refresh_models\", {\n\t\t\t\t\t\taborted: result.aborted,\n\t\t\t\t\t\terrors: [...result.errors].map(([provider, error]) => ({ provider, message: error.message })),\n\t\t\t\t\t\tmodels: session.modelRuntime.getAvailableSnapshot(),\n\t\t\t\t\t\tscopedModels: session.scopedModels,\n\t\t\t\t\t\tcustomAuthProviders: [],\n\t\t\t\t\t\toauthProviders: session.modelRuntime.getOAuthProviderMetadata(),\n\t\t\t\t\t});\n\t\t\t\t} finally {\n\t\t\t\t\tif (timeout) clearTimeout(timeout);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcase \"set_thinking_level\": {\n\t\t\t\tsession.setThinkingLevel(command.level);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_thinking_level\");\n\t\t\t}\n\n\t\t\tcase \"cycle_thinking_level\": {\n\t\t\t\tconst level = session.cycleThinkingLevel();\n\t\t\t\treturn createRpcSuccessResponse(id, \"cycle_thinking_level\", level ? { level } : null);\n\t\t\t}\n\n\t\t\tcase \"get_available_thinking_levels\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_available_thinking_levels\", {\n\t\t\t\t\tlevels: session.getAvailableThinkingLevels(),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"set_steering_mode\": {\n\t\t\t\tsession.setSteeringMode(command.mode);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_steering_mode\");\n\t\t\t}\n\n\t\t\tcase \"set_follow_up_mode\": {\n\t\t\t\tsession.setFollowUpMode(command.mode);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_follow_up_mode\");\n\t\t\t}\n\n\t\t\tcase \"compact\": {\n\t\t\t\tconst result = await session.compact();\n\t\t\t\treturn createRpcSuccessResponse(id, \"compact\", result);\n\t\t\t}\n\n\t\t\tcase \"set_auto_compaction\":\n\t\t\t\tsession.setAutoCompactionEnabled(command.enabled);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_auto_compaction\");\n\t\t\tcase \"abort_compaction\":\n\t\t\t\tsession.abortCompaction();\n\t\t\t\treturn createRpcSuccessResponse(id, \"abort_compaction\");\n\t\t\tcase \"set_auto_retry\":\n\t\t\t\tsession.setAutoRetryEnabled(command.enabled);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_auto_retry\");\n\t\t\tcase \"abort_retry\":\n\t\t\t\tsession.abortRetry();\n\t\t\t\treturn createRpcSuccessResponse(id, \"abort_retry\");\n\n\t\t\tcase \"clear_queue\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"clear_queue\", session.clearQueue());\n\t\t\t}\n\t\t\tcase \"pause_queued_messages\":\n\t\t\t\tsession.pauseQueuedMessages();\n\t\t\t\treturn createRpcSuccessResponse(id, \"pause_queued_messages\");\n\t\t\tcase \"resume_queued_messages\":\n\t\t\t\treturn createRpcSuccessResponse(id, \"resume_queued_messages\", {\n\t\t\t\t\treleased: await session.resumeQueuedMessages(),\n\t\t\t\t});\n\t\t\tcase \"bash\": {\n\t\t\t\tconst result = await bashOwners.run(\n\t\t\t\t\t{\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tsession,\n\t\t\t\t\t\tcommand: command.command,\n\t\t\t\t\t\texcludeFromContext: command.excludeFromContext,\n\t\t\t\t\t\tisCurrent: () => getSession() === session,\n\t\t\t\t\t},\n\t\t\t\t\t// A `bash` command is still a user-initiated shell request, so it must\n\t\t\t\t\t// reach `user_bash` handlers (sandboxes, remote shells) exactly like the\n\t\t\t\t\t// `user_bash` command does. Ownership, streaming correlation, and result\n\t\t\t\t\t// recording stay with the owning request either way.\n\t\t\t\t\tasync (onUpdate) => {\n\t\t\t\t\t\tconst intercepted = await session.extensionRunner.emitUserBash({\n\t\t\t\t\t\t\ttype: \"user_bash\",\n\t\t\t\t\t\t\tcommand: command.command,\n\t\t\t\t\t\t\texcludeFromContext: command.excludeFromContext === true,\n\t\t\t\t\t\t\tcwd: session.sessionManager.getCwd(),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (intercepted?.result) return intercepted.result;\n\t\t\t\t\t\treturn session.executeBash(command.command, onUpdate, {\n\t\t\t\t\t\t\texcludeFromContext: command.excludeFromContext,\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\toperations: intercepted?.operations,\n\t\t\t\t\t\t\temitEvent: false,\n\t\t\t\t\t\t\trecordResult: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, \"bash\", result);\n\t\t\t}\n\t\t\tcase \"user_bash\": {\n\t\t\t\tconst result = await bashOwners.run(\n\t\t\t\t\t{\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tsession,\n\t\t\t\t\t\tcommand: command.command,\n\t\t\t\t\t\texcludeFromContext: command.excludeFromContext,\n\t\t\t\t\t\tisCurrent: () => getSession() === session,\n\t\t\t\t\t},\n\t\t\t\t\tasync (onUpdate) => {\n\t\t\t\t\t\tconst intercepted = await session.extensionRunner.emitUserBash({\n\t\t\t\t\t\t\ttype: \"user_bash\",\n\t\t\t\t\t\t\tcommand: command.command,\n\t\t\t\t\t\t\texcludeFromContext: command.excludeFromContext === true,\n\t\t\t\t\t\t\tcwd: session.sessionManager.getCwd(),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (intercepted?.result) return intercepted.result;\n\t\t\t\t\t\treturn session.executeBash(command.command, onUpdate, {\n\t\t\t\t\t\t\texcludeFromContext: command.excludeFromContext,\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\toperations: intercepted?.operations,\n\t\t\t\t\t\t\temitEvent: false,\n\t\t\t\t\t\t\trecordResult: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, \"user_bash\", result);\n\t\t\t}\n\t\t\tcase \"abort_bash\":\n\t\t\t\tbashOwners.abort(command.requestId);\n\t\t\t\tsession.abortBash(command.requestId);\n\t\t\t\treturn createRpcSuccessResponse(id, \"abort_bash\");\n\n\t\t\tcase \"get_session_stats\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_session_stats\", session.getSessionStats());\n\t\t\t}\n\n\t\t\tcase \"export_html\": {\n\t\t\t\tconst path = await session.exportToHtml(command.outputPath);\n\t\t\t\treturn createRpcSuccessResponse(id, \"export_html\", { path });\n\t\t\t}\n\n\t\t\tcase \"switch_session\": {\n\t\t\t\tconst result = await runtimeHost.switchSession(command.sessionPath);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"switch_session\", result);\n\t\t\t}\n\n\t\t\tcase \"import_session\": {\n\t\t\t\tconst result = await runtimeHost.importFromJsonl(command.inputPath, command.cwdOverride);\n\t\t\t\tif (!result.cancelled) await rebindSession();\n\t\t\t\treturn createRpcSuccessResponse(id, \"import_session\", result);\n\t\t\t}\n\n\t\t\tcase \"fork\": {\n\t\t\t\tconst result = await runtimeHost.fork(command.entryId);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"fork\", { text: result.selectedText, cancelled: result.cancelled });\n\t\t\t}\n\n\t\t\tcase \"clone\": {\n\t\t\t\tconst leafId = session.sessionManager.getLeafId();\n\t\t\t\tif (!leafId) {\n\t\t\t\t\treturn createRpcErrorResponse(id, \"clone\", \"Cannot clone session: no current entry selected\");\n\t\t\t\t}\n\t\t\t\tconst result = await runtimeHost.fork(leafId, { position: \"at\" });\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"clone\", { cancelled: result.cancelled });\n\t\t\t}\n\n\t\t\tcase \"get_fork_messages\": {\n\t\t\t\tconst messages = session.getUserMessagesForForking();\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_fork_messages\", { messages });\n\t\t\t}\n\n\t\t\tcase \"get_entries\": {\n\t\t\t\tconst sessionManager = session.sessionManager;\n\t\t\t\tlet entries = sessionManager.getEntries();\n\t\t\t\tif (command.since !== undefined) {\n\t\t\t\t\tconst sinceIndex = entries.findIndex((e) => e.id === command.since);\n\t\t\t\t\tif (sinceIndex === -1) {\n\t\t\t\t\t\treturn createRpcErrorResponse(id, \"get_entries\", `Entry not found: ${command.since}`);\n\t\t\t\t\t}\n\t\t\t\t\tentries = entries.slice(sinceIndex + 1);\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_entries\", { entries, leafId: sessionManager.getLeafId() });\n\t\t\t}\n\n\t\t\tcase \"get_tree\": {\n\t\t\t\tconst sessionManager = session.sessionManager;\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_tree\", {\n\t\t\t\t\ttree: sessionManager.getTree(),\n\t\t\t\t\tleafId: sessionManager.getLeafId(),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"get_last_assistant_text\": {\n\t\t\t\tconst text = session.getLastAssistantText();\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_last_assistant_text\", { text });\n\t\t\t}\n\n\t\t\tcase \"set_session_name\": {\n\t\t\t\tconst name = command.name.trim();\n\t\t\t\tif (!name) {\n\t\t\t\t\treturn createRpcErrorResponse(id, \"set_session_name\", \"Session name cannot be empty\");\n\t\t\t\t}\n\t\t\t\tsession.setSessionName(name);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_session_name\");\n\t\t\t}\n\n\t\t\tcase \"navigate_tree\": {\n\t\t\t\tconst result = await session.navigateTree(command.targetId, command.options);\n\t\t\t\treturn createRpcSuccessResponse(id, \"navigate_tree\", {\n\t\t\t\t\tcancelled: result.cancelled,\n\t\t\t\t\teditorText: result.editorText,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"set_label\": {\n\t\t\t\tsession.sessionManager.appendLabelChange(command.entryId, command.label);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_label\");\n\t\t\t}\n\n\t\t\tcase \"reload\": {\n\t\t\t\tif (reloadCoordinator) await reloadCoordinator.reload(session);\n\t\t\t\telse await session.reload();\n\t\t\t\treturn createRpcSuccessResponse(id, \"reload\");\n\t\t\t}\n\n\t\t\tcase \"get_shortcuts\": {\n\t\t\t\tconst effectiveBindings = getShortcutBindings();\n\t\t\t\tconst shortcuts = session.extensionRunner.getShortcuts(effectiveBindings);\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_shortcuts\", {\n\t\t\t\t\tshortcuts: [...shortcuts].map(([key, shortcut]) => ({ key, description: shortcut.description })),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"invoke_shortcut\": {\n\t\t\t\tconst shortcut = session.extensionRunner.getShortcuts(getShortcutBindings()).get(command.key as KeyId);\n\t\t\t\tif (!shortcut) return createRpcErrorResponse(id, \"invoke_shortcut\", `Shortcut not found: ${command.key}`);\n\t\t\t\tawait runCallback(\n\t\t\t\t\t{ kind: \"extension.hook\", name: `shortcut:${command.key}`, sourcePath: shortcut.extensionPath },\n\t\t\t\t\t() => shortcut.handler(session.extensionRunner.createContext()),\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, \"invoke_shortcut\");\n\t\t\t}\n\n\t\t\tcase \"get_messages\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_messages\", { messages: session.messages });\n\t\t\t}\n\n\t\t\tcase \"get_command_completions\": {\n\t\t\t\tconst registeredCommand = session.extensionRunner\n\t\t\t\t\t.getRegisteredCommands()\n\t\t\t\t\t.find((candidate) => candidate.invocationName === command.commandName);\n\t\t\t\tconst getArgumentCompletions = registeredCommand?.getArgumentCompletions;\n\t\t\t\tif (registeredCommand === undefined || getArgumentCompletions === undefined) {\n\t\t\t\t\treturn createRpcSuccessResponse(id, \"get_command_completions\", { completions: null });\n\t\t\t\t}\n\t\t\t\tconst completions = await runCallback(\n\t\t\t\t\t{\n\t\t\t\t\t\tkind: \"extension.hook\",\n\t\t\t\t\t\tname: `command-completions:${command.commandName}`,\n\t\t\t\t\t\tsourcePath: registeredCommand.sourceInfo.path,\n\t\t\t\t\t},\n\t\t\t\t\t() => getArgumentCompletions(command.argumentPrefix),\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_command_completions\", { completions });\n\t\t\t}\n\n\t\t\tcase \"get_commands\": {\n\t\t\t\tconst commands: RpcSlashCommand[] = [];\n\n\t\t\t\tfor (const registeredCommand of session.extensionRunner.getRegisteredCommands()) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: registeredCommand.invocationName,\n\t\t\t\t\t\tdescription: registeredCommand.description,\n\t\t\t\t\t\t...(registeredCommand.getArgumentCompletions !== undefined ? { hasArgumentCompletions: true } : {}),\n\t\t\t\t\t\tsource: \"extension\",\n\t\t\t\t\t\tsourceInfo: registeredCommand.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfor (const template of session.promptTemplates) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: template.name,\n\t\t\t\t\t\tdescription: template.description,\n\t\t\t\t\t\tsource: \"prompt\",\n\t\t\t\t\t\tsourceInfo: template.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfor (const skill of session.resourceLoader.getSkills().skills) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: `skill:${skill.name}`,\n\t\t\t\t\t\tdescription: skill.description,\n\t\t\t\t\t\tsource: \"skill\",\n\t\t\t\t\t\tsourceInfo: skill.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_commands\", { commands });\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tconst unknownCommand = command as { type: string };\n\t\t\t\treturn createRpcErrorResponse(id, unknownCommand.type, `Unknown command: ${unknownCommand.type}`);\n\t\t\t}\n\t\t}\n\t}) as ManagedRpcCommandHandler;\n\thandleCommand.disposeActiveBash = () => bashOwners.dispose();\n\treturn handleCommand;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"rpc-command-handler.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-command-handler.ts"],"names":[],"mappings":"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","sourcesContent":["import type { KeyId } from \"@earendil-works/pi-tui\";\nimport type { AgentSession } from \"../../core/agent-session.ts\";\nimport type { AgentSessionRuntime } from \"../../core/agent-session-runtime.ts\";\nimport { runCallback } from \"../../core/callback-activity.ts\";\nimport { KeybindingsManager } from \"../../core/keybindings.ts\";\nimport { RpcBashRequestOwners } from \"./rpc-bash-request-owners.ts\";\nimport type { RpcPendingExtensionRequests } from \"./rpc-extension-ui.ts\";\nimport type { KeybindingsReloadCoordinator } from \"./rpc-keybindings-reload.ts\";\nimport { rejectUnsupportedProviderPrompt } from \"./rpc-model-fallback-prompt.ts\";\nimport { type ProviderLoginInput, RpcProviderAuth } from \"./rpc-provider-auth.ts\";\nimport {\n\tcreateRpcErrorResponse,\n\tcreateRpcSuccessResponse,\n\tformatRpcErrorMessage,\n\ttype RpcOutput,\n} from \"./rpc-responses.ts\";\nimport type { RpcCommand, RpcResponse, RpcSessionState, RpcSlashCommand } from \"./rpc-types.ts\";\n\nexport type RpcCommandHandler = (command: RpcCommand) => Promise<RpcResponse | undefined>;\nexport type ManagedRpcCommandHandler = RpcCommandHandler & { disposeActiveBash(): Promise<void> };\n\ninterface RpcCommandHandlerOptions {\n\truntimeHost: AgentSessionRuntime;\n\tgetSession: () => AgentSession;\n\trebindSession: () => Promise<void>;\n\toutput: RpcOutput;\n\tkeybindings?: KeybindingsManager;\n\treloadCoordinator?: KeybindingsReloadCoordinator<AgentSession>;\n\tinputForm?: ProviderLoginInput;\n\tpendingExtensionRequests?: RpcPendingExtensionRequests;\n}\n\nexport function createRpcCommandHandler({\n\truntimeHost,\n\tgetSession,\n\trebindSession,\n\toutput,\n\tkeybindings,\n\treloadCoordinator,\n\tinputForm,\n\tpendingExtensionRequests,\n}: RpcCommandHandlerOptions): ManagedRpcCommandHandler {\n\tlet fallbackShortcutKeybindings: KeybindingsManager | undefined;\n\tconst providerAuth = new RpcProviderAuth(inputForm, {\n\t\toutput,\n\t\tpending: pendingExtensionRequests ?? new Map(),\n\t});\n\tconst bashOwners = new RpcBashRequestOwners(output);\n\tconst getShortcutBindings = () => {\n\t\tif (keybindings) return keybindings.getEffectiveConfig();\n\t\tif (fallbackShortcutKeybindings) fallbackShortcutKeybindings.reload();\n\t\telse fallbackShortcutKeybindings = KeybindingsManager.create(runtimeHost.services.agentDir);\n\t\treturn fallbackShortcutKeybindings.getEffectiveConfig();\n\t};\n\tconst handleCommand = (async (command: RpcCommand): Promise<RpcResponse | undefined> => {\n\t\tconst id = command.id;\n\t\tconst session = getSession();\n\t\tswitch (command.type) {\n\t\t\tcase \"prompt\": {\n\t\t\t\tif (rejectUnsupportedProviderPrompt(runtimeHost, output, id)) return undefined;\n\t\t\t\tlet preflightSucceeded = false;\n\t\t\t\tvoid session\n\t\t\t\t\t.prompt(command.message, {\n\t\t\t\t\t\timages: command.images,\n\t\t\t\t\t\tstreamingBehavior: command.streamingBehavior,\n\t\t\t\t\t\tsource: \"rpc\",\n\t\t\t\t\t\tpreflightResult: (didSucceed) => {\n\t\t\t\t\t\t\tif (didSucceed) {\n\t\t\t\t\t\t\t\tpreflightSucceeded = true;\n\t\t\t\t\t\t\t\toutput(createRpcSuccessResponse(id, \"prompt\"));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t\t.catch((promptError: unknown) => {\n\t\t\t\t\t\tif (!preflightSucceeded) {\n\t\t\t\t\t\t\toutput(createRpcErrorResponse(id, \"prompt\", formatRpcErrorMessage(promptError)));\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tcase \"steer\": {\n\t\t\t\tawait session.steer(command.message, command.images);\n\t\t\t\treturn createRpcSuccessResponse(id, \"steer\");\n\t\t\t}\n\n\t\t\tcase \"follow_up\": {\n\t\t\t\tawait session.followUp(command.message, command.images);\n\t\t\t\treturn createRpcSuccessResponse(id, \"follow_up\");\n\t\t\t}\n\n\t\t\tcase \"abort\": {\n\t\t\t\tawait session.abort();\n\t\t\t\treturn createRpcSuccessResponse(id, \"abort\");\n\t\t\t}\n\t\t\tcase \"new_session\": {\n\t\t\t\tconst options = command.parentSession ? { parentSession: command.parentSession } : undefined;\n\t\t\t\tconst result = await runtimeHost.newSession(options);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"new_session\", result);\n\t\t\t}\n\n\t\t\tcase \"get_state\": {\n\t\t\t\tconst state: RpcSessionState = {\n\t\t\t\t\tmodel: session.model,\n\t\t\t\t\tmodelFallbackMessage: runtimeHost.modelFallbackMessage,\n\t\t\t\t\tmodelFallbackReason: runtimeHost.modelFallbackReason,\n\t\t\t\t\tthinkingLevel: session.thinkingLevel,\n\t\t\t\t\tisStreaming: session.isStreaming,\n\t\t\t\t\tisCompacting: session.isCompacting,\n\t\t\t\t\tcompactionReason: session.compactionReason,\n\t\t\t\t\tsteeringMode: session.steeringMode,\n\t\t\t\t\tfollowUpMode: session.followUpMode,\n\t\t\t\t\tsessionFile: session.sessionFile,\n\t\t\t\t\tsessionId: session.sessionId,\n\t\t\t\t\tsessionName: session.sessionName,\n\t\t\t\t\tautoCompactionEnabled: session.autoCompactionEnabled,\n\t\t\t\t\tmessageCount: session.messages.length,\n\t\t\t\t\tpendingMessageCount: session.pendingMessageCount,\n\t\t\t\t\tqueuedMessagesPaused: session.queuedMessagesPaused,\n\t\t\t\t\tresourceOverlaps: session.resourceLoader.getExtensions().overlaps ?? [],\n\t\t\t\t};\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_state\", state);\n\t\t\t}\n\t\t\tcase \"set_model\": {\n\t\t\t\tconst models = await session.modelRuntime.getAvailableSnapshot();\n\t\t\t\tconst model = models.find(\n\t\t\t\t\t(candidate) => candidate.provider === command.provider && candidate.id === command.modelId,\n\t\t\t\t);\n\t\t\t\tif (!model) {\n\t\t\t\t\treturn createRpcErrorResponse(\n\t\t\t\t\t\tid,\n\t\t\t\t\t\t\"set_model\",\n\t\t\t\t\t\t`Model not found: ${command.provider}/${command.modelId}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait session.setModel(model);\n\t\t\t\truntimeHost.resolveModelFallback();\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_model\", session.model ?? model);\n\t\t\t}\n\t\t\tcase \"cycle_model\": {\n\t\t\t\tconst previousModel = session.model;\n\t\t\t\tconst result = await session.cycleModel(command.direction);\n\t\t\t\truntimeHost.resolveModelFallbackAfterExplicitModelSelection(previousModel, result?.model);\n\t\t\t\treturn createRpcSuccessResponse(id, \"cycle_model\", result ?? null);\n\t\t\t}\n\t\t\tcase \"get_available_models\": {\n\t\t\t\tconst models = await session.modelRuntime.getAvailableSnapshot();\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_available_models\", {\n\t\t\t\t\tmodels,\n\t\t\t\t\tscopedModels: session.scopedModels,\n\t\t\t\t\tcustomAuthProviders: [],\n\t\t\t\t\toauthProviders: session.modelRuntime.getOAuthProviderMetadata(),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"login_provider\": {\n\t\t\t\tconst result =\n\t\t\t\t\tcommand.authType === \"oauth\"\n\t\t\t\t\t\t? await providerAuth.loginOAuth(session, command.provider, command.loginId)\n\t\t\t\t\t\t: await providerAuth.login(session, command.provider, command.loginId);\n\t\t\t\treturn createRpcSuccessResponse(id, \"login_provider\", result);\n\t\t\t}\n\n\t\t\tcase \"save_provider_credential\":\n\t\t\t\treturn createRpcSuccessResponse(\n\t\t\t\t\tid,\n\t\t\t\t\t\"save_provider_credential\",\n\t\t\t\t\tawait providerAuth.save(session, command.provider, command.credential),\n\t\t\t\t);\n\n\t\t\tcase \"cancel_login_provider\":\n\t\t\t\tproviderAuth.cancel(command.provider, command.loginId);\n\t\t\t\treturn createRpcSuccessResponse(id, \"cancel_login_provider\");\n\n\t\t\tcase \"logout_provider\": {\n\t\t\t\tconst result = await runtimeHost.logoutProvider(command.provider);\n\t\t\t\treturn createRpcSuccessResponse(id, \"logout_provider\", result);\n\t\t\t}\n\t\t\tcase \"refresh_models\": {\n\t\t\t\tconst controller = command.timeoutMs === undefined ? undefined : new AbortController();\n\t\t\t\tconst timedOut = Symbol(\"model refresh timed out\");\n\t\t\t\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\t\t\t\tconst timeoutResult =\n\t\t\t\t\tcontroller && command.timeoutMs !== undefined\n\t\t\t\t\t\t? new Promise<typeof timedOut>((resolve) => {\n\t\t\t\t\t\t\t\ttimeout = setTimeout(() => {\n\t\t\t\t\t\t\t\t\tcontroller.abort();\n\t\t\t\t\t\t\t\t\tresolve(timedOut);\n\t\t\t\t\t\t\t\t}, command.timeoutMs);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t: undefined;\n\t\t\t\ttry {\n\t\t\t\t\tconst refresh = (async () => {\n\t\t\t\t\t\tawait session.modelRuntime.reloadCredentials({ refreshAvailability: false });\n\t\t\t\t\t\tif (controller?.signal.aborted) return { aborted: true, errors: new Map<string, Error>() };\n\t\t\t\t\t\treturn session.modelRuntime.refresh({\n\t\t\t\t\t\t\tallowNetwork: command.allowNetwork,\n\t\t\t\t\t\t\tforce: command.force,\n\t\t\t\t\t\t\tsignal: controller?.signal,\n\t\t\t\t\t\t});\n\t\t\t\t\t})();\n\t\t\t\t\tconst outcome = timeoutResult ? await Promise.race([refresh, timeoutResult]) : await refresh;\n\t\t\t\t\tconst result = outcome === timedOut ? { aborted: true, errors: new Map<string, Error>() } : outcome;\n\t\t\t\t\treturn createRpcSuccessResponse(id, \"refresh_models\", {\n\t\t\t\t\t\taborted: result.aborted,\n\t\t\t\t\t\terrors: [...result.errors].map(([provider, error]) => ({ provider, message: error.message })),\n\t\t\t\t\t\tmodels: session.modelRuntime.getAvailableSnapshot(),\n\t\t\t\t\t\tscopedModels: session.scopedModels,\n\t\t\t\t\t\tcustomAuthProviders: [],\n\t\t\t\t\t\toauthProviders: session.modelRuntime.getOAuthProviderMetadata(),\n\t\t\t\t\t});\n\t\t\t\t} finally {\n\t\t\t\t\tif (timeout) clearTimeout(timeout);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcase \"set_thinking_level\": {\n\t\t\t\tsession.setThinkingLevel(command.level);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_thinking_level\");\n\t\t\t}\n\n\t\t\tcase \"cycle_thinking_level\": {\n\t\t\t\tconst level = session.cycleThinkingLevel();\n\t\t\t\treturn createRpcSuccessResponse(id, \"cycle_thinking_level\", level ? { level } : null);\n\t\t\t}\n\n\t\t\tcase \"get_available_thinking_levels\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_available_thinking_levels\", {\n\t\t\t\t\tlevels: session.getAvailableThinkingLevels(),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"set_steering_mode\": {\n\t\t\t\tsession.setSteeringMode(command.mode);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_steering_mode\");\n\t\t\t}\n\n\t\t\tcase \"set_follow_up_mode\": {\n\t\t\t\tsession.setFollowUpMode(command.mode);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_follow_up_mode\");\n\t\t\t}\n\n\t\t\tcase \"compact\": {\n\t\t\t\tconst result = await session.compact();\n\t\t\t\treturn createRpcSuccessResponse(id, \"compact\", result);\n\t\t\t}\n\n\t\t\tcase \"set_auto_compaction\":\n\t\t\t\tsession.setAutoCompactionEnabled(command.enabled);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_auto_compaction\");\n\t\t\tcase \"abort_compaction\":\n\t\t\t\tsession.abortCompaction();\n\t\t\t\treturn createRpcSuccessResponse(id, \"abort_compaction\");\n\t\t\tcase \"set_auto_retry\":\n\t\t\t\tsession.setAutoRetryEnabled(command.enabled);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_auto_retry\");\n\t\t\tcase \"abort_retry\":\n\t\t\t\tsession.abortRetry();\n\t\t\t\treturn createRpcSuccessResponse(id, \"abort_retry\");\n\n\t\t\tcase \"clear_queue\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"clear_queue\", session.clearQueue());\n\t\t\t}\n\t\t\tcase \"pause_queued_messages\":\n\t\t\t\tsession.pauseQueuedMessages();\n\t\t\t\treturn createRpcSuccessResponse(id, \"pause_queued_messages\");\n\t\t\tcase \"resume_queued_messages\":\n\t\t\t\treturn createRpcSuccessResponse(id, \"resume_queued_messages\", {\n\t\t\t\t\treleased: await session.resumeQueuedMessages(),\n\t\t\t\t});\n\t\t\tcase \"bash\": {\n\t\t\t\tconst result = await bashOwners.run(\n\t\t\t\t\t{\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tsession,\n\t\t\t\t\t\tcommand: command.command,\n\t\t\t\t\t\texcludeFromContext: command.excludeFromContext,\n\t\t\t\t\t\tisCurrent: () => getSession() === session,\n\t\t\t\t\t},\n\t\t\t\t\t// A `bash` command is still a user-initiated shell request, so it must\n\t\t\t\t\t// reach `user_bash` handlers (sandboxes, remote shells) exactly like the\n\t\t\t\t\t// `user_bash` command does. Ownership, streaming correlation, and result\n\t\t\t\t\t// recording stay with the owning request either way.\n\t\t\t\t\tasync (onUpdate) => {\n\t\t\t\t\t\tconst intercepted = await session.extensionRunner.emitUserBash({\n\t\t\t\t\t\t\ttype: \"user_bash\",\n\t\t\t\t\t\t\tcommand: command.command,\n\t\t\t\t\t\t\texcludeFromContext: command.excludeFromContext === true,\n\t\t\t\t\t\t\tcwd: session.sessionManager.getCwd(),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (intercepted?.result) return intercepted.result;\n\t\t\t\t\t\treturn session.executeBash(command.command, onUpdate, {\n\t\t\t\t\t\t\texcludeFromContext: command.excludeFromContext,\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\toperations: intercepted?.operations,\n\t\t\t\t\t\t\temitEvent: false,\n\t\t\t\t\t\t\trecordResult: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, \"bash\", result);\n\t\t\t}\n\t\t\tcase \"user_bash\": {\n\t\t\t\tconst result = await bashOwners.run(\n\t\t\t\t\t{\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tsession,\n\t\t\t\t\t\tcommand: command.command,\n\t\t\t\t\t\texcludeFromContext: command.excludeFromContext,\n\t\t\t\t\t\tisCurrent: () => getSession() === session,\n\t\t\t\t\t},\n\t\t\t\t\tasync (onUpdate) => {\n\t\t\t\t\t\tconst intercepted = await session.extensionRunner.emitUserBash({\n\t\t\t\t\t\t\ttype: \"user_bash\",\n\t\t\t\t\t\t\tcommand: command.command,\n\t\t\t\t\t\t\texcludeFromContext: command.excludeFromContext === true,\n\t\t\t\t\t\t\tcwd: session.sessionManager.getCwd(),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (intercepted?.result) return intercepted.result;\n\t\t\t\t\t\treturn session.executeBash(command.command, onUpdate, {\n\t\t\t\t\t\t\texcludeFromContext: command.excludeFromContext,\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\toperations: intercepted?.operations,\n\t\t\t\t\t\t\temitEvent: false,\n\t\t\t\t\t\t\trecordResult: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, \"user_bash\", result);\n\t\t\t}\n\t\t\tcase \"abort_bash\":\n\t\t\t\tbashOwners.abort(command.requestId);\n\t\t\t\tsession.abortBash(command.requestId);\n\t\t\t\treturn createRpcSuccessResponse(id, \"abort_bash\");\n\n\t\t\tcase \"get_session_stats\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_session_stats\", session.getSessionStats());\n\t\t\t}\n\n\t\t\tcase \"export_html\": {\n\t\t\t\tconst path = await session.exportToHtml(command.outputPath);\n\t\t\t\treturn createRpcSuccessResponse(id, \"export_html\", { path });\n\t\t\t}\n\n\t\t\tcase \"switch_session\": {\n\t\t\t\tconst result = await runtimeHost.switchSession(command.sessionPath);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"switch_session\", result);\n\t\t\t}\n\n\t\t\tcase \"import_session\": {\n\t\t\t\tconst result = await runtimeHost.importFromJsonl(command.inputPath, command.cwdOverride);\n\t\t\t\tif (!result.cancelled) await rebindSession();\n\t\t\t\treturn createRpcSuccessResponse(id, \"import_session\", result);\n\t\t\t}\n\n\t\t\tcase \"fork\": {\n\t\t\t\tconst result = await runtimeHost.fork(command.entryId);\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"fork\", { text: result.selectedText, cancelled: result.cancelled });\n\t\t\t}\n\n\t\t\tcase \"clone\": {\n\t\t\t\tconst leafId = session.sessionManager.getLeafId();\n\t\t\t\tif (!leafId) {\n\t\t\t\t\treturn createRpcErrorResponse(id, \"clone\", \"Cannot clone session: no current entry selected\");\n\t\t\t\t}\n\t\t\t\tconst result = await runtimeHost.fork(leafId, { position: \"at\" });\n\t\t\t\tif (!result.cancelled) {\n\t\t\t\t\tawait rebindSession();\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"clone\", { cancelled: result.cancelled });\n\t\t\t}\n\n\t\t\tcase \"get_fork_messages\": {\n\t\t\t\tconst messages = session.getUserMessagesForForking();\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_fork_messages\", { messages });\n\t\t\t}\n\n\t\t\tcase \"get_entries\": {\n\t\t\t\tconst sessionManager = session.sessionManager;\n\t\t\t\tlet entries = sessionManager.getEntries();\n\t\t\t\tif (command.since !== undefined) {\n\t\t\t\t\tconst sinceIndex = entries.findIndex((e) => e.id === command.since);\n\t\t\t\t\tif (sinceIndex === -1) {\n\t\t\t\t\t\treturn createRpcErrorResponse(id, \"get_entries\", `Entry not found: ${command.since}`);\n\t\t\t\t\t}\n\t\t\t\t\tentries = entries.slice(sinceIndex + 1);\n\t\t\t\t}\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_entries\", { entries, leafId: sessionManager.getLeafId() });\n\t\t\t}\n\n\t\t\tcase \"get_tree\": {\n\t\t\t\tconst sessionManager = session.sessionManager;\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_tree\", {\n\t\t\t\t\ttree: sessionManager.getTree(),\n\t\t\t\t\tleafId: sessionManager.getLeafId(),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"get_last_assistant_text\": {\n\t\t\t\tconst text = session.getLastAssistantText();\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_last_assistant_text\", { text });\n\t\t\t}\n\n\t\t\tcase \"set_session_name\": {\n\t\t\t\tconst name = command.name.trim();\n\t\t\t\tif (!name) {\n\t\t\t\t\treturn createRpcErrorResponse(id, \"set_session_name\", \"Session name cannot be empty\");\n\t\t\t\t}\n\t\t\t\tsession.setSessionName(name);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_session_name\");\n\t\t\t}\n\n\t\t\tcase \"navigate_tree\": {\n\t\t\t\tconst result = await session.navigateTree(command.targetId, command.options);\n\t\t\t\treturn createRpcSuccessResponse(id, \"navigate_tree\", {\n\t\t\t\t\tcancelled: result.cancelled,\n\t\t\t\t\teditorText: result.editorText,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"set_label\": {\n\t\t\t\tsession.sessionManager.appendLabelChange(command.entryId, command.label);\n\t\t\t\treturn createRpcSuccessResponse(id, \"set_label\");\n\t\t\t}\n\n\t\t\tcase \"reload\": {\n\t\t\t\tif (reloadCoordinator) await reloadCoordinator.reload(session);\n\t\t\t\telse await session.reload();\n\t\t\t\treturn createRpcSuccessResponse(id, \"reload\");\n\t\t\t}\n\n\t\t\tcase \"get_shortcuts\": {\n\t\t\t\tconst effectiveBindings = getShortcutBindings();\n\t\t\t\tconst shortcuts = session.extensionRunner.getShortcuts(effectiveBindings);\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_shortcuts\", {\n\t\t\t\t\tshortcuts: [...shortcuts].map(([key, shortcut]) => ({ key, description: shortcut.description })),\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tcase \"invoke_shortcut\": {\n\t\t\t\tconst shortcut = session.extensionRunner.getShortcuts(getShortcutBindings()).get(command.key as KeyId);\n\t\t\t\tif (!shortcut) return createRpcErrorResponse(id, \"invoke_shortcut\", `Shortcut not found: ${command.key}`);\n\t\t\t\tawait runCallback(\n\t\t\t\t\t{ kind: \"extension.hook\", name: `shortcut:${command.key}`, sourcePath: shortcut.extensionPath },\n\t\t\t\t\t() => shortcut.handler(session.extensionRunner.createContext()),\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, \"invoke_shortcut\");\n\t\t\t}\n\n\t\t\tcase \"get_messages\": {\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_messages\", { messages: session.messages });\n\t\t\t}\n\n\t\t\tcase \"get_command_completions\": {\n\t\t\t\tconst registeredCommand = session.extensionRunner\n\t\t\t\t\t.getRegisteredCommands()\n\t\t\t\t\t.find((candidate) => candidate.invocationName === command.commandName);\n\t\t\t\tconst getArgumentCompletions = registeredCommand?.getArgumentCompletions;\n\t\t\t\tif (registeredCommand === undefined || getArgumentCompletions === undefined) {\n\t\t\t\t\treturn createRpcSuccessResponse(id, \"get_command_completions\", { completions: null });\n\t\t\t\t}\n\t\t\t\tconst completions = await runCallback(\n\t\t\t\t\t{\n\t\t\t\t\t\tkind: \"extension.hook\",\n\t\t\t\t\t\tname: `command-completions:${command.commandName}`,\n\t\t\t\t\t\tsourcePath: registeredCommand.sourceInfo.path,\n\t\t\t\t\t},\n\t\t\t\t\t() => getArgumentCompletions(command.argumentPrefix),\n\t\t\t\t);\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_command_completions\", { completions });\n\t\t\t}\n\n\t\t\tcase \"get_commands\": {\n\t\t\t\tconst commands: RpcSlashCommand[] = [];\n\n\t\t\t\tfor (const registeredCommand of session.extensionRunner.getRegisteredCommands()) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: registeredCommand.invocationName,\n\t\t\t\t\t\tdescription: registeredCommand.description,\n\t\t\t\t\t\t...(registeredCommand.getArgumentCompletions !== undefined ? { hasArgumentCompletions: true } : {}),\n\t\t\t\t\t\tsource: \"extension\",\n\t\t\t\t\t\tsourceInfo: registeredCommand.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfor (const template of session.promptTemplates) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: template.name,\n\t\t\t\t\t\tdescription: template.description,\n\t\t\t\t\t\tsource: \"prompt\",\n\t\t\t\t\t\tsourceInfo: template.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tfor (const skill of session.resourceLoader.getSkills().skills) {\n\t\t\t\t\tcommands.push({\n\t\t\t\t\t\tname: `skill:${skill.name}`,\n\t\t\t\t\t\tdescription: skill.description,\n\t\t\t\t\t\tsource: \"skill\",\n\t\t\t\t\t\tsourceInfo: skill.sourceInfo,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn createRpcSuccessResponse(id, \"get_commands\", { commands });\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\tconst unknownCommand = command as { type: string };\n\t\t\t\treturn createRpcErrorResponse(id, unknownCommand.type, `Unknown command: ${unknownCommand.type}`);\n\t\t\t}\n\t\t}\n\t}) as ManagedRpcCommandHandler;\n\thandleCommand.disposeActiveBash = () => bashOwners.dispose();\n\treturn handleCommand;\n}\n"]}
|
|
@@ -7,7 +7,7 @@ const INTERRUPT_COMMANDS = new Set([
|
|
|
7
7
|
"abort_bash",
|
|
8
8
|
"pause_queued_messages",
|
|
9
9
|
]);
|
|
10
|
-
const CONCURRENT_COMMANDS = new Set(["bash", "user_bash"]);
|
|
10
|
+
const CONCURRENT_COMMANDS = new Set(["bash", "user_bash", "refresh_models"]);
|
|
11
11
|
export function isRpcExtensionUIResponse(value) {
|
|
12
12
|
return (typeof value === "object" &&
|
|
13
13
|
value !== null &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-input-scheduler.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-input-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAGlF,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IACvD,OAAO;IACP,uBAAuB;IACvB,kBAAkB;IAClB,aAAa;IACb,YAAY;IACZ,uBAAuB;CACvB,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"rpc-input-scheduler.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-input-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAGlF,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IACvD,OAAO;IACP,uBAAuB;IACvB,kBAAkB;IAClB,aAAa;IACb,YAAY;IACZ,uBAAuB;CACvB,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAElG,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACtD,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,KAAK,CAAC,IAAI,KAAK,uBAAuB;QACtC,IAAI,IAAI,KAAK;QACb,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,CAC5B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAY;IACtD,IAAI,6BAA6B,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,IAAI,KAAoB,CAAC;IACzB,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA8C,CAAC;QAC7E,KAAK,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,wBAAwB,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,OAAO,CACN,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAC3E,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAA2C;IAClF,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,MAAM,MAAM,GAAG,CAAC,IAAY,EAAiB,EAAE;QAC9C,IAAI,CAAC;YACJ,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACF,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,GAAS,EAAE;QACpC,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,cAAc,GAAG,KAAK,CAAC;YACvB,OAAO;QACR,CAAC;QACD,cAAc,GAAG,IAAI,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,CAAC;aACf,OAAO,CAAC,iBAAiB,CAAC;aAC1B,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,CAAC,IAAY,EAAQ,EAAE;QAC7B,IAAI,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAClC,OAAO;QACR,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,cAAc;YAAE,iBAAiB,EAAE,CAAC;IAC1C,CAAC,CAAC;AACH,CAAC","sourcesContent":["import { parseInteractiveEngineCommand } from \"../interactive-engine/protocol.ts\";\nimport type { RpcExtensionUIResponse } from \"./rpc-types.ts\";\n\nconst INTERRUPT_COMMANDS: ReadonlySet<string> = new Set([\n\t\"abort\",\n\t\"cancel_login_provider\",\n\t\"abort_compaction\",\n\t\"abort_retry\",\n\t\"abort_bash\",\n\t\"pause_queued_messages\",\n]);\nconst CONCURRENT_COMMANDS: ReadonlySet<string> = new Set([\"bash\", \"user_bash\", \"refresh_models\"]);\n\nexport function isRpcExtensionUIResponse(value: unknown): value is RpcExtensionUIResponse {\n\treturn (\n\t\ttypeof value === \"object\" &&\n\t\tvalue !== null &&\n\t\t\"type\" in value &&\n\t\tvalue.type === \"extension_ui_response\" &&\n\t\t\"id\" in value &&\n\t\ttypeof value.id === \"string\"\n\t);\n}\n\n/**\n * Control frames must remain reachable while an ordinary RPC command is\n * pending. Interrupts cancel that command, while host responses can unblock UI\n * work awaited by it. Everything else stays on the ordered command lane.\n */\nexport function isConcurrentRpcControlLine(line: string): boolean {\n\tif (parseInteractiveEngineCommand(line)) return true;\n\tlet value: object | null;\n\ttry {\n\t\tconst parsed = JSON.parse(line) as object | boolean | null | number | string;\n\t\tvalue = typeof parsed === \"object\" && !Array.isArray(parsed) ? parsed : null;\n\t} catch {\n\t\treturn false;\n\t}\n\tif (isRpcExtensionUIResponse(value)) return true;\n\treturn (\n\t\tvalue !== null &&\n\t\t\"type\" in value &&\n\t\ttypeof value.type === \"string\" &&\n\t\t(INTERRUPT_COMMANDS.has(value.type) || CONCURRENT_COMMANDS.has(value.type))\n\t);\n}\n\n/**\n * Runs ordinary RPC input one frame at a time while giving validated control\n * frames and independently correlated bash executions a concurrent lane. The\n * first ordinary frame starts synchronously, so a following interrupt cannot\n * overtake initialization of the operation it is intended to cancel.\n */\nexport function createRpcInputScheduler(handleLine: (line: string) => Promise<void>): (line: string) => void {\n\tconst ordinaryQueue: string[] = [];\n\tlet ordinaryActive = false;\n\n\tconst invoke = (line: string): Promise<void> => {\n\t\ttry {\n\t\t\treturn handleLine(line);\n\t\t} catch (error) {\n\t\t\treturn Promise.reject(error);\n\t\t}\n\t};\n\n\tconst startNextOrdinary = (): void => {\n\t\tconst line = ordinaryQueue.shift();\n\t\tif (line === undefined) {\n\t\t\tordinaryActive = false;\n\t\t\treturn;\n\t\t}\n\t\tordinaryActive = true;\n\t\tvoid invoke(line)\n\t\t\t.finally(startNextOrdinary)\n\t\t\t.catch(() => {});\n\t};\n\n\treturn (line: string): void => {\n\t\tif (isConcurrentRpcControlLine(line)) {\n\t\t\tvoid invoke(line).catch(() => {});\n\t\t\treturn;\n\t\t}\n\t\tordinaryQueue.push(line);\n\t\tif (!ordinaryActive) startNextOrdinary();\n\t};\n}\n"]}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import type { AgentMessage, ThinkingLevel } from "@earendil-works/pi-agent-core";
|
|
8
8
|
import type { AuthInfoLink, Credential, OAuthAuthInfo, OAuthDeviceCodeInfo, OAuthPrompt, OAuthSelectPrompt } from "@earendil-works/pi-ai";
|
|
9
9
|
import type { Api, ImageContent, Model } from "@earendil-works/pi-ai/compat";
|
|
10
|
-
import type { AgentSessionEvent, SessionStats } from "../../core/agent-session.ts";
|
|
10
|
+
import type { AgentSessionEvent, CompactionReason, SessionStats } from "../../core/agent-session.ts";
|
|
11
11
|
import type { BashResult } from "../../core/bash-executor.ts";
|
|
12
12
|
import type { VerbatimCompactionResult } from "../../core/compaction/index.ts";
|
|
13
13
|
import type { ResourceOverlap } from "../../core/diagnostics.ts";
|
|
@@ -279,6 +279,7 @@ export interface RpcSessionState {
|
|
|
279
279
|
thinkingLevel: ThinkingLevel;
|
|
280
280
|
isStreaming: boolean;
|
|
281
281
|
isCompacting: boolean;
|
|
282
|
+
compactionReason?: CompactionReason;
|
|
282
283
|
steeringMode: "all" | "one-at-a-time";
|
|
283
284
|
followUpMode: "all" | "one-at-a-time";
|
|
284
285
|
sessionFile?: string;
|