@hansjm10/volt-coding-agent 0.0.0-bootstrap.0 → 0.1.0
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/BINARY-CAPABILITIES.md +28 -0
- package/CHANGELOG.md +4845 -0
- package/LICENSE +1 -1
- package/README.md +716 -3
- package/THIRD-PARTY-NOTICES.md +55 -0
- package/dist/LICENSES/clipboard-image-MIT.txt +9 -0
- package/dist/LICENSES/highlight.js-10.7.3-BSD-3-Clause.txt +29 -0
- package/dist/LICENSES/highlight.js-11.9.0-BSD-3-Clause.txt +29 -0
- package/dist/LICENSES/marked-18.0.5-LICENSE.txt +44 -0
- package/dist/LICENSES/run-jxa-MIT.txt +9 -0
- package/dist/cli/args.d.ts +60 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +414 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/config-selector.d.ts +14 -0
- package/dist/cli/config-selector.d.ts.map +1 -0
- package/dist/cli/config-selector.js +31 -0
- package/dist/cli/config-selector.js.map +1 -0
- package/dist/cli/file-processor.d.ts +15 -0
- package/dist/cli/file-processor.d.ts.map +1 -0
- package/dist/cli/file-processor.js +85 -0
- package/dist/cli/file-processor.js.map +1 -0
- package/dist/cli/initial-message.d.ts +18 -0
- package/dist/cli/initial-message.d.ts.map +1 -0
- package/dist/cli/initial-message.js +22 -0
- package/dist/cli/initial-message.js.map +1 -0
- package/dist/cli/list-models.d.ts +9 -0
- package/dist/cli/list-models.d.ts.map +1 -0
- package/dist/cli/list-models.js +98 -0
- package/dist/cli/list-models.js.map +1 -0
- package/dist/cli/project-trust.d.ts +10 -0
- package/dist/cli/project-trust.d.ts.map +1 -0
- package/dist/cli/project-trust.js +48 -0
- package/dist/cli/project-trust.js.map +1 -0
- package/dist/cli/session-picker.d.ts +9 -0
- package/dist/cli/session-picker.d.ts.map +1 -0
- package/dist/cli/session-picker.js +35 -0
- package/dist/cli/session-picker.js.map +1 -0
- package/dist/cli/startup-ui.d.ts +17 -0
- package/dist/cli/startup-ui.d.ts.map +1 -0
- package/dist/cli/startup-ui.js +133 -0
- package/dist/cli/startup-ui.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +18 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +85 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +487 -0
- package/dist/config.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts +160 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -0
- package/dist/core/agent-session-runtime.js +397 -0
- package/dist/core/agent-session-runtime.js.map +1 -0
- package/dist/core/agent-session-services.d.ts +98 -0
- package/dist/core/agent-session-services.d.ts.map +1 -0
- package/dist/core/agent-session-services.js +125 -0
- package/dist/core/agent-session-services.js.map +1 -0
- package/dist/core/agent-session.d.ts +739 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +3158 -0
- package/dist/core/agent-session.js.map +1 -0
- package/dist/core/auth-guidance.d.ts +5 -0
- package/dist/core/auth-guidance.d.ts.map +1 -0
- package/dist/core/auth-guidance.js +21 -0
- package/dist/core/auth-guidance.js.map +1 -0
- package/dist/core/auth-storage.d.ts +159 -0
- package/dist/core/auth-storage.d.ts.map +1 -0
- package/dist/core/auth-storage.js +509 -0
- package/dist/core/auth-storage.js.map +1 -0
- package/dist/core/bash-executor.d.ts +32 -0
- package/dist/core/bash-executor.d.ts.map +1 -0
- package/dist/core/bash-executor.js +111 -0
- package/dist/core/bash-executor.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +92 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/core/compaction/branch-summarization.js +257 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -0
- package/dist/core/compaction/compaction.d.ts +121 -0
- package/dist/core/compaction/compaction.d.ts.map +1 -0
- package/dist/core/compaction/compaction.js +658 -0
- package/dist/core/compaction/compaction.js.map +1 -0
- package/dist/core/compaction/index.d.ts +7 -0
- package/dist/core/compaction/index.d.ts.map +1 -0
- package/dist/core/compaction/index.js +7 -0
- package/dist/core/compaction/index.js.map +1 -0
- package/dist/core/compaction/utils.d.ts +56 -0
- package/dist/core/compaction/utils.d.ts.map +1 -0
- package/dist/core/compaction/utils.js +271 -0
- package/dist/core/compaction/utils.js.map +1 -0
- package/dist/core/defaults.d.ts +3 -0
- package/dist/core/defaults.d.ts.map +1 -0
- package/dist/core/defaults.js +2 -0
- package/dist/core/defaults.js.map +1 -0
- package/dist/core/diagnostics.d.ts +15 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +2 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/event-bus.d.ts +9 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +25 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/exec.d.ts +29 -0
- package/dist/core/exec.d.ts.map +1 -0
- package/dist/core/exec.js +75 -0
- package/dist/core/exec.js.map +1 -0
- package/dist/core/experimental.d.ts +2 -0
- package/dist/core/experimental.d.ts.map +1 -0
- package/dist/core/experimental.js +4 -0
- package/dist/core/experimental.js.map +1 -0
- package/dist/core/export-html/ansi-to-html.d.ts +22 -0
- package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
- package/dist/core/export-html/ansi-to-html.js +249 -0
- package/dist/core/export-html/ansi-to-html.js.map +1 -0
- package/dist/core/export-html/index.d.ts +37 -0
- package/dist/core/export-html/index.d.ts.map +1 -0
- package/dist/core/export-html/index.js +234 -0
- package/dist/core/export-html/index.js.map +1 -0
- package/dist/core/export-html/template.css +1066 -0
- package/dist/core/export-html/template.html +55 -0
- package/dist/core/export-html/template.js +1864 -0
- package/dist/core/export-html/tool-renderer.d.ts +34 -0
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
- package/dist/core/export-html/tool-renderer.js +108 -0
- package/dist/core/export-html/tool-renderer.js.map +1 -0
- package/dist/core/export-html/vendor/highlight.min.js +1213 -0
- package/dist/core/export-html/vendor/marked.min.js +78 -0
- package/dist/core/extensions/index.d.ts +12 -0
- package/dist/core/extensions/index.d.ts.map +1 -0
- package/dist/core/extensions/index.js +9 -0
- package/dist/core/extensions/index.js.map +1 -0
- package/dist/core/extensions/loader.d.ts +25 -0
- package/dist/core/extensions/loader.d.ts.map +1 -0
- package/dist/core/extensions/loader.js +516 -0
- package/dist/core/extensions/loader.js.map +1 -0
- package/dist/core/extensions/runner.d.ts +180 -0
- package/dist/core/extensions/runner.d.ts.map +1 -0
- package/dist/core/extensions/runner.js +938 -0
- package/dist/core/extensions/runner.js.map +1 -0
- package/dist/core/extensions/types.d.ts +1215 -0
- package/dist/core/extensions/types.d.ts.map +1 -0
- package/dist/core/extensions/types.js +48 -0
- package/dist/core/extensions/types.js.map +1 -0
- package/dist/core/extensions/wrapper.d.ts +20 -0
- package/dist/core/extensions/wrapper.d.ts.map +1 -0
- package/dist/core/extensions/wrapper.js +22 -0
- package/dist/core/extensions/wrapper.js.map +1 -0
- package/dist/core/footer-data-provider.d.ts +54 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -0
- package/dist/core/footer-data-provider.js +338 -0
- package/dist/core/footer-data-provider.js.map +1 -0
- package/dist/core/host-actions.d.ts +107 -0
- package/dist/core/host-actions.d.ts.map +1 -0
- package/dist/core/host-actions.js +632 -0
- package/dist/core/host-actions.js.map +1 -0
- package/dist/core/host-interaction.d.ts +35 -0
- package/dist/core/host-interaction.d.ts.map +1 -0
- package/dist/core/host-interaction.js +2 -0
- package/dist/core/host-interaction.js.map +1 -0
- package/dist/core/http-dispatcher.d.ts +22 -0
- package/dist/core/http-dispatcher.d.ts.map +1 -0
- package/dist/core/http-dispatcher.js +64 -0
- package/dist/core/http-dispatcher.js.map +1 -0
- package/dist/core/index.d.ts +18 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +17 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/keybindings.d.ts +373 -0
- package/dist/core/keybindings.d.ts.map +1 -0
- package/dist/core/keybindings.js +303 -0
- package/dist/core/keybindings.js.map +1 -0
- package/dist/core/lsp/client.d.ts +119 -0
- package/dist/core/lsp/client.d.ts.map +1 -0
- package/dist/core/lsp/client.js +711 -0
- package/dist/core/lsp/client.js.map +1 -0
- package/dist/core/lsp/config.d.ts +96 -0
- package/dist/core/lsp/config.d.ts.map +1 -0
- package/dist/core/lsp/config.js +206 -0
- package/dist/core/lsp/config.js.map +1 -0
- package/dist/core/lsp/index.d.ts +6 -0
- package/dist/core/lsp/index.d.ts.map +1 -0
- package/dist/core/lsp/index.js +6 -0
- package/dist/core/lsp/index.js.map +1 -0
- package/dist/core/lsp/manager.d.ts +122 -0
- package/dist/core/lsp/manager.d.ts.map +1 -0
- package/dist/core/lsp/manager.js +1136 -0
- package/dist/core/lsp/manager.js.map +1 -0
- package/dist/core/lsp/trace.d.ts +26 -0
- package/dist/core/lsp/trace.d.ts.map +1 -0
- package/dist/core/lsp/trace.js +98 -0
- package/dist/core/lsp/trace.js.map +1 -0
- package/dist/core/lsp/workspace-edit.d.ts +60 -0
- package/dist/core/lsp/workspace-edit.d.ts.map +1 -0
- package/dist/core/lsp/workspace-edit.js +71 -0
- package/dist/core/lsp/workspace-edit.js.map +1 -0
- package/dist/core/mcp/audit.d.ts +39 -0
- package/dist/core/mcp/audit.d.ts.map +1 -0
- package/dist/core/mcp/audit.js +35 -0
- package/dist/core/mcp/audit.js.map +1 -0
- package/dist/core/mcp/auth.d.ts +7 -0
- package/dist/core/mcp/auth.d.ts.map +1 -0
- package/dist/core/mcp/auth.js +56 -0
- package/dist/core/mcp/auth.js.map +1 -0
- package/dist/core/mcp/client-factory.d.ts +20 -0
- package/dist/core/mcp/client-factory.d.ts.map +1 -0
- package/dist/core/mcp/client-factory.js +200 -0
- package/dist/core/mcp/client-factory.js.map +1 -0
- package/dist/core/mcp/config-loader.d.ts +9 -0
- package/dist/core/mcp/config-loader.d.ts.map +1 -0
- package/dist/core/mcp/config-loader.js +104 -0
- package/dist/core/mcp/config-loader.js.map +1 -0
- package/dist/core/mcp/config-writer.d.ts +21 -0
- package/dist/core/mcp/config-writer.d.ts.map +1 -0
- package/dist/core/mcp/config-writer.js +124 -0
- package/dist/core/mcp/config-writer.js.map +1 -0
- package/dist/core/mcp/config.d.ts +32 -0
- package/dist/core/mcp/config.d.ts.map +1 -0
- package/dist/core/mcp/config.js +385 -0
- package/dist/core/mcp/config.js.map +1 -0
- package/dist/core/mcp/direct-tools.d.ts +11 -0
- package/dist/core/mcp/direct-tools.d.ts.map +1 -0
- package/dist/core/mcp/direct-tools.js +47 -0
- package/dist/core/mcp/direct-tools.js.map +1 -0
- package/dist/core/mcp/gateway-tool.d.ts +29 -0
- package/dist/core/mcp/gateway-tool.d.ts.map +1 -0
- package/dist/core/mcp/gateway-tool.js +108 -0
- package/dist/core/mcp/gateway-tool.js.map +1 -0
- package/dist/core/mcp/index.d.ts +19 -0
- package/dist/core/mcp/index.d.ts.map +1 -0
- package/dist/core/mcp/index.js +18 -0
- package/dist/core/mcp/index.js.map +1 -0
- package/dist/core/mcp/manager.d.ts +117 -0
- package/dist/core/mcp/manager.d.ts.map +1 -0
- package/dist/core/mcp/manager.js +819 -0
- package/dist/core/mcp/manager.js.map +1 -0
- package/dist/core/mcp/metadata-cache.d.ts +27 -0
- package/dist/core/mcp/metadata-cache.d.ts.map +1 -0
- package/dist/core/mcp/metadata-cache.js +152 -0
- package/dist/core/mcp/metadata-cache.js.map +1 -0
- package/dist/core/mcp/oauth-flow.d.ts +94 -0
- package/dist/core/mcp/oauth-flow.d.ts.map +1 -0
- package/dist/core/mcp/oauth-flow.js +473 -0
- package/dist/core/mcp/oauth-flow.js.map +1 -0
- package/dist/core/mcp/oauth-provider.d.ts +39 -0
- package/dist/core/mcp/oauth-provider.d.ts.map +1 -0
- package/dist/core/mcp/oauth-provider.js +149 -0
- package/dist/core/mcp/oauth-provider.js.map +1 -0
- package/dist/core/mcp/oauth-store.d.ts +27 -0
- package/dist/core/mcp/oauth-store.d.ts.map +1 -0
- package/dist/core/mcp/oauth-store.js +111 -0
- package/dist/core/mcp/oauth-store.js.map +1 -0
- package/dist/core/mcp/output-store.d.ts +55 -0
- package/dist/core/mcp/output-store.d.ts.map +1 -0
- package/dist/core/mcp/output-store.js +206 -0
- package/dist/core/mcp/output-store.js.map +1 -0
- package/dist/core/mcp/rpc.d.ts +13 -0
- package/dist/core/mcp/rpc.d.ts.map +1 -0
- package/dist/core/mcp/rpc.js +29 -0
- package/dist/core/mcp/rpc.js.map +1 -0
- package/dist/core/mcp/safety.d.ts +6 -0
- package/dist/core/mcp/safety.d.ts.map +1 -0
- package/dist/core/mcp/safety.js +65 -0
- package/dist/core/mcp/safety.js.map +1 -0
- package/dist/core/mcp/search.d.ts +8 -0
- package/dist/core/mcp/search.d.ts.map +1 -0
- package/dist/core/mcp/search.js +85 -0
- package/dist/core/mcp/search.js.map +1 -0
- package/dist/core/mcp/server-supervisor.d.ts +59 -0
- package/dist/core/mcp/server-supervisor.d.ts.map +1 -0
- package/dist/core/mcp/server-supervisor.js +331 -0
- package/dist/core/mcp/server-supervisor.js.map +1 -0
- package/dist/core/mcp/types.d.ts +321 -0
- package/dist/core/mcp/types.d.ts.map +1 -0
- package/dist/core/mcp/types.js +2 -0
- package/dist/core/mcp/types.js.map +1 -0
- package/dist/core/messages.d.ts +78 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +138 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/model-catalog-watcher.d.ts +36 -0
- package/dist/core/model-catalog-watcher.d.ts.map +1 -0
- package/dist/core/model-catalog-watcher.js +101 -0
- package/dist/core/model-catalog-watcher.js.map +1 -0
- package/dist/core/model-registry.d.ts +160 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/model-registry.js +754 -0
- package/dist/core/model-registry.js.map +1 -0
- package/dist/core/model-resolver.d.ts +111 -0
- package/dist/core/model-resolver.d.ts.map +1 -0
- package/dist/core/model-resolver.js +534 -0
- package/dist/core/model-resolver.js.map +1 -0
- package/dist/core/output-guard.d.ts +7 -0
- package/dist/core/output-guard.d.ts.map +1 -0
- package/dist/core/output-guard.js +89 -0
- package/dist/core/output-guard.js.map +1 -0
- package/dist/core/package-manager.d.ts +220 -0
- package/dist/core/package-manager.d.ts.map +1 -0
- package/dist/core/package-manager.js +2217 -0
- package/dist/core/package-manager.js.map +1 -0
- package/dist/core/project-trust.d.ts +15 -0
- package/dist/core/project-trust.d.ts.map +1 -0
- package/dist/core/project-trust.js +58 -0
- package/dist/core/project-trust.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +53 -0
- package/dist/core/prompt-templates.d.ts.map +1 -0
- package/dist/core/prompt-templates.js +236 -0
- package/dist/core/prompt-templates.js.map +1 -0
- package/dist/core/provider-attribution.d.ts +4 -0
- package/dist/core/provider-attribution.d.ts.map +1 -0
- package/dist/core/provider-attribution.js +81 -0
- package/dist/core/provider-attribution.js.map +1 -0
- package/dist/core/provider-display-names.d.ts +2 -0
- package/dist/core/provider-display-names.d.ts.map +1 -0
- package/dist/core/provider-display-names.js +36 -0
- package/dist/core/provider-display-names.js.map +1 -0
- package/dist/core/remote/iroh/access-grant.d.ts +40 -0
- package/dist/core/remote/iroh/access-grant.d.ts.map +1 -0
- package/dist/core/remote/iroh/access-grant.js +199 -0
- package/dist/core/remote/iroh/access-grant.js.map +1 -0
- package/dist/core/remote/iroh/active-stream-registry.d.ts +39 -0
- package/dist/core/remote/iroh/active-stream-registry.d.ts.map +1 -0
- package/dist/core/remote/iroh/active-stream-registry.js +109 -0
- package/dist/core/remote/iroh/active-stream-registry.js.map +1 -0
- package/dist/core/remote/iroh/audit.d.ts +67 -0
- package/dist/core/remote/iroh/audit.d.ts.map +1 -0
- package/dist/core/remote/iroh/audit.js +274 -0
- package/dist/core/remote/iroh/audit.js.map +1 -0
- package/dist/core/remote/iroh/authorization.d.ts +46 -0
- package/dist/core/remote/iroh/authorization.d.ts.map +1 -0
- package/dist/core/remote/iroh/authorization.js +327 -0
- package/dist/core/remote/iroh/authorization.js.map +1 -0
- package/dist/core/remote/iroh/control.d.ts +64 -0
- package/dist/core/remote/iroh/control.d.ts.map +1 -0
- package/dist/core/remote/iroh/control.js +326 -0
- package/dist/core/remote/iroh/control.js.map +1 -0
- package/dist/core/remote/iroh/device-log-rpc.d.ts +22 -0
- package/dist/core/remote/iroh/device-log-rpc.d.ts.map +1 -0
- package/dist/core/remote/iroh/device-log-rpc.js +152 -0
- package/dist/core/remote/iroh/device-log-rpc.js.map +1 -0
- package/dist/core/remote/iroh/engine.d.ts +148 -0
- package/dist/core/remote/iroh/engine.d.ts.map +1 -0
- package/dist/core/remote/iroh/engine.js +499 -0
- package/dist/core/remote/iroh/engine.js.map +1 -0
- package/dist/core/remote/iroh/handshake-reader.d.ts +19 -0
- package/dist/core/remote/iroh/handshake-reader.d.ts.map +1 -0
- package/dist/core/remote/iroh/handshake-reader.js +91 -0
- package/dist/core/remote/iroh/handshake-reader.js.map +1 -0
- package/dist/core/remote/iroh/handshake.d.ts +119 -0
- package/dist/core/remote/iroh/handshake.d.ts.map +1 -0
- package/dist/core/remote/iroh/handshake.js +621 -0
- package/dist/core/remote/iroh/handshake.js.map +1 -0
- package/dist/core/remote/iroh/host-policy.d.ts +13 -0
- package/dist/core/remote/iroh/host-policy.d.ts.map +1 -0
- package/dist/core/remote/iroh/host-policy.js +15 -0
- package/dist/core/remote/iroh/host-policy.js.map +1 -0
- package/dist/core/remote/iroh/index.d.ts +25 -0
- package/dist/core/remote/iroh/index.d.ts.map +1 -0
- package/dist/core/remote/iroh/index.js +25 -0
- package/dist/core/remote/iroh/index.js.map +1 -0
- package/dist/core/remote/iroh/metadata.d.ts +28 -0
- package/dist/core/remote/iroh/metadata.d.ts.map +1 -0
- package/dist/core/remote/iroh/metadata.js +16 -0
- package/dist/core/remote/iroh/metadata.js.map +1 -0
- package/dist/core/remote/iroh/outbound-filter.d.ts +29 -0
- package/dist/core/remote/iroh/outbound-filter.d.ts.map +1 -0
- package/dist/core/remote/iroh/outbound-filter.js +692 -0
- package/dist/core/remote/iroh/outbound-filter.js.map +1 -0
- package/dist/core/remote/iroh/protocol.d.ts +60 -0
- package/dist/core/remote/iroh/protocol.d.ts.map +1 -0
- package/dist/core/remote/iroh/protocol.js +204 -0
- package/dist/core/remote/iroh/protocol.js.map +1 -0
- package/dist/core/remote/iroh/push.d.ts +179 -0
- package/dist/core/remote/iroh/push.d.ts.map +1 -0
- package/dist/core/remote/iroh/push.js +662 -0
- package/dist/core/remote/iroh/push.js.map +1 -0
- package/dist/core/remote/iroh/qr.d.ts +12 -0
- package/dist/core/remote/iroh/qr.d.ts.map +1 -0
- package/dist/core/remote/iroh/qr.js +27 -0
- package/dist/core/remote/iroh/qr.js.map +1 -0
- package/dist/core/remote/iroh/rpc-command-filter.d.ts +47 -0
- package/dist/core/remote/iroh/rpc-command-filter.d.ts.map +1 -0
- package/dist/core/remote/iroh/rpc-command-filter.js +188 -0
- package/dist/core/remote/iroh/rpc-command-filter.js.map +1 -0
- package/dist/core/remote/iroh/rpc-transport.d.ts +21 -0
- package/dist/core/remote/iroh/rpc-transport.d.ts.map +1 -0
- package/dist/core/remote/iroh/rpc-transport.js +106 -0
- package/dist/core/remote/iroh/rpc-transport.js.map +1 -0
- package/dist/core/remote/iroh/state-manager.d.ts +141 -0
- package/dist/core/remote/iroh/state-manager.d.ts.map +1 -0
- package/dist/core/remote/iroh/state-manager.js +744 -0
- package/dist/core/remote/iroh/state-manager.js.map +1 -0
- package/dist/core/remote/iroh/state.d.ts +141 -0
- package/dist/core/remote/iroh/state.d.ts.map +1 -0
- package/dist/core/remote/iroh/state.js +433 -0
- package/dist/core/remote/iroh/state.js.map +1 -0
- package/dist/core/remote/iroh/ticket.d.ts +46 -0
- package/dist/core/remote/iroh/ticket.d.ts.map +1 -0
- package/dist/core/remote/iroh/ticket.js +267 -0
- package/dist/core/remote/iroh/ticket.js.map +1 -0
- package/dist/core/remote/iroh/transcript-text.d.ts +8 -0
- package/dist/core/remote/iroh/transcript-text.d.ts.map +1 -0
- package/dist/core/remote/iroh/transcript-text.js +26 -0
- package/dist/core/remote/iroh/transcript-text.js.map +1 -0
- package/dist/core/remote/iroh/workspace-rpc.d.ts +31 -0
- package/dist/core/remote/iroh/workspace-rpc.d.ts.map +1 -0
- package/dist/core/remote/iroh/workspace-rpc.js +73 -0
- package/dist/core/remote/iroh/workspace-rpc.js.map +1 -0
- package/dist/core/remote/iroh/workspace.d.ts +16 -0
- package/dist/core/remote/iroh/workspace.d.ts.map +1 -0
- package/dist/core/remote/iroh/workspace.js +104 -0
- package/dist/core/remote/iroh/workspace.js.map +1 -0
- package/dist/core/remote/iroh/worktree-rpc.d.ts +83 -0
- package/dist/core/remote/iroh/worktree-rpc.d.ts.map +1 -0
- package/dist/core/remote/iroh/worktree-rpc.js +148 -0
- package/dist/core/remote/iroh/worktree-rpc.js.map +1 -0
- package/dist/core/resolve-config-value.d.ts +30 -0
- package/dist/core/resolve-config-value.d.ts.map +1 -0
- package/dist/core/resolve-config-value.js +245 -0
- package/dist/core/resolve-config-value.js.map +1 -0
- package/dist/core/resource-loader.d.ts +214 -0
- package/dist/core/resource-loader.d.ts.map +1 -0
- package/dist/core/resource-loader.js +824 -0
- package/dist/core/resource-loader.js.map +1 -0
- package/dist/core/review.d.ts +318 -0
- package/dist/core/review.d.ts.map +1 -0
- package/dist/core/review.js +1271 -0
- package/dist/core/review.js.map +1 -0
- package/dist/core/rpc/duplex-write-gate.d.ts +29 -0
- package/dist/core/rpc/duplex-write-gate.d.ts.map +1 -0
- package/dist/core/rpc/duplex-write-gate.js +124 -0
- package/dist/core/rpc/duplex-write-gate.js.map +1 -0
- package/dist/core/rpc/index.d.ts +6 -0
- package/dist/core/rpc/index.d.ts.map +1 -0
- package/dist/core/rpc/index.js +5 -0
- package/dist/core/rpc/index.js.map +1 -0
- package/dist/core/rpc/iroh-transport.d.ts +58 -0
- package/dist/core/rpc/iroh-transport.d.ts.map +1 -0
- package/dist/core/rpc/iroh-transport.js +278 -0
- package/dist/core/rpc/iroh-transport.js.map +1 -0
- package/dist/core/rpc/jsonl.d.ts +17 -0
- package/dist/core/rpc/jsonl.d.ts.map +1 -0
- package/dist/core/rpc/jsonl.js +49 -0
- package/dist/core/rpc/jsonl.js.map +1 -0
- package/dist/core/rpc/loopback-transport.d.ts +14 -0
- package/dist/core/rpc/loopback-transport.d.ts.map +1 -0
- package/dist/core/rpc/loopback-transport.js +120 -0
- package/dist/core/rpc/loopback-transport.js.map +1 -0
- package/dist/core/rpc/transcript.d.ts +37 -0
- package/dist/core/rpc/transcript.d.ts.map +1 -0
- package/dist/core/rpc/transcript.js +624 -0
- package/dist/core/rpc/transcript.js.map +1 -0
- package/dist/core/rpc/transport.d.ts +41 -0
- package/dist/core/rpc/transport.d.ts.map +1 -0
- package/dist/core/rpc/transport.js +155 -0
- package/dist/core/rpc/transport.js.map +1 -0
- package/dist/core/rpc/types.d.ts +1254 -0
- package/dist/core/rpc/types.d.ts.map +1 -0
- package/dist/core/rpc/types.js +8 -0
- package/dist/core/rpc/types.js.map +1 -0
- package/dist/core/rpc/ui-action-args.d.ts +3 -0
- package/dist/core/rpc/ui-action-args.d.ts.map +1 -0
- package/dist/core/rpc/ui-action-args.js +66 -0
- package/dist/core/rpc/ui-action-args.js.map +1 -0
- package/dist/core/rpc/ui-actions.d.ts +43 -0
- package/dist/core/rpc/ui-actions.d.ts.map +1 -0
- package/dist/core/rpc/ui-actions.js +362 -0
- package/dist/core/rpc/ui-actions.js.map +1 -0
- package/dist/core/sdk.d.ts +138 -0
- package/dist/core/sdk.d.ts.map +1 -0
- package/dist/core/sdk.js +324 -0
- package/dist/core/sdk.js.map +1 -0
- package/dist/core/session-cwd.d.ts +19 -0
- package/dist/core/session-cwd.d.ts.map +1 -0
- package/dist/core/session-cwd.js +38 -0
- package/dist/core/session-cwd.js.map +1 -0
- package/dist/core/session-manager.d.ts +346 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +1280 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/settings-manager.d.ts +359 -0
- package/dist/core/settings-manager.d.ts.map +1 -0
- package/dist/core/settings-manager.js +1277 -0
- package/dist/core/settings-manager.js.map +1 -0
- package/dist/core/skills.d.ts +60 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +387 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/slash-commands.d.ts +14 -0
- package/dist/core/slash-commands.d.ts.map +1 -0
- package/dist/core/slash-commands.js +51 -0
- package/dist/core/slash-commands.js.map +1 -0
- package/dist/core/source-info.d.ts +18 -0
- package/dist/core/source-info.d.ts.map +1 -0
- package/dist/core/source-info.js +19 -0
- package/dist/core/source-info.js.map +1 -0
- package/dist/core/subagents/delegation-scope.d.ts +47 -0
- package/dist/core/subagents/delegation-scope.d.ts.map +1 -0
- package/dist/core/subagents/delegation-scope.js +134 -0
- package/dist/core/subagents/delegation-scope.js.map +1 -0
- package/dist/core/subagents/index.d.ts +46 -0
- package/dist/core/subagents/index.d.ts.map +1 -0
- package/dist/core/subagents/index.js +369 -0
- package/dist/core/subagents/index.js.map +1 -0
- package/dist/core/subagents/manager.d.ts +183 -0
- package/dist/core/subagents/manager.d.ts.map +1 -0
- package/dist/core/subagents/manager.js +820 -0
- package/dist/core/subagents/manager.js.map +1 -0
- package/dist/core/system-prompt.d.ts +28 -0
- package/dist/core/system-prompt.d.ts.map +1 -0
- package/dist/core/system-prompt.js +180 -0
- package/dist/core/system-prompt.js.map +1 -0
- package/dist/core/telemetry.d.ts +3 -0
- package/dist/core/telemetry.d.ts.map +1 -0
- package/dist/core/telemetry.js +9 -0
- package/dist/core/telemetry.js.map +1 -0
- package/dist/core/theme/dark.json +86 -0
- package/dist/core/theme/discovery.d.ts +48 -0
- package/dist/core/theme/discovery.d.ts.map +1 -0
- package/dist/core/theme/discovery.js +239 -0
- package/dist/core/theme/discovery.js.map +1 -0
- package/dist/core/theme/index.d.ts +6 -0
- package/dist/core/theme/index.d.ts.map +1 -0
- package/dist/core/theme/index.js +5 -0
- package/dist/core/theme/index.js.map +1 -0
- package/dist/core/theme/light.json +85 -0
- package/dist/core/theme/runtime.d.ts +55 -0
- package/dist/core/theme/runtime.d.ts.map +1 -0
- package/dist/core/theme/runtime.js +555 -0
- package/dist/core/theme/runtime.js.map +1 -0
- package/dist/core/theme/theme-schema.json +335 -0
- package/dist/core/theme/theme-service.d.ts +37 -0
- package/dist/core/theme/theme-service.d.ts.map +1 -0
- package/dist/core/theme/theme-service.js +222 -0
- package/dist/core/theme/theme-service.js.map +1 -0
- package/dist/core/theme/theme.d.ts +100 -0
- package/dist/core/theme/theme.d.ts.map +1 -0
- package/dist/core/theme/theme.js +243 -0
- package/dist/core/theme/theme.js.map +1 -0
- package/dist/core/theme/tokens.d.ts +20 -0
- package/dist/core/theme/tokens.d.ts.map +1 -0
- package/dist/core/theme/tokens.js +178 -0
- package/dist/core/theme/tokens.js.map +1 -0
- package/dist/core/theme/types.d.ts +21 -0
- package/dist/core/theme/types.d.ts.map +1 -0
- package/dist/core/theme/types.js +2 -0
- package/dist/core/theme/types.js.map +1 -0
- package/dist/core/timings.d.ts +8 -0
- package/dist/core/timings.d.ts.map +1 -0
- package/dist/core/timings.js +31 -0
- package/dist/core/timings.js.map +1 -0
- package/dist/core/tools/bash.d.ts +68 -0
- package/dist/core/tools/bash.d.ts.map +1 -0
- package/dist/core/tools/bash.js +345 -0
- package/dist/core/tools/bash.js.map +1 -0
- package/dist/core/tools/diagnostics-provider.d.ts +12 -0
- package/dist/core/tools/diagnostics-provider.d.ts.map +1 -0
- package/dist/core/tools/diagnostics-provider.js +2 -0
- package/dist/core/tools/diagnostics-provider.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +77 -0
- package/dist/core/tools/edit-diff.d.ts.map +1 -0
- package/dist/core/tools/edit-diff.js +506 -0
- package/dist/core/tools/edit-diff.js.map +1 -0
- package/dist/core/tools/edit.d.ts +56 -0
- package/dist/core/tools/edit.d.ts.map +1 -0
- package/dist/core/tools/edit.js +300 -0
- package/dist/core/tools/edit.js.map +1 -0
- package/dist/core/tools/file-mutation-queue.d.ts +6 -0
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
- package/dist/core/tools/file-mutation-queue.js +52 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -0
- package/dist/core/tools/find.d.ts +35 -0
- package/dist/core/tools/find.d.ts.map +1 -0
- package/dist/core/tools/find.js +337 -0
- package/dist/core/tools/find.js.map +1 -0
- package/dist/core/tools/grep.d.ts +37 -0
- package/dist/core/tools/grep.d.ts.map +1 -0
- package/dist/core/tools/grep.js +305 -0
- package/dist/core/tools/grep.js.map +1 -0
- package/dist/core/tools/index.d.ts +56 -0
- package/dist/core/tools/index.d.ts.map +1 -0
- package/dist/core/tools/index.js +174 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/ls.d.ts +37 -0
- package/dist/core/tools/ls.d.ts.map +1 -0
- package/dist/core/tools/ls.js +167 -0
- package/dist/core/tools/ls.js.map +1 -0
- package/dist/core/tools/lsp.d.ts +59 -0
- package/dist/core/tools/lsp.d.ts.map +1 -0
- package/dist/core/tools/lsp.js +157 -0
- package/dist/core/tools/lsp.js.map +1 -0
- package/dist/core/tools/output-accumulator.d.ts +52 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -0
- package/dist/core/tools/output-accumulator.js +184 -0
- package/dist/core/tools/output-accumulator.js.map +1 -0
- package/dist/core/tools/path-utils.d.ts +10 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -0
- package/dist/core/tools/path-utils.js +99 -0
- package/dist/core/tools/path-utils.js.map +1 -0
- package/dist/core/tools/read.d.ts +35 -0
- package/dist/core/tools/read.d.ts.map +1 -0
- package/dist/core/tools/read.js +292 -0
- package/dist/core/tools/read.js.map +1 -0
- package/dist/core/tools/render-utils.d.ts +26 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -0
- package/dist/core/tools/render-utils.js +69 -0
- package/dist/core/tools/render-utils.js.map +1 -0
- package/dist/core/tools/subagent.d.ts +219 -0
- package/dist/core/tools/subagent.d.ts.map +1 -0
- package/dist/core/tools/subagent.js +1445 -0
- package/dist/core/tools/subagent.js.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.js +34 -0
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
- package/dist/core/tools/truncate.d.ts +70 -0
- package/dist/core/tools/truncate.d.ts.map +1 -0
- package/dist/core/tools/truncate.js +215 -0
- package/dist/core/tools/truncate.js.map +1 -0
- package/dist/core/tools/web-search.d.ts +69 -0
- package/dist/core/tools/web-search.d.ts.map +1 -0
- package/dist/core/tools/web-search.js +634 -0
- package/dist/core/tools/web-search.js.map +1 -0
- package/dist/core/tools/write.d.ts +33 -0
- package/dist/core/tools/write.d.ts.map +1 -0
- package/dist/core/tools/write.js +210 -0
- package/dist/core/tools/write.js.map +1 -0
- package/dist/core/trust-manager.d.ts +36 -0
- package/dist/core/trust-manager.d.ts.map +1 -0
- package/dist/core/trust-manager.js +220 -0
- package/dist/core/trust-manager.js.map +1 -0
- package/dist/daemon/cli.d.ts +8 -0
- package/dist/daemon/cli.d.ts.map +1 -0
- package/dist/daemon/cli.js +468 -0
- package/dist/daemon/cli.js.map +1 -0
- package/dist/daemon/control-client.d.ts +60 -0
- package/dist/daemon/control-client.d.ts.map +1 -0
- package/dist/daemon/control-client.js +411 -0
- package/dist/daemon/control-client.js.map +1 -0
- package/dist/daemon/control-protocol.d.ts +507 -0
- package/dist/daemon/control-protocol.d.ts.map +1 -0
- package/dist/daemon/control-protocol.js +395 -0
- package/dist/daemon/control-protocol.js.map +1 -0
- package/dist/daemon/control-server.d.ts +77 -0
- package/dist/daemon/control-server.d.ts.map +1 -0
- package/dist/daemon/control-server.js +327 -0
- package/dist/daemon/control-server.js.map +1 -0
- package/dist/daemon/conversation-commands.d.ts +176 -0
- package/dist/daemon/conversation-commands.d.ts.map +1 -0
- package/dist/daemon/conversation-commands.js +1268 -0
- package/dist/daemon/conversation-commands.js.map +1 -0
- package/dist/daemon/daemon-lock.d.ts +27 -0
- package/dist/daemon/daemon-lock.d.ts.map +1 -0
- package/dist/daemon/daemon-lock.js +238 -0
- package/dist/daemon/daemon-lock.js.map +1 -0
- package/dist/daemon/handshake-responses.d.ts +47 -0
- package/dist/daemon/handshake-responses.d.ts.map +1 -0
- package/dist/daemon/handshake-responses.js +113 -0
- package/dist/daemon/handshake-responses.js.map +1 -0
- package/dist/daemon/integrated-runtimes.d.ts +137 -0
- package/dist/daemon/integrated-runtimes.d.ts.map +1 -0
- package/dist/daemon/integrated-runtimes.js +763 -0
- package/dist/daemon/integrated-runtimes.js.map +1 -0
- package/dist/daemon/iroh-native.d.ts +76 -0
- package/dist/daemon/iroh-native.d.ts.map +1 -0
- package/dist/daemon/iroh-native.js +18 -0
- package/dist/daemon/iroh-native.js.map +1 -0
- package/dist/daemon/iroh-resource-guard.d.ts +57 -0
- package/dist/daemon/iroh-resource-guard.d.ts.map +1 -0
- package/dist/daemon/iroh-resource-guard.js +134 -0
- package/dist/daemon/iroh-resource-guard.js.map +1 -0
- package/dist/daemon/iroh-service.d.ts +51 -0
- package/dist/daemon/iroh-service.d.ts.map +1 -0
- package/dist/daemon/iroh-service.js +2604 -0
- package/dist/daemon/iroh-service.js.map +1 -0
- package/dist/daemon/keep-awake.d.ts +62 -0
- package/dist/daemon/keep-awake.d.ts.map +1 -0
- package/dist/daemon/keep-awake.js +190 -0
- package/dist/daemon/keep-awake.js.map +1 -0
- package/dist/daemon/lease-broker.d.ts +139 -0
- package/dist/daemon/lease-broker.d.ts.map +1 -0
- package/dist/daemon/lease-broker.js +504 -0
- package/dist/daemon/lease-broker.js.map +1 -0
- package/dist/daemon/log.d.ts +16 -0
- package/dist/daemon/log.d.ts.map +1 -0
- package/dist/daemon/log.js +40 -0
- package/dist/daemon/log.js.map +1 -0
- package/dist/daemon/main.d.ts +70 -0
- package/dist/daemon/main.d.ts.map +1 -0
- package/dist/daemon/main.js +781 -0
- package/dist/daemon/main.js.map +1 -0
- package/dist/daemon/paths.d.ts +32 -0
- package/dist/daemon/paths.d.ts.map +1 -0
- package/dist/daemon/paths.js +208 -0
- package/dist/daemon/paths.js.map +1 -0
- package/dist/daemon/process-identity.d.ts +58 -0
- package/dist/daemon/process-identity.d.ts.map +1 -0
- package/dist/daemon/process-identity.js +185 -0
- package/dist/daemon/process-identity.js.map +1 -0
- package/dist/daemon/relay-stream.d.ts +89 -0
- package/dist/daemon/relay-stream.d.ts.map +1 -0
- package/dist/daemon/relay-stream.js +202 -0
- package/dist/daemon/relay-stream.js.map +1 -0
- package/dist/daemon/remote-cli.d.ts +7 -0
- package/dist/daemon/remote-cli.d.ts.map +1 -0
- package/dist/daemon/remote-cli.js +774 -0
- package/dist/daemon/remote-cli.js.map +1 -0
- package/dist/daemon/service-install.d.ts +43 -0
- package/dist/daemon/service-install.d.ts.map +1 -0
- package/dist/daemon/service-install.js +198 -0
- package/dist/daemon/service-install.js.map +1 -0
- package/dist/daemon/session-target.d.ts +62 -0
- package/dist/daemon/session-target.d.ts.map +1 -0
- package/dist/daemon/session-target.js +66 -0
- package/dist/daemon/session-target.js.map +1 -0
- package/dist/daemon/spawn.d.ts +53 -0
- package/dist/daemon/spawn.d.ts.map +1 -0
- package/dist/daemon/spawn.js +205 -0
- package/dist/daemon/spawn.js.map +1 -0
- package/dist/daemon/state.d.ts +145 -0
- package/dist/daemon/state.d.ts.map +1 -0
- package/dist/daemon/state.js +454 -0
- package/dist/daemon/state.js.map +1 -0
- package/dist/daemon/theme-push.d.ts +23 -0
- package/dist/daemon/theme-push.d.ts.map +1 -0
- package/dist/daemon/theme-push.js +30 -0
- package/dist/daemon/theme-push.js.map +1 -0
- package/dist/daemon/viewer-feed.d.ts +42 -0
- package/dist/daemon/viewer-feed.d.ts.map +1 -0
- package/dist/daemon/viewer-feed.js +138 -0
- package/dist/daemon/viewer-feed.js.map +1 -0
- package/dist/daemon/workspace-directory.d.ts +35 -0
- package/dist/daemon/workspace-directory.d.ts.map +1 -0
- package/dist/daemon/workspace-directory.js +105 -0
- package/dist/daemon/workspace-directory.js.map +1 -0
- package/dist/daemon/workspace-streams.d.ts +70 -0
- package/dist/daemon/workspace-streams.d.ts.map +1 -0
- package/dist/daemon/workspace-streams.js +289 -0
- package/dist/daemon/workspace-streams.js.map +1 -0
- package/dist/daemon/worktree-manager.d.ts +219 -0
- package/dist/daemon/worktree-manager.d.ts.map +1 -0
- package/dist/daemon/worktree-manager.js +1204 -0
- package/dist/daemon/worktree-manager.js.map +1 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +12 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +773 -0
- package/dist/main.js.map +1 -0
- package/dist/mcp-cli.d.ts +6 -0
- package/dist/mcp-cli.d.ts.map +1 -0
- package/dist/mcp-cli.js +347 -0
- package/dist/mcp-cli.js.map +1 -0
- package/dist/migrations.d.ts +33 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +281 -0
- package/dist/migrations.js.map +1 -0
- package/dist/modes/index.d.ts +13 -0
- package/dist/modes/index.d.ts.map +1 -0
- package/dist/modes/index.js +12 -0
- package/dist/modes/index.js.map +1 -0
- package/dist/modes/interactive/components/armin.d.ts +34 -0
- package/dist/modes/interactive/components/armin.d.ts.map +1 -0
- package/dist/modes/interactive/components/armin.js +333 -0
- package/dist/modes/interactive/components/armin.js.map +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +22 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/assistant-message.js +129 -0
- package/dist/modes/interactive/components/assistant-message.js.map +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +39 -0
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/bash-execution.js +212 -0
- package/dist/modes/interactive/components/bash-execution.js.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts +17 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.js +57 -0
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.js +44 -0
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/config-selector.d.ts +71 -0
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/config-selector.js +510 -0
- package/dist/modes/interactive/components/config-selector.js.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.js +33 -0
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
- package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-editor.js +70 -0
- package/dist/modes/interactive/components/custom-editor.js.map +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +20 -0
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-message.js +76 -0
- package/dist/modes/interactive/components/custom-message.js.map +1 -0
- package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
- package/dist/modes/interactive/components/daxnuts.js +140 -0
- package/dist/modes/interactive/components/daxnuts.js.map +1 -0
- package/dist/modes/interactive/components/diff.d.ts +12 -0
- package/dist/modes/interactive/components/diff.d.ts.map +1 -0
- package/dist/modes/interactive/components/diff.js +133 -0
- package/dist/modes/interactive/components/diff.js.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.js +21 -0
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +20 -0
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-editor.js +116 -0
- package/dist/modes/interactive/components/extension-editor.js.map +1 -0
- package/dist/modes/interactive/components/extension-input.d.ts +23 -0
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-input.js +61 -0
- package/dist/modes/interactive/components/extension-input.js.map +1 -0
- package/dist/modes/interactive/components/extension-selector.d.ts +27 -0
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-selector.js +98 -0
- package/dist/modes/interactive/components/extension-selector.js.map +1 -0
- package/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
- package/dist/modes/interactive/components/first-time-setup.js +103 -0
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +27 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -0
- package/dist/modes/interactive/components/footer.js +180 -0
- package/dist/modes/interactive/components/footer.js.map +1 -0
- package/dist/modes/interactive/components/hotkeys.d.ts +24 -0
- package/dist/modes/interactive/components/hotkeys.d.ts.map +1 -0
- package/dist/modes/interactive/components/hotkeys.js +97 -0
- package/dist/modes/interactive/components/hotkeys.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +35 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -0
- package/dist/modes/interactive/components/index.js +36 -0
- package/dist/modes/interactive/components/index.js.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +19 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.js +48 -0
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +52 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
- package/dist/modes/interactive/components/login-dialog.js +179 -0
- package/dist/modes/interactive/components/login-dialog.js.map +1 -0
- package/dist/modes/interactive/components/logo.d.ts +25 -0
- package/dist/modes/interactive/components/logo.d.ts.map +1 -0
- package/dist/modes/interactive/components/logo.js +89 -0
- package/dist/modes/interactive/components/logo.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +47 -0
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/model-selector.js +278 -0
- package/dist/modes/interactive/components/model-selector.js.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +31 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.js +165 -0
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
- package/dist/modes/interactive/components/remote-control-center.d.ts +110 -0
- package/dist/modes/interactive/components/remote-control-center.d.ts.map +1 -0
- package/dist/modes/interactive/components/remote-control-center.js +1217 -0
- package/dist/modes/interactive/components/remote-control-center.js.map +1 -0
- package/dist/modes/interactive/components/review-tools-selector.d.ts +24 -0
- package/dist/modes/interactive/components/review-tools-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/review-tools-selector.js +93 -0
- package/dist/modes/interactive/components/review-tools-selector.js.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +42 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.js +290 -0
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.js +155 -0
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +95 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector.js +856 -0
- package/dist/modes/interactive/components/session-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +77 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector.js +484 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.js +39 -0
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
- package/dist/modes/interactive/components/streaming-render-coalescer.d.ts +29 -0
- package/dist/modes/interactive/components/streaming-render-coalescer.d.ts.map +1 -0
- package/dist/modes/interactive/components/streaming-render-coalescer.js +98 -0
- package/dist/modes/interactive/components/streaming-render-coalescer.js.map +1 -0
- package/dist/modes/interactive/components/subagent-inspector.d.ts +32 -0
- package/dist/modes/interactive/components/subagent-inspector.d.ts.map +1 -0
- package/dist/modes/interactive/components/subagent-inspector.js +439 -0
- package/dist/modes/interactive/components/subagent-inspector.js.map +1 -0
- package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/theme-selector.js +50 -0
- package/dist/modes/interactive/components/theme-selector.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.js +52 -0
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +83 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-execution.js +421 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +89 -0
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector.js +1208 -0
- package/dist/modes/interactive/components/tree-selector.js.map +1 -0
- package/dist/modes/interactive/components/trust-selector.d.ts +23 -0
- package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/trust-selector.js +91 -0
- package/dist/modes/interactive/components/trust-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.js +114 -0
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +9 -0
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message.js +42 -0
- package/dist/modes/interactive/components/user-message.js.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.js +33 -0
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
- package/dist/modes/interactive/components/volt-announcement.d.ts +5 -0
- package/dist/modes/interactive/components/volt-announcement.d.ts.map +1 -0
- package/dist/modes/interactive/components/volt-announcement.js +15 -0
- package/dist/modes/interactive/components/volt-announcement.js.map +1 -0
- package/dist/modes/interactive/daemon-attach.d.ts +154 -0
- package/dist/modes/interactive/daemon-attach.d.ts.map +1 -0
- package/dist/modes/interactive/daemon-attach.js +552 -0
- package/dist/modes/interactive/daemon-attach.js.map +1 -0
- package/dist/modes/interactive/drain-viewer.d.ts +31 -0
- package/dist/modes/interactive/drain-viewer.d.ts.map +1 -0
- package/dist/modes/interactive/drain-viewer.js +166 -0
- package/dist/modes/interactive/drain-viewer.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +502 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode.js +7007 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -0
- package/dist/modes/interactive/prompt-image-attachments.d.ts +34 -0
- package/dist/modes/interactive/prompt-image-attachments.d.ts.map +1 -0
- package/dist/modes/interactive/prompt-image-attachments.js +120 -0
- package/dist/modes/interactive/prompt-image-attachments.js.map +1 -0
- package/dist/modes/interactive/relay-stream-adapter.d.ts +19 -0
- package/dist/modes/interactive/relay-stream-adapter.d.ts.map +1 -0
- package/dist/modes/interactive/relay-stream-adapter.js +107 -0
- package/dist/modes/interactive/relay-stream-adapter.js.map +1 -0
- package/dist/modes/print-mode.d.ts +28 -0
- package/dist/modes/print-mode.d.ts.map +1 -0
- package/dist/modes/print-mode.js +132 -0
- package/dist/modes/print-mode.js.map +1 -0
- package/dist/modes/rpc/in-process-rpc-client.d.ts +31 -0
- package/dist/modes/rpc/in-process-rpc-client.d.ts.map +1 -0
- package/dist/modes/rpc/in-process-rpc-client.js +63 -0
- package/dist/modes/rpc/in-process-rpc-client.js.map +1 -0
- package/dist/modes/rpc/iroh-remote-agent-runtime.d.ts +61 -0
- package/dist/modes/rpc/iroh-remote-agent-runtime.d.ts.map +1 -0
- package/dist/modes/rpc/iroh-remote-agent-runtime.js +155 -0
- package/dist/modes/rpc/iroh-remote-agent-runtime.js.map +1 -0
- package/dist/modes/rpc/iroh-remote-rpc-mode.d.ts +69 -0
- package/dist/modes/rpc/iroh-remote-rpc-mode.d.ts.map +1 -0
- package/dist/modes/rpc/iroh-remote-rpc-mode.js +1223 -0
- package/dist/modes/rpc/iroh-remote-rpc-mode.js.map +1 -0
- package/dist/modes/rpc/jsonl.d.ts +2 -0
- package/dist/modes/rpc/jsonl.d.ts.map +1 -0
- package/dist/modes/rpc/jsonl.js +2 -0
- package/dist/modes/rpc/jsonl.js.map +1 -0
- package/dist/modes/rpc/rpc-client-base.d.ts +209 -0
- package/dist/modes/rpc/rpc-client-base.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client-base.js +530 -0
- package/dist/modes/rpc/rpc-client-base.js.map +1 -0
- package/dist/modes/rpc/rpc-client.d.ts +50 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client.js +190 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -0
- package/dist/modes/rpc/rpc-command-dispatcher.d.ts +43 -0
- package/dist/modes/rpc/rpc-command-dispatcher.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-command-dispatcher.js +613 -0
- package/dist/modes/rpc/rpc-command-dispatcher.js.map +1 -0
- package/dist/modes/rpc/rpc-command-validation.d.ts +2 -0
- package/dist/modes/rpc/rpc-command-validation.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-command-validation.js +207 -0
- package/dist/modes/rpc/rpc-command-validation.js.map +1 -0
- package/dist/modes/rpc/rpc-mode.d.ts +48 -0
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-mode.js +1089 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -0
- package/dist/modes/rpc/rpc-transport-client.d.ts +26 -0
- package/dist/modes/rpc/rpc-transport-client.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-transport-client.js +76 -0
- package/dist/modes/rpc/rpc-transport-client.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +2 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-types.js +2 -0
- package/dist/modes/rpc/rpc-types.js.map +1 -0
- package/dist/package-manager-cli.d.ts +28 -0
- package/dist/package-manager-cli.d.ts.map +1 -0
- package/dist/package-manager-cli.js +667 -0
- package/dist/package-manager-cli.js.map +1 -0
- package/dist/remote/integrated-runtime-retention.d.ts +17 -0
- package/dist/remote/integrated-runtime-retention.d.ts.map +1 -0
- package/dist/remote/integrated-runtime-retention.js +62 -0
- package/dist/remote/integrated-runtime-retention.js.map +1 -0
- package/dist/remote/iroh-native-adapter.cjs +19 -0
- package/dist/sea/cli.d.ts +4 -0
- package/dist/sea/cli.d.ts.map +1 -0
- package/dist/sea/cli.js +4 -0
- package/dist/sea/cli.js.map +1 -0
- package/dist/sea/register-bedrock.d.ts +2 -0
- package/dist/sea/register-bedrock.d.ts.map +1 -0
- package/dist/sea/register-bedrock.js +4 -0
- package/dist/sea/register-bedrock.js.map +1 -0
- package/dist/store/catalog.d.ts +57 -0
- package/dist/store/catalog.d.ts.map +1 -0
- package/dist/store/catalog.js +331 -0
- package/dist/store/catalog.js.map +1 -0
- package/dist/store/inspector.d.ts +36 -0
- package/dist/store/inspector.d.ts.map +1 -0
- package/dist/store/inspector.js +578 -0
- package/dist/store/inspector.js.map +1 -0
- package/dist/store/install-plan.d.ts +26 -0
- package/dist/store/install-plan.d.ts.map +1 -0
- package/dist/store/install-plan.js +80 -0
- package/dist/store/install-plan.js.map +1 -0
- package/dist/store/render.d.ts +11 -0
- package/dist/store/render.d.ts.map +1 -0
- package/dist/store/render.js +153 -0
- package/dist/store/render.js.map +1 -0
- package/dist/store/resolver.d.ts +22 -0
- package/dist/store/resolver.d.ts.map +1 -0
- package/dist/store/resolver.js +207 -0
- package/dist/store/resolver.js.map +1 -0
- package/dist/store/store-cli.d.ts +7 -0
- package/dist/store/store-cli.d.ts.map +1 -0
- package/dist/store/store-cli.js +636 -0
- package/dist/store/store-cli.js.map +1 -0
- package/dist/store/targets.d.ts +21 -0
- package/dist/store/targets.d.ts.map +1 -0
- package/dist/store/targets.js +55 -0
- package/dist/store/targets.js.map +1 -0
- package/dist/utils/ansi.d.ts +2 -0
- package/dist/utils/ansi.d.ts.map +1 -0
- package/dist/utils/ansi.js +52 -0
- package/dist/utils/ansi.js.map +1 -0
- package/dist/utils/changelog.d.ts +22 -0
- package/dist/utils/changelog.d.ts.map +1 -0
- package/dist/utils/changelog.js +165 -0
- package/dist/utils/changelog.js.map +1 -0
- package/dist/utils/child-process.d.ts +18 -0
- package/dist/utils/child-process.d.ts.map +1 -0
- package/dist/utils/child-process.js +106 -0
- package/dist/utils/child-process.js.map +1 -0
- package/dist/utils/clipboard-image.d.ts +11 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -0
- package/dist/utils/clipboard-image.js +245 -0
- package/dist/utils/clipboard-image.js.map +1 -0
- package/dist/utils/clipboard.d.ts +2 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +94 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/deprecation.d.ts +4 -0
- package/dist/utils/deprecation.d.ts.map +1 -0
- package/dist/utils/deprecation.js +13 -0
- package/dist/utils/deprecation.js.map +1 -0
- package/dist/utils/durable-atomic-write.d.ts +46 -0
- package/dist/utils/durable-atomic-write.d.ts.map +1 -0
- package/dist/utils/durable-atomic-write.js +104 -0
- package/dist/utils/durable-atomic-write.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +8 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +26 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/fs-watch.d.ts +5 -0
- package/dist/utils/fs-watch.d.ts.map +1 -0
- package/dist/utils/fs-watch.js +25 -0
- package/dist/utils/fs-watch.js.map +1 -0
- package/dist/utils/git.d.ts +26 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +195 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/html.d.ts +7 -0
- package/dist/utils/html.d.ts.map +1 -0
- package/dist/utils/html.js +40 -0
- package/dist/utils/html.js.map +1 -0
- package/dist/utils/ignore-files.d.ts +5 -0
- package/dist/utils/ignore-files.d.ts.map +1 -0
- package/dist/utils/ignore-files.js +58 -0
- package/dist/utils/ignore-files.js.map +1 -0
- package/dist/utils/image-codec.d.ts +22 -0
- package/dist/utils/image-codec.d.ts.map +1 -0
- package/dist/utils/image-codec.js +35 -0
- package/dist/utils/image-codec.js.map +1 -0
- package/dist/utils/image-convert.d.ts +9 -0
- package/dist/utils/image-convert.d.ts.map +1 -0
- package/dist/utils/image-convert.js +26 -0
- package/dist/utils/image-convert.js.map +1 -0
- package/dist/utils/image-resize-core.d.ts +31 -0
- package/dist/utils/image-resize-core.d.ts.map +1 -0
- package/dist/utils/image-resize-core.js +181 -0
- package/dist/utils/image-resize-core.js.map +1 -0
- package/dist/utils/image-resize-worker.d.ts +2 -0
- package/dist/utils/image-resize-worker.d.ts.map +1 -0
- package/dist/utils/image-resize-worker.js +31 -0
- package/dist/utils/image-resize-worker.js.map +1 -0
- package/dist/utils/image-resize.d.ts +15 -0
- package/dist/utils/image-resize.d.ts.map +1 -0
- package/dist/utils/image-resize.js +92 -0
- package/dist/utils/image-resize.js.map +1 -0
- package/dist/utils/json.d.ts +3 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +7 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/mime.d.ts +3 -0
- package/dist/utils/mime.d.ts.map +1 -0
- package/dist/utils/mime.js +69 -0
- package/dist/utils/mime.js.map +1 -0
- package/dist/utils/npm-spec.d.ts +9 -0
- package/dist/utils/npm-spec.d.ts.map +1 -0
- package/dist/utils/npm-spec.js +15 -0
- package/dist/utils/npm-spec.js.map +1 -0
- package/dist/utils/open-browser.d.ts +9 -0
- package/dist/utils/open-browser.d.ts.map +1 -0
- package/dist/utils/open-browser.js +22 -0
- package/dist/utils/open-browser.js.map +1 -0
- package/dist/utils/paths.d.ts +31 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +92 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/private-files.d.ts +21 -0
- package/dist/utils/private-files.d.ts.map +1 -0
- package/dist/utils/private-files.js +103 -0
- package/dist/utils/private-files.js.map +1 -0
- package/dist/utils/process-env.d.ts +2 -0
- package/dist/utils/process-env.d.ts.map +1 -0
- package/dist/utils/process-env.js +31 -0
- package/dist/utils/process-env.js.map +1 -0
- package/dist/utils/shell.d.ts +30 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +195 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/sleep.d.ts +5 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +17 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/syntax-highlight.d.ts +18 -0
- package/dist/utils/syntax-highlight.d.ts.map +1 -0
- package/dist/utils/syntax-highlight.js +139 -0
- package/dist/utils/syntax-highlight.js.map +1 -0
- package/dist/utils/tools-manager.d.ts +3 -0
- package/dist/utils/tools-manager.d.ts.map +1 -0
- package/dist/utils/tools-manager.js +328 -0
- package/dist/utils/tools-manager.js.map +1 -0
- package/dist/utils/version-check.d.ts +15 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +61 -0
- package/dist/utils/version-check.js.map +1 -0
- package/dist/utils/volt-user-agent.d.ts +2 -0
- package/dist/utils/volt-user-agent.d.ts.map +1 -0
- package/dist/utils/volt-user-agent.js +5 -0
- package/dist/utils/volt-user-agent.js.map +1 -0
- package/dist/utils/windows-self-update.d.ts +3 -0
- package/dist/utils/windows-self-update.d.ts.map +1 -0
- package/dist/utils/windows-self-update.js +77 -0
- package/dist/utils/windows-self-update.js.map +1 -0
- package/docs/compaction.md +394 -0
- package/docs/containerization.md +111 -0
- package/docs/custom-provider.md +737 -0
- package/docs/daemon.md +190 -0
- package/docs/development.md +70 -0
- package/docs/docs.json +176 -0
- package/docs/extensions.md +2692 -0
- package/docs/images/exy.png +0 -0
- package/docs/images/interactive-mode.png +0 -0
- package/docs/images/tree-view.png +0 -0
- package/docs/index.md +82 -0
- package/docs/iroh-remote-access-design.md +340 -0
- package/docs/iroh-remote-protocol.md +431 -0
- package/docs/json.md +87 -0
- package/docs/keybindings.md +200 -0
- package/docs/live-shared-session-daemon-design.md +1090 -0
- package/docs/lsp.md +143 -0
- package/docs/mcp.md +1044 -0
- package/docs/models.md +495 -0
- package/docs/packages.md +230 -0
- package/docs/prompt-templates.md +108 -0
- package/docs/providers.md +274 -0
- package/docs/quickstart.md +165 -0
- package/docs/rpc.md +2050 -0
- package/docs/sdk.md +1267 -0
- package/docs/security.md +139 -0
- package/docs/session-format.md +412 -0
- package/docs/sessions.md +145 -0
- package/docs/settings.md +371 -0
- package/docs/shell-aliases.md +13 -0
- package/docs/skills.md +243 -0
- package/docs/subagents-design.md +419 -0
- package/docs/terminal-setup.md +148 -0
- package/docs/termux.md +127 -0
- package/docs/themes.md +295 -0
- package/docs/tla/ClientAuth.cfg +16 -0
- package/docs/tla/ClientAuth.tla +205 -0
- package/docs/tla/ClientConn.cfg +16 -0
- package/docs/tla/ClientConn.tla +265 -0
- package/docs/tla/LeaseBroker.cfg +43 -0
- package/docs/tla/LeaseBroker.tla +563 -0
- package/docs/tla/PLAN.md +240 -0
- package/docs/tla/PushOrdering.cfg +17 -0
- package/docs/tla/PushOrdering.tla +183 -0
- package/docs/tla/README.md +205 -0
- package/docs/tla/RelayViewer.cfg +26 -0
- package/docs/tla/RelayViewer.tla +299 -0
- package/docs/tla/SessionTarget.cfg +18 -0
- package/docs/tla/SessionTarget.tla +192 -0
- package/docs/tla/check.sh +34 -0
- package/docs/tmux.md +63 -0
- package/docs/tui.md +949 -0
- package/docs/usage.md +482 -0
- package/docs/windows.md +17 -0
- package/docs/worktrees-design.md +605 -0
- package/examples/README.md +28 -0
- package/examples/extensions/README.md +211 -0
- package/examples/extensions/auto-commit-on-exit.ts +49 -0
- package/examples/extensions/bash-spawn-hook.ts +30 -0
- package/examples/extensions/bookmark.ts +50 -0
- package/examples/extensions/border-status-editor.ts +150 -0
- package/examples/extensions/built-in-tool-renderer.ts +249 -0
- package/examples/extensions/claude-rules.ts +86 -0
- package/examples/extensions/commands.ts +72 -0
- package/examples/extensions/confirm-destructive.ts +59 -0
- package/examples/extensions/custom-compaction.ts +127 -0
- package/examples/extensions/custom-footer.ts +64 -0
- package/examples/extensions/custom-header.ts +72 -0
- package/examples/extensions/custom-provider-anthropic/index.ts +604 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
- package/examples/extensions/custom-provider-anthropic/package.json +19 -0
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +400 -0
- package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
- package/examples/extensions/dirty-repo-guard.ts +56 -0
- package/examples/extensions/dynamic-resources/SKILL.md +8 -0
- package/examples/extensions/dynamic-resources/dynamic.json +79 -0
- package/examples/extensions/dynamic-resources/dynamic.md +5 -0
- package/examples/extensions/dynamic-resources/index.ts +15 -0
- package/examples/extensions/dynamic-tools.ts +74 -0
- package/examples/extensions/event-bus.ts +43 -0
- package/examples/extensions/file-trigger.ts +41 -0
- package/examples/extensions/git-checkpoint.ts +53 -0
- package/examples/extensions/git-merge-and-resolve.ts +115 -0
- package/examples/extensions/github-issue-autocomplete.ts +185 -0
- package/examples/extensions/gondolin/index.ts +531 -0
- package/examples/extensions/gondolin/package-lock.json +185 -0
- package/examples/extensions/gondolin/package.json +19 -0
- package/examples/extensions/handoff.ts +191 -0
- package/examples/extensions/hello.ts +26 -0
- package/examples/extensions/hidden-thinking-label.ts +53 -0
- package/examples/extensions/inline-bash.ts +94 -0
- package/examples/extensions/input-transform-streaming.ts +39 -0
- package/examples/extensions/input-transform.ts +43 -0
- package/examples/extensions/interactive-shell.ts +196 -0
- package/examples/extensions/mac-system-theme.ts +47 -0
- package/examples/extensions/message-renderer.ts +59 -0
- package/examples/extensions/minimal-mode.ts +426 -0
- package/examples/extensions/modal-editor.ts +85 -0
- package/examples/extensions/model-status.ts +31 -0
- package/examples/extensions/notify.ts +55 -0
- package/examples/extensions/overlay-qa-tests.ts +1450 -0
- package/examples/extensions/overlay-test.ts +153 -0
- package/examples/extensions/permission-gate.ts +34 -0
- package/examples/extensions/pirate.ts +47 -0
- package/examples/extensions/plan-mode/README.md +65 -0
- package/examples/extensions/plan-mode/index.ts +340 -0
- package/examples/extensions/plan-mode/utils.ts +168 -0
- package/examples/extensions/preset.ts +436 -0
- package/examples/extensions/project-trust.ts +64 -0
- package/examples/extensions/prompt-customizer.ts +97 -0
- package/examples/extensions/protected-paths.ts +30 -0
- package/examples/extensions/provider-payload.ts +18 -0
- package/examples/extensions/qna.ts +122 -0
- package/examples/extensions/question.ts +277 -0
- package/examples/extensions/questionnaire.ts +440 -0
- package/examples/extensions/rainbow-editor.ts +88 -0
- package/examples/extensions/reload-runtime.ts +37 -0
- package/examples/extensions/rpc-demo.ts +118 -0
- package/examples/extensions/sandbox/index.ts +321 -0
- package/examples/extensions/sandbox/package-lock.json +92 -0
- package/examples/extensions/sandbox/package.json +19 -0
- package/examples/extensions/send-user-message.ts +97 -0
- package/examples/extensions/session-name.ts +27 -0
- package/examples/extensions/shutdown-command.ts +63 -0
- package/examples/extensions/snake.ts +343 -0
- package/examples/extensions/space-invaders.ts +560 -0
- package/examples/extensions/ssh.ts +220 -0
- package/examples/extensions/status-line.ts +32 -0
- package/examples/extensions/structured-output.ts +65 -0
- package/examples/extensions/subagent/README.md +175 -0
- package/examples/extensions/subagent/agents/planner.md +37 -0
- package/examples/extensions/subagent/agents/reviewer.md +35 -0
- package/examples/extensions/subagent/agents/scout.md +50 -0
- package/examples/extensions/subagent/agents/worker.md +24 -0
- package/examples/extensions/subagent/agents.ts +126 -0
- package/examples/extensions/subagent/index.ts +1009 -0
- package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
- package/examples/extensions/subagent/prompts/implement.md +10 -0
- package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
- package/examples/extensions/summarize.ts +206 -0
- package/examples/extensions/system-prompt-header.ts +17 -0
- package/examples/extensions/tic-tac-toe.ts +1008 -0
- package/examples/extensions/timed-confirm.ts +70 -0
- package/examples/extensions/titlebar-spinner.ts +58 -0
- package/examples/extensions/todo.ts +297 -0
- package/examples/extensions/tool-override.ts +144 -0
- package/examples/extensions/tools.ts +146 -0
- package/examples/extensions/trigger-compact.ts +50 -0
- package/examples/extensions/truncated-tool.ts +195 -0
- package/examples/extensions/widget-placement.ts +9 -0
- package/examples/extensions/with-deps/index.ts +32 -0
- package/examples/extensions/with-deps/package-lock.json +31 -0
- package/examples/extensions/with-deps/package.json +22 -0
- package/examples/extensions/working-indicator.ts +123 -0
- package/examples/extensions/working-message-test.ts +25 -0
- package/examples/remote/firebase-push-relay/README.md +79 -0
- package/examples/remote/firebase-push-relay/firebase.json +12 -0
- package/examples/remote/firebase-push-relay/firestore.indexes.json +11 -0
- package/examples/remote/firebase-push-relay/firestore.rules +9 -0
- package/examples/remote/firebase-push-relay/functions/core.js +511 -0
- package/examples/remote/firebase-push-relay/functions/core.test.js +273 -0
- package/examples/remote/firebase-push-relay/functions/index.js +413 -0
- package/examples/remote/firebase-push-relay/functions/package-lock.json +2974 -0
- package/examples/remote/firebase-push-relay/functions/package.json +18 -0
- package/examples/remote/iroh-sidecar/README.md +211 -0
- package/examples/remote/iroh-sidecar/client.mjs +554 -0
- package/examples/remote/iroh-sidecar/common.mjs +195 -0
- package/examples/remote/iroh-sidecar/host.mjs +4 -0
- package/examples/remote/iroh-sidecar/package-lock.json +213 -0
- package/examples/remote/iroh-sidecar/package.json +13 -0
- package/examples/remote/iroh-sidecar/source-aware-run.mjs +41 -0
- package/examples/rpc-extension-ui.ts +632 -0
- package/examples/sdk/01-minimal.ts +26 -0
- package/examples/sdk/02-custom-model.ts +53 -0
- package/examples/sdk/03-custom-prompt.ts +70 -0
- package/examples/sdk/04-skills.ts +55 -0
- package/examples/sdk/05-tools.ts +48 -0
- package/examples/sdk/06-extensions.ts +94 -0
- package/examples/sdk/07-context-files.ts +42 -0
- package/examples/sdk/08-prompt-templates.ts +51 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +52 -0
- package/examples/sdk/10-settings.ts +53 -0
- package/examples/sdk/11-sessions.ts +52 -0
- package/examples/sdk/12-full-control.ts +78 -0
- package/examples/sdk/13-session-runtime.ts +67 -0
- package/examples/sdk/README.md +147 -0
- package/npm-shrinkwrap.json +3442 -0
- package/package.json +125 -19
|
@@ -0,0 +1,530 @@
|
|
|
1
|
+
const MALFORMED_RPC_LINE_PREVIEW_CHARS = 200;
|
|
2
|
+
export class RpcClientBase {
|
|
3
|
+
requestTimeoutMs;
|
|
4
|
+
eventListeners = [];
|
|
5
|
+
pendingRequests = new Map();
|
|
6
|
+
requestId = 0;
|
|
7
|
+
failureError = null;
|
|
8
|
+
constructor(options = {}) {
|
|
9
|
+
this.requestTimeoutMs = options.requestTimeoutMs ?? 30_000;
|
|
10
|
+
}
|
|
11
|
+
/** Subscribe to RPC events and extension UI requests. */
|
|
12
|
+
onEvent(listener) {
|
|
13
|
+
this.eventListeners.push(listener);
|
|
14
|
+
return () => {
|
|
15
|
+
const index = this.eventListeners.indexOf(listener);
|
|
16
|
+
if (index !== -1) {
|
|
17
|
+
this.eventListeners.splice(index, 1);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/** Respond to an extension UI request emitted through onEvent(). */
|
|
22
|
+
async sendExtensionUIResponse(response) {
|
|
23
|
+
await this.sendOneWay(response);
|
|
24
|
+
}
|
|
25
|
+
/** Respond to a host-initiated action request emitted through onEvent(). */
|
|
26
|
+
async sendHostActionResponse(response) {
|
|
27
|
+
await this.sendOneWay(response);
|
|
28
|
+
}
|
|
29
|
+
/** Advertise client-supported optional protocol features. */
|
|
30
|
+
async setClientCapabilities(features) {
|
|
31
|
+
await this.send({ type: "set_client_capabilities", features });
|
|
32
|
+
}
|
|
33
|
+
/** Return host actions currently waiting for client response. */
|
|
34
|
+
async getPendingHostActions() {
|
|
35
|
+
const response = await this.send({ type: "get_pending_host_actions" });
|
|
36
|
+
return this.getData(response).actions;
|
|
37
|
+
}
|
|
38
|
+
/** Send a prompt to the agent. */
|
|
39
|
+
async prompt(message, images, onAccepted) {
|
|
40
|
+
await this.send({ type: "prompt", message, images }, onAccepted);
|
|
41
|
+
}
|
|
42
|
+
/** Queue a steering message to interrupt the agent mid-run. */
|
|
43
|
+
async steer(message, images) {
|
|
44
|
+
await this.send({ type: "steer", message, images });
|
|
45
|
+
}
|
|
46
|
+
/** Queue a follow-up message to be processed after the agent finishes. */
|
|
47
|
+
async followUp(message, images) {
|
|
48
|
+
await this.send({ type: "follow_up", message, images });
|
|
49
|
+
}
|
|
50
|
+
/** Abort current operation. */
|
|
51
|
+
async abort() {
|
|
52
|
+
await this.send({ type: "abort" });
|
|
53
|
+
}
|
|
54
|
+
/** Start a new session, optionally with parent tracking. */
|
|
55
|
+
async newSession(parentSession) {
|
|
56
|
+
const response = await this.send({ type: "new_session", parentSession });
|
|
57
|
+
return this.getData(response);
|
|
58
|
+
}
|
|
59
|
+
/** Get current session state. */
|
|
60
|
+
async getState() {
|
|
61
|
+
const response = await this.send({ type: "get_state" });
|
|
62
|
+
return this.getData(response);
|
|
63
|
+
}
|
|
64
|
+
/** Get a UI-ready projected transcript for the active session. */
|
|
65
|
+
async getTranscript(options = {}) {
|
|
66
|
+
const response = await this.send({
|
|
67
|
+
type: "get_transcript",
|
|
68
|
+
limit: options.limit,
|
|
69
|
+
beforeEntryId: options.beforeEntryId,
|
|
70
|
+
});
|
|
71
|
+
return this.getData(response);
|
|
72
|
+
}
|
|
73
|
+
/** Get native UI action protocol capabilities. */
|
|
74
|
+
async getUiCapabilities() {
|
|
75
|
+
const response = await this.send({ type: "get_ui_capabilities" });
|
|
76
|
+
return this.getData(response);
|
|
77
|
+
}
|
|
78
|
+
/** Get native UI action descriptors. */
|
|
79
|
+
async getUiActions(scope) {
|
|
80
|
+
const response = await this.send({ type: "get_ui_actions", scope });
|
|
81
|
+
return this.getData(response).actions;
|
|
82
|
+
}
|
|
83
|
+
/** Get native UI action completions for one argument. */
|
|
84
|
+
async getUiActionCompletions(action, argument, prefix) {
|
|
85
|
+
const response = await this.send({ type: "get_ui_action_completions", action, argument, prefix });
|
|
86
|
+
return this.getData(response).completions;
|
|
87
|
+
}
|
|
88
|
+
/** Invoke a native UI action by id. */
|
|
89
|
+
async invokeUiAction(action, options = {}) {
|
|
90
|
+
const response = await this.send({
|
|
91
|
+
type: "invoke_ui_action",
|
|
92
|
+
action,
|
|
93
|
+
args: options.args,
|
|
94
|
+
streamingBehavior: options.streamingBehavior,
|
|
95
|
+
});
|
|
96
|
+
return this.getData(response);
|
|
97
|
+
}
|
|
98
|
+
/** List discovered subagent definitions available to local RPC clients. */
|
|
99
|
+
async listSubagents() {
|
|
100
|
+
const response = await this.send({ type: "list_subagents" });
|
|
101
|
+
return this.getData(response);
|
|
102
|
+
}
|
|
103
|
+
/** Start a local RPC-managed subagent and send its initial prompt. */
|
|
104
|
+
async startSubagent(agent, prompt) {
|
|
105
|
+
const response = await this.send({ type: "subagent_start", agent, prompt });
|
|
106
|
+
return this.getData(response);
|
|
107
|
+
}
|
|
108
|
+
/** Abort and dispose a local RPC-managed subagent. */
|
|
109
|
+
async abortSubagent(subagentId) {
|
|
110
|
+
await this.send({ type: "subagent_abort", subagentId });
|
|
111
|
+
}
|
|
112
|
+
/** Get state for a local RPC-managed subagent. */
|
|
113
|
+
async getSubagentState(subagentId) {
|
|
114
|
+
const response = await this.send({ type: "subagent_get_state", subagentId });
|
|
115
|
+
return this.getData(response);
|
|
116
|
+
}
|
|
117
|
+
/** Get a transcript projection for a local RPC-managed subagent. */
|
|
118
|
+
async getSubagentTranscript(subagentId, options = {}) {
|
|
119
|
+
const response = await this.send({
|
|
120
|
+
type: "subagent_get_transcript",
|
|
121
|
+
subagentId,
|
|
122
|
+
limit: options.limit,
|
|
123
|
+
beforeEntryId: options.beforeEntryId,
|
|
124
|
+
});
|
|
125
|
+
return this.getData(response);
|
|
126
|
+
}
|
|
127
|
+
/** Dispose a local RPC-managed subagent without sending an abort request first. */
|
|
128
|
+
async disposeSubagent(subagentId) {
|
|
129
|
+
await this.send({ type: "subagent_dispose", subagentId });
|
|
130
|
+
}
|
|
131
|
+
/** Set model by provider and ID. Pass persistDefault: false to change the session's model without rewriting the host's default. */
|
|
132
|
+
async setModel(provider, modelId, options) {
|
|
133
|
+
const response = await this.send({
|
|
134
|
+
type: "set_model",
|
|
135
|
+
provider,
|
|
136
|
+
modelId,
|
|
137
|
+
persistDefault: options?.persistDefault,
|
|
138
|
+
});
|
|
139
|
+
return this.getData(response);
|
|
140
|
+
}
|
|
141
|
+
/** Cycle to next model. */
|
|
142
|
+
async cycleModel() {
|
|
143
|
+
const response = await this.send({ type: "cycle_model" });
|
|
144
|
+
return this.getData(response);
|
|
145
|
+
}
|
|
146
|
+
/** Get list of available models. */
|
|
147
|
+
async getAvailableModels() {
|
|
148
|
+
const response = await this.send({ type: "get_available_models" });
|
|
149
|
+
return this.getData(response).models;
|
|
150
|
+
}
|
|
151
|
+
/** Set thinking level. Returns the effective (possibly clamped) level. Pass persistDefault: false to skip persisting it as the host default. */
|
|
152
|
+
async setThinkingLevel(level, options) {
|
|
153
|
+
const response = await this.send({ type: "set_thinking_level", level, persistDefault: options?.persistDefault });
|
|
154
|
+
return this.getData(response);
|
|
155
|
+
}
|
|
156
|
+
/** Cycle thinking level. */
|
|
157
|
+
async cycleThinkingLevel() {
|
|
158
|
+
const response = await this.send({ type: "cycle_thinking_level" });
|
|
159
|
+
return this.getData(response);
|
|
160
|
+
}
|
|
161
|
+
/** Set steering mode. */
|
|
162
|
+
async setSteeringMode(mode) {
|
|
163
|
+
await this.send({ type: "set_steering_mode", mode });
|
|
164
|
+
}
|
|
165
|
+
/** Set follow-up mode. */
|
|
166
|
+
async setFollowUpMode(mode) {
|
|
167
|
+
await this.send({ type: "set_follow_up_mode", mode });
|
|
168
|
+
}
|
|
169
|
+
/** Compact session context. */
|
|
170
|
+
async compact(customInstructions) {
|
|
171
|
+
const response = await this.send({ type: "compact", customInstructions });
|
|
172
|
+
return this.getData(response);
|
|
173
|
+
}
|
|
174
|
+
/** Set auto-compaction enabled/disabled. */
|
|
175
|
+
async setAutoCompaction(enabled) {
|
|
176
|
+
await this.send({ type: "set_auto_compaction", enabled });
|
|
177
|
+
}
|
|
178
|
+
/** Set auto-retry enabled/disabled. */
|
|
179
|
+
async setAutoRetry(enabled) {
|
|
180
|
+
await this.send({ type: "set_auto_retry", enabled });
|
|
181
|
+
}
|
|
182
|
+
/** Abort in-progress retry. */
|
|
183
|
+
async abortRetry() {
|
|
184
|
+
await this.send({ type: "abort_retry" });
|
|
185
|
+
}
|
|
186
|
+
/** Execute a bash command. */
|
|
187
|
+
async bash(command) {
|
|
188
|
+
const response = await this.send({ type: "bash", command });
|
|
189
|
+
return this.getData(response);
|
|
190
|
+
}
|
|
191
|
+
/** Abort running bash command. */
|
|
192
|
+
async abortBash() {
|
|
193
|
+
await this.send({ type: "abort_bash" });
|
|
194
|
+
}
|
|
195
|
+
/** Get session statistics. */
|
|
196
|
+
async getSessionStats() {
|
|
197
|
+
const response = await this.send({ type: "get_session_stats" });
|
|
198
|
+
return this.getData(response);
|
|
199
|
+
}
|
|
200
|
+
/** List persisted sessions for the current workspace. */
|
|
201
|
+
async listSessions() {
|
|
202
|
+
const response = await this.send({ type: "list_sessions" });
|
|
203
|
+
return this.getData(response).sessions;
|
|
204
|
+
}
|
|
205
|
+
/** Export session to HTML. */
|
|
206
|
+
async exportHtml(outputPath) {
|
|
207
|
+
const response = await this.send({ type: "export_html", outputPath });
|
|
208
|
+
return this.getData(response);
|
|
209
|
+
}
|
|
210
|
+
/** Switch to a different session file. */
|
|
211
|
+
async switchSession(sessionPath) {
|
|
212
|
+
const response = await this.send({ type: "switch_session", sessionPath });
|
|
213
|
+
return this.getData(response);
|
|
214
|
+
}
|
|
215
|
+
/** Switch to a workspace session by stable session id. */
|
|
216
|
+
async switchSessionById(sessionId) {
|
|
217
|
+
const response = await this.send({ type: "switch_session_by_id", sessionId });
|
|
218
|
+
return this.getData(response);
|
|
219
|
+
}
|
|
220
|
+
/** Fork from a specific message. */
|
|
221
|
+
async fork(entryId) {
|
|
222
|
+
const response = await this.send({ type: "fork", entryId });
|
|
223
|
+
return this.getData(response);
|
|
224
|
+
}
|
|
225
|
+
/** Clone the current active branch into a new session. */
|
|
226
|
+
async clone() {
|
|
227
|
+
const response = await this.send({ type: "clone" });
|
|
228
|
+
return this.getData(response);
|
|
229
|
+
}
|
|
230
|
+
/** Get messages available for forking. */
|
|
231
|
+
async getForkMessages() {
|
|
232
|
+
const response = await this.send({ type: "get_fork_messages" });
|
|
233
|
+
return this.getData(response).messages;
|
|
234
|
+
}
|
|
235
|
+
/** Get text of last assistant message. */
|
|
236
|
+
async getLastAssistantText() {
|
|
237
|
+
const response = await this.send({ type: "get_last_assistant_text" });
|
|
238
|
+
return this.getData(response).text;
|
|
239
|
+
}
|
|
240
|
+
/** Set the session display name. */
|
|
241
|
+
async setSessionName(name) {
|
|
242
|
+
await this.send({ type: "set_session_name", name });
|
|
243
|
+
}
|
|
244
|
+
/** Get all messages in the session. */
|
|
245
|
+
async getMessages() {
|
|
246
|
+
const response = await this.send({ type: "get_messages" });
|
|
247
|
+
return this.getData(response).messages;
|
|
248
|
+
}
|
|
249
|
+
/** Get available commands. */
|
|
250
|
+
async getCommands() {
|
|
251
|
+
const response = await this.send({ type: "get_commands" });
|
|
252
|
+
return this.getData(response).commands;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Wait for agent to become idle.
|
|
256
|
+
*
|
|
257
|
+
* Resolves on `agent_settled`, which the host emits after all tracked prompt
|
|
258
|
+
* work, including any agent run, automatic retries, compaction continuations,
|
|
259
|
+
* and queued-message continuations, has finished.
|
|
260
|
+
*/
|
|
261
|
+
waitForIdle(timeout = 60_000) {
|
|
262
|
+
return new Promise((resolve, reject) => {
|
|
263
|
+
let settled = false;
|
|
264
|
+
let unsubscribe = () => { };
|
|
265
|
+
const finish = (error) => {
|
|
266
|
+
if (settled)
|
|
267
|
+
return;
|
|
268
|
+
settled = true;
|
|
269
|
+
clearTimeout(timer);
|
|
270
|
+
unsubscribe();
|
|
271
|
+
if (error) {
|
|
272
|
+
reject(error);
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
resolve();
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
const timer = setTimeout(() => {
|
|
279
|
+
finish(new Error(this.formatError("Timeout waiting for agent to become idle")));
|
|
280
|
+
}, timeout);
|
|
281
|
+
unsubscribe = this.onEvent((event) => {
|
|
282
|
+
if (event.type === "agent_settled") {
|
|
283
|
+
finish();
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
// Subscribe before querying state so settlement cannot be lost between
|
|
287
|
+
// the idle snapshot and listener installation.
|
|
288
|
+
void this.getState().then((state) => {
|
|
289
|
+
if (!(state.isBusy ?? state.isStreaming))
|
|
290
|
+
finish();
|
|
291
|
+
}, (error) => finish(toError(error)));
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
/** Collect events until the agent settles (`agent_settled`). */
|
|
295
|
+
collectEvents(timeout = 60_000) {
|
|
296
|
+
return new Promise((resolve, reject) => {
|
|
297
|
+
const events = [];
|
|
298
|
+
const timer = setTimeout(() => {
|
|
299
|
+
unsubscribe();
|
|
300
|
+
reject(new Error(this.formatError("Timeout collecting events")));
|
|
301
|
+
}, timeout);
|
|
302
|
+
const unsubscribe = this.onEvent((event) => {
|
|
303
|
+
events.push(event);
|
|
304
|
+
if (event.type === "agent_settled") {
|
|
305
|
+
clearTimeout(timer);
|
|
306
|
+
unsubscribe();
|
|
307
|
+
resolve(events);
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
/** Send prompt and wait for the run to settle (`agent_settled`), returning all events. */
|
|
313
|
+
async promptAndWait(message, images, timeout = 60_000) {
|
|
314
|
+
return new Promise((resolve, reject) => {
|
|
315
|
+
const events = [];
|
|
316
|
+
let agentSettled = false;
|
|
317
|
+
let promptAccepted = false;
|
|
318
|
+
let settled = false;
|
|
319
|
+
let unsubscribe = () => { };
|
|
320
|
+
const timer = setTimeout(() => {
|
|
321
|
+
if (settled) {
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
settled = true;
|
|
325
|
+
unsubscribe();
|
|
326
|
+
reject(new Error(this.formatError("Timeout collecting events")));
|
|
327
|
+
}, timeout);
|
|
328
|
+
const cleanup = () => {
|
|
329
|
+
clearTimeout(timer);
|
|
330
|
+
unsubscribe();
|
|
331
|
+
};
|
|
332
|
+
const rejectAndCleanup = (error) => {
|
|
333
|
+
if (settled) {
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
settled = true;
|
|
337
|
+
cleanup();
|
|
338
|
+
reject(toError(error));
|
|
339
|
+
};
|
|
340
|
+
const resolveIfComplete = () => {
|
|
341
|
+
if (settled || !agentSettled || !promptAccepted) {
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
settled = true;
|
|
345
|
+
cleanup();
|
|
346
|
+
resolve(events);
|
|
347
|
+
};
|
|
348
|
+
unsubscribe = this.onEvent((event) => {
|
|
349
|
+
events.push(event);
|
|
350
|
+
// Settlement predating this prompt's success response belongs to older
|
|
351
|
+
// work and must not complete this request.
|
|
352
|
+
if (event.type === "agent_settled" && promptAccepted) {
|
|
353
|
+
agentSettled = true;
|
|
354
|
+
resolveIfComplete();
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
void this.send({ type: "prompt", message, images }, () => {
|
|
358
|
+
promptAccepted = true;
|
|
359
|
+
resolveIfComplete();
|
|
360
|
+
}).catch(rejectAndCleanup);
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
handleLine(line) {
|
|
364
|
+
if (this.failureError) {
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
let data;
|
|
368
|
+
try {
|
|
369
|
+
data = JSON.parse(line);
|
|
370
|
+
}
|
|
371
|
+
catch (error) {
|
|
372
|
+
const failureError = new Error(this.formatError(`Malformed inbound RPC JSON: ${toError(error).message}. Bad line preview: ${formatLinePreview(line)}`));
|
|
373
|
+
this.setFailureError(failureError);
|
|
374
|
+
this.rejectPendingRequests(failureError);
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
if (!isInboundRpcMessage(data)) {
|
|
378
|
+
this.failInboundProtocol("Invalid inbound RPC message: expected object with string type", line);
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
if (data.type === "response") {
|
|
382
|
+
this.handleResponse(data, line);
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
385
|
+
this.emitEvent(data);
|
|
386
|
+
}
|
|
387
|
+
assertCanSend() {
|
|
388
|
+
if (this.failureError) {
|
|
389
|
+
throw this.failureError;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
clearFailureError() {
|
|
393
|
+
this.failureError = null;
|
|
394
|
+
}
|
|
395
|
+
setFailureError(error) {
|
|
396
|
+
this.failureError = error;
|
|
397
|
+
}
|
|
398
|
+
rejectPendingRequests(error) {
|
|
399
|
+
for (const pending of this.pendingRequests.values()) {
|
|
400
|
+
pending.reject(error);
|
|
401
|
+
}
|
|
402
|
+
this.pendingRequests.clear();
|
|
403
|
+
}
|
|
404
|
+
getErrorContext() {
|
|
405
|
+
return undefined;
|
|
406
|
+
}
|
|
407
|
+
async sendOneWay(message) {
|
|
408
|
+
this.assertCanSend();
|
|
409
|
+
try {
|
|
410
|
+
await this.writeMessage(message);
|
|
411
|
+
}
|
|
412
|
+
catch (error) {
|
|
413
|
+
throw toError(error);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
async send(command, onSuccessResponse) {
|
|
417
|
+
this.assertCanSend();
|
|
418
|
+
const id = `req_${++this.requestId}`;
|
|
419
|
+
const fullCommand = { ...command, id };
|
|
420
|
+
return new Promise((resolve, reject) => {
|
|
421
|
+
const timeout = setTimeout(() => {
|
|
422
|
+
this.pendingRequests.delete(id);
|
|
423
|
+
reject(new Error(this.formatError(`Timeout waiting for response to ${command.type}`)));
|
|
424
|
+
}, this.requestTimeoutMs);
|
|
425
|
+
const rejectRequest = (error) => {
|
|
426
|
+
clearTimeout(timeout);
|
|
427
|
+
this.pendingRequests.delete(id);
|
|
428
|
+
reject(error);
|
|
429
|
+
};
|
|
430
|
+
this.pendingRequests.set(id, {
|
|
431
|
+
command: command.type,
|
|
432
|
+
resolve: (response) => {
|
|
433
|
+
clearTimeout(timeout);
|
|
434
|
+
if (!response.success) {
|
|
435
|
+
reject(new Error(response.error));
|
|
436
|
+
return;
|
|
437
|
+
}
|
|
438
|
+
try {
|
|
439
|
+
onSuccessResponse?.();
|
|
440
|
+
}
|
|
441
|
+
catch (error) {
|
|
442
|
+
reject(toError(error));
|
|
443
|
+
return;
|
|
444
|
+
}
|
|
445
|
+
resolve(response);
|
|
446
|
+
},
|
|
447
|
+
reject: rejectRequest,
|
|
448
|
+
});
|
|
449
|
+
try {
|
|
450
|
+
const writeResult = this.writeMessage(fullCommand);
|
|
451
|
+
if (writeResult) {
|
|
452
|
+
void Promise.resolve(writeResult).catch((error) => {
|
|
453
|
+
rejectRequest(toError(error));
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
catch (error) {
|
|
458
|
+
rejectRequest(toError(error));
|
|
459
|
+
}
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
handleResponse(response, line) {
|
|
463
|
+
// Responses are reserved protocol messages. Missing, malformed, or
|
|
464
|
+
// unrecognized correlation ids fail the client instead of reaching event
|
|
465
|
+
// listeners as ordinary events.
|
|
466
|
+
if (typeof response.id !== "string") {
|
|
467
|
+
this.failInboundProtocol("Invalid inbound RPC response: expected string id", line);
|
|
468
|
+
return;
|
|
469
|
+
}
|
|
470
|
+
if (typeof response.command !== "string") {
|
|
471
|
+
this.failInboundProtocol("Invalid inbound RPC response: expected string command", line);
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
474
|
+
if (typeof response.success !== "boolean") {
|
|
475
|
+
this.failInboundProtocol("Invalid inbound RPC response: expected boolean success", line);
|
|
476
|
+
return;
|
|
477
|
+
}
|
|
478
|
+
if (response.success === false && typeof response.error !== "string") {
|
|
479
|
+
this.failInboundProtocol("Invalid inbound RPC response: expected string error", line);
|
|
480
|
+
return;
|
|
481
|
+
}
|
|
482
|
+
const pending = this.pendingRequests.get(response.id);
|
|
483
|
+
if (!pending) {
|
|
484
|
+
this.failInboundProtocol(`Invalid inbound RPC response: unknown id ${JSON.stringify(response.id)}`, line);
|
|
485
|
+
return;
|
|
486
|
+
}
|
|
487
|
+
if (response.command !== pending.command) {
|
|
488
|
+
this.failInboundProtocol(`Invalid inbound RPC response: command ${JSON.stringify(response.command)} does not match request ${JSON.stringify(pending.command)}`, line);
|
|
489
|
+
return;
|
|
490
|
+
}
|
|
491
|
+
this.pendingRequests.delete(response.id);
|
|
492
|
+
pending.resolve(response);
|
|
493
|
+
}
|
|
494
|
+
failInboundProtocol(message, line) {
|
|
495
|
+
const failureError = new Error(this.formatError(`${message}. Bad line preview: ${formatLinePreview(line)}`));
|
|
496
|
+
this.setFailureError(failureError);
|
|
497
|
+
this.rejectPendingRequests(failureError);
|
|
498
|
+
}
|
|
499
|
+
getData(response) {
|
|
500
|
+
if (!response.success) {
|
|
501
|
+
const errorResponse = response;
|
|
502
|
+
throw new Error(errorResponse.error);
|
|
503
|
+
}
|
|
504
|
+
const successResponse = response;
|
|
505
|
+
return successResponse.data;
|
|
506
|
+
}
|
|
507
|
+
emitEvent(event) {
|
|
508
|
+
for (const listener of this.eventListeners) {
|
|
509
|
+
listener(event);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
formatError(message) {
|
|
513
|
+
const context = this.getErrorContext();
|
|
514
|
+
return context ? `${message}. ${context}` : message;
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
function isInboundRpcMessage(value) {
|
|
518
|
+
return isRecord(value) && typeof value.type === "string";
|
|
519
|
+
}
|
|
520
|
+
function isRecord(value) {
|
|
521
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
522
|
+
}
|
|
523
|
+
function toError(value) {
|
|
524
|
+
return value instanceof Error ? value : new Error(String(value));
|
|
525
|
+
}
|
|
526
|
+
function formatLinePreview(line) {
|
|
527
|
+
const preview = JSON.stringify(line.slice(0, MALFORMED_RPC_LINE_PREVIEW_CHARS));
|
|
528
|
+
return line.length > MALFORMED_RPC_LINE_PREVIEW_CHARS ? `${preview}… (${line.length} chars)` : preview;
|
|
529
|
+
}
|
|
530
|
+
//# sourceMappingURL=rpc-client-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-client-base.js","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-base.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage, ThinkingLevel } from \"@hansjm10/volt-agent-core\";\nimport type { ImageContent } from \"@hansjm10/volt-ai\";\nimport type { AgentSessionEvent, SessionStats } from \"../../core/agent-session.ts\";\nimport type { BashResult } from \"../../core/bash-executor.ts\";\nimport type { CompactionResult } from \"../../core/compaction/index.ts\";\nimport type { ExtensionError } from \"../../core/extensions/index.ts\";\nimport type { SubagentEvent, SubagentResult } from \"../../core/subagents/index.ts\";\nimport type {\n\tRpcClientCapabilityFeature,\n\tRpcCommand,\n\tRpcExtensionUIRequest,\n\tRpcExtensionUIResponse,\n\tRpcHostActionRequest,\n\tRpcHostActionResponse,\n\tRpcHostActionUpdate,\n\tRpcListSubagentsResponse,\n\tRpcResponse,\n\tRpcSessionListItem,\n\tRpcSessionState,\n\tRpcSlashCommand,\n\tRpcSubagentStartResponse,\n\tRpcTranscriptResponse,\n\tRpcWorkflowEvent,\n\tRpcWorkflowToolEvent,\n\tUiActionCapabilities,\n\tUiActionDescriptor,\n\tUiActionInvocationQueueBehavior,\n\tUiActionInvocationResponse,\n\tUiActionListScope,\n\tUiActionOptionDescriptor,\n} from \"./rpc-types.ts\";\n\n/** Distributive Omit that works with union types. */\ntype DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;\n\n/** RpcCommand without the id field for client call sites. */\ntype RpcCommandBody = DistributiveOmit<RpcCommand, \"id\">;\n\ninterface PendingRpcRequest {\n\tcommand: string;\n\tresolve(response: RpcResponse): void;\n\treject(error: Error): void;\n}\n\ntype InboundRpcMessage = Record<string, unknown> & { type: string };\n\nexport interface RpcClientBaseOptions {\n\t/** Milliseconds to wait for a command response. Defaults to 30 seconds. */\n\trequestTimeoutMs?: number;\n}\n\nexport interface ModelInfo {\n\tprovider: string;\n\tid: string;\n\tcontextWindow: number;\n\treasoning: boolean;\n}\n\nexport type RpcExtensionErrorEvent = { type: \"extension_error\" } & ExtensionError;\nexport type RpcSubagentEvent = { type: \"subagent_event\"; subagentId: string; event: SubagentEvent };\nexport type RpcSubagentEndEvent = { type: \"subagent_end\"; subagentId: string; result: SubagentResult };\n/** Emitted when the host's available model catalog changed on disk (login, logout, or API key save). */\nexport type RpcModelsChangedEvent = { type: \"models_changed\" };\nexport type RpcClientEvent =\n\t| AgentSessionEvent\n\t| RpcModelsChangedEvent\n\t| RpcWorkflowEvent\n\t| RpcWorkflowToolEvent\n\t| RpcExtensionUIRequest\n\t| RpcHostActionRequest\n\t| RpcHostActionUpdate\n\t| RpcSubagentEvent\n\t| RpcSubagentEndEvent\n\t| RpcExtensionErrorEvent;\nexport type RpcEventListener = (event: RpcClientEvent) => void;\n\nconst MALFORMED_RPC_LINE_PREVIEW_CHARS = 200;\n\nexport abstract class RpcClientBase {\n\tprivate readonly requestTimeoutMs: number;\n\tprivate readonly eventListeners: RpcEventListener[] = [];\n\tprivate readonly pendingRequests = new Map<string, PendingRpcRequest>();\n\tprivate requestId = 0;\n\tprivate failureError: Error | null = null;\n\n\tconstructor(options: RpcClientBaseOptions = {}) {\n\t\tthis.requestTimeoutMs = options.requestTimeoutMs ?? 30_000;\n\t}\n\n\t/** Subscribe to RPC events and extension UI requests. */\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\t/** Respond to an extension UI request emitted through onEvent(). */\n\tasync sendExtensionUIResponse(response: RpcExtensionUIResponse): Promise<void> {\n\t\tawait this.sendOneWay(response);\n\t}\n\n\t/** Respond to a host-initiated action request emitted through onEvent(). */\n\tasync sendHostActionResponse(response: RpcHostActionResponse): Promise<void> {\n\t\tawait this.sendOneWay(response);\n\t}\n\n\t/** Advertise client-supported optional protocol features. */\n\tasync setClientCapabilities(features: RpcClientCapabilityFeature[]): Promise<void> {\n\t\tawait this.send({ type: \"set_client_capabilities\", features });\n\t}\n\n\t/** Return host actions currently waiting for client response. */\n\tasync getPendingHostActions(): Promise<RpcHostActionRequest[]> {\n\t\tconst response = await this.send({ type: \"get_pending_host_actions\" });\n\t\treturn this.getData<{ actions: RpcHostActionRequest[] }>(response).actions;\n\t}\n\n\t/** Send a prompt to the agent. */\n\tasync prompt(message: string, images?: ImageContent[], onAccepted?: () => void): Promise<void> {\n\t\tawait this.send({ type: \"prompt\", message, images }, onAccepted);\n\t}\n\n\t/** Queue a steering message to interrupt the agent mid-run. */\n\tasync steer(message: string, images?: ImageContent[]): Promise<void> {\n\t\tawait this.send({ type: \"steer\", message, images });\n\t}\n\n\t/** Queue a follow-up message to be processed after the agent finishes. */\n\tasync followUp(message: string, images?: ImageContent[]): Promise<void> {\n\t\tawait this.send({ type: \"follow_up\", message, images });\n\t}\n\n\t/** Abort current operation. */\n\tasync abort(): Promise<void> {\n\t\tawait this.send({ type: \"abort\" });\n\t}\n\n\t/** Start a new session, optionally with parent tracking. */\n\tasync newSession(parentSession?: string): Promise<{ cancelled: boolean }> {\n\t\tconst response = await this.send({ type: \"new_session\", parentSession });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Get current session state. */\n\tasync getState(): Promise<RpcSessionState> {\n\t\tconst response = await this.send({ type: \"get_state\" });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Get a UI-ready projected transcript for the active session. */\n\tasync getTranscript(options: { limit?: number; beforeEntryId?: string } = {}): Promise<RpcTranscriptResponse> {\n\t\tconst response = await this.send({\n\t\t\ttype: \"get_transcript\",\n\t\t\tlimit: options.limit,\n\t\t\tbeforeEntryId: options.beforeEntryId,\n\t\t});\n\t\treturn this.getData(response);\n\t}\n\n\t/** Get native UI action protocol capabilities. */\n\tasync getUiCapabilities(): Promise<UiActionCapabilities> {\n\t\tconst response = await this.send({ type: \"get_ui_capabilities\" });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Get native UI action descriptors. */\n\tasync getUiActions(scope?: UiActionListScope): Promise<UiActionDescriptor[]> {\n\t\tconst response = await this.send({ type: \"get_ui_actions\", scope });\n\t\treturn this.getData<{ actions: UiActionDescriptor[] }>(response).actions;\n\t}\n\n\t/** Get native UI action completions for one argument. */\n\tasync getUiActionCompletions(\n\t\taction: string,\n\t\targument: string,\n\t\tprefix?: string,\n\t): Promise<UiActionOptionDescriptor[]> {\n\t\tconst response = await this.send({ type: \"get_ui_action_completions\", action, argument, prefix });\n\t\treturn this.getData<{ completions: UiActionOptionDescriptor[] }>(response).completions;\n\t}\n\n\t/** Invoke a native UI action by id. */\n\tasync invokeUiAction(\n\t\taction: string,\n\t\toptions: { args?: Record<string, unknown>; streamingBehavior?: UiActionInvocationQueueBehavior } = {},\n\t): Promise<UiActionInvocationResponse> {\n\t\tconst response = await this.send({\n\t\t\ttype: \"invoke_ui_action\",\n\t\t\taction,\n\t\t\targs: options.args,\n\t\t\tstreamingBehavior: options.streamingBehavior,\n\t\t});\n\t\treturn this.getData(response);\n\t}\n\n\t/** List discovered subagent definitions available to local RPC clients. */\n\tasync listSubagents(): Promise<RpcListSubagentsResponse> {\n\t\tconst response = await this.send({ type: \"list_subagents\" });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Start a local RPC-managed subagent and send its initial prompt. */\n\tasync startSubagent(agent: string, prompt: string): Promise<RpcSubagentStartResponse> {\n\t\tconst response = await this.send({ type: \"subagent_start\", agent, prompt });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Abort and dispose a local RPC-managed subagent. */\n\tasync abortSubagent(subagentId: string): Promise<void> {\n\t\tawait this.send({ type: \"subagent_abort\", subagentId });\n\t}\n\n\t/** Get state for a local RPC-managed subagent. */\n\tasync getSubagentState(subagentId: string): Promise<RpcSessionState> {\n\t\tconst response = await this.send({ type: \"subagent_get_state\", subagentId });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Get a transcript projection for a local RPC-managed subagent. */\n\tasync getSubagentTranscript(\n\t\tsubagentId: string,\n\t\toptions: { limit?: number; beforeEntryId?: string } = {},\n\t): Promise<RpcTranscriptResponse> {\n\t\tconst response = await this.send({\n\t\t\ttype: \"subagent_get_transcript\",\n\t\t\tsubagentId,\n\t\t\tlimit: options.limit,\n\t\t\tbeforeEntryId: options.beforeEntryId,\n\t\t});\n\t\treturn this.getData(response);\n\t}\n\n\t/** Dispose a local RPC-managed subagent without sending an abort request first. */\n\tasync disposeSubagent(subagentId: string): Promise<void> {\n\t\tawait this.send({ type: \"subagent_dispose\", subagentId });\n\t}\n\n\t/** Set model by provider and ID. Pass persistDefault: false to change the session's model without rewriting the host's default. */\n\tasync setModel(\n\t\tprovider: string,\n\t\tmodelId: string,\n\t\toptions?: { persistDefault?: boolean },\n\t): Promise<{ provider: string; id: string }> {\n\t\tconst response = await this.send({\n\t\t\ttype: \"set_model\",\n\t\t\tprovider,\n\t\t\tmodelId,\n\t\t\tpersistDefault: options?.persistDefault,\n\t\t});\n\t\treturn this.getData(response);\n\t}\n\n\t/** Cycle to next model. */\n\tasync cycleModel(): Promise<{\n\t\tmodel: { provider: string; id: string };\n\t\tthinkingLevel: ThinkingLevel;\n\t\tisScoped: boolean;\n\t} | null> {\n\t\tconst response = await this.send({ type: \"cycle_model\" });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Get list of available models. */\n\tasync getAvailableModels(): Promise<ModelInfo[]> {\n\t\tconst response = await this.send({ type: \"get_available_models\" });\n\t\treturn this.getData<{ models: ModelInfo[] }>(response).models;\n\t}\n\n\t/** Set thinking level. Returns the effective (possibly clamped) level. Pass persistDefault: false to skip persisting it as the host default. */\n\tasync setThinkingLevel(\n\t\tlevel: ThinkingLevel,\n\t\toptions?: { persistDefault?: boolean },\n\t): Promise<{ level: ThinkingLevel }> {\n\t\tconst response = await this.send({ type: \"set_thinking_level\", level, persistDefault: options?.persistDefault });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Cycle thinking level. */\n\tasync cycleThinkingLevel(): Promise<{ level: ThinkingLevel } | null> {\n\t\tconst response = await this.send({ type: \"cycle_thinking_level\" });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Set steering mode. */\n\tasync setSteeringMode(mode: \"all\" | \"one-at-a-time\"): Promise<void> {\n\t\tawait this.send({ type: \"set_steering_mode\", mode });\n\t}\n\n\t/** Set follow-up mode. */\n\tasync setFollowUpMode(mode: \"all\" | \"one-at-a-time\"): Promise<void> {\n\t\tawait this.send({ type: \"set_follow_up_mode\", mode });\n\t}\n\n\t/** Compact session context. */\n\tasync compact(customInstructions?: string): Promise<CompactionResult> {\n\t\tconst response = await this.send({ type: \"compact\", customInstructions });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Set auto-compaction enabled/disabled. */\n\tasync setAutoCompaction(enabled: boolean): Promise<void> {\n\t\tawait this.send({ type: \"set_auto_compaction\", enabled });\n\t}\n\n\t/** Set auto-retry enabled/disabled. */\n\tasync setAutoRetry(enabled: boolean): Promise<void> {\n\t\tawait this.send({ type: \"set_auto_retry\", enabled });\n\t}\n\n\t/** Abort in-progress retry. */\n\tasync abortRetry(): Promise<void> {\n\t\tawait this.send({ type: \"abort_retry\" });\n\t}\n\n\t/** Execute a bash command. */\n\tasync bash(command: string): Promise<BashResult> {\n\t\tconst response = await this.send({ type: \"bash\", command });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Abort running bash command. */\n\tasync abortBash(): Promise<void> {\n\t\tawait this.send({ type: \"abort_bash\" });\n\t}\n\n\t/** Get session statistics. */\n\tasync getSessionStats(): Promise<SessionStats> {\n\t\tconst response = await this.send({ type: \"get_session_stats\" });\n\t\treturn this.getData(response);\n\t}\n\n\t/** List persisted sessions for the current workspace. */\n\tasync listSessions(): Promise<RpcSessionListItem[]> {\n\t\tconst response = await this.send({ type: \"list_sessions\" });\n\t\treturn this.getData<{ sessions: RpcSessionListItem[] }>(response).sessions;\n\t}\n\n\t/** Export session to HTML. */\n\tasync exportHtml(outputPath?: string): Promise<{ path: string }> {\n\t\tconst response = await this.send({ type: \"export_html\", outputPath });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Switch to a different session file. */\n\tasync switchSession(sessionPath: string): Promise<{ cancelled: boolean }> {\n\t\tconst response = await this.send({ type: \"switch_session\", sessionPath });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Switch to a workspace session by stable session id. */\n\tasync switchSessionById(sessionId: string): Promise<{ cancelled: boolean }> {\n\t\tconst response = await this.send({ type: \"switch_session_by_id\", sessionId });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Fork from a specific message. */\n\tasync fork(entryId: string): Promise<{ text: string; cancelled: boolean }> {\n\t\tconst response = await this.send({ type: \"fork\", entryId });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Clone the current active branch into a new session. */\n\tasync clone(): Promise<{ cancelled: boolean }> {\n\t\tconst response = await this.send({ type: \"clone\" });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Get messages available for forking. */\n\tasync getForkMessages(): Promise<Array<{ entryId: string; text: string }>> {\n\t\tconst response = await this.send({ type: \"get_fork_messages\" });\n\t\treturn this.getData<{ messages: Array<{ entryId: string; text: string }> }>(response).messages;\n\t}\n\n\t/** Get text of last assistant message. */\n\tasync getLastAssistantText(): Promise<string | null> {\n\t\tconst response = await this.send({ type: \"get_last_assistant_text\" });\n\t\treturn this.getData<{ text: string | null }>(response).text;\n\t}\n\n\t/** Set the session display name. */\n\tasync setSessionName(name: string): Promise<void> {\n\t\tawait this.send({ type: \"set_session_name\", name });\n\t}\n\n\t/** Get all messages in the session. */\n\tasync getMessages(): Promise<AgentMessage[]> {\n\t\tconst response = await this.send({ type: \"get_messages\" });\n\t\treturn this.getData<{ messages: AgentMessage[] }>(response).messages;\n\t}\n\n\t/** Get available commands. */\n\tasync getCommands(): Promise<RpcSlashCommand[]> {\n\t\tconst response = await this.send({ type: \"get_commands\" });\n\t\treturn this.getData<{ commands: RpcSlashCommand[] }>(response).commands;\n\t}\n\n\t/**\n\t * Wait for agent to become idle.\n\t *\n\t * Resolves on `agent_settled`, which the host emits after all tracked prompt\n\t * work, including any agent run, automatic retries, compaction continuations,\n\t * and queued-message continuations, has finished.\n\t */\n\twaitForIdle(timeout = 60_000): Promise<void> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet settled = false;\n\t\t\tlet unsubscribe = (): void => {};\n\t\t\tconst finish = (error?: Error): void => {\n\t\t\t\tif (settled) return;\n\t\t\t\tsettled = true;\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tunsubscribe();\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tfinish(new Error(this.formatError(\"Timeout waiting for agent to become idle\")));\n\t\t\t}, timeout);\n\n\t\t\tunsubscribe = this.onEvent((event) => {\n\t\t\t\tif (event.type === \"agent_settled\") {\n\t\t\t\t\tfinish();\n\t\t\t\t}\n\t\t\t});\n\t\t\t// Subscribe before querying state so settlement cannot be lost between\n\t\t\t// the idle snapshot and listener installation.\n\t\t\tvoid this.getState().then(\n\t\t\t\t(state) => {\n\t\t\t\t\tif (!(state.isBusy ?? state.isStreaming)) finish();\n\t\t\t\t},\n\t\t\t\t(error: unknown) => finish(toError(error)),\n\t\t\t);\n\t\t});\n\t}\n\n\t/** Collect events until the agent settles (`agent_settled`). */\n\tcollectEvents(timeout = 60_000): Promise<RpcClientEvent[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst events: RpcClientEvent[] = [];\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tunsubscribe();\n\t\t\t\treject(new Error(this.formatError(\"Timeout collecting events\")));\n\t\t\t}, timeout);\n\n\t\t\tconst unsubscribe = this.onEvent((event) => {\n\t\t\t\tevents.push(event);\n\t\t\t\tif (event.type === \"agent_settled\") {\n\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\tunsubscribe();\n\t\t\t\t\tresolve(events);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/** Send prompt and wait for the run to settle (`agent_settled`), returning all events. */\n\tasync promptAndWait(message: string, images?: ImageContent[], timeout = 60_000): Promise<RpcClientEvent[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst events: RpcClientEvent[] = [];\n\t\t\tlet agentSettled = false;\n\t\t\tlet promptAccepted = false;\n\t\t\tlet settled = false;\n\t\t\tlet unsubscribe = (): void => {};\n\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tif (settled) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsettled = true;\n\t\t\t\tunsubscribe();\n\t\t\t\treject(new Error(this.formatError(\"Timeout collecting events\")));\n\t\t\t}, timeout);\n\n\t\t\tconst cleanup = (): void => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tunsubscribe();\n\t\t\t};\n\n\t\t\tconst rejectAndCleanup = (error: unknown): void => {\n\t\t\t\tif (settled) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsettled = true;\n\t\t\t\tcleanup();\n\t\t\t\treject(toError(error));\n\t\t\t};\n\n\t\t\tconst resolveIfComplete = (): void => {\n\t\t\t\tif (settled || !agentSettled || !promptAccepted) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsettled = true;\n\t\t\t\tcleanup();\n\t\t\t\tresolve(events);\n\t\t\t};\n\n\t\t\tunsubscribe = this.onEvent((event) => {\n\t\t\t\tevents.push(event);\n\t\t\t\t// Settlement predating this prompt's success response belongs to older\n\t\t\t\t// work and must not complete this request.\n\t\t\t\tif (event.type === \"agent_settled\" && promptAccepted) {\n\t\t\t\t\tagentSettled = true;\n\t\t\t\t\tresolveIfComplete();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvoid this.send({ type: \"prompt\", message, images }, () => {\n\t\t\t\tpromptAccepted = true;\n\t\t\t\tresolveIfComplete();\n\t\t\t}).catch(rejectAndCleanup);\n\t\t});\n\t}\n\n\tprotected handleLine(line: string): void {\n\t\tif (this.failureError) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet data: unknown;\n\t\ttry {\n\t\t\tdata = JSON.parse(line);\n\t\t} catch (error: unknown) {\n\t\t\tconst failureError = new Error(\n\t\t\t\tthis.formatError(\n\t\t\t\t\t`Malformed inbound RPC JSON: ${toError(error).message}. Bad line preview: ${formatLinePreview(line)}`,\n\t\t\t\t),\n\t\t\t);\n\t\t\tthis.setFailureError(failureError);\n\t\t\tthis.rejectPendingRequests(failureError);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!isInboundRpcMessage(data)) {\n\t\t\tthis.failInboundProtocol(\"Invalid inbound RPC message: expected object with string type\", line);\n\t\t\treturn;\n\t\t}\n\n\t\tif (data.type === \"response\") {\n\t\t\tthis.handleResponse(data, line);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.emitEvent(data as RpcClientEvent);\n\t}\n\n\tprotected assertCanSend(): void {\n\t\tif (this.failureError) {\n\t\t\tthrow this.failureError;\n\t\t}\n\t}\n\n\tprotected clearFailureError(): void {\n\t\tthis.failureError = null;\n\t}\n\n\tprotected setFailureError(error: Error): void {\n\t\tthis.failureError = error;\n\t}\n\n\tprotected rejectPendingRequests(error: Error): void {\n\t\tfor (const pending of this.pendingRequests.values()) {\n\t\t\tpending.reject(error);\n\t\t}\n\t\tthis.pendingRequests.clear();\n\t}\n\n\tprotected getErrorContext(): string | undefined {\n\t\treturn undefined;\n\t}\n\n\tprotected abstract writeMessage(\n\t\tmessage: RpcCommand | RpcExtensionUIResponse | RpcHostActionResponse,\n\t): void | Promise<void>;\n\n\tprivate async sendOneWay(message: RpcExtensionUIResponse | RpcHostActionResponse): Promise<void> {\n\t\tthis.assertCanSend();\n\t\ttry {\n\t\t\tawait this.writeMessage(message);\n\t\t} catch (error: unknown) {\n\t\t\tthrow toError(error);\n\t\t}\n\t}\n\n\tprivate async send(command: RpcCommandBody, onSuccessResponse?: () => void): Promise<RpcResponse> {\n\t\tthis.assertCanSend();\n\n\t\tconst id = `req_${++this.requestId}`;\n\t\tconst fullCommand = { ...command, id } as RpcCommand;\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst timeout = setTimeout(() => {\n\t\t\t\tthis.pendingRequests.delete(id);\n\t\t\t\treject(new Error(this.formatError(`Timeout waiting for response to ${command.type}`)));\n\t\t\t}, this.requestTimeoutMs);\n\n\t\t\tconst rejectRequest = (error: Error): void => {\n\t\t\t\tclearTimeout(timeout);\n\t\t\t\tthis.pendingRequests.delete(id);\n\t\t\t\treject(error);\n\t\t\t};\n\n\t\t\tthis.pendingRequests.set(id, {\n\t\t\t\tcommand: command.type,\n\t\t\t\tresolve: (response) => {\n\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\tif (!response.success) {\n\t\t\t\t\t\treject(new Error(response.error));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tonSuccessResponse?.();\n\t\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\t\treject(toError(error));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tresolve(response);\n\t\t\t\t},\n\t\t\t\treject: rejectRequest,\n\t\t\t});\n\n\t\t\ttry {\n\t\t\t\tconst writeResult = this.writeMessage(fullCommand);\n\t\t\t\tif (writeResult) {\n\t\t\t\t\tvoid Promise.resolve(writeResult).catch((error: unknown) => {\n\t\t\t\t\t\trejectRequest(toError(error));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch (error: unknown) {\n\t\t\t\trejectRequest(toError(error));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate handleResponse(response: InboundRpcMessage, line: string): void {\n\t\t// Responses are reserved protocol messages. Missing, malformed, or\n\t\t// unrecognized correlation ids fail the client instead of reaching event\n\t\t// listeners as ordinary events.\n\t\tif (typeof response.id !== \"string\") {\n\t\t\tthis.failInboundProtocol(\"Invalid inbound RPC response: expected string id\", line);\n\t\t\treturn;\n\t\t}\n\t\tif (typeof response.command !== \"string\") {\n\t\t\tthis.failInboundProtocol(\"Invalid inbound RPC response: expected string command\", line);\n\t\t\treturn;\n\t\t}\n\t\tif (typeof response.success !== \"boolean\") {\n\t\t\tthis.failInboundProtocol(\"Invalid inbound RPC response: expected boolean success\", line);\n\t\t\treturn;\n\t\t}\n\t\tif (response.success === false && typeof response.error !== \"string\") {\n\t\t\tthis.failInboundProtocol(\"Invalid inbound RPC response: expected string error\", line);\n\t\t\treturn;\n\t\t}\n\n\t\tconst pending = this.pendingRequests.get(response.id);\n\t\tif (!pending) {\n\t\t\tthis.failInboundProtocol(`Invalid inbound RPC response: unknown id ${JSON.stringify(response.id)}`, line);\n\t\t\treturn;\n\t\t}\n\n\t\tif (response.command !== pending.command) {\n\t\t\tthis.failInboundProtocol(\n\t\t\t\t`Invalid inbound RPC response: command ${JSON.stringify(response.command)} does not match request ${JSON.stringify(pending.command)}`,\n\t\t\t\tline,\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.pendingRequests.delete(response.id);\n\t\tpending.resolve(response as RpcResponse);\n\t}\n\n\tprivate failInboundProtocol(message: string, line: string): void {\n\t\tconst failureError = new Error(this.formatError(`${message}. Bad line preview: ${formatLinePreview(line)}`));\n\t\tthis.setFailureError(failureError);\n\t\tthis.rejectPendingRequests(failureError);\n\t}\n\n\tprivate getData<T>(response: RpcResponse): T {\n\t\tif (!response.success) {\n\t\t\tconst errorResponse = response as Extract<RpcResponse, { success: false }>;\n\t\t\tthrow new Error(errorResponse.error);\n\t\t}\n\t\tconst successResponse = response as Extract<RpcResponse, { success: true; data: unknown }>;\n\t\treturn successResponse.data as T;\n\t}\n\n\tprivate emitEvent(event: RpcClientEvent): void {\n\t\tfor (const listener of this.eventListeners) {\n\t\t\tlistener(event);\n\t\t}\n\t}\n\n\tprivate formatError(message: string): string {\n\t\tconst context = this.getErrorContext();\n\t\treturn context ? `${message}. ${context}` : message;\n\t}\n}\n\nfunction isInboundRpcMessage(value: unknown): value is InboundRpcMessage {\n\treturn isRecord(value) && typeof value.type === \"string\";\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction toError(value: unknown): Error {\n\treturn value instanceof Error ? value : new Error(String(value));\n}\n\nfunction formatLinePreview(line: string): string {\n\tconst preview = JSON.stringify(line.slice(0, MALFORMED_RPC_LINE_PREVIEW_CHARS));\n\treturn line.length > MALFORMED_RPC_LINE_PREVIEW_CHARS ? `${preview}… (${line.length} chars)` : preview;\n}\n"]}
|