@bastani/atomic 0.9.11-alpha.2 → 0.9.11-alpha.4
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 +42 -0
- package/dist/builtin/cursor/package.json +2 -2
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/CHANGELOG.md +6 -0
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/subagents/src/runs/background/notify.ts +3 -1
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +5 -2
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +2 -1
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +5 -2
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +34 -0
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +20 -0
- package/dist/builtin/workflows/builtin/goal-prompts.ts +8 -3
- package/dist/builtin/workflows/builtin/goal.ts +4 -4
- package/dist/builtin/workflows/builtin/ralph-forked-prompts.ts +1 -1
- package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +3 -1
- package/dist/builtin/workflows/builtin/ralph-runner.ts +2 -0
- package/dist/builtin/workflows/builtin/ralph.ts +4 -4
- package/dist/builtin/workflows/builtin/shared-prompts.ts +16 -0
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/src/authoring/workflow.ts +1 -0
- package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +27 -1
- package/dist/builtin/workflows/src/durable/factory.ts +29 -3
- package/dist/builtin/workflows/src/durable/index.ts +2 -0
- package/dist/builtin/workflows/src/engine/run-durable-admission.ts +50 -0
- package/dist/builtin/workflows/src/engine/run.ts +12 -17
- package/dist/builtin/workflows/src/extension/extension-factory.ts +16 -1
- package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +16 -2
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +71724 -0
- package/dist/builtin/workflows/src/extension/runtime.ts +5 -3
- package/dist/builtin/workflows/src/extension/ui-surface.ts +4 -0
- package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +4 -1
- package/dist/builtin/workflows/src/extension/workflow-prompts.ts +3 -1
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +1 -0
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +1 -0
- package/dist/builtin/workflows/src/shared/types.ts +7 -0
- package/dist/builtin/workflows/src/shared/workflow-authoring-types.d.ts +1 -0
- package/dist/builtin/workflows/src/shared/workflow-authoring-types.ts +1 -0
- package/dist/builtin/workflows/src/tui/host-input-form.ts +1 -1
- package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +6 -8
- package/dist/builtin/workflows/src/tui/stage-chat-view-types.ts +2 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +4 -0
- package/dist/cli/args.d.ts +8 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +18 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.d.ts +4 -2
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +1 -1
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/startup-ui.d.ts +3 -0
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +50 -1
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/config-command-parser.d.ts +9 -0
- package/dist/config-command-parser.d.ts.map +1 -0
- package/dist/config-command-parser.js +22 -0
- package/dist/config-command-parser.js.map +1 -0
- package/dist/config-self-update.d.ts +6 -2
- package/dist/config-self-update.d.ts.map +1 -1
- package/dist/config-self-update.js +17 -10
- package/dist/config-self-update.js.map +1 -1
- package/dist/config.d.ts +3 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -4
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-export.d.ts.map +1 -1
- package/dist/core/agent-session-export.js +32 -25
- package/dist/core/agent-session-export.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +9 -3
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +5 -0
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +2 -0
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +8 -5
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session-tree.d.ts.map +1 -1
- package/dist/core/agent-session-tree.js +3 -1
- package/dist/core/agent-session-tree.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +5 -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/auth-storage.d.ts +6 -2
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +5 -1
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/cache-stats.d.ts +25 -0
- package/dist/core/cache-stats.d.ts.map +1 -0
- package/dist/core/cache-stats.js +68 -0
- package/dist/core/cache-stats.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +2 -1
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +1 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/extensions/agent-events.d.ts +10 -0
- package/dist/core/extensions/agent-events.d.ts.map +1 -1
- package/dist/core/extensions/agent-events.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +8 -2
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/event-types.d.ts +2 -2
- package/dist/core/extensions/event-types.d.ts.map +1 -1
- package/dist/core/extensions/event-types.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +13 -2
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-core.d.ts.map +1 -1
- package/dist/core/extensions/loader-core.js +1 -0
- package/dist/core/extensions/loader-core.js.map +1 -1
- package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
- package/dist/core/extensions/loader-runtime.js +15 -7
- package/dist/core/extensions/loader-runtime.js.map +1 -1
- package/dist/core/extensions/message-types.d.ts +5 -0
- package/dist/core/extensions/message-types.d.ts.map +1 -1
- package/dist/core/extensions/message-types.js.map +1 -1
- package/dist/core/extensions/provider-types.d.ts +46 -0
- package/dist/core/extensions/provider-types.d.ts.map +1 -1
- package/dist/core/extensions/provider-types.js.map +1 -1
- package/dist/core/extensions/runner-registries.d.ts +2 -1
- package/dist/core/extensions/runner-registries.d.ts.map +1 -1
- package/dist/core/extensions/runner-registries.js +8 -0
- package/dist/core/extensions/runner-registries.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +5 -2
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +35 -13
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +8 -2
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/ui-types.d.ts +4 -0
- package/dist/core/extensions/ui-types.d.ts.map +1 -1
- package/dist/core/extensions/ui-types.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts +1 -0
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js +16 -2
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/keybindings.d.ts +6 -1
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +3 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/model-registry-auth.d.ts +2 -0
- package/dist/core/model-registry-auth.d.ts.map +1 -1
- package/dist/core/model-registry-auth.js +18 -1
- package/dist/core/model-registry-auth.js.map +1 -1
- package/dist/core/model-registry-custom-loader.d.ts.map +1 -1
- package/dist/core/model-registry-custom-loader.js +14 -2
- package/dist/core/model-registry-custom-loader.js.map +1 -1
- package/dist/core/model-registry-dynamic.js +2 -2
- package/dist/core/model-registry-dynamic.js.map +1 -1
- package/dist/core/model-registry-loader.d.ts.map +1 -1
- package/dist/core/model-registry-loader.js +2 -1
- package/dist/core/model-registry-loader.js.map +1 -1
- package/dist/core/model-registry-schemas.d.ts +17 -0
- package/dist/core/model-registry-schemas.d.ts.map +1 -1
- package/dist/core/model-registry-schemas.js +2 -0
- package/dist/core/model-registry-schemas.js.map +1 -1
- package/dist/core/model-registry-types.d.ts +10 -1
- package/dist/core/model-registry-types.d.ts.map +1 -1
- package/dist/core/model-registry-types.js.map +1 -1
- package/dist/core/model-registry.d.ts +26 -36
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +72 -67
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver-defaults.d.ts.map +1 -1
- package/dist/core/model-resolver-defaults.js +3 -0
- package/dist/core/model-resolver-defaults.js.map +1 -1
- package/dist/core/model-runtime.d.ts +52 -0
- package/dist/core/model-runtime.d.ts.map +1 -0
- package/dist/core/model-runtime.js +120 -0
- package/dist/core/model-runtime.js.map +1 -0
- package/dist/core/oauth-provider-bridge.d.ts +3 -1
- package/dist/core/oauth-provider-bridge.d.ts.map +1 -1
- package/dist/core/oauth-provider-bridge.js +6 -4
- package/dist/core/oauth-provider-bridge.js.map +1 -1
- package/dist/core/package-manager-resolver.js +22 -11
- package/dist/core/package-manager-resolver.js.map +1 -1
- package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
- package/dist/core/package-manager-resource-collector.js +8 -2
- package/dist/core/package-manager-resource-collector.js.map +1 -1
- package/dist/core/package-manager-resource-patterns.d.ts +1 -0
- package/dist/core/package-manager-resource-patterns.d.ts.map +1 -1
- package/dist/core/package-manager-resource-patterns.js +15 -0
- package/dist/core/package-manager-resource-patterns.js.map +1 -1
- package/dist/core/package-manager-source.d.ts.map +1 -1
- package/dist/core/package-manager-source.js +15 -8
- package/dist/core/package-manager-source.js.map +1 -1
- package/dist/core/package-manager-types.d.ts +1 -0
- package/dist/core/package-manager-types.d.ts.map +1 -1
- package/dist/core/package-manager-types.js.map +1 -1
- package/dist/core/provider-display-names.d.ts.map +1 -1
- package/dist/core/provider-display-names.js +4 -0
- package/dist/core/provider-display-names.js.map +1 -1
- package/dist/core/resource-loader-core.d.ts.map +1 -1
- package/dist/core/resource-loader-core.js.map +1 -1
- package/dist/core/resource-loader-extensions.d.ts.map +1 -1
- package/dist/core/resource-loader-extensions.js +5 -2
- package/dist/core/resource-loader-extensions.js.map +1 -1
- package/dist/core/resource-loader-helpers.d.ts.map +1 -1
- package/dist/core/resource-loader-helpers.js +1 -0
- package/dist/core/resource-loader-helpers.js.map +1 -1
- package/dist/core/resource-loader-internals.d.ts +2 -2
- package/dist/core/resource-loader-internals.d.ts.map +1 -1
- package/dist/core/resource-loader-internals.js.map +1 -1
- package/dist/core/resource-loader-types.d.ts +3 -3
- package/dist/core/resource-loader-types.d.ts.map +1 -1
- package/dist/core/resource-loader-types.js.map +1 -1
- package/dist/core/sdk-exports.d.ts +1 -1
- package/dist/core/sdk-exports.d.ts.map +1 -1
- package/dist/core/sdk-exports.js.map +1 -1
- package/dist/core/sdk-types.d.ts +3 -0
- package/dist/core/sdk-types.d.ts.map +1 -1
- package/dist/core/sdk-types.js.map +1 -1
- package/dist/core/sdk.js +6 -2
- 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 +2 -2
- 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 +5 -0
- package/dist/core/session-manager-history.d.ts.map +1 -1
- package/dist/core/session-manager-history.js +33 -0
- package/dist/core/session-manager-history.js.map +1 -1
- package/dist/core/session-manager-types.d.ts +4 -2
- package/dist/core/session-manager-types.d.ts.map +1 -1
- package/dist/core/session-manager-types.js.map +1 -1
- package/dist/core/session-manager.d.ts +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +1 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +7 -0
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +35 -0
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-manager-resource-accessors.d.ts +3 -0
- package/dist/core/settings-manager-resource-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-resource-accessors.js +16 -0
- package/dist/core/settings-manager-resource-accessors.js.map +1 -1
- package/dist/core/settings-types.d.ts +8 -2
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/slash-commands.d.ts +1 -0
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/usage-totals.d.ts +18 -0
- package/dist/core/usage-totals.d.ts.map +1 -0
- package/dist/core/usage-totals.js +40 -0
- package/dist/core/usage-totals.js.map +1 -0
- package/dist/extensions/index.d.ts +3 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +5 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/llama/client.d.ts +61 -0
- package/dist/extensions/llama/client.d.ts.map +1 -0
- package/dist/extensions/llama/client.js +300 -0
- package/dist/extensions/llama/client.js.map +1 -0
- package/dist/extensions/llama/huggingface-ui.d.ts +33 -0
- package/dist/extensions/llama/huggingface-ui.d.ts.map +1 -0
- package/dist/extensions/llama/huggingface-ui.js +166 -0
- package/dist/extensions/llama/huggingface-ui.js.map +1 -0
- package/dist/extensions/llama/huggingface.d.ts +23 -0
- package/dist/extensions/llama/huggingface.d.ts.map +1 -0
- package/dist/extensions/llama/huggingface.js +139 -0
- package/dist/extensions/llama/huggingface.js.map +1 -0
- package/dist/extensions/llama/index.d.ts +3 -0
- package/dist/extensions/llama/index.d.ts.map +1 -0
- package/dist/extensions/llama/index.js +208 -0
- package/dist/extensions/llama/index.js.map +1 -0
- package/dist/extensions/llama/provider.d.ts +11 -0
- package/dist/extensions/llama/provider.d.ts.map +1 -0
- package/dist/extensions/llama/provider.js +93 -0
- package/dist/extensions/llama/provider.js.map +1 -0
- package/dist/extensions/llama/ui.d.ts +42 -0
- package/dist/extensions/llama/ui.d.ts.map +1 -0
- package/dist/extensions/llama/ui.js +237 -0
- package/dist/extensions/llama/ui.js.map +1 -0
- package/dist/index-extensions.d.ts +1 -1
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index-extensions.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/main-first-time-setup.d.ts +6 -0
- package/dist/main-first-time-setup.d.ts.map +1 -0
- package/dist/main-first-time-setup.js +10 -0
- package/dist/main-first-time-setup.js.map +1 -0
- package/dist/main-types.d.ts +2 -2
- package/dist/main-types.d.ts.map +1 -1
- package/dist/main-types.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +17 -7
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
- package/dist/modes/interactive/chat-input-actions.js +14 -2
- package/dist/modes/interactive/chat-input-actions.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.js +5 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
- package/dist/modes/interactive/components/config-selector-list.d.ts +6 -6
- package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector-list.js +64 -125
- package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
- package/dist/modes/interactive/components/config-selector-project-scope.d.ts +4 -0
- package/dist/modes/interactive/components/config-selector-project-scope.d.ts.map +1 -0
- package/dist/modes/interactive/components/config-selector-project-scope.js +61 -0
- package/dist/modes/interactive/components/config-selector-project-scope.js.map +1 -0
- package/dist/modes/interactive/components/config-selector.d.ts +8 -5
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +46 -22
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/custom-entry.d.ts +16 -0
- package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-entry.js +45 -0
- package/dist/modes/interactive/components/custom-entry.js.map +1 -0
- package/dist/modes/interactive/components/first-time-setup.d.ts +24 -0
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
- package/dist/modes/interactive/components/first-time-setup.js +69 -0
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +7 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +55 -27
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/host-input-form.d.ts +2 -0
- package/dist/modes/interactive/components/host-input-form.d.ts.map +1 -1
- package/dist/modes/interactive/components/host-input-form.js +6 -3
- package/dist/modes/interactive/components/host-input-form.js.map +1 -1
- package/dist/modes/interactive/components/idle-status.d.ts +8 -0
- package/dist/modes/interactive/components/idle-status.d.ts.map +1 -0
- package/dist/modes/interactive/components/idle-status.js +13 -0
- package/dist/modes/interactive/components/idle-status.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +3 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +3 -0
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +5 -5
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +14 -6
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +10 -6
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.js +6 -0
- package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.js +14 -0
- package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts +4 -0
- package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.js +21 -0
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-login.js +17 -8
- package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.d.ts +2 -0
- package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.js +88 -40
- package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js +6 -0
- package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.js +4 -0
- package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-global-clear.d.ts +10 -2
- package/dist/modes/interactive/interactive-global-clear.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-global-clear.js +3 -1
- package/dist/modes/interactive/interactive-global-clear.js.map +1 -1
- package/dist/modes/interactive/interactive-input-handling.js +6 -4
- package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.d.ts +2 -1
- package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.js +6 -10
- package/dist/modes/interactive/interactive-mode-helpers.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +11 -2
- 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-render-chat.js +69 -12
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-resource-rendering.js +1 -1
- package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
- package/dist/modes/interactive/interactive-selectors.js +10 -0
- package/dist/modes/interactive/interactive-selectors.js.map +1 -1
- package/dist/modes/interactive/interactive-session-routing.js +3 -0
- package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.js +14 -0
- package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
- package/dist/modes/interactive/login-provider-options.d.ts +21 -0
- package/dist/modes/interactive/login-provider-options.d.ts.map +1 -0
- package/dist/modes/interactive/login-provider-options.js +51 -0
- package/dist/modes/interactive/login-provider-options.js.map +1 -0
- package/dist/modes/interactive-engine/engine-input-form.d.ts +1 -1
- package/dist/modes/interactive-engine/engine-input-form.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-input-form.js +10 -2
- package/dist/modes/interactive-engine/engine-input-form.js.map +1 -1
- package/dist/modes/interactive-engine/engine-monitor.d.ts +8 -1
- package/dist/modes/interactive-engine/engine-monitor.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-monitor.js +13 -15
- package/dist/modes/interactive-engine/engine-monitor.js.map +1 -1
- package/dist/modes/interactive-engine/input-form-host.d.ts.map +1 -1
- package/dist/modes/interactive-engine/input-form-host.js +7 -2
- package/dist/modes/interactive-engine/input-form-host.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/protocol.d.ts +5 -0
- package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
- package/dist/modes/interactive-engine/protocol.js +9 -1
- package/dist/modes/interactive-engine/protocol.js.map +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.d.ts +2 -0
- package/dist/modes/interactive-engine/remote-model-catalog.d.ts.map +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.js +33 -0
- package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
- package/dist/modes/rpc/rpc-client-api.d.ts +3 -1
- package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-api.js +15 -0
- package/dist/modes/rpc/rpc-client-api.js.map +1 -1
- package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-process.js +3 -0
- package/dist/modes/rpc/rpc-client-process.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +1 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts +5 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +62 -2
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-extension-ui.d.ts +3 -1
- package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-extension-ui.js +7 -2
- package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
- package/dist/modes/rpc/rpc-input-scheduler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-input-scheduler.js +1 -0
- package/dist/modes/rpc/rpc-input-scheduler.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +1 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-session-binding.d.ts +1 -0
- package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-session-binding.js +66 -43
- package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +31 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts +3 -3
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +55 -51
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/rpc-entry.js +6 -2
- package/dist/rpc-entry.js.map +1 -1
- package/dist/self-update-plan.d.ts +12 -0
- package/dist/self-update-plan.d.ts.map +1 -0
- package/dist/self-update-plan.js +42 -0
- package/dist/self-update-plan.js.map +1 -0
- package/dist/utils/clipboard-native.d.ts +1 -0
- package/dist/utils/clipboard-native.d.ts.map +1 -1
- package/dist/utils/clipboard-native.js.map +1 -1
- package/dist/utils/clipboard.d.ts +3 -0
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +10 -0
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/compile-cache.d.ts +8 -0
- package/dist/utils/compile-cache.d.ts.map +1 -0
- package/dist/utils/compile-cache.js +31 -0
- package/dist/utils/compile-cache.js.map +1 -0
- package/dist/utils/version-check.d.ts +1 -0
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +3 -3
- package/dist/utils/version-check.js.map +1 -1
- package/docs/docs.json +2 -1
- package/docs/extensions.md +56 -4
- package/docs/keybindings.md +3 -0
- package/docs/llama-cpp.md +70 -0
- package/docs/models.md +8 -3
- package/docs/packages.md +4 -2
- package/docs/providers.md +37 -3
- package/docs/sdk.md +18 -0
- package/docs/settings.md +19 -3
- package/docs/tui.md +2 -0
- package/docs/usage.md +7 -0
- package/docs/workflows.md +34 -11
- package/npm-shrinkwrap.json +23 -23
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-client-api.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rpc-client-api.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,21 @@ export class RpcClientApi {
|
|
|
18
18
|
async getAvailableModels() {
|
|
19
19
|
return this.data(await this.request({ type: "get_available_models" })).models;
|
|
20
20
|
}
|
|
21
|
+
async loginProvider(provider, signal) {
|
|
22
|
+
if (signal?.aborted)
|
|
23
|
+
return { provider, cancelled: true };
|
|
24
|
+
const cancel = () => { void this.cancelLoginProvider(provider).catch(() => { }); };
|
|
25
|
+
signal?.addEventListener("abort", cancel, { once: true });
|
|
26
|
+
try {
|
|
27
|
+
return this.data(await this.request({ type: "login_provider", provider }));
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
signal?.removeEventListener("abort", cancel);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async cancelLoginProvider(provider) {
|
|
34
|
+
await this.request({ type: "cancel_login_provider", provider });
|
|
35
|
+
}
|
|
21
36
|
async logoutProvider(provider) {
|
|
22
37
|
return this.data(await this.request({ type: "logout_provider", provider }));
|
|
23
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-client-api.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-api.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage, ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { Api, ImageContent, Model } from \"@earendil-works/pi-ai/compat\";\nimport type { SessionStats } from \"../../core/agent-session.ts\";\nimport type { BashResult } from \"../../core/bash-executor.ts\";\nimport type { VerbatimCompactionResult } from \"../../core/compaction/index.ts\";\nimport type { SessionEntry, SessionTreeNode } from \"../../core/session-manager.ts\";\nimport type {\n\tRpcCommand,\n\tRpcAutocompleteItem,\n\tRpcContextWindowInfo,\n\tRpcLogoutProviderResult,\n\tRpcModelRefreshResult,\n\tRpcResponse,\n\tRpcSessionState,\n\tRpcSlashCommand,\n} from \"./rpc-types.ts\";\n\ntype DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;\nexport type RpcCommandBody = DistributiveOmit<RpcCommand, \"id\">;\n\nexport interface ModelInfo {\n\tprovider: string;\n\tid: string;\n\tcontextWindow: number;\n\treasoning: boolean;\n}\n\nexport abstract class RpcClientApi {\n\tprotected abstract request(command: RpcCommandBody): Promise<RpcResponse>;\n\tprotected abstract data<T>(response: RpcResponse): T;\n\n\tasync prompt(message: string, images?: ImageContent[], streamingBehavior?: \"steer\" | \"followUp\"): Promise<void> {\n\t\tawait this.request({ type: \"prompt\", message, images, streamingBehavior });\n\t}\n\tasync steer(message: string, images?: ImageContent[]): Promise<void> { await this.request({ type: \"steer\", message, images }); }\n\tasync followUp(message: string, images?: ImageContent[]): Promise<void> { await this.request({ type: \"follow_up\", message, images }); }\n\tasync abort(): Promise<void> { await this.request({ type: \"abort\" }); }\n\tasync newSession(parentSession?: string): Promise<{ cancelled: boolean }> {\n\t\treturn this.data(await this.request({ type: \"new_session\", parentSession }));\n\t}\n\tasync getState(): Promise<RpcSessionState> { return this.data(await this.request({ type: \"get_state\" })); }\n\tasync setModel(provider: string, modelId: string): Promise<{ provider: string; id: string }> {\n\t\treturn this.data(await this.request({ type: \"set_model\", provider, modelId }));\n\t}\n\tasync cycleModel(direction?: \"forward\" | \"backward\"): Promise<{\n\t\tmodel: Model<Api>; thinkingLevel: ThinkingLevel; isScoped: boolean;\n\t} | null> {\n\t\treturn this.data(await this.request({ type: \"cycle_model\", direction }));\n\t}\n\tasync getAvailableModels(): Promise<ModelInfo[]> {\n\t\treturn this.data<{ models: ModelInfo[] }>(await this.request({ type: \"get_available_models\" })).models;\n\t}\n\tasync logoutProvider(provider: string): Promise<RpcLogoutProviderResult> {\n\t\treturn this.data(await this.request({ type: \"logout_provider\", provider }));\n\t}\n\n\tasync refreshModels(options: { timeoutMs?: number; force?: boolean; allowNetwork?: boolean } = {}): Promise<RpcModelRefreshResult> {\n\t\treturn this.data(await this.request({ type: \"refresh_models\", ...options }));\n\t}\n\tasync setThinkingLevel(level: ThinkingLevel): Promise<void> { await this.request({ type: \"set_thinking_level\", level }); }\n\tasync cycleThinkingLevel(): Promise<{ level: ThinkingLevel } | null> {\n\t\treturn this.data(await this.request({ type: \"cycle_thinking_level\" }));\n\t}\n\tasync getAvailableThinkingLevels(): Promise<ThinkingLevel[]> {\n\t\treturn this.data<{ levels: ThinkingLevel[] }>(\n\t\t\tawait this.request({ type: \"get_available_thinking_levels\" }),\n\t\t).levels;\n\t}\n\tasync setContextWindow(contextWindow: number | string): Promise<void> {\n\t\tthis.data(await this.request({ type: \"set_context_window\", contextWindow }));\n\t}\n\tasync getAvailableContextWindows(): Promise<RpcContextWindowInfo> {\n\t\treturn this.data(await this.request({ type: \"get_available_context_windows\" }));\n\t}\n\tasync setSteeringMode(mode: \"all\" | \"one-at-a-time\"): Promise<void> { await this.request({ type: \"set_steering_mode\", mode }); }\n\tasync setFollowUpMode(mode: \"all\" | \"one-at-a-time\"): Promise<void> { await this.request({ type: \"set_follow_up_mode\", mode }); }\n\tasync compact(): Promise<VerbatimCompactionResult> { return this.data(await this.request({ type: \"compact\" })); }\n\tasync setAutoCompaction(enabled: boolean): Promise<void> { await this.request({ type: \"set_auto_compaction\", enabled }); }\n\tasync setAutoRetry(enabled: boolean): Promise<void> { await this.request({ type: \"set_auto_retry\", enabled }); }\n\tasync abortRetry(): Promise<void> { await this.request({ type: \"abort_retry\" }); }\n\tasync bash(command: string): Promise<BashResult> { return this.data(await this.request({ type: \"bash\", command })); }\n\tasync abortBash(): Promise<void> { await this.request({ type: \"abort_bash\" }); }\n\tasync getSessionStats(): Promise<SessionStats> { return this.data(await this.request({ type: \"get_session_stats\" })); }\n\tasync exportHtml(outputPath?: string): Promise<{ path: string }> { return this.data(await this.request({ type: \"export_html\", outputPath })); }\n\tasync switchSession(sessionPath: string): Promise<{ cancelled: boolean }> {\n\t\treturn this.data(await this.request({ type: \"switch_session\", sessionPath }));\n\t}\n\tasync fork(entryId: string): Promise<{ text: string; cancelled: boolean }> { return this.data(await this.request({ type: \"fork\", entryId })); }\n\tasync clone(): Promise<{ cancelled: boolean }> { return this.data(await this.request({ type: \"clone\" })); }\n\tasync getForkMessages(): Promise<Array<{ entryId: string; text: string }>> {\n\t\treturn this.data<{ messages: Array<{ entryId: string; text: string }> }>(await this.request({ type: \"get_fork_messages\" })).messages;\n\t}\n\tasync getEntries(since?: string): Promise<{ entries: SessionEntry[]; leafId: string | null }> {\n\t\treturn this.data(await this.request({ type: \"get_entries\", since }));\n\t}\n\tasync getTree(): Promise<{ tree: SessionTreeNode[]; leafId: string | null }> { return this.data(await this.request({ type: \"get_tree\" })); }\n\tasync getLastAssistantText(): Promise<string | null> {\n\t\treturn this.data<{ text: string | null }>(await this.request({ type: \"get_last_assistant_text\" })).text;\n\t}\n\tasync setSessionName(name: string): Promise<void> { await this.request({ type: \"set_session_name\", name }); }\n\tasync getMessages(): Promise<AgentMessage[]> {\n\t\treturn this.data<{ messages: AgentMessage[] }>(await this.request({ type: \"get_messages\" })).messages;\n\t}\n\tasync getCommands(): Promise<RpcSlashCommand[]> {\n\t\treturn this.data<{ commands: RpcSlashCommand[] }>(await this.request({ type: \"get_commands\" })).commands;\n\t}\n\tasync getCommandCompletions(commandName: string, argumentPrefix: string): Promise<RpcAutocompleteItem[] | null> {\n\t\treturn this.data<{ completions: RpcAutocompleteItem[] | null }>(\n\t\t\tawait this.request({ type: \"get_command_completions\", commandName, argumentPrefix }),\n\t\t).completions;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"rpc-client-api.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-api.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage, ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { Api, ImageContent, Model } from \"@earendil-works/pi-ai/compat\";\nimport type { SessionStats } from \"../../core/agent-session.ts\";\nimport type { BashResult } from \"../../core/bash-executor.ts\";\nimport type { VerbatimCompactionResult } from \"../../core/compaction/index.ts\";\nimport type { SessionEntry, SessionTreeNode } from \"../../core/session-manager.ts\";\nimport type {\n\tRpcCommand,\n\tRpcAutocompleteItem,\n\tRpcContextWindowInfo,\n\tRpcLoginProviderResult,\n\tRpcLogoutProviderResult,\n\tRpcModelRefreshResult,\n\tRpcResponse,\n\tRpcSessionState,\n\tRpcSlashCommand,\n} from \"./rpc-types.ts\";\n\ntype DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;\nexport type RpcCommandBody = DistributiveOmit<RpcCommand, \"id\">;\n\nexport interface ModelInfo {\n\tprovider: string;\n\tid: string;\n\tcontextWindow: number;\n\treasoning: boolean;\n}\n\nexport abstract class RpcClientApi {\n\tprotected abstract request(command: RpcCommandBody): Promise<RpcResponse>;\n\tprotected abstract data<T>(response: RpcResponse): T;\n\n\tasync prompt(message: string, images?: ImageContent[], streamingBehavior?: \"steer\" | \"followUp\"): Promise<void> {\n\t\tawait this.request({ type: \"prompt\", message, images, streamingBehavior });\n\t}\n\tasync steer(message: string, images?: ImageContent[]): Promise<void> { await this.request({ type: \"steer\", message, images }); }\n\tasync followUp(message: string, images?: ImageContent[]): Promise<void> { await this.request({ type: \"follow_up\", message, images }); }\n\tasync abort(): Promise<void> { await this.request({ type: \"abort\" }); }\n\tasync newSession(parentSession?: string): Promise<{ cancelled: boolean }> {\n\t\treturn this.data(await this.request({ type: \"new_session\", parentSession }));\n\t}\n\tasync getState(): Promise<RpcSessionState> { return this.data(await this.request({ type: \"get_state\" })); }\n\tasync setModel(provider: string, modelId: string): Promise<{ provider: string; id: string }> {\n\t\treturn this.data(await this.request({ type: \"set_model\", provider, modelId }));\n\t}\n\tasync cycleModel(direction?: \"forward\" | \"backward\"): Promise<{\n\t\tmodel: Model<Api>; thinkingLevel: ThinkingLevel; isScoped: boolean;\n\t} | null> {\n\t\treturn this.data(await this.request({ type: \"cycle_model\", direction }));\n\t}\n\tasync getAvailableModels(): Promise<ModelInfo[]> {\n\t\treturn this.data<{ models: ModelInfo[] }>(await this.request({ type: \"get_available_models\" })).models;\n\t}\n\tasync loginProvider(provider: string, signal?: AbortSignal): Promise<RpcLoginProviderResult> {\n\t\tif (signal?.aborted) return { provider, cancelled: true };\n\t\tconst cancel = () => { void this.cancelLoginProvider(provider).catch(() => {}); };\n\t\tsignal?.addEventListener(\"abort\", cancel, { once: true });\n\t\ttry {\n\t\t\treturn this.data(await this.request({ type: \"login_provider\", provider }));\n\t\t} finally {\n\t\t\tsignal?.removeEventListener(\"abort\", cancel);\n\t\t}\n\t}\n\tasync cancelLoginProvider(provider: string): Promise<void> {\n\t\tawait this.request({ type: \"cancel_login_provider\", provider });\n\t}\n\tasync logoutProvider(provider: string): Promise<RpcLogoutProviderResult> {\n\t\treturn this.data(await this.request({ type: \"logout_provider\", provider }));\n\t}\n\n\tasync refreshModels(options: { timeoutMs?: number; force?: boolean; allowNetwork?: boolean } = {}): Promise<RpcModelRefreshResult> {\n\t\treturn this.data(await this.request({ type: \"refresh_models\", ...options }));\n\t}\n\tasync setThinkingLevel(level: ThinkingLevel): Promise<void> { await this.request({ type: \"set_thinking_level\", level }); }\n\tasync cycleThinkingLevel(): Promise<{ level: ThinkingLevel } | null> {\n\t\treturn this.data(await this.request({ type: \"cycle_thinking_level\" }));\n\t}\n\tasync getAvailableThinkingLevels(): Promise<ThinkingLevel[]> {\n\t\treturn this.data<{ levels: ThinkingLevel[] }>(\n\t\t\tawait this.request({ type: \"get_available_thinking_levels\" }),\n\t\t).levels;\n\t}\n\tasync setContextWindow(contextWindow: number | string): Promise<void> {\n\t\tthis.data(await this.request({ type: \"set_context_window\", contextWindow }));\n\t}\n\tasync getAvailableContextWindows(): Promise<RpcContextWindowInfo> {\n\t\treturn this.data(await this.request({ type: \"get_available_context_windows\" }));\n\t}\n\tasync setSteeringMode(mode: \"all\" | \"one-at-a-time\"): Promise<void> { await this.request({ type: \"set_steering_mode\", mode }); }\n\tasync setFollowUpMode(mode: \"all\" | \"one-at-a-time\"): Promise<void> { await this.request({ type: \"set_follow_up_mode\", mode }); }\n\tasync compact(): Promise<VerbatimCompactionResult> { return this.data(await this.request({ type: \"compact\" })); }\n\tasync setAutoCompaction(enabled: boolean): Promise<void> { await this.request({ type: \"set_auto_compaction\", enabled }); }\n\tasync setAutoRetry(enabled: boolean): Promise<void> { await this.request({ type: \"set_auto_retry\", enabled }); }\n\tasync abortRetry(): Promise<void> { await this.request({ type: \"abort_retry\" }); }\n\tasync bash(command: string): Promise<BashResult> { return this.data(await this.request({ type: \"bash\", command })); }\n\tasync abortBash(): Promise<void> { await this.request({ type: \"abort_bash\" }); }\n\tasync getSessionStats(): Promise<SessionStats> { return this.data(await this.request({ type: \"get_session_stats\" })); }\n\tasync exportHtml(outputPath?: string): Promise<{ path: string }> { return this.data(await this.request({ type: \"export_html\", outputPath })); }\n\tasync switchSession(sessionPath: string): Promise<{ cancelled: boolean }> {\n\t\treturn this.data(await this.request({ type: \"switch_session\", sessionPath }));\n\t}\n\tasync fork(entryId: string): Promise<{ text: string; cancelled: boolean }> { return this.data(await this.request({ type: \"fork\", entryId })); }\n\tasync clone(): Promise<{ cancelled: boolean }> { return this.data(await this.request({ type: \"clone\" })); }\n\tasync getForkMessages(): Promise<Array<{ entryId: string; text: string }>> {\n\t\treturn this.data<{ messages: Array<{ entryId: string; text: string }> }>(await this.request({ type: \"get_fork_messages\" })).messages;\n\t}\n\tasync getEntries(since?: string): Promise<{ entries: SessionEntry[]; leafId: string | null }> {\n\t\treturn this.data(await this.request({ type: \"get_entries\", since }));\n\t}\n\tasync getTree(): Promise<{ tree: SessionTreeNode[]; leafId: string | null }> { return this.data(await this.request({ type: \"get_tree\" })); }\n\tasync getLastAssistantText(): Promise<string | null> {\n\t\treturn this.data<{ text: string | null }>(await this.request({ type: \"get_last_assistant_text\" })).text;\n\t}\n\tasync setSessionName(name: string): Promise<void> { await this.request({ type: \"set_session_name\", name }); }\n\tasync getMessages(): Promise<AgentMessage[]> {\n\t\treturn this.data<{ messages: AgentMessage[] }>(await this.request({ type: \"get_messages\" })).messages;\n\t}\n\tasync getCommands(): Promise<RpcSlashCommand[]> {\n\t\treturn this.data<{ commands: RpcSlashCommand[] }>(await this.request({ type: \"get_commands\" })).commands;\n\t}\n\tasync getCommandCompletions(commandName: string, argumentPrefix: string): Promise<RpcAutocompleteItem[] | null> {\n\t\treturn this.data<{ completions: RpcAutocompleteItem[] | null }>(\n\t\t\tawait this.request({ type: \"get_command_completions\", commandName, argumentPrefix }),\n\t\t).completions;\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-client-process.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"rpc-client-process.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAO9D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAG7F,MAAM,WAAW,uBAAuB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;CAC3B;AAID,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,uBAAuB,GAAG,YAAY,CA6BpF;AAED,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBxG;AAED,wBAAgB,6BAA6B,CAC5C,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,CAAC,CAAC,UAAU,EAAE,0BAA0B,KAAK,IAAI,CAAC,GAAG,SAAS,GAC1E;IAAE,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,CAYpF"}
|
|
@@ -2,6 +2,7 @@ import { spawn } from "node:child_process";
|
|
|
2
2
|
import { rm, writeFile } from "node:fs/promises";
|
|
3
3
|
import { tmpdir } from "node:os";
|
|
4
4
|
import { join } from "node:path";
|
|
5
|
+
import { flushPersistentCompileCache } from "../../utils/compile-cache.js";
|
|
5
6
|
import { killProcessTree, trackDetachedChildPid, untrackDetachedChildPid } from "../../utils/shell.js";
|
|
6
7
|
import { sleep } from "../../utils/sleep.js";
|
|
7
8
|
import { INTERACTIVE_ENGINE_MAX_FRAME_BYTES } from "../interactive-engine/protocol.js";
|
|
@@ -10,6 +11,8 @@ export function spawnRpcClientProcess(options) {
|
|
|
10
11
|
const guardianFile = options.interactiveEngine
|
|
11
12
|
? join(tmpdir(), `atomic-engine-guardian-${process.pid}-${crypto.randomUUID()}`)
|
|
12
13
|
: undefined;
|
|
14
|
+
if (options.interactiveEngine)
|
|
15
|
+
flushPersistentCompileCache();
|
|
13
16
|
const child = spawn(options.runtimeExecutable ?? "bun", [...(options.runtimeArgs ?? []), ...(options.cliPath ? [options.cliPath] : []), ...options.cliArgs], {
|
|
14
17
|
cwd: options.cwd,
|
|
15
18
|
env: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-client-process.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-process.ts"],"names":[],"mappings":"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","sourcesContent":["import { spawn, type ChildProcess } from \"node:child_process\";\nimport { rm, writeFile } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { killProcessTree, trackDetachedChildPid, untrackDetachedChildPid } from \"../../utils/shell.ts\";\nimport { sleep } from \"../../utils/sleep.ts\";\nimport type { ActivityWatchdogDiagnostic } from \"../interactive-engine/activity-watchdog.ts\";\nimport { INTERACTIVE_ENGINE_MAX_FRAME_BYTES } from \"../interactive-engine/protocol.ts\";\n\nexport interface RpcClientProcessOptions {\n\tcliPath: string;\n\tcliArgs: string[];\n\tcwd?: string;\n\tenv?: Record<string, string>;\n\truntimeExecutable?: string;\n\truntimeArgs?: string[];\n\tinteractiveEngine: boolean;\n}\n\nconst guardianFiles = new WeakMap<ChildProcess, string>();\n\nexport function spawnRpcClientProcess(options: RpcClientProcessOptions): ChildProcess {\n\tconst guardianFile = options.interactiveEngine\n\t\t? join(tmpdir(), `atomic-engine-guardian-${process.pid}-${crypto.randomUUID()}`)\n\t\t: undefined;\n\tconst child = spawn(\n\t\toptions.runtimeExecutable ?? \"bun\",\n\t\t[...(options.runtimeArgs ?? []), ...(options.cliPath ? [options.cliPath] : []), ...options.cliArgs],\n\t\t{\n\t\t\tcwd: options.cwd,\n\t\t\tenv: {\n\t\t\t\t...process.env,\n\t\t\t\t...options.env,\n\t\t\t\t...(options.interactiveEngine ? {\n\t\t\t\t\tATOMIC_INTERACTIVE_ENGINE_CHILD: \"1\",\n\t\t\t\t\tATOMIC_INTERACTIVE_ENGINE_HOST_PID: String(process.pid),\n\t\t\t\t\tATOMIC_INTERACTIVE_ENGINE_GUARD_FILE: guardianFile!,\n\t\t\t\t} : {}),\n\t\t\t},\n\t\t\tdetached: options.interactiveEngine && process.platform !== \"win32\",\n\t\t\tstdio: [\"pipe\", \"pipe\", \"pipe\"],\n\t\t},\n\t);\n\tif (guardianFile) guardianFiles.set(child, guardianFile);\n\tif (options.interactiveEngine && child.pid) {\n\t\ttrackDetachedChildPid(child.pid);\n\t\tchild.once(\"exit\", () => untrackDetachedChildPid(child.pid!));\n\t}\n\treturn child;\n}\n\nexport async function terminateRpcClientProcess(child: ChildProcess, processTree: boolean): Promise<void> {\n\tif (child.exitCode !== null || child.signalCode !== null) return;\n\tlet resolveExit!: () => void;\n\tconst exited = new Promise<void>((resolve) => { resolveExit = resolve; });\n\tchild.once(\"exit\", resolveExit);\n\tconst guardianFile = guardianFiles.get(child);\n\tchild.kill(\"SIGTERM\");\n\tif (await Promise.race([exited.then(() => true), sleep(250).then(() => false)])) {\n\t\tif (guardianFile) await rm(guardianFile, { force: true });\n\t\treturn;\n\t}\n\tif (processTree && guardianFile) {\n\t\tawait writeFile(guardianFile, \"stop\");\n\t\tif (await Promise.race([exited.then(() => true), sleep(500).then(() => false)])) {\n\t\t\tawait rm(guardianFile, { force: true });\n\t\t\treturn;\n\t\t}\n\t}\n\tif (processTree && child.pid) killProcessTree(child.pid);\n\telse child.kill(\"SIGKILL\");\n\tif (!(await Promise.race([exited.then(() => true), sleep(250).then(() => false)]))) {\n\t\tthrow new Error(`Agent process ${child.pid ?? \"unknown\"} did not exit after SIGKILL`);\n\t}\n\tif (guardianFile) await rm(guardianFile, { force: true });\n}\n\nexport function createInteractiveJsonlOptions(\n\tenabled: boolean,\n\tonDiagnostic: ((diagnostic: ActivityWatchdogDiagnostic) => void) | undefined,\n): { maxBytesPerTurn?: number; maxFrameBytes?: number; onOversizedLine?: () => void } {\n\tif (!enabled) return {};\n\treturn {\n\t\tmaxBytesPerTurn: 256 * 1024,\n\t\tmaxFrameBytes: INTERACTIVE_ENGINE_MAX_FRAME_BYTES,\n\t\tonOversizedLine: () => onDiagnostic?.({\n\t\t\tactivity: undefined,\n\t\t\telapsedMs: 0,\n\t\t\tlevel: \"unresponsive\",\n\t\t\tmessage: \"Interactive engine violated the 1 MiB protocol frame limit; pending requests were cancelled\",\n\t\t}),\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"rpc-client-process.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-process.ts"],"names":[],"mappings":"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","sourcesContent":["import { spawn, type ChildProcess } from \"node:child_process\";\nimport { rm, writeFile } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { flushPersistentCompileCache } from \"../../utils/compile-cache.ts\";\nimport { killProcessTree, trackDetachedChildPid, untrackDetachedChildPid } from \"../../utils/shell.ts\";\nimport { sleep } from \"../../utils/sleep.ts\";\nimport type { ActivityWatchdogDiagnostic } from \"../interactive-engine/activity-watchdog.ts\";\nimport { INTERACTIVE_ENGINE_MAX_FRAME_BYTES } from \"../interactive-engine/protocol.ts\";\n\nexport interface RpcClientProcessOptions {\n\tcliPath: string;\n\tcliArgs: string[];\n\tcwd?: string;\n\tenv?: Record<string, string>;\n\truntimeExecutable?: string;\n\truntimeArgs?: string[];\n\tinteractiveEngine: boolean;\n}\n\nconst guardianFiles = new WeakMap<ChildProcess, string>();\n\nexport function spawnRpcClientProcess(options: RpcClientProcessOptions): ChildProcess {\n\tconst guardianFile = options.interactiveEngine\n\t\t? join(tmpdir(), `atomic-engine-guardian-${process.pid}-${crypto.randomUUID()}`)\n\t\t: undefined;\n\tif (options.interactiveEngine) flushPersistentCompileCache();\n\tconst child = spawn(\n\t\toptions.runtimeExecutable ?? \"bun\",\n\t\t[...(options.runtimeArgs ?? []), ...(options.cliPath ? [options.cliPath] : []), ...options.cliArgs],\n\t\t{\n\t\t\tcwd: options.cwd,\n\t\t\tenv: {\n\t\t\t\t...process.env,\n\t\t\t\t...options.env,\n\t\t\t\t...(options.interactiveEngine ? {\n\t\t\t\t\tATOMIC_INTERACTIVE_ENGINE_CHILD: \"1\",\n\t\t\t\t\tATOMIC_INTERACTIVE_ENGINE_HOST_PID: String(process.pid),\n\t\t\t\t\tATOMIC_INTERACTIVE_ENGINE_GUARD_FILE: guardianFile!,\n\t\t\t\t} : {}),\n\t\t\t},\n\t\t\tdetached: options.interactiveEngine && process.platform !== \"win32\",\n\t\t\tstdio: [\"pipe\", \"pipe\", \"pipe\"],\n\t\t},\n\t);\n\tif (guardianFile) guardianFiles.set(child, guardianFile);\n\tif (options.interactiveEngine && child.pid) {\n\t\ttrackDetachedChildPid(child.pid);\n\t\tchild.once(\"exit\", () => untrackDetachedChildPid(child.pid!));\n\t}\n\treturn child;\n}\n\nexport async function terminateRpcClientProcess(child: ChildProcess, processTree: boolean): Promise<void> {\n\tif (child.exitCode !== null || child.signalCode !== null) return;\n\tlet resolveExit!: () => void;\n\tconst exited = new Promise<void>((resolve) => { resolveExit = resolve; });\n\tchild.once(\"exit\", resolveExit);\n\tconst guardianFile = guardianFiles.get(child);\n\tchild.kill(\"SIGTERM\");\n\tif (await Promise.race([exited.then(() => true), sleep(250).then(() => false)])) {\n\t\tif (guardianFile) await rm(guardianFile, { force: true });\n\t\treturn;\n\t}\n\tif (processTree && guardianFile) {\n\t\tawait writeFile(guardianFile, \"stop\");\n\t\tif (await Promise.race([exited.then(() => true), sleep(500).then(() => false)])) {\n\t\t\tawait rm(guardianFile, { force: true });\n\t\t\treturn;\n\t\t}\n\t}\n\tif (processTree && child.pid) killProcessTree(child.pid);\n\telse child.kill(\"SIGKILL\");\n\tif (!(await Promise.race([exited.then(() => true), sleep(250).then(() => false)]))) {\n\t\tthrow new Error(`Agent process ${child.pid ?? \"unknown\"} did not exit after SIGKILL`);\n\t}\n\tif (guardianFile) await rm(guardianFile, { force: true });\n}\n\nexport function createInteractiveJsonlOptions(\n\tenabled: boolean,\n\tonDiagnostic: ((diagnostic: ActivityWatchdogDiagnostic) => void) | undefined,\n): { maxBytesPerTurn?: number; maxFrameBytes?: number; onOversizedLine?: () => void } {\n\tif (!enabled) return {};\n\treturn {\n\t\tmaxBytesPerTurn: 256 * 1024,\n\t\tmaxFrameBytes: INTERACTIVE_ENGINE_MAX_FRAME_BYTES,\n\t\tonOversizedLine: () => onDiagnostic?.({\n\t\t\tactivity: undefined,\n\t\t\telapsedMs: 0,\n\t\t\tlevel: \"unresponsive\",\n\t\t\tmessage: \"Interactive engine violated the 1 MiB protocol frame limit; pending requests were cancelled\",\n\t\t}),\n\t};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-client.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAGjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAE7F,OAAO,EAAuE,KAAK,qBAAqB,EAAE,KAAK,wBAAwB,EAAE,KAAK,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAGlN,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGxE,OAAO,KAAK,EAAc,qBAAqB,EAAE,sBAAsB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACvH,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrE,YAAY,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAerE,MAAM,WAAW,gBAAgB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE;QACnB,YAAY,EAAE,CAAC,UAAU,EAAE,0BAA0B,KAAK,IAAI,CAAC;QAC/D,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;KAC7C,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"rpc-client.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-client.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport type { ChildProcess } from \"node:child_process\";\nimport type { ImageContent } from \"@earendil-works/pi-ai/compat\";\nimport { BoundedWriter } from \"./bounded-writer.ts\";\nimport { attachJsonlLineReader, serializeJsonLine } from \"./jsonl.ts\";\nimport type { ActivityWatchdogDiagnostic } from \"../interactive-engine/activity-watchdog.ts\";\nimport { InteractiveEngineMonitor } from \"../interactive-engine/engine-monitor.ts\";\nimport { INTERACTIVE_ENGINE_MAX_FRAME_BYTES, serializeInteractiveEngineFrame, type EngineKeybindingState, type InteractiveEngineCommand, type InteractiveEngineMessage } from \"../interactive-engine/protocol.ts\";\nimport { sleep } from \"../../utils/sleep.ts\";\nimport { createInteractiveJsonlOptions, spawnRpcClientProcess, terminateRpcClientProcess } from \"./rpc-client-process.ts\";\nimport { RpcClientApi, type RpcCommandBody } from \"./rpc-client-api.ts\";\nimport { RpcEventBuffer } from \"./rpc-event-buffer.ts\";\nimport { collectRpcEvents, waitForRpcIdle } from \"./rpc-client-waits.ts\";\nimport type { RpcCommand, RpcExtensionUIRequest, RpcExtensionUIResponse, RpcEvent, RpcResponse } from \"./rpc-types.ts\";\nexport type { ModelInfo, RpcCommandBody } from \"./rpc-client-api.ts\";\nexport type { RpcContextWindowInfo, RpcEvent } from \"./rpc-types.ts\";\n\n\nfunction restartArgs(args: readonly string[] | undefined, sessionFile: string | undefined): string[] {\n\tconst result: string[] = [];\n\tfor (let index = 0; index < (args?.length ?? 0); index += 1) {\n\t\tconst value = args![index]!;\n\t\tif (value === \"--no-session\") continue;\n\t\tif (value === \"--session\") { index += 1; continue; }\n\t\tresult.push(value);\n\t}\n\tresult.push(sessionFile ? \"--session\" : \"--no-session\");\n\tif (sessionFile) result.push(sessionFile);\n\treturn result;\n}\nexport interface RpcClientOptions {\n\tcliPath?: string;\n\tcwd?: string;\n\tenv?: Record<string, string>;\n\tprovider?: string;\n\tmodel?: string;\n\tcontextWindow?: number | string;\n\targs?: string[];\n\truntimeExecutable?: string;\n\truntimeArgs?: string[];\n\t/**\n\t * Bounded deadline (ms) applied to short metadata/control requests. Long-lived\n\t * commands (see LONG_LIVED_COMMANDS) never use this timer. Defaults to 30s.\n\t */\n\trequestTimeoutMs?: number;\n\tinteractiveEngine?: {\n\t\tonDiagnostic: (diagnostic: ActivityWatchdogDiagnostic) => void;\n\t\tonActivityChange?: (active: boolean) => void;\n\t};\n}\n\n/**\n * Commands whose response is legitimately gated on human/agent interaction or a\n * turn boundary and therefore must not be subject to the generic request\n * timeout: interactive prompts and custom-UI pickers (routed through `prompt`),\n * queued turn-boundary sends (`steer`/`follow_up`), long-running shell and\n * compaction work, and session-tree navigation/mutation that can open pickers.\n *\n * Failure detection is unaffected: engine exit, transport violations, aborts,\n * generation replacement, and explicit stop all reject pending requests via\n * rejectPendingRequests/failTransport independently of any timer.\n */\nconst LONG_LIVED_COMMANDS: ReadonlySet<string> = new Set<string>([\n\t\"prompt\",\n\t\"steer\",\n\t\"follow_up\",\n\t\"bash\",\n\t\"user_bash\",\n\t\"compact\",\n\t\"fork\",\n\t\"clone\",\n\t\"switch_session\",\n\t\"new_session\",\n\t\"import_session\",\n\t\"navigate_tree\",\n\t\"invoke_shortcut\",\n]);\n\nconst DEFAULT_REQUEST_TIMEOUT_MS = 30_000;\n\n\nexport type RpcEventListener = (event: RpcEvent) => void;\n\n\nexport class RpcClient extends RpcClientApi {\n\tprivate process: ChildProcess | null = null;\n\tprivate stopReadingStdout: (() => void) | null = null;\n\tprivate eventListeners: RpcEventListener[] = [];\n\tprivate extensionUIListeners: Array<(request: RpcExtensionUIRequest) => void> = [];\n\tprivate pendingExtensionUIRequests: RpcExtensionUIRequest[] = [];\n\tprivate engineMessageListeners: Array<(message: InteractiveEngineMessage) => void> = [];\n\tprivate latestEngineKeybindingState: EngineKeybindingState | undefined;\n\tprivate pendingEngineMessages: InteractiveEngineMessage[] = [];\n\tprivate pendingEngineMessageBytes = 0;\n\tprivate pendingRequests: Map<string, { resolve: (response: RpcResponse) => void; reject: (error: Error) => void }> =\n\t\tnew Map();\n\tprivate requestId = 0;\n\tprivate stderr = \"\";\n\tprivate exitError: Error | null = null;\n\tprivate engineMonitor: InteractiveEngineMonitor | undefined;\n\tprivate eventBuffer: RpcEventBuffer | undefined;\n\tprivate stdinWriter: BoundedWriter | undefined;\n\tprivate generation = 0;\n\tprivate readonly activeActivityIds = new Set<string>();\n\tprivate enginePid: number | undefined;\n\n\tdeclare private options: RpcClientOptions;\n\n\tconstructor(options: RpcClientOptions = {}) {\n\t\tsuper();\n\t\tthis.options = options;\n\t}\n\n\tasync start(): Promise<void> {\n\t\tif (this.process) {\n\t\t\tthrow new Error(\"Client already started\");\n\t\t}\n\n\t\tconst cliPath = this.options.cliPath ?? \"dist/cli.js\";\n\t\tconst args = [\"--mode\", \"rpc\"];\n\n\t\tif (this.options.provider) {\n\t\t\targs.push(\"--provider\", this.options.provider);\n\t\t}\n\t\tif (this.options.model) {\n\t\t\targs.push(\"--model\", this.options.model);\n\t\t}\n\t\tif (this.options.contextWindow !== undefined) {\n\t\t\targs.push(\"--context-window\", String(this.options.contextWindow));\n\t\t}\n\t\tif (this.options.args) {\n\t\t\targs.push(...this.options.args);\n\t\t}\n\n\t\tconst generation = ++this.generation;\n\t\tthis.exitError = null;\n\t\tthis.stderr = \"\";\n\t\tthis.activeActivityIds.clear();\n\t\tthis.enginePid = undefined;\n\t\tthis.engineMonitor = this.options.interactiveEngine\n\t\t\t? new InteractiveEngineMonitor(\n\t\t\t\t\tthis.options.interactiveEngine.onDiagnostic,\n\t\t\t\t\t(message) => this.observeInteractiveEngineMessage(message),\n\t\t\t\t)\n\t\t\t: undefined;\n\t\tthis.eventBuffer = this.engineMonitor ? new RpcEventBuffer((event) => this.emitEvent(event)) : undefined;\n\t\tconst childProcess = spawnRpcClientProcess({\n\t\t\tcliPath,\n\t\t\tcliArgs: args,\n\t\t\tcwd: this.options.cwd,\n\t\t\tenv: this.options.env,\n\t\t\truntimeExecutable: this.options.runtimeExecutable,\n\t\t\truntimeArgs: this.options.runtimeArgs,\n\t\t\tinteractiveEngine: this.engineMonitor !== undefined,\n\t\t});\n\t\tthis.process = childProcess;\n\t\tthis.stdinWriter = new BoundedWriter(childProcess.stdin!, {\n\t\t\tmaxFrameBytes: INTERACTIVE_ENGINE_MAX_FRAME_BYTES,\n\t\t\tmaxQueuedBytes: 2 * INTERACTIVE_ENGINE_MAX_FRAME_BYTES,\n\t\t});\n\n\t\tchildProcess.once(\"exit\", (code, signal) => {\n\t\t\tif (generation !== this.generation) return;\n\t\t\tconst error = this.createProcessExitError(code, signal);\n\t\t\tthis.exitError = error;\n\t\t\tthis.stdinWriter?.close(error);\n\t\t\tthis.engineMonitor?.fail(error);\n\t\t\tthis.activeActivityIds.clear();\n\t\t\tthis.options.interactiveEngine?.onActivityChange?.(false);\n\t\t\tthis.rejectPendingRequests(error);\n\t\t});\n\t\tchildProcess.once(\"error\", (error) => {\n\t\t\tif (generation !== this.generation) return;\n\t\t\tthis.exitError = error;\n\t\t\tthis.stdinWriter?.close(error);\n\t\t\tthis.engineMonitor?.fail(error);\n\t\t\tthis.rejectPendingRequests(error);\n\t\t});\n\t\tchildProcess.stdin?.on(\"error\", (error) => {\n\t\t\tif (generation !== this.generation) return;\n\t\t\tthis.exitError = error;\n\t\t\tthis.stdinWriter?.close(error);\n\t\t\tthis.engineMonitor?.fail(error);\n\t\t\tthis.rejectPendingRequests(error);\n\t\t});\n\t\tchildProcess.stderr?.on(\"data\", (data) => {\n\t\t\tif (generation !== this.generation) return;\n\t\t\tconst next = this.stderr + data.toString();\n\t\t\tthis.stderr = Buffer.byteLength(next, \"utf8\") <= 256 * 1024\n\t\t\t\t? next\n\t\t\t\t: `${Buffer.from(next).subarray(-256 * 1024).toString(\"utf8\")}\\n[stderr truncated]`;\n\t\t\tprocess.stderr.write(data);\n\t\t});\n\t\tconst readerOptions = createInteractiveJsonlOptions(\n\t\t\tthis.engineMonitor !== undefined,\n\t\t\tthis.options.interactiveEngine?.onDiagnostic,\n\t\t);\n\t\tthis.stopReadingStdout = attachJsonlLineReader(childProcess.stdout!, (line) => {\n\t\t\tif (generation === this.generation) this.handleLine(line);\n\t\t}, {\n\t\t\t...readerOptions,\n\t\t\tonOversizedLine: () => {\n\t\t\t\treaderOptions.onOversizedLine?.();\n\t\t\t\tif (generation === this.generation) this.failTransport(new Error(\"Interactive engine emitted an oversized RPC frame\"));\n\t\t\t},\n\t\t});\n\t\tif (this.engineMonitor) await this.engineMonitor.waitUntilReady();\n\t\telse await sleep(100);\n\n\t\tif (generation !== this.generation || this.process?.exitCode !== null) {\n\t\t\tthrow new Error(`Agent process exited immediately. Stderr: ${this.stderr}`);\n\t\t}\n\t}\n\n\tasync stop(): Promise<void> {\n\t\tconst child = this.process;\n\t\tif (!child) return;\n\t\tthis.invalidateEngineShortcuts();\n\t\tconst terminateTree = this.engineMonitor !== undefined;\n\t\tthis.stopReadingStdout?.();\n\t\tthis.engineMonitor?.stop();\n\t\tthis.stdinWriter?.close(new Error(\"Agent process stopped\"));\n\t\tthis.engineMonitor = undefined;\n\t\tthis.stopReadingStdout = null;\n\t\tthis.stdinWriter = undefined;\n\t\tthis.process = null;\n\t\tthis.generation += 1;\n\t\tawait terminateRpcClientProcess(child, terminateTree);\n\t\tthis.rejectPendingRequests(new Error(\"Agent process stopped\"));\n\t\tthis.eventBuffer?.dispose();\n\t\tthis.eventBuffer = undefined;\n\t\tthis.activeActivityIds.clear();\n\t\tthis.options.interactiveEngine?.onActivityChange?.(false);\n\t}\n\n\t/** Subscribe to agent events. */\n\tonEvent(listener: RpcEventListener): () => void {\n\t\tthis.eventListeners.push(listener);\n\t\treturn () => {\n\t\t\tconst index = this.eventListeners.indexOf(listener);\n\t\t\tif (index !== -1) {\n\t\t\t\tthis.eventListeners.splice(index, 1);\n\t\t\t}\n\t\t};\n\t}\n\n\tonExtensionUIRequest(listener: (request: RpcExtensionUIRequest) => void): () => void {\n\t\tthis.extensionUIListeners.push(listener);\n\t\tfor (const request of this.pendingExtensionUIRequests.splice(0)) listener(request);\n\t\treturn () => {\n\t\t\tconst index = this.extensionUIListeners.indexOf(listener);\n\t\t\tif (index !== -1) this.extensionUIListeners.splice(index, 1);\n\t\t};\n\t}\n\n\tasync respondExtensionUI(response: RpcExtensionUIResponse): Promise<void> {\n\t\tawait this.requireWriter().write(serializeJsonLine(response));\n\t}\n\n\tonInteractiveEngineMessage(listener: (message: InteractiveEngineMessage) => void): () => void {\n\t\tthis.engineMessageListeners.push(listener);\n\t\tfor (const message of this.pendingEngineMessages.splice(0)) listener(message);\n\t\tthis.pendingEngineMessageBytes = 0;\n\t\treturn () => {\n\t\t\tconst index = this.engineMessageListeners.indexOf(listener);\n\t\t\tif (index !== -1) this.engineMessageListeners.splice(index, 1);\n\t\t};\n\t}\n\n\tonInteractiveEngineKeybindingState(listener: (state: EngineKeybindingState) => void): () => void {\n\t\tconst messageListener = (message: InteractiveEngineMessage): void => {\n\t\t\tif (message.type === \"engine_keybindings_reloaded\") listener(message.state);\n\t\t};\n\t\tthis.engineMessageListeners.push(messageListener);\n\t\tif (this.latestEngineKeybindingState) listener(this.latestEngineKeybindingState);\n\t\treturn () => {\n\t\t\tconst index = this.engineMessageListeners.indexOf(messageListener);\n\t\t\tif (index !== -1) this.engineMessageListeners.splice(index, 1);\n\t\t};\n\t}\n\n\tsendInteractiveEngineCommand(command: InteractiveEngineCommand): void {\n\t\tconst writer = this.stdinWriter;\n\t\tif (!writer) return;\n\t\tconst frame = serializeInteractiveEngineFrame(command);\n\t\tif (command.type === \"engine_custom_render\" || command.type === \"engine_tool_render\" || command.type === \"engine_message_render\") {\n\t\t\twriter.offerLatest(`render:${command.componentId}`, frame);\n\t\t\treturn;\n\t\t}\n\t\tthis.bestEffort(writer.write(frame), `engine command ${command.type}`);\n\t}\n\twaitForInteractiveEngineBound(): Promise<void> { return this.engineMonitor?.waitUntilBound() ?? Promise.resolve(); }\n\tgetEnginePid(): number | undefined { return this.enginePid; }\n\tgetGeneration(): number { return this.generation; }\n\n\tasync restart(sessionFile: string | undefined): Promise<void> {\n\t\tawait this.stop();\n\t\tthis.options = { ...this.options, args: restartArgs(this.options.args, sessionFile) };\n\t\tawait this.start();\n\t\tawait this.waitForInteractiveEngineBound();\n\t}\n\n\tasync requestInternal<T>(command: RpcCommandBody): Promise<T> {\n\t\treturn this.data<T>(await this.request(command));\n\t}\n\tgetStderr(): string {\n\t\treturn this.stderr;\n\t}\n\n\n\twaitForIdle(timeout = 60000): Promise<void> {\n\t\treturn waitForRpcIdle(this, timeout);\n\t}\n\tcollectEvents(timeout = 60000): Promise<RpcEvent[]> {\n\t\treturn collectRpcEvents(this, timeout);\n\t}\n\tasync promptAndWait(message: string, images?: ImageContent[], timeout = 60000): Promise<RpcEvent[]> {\n\t\tconst eventsPromise = this.collectEvents(timeout);\n\t\tawait this.prompt(message, images);\n\t\treturn eventsPromise;\n\t}\n\tprivate handleLine(line: string): void {\n\t\tif (this.engineMonitor?.handleLine(line)) return;\n\t\ttry {\n\t\t\tconst data = JSON.parse(line) as { type?: string; id?: string };\n\t\t\tif (data.type === \"extension_ui_request\") {\n\t\t\t\tconst request = data as RpcExtensionUIRequest;\n\t\t\t\tif (this.extensionUIListeners.length === 0) this.pendingExtensionUIRequests.push(request);\n\t\t\t\tfor (const listener of this.extensionUIListeners) listener(request);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (data.type === \"response\" && data.id && this.pendingRequests.has(data.id)) {\n\t\t\t\tconst pending = this.pendingRequests.get(data.id)!;\n\t\t\t\tthis.pendingRequests.delete(data.id);\n\t\t\t\tpending.resolve(data as RpcResponse);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst event = data as RpcEvent;\n\t\t\tif (this.eventBuffer) this.eventBuffer.enqueue(event);\n\t\t\telse this.emitEvent(event);\n\t\t} catch {\n\t\t\tif (this.engineMonitor) this.failTransport(new Error(\"Interactive engine emitted malformed JSONL\"));\n\t\t}\n\t}\n\tprivate emitEvent(event: RpcEvent): void {\n\t\tfor (const listener of this.eventListeners) listener(event);\n\t}\n\tprivate emitInteractiveEngineMessage(message: InteractiveEngineMessage): void {\n\t\tif (this.engineMessageListeners.length === 0 && message.type.startsWith(\"engine_custom_\")) {\n\t\t\tconst bytes = Buffer.byteLength(JSON.stringify(message), \"utf8\");\n\t\t\twhile (this.pendingEngineMessages.length > 0 && this.pendingEngineMessageBytes + bytes > INTERACTIVE_ENGINE_MAX_FRAME_BYTES) {\n\t\t\t\tconst removed = this.pendingEngineMessages.shift()!;\n\t\t\t\tthis.pendingEngineMessageBytes -= Buffer.byteLength(JSON.stringify(removed), \"utf8\");\n\t\t\t}\n\t\t\tif (bytes <= INTERACTIVE_ENGINE_MAX_FRAME_BYTES) {\n\t\t\t\tthis.pendingEngineMessages.push(message);\n\t\t\t\tthis.pendingEngineMessageBytes += bytes;\n\t\t\t}\n\t\t}\n\t\tfor (const listener of this.engineMessageListeners) listener(message);\n\t}\n\tprivate createProcessExitError(code: number | null, signal: NodeJS.Signals | null): Error {\n\t\treturn new Error(`Agent process exited (code=${code} signal=${signal}). Stderr: ${this.stderr}`);\n\t}\n\tprivate invalidateEngineShortcuts(): void {\n\t\tif (!this.latestEngineKeybindingState || this.latestEngineKeybindingState.shortcuts.length === 0) return;\n\t\tconst state: EngineKeybindingState = { ...this.latestEngineKeybindingState, shortcuts: [] };\n\t\tthis.latestEngineKeybindingState = state;\n\t\tthis.emitInteractiveEngineMessage({ type: \"engine_keybindings_reloaded\", state });\n\t}\n\tprivate observeInteractiveEngineMessage(message: InteractiveEngineMessage): void {\n\t\tif (message.type === \"engine_ready\") this.enginePid = message.pid;\n\t\tif (message.type === \"engine_keybindings_reloaded\") this.latestEngineKeybindingState = message.state;\n\t\tif (message.type === \"engine_activity_started\") this.activeActivityIds.add(message.activity.id);\n\t\telse if (message.type === \"engine_activity_finished\") this.activeActivityIds.delete(message.activityId);\n\t\tthis.options.interactiveEngine?.onActivityChange?.(this.activeActivityIds.size > 0);\n\t\tthis.emitInteractiveEngineMessage(message);\n\t}\n\tprivate rejectPendingRequests(error: Error): void {\n\t\tfor (const { reject } of this.pendingRequests.values()) reject(error);\n\t\tthis.pendingRequests.clear();\n\t}\n\tprivate failTransport(error: Error): void {\n\t\tthis.exitError = error;\n\t\tthis.stdinWriter?.close(error);\n\t\tthis.engineMonitor?.fail(error);\n\t\tthis.rejectPendingRequests(error);\n\t\tthis.options.interactiveEngine?.onDiagnostic({\n\t\t\tactivity: undefined, elapsedMs: 0, level: \"unresponsive\", message: error.message,\n\t\t});\n\t}\n\tprivate requireWriter(): BoundedWriter {\n\t\tif (!this.stdinWriter) throw new Error(\"Agent process stdin is not writable\");\n\t\treturn this.stdinWriter;\n\t}\n\tprivate bestEffort(operation: Promise<void>, label: string): void {\n\t\tvoid operation.catch((error: Error) => {\n\t\t\tif (!this.process || this.exitError) return;\n\t\t\tthis.options.interactiveEngine?.onDiagnostic({\n\t\t\t\tactivity: undefined, elapsedMs: 0, level: \"unresponsive\",\n\t\t\t\tmessage: `Interactive engine ${label} failed: ${error.message}`,\n\t\t\t});\n\t\t});\n\t}\n\tprotected async request(command: RpcCommandBody): Promise<RpcResponse> {\n\t\tconst childProcess = this.process;\n\t\tif (!childProcess) throw new Error(\"Client not started\");\n\t\tif (this.exitError) throw this.exitError;\n\t\tif (childProcess.exitCode !== null) {\n\t\t\tconst error = this.createProcessExitError(childProcess.exitCode, childProcess.signalCode);\n\t\t\tthis.exitError = error;\n\t\t\tthrow error;\n\t\t}\n\t\tconst id = `req_${++this.requestId}`;\n\t\tconst fullCommand = { ...command, id } as RpcCommand;\n\t\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\t\tlet rejectResponse!: (error: Error) => void;\n\t\tconst response = new Promise<RpcResponse>((resolve, reject) => {\n\t\t\trejectResponse = reject;\n\t\t\tthis.pendingRequests.set(id, {\n\t\t\t\tresolve: (value) => { if (timeout) clearTimeout(timeout); resolve(value); },\n\t\t\t\treject: (error) => { if (timeout) clearTimeout(timeout); reject(error); },\n\t\t\t});\n\t\t});\n\t\ttry {\n\t\t\tawait this.requireWriter().write(serializeJsonLine(fullCommand));\n\t\t} catch (error) {\n\t\t\tthis.pendingRequests.delete(id);\n\t\t\trejectResponse(error instanceof Error ? error : new Error(String(error)));\n\t\t\treturn response;\n\t\t}\n\t\tif (this.pendingRequests.has(id) && !LONG_LIVED_COMMANDS.has(command.type)) {\n\t\t\ttimeout = setTimeout(() => {\n\t\t\t\tthis.pendingRequests.delete(id);\n\t\t\t\trejectResponse(new Error(`Timeout waiting for response to ${command.type}. Stderr: ${this.stderr}`));\n\t\t\t}, this.options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS);\n\t\t}\n\t\treturn response;\n\t}\n\tprivate assertSuccess(response: RpcResponse): void {\n\t\tif (!response.success) throw new Error(response.error);\n\t}\n\tprotected data<T>(response: RpcResponse): T {\n\t\tthis.assertSuccess(response);\n\t\tconst successResponse = response as Extract<RpcResponse, { success: true; data: unknown }>;\n\t\treturn successResponse.data as T;\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"rpc-client.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport type { ChildProcess } from \"node:child_process\";\nimport type { ImageContent } from \"@earendil-works/pi-ai/compat\";\nimport { BoundedWriter } from \"./bounded-writer.ts\";\nimport { attachJsonlLineReader, serializeJsonLine } from \"./jsonl.ts\";\nimport type { ActivityWatchdogDiagnostic } from \"../interactive-engine/activity-watchdog.ts\";\nimport { InteractiveEngineMonitor } from \"../interactive-engine/engine-monitor.ts\";\nimport { INTERACTIVE_ENGINE_MAX_FRAME_BYTES, serializeInteractiveEngineFrame, type EngineKeybindingState, type InteractiveEngineCommand, type InteractiveEngineMessage } from \"../interactive-engine/protocol.ts\";\nimport { sleep } from \"../../utils/sleep.ts\";\nimport { createInteractiveJsonlOptions, spawnRpcClientProcess, terminateRpcClientProcess } from \"./rpc-client-process.ts\";\nimport { RpcClientApi, type RpcCommandBody } from \"./rpc-client-api.ts\";\nimport { RpcEventBuffer } from \"./rpc-event-buffer.ts\";\nimport { collectRpcEvents, waitForRpcIdle } from \"./rpc-client-waits.ts\";\nimport type { RpcCommand, RpcExtensionUIRequest, RpcExtensionUIResponse, RpcEvent, RpcResponse } from \"./rpc-types.ts\";\nexport type { ModelInfo, RpcCommandBody } from \"./rpc-client-api.ts\";\nexport type { RpcContextWindowInfo, RpcEvent } from \"./rpc-types.ts\";\n\n\nfunction restartArgs(args: readonly string[] | undefined, sessionFile: string | undefined): string[] {\n\tconst result: string[] = [];\n\tfor (let index = 0; index < (args?.length ?? 0); index += 1) {\n\t\tconst value = args![index]!;\n\t\tif (value === \"--no-session\") continue;\n\t\tif (value === \"--session\") { index += 1; continue; }\n\t\tresult.push(value);\n\t}\n\tresult.push(sessionFile ? \"--session\" : \"--no-session\");\n\tif (sessionFile) result.push(sessionFile);\n\treturn result;\n}\nexport interface RpcClientOptions {\n\tcliPath?: string;\n\tcwd?: string;\n\tenv?: Record<string, string>;\n\tprovider?: string;\n\tmodel?: string;\n\tcontextWindow?: number | string;\n\targs?: string[];\n\truntimeExecutable?: string;\n\truntimeArgs?: string[];\n\t/**\n\t * Bounded deadline (ms) applied to short metadata/control requests. Long-lived\n\t * commands (see LONG_LIVED_COMMANDS) never use this timer. Defaults to 30s.\n\t */\n\trequestTimeoutMs?: number;\n\tinteractiveEngine?: {\n\t\tonDiagnostic: (diagnostic: ActivityWatchdogDiagnostic) => void;\n\t\tonActivityChange?: (active: boolean) => void;\n\t};\n}\n\n/**\n * Commands whose response is legitimately gated on human/agent interaction or a\n * turn boundary and therefore must not be subject to the generic request\n * timeout: interactive prompts and custom-UI pickers (routed through `prompt`),\n * queued turn-boundary sends (`steer`/`follow_up`), long-running shell and\n * compaction work, and session-tree navigation/mutation that can open pickers.\n *\n * Failure detection is unaffected: engine exit, transport violations, aborts,\n * generation replacement, and explicit stop all reject pending requests via\n * rejectPendingRequests/failTransport independently of any timer.\n */\nconst LONG_LIVED_COMMANDS: ReadonlySet<string> = new Set<string>([\n\t\"prompt\",\n\t\"login_provider\",\n\t\"steer\",\n\t\"follow_up\",\n\t\"bash\",\n\t\"user_bash\",\n\t\"compact\",\n\t\"fork\",\n\t\"clone\",\n\t\"switch_session\",\n\t\"new_session\",\n\t\"import_session\",\n\t\"navigate_tree\",\n\t\"invoke_shortcut\",\n]);\n\nconst DEFAULT_REQUEST_TIMEOUT_MS = 30_000;\n\n\nexport type RpcEventListener = (event: RpcEvent) => void;\n\n\nexport class RpcClient extends RpcClientApi {\n\tprivate process: ChildProcess | null = null;\n\tprivate stopReadingStdout: (() => void) | null = null;\n\tprivate eventListeners: RpcEventListener[] = [];\n\tprivate extensionUIListeners: Array<(request: RpcExtensionUIRequest) => void> = [];\n\tprivate pendingExtensionUIRequests: RpcExtensionUIRequest[] = [];\n\tprivate engineMessageListeners: Array<(message: InteractiveEngineMessage) => void> = [];\n\tprivate latestEngineKeybindingState: EngineKeybindingState | undefined;\n\tprivate pendingEngineMessages: InteractiveEngineMessage[] = [];\n\tprivate pendingEngineMessageBytes = 0;\n\tprivate pendingRequests: Map<string, { resolve: (response: RpcResponse) => void; reject: (error: Error) => void }> =\n\t\tnew Map();\n\tprivate requestId = 0;\n\tprivate stderr = \"\";\n\tprivate exitError: Error | null = null;\n\tprivate engineMonitor: InteractiveEngineMonitor | undefined;\n\tprivate eventBuffer: RpcEventBuffer | undefined;\n\tprivate stdinWriter: BoundedWriter | undefined;\n\tprivate generation = 0;\n\tprivate readonly activeActivityIds = new Set<string>();\n\tprivate enginePid: number | undefined;\n\n\tdeclare private options: RpcClientOptions;\n\n\tconstructor(options: RpcClientOptions = {}) {\n\t\tsuper();\n\t\tthis.options = options;\n\t}\n\n\tasync start(): Promise<void> {\n\t\tif (this.process) {\n\t\t\tthrow new Error(\"Client already started\");\n\t\t}\n\n\t\tconst cliPath = this.options.cliPath ?? \"dist/cli.js\";\n\t\tconst args = [\"--mode\", \"rpc\"];\n\n\t\tif (this.options.provider) {\n\t\t\targs.push(\"--provider\", this.options.provider);\n\t\t}\n\t\tif (this.options.model) {\n\t\t\targs.push(\"--model\", this.options.model);\n\t\t}\n\t\tif (this.options.contextWindow !== undefined) {\n\t\t\targs.push(\"--context-window\", String(this.options.contextWindow));\n\t\t}\n\t\tif (this.options.args) {\n\t\t\targs.push(...this.options.args);\n\t\t}\n\n\t\tconst generation = ++this.generation;\n\t\tthis.exitError = null;\n\t\tthis.stderr = \"\";\n\t\tthis.activeActivityIds.clear();\n\t\tthis.enginePid = undefined;\n\t\tthis.engineMonitor = this.options.interactiveEngine\n\t\t\t? new InteractiveEngineMonitor(\n\t\t\t\t\tthis.options.interactiveEngine.onDiagnostic,\n\t\t\t\t\t(message) => this.observeInteractiveEngineMessage(message),\n\t\t\t\t)\n\t\t\t: undefined;\n\t\tthis.eventBuffer = this.engineMonitor ? new RpcEventBuffer((event) => this.emitEvent(event)) : undefined;\n\t\tconst childProcess = spawnRpcClientProcess({\n\t\t\tcliPath,\n\t\t\tcliArgs: args,\n\t\t\tcwd: this.options.cwd,\n\t\t\tenv: this.options.env,\n\t\t\truntimeExecutable: this.options.runtimeExecutable,\n\t\t\truntimeArgs: this.options.runtimeArgs,\n\t\t\tinteractiveEngine: this.engineMonitor !== undefined,\n\t\t});\n\t\tthis.process = childProcess;\n\t\tthis.stdinWriter = new BoundedWriter(childProcess.stdin!, {\n\t\t\tmaxFrameBytes: INTERACTIVE_ENGINE_MAX_FRAME_BYTES,\n\t\t\tmaxQueuedBytes: 2 * INTERACTIVE_ENGINE_MAX_FRAME_BYTES,\n\t\t});\n\n\t\tchildProcess.once(\"exit\", (code, signal) => {\n\t\t\tif (generation !== this.generation) return;\n\t\t\tconst error = this.createProcessExitError(code, signal);\n\t\t\tthis.exitError = error;\n\t\t\tthis.stdinWriter?.close(error);\n\t\t\tthis.engineMonitor?.fail(error);\n\t\t\tthis.activeActivityIds.clear();\n\t\t\tthis.options.interactiveEngine?.onActivityChange?.(false);\n\t\t\tthis.rejectPendingRequests(error);\n\t\t});\n\t\tchildProcess.once(\"error\", (error) => {\n\t\t\tif (generation !== this.generation) return;\n\t\t\tthis.exitError = error;\n\t\t\tthis.stdinWriter?.close(error);\n\t\t\tthis.engineMonitor?.fail(error);\n\t\t\tthis.rejectPendingRequests(error);\n\t\t});\n\t\tchildProcess.stdin?.on(\"error\", (error) => {\n\t\t\tif (generation !== this.generation) return;\n\t\t\tthis.exitError = error;\n\t\t\tthis.stdinWriter?.close(error);\n\t\t\tthis.engineMonitor?.fail(error);\n\t\t\tthis.rejectPendingRequests(error);\n\t\t});\n\t\tchildProcess.stderr?.on(\"data\", (data) => {\n\t\t\tif (generation !== this.generation) return;\n\t\t\tconst next = this.stderr + data.toString();\n\t\t\tthis.stderr = Buffer.byteLength(next, \"utf8\") <= 256 * 1024\n\t\t\t\t? next\n\t\t\t\t: `${Buffer.from(next).subarray(-256 * 1024).toString(\"utf8\")}\\n[stderr truncated]`;\n\t\t\tprocess.stderr.write(data);\n\t\t});\n\t\tconst readerOptions = createInteractiveJsonlOptions(\n\t\t\tthis.engineMonitor !== undefined,\n\t\t\tthis.options.interactiveEngine?.onDiagnostic,\n\t\t);\n\t\tthis.stopReadingStdout = attachJsonlLineReader(childProcess.stdout!, (line) => {\n\t\t\tif (generation === this.generation) this.handleLine(line);\n\t\t}, {\n\t\t\t...readerOptions,\n\t\t\tonOversizedLine: () => {\n\t\t\t\treaderOptions.onOversizedLine?.();\n\t\t\t\tif (generation === this.generation) this.failTransport(new Error(\"Interactive engine emitted an oversized RPC frame\"));\n\t\t\t},\n\t\t});\n\t\tif (this.engineMonitor) await this.engineMonitor.waitUntilReady();\n\t\telse await sleep(100);\n\n\t\tif (generation !== this.generation || this.process?.exitCode !== null) {\n\t\t\tthrow new Error(`Agent process exited immediately. Stderr: ${this.stderr}`);\n\t\t}\n\t}\n\n\tasync stop(): Promise<void> {\n\t\tconst child = this.process;\n\t\tif (!child) return;\n\t\tthis.invalidateEngineShortcuts();\n\t\tconst terminateTree = this.engineMonitor !== undefined;\n\t\tthis.stopReadingStdout?.();\n\t\tthis.engineMonitor?.stop();\n\t\tthis.stdinWriter?.close(new Error(\"Agent process stopped\"));\n\t\tthis.engineMonitor = undefined;\n\t\tthis.stopReadingStdout = null;\n\t\tthis.stdinWriter = undefined;\n\t\tthis.process = null;\n\t\tthis.generation += 1;\n\t\tawait terminateRpcClientProcess(child, terminateTree);\n\t\tthis.rejectPendingRequests(new Error(\"Agent process stopped\"));\n\t\tthis.eventBuffer?.dispose();\n\t\tthis.eventBuffer = undefined;\n\t\tthis.activeActivityIds.clear();\n\t\tthis.options.interactiveEngine?.onActivityChange?.(false);\n\t}\n\n\t/** Subscribe to agent events. */\n\tonEvent(listener: RpcEventListener): () => void {\n\t\tthis.eventListeners.push(listener);\n\t\treturn () => {\n\t\t\tconst index = this.eventListeners.indexOf(listener);\n\t\t\tif (index !== -1) {\n\t\t\t\tthis.eventListeners.splice(index, 1);\n\t\t\t}\n\t\t};\n\t}\n\n\tonExtensionUIRequest(listener: (request: RpcExtensionUIRequest) => void): () => void {\n\t\tthis.extensionUIListeners.push(listener);\n\t\tfor (const request of this.pendingExtensionUIRequests.splice(0)) listener(request);\n\t\treturn () => {\n\t\t\tconst index = this.extensionUIListeners.indexOf(listener);\n\t\t\tif (index !== -1) this.extensionUIListeners.splice(index, 1);\n\t\t};\n\t}\n\n\tasync respondExtensionUI(response: RpcExtensionUIResponse): Promise<void> {\n\t\tawait this.requireWriter().write(serializeJsonLine(response));\n\t}\n\n\tonInteractiveEngineMessage(listener: (message: InteractiveEngineMessage) => void): () => void {\n\t\tthis.engineMessageListeners.push(listener);\n\t\tfor (const message of this.pendingEngineMessages.splice(0)) listener(message);\n\t\tthis.pendingEngineMessageBytes = 0;\n\t\treturn () => {\n\t\t\tconst index = this.engineMessageListeners.indexOf(listener);\n\t\t\tif (index !== -1) this.engineMessageListeners.splice(index, 1);\n\t\t};\n\t}\n\n\tonInteractiveEngineKeybindingState(listener: (state: EngineKeybindingState) => void): () => void {\n\t\tconst messageListener = (message: InteractiveEngineMessage): void => {\n\t\t\tif (message.type === \"engine_keybindings_reloaded\") listener(message.state);\n\t\t};\n\t\tthis.engineMessageListeners.push(messageListener);\n\t\tif (this.latestEngineKeybindingState) listener(this.latestEngineKeybindingState);\n\t\treturn () => {\n\t\t\tconst index = this.engineMessageListeners.indexOf(messageListener);\n\t\t\tif (index !== -1) this.engineMessageListeners.splice(index, 1);\n\t\t};\n\t}\n\n\tsendInteractiveEngineCommand(command: InteractiveEngineCommand): void {\n\t\tconst writer = this.stdinWriter;\n\t\tif (!writer) return;\n\t\tconst frame = serializeInteractiveEngineFrame(command);\n\t\tif (command.type === \"engine_custom_render\" || command.type === \"engine_tool_render\" || command.type === \"engine_message_render\") {\n\t\t\twriter.offerLatest(`render:${command.componentId}`, frame);\n\t\t\treturn;\n\t\t}\n\t\tthis.bestEffort(writer.write(frame), `engine command ${command.type}`);\n\t}\n\twaitForInteractiveEngineBound(): Promise<void> { return this.engineMonitor?.waitUntilBound() ?? Promise.resolve(); }\n\tgetEnginePid(): number | undefined { return this.enginePid; }\n\tgetGeneration(): number { return this.generation; }\n\n\tasync restart(sessionFile: string | undefined): Promise<void> {\n\t\tawait this.stop();\n\t\tthis.options = { ...this.options, args: restartArgs(this.options.args, sessionFile) };\n\t\tawait this.start();\n\t\tawait this.waitForInteractiveEngineBound();\n\t}\n\n\tasync requestInternal<T>(command: RpcCommandBody): Promise<T> {\n\t\treturn this.data<T>(await this.request(command));\n\t}\n\tgetStderr(): string {\n\t\treturn this.stderr;\n\t}\n\n\n\twaitForIdle(timeout = 60000): Promise<void> {\n\t\treturn waitForRpcIdle(this, timeout);\n\t}\n\tcollectEvents(timeout = 60000): Promise<RpcEvent[]> {\n\t\treturn collectRpcEvents(this, timeout);\n\t}\n\tasync promptAndWait(message: string, images?: ImageContent[], timeout = 60000): Promise<RpcEvent[]> {\n\t\tconst eventsPromise = this.collectEvents(timeout);\n\t\tawait this.prompt(message, images);\n\t\treturn eventsPromise;\n\t}\n\tprivate handleLine(line: string): void {\n\t\tif (this.engineMonitor?.handleLine(line)) return;\n\t\ttry {\n\t\t\tconst data = JSON.parse(line) as { type?: string; id?: string };\n\t\t\tif (data.type === \"extension_ui_request\") {\n\t\t\t\tconst request = data as RpcExtensionUIRequest;\n\t\t\t\tif (this.extensionUIListeners.length === 0) this.pendingExtensionUIRequests.push(request);\n\t\t\t\tfor (const listener of this.extensionUIListeners) listener(request);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (data.type === \"response\" && data.id && this.pendingRequests.has(data.id)) {\n\t\t\t\tconst pending = this.pendingRequests.get(data.id)!;\n\t\t\t\tthis.pendingRequests.delete(data.id);\n\t\t\t\tpending.resolve(data as RpcResponse);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst event = data as RpcEvent;\n\t\t\tif (this.eventBuffer) this.eventBuffer.enqueue(event);\n\t\t\telse this.emitEvent(event);\n\t\t} catch {\n\t\t\tif (this.engineMonitor) this.failTransport(new Error(\"Interactive engine emitted malformed JSONL\"));\n\t\t}\n\t}\n\tprivate emitEvent(event: RpcEvent): void {\n\t\tfor (const listener of this.eventListeners) listener(event);\n\t}\n\tprivate emitInteractiveEngineMessage(message: InteractiveEngineMessage): void {\n\t\tif (this.engineMessageListeners.length === 0 && message.type.startsWith(\"engine_custom_\")) {\n\t\t\tconst bytes = Buffer.byteLength(JSON.stringify(message), \"utf8\");\n\t\t\twhile (this.pendingEngineMessages.length > 0 && this.pendingEngineMessageBytes + bytes > INTERACTIVE_ENGINE_MAX_FRAME_BYTES) {\n\t\t\t\tconst removed = this.pendingEngineMessages.shift()!;\n\t\t\t\tthis.pendingEngineMessageBytes -= Buffer.byteLength(JSON.stringify(removed), \"utf8\");\n\t\t\t}\n\t\t\tif (bytes <= INTERACTIVE_ENGINE_MAX_FRAME_BYTES) {\n\t\t\t\tthis.pendingEngineMessages.push(message);\n\t\t\t\tthis.pendingEngineMessageBytes += bytes;\n\t\t\t}\n\t\t}\n\t\tfor (const listener of this.engineMessageListeners) listener(message);\n\t}\n\tprivate createProcessExitError(code: number | null, signal: NodeJS.Signals | null): Error {\n\t\treturn new Error(`Agent process exited (code=${code} signal=${signal}). Stderr: ${this.stderr}`);\n\t}\n\tprivate invalidateEngineShortcuts(): void {\n\t\tif (!this.latestEngineKeybindingState || this.latestEngineKeybindingState.shortcuts.length === 0) return;\n\t\tconst state: EngineKeybindingState = { ...this.latestEngineKeybindingState, shortcuts: [] };\n\t\tthis.latestEngineKeybindingState = state;\n\t\tthis.emitInteractiveEngineMessage({ type: \"engine_keybindings_reloaded\", state });\n\t}\n\tprivate observeInteractiveEngineMessage(message: InteractiveEngineMessage): void {\n\t\tif (message.type === \"engine_ready\") this.enginePid = message.pid;\n\t\tif (message.type === \"engine_keybindings_reloaded\") this.latestEngineKeybindingState = message.state;\n\t\tif (message.type === \"engine_activity_started\") this.activeActivityIds.add(message.activity.id);\n\t\telse if (message.type === \"engine_activity_finished\") this.activeActivityIds.delete(message.activityId);\n\t\tthis.options.interactiveEngine?.onActivityChange?.(this.activeActivityIds.size > 0);\n\t\tthis.emitInteractiveEngineMessage(message);\n\t}\n\tprivate rejectPendingRequests(error: Error): void {\n\t\tfor (const { reject } of this.pendingRequests.values()) reject(error);\n\t\tthis.pendingRequests.clear();\n\t}\n\tprivate failTransport(error: Error): void {\n\t\tthis.exitError = error;\n\t\tthis.stdinWriter?.close(error);\n\t\tthis.engineMonitor?.fail(error);\n\t\tthis.rejectPendingRequests(error);\n\t\tthis.options.interactiveEngine?.onDiagnostic({\n\t\t\tactivity: undefined, elapsedMs: 0, level: \"unresponsive\", message: error.message,\n\t\t});\n\t}\n\tprivate requireWriter(): BoundedWriter {\n\t\tif (!this.stdinWriter) throw new Error(\"Agent process stdin is not writable\");\n\t\treturn this.stdinWriter;\n\t}\n\tprivate bestEffort(operation: Promise<void>, label: string): void {\n\t\tvoid operation.catch((error: Error) => {\n\t\t\tif (!this.process || this.exitError) return;\n\t\t\tthis.options.interactiveEngine?.onDiagnostic({\n\t\t\t\tactivity: undefined, elapsedMs: 0, level: \"unresponsive\",\n\t\t\t\tmessage: `Interactive engine ${label} failed: ${error.message}`,\n\t\t\t});\n\t\t});\n\t}\n\tprotected async request(command: RpcCommandBody): Promise<RpcResponse> {\n\t\tconst childProcess = this.process;\n\t\tif (!childProcess) throw new Error(\"Client not started\");\n\t\tif (this.exitError) throw this.exitError;\n\t\tif (childProcess.exitCode !== null) {\n\t\t\tconst error = this.createProcessExitError(childProcess.exitCode, childProcess.signalCode);\n\t\t\tthis.exitError = error;\n\t\t\tthrow error;\n\t\t}\n\t\tconst id = `req_${++this.requestId}`;\n\t\tconst fullCommand = { ...command, id } as RpcCommand;\n\t\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\t\tlet rejectResponse!: (error: Error) => void;\n\t\tconst response = new Promise<RpcResponse>((resolve, reject) => {\n\t\t\trejectResponse = reject;\n\t\t\tthis.pendingRequests.set(id, {\n\t\t\t\tresolve: (value) => { if (timeout) clearTimeout(timeout); resolve(value); },\n\t\t\t\treject: (error) => { if (timeout) clearTimeout(timeout); reject(error); },\n\t\t\t});\n\t\t});\n\t\ttry {\n\t\t\tawait this.requireWriter().write(serializeJsonLine(fullCommand));\n\t\t} catch (error) {\n\t\t\tthis.pendingRequests.delete(id);\n\t\t\trejectResponse(error instanceof Error ? error : new Error(String(error)));\n\t\t\treturn response;\n\t\t}\n\t\tif (this.pendingRequests.has(id) && !LONG_LIVED_COMMANDS.has(command.type)) {\n\t\t\ttimeout = setTimeout(() => {\n\t\t\t\tthis.pendingRequests.delete(id);\n\t\t\t\trejectResponse(new Error(`Timeout waiting for response to ${command.type}. Stderr: ${this.stderr}`));\n\t\t\t}, this.options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS);\n\t\t}\n\t\treturn response;\n\t}\n\tprivate assertSuccess(response: RpcResponse): void {\n\t\tif (!response.success) throw new Error(response.error);\n\t}\n\tprotected data<T>(response: RpcResponse): T {\n\t\tthis.assertSuccess(response);\n\t\tconst successResponse = response as Extract<RpcResponse, { success: true; data: unknown }>;\n\t\treturn successResponse.data as T;\n\t}\n}\n"]}
|
|
@@ -5,6 +5,9 @@ import { type RpcOutput } from "./rpc-responses.ts";
|
|
|
5
5
|
import type { KeybindingsReloadCoordinator } from "./rpc-keybindings-reload.ts";
|
|
6
6
|
import type { RpcCommand, RpcResponse } from "./rpc-types.ts";
|
|
7
7
|
export type RpcCommandHandler = (command: RpcCommand) => Promise<RpcResponse | undefined>;
|
|
8
|
+
interface ProviderLoginInput {
|
|
9
|
+
open(request: import("../../core/extensions/ui-types.ts").HostInputFormRequest, signal?: AbortSignal): Promise<Record<string, string> | undefined>;
|
|
10
|
+
}
|
|
8
11
|
interface RpcCommandHandlerOptions {
|
|
9
12
|
runtimeHost: AgentSessionRuntime;
|
|
10
13
|
getSession: () => AgentSession;
|
|
@@ -12,7 +15,8 @@ interface RpcCommandHandlerOptions {
|
|
|
12
15
|
output: RpcOutput;
|
|
13
16
|
keybindings?: KeybindingsManager;
|
|
14
17
|
reloadCoordinator?: KeybindingsReloadCoordinator<AgentSession>;
|
|
18
|
+
inputForm?: ProviderLoginInput;
|
|
15
19
|
}
|
|
16
|
-
export declare function createRpcCommandHandler({ runtimeHost, getSession, rebindSession, output, keybindings, reloadCoordinator, }: RpcCommandHandlerOptions): RpcCommandHandler;
|
|
20
|
+
export declare function createRpcCommandHandler({ runtimeHost, getSession, rebindSession, output, keybindings, reloadCoordinator, inputForm, }: RpcCommandHandlerOptions): RpcCommandHandler;
|
|
17
21
|
export {};
|
|
18
22
|
//# sourceMappingURL=rpc-command-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-command-handler.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-command-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAKN,KAAK,SAAS,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAChF,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;AAE1F,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;
|
|
1
|
+
{"version":3,"file":"rpc-command-handler.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-command-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAKN,KAAK,SAAS,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAChF,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;AAE1F,UAAU,kBAAkB;IAC3B,IAAI,CACH,OAAO,EAAE,OAAO,mCAAmC,EAAE,oBAAoB,EACzE,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC;CAC/C;AAED,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;CAC/B;AAED,wBAAgB,uBAAuB,CAAC,EACvC,WAAW,EACX,UAAU,EACV,aAAa,EACb,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,SAAS,GACT,EAAE,wBAAwB,GAAG,iBAAiB,CAmc9C"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { runCallback } from "../../core/callback-activity.js";
|
|
2
2
|
import { KeybindingsManager } from "../../core/keybindings.js";
|
|
3
3
|
import { createRpcErrorResponse, createRpcSuccessResponse, formatRpcErrorMessage, parseRpcContextWindow, } from "./rpc-responses.js";
|
|
4
|
-
export function createRpcCommandHandler({ runtimeHost, getSession, rebindSession, output, keybindings, reloadCoordinator, }) {
|
|
4
|
+
export function createRpcCommandHandler({ runtimeHost, getSession, rebindSession, output, keybindings, reloadCoordinator, inputForm, }) {
|
|
5
5
|
let fallbackShortcutKeybindings;
|
|
6
|
+
const providerLoginControllers = new Map();
|
|
6
7
|
const getShortcutBindings = () => {
|
|
7
8
|
if (keybindings)
|
|
8
9
|
return keybindings.getEffectiveConfig();
|
|
@@ -89,7 +90,65 @@ export function createRpcCommandHandler({ runtimeHost, getSession, rebindSession
|
|
|
89
90
|
}
|
|
90
91
|
case "get_available_models": {
|
|
91
92
|
const models = await session.modelRegistry.getAvailable();
|
|
92
|
-
return createRpcSuccessResponse(id, "get_available_models", {
|
|
93
|
+
return createRpcSuccessResponse(id, "get_available_models", {
|
|
94
|
+
models,
|
|
95
|
+
scopedModels: session.scopedModels,
|
|
96
|
+
customAuthProviders: session.modelRegistry.getCustomApiKeyAuthProviders(),
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
case "login_provider": {
|
|
100
|
+
const customAuth = session.modelRegistry.getCustomApiKeyAuth(command.provider);
|
|
101
|
+
if (!customAuth)
|
|
102
|
+
throw new Error(`Provider does not support custom API-key login: ${command.provider}`);
|
|
103
|
+
if (!inputForm)
|
|
104
|
+
throw new Error("Provider login requires an interactive input host");
|
|
105
|
+
if (providerLoginControllers.has(command.provider))
|
|
106
|
+
throw new Error(`Login already in progress: ${command.provider}`);
|
|
107
|
+
const controller = new AbortController();
|
|
108
|
+
providerLoginControllers.set(command.provider, controller);
|
|
109
|
+
try {
|
|
110
|
+
const credential = await customAuth.login({
|
|
111
|
+
signal: controller.signal,
|
|
112
|
+
prompt: async (prompt) => {
|
|
113
|
+
const values = await inputForm.open({
|
|
114
|
+
title: prompt.message,
|
|
115
|
+
heading: "PROVIDER LOGIN",
|
|
116
|
+
submitLabel: "[ Submit ]",
|
|
117
|
+
fields: [{
|
|
118
|
+
name: "value", type: "string", required: false, initialValue: "",
|
|
119
|
+
placeholder: prompt.placeholder,
|
|
120
|
+
}],
|
|
121
|
+
}, controller.signal);
|
|
122
|
+
if (!values || controller.signal.aborted)
|
|
123
|
+
throw new Error("Login cancelled");
|
|
124
|
+
return values.value ?? "";
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
if (controller.signal.aborted)
|
|
128
|
+
return createRpcSuccessResponse(id, "login_provider", { provider: command.provider, cancelled: true });
|
|
129
|
+
session.modelRegistry.authStorage.set(command.provider, credential);
|
|
130
|
+
await session.modelRegistry.refresh();
|
|
131
|
+
return createRpcSuccessResponse(id, "login_provider", {
|
|
132
|
+
provider: command.provider, cancelled: false, credential,
|
|
133
|
+
models: session.modelRegistry.getAvailable(),
|
|
134
|
+
scopedModels: session.scopedModels,
|
|
135
|
+
customAuthProviders: session.modelRegistry.getCustomApiKeyAuthProviders(),
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
if (controller.signal.aborted || (error instanceof Error && error.message === "Login cancelled")) {
|
|
140
|
+
return createRpcSuccessResponse(id, "login_provider", { provider: command.provider, cancelled: true });
|
|
141
|
+
}
|
|
142
|
+
throw error;
|
|
143
|
+
}
|
|
144
|
+
finally {
|
|
145
|
+
if (providerLoginControllers.get(command.provider) === controller)
|
|
146
|
+
providerLoginControllers.delete(command.provider);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
case "cancel_login_provider": {
|
|
150
|
+
providerLoginControllers.get(command.provider)?.abort();
|
|
151
|
+
return createRpcSuccessResponse(id, "cancel_login_provider");
|
|
93
152
|
}
|
|
94
153
|
case "logout_provider": {
|
|
95
154
|
const result = await runtimeHost.logoutProvider(command.provider);
|
|
@@ -107,6 +166,7 @@ export function createRpcCommandHandler({ runtimeHost, getSession, rebindSession
|
|
|
107
166
|
errors: [...result.errors].map(([provider, error]) => ({ provider, message: error.message })),
|
|
108
167
|
models: session.modelRegistry.getAvailable(),
|
|
109
168
|
scopedModels: session.scopedModels,
|
|
169
|
+
customAuthProviders: session.modelRegistry.getCustomApiKeyAuthProviders(),
|
|
110
170
|
});
|
|
111
171
|
}
|
|
112
172
|
case "set_thinking_level": {
|