@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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/subagents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,yBAAyB,EAAmB,MAAM,mBAAmB,CAAC;AA8C/E,MAAM,mCAAmC,GAAG,iBAAiB,CAAC;AAC9D,MAAM,sCAAsC,GAAG,oBAAoB,CAAC;AACpE,MAAM,sCAAsC,GAAG,oBAAoB,CAAC;AACpE,MAAM,6CAA6C,GAAG,2BAA2B,CAAC;AAClF,MAAM,wBAAwB,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC9E,MAAM,mCAAmC,GAAG,CAAC,GAAG,wBAAwB,EAAE,UAAU,CAAC,CAAC;AAEtF,MAAM,UAAU,gCAAgC,GAAyB;IACxE,OAAO;QACN;YACC,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,iEAAiE;YAC9E,aAAa,EAAE,CAAC,UAAU,CAAC;YAC3B,gBAAgB,EAAE,EAAE;YACpB,cAAc,EAAE,CAAC;YACjB,YAAY,EAAE;gBACb,qDAAqD;gBACrD,2FAA2F;gBAC3F,6EAA6E;gBAC7E,mGAAmG;gBACnG,0FAA0F;gBAC1F,wEAAwE;gBACxE,6EAA6E;aAC7E,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,yBAAyB,CAAC,mCAAmC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YAClG,QAAQ,EAAE,mCAAmC;SAC7C;QACD;YACC,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,qEAAqE;YAClF,KAAK,EAAE,CAAC,GAAG,mCAAmC,CAAC;YAC/C,gBAAgB,EAAE,CAAC,YAAY,CAAC;YAChC,gBAAgB,EAAE,CAAC;YACnB,cAAc,EAAE,CAAC;YACjB,YAAY,EAAE;gBACb,gDAAgD;gBAChD,wFAAwF;gBACxF,6EAA6E;gBAC7E,oGAAoG;gBACpG,0IAA0I;gBAC1I,4EAA4E;gBAC5E,uGAAuG;aACvG,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,yBAAyB,CAAC,sCAAsC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YACrG,QAAQ,EAAE,sCAAsC;SAChD;QACD;YACC,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,4FAA4F;YACzG,gBAAgB,EAAE,CAAC,YAAY,EAAE,mBAAmB,EAAE,SAAS,CAAC;YAChE,gBAAgB,EAAE,CAAC;YACnB,cAAc,EAAE,CAAC;YACjB,YAAY,EAAE;gBACb,wDAAwD;gBACxD,mHAAmH;gBACnH,iNAAiN;gBACjN,0OAA0O;gBAC1O,0HAA0H;gBAC1H,kIAAkI;gBAClI,yGAAyG;gBACzG,gGAAgG;gBAChG,mIAAmI;gBACnI,iJAAiJ;aACjJ,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,yBAAyB,CAAC,sCAAsC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YACrG,QAAQ,EAAE,sCAAsC;SAChD;QACD;YACC,IAAI,EAAE,mBAAmB;YACzB,WAAW,EACV,sGAAsG;YACvG,KAAK,EAAE,CAAC,GAAG,mCAAmC,CAAC;YAC/C,gBAAgB,EAAE,CAAC,YAAY,CAAC;YAChC,gBAAgB,EAAE,CAAC;YACnB,cAAc,EAAE,CAAC;YACjB,YAAY,EAAE;gBACb,uDAAuD;gBACvD,gGAAgG;gBAChG,6EAA6E;gBAC7E,4KAA4K;gBAC5K,yJAAyJ;gBACzJ,8KAA8K;gBAC9K,8HAA8H;aAC9H,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,yBAAyB,CAAC,6CAA6C,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YAC5G,QAAQ,EAAE,6CAA6C;SACvD;KACD,CAAC;AAAA,CACF;AAED,SAAS,QAAQ,CAAC,KAAc,EAAoC;IACnE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAAA,CAC5E;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,QAAgB,EAAU;IAClE,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AAAA,CACzD;AAED,SAAS,uBAAuB,CAC/B,WAAoC,EACpC,GAA2B,EAC3B,QAAgB,EAChB,WAAiC,EACZ;IACrB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtD,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,GAAG,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrF,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AAAA,CACpB;AAED,SAAS,uBAAuB,CAC/B,WAAoC,EACpC,GAAyB,EACzB,QAAgB,EAChB,WAAiC,EACZ;IACrB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,GAAG,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1F,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CAChD;AAED,SAAS,2BAA2B,CACnC,WAAoC,EACpC,GAA8B,EAC9B,QAAgB,EAChB,WAAiC,EACV;IACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3C,OAAO,EAAE,CAAC;IACX,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,GAAG,mCAAmC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1G,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,KAAK;SACV,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAAA,CACpC;AAED,SAAS,yBAAyB,CACjC,WAAoC,EACpC,QAAgB,EAChB,WAAiC,EACV;IACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,CAAC;QACrD,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAC3C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3C,OAAO,EAAE,CAAC;IACX,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,WAAW,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,mDAAmD;YAC5D,IAAI,EAAE,QAAQ;SACd,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,KAAK;SACV,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAAA,CACpC;AAED,SAAS,mCAAmC,CAC3C,WAAoC,EACpC,GAA0C,EAC1C,QAAgB,EAChB,WAAiC,EACZ;IACrB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,GAAG,iCAAiC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxG,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AAAA,CACd;AAED,SAAS,+BAA+B,CAAC,KAAc,EAAsB;IAC5E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CACpE;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAuC,EAAiC;IAC/G,MAAM,WAAW,GAAyB,EAAE,CAAC;IAC7C,IAAI,WAAoC,CAAC;IACzC,IAAI,IAAY,CAAC;IAEjB,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,gBAAgB,CAA0B,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1E,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,+BAA+B,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxG,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAC1C,CAAC;QACD,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACjC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,WAAW,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,wCAAwC,eAAe,CAAC,KAAK,EAAE,qBAAqB,CAAC,EAAE;YAChG,IAAI,EAAE,OAAO,CAAC,QAAQ;SACtB,CAAC,CAAC;QACH,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,IAAI,GAAG,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACzF,MAAM,WAAW,GAAG,uBAAuB,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACvG,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,gCAAgC,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1G,CAAC;IAED,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,CAAC;IACjD,MAAM,KAAK,GAAG,2BAA2B,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC/F,MAAM,aAAa,GAAG,2BAA2B,CAAC,WAAW,EAAE,eAAe,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC/G,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC/F,MAAM,gBAAgB,GAAG,mCAAmC,CAC3D,WAAW,EACX,kBAAkB,EAClB,OAAO,CAAC,QAAQ,EAChB,WAAW,CACX,CAAC;IACF,MAAM,cAAc,GAAG,mCAAmC,CACzD,WAAW,EACX,gBAAgB,EAChB,OAAO,CAAC,QAAQ,EAChB,WAAW,CACX,CAAC;IACF,MAAM,uBAAuB,GAAG,WAAW,CAAC,MAAM,GAAG,qBAAqB,CAAC;IAC3E,MAAM,KAAK,GAAG,uBAAuB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC3F,MAAM,QAAQ,GAAG,uBAAuB,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAEjG,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,uBAAuB,EAAE,CAAC;QACnF,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO;QACN,UAAU,EAAE;YACX,IAAI;YACJ,WAAW;YACX,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,gBAAgB,EAAE,gBAAgB,IAAI,EAAE;YACxC,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,YAAY;YACZ,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC1B;QACD,WAAW;KACX,CAAC;AAAA,CACF;AAED,SAAS,wBAAwB,CAChC,QAAgB,EAChB,SAAiB,EACjB,MAAoC,EACvB;IACb,OAAO,yBAAyB,CAAC,QAAQ,EAAE;QAC1C,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,MAAM;QACb,OAAO,EAAE,SAAS;KAClB,CAAC,CAAC;AAAA,CACH;AAED,SAAS,8BAA8B,CACtC,GAAW,EACX,MAAoC,EACuC;IAC3E,MAAM,WAAW,GAAyB,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAyB,EAAE,CAAC;IAE7C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACJ,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,WAAW,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,eAAe,CAAC,KAAK,EAAE,mCAAmC,CAAC;YACpE,IAAI,EAAE,GAAG;SACT,CAAC,CAAC;QACH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,SAAS;QACV,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACJ,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,WAAW,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,eAAe,CAAC,KAAK,EAAE,iCAAiC,CAAC;oBAClE,IAAI,EAAE,QAAQ;iBACd,CAAC,CAAC;gBACH,SAAS;YACV,CAAC;QACF,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,SAAS;QACV,CAAC;QAED,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACJ,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,WAAW,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,eAAe,CAAC,KAAK,EAAE,oCAAoC,CAAC;gBACrE,IAAI,EAAE,QAAQ;aACd,CAAC,CAAC;YACH,SAAS;QACV,CAAC;QAED,MAAM,MAAM,GAAG,uBAAuB,CAAC;YACtC,OAAO;YACP,QAAQ;YACR,MAAM;YACN,UAAU,EAAE,wBAAwB,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC;SAC3D,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACvB,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACrC,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AAAA,CACpC;AAED,MAAM,UAAU,2BAA2B,CAAC,OAA2C,EAA2B;IACjH,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;IAEtE,MAAM,WAAW,GAAyB,EAAE,CAAC;IAC7C,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA8B,CAAC;IAChE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,MAAM,kBAAkB,GAAG,gCAAgC,EAAE,CAAC;IAC9D,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9F,SAAS,cAAc,CAAC,WAAiC,EAAQ;QAChE,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACtC,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU,IAAI,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnF,WAAW,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,wBAAwB,UAAU,CAAC,IAAI,uDAAuD;oBACvG,IAAI,EAAE,UAAU,CAAC,QAAQ;iBACzB,CAAC,CAAC;gBACH,SAAS;YACV,CAAC;YACD,MAAM,SAAS,GAAG,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YAC5D,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjC,WAAW,CAAC,IAAI,CAAC;oBAChB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,aAAa,UAAU,CAAC,MAAM,yBAAyB,UAAU,CAAC,IAAI,WAAW;oBAC1F,IAAI,EAAE,UAAU,CAAC,QAAQ;iBACzB,CAAC,CAAC;gBACH,SAAS;YACV,CAAC;YACD,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5B,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACpD,CAAC;IAAA,CACD;IAED,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAEnC,MAAM,UAAU,GAAG,8BAA8B,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACzE,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACvC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAE5C,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,aAAa,GAAG,8BAA8B,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAClF,cAAc,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC1C,WAAW,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,OAAO;QACN,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACnD,WAAW;QACX,aAAa;QACb,gBAAgB;KAChB,CAAC;AAAA,CACF;AAED,OAAO,EAEN,uBAAuB,GAGvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAKN,oCAAoC,EACpC,+BAA+B,EAM/B,eAAe,GAMf,MAAM,cAAc,CAAC","sourcesContent":["import { type Dirent, existsSync, readdirSync, readFileSync, statSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { CONFIG_DIR_NAME } from \"../../config.ts\";\nimport { parseFrontmatter } from \"../../utils/frontmatter.ts\";\nimport { resolvePath } from \"../../utils/paths.ts\";\nimport type { ResourceDiagnostic } from \"../diagnostics.ts\";\nimport { createSyntheticSourceInfo, type SourceInfo } from \"../source-info.ts\";\n\nexport type SubagentDefinitionSource = \"built-in\" | \"user\" | \"project\";\nexport type FileSubagentDefinitionSource = Exclude<SubagentDefinitionSource, \"built-in\">;\n\nexport interface SubagentDefinition {\n\tname: string;\n\tdescription: string;\n\ttools?: string[];\n\texcludedTools?: string[];\n\tallowedSubagents?: string[];\n\tmaxSubagentDepth?: number;\n\tmaxChildAgents?: number;\n\tmodel?: string;\n\tthinking?: string;\n\tsystemPrompt: string;\n\tsource: SubagentDefinitionSource;\n\tsourceInfo: SourceInfo;\n\tfilePath: string;\n}\n\nexport interface ParseSubagentDefinitionOptions {\n\tcontent: string;\n\tfilePath: string;\n\tsource: FileSubagentDefinitionSource;\n\tsourceInfo: SourceInfo;\n}\n\nexport interface ParseSubagentDefinitionResult {\n\tdefinition: SubagentDefinition | null;\n\tdiagnostics: ResourceDiagnostic[];\n}\n\nexport interface DiscoverSubagentDefinitionsOptions {\n\tcwd: string;\n\tagentDir: string;\n\tprojectTrusted: boolean;\n}\n\nexport interface SubagentDiscoveryResult {\n\tdefinitions: SubagentDefinition[];\n\tdiagnostics: ResourceDiagnostic[];\n\tuserAgentsDir: string;\n\tprojectAgentsDir: string;\n}\n\nconst BUILT_IN_GENERAL_SUBAGENT_FILE_PATH = \"builtin:general\";\nconst BUILT_IN_RESEARCHER_SUBAGENT_FILE_PATH = \"builtin:researcher\";\nconst BUILT_IN_DESIGN_DOC_SUBAGENT_FILE_PATH = \"builtin:design-doc\";\nconst BUILT_IN_SECURITY_REVIEWER_SUBAGENT_FILE_PATH = \"builtin:security-reviewer\";\nconst BUILT_IN_READ_ONLY_TOOLS = [\"read\", \"web_search\", \"grep\", \"find\", \"ls\"];\nconst BUILT_IN_DELEGATING_READ_ONLY_TOOLS = [...BUILT_IN_READ_ONLY_TOOLS, \"subagent\"];\n\nexport function createBuiltInSubagentDefinitions(): SubagentDefinition[] {\n\treturn [\n\t\t{\n\t\t\tname: \"general\",\n\t\t\tdescription: \"General-purpose isolated child agent for ad hoc delegated tasks\",\n\t\t\texcludedTools: [\"subagent\"],\n\t\t\tallowedSubagents: [],\n\t\t\tmaxChildAgents: 0,\n\t\t\tsystemPrompt: [\n\t\t\t\t\"You are the built-in general-purpose Volt subagent.\",\n\t\t\t\t\"Complete the delegated task independently using only the task prompt and available tools.\",\n\t\t\t\t\"You are one contributor in a larger workflow, not the final decision-maker.\",\n\t\t\t\t\"Do not delegate to other subagents; the subagent tool is intentionally unavailable for this role.\",\n\t\t\t\t\"For code or research tasks, return concise findings, evidence, blockers, and next steps.\",\n\t\t\t\t\"For writing or creative tasks, return the requested artifact directly.\",\n\t\t\t\t\"Do not assume parent conversation context beyond the delegated task prompt.\",\n\t\t\t].join(\"\\n\"),\n\t\t\tsource: \"built-in\",\n\t\t\tsourceInfo: createSyntheticSourceInfo(BUILT_IN_GENERAL_SUBAGENT_FILE_PATH, { source: \"built-in\" }),\n\t\t\tfilePath: BUILT_IN_GENERAL_SUBAGENT_FILE_PATH,\n\t\t},\n\t\t{\n\t\t\tname: \"researcher\",\n\t\t\tdescription: \"Non-mutating research scout for web and codebase evidence gathering\",\n\t\t\ttools: [...BUILT_IN_DELEGATING_READ_ONLY_TOOLS],\n\t\t\tallowedSubagents: [\"researcher\"],\n\t\t\tmaxSubagentDepth: 3,\n\t\t\tmaxChildAgents: 2,\n\t\t\tsystemPrompt: [\n\t\t\t\t\"You are the built-in Volt researcher subagent.\",\n\t\t\t\t\"Gather source-backed evidence from the web and/or codebase for the delegated question.\",\n\t\t\t\t\"You are one contributor in a larger workflow, not the final decision-maker.\",\n\t\t\t\t\"Do not modify files or run shell commands; this role has non-mutating local tools plus web_search.\",\n\t\t\t\t\"Use the subagent tool only when you discover a distinct follow-up question that would benefit from a fresh, narrower researcher context.\",\n\t\t\t\t\"Delegate only to researcher subagents and keep recursive research bounded.\",\n\t\t\t\t\"Return concise findings with source URLs or file paths, assumptions, uncertainty, and open questions.\",\n\t\t\t].join(\"\\n\"),\n\t\t\tsource: \"built-in\",\n\t\t\tsourceInfo: createSyntheticSourceInfo(BUILT_IN_RESEARCHER_SUBAGENT_FILE_PATH, { source: \"built-in\" }),\n\t\t\tfilePath: BUILT_IN_RESEARCHER_SUBAGENT_FILE_PATH,\n\t\t},\n\t\t{\n\t\t\tname: \"design-doc\",\n\t\t\tdescription: \"Design document planner and synthesizer that delegates independent research when warranted\",\n\t\t\tallowedSubagents: [\"researcher\", \"security-reviewer\", \"general\"],\n\t\t\tmaxSubagentDepth: 3,\n\t\t\tmaxChildAgents: 8,\n\t\t\tsystemPrompt: [\n\t\t\t\t\"You are the built-in Volt design-document coordinator.\",\n\t\t\t\t\"Your job is to turn an ambiguous technical goal into a sourced design/RFC, decision memo, or implementation plan.\",\n\t\t\t\t\"Use the subagent tool for broad or uncertain work that benefits from independent product, architecture, migration, operations, security, performance, prior-art, or skeptical review research before synthesis.\",\n\t\t\t\t\"Scale delegation to complexity: handle simple questions directly, use 1 child for one focused gap, use 2-4 children for independent medium-sized questions, and exceed 4 only for genuinely broad work with non-overlapping assignments.\",\n\t\t\t\t\"Do not delegate duplicate work, and stop spawning once the available evidence is sufficient to make the design decision.\",\n\t\t\t\t\"Prefer parallel delegation for independent research questions and chain delegation only when later steps depend on prior output.\",\n\t\t\t\t\"Preserve minority reports and unresolved objections; do not collapse disagreement into false consensus.\",\n\t\t\t\t\"When external or current claims matter, perform or delegate web research and cite source URLs.\",\n\t\t\t\t\"When editing files, keep changes scoped to the requested design artifact unless the parent task explicitly asks for code changes.\",\n\t\t\t\t\"Return or write a structured document with context, goals, non-goals, proposal, alternatives, risks, rollout, verification, and open questions.\",\n\t\t\t].join(\"\\n\"),\n\t\t\tsource: \"built-in\",\n\t\t\tsourceInfo: createSyntheticSourceInfo(BUILT_IN_DESIGN_DOC_SUBAGENT_FILE_PATH, { source: \"built-in\" }),\n\t\t\tfilePath: BUILT_IN_DESIGN_DOC_SUBAGENT_FILE_PATH,\n\t\t},\n\t\t{\n\t\t\tname: \"security-reviewer\",\n\t\t\tdescription:\n\t\t\t\t\"Non-mutating security review coordinator for threat modeling, code review, and verification planning\",\n\t\t\ttools: [...BUILT_IN_DELEGATING_READ_ONLY_TOOLS],\n\t\t\tallowedSubagents: [\"researcher\"],\n\t\t\tmaxSubagentDepth: 3,\n\t\t\tmaxChildAgents: 4,\n\t\t\tsystemPrompt: [\n\t\t\t\t\"You are the built-in Volt security-reviewer subagent.\",\n\t\t\t\t\"Analyze code, design, dependencies, configuration, and agent/tool workflows for security risk.\",\n\t\t\t\t\"You are one contributor in a larger workflow, not the final decision-maker.\",\n\t\t\t\t\"Do not edit files, write files, run shell commands, or invoke mutating refactors; this role has non-mutating local tools plus web_search and bounded read-only delegation.\",\n\t\t\t\t\"Use researcher subagents for independent research or second-opinion review when it improves coverage, but keep delegation bounded and evidence-focused.\",\n\t\t\t\t\"For exploit verification or regression tests that require file writes or shell commands, return a precise test plan for the parent to authorize outside this read-only role.\",\n\t\t\t\t\"Report findings with file paths, severity, exploit preconditions, evidence, confidence, remediation, and verification steps.\",\n\t\t\t].join(\"\\n\"),\n\t\t\tsource: \"built-in\",\n\t\t\tsourceInfo: createSyntheticSourceInfo(BUILT_IN_SECURITY_REVIEWER_SUBAGENT_FILE_PATH, { source: \"built-in\" }),\n\t\t\tfilePath: BUILT_IN_SECURITY_REVIEWER_SUBAGENT_FILE_PATH,\n\t\t},\n\t];\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction getErrorMessage(error: unknown, fallback: string): string {\n\treturn error instanceof Error ? error.message : fallback;\n}\n\nfunction readRequiredStringField(\n\tfrontmatter: Record<string, unknown>,\n\tkey: \"name\" | \"description\",\n\tfilePath: string,\n\tdiagnostics: ResourceDiagnostic[],\n): string | undefined {\n\tconst value = frontmatter[key];\n\tif (typeof value !== \"string\" || value.trim() === \"\") {\n\t\tdiagnostics.push({ type: \"warning\", message: `${key} is required`, path: filePath });\n\t\treturn undefined;\n\t}\n\treturn value.trim();\n}\n\nfunction readOptionalStringField(\n\tfrontmatter: Record<string, unknown>,\n\tkey: \"model\" | \"thinking\",\n\tfilePath: string,\n\tdiagnostics: ResourceDiagnostic[],\n): string | undefined {\n\tconst value = frontmatter[key];\n\tif (value === undefined || value === null) {\n\t\treturn undefined;\n\t}\n\tif (typeof value !== \"string\") {\n\t\tdiagnostics.push({ type: \"warning\", message: `${key} must be a string`, path: filePath });\n\t\treturn undefined;\n\t}\n\tconst trimmed = value.trim();\n\treturn trimmed.length > 0 ? trimmed : undefined;\n}\n\nfunction readCommaSeparatedListField(\n\tfrontmatter: Record<string, unknown>,\n\tkey: \"tools\" | \"excludedTools\",\n\tfilePath: string,\n\tdiagnostics: ResourceDiagnostic[],\n): string[] | undefined {\n\tif (!Object.hasOwn(frontmatter, key)) {\n\t\treturn undefined;\n\t}\n\tconst value = frontmatter[key];\n\tif (value === undefined || value === null) {\n\t\treturn [];\n\t}\n\tif (typeof value !== \"string\") {\n\t\tdiagnostics.push({ type: \"warning\", message: `${key} must be a comma-separated string`, path: filePath });\n\t\treturn undefined;\n\t}\n\n\treturn value\n\t\t.split(\",\")\n\t\t.map((item) => item.trim())\n\t\t.filter((item) => item.length > 0);\n}\n\nfunction readAllowedSubagentsField(\n\tfrontmatter: Record<string, unknown>,\n\tfilePath: string,\n\tdiagnostics: ResourceDiagnostic[],\n): string[] | undefined {\n\tif (!Object.hasOwn(frontmatter, \"allowedSubagents\")) {\n\t\treturn undefined;\n\t}\n\tconst value = frontmatter.allowedSubagents;\n\tif (value === undefined || value === null) {\n\t\treturn [];\n\t}\n\tif (typeof value !== \"string\") {\n\t\tdiagnostics.push({\n\t\t\ttype: \"warning\",\n\t\t\tmessage: \"allowedSubagents must be a comma-separated string\",\n\t\t\tpath: filePath,\n\t\t});\n\t\treturn undefined;\n\t}\n\n\treturn value\n\t\t.split(\",\")\n\t\t.map((item) => item.trim())\n\t\t.filter((item) => item.length > 0);\n}\n\nfunction readOptionalNonNegativeIntegerField(\n\tfrontmatter: Record<string, unknown>,\n\tkey: \"maxSubagentDepth\" | \"maxChildAgents\",\n\tfilePath: string,\n\tdiagnostics: ResourceDiagnostic[],\n): number | undefined {\n\tif (!Object.hasOwn(frontmatter, key)) {\n\t\treturn undefined;\n\t}\n\tconst value = frontmatter[key];\n\tconst parsed = parseOptionalNonNegativeInteger(value);\n\tif (parsed === undefined) {\n\t\tdiagnostics.push({ type: \"warning\", message: `${key} must be a non-negative integer`, path: filePath });\n\t\treturn undefined;\n\t}\n\treturn parsed;\n}\n\nfunction parseOptionalNonNegativeInteger(value: unknown): number | undefined {\n\tif (typeof value === \"number\") {\n\t\treturn Number.isInteger(value) && value >= 0 ? value : undefined;\n\t}\n\tif (typeof value !== \"string\") {\n\t\treturn undefined;\n\t}\n\tconst trimmed = value.trim();\n\tif (trimmed.length === 0) {\n\t\treturn undefined;\n\t}\n\tconst parsed = Number(trimmed);\n\treturn Number.isInteger(parsed) && parsed >= 0 ? parsed : undefined;\n}\n\nexport function parseSubagentDefinition(options: ParseSubagentDefinitionOptions): ParseSubagentDefinitionResult {\n\tconst diagnostics: ResourceDiagnostic[] = [];\n\tlet frontmatter: Record<string, unknown>;\n\tlet body: string;\n\n\ttry {\n\t\tconst parsed = parseFrontmatter<Record<string, unknown>>(options.content);\n\t\tif (!isRecord(parsed.frontmatter)) {\n\t\t\tdiagnostics.push({ type: \"warning\", message: \"frontmatter must be a mapping\", path: options.filePath });\n\t\t\treturn { definition: null, diagnostics };\n\t\t}\n\t\tfrontmatter = parsed.frontmatter;\n\t\tbody = parsed.body;\n\t} catch (error) {\n\t\tdiagnostics.push({\n\t\t\ttype: \"warning\",\n\t\t\tmessage: `failed to parse subagent definition: ${getErrorMessage(error, \"invalid frontmatter\")}`,\n\t\t\tpath: options.filePath,\n\t\t});\n\t\treturn { definition: null, diagnostics };\n\t}\n\n\tconst name = readRequiredStringField(frontmatter, \"name\", options.filePath, diagnostics);\n\tconst description = readRequiredStringField(frontmatter, \"description\", options.filePath, diagnostics);\n\tconst systemPrompt = body.trim();\n\tif (systemPrompt.length === 0) {\n\t\tdiagnostics.push({ type: \"warning\", message: \"system prompt body is required\", path: options.filePath });\n\t}\n\n\tconst policyDiagnosticStart = diagnostics.length;\n\tconst tools = readCommaSeparatedListField(frontmatter, \"tools\", options.filePath, diagnostics);\n\tconst excludedTools = readCommaSeparatedListField(frontmatter, \"excludedTools\", options.filePath, diagnostics);\n\tconst allowedSubagents = readAllowedSubagentsField(frontmatter, options.filePath, diagnostics);\n\tconst maxSubagentDepth = readOptionalNonNegativeIntegerField(\n\t\tfrontmatter,\n\t\t\"maxSubagentDepth\",\n\t\toptions.filePath,\n\t\tdiagnostics,\n\t);\n\tconst maxChildAgents = readOptionalNonNegativeIntegerField(\n\t\tfrontmatter,\n\t\t\"maxChildAgents\",\n\t\toptions.filePath,\n\t\tdiagnostics,\n\t);\n\tconst hasMalformedPolicyField = diagnostics.length > policyDiagnosticStart;\n\tconst model = readOptionalStringField(frontmatter, \"model\", options.filePath, diagnostics);\n\tconst thinking = readOptionalStringField(frontmatter, \"thinking\", options.filePath, diagnostics);\n\n\tif (!name || !description || systemPrompt.length === 0 || hasMalformedPolicyField) {\n\t\treturn { definition: null, diagnostics };\n\t}\n\n\treturn {\n\t\tdefinition: {\n\t\t\tname,\n\t\t\tdescription,\n\t\t\t...(tools ? { tools } : {}),\n\t\t\t...(excludedTools ? { excludedTools } : {}),\n\t\t\tallowedSubagents: allowedSubagents ?? [],\n\t\t\t...(maxSubagentDepth !== undefined ? { maxSubagentDepth } : {}),\n\t\t\t...(maxChildAgents !== undefined ? { maxChildAgents } : {}),\n\t\t\t...(model ? { model } : {}),\n\t\t\t...(thinking ? { thinking } : {}),\n\t\t\tsystemPrompt,\n\t\t\tsource: options.source,\n\t\t\tsourceInfo: options.sourceInfo,\n\t\t\tfilePath: options.filePath,\n\t\t},\n\t\tdiagnostics,\n\t};\n}\n\nfunction createSubagentSourceInfo(\n\tfilePath: string,\n\tagentsDir: string,\n\tsource: FileSubagentDefinitionSource,\n): SourceInfo {\n\treturn createSyntheticSourceInfo(filePath, {\n\t\tsource: \"local\",\n\t\tscope: source,\n\t\tbaseDir: agentsDir,\n\t});\n}\n\nfunction loadSubagentDefinitionsFromDir(\n\tdir: string,\n\tsource: FileSubagentDefinitionSource,\n): { definitions: SubagentDefinition[]; diagnostics: ResourceDiagnostic[] } {\n\tconst definitions: SubagentDefinition[] = [];\n\tconst diagnostics: ResourceDiagnostic[] = [];\n\n\tif (!existsSync(dir)) {\n\t\treturn { definitions, diagnostics };\n\t}\n\n\tlet entries: Dirent[];\n\ttry {\n\t\tentries = readdirSync(dir, { withFileTypes: true }).sort((a, b) => a.name.localeCompare(b.name));\n\t} catch (error) {\n\t\tdiagnostics.push({\n\t\t\ttype: \"warning\",\n\t\t\tmessage: getErrorMessage(error, \"failed to read subagent directory\"),\n\t\t\tpath: dir,\n\t\t});\n\t\treturn { definitions, diagnostics };\n\t}\n\n\tfor (const entry of entries) {\n\t\tif (!entry.name.endsWith(\".md\")) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst filePath = join(dir, entry.name);\n\t\tlet isFile = entry.isFile();\n\t\tif (entry.isSymbolicLink()) {\n\t\t\ttry {\n\t\t\t\tisFile = statSync(filePath).isFile();\n\t\t\t} catch (error) {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\ttype: \"warning\",\n\t\t\t\t\tmessage: getErrorMessage(error, \"failed to read subagent symlink\"),\n\t\t\t\t\tpath: filePath,\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (!isFile) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet content: string;\n\t\ttry {\n\t\t\tcontent = readFileSync(filePath, \"utf-8\");\n\t\t} catch (error) {\n\t\t\tdiagnostics.push({\n\t\t\t\ttype: \"warning\",\n\t\t\t\tmessage: getErrorMessage(error, \"failed to read subagent definition\"),\n\t\t\t\tpath: filePath,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst result = parseSubagentDefinition({\n\t\t\tcontent,\n\t\t\tfilePath,\n\t\t\tsource,\n\t\t\tsourceInfo: createSubagentSourceInfo(filePath, dir, source),\n\t\t});\n\t\tif (result.definition) {\n\t\t\tdefinitions.push(result.definition);\n\t\t}\n\t\tdiagnostics.push(...result.diagnostics);\n\t}\n\n\treturn { definitions, diagnostics };\n}\n\nexport function discoverSubagentDefinitions(options: DiscoverSubagentDefinitionsOptions): SubagentDiscoveryResult {\n\tconst resolvedCwd = resolvePath(options.cwd);\n\tconst resolvedAgentDir = resolvePath(options.agentDir);\n\tconst userAgentsDir = join(resolvedAgentDir, \"agents\");\n\tconst projectAgentsDir = join(resolvedCwd, CONFIG_DIR_NAME, \"agents\");\n\n\tconst diagnostics: ResourceDiagnostic[] = [];\n\tconst definitionsByName = new Map<string, SubagentDefinition>();\n\tconst seenBySource = new Set<string>();\n\tconst builtInDefinitions = createBuiltInSubagentDefinitions();\n\tconst reservedBuiltInNames = new Set(builtInDefinitions.map((definition) => definition.name));\n\n\tfunction addDefinitions(definitions: SubagentDefinition[]): void {\n\t\tfor (const definition of definitions) {\n\t\t\tif (definition.source !== \"built-in\" && reservedBuiltInNames.has(definition.name)) {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\ttype: \"warning\",\n\t\t\t\t\tmessage: `subagent definition \"${definition.name}\" cannot override a built-in subagent and was ignored`,\n\t\t\t\t\tpath: definition.filePath,\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst sourceKey = `${definition.source}:${definition.name}`;\n\t\t\tif (seenBySource.has(sourceKey)) {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\ttype: \"warning\",\n\t\t\t\t\tmessage: `duplicate ${definition.source} subagent definition \"${definition.name}\" ignored`,\n\t\t\t\t\tpath: definition.filePath,\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tseenBySource.add(sourceKey);\n\t\t\tdefinitionsByName.set(definition.name, definition);\n\t\t}\n\t}\n\n\taddDefinitions(builtInDefinitions);\n\n\tconst userResult = loadSubagentDefinitionsFromDir(userAgentsDir, \"user\");\n\taddDefinitions(userResult.definitions);\n\tdiagnostics.push(...userResult.diagnostics);\n\n\tif (options.projectTrusted) {\n\t\tconst projectResult = loadSubagentDefinitionsFromDir(projectAgentsDir, \"project\");\n\t\taddDefinitions(projectResult.definitions);\n\t\tdiagnostics.push(...projectResult.diagnostics);\n\t}\n\n\treturn {\n\t\tdefinitions: Array.from(definitionsByName.values()),\n\t\tdiagnostics,\n\t\tuserAgentsDir,\n\t\tprojectAgentsDir,\n\t};\n}\n\nexport {\n\ttype SubagentDelegationReservation,\n\tSubagentDelegationScope,\n\ttype SubagentDelegationScopeOptions,\n\ttype SubagentDelegationScopeSnapshot,\n} from \"./delegation-scope.ts\";\n\nexport {\n\ttype SubagentActivity,\n\ttype SubagentActivityEvent,\n\ttype SubagentActivityListener,\n\ttype SubagentActivityStatus,\n\tSubagentDefinitionConfigurationError,\n\tSubagentDefinitionNotFoundError,\n\ttype SubagentDelegationScopeLease,\n\ttype SubagentEndEvent,\n\ttype SubagentEvent,\n\ttype SubagentEventListener,\n\ttype SubagentHandle,\n\tSubagentManager,\n\ttype SubagentManagerOptions,\n\ttype SubagentResult,\n\ttype SubagentRuntimeCreatedEvent,\n\ttype SubagentStartByNameOptions,\n\ttype SubagentStartOptions,\n} from \"./manager.ts\";\n"]}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import type { AgentMessage } from "@hansjm10/volt-agent-core";
|
|
2
|
+
import type { RpcClientEvent } from "../../modes/rpc/rpc-client-base.ts";
|
|
3
|
+
import type { SessionStats } from "../agent-session.ts";
|
|
4
|
+
import { type AgentSessionRuntime, type CreateAgentSessionRuntimeFactory, type SubagentRuntimeContext } from "../agent-session-runtime.ts";
|
|
5
|
+
import type { ResourceDiagnostic } from "../diagnostics.ts";
|
|
6
|
+
import type { ResourceLoader } from "../resource-loader.ts";
|
|
7
|
+
import type { RpcSessionState, RpcTranscriptResponse } from "../rpc/types.ts";
|
|
8
|
+
import { SessionManager } from "../session-manager.ts";
|
|
9
|
+
import { SubagentDelegationScope, type SubagentDelegationScopeOptions } from "./delegation-scope.ts";
|
|
10
|
+
import type { SubagentDefinition } from "./index.ts";
|
|
11
|
+
export type SubagentEvent = RpcClientEvent;
|
|
12
|
+
export type SubagentEndEvent = Extract<SubagentEvent, {
|
|
13
|
+
type: "agent_end";
|
|
14
|
+
}>;
|
|
15
|
+
export type SubagentEventListener = (event: SubagentEvent) => void;
|
|
16
|
+
export type SubagentActivityStatus = "running" | "completed" | "failed" | "aborted";
|
|
17
|
+
export interface SubagentActivityEvent {
|
|
18
|
+
sequence: number;
|
|
19
|
+
timestamp: number;
|
|
20
|
+
event: SubagentEvent;
|
|
21
|
+
}
|
|
22
|
+
/** Retained view of a child run, including its live event flow and completed transcript. */
|
|
23
|
+
export interface SubagentActivity {
|
|
24
|
+
id: string;
|
|
25
|
+
sessionId: string;
|
|
26
|
+
agent: {
|
|
27
|
+
name: string;
|
|
28
|
+
source: SubagentDefinition["source"] | undefined;
|
|
29
|
+
};
|
|
30
|
+
task?: string;
|
|
31
|
+
status: SubagentActivityStatus;
|
|
32
|
+
startedAt: number;
|
|
33
|
+
updatedAt: number;
|
|
34
|
+
finishedAt?: number;
|
|
35
|
+
abortRequested: boolean;
|
|
36
|
+
events: readonly SubagentActivityEvent[];
|
|
37
|
+
droppedEvents: number;
|
|
38
|
+
transcript: readonly AgentMessage[];
|
|
39
|
+
sessionStats?: SessionStats;
|
|
40
|
+
error?: string;
|
|
41
|
+
}
|
|
42
|
+
export type SubagentActivityListener = (activityId: string) => void;
|
|
43
|
+
export interface SubagentResult {
|
|
44
|
+
id: string;
|
|
45
|
+
sessionId: string;
|
|
46
|
+
event: SubagentEndEvent;
|
|
47
|
+
}
|
|
48
|
+
export interface SubagentHandle {
|
|
49
|
+
id: string;
|
|
50
|
+
sessionId: string;
|
|
51
|
+
prompt(message: string): Promise<void>;
|
|
52
|
+
abort(): Promise<void>;
|
|
53
|
+
getState(): Promise<RpcSessionState>;
|
|
54
|
+
getTranscript(options?: {
|
|
55
|
+
limit?: number;
|
|
56
|
+
beforeEntryId?: string;
|
|
57
|
+
}): Promise<RpcTranscriptResponse>;
|
|
58
|
+
getSessionStats(): Promise<SessionStats>;
|
|
59
|
+
waitForEnd(): Promise<SubagentResult>;
|
|
60
|
+
dispose(): Promise<void>;
|
|
61
|
+
onEvent(listener: SubagentEventListener): () => void;
|
|
62
|
+
}
|
|
63
|
+
export interface SubagentRuntimeCreatedEvent {
|
|
64
|
+
id: string;
|
|
65
|
+
sessionId: string;
|
|
66
|
+
runtime: AgentSessionRuntime;
|
|
67
|
+
definition?: SubagentDefinition;
|
|
68
|
+
parentSessionId?: string;
|
|
69
|
+
parentSessionFile?: string;
|
|
70
|
+
}
|
|
71
|
+
export interface SubagentManagerOptions {
|
|
72
|
+
createRuntime: CreateAgentSessionRuntimeFactory;
|
|
73
|
+
cwd: string;
|
|
74
|
+
agentDir: string;
|
|
75
|
+
resourceLoader?: ResourceLoader;
|
|
76
|
+
/** Parent session used to create durable child sessions when start options do not supply one. */
|
|
77
|
+
parentSessionManager?: SessionManager;
|
|
78
|
+
/** Maximum tool policy inherited from the parent context. Definition tools are intersected with this list. */
|
|
79
|
+
allowedTools?: string[];
|
|
80
|
+
/** Current subagent identity and delegation policy when this manager belongs to a child runtime. */
|
|
81
|
+
subagentContext?: SubagentRuntimeContext;
|
|
82
|
+
requestTimeoutMs?: number;
|
|
83
|
+
/** Keep child runtimes alive after the hidden loopback client detaches. Another owner must retain/dispose them. */
|
|
84
|
+
retainRuntimeOnDispose?: boolean;
|
|
85
|
+
/** Called after a child runtime is ready so hosts can register it for live attachment. */
|
|
86
|
+
onRuntimeCreated?: (event: SubagentRuntimeCreatedEvent) => void | Promise<void>;
|
|
87
|
+
}
|
|
88
|
+
export interface SubagentDelegationScopeLease {
|
|
89
|
+
scope: SubagentDelegationScope;
|
|
90
|
+
owned: boolean;
|
|
91
|
+
}
|
|
92
|
+
export interface SubagentStartOptions {
|
|
93
|
+
cwd?: string;
|
|
94
|
+
agentDir?: string;
|
|
95
|
+
sessionManager?: SessionManager;
|
|
96
|
+
requestTimeoutMs?: number;
|
|
97
|
+
/** Shared root budget for all descendants created by one delegation tool call. */
|
|
98
|
+
delegationScope?: SubagentDelegationScope;
|
|
99
|
+
}
|
|
100
|
+
export interface SubagentStartByNameOptions extends SubagentStartOptions {
|
|
101
|
+
resourceLoader?: ResourceLoader;
|
|
102
|
+
/** Maximum tool policy inherited from the parent context. Definition tools are intersected with this list. */
|
|
103
|
+
allowedTools?: string[];
|
|
104
|
+
}
|
|
105
|
+
export declare class SubagentDefinitionNotFoundError extends Error {
|
|
106
|
+
readonly agentName: string;
|
|
107
|
+
readonly availableNames: string[];
|
|
108
|
+
readonly diagnostics: ResourceDiagnostic[];
|
|
109
|
+
constructor(agentName: string, availableNames: string[], diagnostics?: ResourceDiagnostic[]);
|
|
110
|
+
}
|
|
111
|
+
export declare class SubagentDefinitionConfigurationError extends Error {
|
|
112
|
+
readonly agentName: string;
|
|
113
|
+
readonly field: "model" | "thinking";
|
|
114
|
+
constructor(agentName: string, field: "model" | "thinking", message: string);
|
|
115
|
+
}
|
|
116
|
+
export declare class SubagentManager {
|
|
117
|
+
private readonly createRuntime;
|
|
118
|
+
private readonly cwd;
|
|
119
|
+
private readonly agentDir;
|
|
120
|
+
private readonly resourceLoader?;
|
|
121
|
+
private readonly parentSessionManager?;
|
|
122
|
+
private readonly allowedTools?;
|
|
123
|
+
private readonly subagentContext?;
|
|
124
|
+
private readonly requestTimeoutMs?;
|
|
125
|
+
private readonly retainRuntimeOnDispose;
|
|
126
|
+
private readonly onRuntimeCreated?;
|
|
127
|
+
private readonly handles;
|
|
128
|
+
private readonly activities;
|
|
129
|
+
private readonly activityListeners;
|
|
130
|
+
private childStartCount;
|
|
131
|
+
private disposePromise;
|
|
132
|
+
private pendingStartCount;
|
|
133
|
+
private readonly pendingStartWaiters;
|
|
134
|
+
constructor(options: SubagentManagerOptions);
|
|
135
|
+
createDelegationScope(options?: SubagentDelegationScopeOptions): SubagentDelegationScopeLease;
|
|
136
|
+
start(options?: SubagentStartOptions): Promise<SubagentHandle>;
|
|
137
|
+
listDefinitions(options?: {
|
|
138
|
+
resourceLoader?: ResourceLoader;
|
|
139
|
+
}): SubagentDefinition[];
|
|
140
|
+
/**
|
|
141
|
+
* Definitions permitted by this runtime's delegation policy (`allowedSubagents`),
|
|
142
|
+
* ignoring exhaustible depth and child-start budgets. Callers use this to distinguish
|
|
143
|
+
* never-permitted names from exhausted budgets, which report precise errors on start.
|
|
144
|
+
*/
|
|
145
|
+
listPermittedDefinitions(options?: {
|
|
146
|
+
resourceLoader?: ResourceLoader;
|
|
147
|
+
}): SubagentDefinition[];
|
|
148
|
+
/** Definitions this runtime may delegate to right now, including depth and child-start budgets. */
|
|
149
|
+
listAvailableDefinitions(options?: {
|
|
150
|
+
resourceLoader?: ResourceLoader;
|
|
151
|
+
}): SubagentDefinition[];
|
|
152
|
+
/** List active and recently completed child runs, newest and active first. */
|
|
153
|
+
listActivities(): SubagentActivity[];
|
|
154
|
+
/** Subscribe to live child activity changes. Snapshots remain available after handle disposal. */
|
|
155
|
+
subscribeActivities(listener: SubagentActivityListener): () => void;
|
|
156
|
+
getDefinition(agentName: string, options?: {
|
|
157
|
+
resourceLoader?: ResourceLoader;
|
|
158
|
+
}): SubagentDefinition;
|
|
159
|
+
startByName(agentName: string, options?: SubagentStartByNameOptions): Promise<SubagentHandle>;
|
|
160
|
+
dispose(): Promise<void>;
|
|
161
|
+
private reserveChildStart;
|
|
162
|
+
private assertNotDisposed;
|
|
163
|
+
private beginStart;
|
|
164
|
+
private waitForPendingStarts;
|
|
165
|
+
private resolveDelegationScope;
|
|
166
|
+
private createChildSubagentContext;
|
|
167
|
+
private startRuntime;
|
|
168
|
+
private registerActivity;
|
|
169
|
+
private updateActivityTask;
|
|
170
|
+
private markActivityAbortRequested;
|
|
171
|
+
private recordActivityEvent;
|
|
172
|
+
private finishActivity;
|
|
173
|
+
private snapshotActivity;
|
|
174
|
+
private notifyActivity;
|
|
175
|
+
private trimActivities;
|
|
176
|
+
private createDefaultChildSessionManager;
|
|
177
|
+
private notifyRuntimeCreated;
|
|
178
|
+
private resolveDefinition;
|
|
179
|
+
private applyDefinitionToRuntime;
|
|
180
|
+
private validateThinkingLevel;
|
|
181
|
+
private createChildRuntime;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/core/subagents/manager.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport type { AgentMessage, ThinkingLevel } from \"@hansjm10/volt-agent-core\";\nimport { createInProcessRpcClient, type InProcessRpcClient } from \"../../modes/rpc/in-process-rpc-client.ts\";\nimport type { RpcClientEvent } from \"../../modes/rpc/rpc-client-base.ts\";\nimport type { SessionStats } from \"../agent-session.ts\";\nimport {\n\ttype AgentSessionRuntime,\n\ttype CreateAgentSessionRuntimeFactory,\n\tcreateAgentSessionRuntime,\n\ttype SubagentRuntimeContext,\n} from \"../agent-session-runtime.ts\";\nimport type { ResourceDiagnostic } from \"../diagnostics.ts\";\nimport { parseModelPattern } from \"../model-resolver.ts\";\nimport type { ResourceLoader } from \"../resource-loader.ts\";\nimport type { RpcSessionState, RpcTranscriptResponse } from \"../rpc/types.ts\";\nimport { SessionManager } from \"../session-manager.ts\";\nimport {\n\ttype SubagentDelegationReservation,\n\tSubagentDelegationScope,\n\ttype SubagentDelegationScopeOptions,\n} from \"./delegation-scope.ts\";\nimport type { SubagentDefinition } from \"./index.ts\";\n\nexport type SubagentEvent = RpcClientEvent;\nexport type SubagentEndEvent = Extract<SubagentEvent, { type: \"agent_end\" }>;\nexport type SubagentEventListener = (event: SubagentEvent) => void;\nexport type SubagentActivityStatus = \"running\" | \"completed\" | \"failed\" | \"aborted\";\n\nexport interface SubagentActivityEvent {\n\tsequence: number;\n\ttimestamp: number;\n\tevent: SubagentEvent;\n}\n\n/** Retained view of a child run, including its live event flow and completed transcript. */\nexport interface SubagentActivity {\n\tid: string;\n\tsessionId: string;\n\tagent: {\n\t\tname: string;\n\t\tsource: SubagentDefinition[\"source\"] | undefined;\n\t};\n\ttask?: string;\n\tstatus: SubagentActivityStatus;\n\tstartedAt: number;\n\tupdatedAt: number;\n\tfinishedAt?: number;\n\tabortRequested: boolean;\n\tevents: readonly SubagentActivityEvent[];\n\tdroppedEvents: number;\n\ttranscript: readonly AgentMessage[];\n\tsessionStats?: SessionStats;\n\terror?: string;\n}\n\nexport type SubagentActivityListener = (activityId: string) => void;\n\nexport interface SubagentResult {\n\tid: string;\n\tsessionId: string;\n\tevent: SubagentEndEvent;\n}\n\nexport interface SubagentHandle {\n\tid: string;\n\tsessionId: string;\n\tprompt(message: string): Promise<void>;\n\tabort(): Promise<void>;\n\tgetState(): Promise<RpcSessionState>;\n\tgetTranscript(options?: { limit?: number; beforeEntryId?: string }): Promise<RpcTranscriptResponse>;\n\tgetSessionStats(): Promise<SessionStats>;\n\twaitForEnd(): Promise<SubagentResult>;\n\tdispose(): Promise<void>;\n\tonEvent(listener: SubagentEventListener): () => void;\n}\n\nexport interface SubagentRuntimeCreatedEvent {\n\tid: string;\n\tsessionId: string;\n\truntime: AgentSessionRuntime;\n\tdefinition?: SubagentDefinition;\n\tparentSessionId?: string;\n\tparentSessionFile?: string;\n}\n\nexport interface SubagentManagerOptions {\n\tcreateRuntime: CreateAgentSessionRuntimeFactory;\n\tcwd: string;\n\tagentDir: string;\n\tresourceLoader?: ResourceLoader;\n\t/** Parent session used to create durable child sessions when start options do not supply one. */\n\tparentSessionManager?: SessionManager;\n\t/** Maximum tool policy inherited from the parent context. Definition tools are intersected with this list. */\n\tallowedTools?: string[];\n\t/** Current subagent identity and delegation policy when this manager belongs to a child runtime. */\n\tsubagentContext?: SubagentRuntimeContext;\n\trequestTimeoutMs?: number;\n\t/** Keep child runtimes alive after the hidden loopback client detaches. Another owner must retain/dispose them. */\n\tretainRuntimeOnDispose?: boolean;\n\t/** Called after a child runtime is ready so hosts can register it for live attachment. */\n\tonRuntimeCreated?: (event: SubagentRuntimeCreatedEvent) => void | Promise<void>;\n}\n\nexport interface SubagentDelegationScopeLease {\n\tscope: SubagentDelegationScope;\n\towned: boolean;\n}\n\nexport interface SubagentStartOptions {\n\tcwd?: string;\n\tagentDir?: string;\n\tsessionManager?: SessionManager;\n\trequestTimeoutMs?: number;\n\t/** Shared root budget for all descendants created by one delegation tool call. */\n\tdelegationScope?: SubagentDelegationScope;\n}\n\nexport interface SubagentStartByNameOptions extends SubagentStartOptions {\n\tresourceLoader?: ResourceLoader;\n\t/** Maximum tool policy inherited from the parent context. Definition tools are intersected with this list. */\n\tallowedTools?: string[];\n}\n\nexport class SubagentDefinitionNotFoundError extends Error {\n\treadonly agentName: string;\n\treadonly availableNames: string[];\n\treadonly diagnostics: ResourceDiagnostic[];\n\n\tconstructor(agentName: string, availableNames: string[], diagnostics: ResourceDiagnostic[] = []) {\n\t\tsuper(\n\t\t\tagentName.trim() ? `Subagent definition \"${agentName}\" was not found` : \"Subagent definition name is required\",\n\t\t);\n\t\tthis.name = \"SubagentDefinitionNotFoundError\";\n\t\tthis.agentName = agentName;\n\t\tthis.availableNames = availableNames;\n\t\tthis.diagnostics = diagnostics;\n\t}\n}\n\nexport class SubagentDefinitionConfigurationError extends Error {\n\treadonly agentName: string;\n\treadonly field: \"model\" | \"thinking\";\n\n\tconstructor(agentName: string, field: \"model\" | \"thinking\", message: string) {\n\t\tsuper(`Invalid subagent definition \"${agentName}\" ${field}: ${message}`);\n\t\tthis.name = \"SubagentDefinitionConfigurationError\";\n\t\tthis.agentName = agentName;\n\t\tthis.field = field;\n\t}\n}\n\nconst VALID_THINKING_LEVELS: readonly ThinkingLevel[] = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"];\nconst MAX_RETAINED_ACTIVITIES = 50;\nconst MAX_RETAINED_ACTIVITY_EVENTS = 2_000;\n\ninterface MutableSubagentActivity {\n\tid: string;\n\tsessionId: string;\n\tagent: SubagentActivity[\"agent\"];\n\ttask: string | undefined;\n\tstatus: SubagentActivityStatus;\n\tstartedAt: number;\n\tupdatedAt: number;\n\tfinishedAt: number | undefined;\n\tabortRequested: boolean;\n\tevents: SubagentActivityEvent[];\n\tdroppedEvents: number;\n\ttranscript: AgentMessage[];\n\tsessionStats: SessionStats | undefined;\n\terror: string | undefined;\n\truntime: AgentSessionRuntime | undefined;\n\tnextSequence: number;\n}\n\nfunction errorMessage(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n\nfunction getTerminalActivityResult(event: SubagentEndEvent): {\n\tstatus: Extract<SubagentActivityStatus, \"completed\" | \"failed\" | \"aborted\">;\n\terror?: string;\n} {\n\tfor (let index = event.messages.length - 1; index >= 0; index -= 1) {\n\t\tconst message = event.messages[index];\n\t\tif (!message || message.role !== \"assistant\") {\n\t\t\tcontinue;\n\t\t}\n\t\tconst assistant = message as { stopReason?: unknown; errorMessage?: unknown };\n\t\tif (assistant.stopReason === \"aborted\") {\n\t\t\treturn { status: \"aborted\" };\n\t\t}\n\t\tif (assistant.stopReason === \"error\") {\n\t\t\treturn {\n\t\t\t\tstatus: \"failed\",\n\t\t\t\t...(typeof assistant.errorMessage === \"string\" ? { error: assistant.errorMessage } : {}),\n\t\t\t};\n\t\t}\n\t\treturn { status: \"completed\" };\n\t}\n\treturn { status: \"completed\" };\n}\n\nfunction isThinkingLevel(value: string): value is ThinkingLevel {\n\treturn VALID_THINKING_LEVELS.includes(value as ThinkingLevel);\n}\n\nfunction normalizeUniqueNames(names: readonly string[] | undefined): string[] | undefined {\n\tif (!names) {\n\t\treturn undefined;\n\t}\n\treturn Array.from(new Set(names.map((name) => name.trim()).filter((name) => name.length > 0)));\n}\n\nfunction resolveEffectiveTools(options: {\n\trequestedTools: string[] | undefined;\n\texcludedTools: string[] | undefined;\n\tallowedTools: string[] | undefined;\n\tdefaultTools: string[];\n}): string[] | undefined {\n\tconst normalizedRequested = normalizeUniqueNames(options.requestedTools);\n\tconst normalizedAllowed = normalizeUniqueNames(options.allowedTools);\n\tconst normalizedExcluded = normalizeUniqueNames(options.excludedTools);\n\tlet effectiveTools: string[] | undefined;\n\n\tif (normalizedRequested && normalizedAllowed) {\n\t\tconst allowed = new Set(normalizedAllowed);\n\t\teffectiveTools = normalizedRequested.filter((toolName) => allowed.has(toolName));\n\t} else if (normalizedRequested) {\n\t\teffectiveTools = normalizedRequested;\n\t} else if (normalizedAllowed) {\n\t\teffectiveTools = normalizedAllowed;\n\t} else if (normalizedExcluded) {\n\t\teffectiveTools = normalizeUniqueNames(options.defaultTools);\n\t}\n\n\tif (!effectiveTools || !normalizedExcluded) {\n\t\treturn effectiveTools;\n\t}\n\n\tconst excluded = new Set(normalizedExcluded);\n\treturn effectiveTools.filter((toolName) => !excluded.has(toolName));\n}\n\nclass LocalSubagentHandle implements SubagentHandle {\n\treadonly id: string;\n\treadonly sessionId: string;\n\tprivate readonly client: InProcessRpcClient;\n\tprivate readonly abortRuntime: () => Promise<void>;\n\tprivate readonly removeFromManager: (id: string) => void;\n\tprivate readonly onPromptStarted: (message: string) => void;\n\tprivate readonly onPromptFailed: (error: unknown) => void;\n\tprivate readonly onAbortRequested: () => void;\n\tprivate readonly onTerminal: () => void;\n\tprivate waitForIdle: (() => Promise<void>) | undefined;\n\tprivate readonly eventListeners = new Set<SubagentEventListener>();\n\tprivate readonly endPromise: Promise<SubagentResult>;\n\tprivate resolveEnd: (result: SubagentResult) => void = () => {};\n\tprivate rejectEnd: (error: Error) => void = () => {};\n\tprivate latestEndEvent: SubagentEndEvent | undefined;\n\tprivate settlementWatcherStarted = false;\n\tprivate promptStarted = false;\n\tprivate promptAccepted = false;\n\tprivate promptMessageObserved = false;\n\tprivate endSettled = false;\n\tprivate ownershipSettled = false;\n\tprivate abortRequested = false;\n\tprivate disposed = false;\n\tprivate disposePromise: Promise<void> | undefined;\n\n\tconstructor(options: {\n\t\tid: string;\n\t\tsessionId: string;\n\t\tclient: InProcessRpcClient;\n\t\tabortRuntime: () => Promise<void>;\n\t\tremoveFromManager: (id: string) => void;\n\t\tonPromptStarted: (message: string) => void;\n\t\tonPromptFailed: (error: unknown) => void;\n\t\tonAbortRequested: () => void;\n\t\tonTerminal: () => void;\n\t\twaitForIdle: () => Promise<void>;\n\t}) {\n\t\tthis.id = options.id;\n\t\tthis.sessionId = options.sessionId;\n\t\tthis.client = options.client;\n\t\tthis.abortRuntime = options.abortRuntime;\n\t\tthis.removeFromManager = options.removeFromManager;\n\t\tthis.onPromptStarted = options.onPromptStarted;\n\t\tthis.onPromptFailed = options.onPromptFailed;\n\t\tthis.onAbortRequested = options.onAbortRequested;\n\t\tthis.onTerminal = options.onTerminal;\n\t\tthis.waitForIdle = options.waitForIdle;\n\t\tthis.endPromise = new Promise<SubagentResult>((resolve, reject) => {\n\t\t\tthis.resolveEnd = resolve;\n\t\t\tthis.rejectEnd = reject;\n\t\t});\n\t\tvoid this.endPromise.catch(() => {});\n\t}\n\n\tasync prompt(message: string): Promise<void> {\n\t\tthis.assertOpen();\n\t\tthis.promptStarted = true;\n\t\tthis.onPromptStarted(message);\n\t\ttry {\n\t\t\tawait this.client.prompt(message, undefined, () => {\n\t\t\t\tthis.promptAccepted = true;\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis.onPromptFailed(error);\n\t\t\tthis.settleOwnership();\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync abort(): Promise<void> {\n\t\tthis.assertOpen();\n\t\tthis.abortRequested = true;\n\t\tthis.onAbortRequested();\n\t\t// Abort the in-process runtime directly so cancellation is signalled before\n\t\t// concurrent disposal can close the loopback transport.\n\t\tawait this.abortRuntime();\n\t}\n\n\tasync getState(): Promise<RpcSessionState> {\n\t\tthis.assertOpen();\n\t\treturn this.client.getState();\n\t}\n\n\tasync getTranscript(options: { limit?: number; beforeEntryId?: string } = {}): Promise<RpcTranscriptResponse> {\n\t\tthis.assertOpen();\n\t\treturn this.client.getTranscript(options);\n\t}\n\n\tasync getSessionStats(): Promise<SessionStats> {\n\t\tthis.assertOpen();\n\t\treturn this.client.getSessionStats();\n\t}\n\n\twaitForEnd(): Promise<SubagentResult> {\n\t\treturn this.endPromise;\n\t}\n\n\tonEvent(listener: SubagentEventListener): () => void {\n\t\tthis.eventListeners.add(listener);\n\t\treturn () => {\n\t\t\tthis.eventListeners.delete(listener);\n\t\t};\n\t}\n\n\tdispose(): Promise<void> {\n\t\tif (this.disposePromise) {\n\t\t\treturn this.disposePromise;\n\t\t}\n\t\tthis.disposed = true;\n\t\tthis.waitForIdle = undefined;\n\t\tconst abortInFlightRun = !this.endSettled && !this.abortRequested;\n\t\tif (abortInFlightRun) {\n\t\t\t// Disposing a still-running child must not orphan its turn: when the\n\t\t\t// runtime is retained (daemon hosts keep child runtimes attachable),\n\t\t\t// client.stop() only closes the loopback transport and the child would\n\t\t\t// keep running on a result nobody can receive. Abort the runtime\n\t\t\t// directly — the public abort() asserts the handle is still open — and\n\t\t\t// do it fire-and-forget so a slow-to-cancel child cannot wedge\n\t\t\t// disposal (and with it a lease handoff). Skipped when an abort was\n\t\t\t// already requested through the handle so the runtime is signalled\n\t\t\t// exactly once. Mark the abort request before rejecting the end\n\t\t\t// promise so the manager's terminal handler records \"aborted\" rather\n\t\t\t// than \"failed\".\n\t\t\tthis.onAbortRequested();\n\t\t\tvoid this.abortRuntime().catch(() => undefined);\n\t\t}\n\t\tthis.settleOwnership();\n\t\tif (!this.endSettled) {\n\t\t\tthis.endSettled = true;\n\t\t\tthis.rejectEnd(new Error(`Subagent ${this.id} was disposed before completion`));\n\t\t}\n\t\tthis.disposePromise = Promise.resolve().then(async () => {\n\t\t\ttry {\n\t\t\t\tawait this.client.stop();\n\t\t\t} finally {\n\t\t\t\tthis.eventListeners.clear();\n\t\t\t\tthis.removeFromManager(this.id);\n\t\t\t}\n\t\t});\n\t\treturn this.disposePromise;\n\t}\n\n\thandleEvent(event: SubagentEvent): void {\n\t\tif (this.disposed) {\n\t\t\treturn;\n\t\t}\n\t\tif (\n\t\t\tevent.type === \"message_start\" &&\n\t\t\t(event.message.role === \"user\" || event.message.role === \"custom\") &&\n\t\t\tthis.promptStarted\n\t\t) {\n\t\t\tthis.promptMessageObserved = true;\n\t\t}\n\t\tif (event.type === \"agent_end\" && this.promptMessageObserved) {\n\t\t\tthis.latestEndEvent = event;\n\t\t}\n\t\tfor (const listener of this.eventListeners) {\n\t\t\ttry {\n\t\t\t\tlistener(event);\n\t\t\t} catch {\n\t\t\t\t// Listener failures should not break the child RPC event stream.\n\t\t\t}\n\t\t}\n\t\tconst shouldWatchSettlement =\n\t\t\t(event.type === \"agent_end\" && this.promptMessageObserved) ||\n\t\t\t(event.type === \"agent_settled\" && this.promptAccepted);\n\t\tif (shouldWatchSettlement && !this.settlementWatcherStarted && !this.disposed && !this.endSettled) {\n\t\t\tthis.settlementWatcherStarted = true;\n\t\t\tvoid this.settleAfterIdle();\n\t\t}\n\t}\n\n\tprivate async settleAfterIdle(): Promise<void> {\n\t\tconst waitForIdle = this.waitForIdle;\n\t\tthis.waitForIdle = undefined;\n\t\tif (!waitForIdle) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tawait waitForIdle();\n\t\t} catch (error) {\n\t\t\tif (!this.disposed && !this.endSettled) {\n\t\t\t\tthis.endSettled = true;\n\t\t\t\tthis.settleOwnership();\n\t\t\t\tthis.rejectEnd(error instanceof Error ? error : new Error(String(error)));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.disposed || this.endSettled) {\n\t\t\treturn;\n\t\t}\n\t\tconst latestEndEvent = this.latestEndEvent;\n\t\tif (!this.promptMessageObserved || !latestEndEvent) {\n\t\t\tthis.endSettled = true;\n\t\t\tthis.settleOwnership();\n\t\t\tthis.rejectEnd(new Error(`Subagent ${this.id} settled without an agent result`));\n\t\t\treturn;\n\t\t}\n\t\tthis.endSettled = true;\n\t\tthis.settleOwnership();\n\t\tconst event = latestEndEvent.willRetry ? { ...latestEndEvent, willRetry: false } : latestEndEvent;\n\t\tthis.resolveEnd({ id: this.id, sessionId: this.sessionId, event });\n\t}\n\n\tprivate assertOpen(): void {\n\t\tif (this.disposed) {\n\t\t\tthrow new Error(`Subagent ${this.id} is disposed`);\n\t\t}\n\t}\n\n\tprivate settleOwnership(): void {\n\t\tif (this.ownershipSettled) return;\n\t\tthis.ownershipSettled = true;\n\t\tthis.onTerminal();\n\t}\n}\n\nexport class SubagentManager {\n\tprivate readonly createRuntime: CreateAgentSessionRuntimeFactory;\n\tprivate readonly cwd: string;\n\tprivate readonly agentDir: string;\n\tprivate readonly resourceLoader?: ResourceLoader;\n\tprivate readonly parentSessionManager?: SessionManager;\n\tprivate readonly allowedTools?: string[];\n\tprivate readonly subagentContext?: SubagentRuntimeContext;\n\tprivate readonly requestTimeoutMs?: number;\n\tprivate readonly retainRuntimeOnDispose: boolean;\n\tprivate readonly onRuntimeCreated?: (event: SubagentRuntimeCreatedEvent) => void | Promise<void>;\n\tprivate readonly handles = new Map<string, LocalSubagentHandle>();\n\tprivate readonly activities = new Map<string, MutableSubagentActivity>();\n\tprivate readonly activityListeners = new Set<SubagentActivityListener>();\n\tprivate childStartCount = 0;\n\tprivate disposePromise: Promise<void> | undefined;\n\tprivate pendingStartCount = 0;\n\tprivate readonly pendingStartWaiters = new Set<() => void>();\n\n\tconstructor(options: SubagentManagerOptions) {\n\t\tthis.createRuntime = options.createRuntime;\n\t\tthis.cwd = options.cwd;\n\t\tthis.agentDir = options.agentDir;\n\t\tthis.resourceLoader = options.resourceLoader;\n\t\tthis.parentSessionManager = options.parentSessionManager;\n\t\tthis.allowedTools = normalizeUniqueNames(options.allowedTools);\n\t\tthis.subagentContext = options.subagentContext;\n\t\tthis.requestTimeoutMs = options.requestTimeoutMs;\n\t\tthis.retainRuntimeOnDispose = options.retainRuntimeOnDispose ?? false;\n\t\tthis.onRuntimeCreated = options.onRuntimeCreated;\n\t}\n\n\tcreateDelegationScope(options: SubagentDelegationScopeOptions = {}): SubagentDelegationScopeLease {\n\t\tthis.assertNotDisposed();\n\t\tconst inherited = this.subagentContext?.delegationScope;\n\t\tif (inherited) {\n\t\t\treturn { scope: inherited, owned: false };\n\t\t}\n\t\treturn { scope: new SubagentDelegationScope(options), owned: true };\n\t}\n\n\tasync start(options: SubagentStartOptions = {}): Promise<SubagentHandle> {\n\t\tconst finishStart = this.beginStart();\n\t\tlet releaseReservation = (): void => undefined;\n\t\tlet scopeLease: SubagentDelegationScopeLease | undefined;\n\t\tlet treeReservation: SubagentDelegationReservation | undefined;\n\t\ttry {\n\t\t\treleaseReservation = this.reserveChildStart(undefined);\n\t\t\tscopeLease = this.resolveDelegationScope(options.delegationScope);\n\t\t\ttreeReservation = scopeLease.scope.reserve(\"subagent\", (this.subagentContext?.depth ?? 0) + 1);\n\t\t\treturn await this.startRuntime(options, undefined, {\n\t\t\t\tscopeLease,\n\t\t\t\treservation: treeReservation,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\treleaseReservation();\n\t\t\ttreeReservation?.rollback();\n\t\t\tif (scopeLease?.owned) scopeLease.scope.dispose();\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tfinishStart();\n\t\t}\n\t}\n\n\tlistDefinitions(options: { resourceLoader?: ResourceLoader } = {}): SubagentDefinition[] {\n\t\tconst resourceLoader = options.resourceLoader ?? this.resourceLoader;\n\t\treturn resourceLoader?.getSubagents().definitions ?? [];\n\t}\n\n\t/**\n\t * Definitions permitted by this runtime's delegation policy (`allowedSubagents`),\n\t * ignoring exhaustible depth and child-start budgets. Callers use this to distinguish\n\t * never-permitted names from exhausted budgets, which report precise errors on start.\n\t */\n\tlistPermittedDefinitions(options: { resourceLoader?: ResourceLoader } = {}): SubagentDefinition[] {\n\t\tconst definitions = this.listDefinitions(options);\n\t\tconst allowedSubagents = normalizeUniqueNames(this.subagentContext?.allowedSubagents);\n\t\tif (!allowedSubagents) {\n\t\t\treturn definitions;\n\t\t}\n\t\tconst allowedNames = new Set(allowedSubagents);\n\t\treturn definitions.filter((definition) => allowedNames.has(definition.name));\n\t}\n\n\t/** Definitions this runtime may delegate to right now, including depth and child-start budgets. */\n\tlistAvailableDefinitions(options: { resourceLoader?: ResourceLoader } = {}): SubagentDefinition[] {\n\t\tconst context = this.subagentContext;\n\t\tif (\n\t\t\tcontext &&\n\t\t\t((context.maxSubagentDepth !== undefined && context.depth >= context.maxSubagentDepth) ||\n\t\t\t\t(context.maxChildAgents !== undefined && this.childStartCount >= context.maxChildAgents))\n\t\t) {\n\t\t\treturn [];\n\t\t}\n\t\treturn this.listPermittedDefinitions(options);\n\t}\n\n\t/** List active and recently completed child runs, newest and active first. */\n\tlistActivities(): SubagentActivity[] {\n\t\treturn Array.from(this.activities.values())\n\t\t\t.sort((left, right) => {\n\t\t\t\tif (left.status === \"running\" && right.status !== \"running\") return -1;\n\t\t\t\tif (left.status !== \"running\" && right.status === \"running\") return 1;\n\t\t\t\treturn right.startedAt - left.startedAt;\n\t\t\t})\n\t\t\t.map((activity) => this.snapshotActivity(activity));\n\t}\n\n\t/** Subscribe to live child activity changes. Snapshots remain available after handle disposal. */\n\tsubscribeActivities(listener: SubagentActivityListener): () => void {\n\t\tthis.activityListeners.add(listener);\n\t\treturn () => {\n\t\t\tthis.activityListeners.delete(listener);\n\t\t};\n\t}\n\n\tgetDefinition(agentName: string, options: { resourceLoader?: ResourceLoader } = {}): SubagentDefinition {\n\t\treturn this.resolveDefinition(agentName, options.resourceLoader);\n\t}\n\n\tasync startByName(agentName: string, options: SubagentStartByNameOptions = {}): Promise<SubagentHandle> {\n\t\tconst finishStart = this.beginStart();\n\t\tlet releaseReservation = (): void => undefined;\n\t\tlet scopeLease: SubagentDelegationScopeLease | undefined;\n\t\tlet treeReservation: SubagentDelegationReservation | undefined;\n\t\ttry {\n\t\t\tconst definition = this.getDefinition(agentName, { resourceLoader: options.resourceLoader });\n\t\t\treleaseReservation = this.reserveChildStart(definition.name);\n\t\t\tscopeLease = this.resolveDelegationScope(options.delegationScope);\n\t\t\ttreeReservation = scopeLease.scope.reserve(definition.name, (this.subagentContext?.depth ?? 0) + 1);\n\t\t\treturn await this.startRuntime(\n\t\t\t\toptions,\n\t\t\t\t{\n\t\t\t\t\tdefinition,\n\t\t\t\t\tallowedTools: options.allowedTools ?? this.allowedTools,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tscopeLease,\n\t\t\t\t\treservation: treeReservation,\n\t\t\t\t},\n\t\t\t);\n\t\t} catch (error) {\n\t\t\treleaseReservation();\n\t\t\ttreeReservation?.rollback();\n\t\t\tif (scopeLease?.owned) scopeLease.scope.dispose();\n\t\t\tthrow error;\n\t\t} finally {\n\t\t\tfinishStart();\n\t\t}\n\t}\n\n\tasync dispose(): Promise<void> {\n\t\tif (!this.disposePromise) {\n\t\t\tthis.disposePromise = (async () => {\n\t\t\t\tawait this.waitForPendingStarts();\n\t\t\t\tconst handles = Array.from(this.handles.values());\n\t\t\t\ttry {\n\t\t\t\t\tawait Promise.allSettled(handles.map((handle) => handle.dispose()));\n\t\t\t\t} finally {\n\t\t\t\t\tthis.activityListeners.clear();\n\t\t\t\t}\n\t\t\t})();\n\t\t}\n\t\tawait this.disposePromise;\n\t}\n\n\tprivate reserveChildStart(agentName: string | undefined): () => void {\n\t\tconst context = this.subagentContext;\n\t\tif (!context) {\n\t\t\treturn () => undefined;\n\t\t}\n\n\t\tif (!agentName) {\n\t\t\tthrow new Error(`Subagent \"${context.agentName}\" cannot start unnamed child subagents.`);\n\t\t}\n\n\t\tif (context.maxSubagentDepth !== undefined && context.depth >= context.maxSubagentDepth) {\n\t\t\tthrow new Error(\n\t\t\t\t`Subagent \"${context.agentName}\" cannot delegate to \"${agentName}\": maxSubagentDepth ${context.maxSubagentDepth} reached at depth ${context.depth}.`,\n\t\t\t);\n\t\t}\n\n\t\tconst allowedSubagents = normalizeUniqueNames(context.allowedSubagents);\n\t\tif (allowedSubagents && allowedSubagents.length === 0) {\n\t\t\tthrow new Error(\n\t\t\t\t`Subagent \"${context.agentName}\" cannot delegate to \"${agentName}\": no child subagents are allowed.`,\n\t\t\t);\n\t\t}\n\t\tif (allowedSubagents && !allowedSubagents.includes(agentName)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Subagent \"${context.agentName}\" cannot delegate to \"${agentName}\". Allowed subagents: ${allowedSubagents.join(\", \")}.`,\n\t\t\t);\n\t\t}\n\n\t\tif (context.maxChildAgents !== undefined && this.childStartCount >= context.maxChildAgents) {\n\t\t\tthrow new Error(\n\t\t\t\t`Subagent \"${context.agentName}\" cannot start more than ${context.maxChildAgents} child subagent${context.maxChildAgents === 1 ? \"\" : \"s\"}.`,\n\t\t\t);\n\t\t}\n\n\t\tthis.childStartCount += 1;\n\t\tlet released = false;\n\t\treturn () => {\n\t\t\tif (released) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treleased = true;\n\t\t\tthis.childStartCount = Math.max(0, this.childStartCount - 1);\n\t\t};\n\t}\n\n\tprivate assertNotDisposed(): void {\n\t\tif (this.disposePromise) throw new Error(\"Subagent manager is disposed\");\n\t}\n\n\tprivate beginStart(): () => void {\n\t\tthis.assertNotDisposed();\n\t\tthis.pendingStartCount += 1;\n\t\tlet finished = false;\n\t\treturn () => {\n\t\t\tif (finished) return;\n\t\t\tfinished = true;\n\t\t\tthis.pendingStartCount = Math.max(0, this.pendingStartCount - 1);\n\t\t\tif (this.pendingStartCount === 0) {\n\t\t\t\tfor (const resolve of this.pendingStartWaiters) resolve();\n\t\t\t\tthis.pendingStartWaiters.clear();\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate waitForPendingStarts(): Promise<void> {\n\t\tif (this.pendingStartCount === 0) return Promise.resolve();\n\t\treturn new Promise((resolve) => this.pendingStartWaiters.add(resolve));\n\t}\n\n\tprivate resolveDelegationScope(requested: SubagentDelegationScope | undefined): SubagentDelegationScopeLease {\n\t\tconst inherited = this.subagentContext?.delegationScope;\n\t\tif (inherited) return { scope: inherited, owned: false };\n\t\tif (requested) return { scope: requested, owned: false };\n\t\treturn { scope: new SubagentDelegationScope(), owned: true };\n\t}\n\n\tprivate createChildSubagentContext(\n\t\tdefinition: SubagentDefinition | undefined,\n\t\tdelegationScope: SubagentDelegationScope,\n\t): SubagentRuntimeContext | undefined {\n\t\tif (!definition) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst parentPath = this.subagentContext?.path ?? [];\n\t\tconst inheritedMaxDepth = this.subagentContext?.maxSubagentDepth;\n\t\tconst definitionMaxDepth = definition.maxSubagentDepth;\n\t\tconst maxSubagentDepth =\n\t\t\tinheritedMaxDepth === undefined\n\t\t\t\t? definitionMaxDepth\n\t\t\t\t: definitionMaxDepth === undefined\n\t\t\t\t\t? inheritedMaxDepth\n\t\t\t\t\t: Math.min(inheritedMaxDepth, definitionMaxDepth);\n\t\treturn {\n\t\t\tdepth: (this.subagentContext?.depth ?? 0) + 1,\n\t\t\tagentName: definition.name,\n\t\t\tpath: [...parentPath, definition.name],\n\t\t\tdelegationScope,\n\t\t\tallowedSubagents: definition.allowedSubagents ?? [],\n\t\t\t...(maxSubagentDepth !== undefined ? { maxSubagentDepth } : {}),\n\t\t\t...(definition.maxChildAgents !== undefined ? { maxChildAgents: definition.maxChildAgents } : {}),\n\t\t};\n\t}\n\n\tprivate async startRuntime(\n\t\toptions: SubagentStartOptions,\n\t\tdefinitionOptions?: {\n\t\t\tdefinition: SubagentDefinition;\n\t\t\tallowedTools?: string[];\n\t\t},\n\t\tdelegation?: {\n\t\t\tscopeLease: SubagentDelegationScopeLease;\n\t\t\treservation: SubagentDelegationReservation;\n\t\t},\n\t): Promise<SubagentHandle> {\n\t\tconst cwd = options.cwd ?? this.cwd;\n\t\tconst agentDir = options.agentDir ?? this.agentDir;\n\t\tconst sessionManager = options.sessionManager ?? this.createDefaultChildSessionManager(cwd);\n\t\tconst id = `sa_${randomUUID()}`;\n\t\tif (!delegation) {\n\t\t\tthrow new Error(\"Subagent delegation scope is required\");\n\t\t}\n\t\tconst subagentContext = this.createChildSubagentContext(\n\t\t\tdefinitionOptions?.definition,\n\t\t\tdelegation.scopeLease.scope,\n\t\t);\n\t\tconst runtime = await this.createChildRuntime({ cwd, agentDir, sessionManager, subagentContext });\n\t\tconst unsubscribeScopeAccounting = runtime.session.subscribe((event) => {\n\t\t\tif (event.type === \"turn_end\") {\n\t\t\t\tdelegation.scopeLease.scope.recordTurn();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (event.type !== \"message_end\" || event.message.role !== \"assistant\") return;\n\t\t\tconst usage = event.message.usage;\n\t\t\tdelegation.scopeLease.scope.recordUsage(\n\t\t\t\tusage.input + usage.output + usage.cacheRead + usage.cacheWrite,\n\t\t\t\tusage.cost.total,\n\t\t\t);\n\t\t});\n\t\tlet client: InProcessRpcClient | undefined;\n\t\ttry {\n\t\t\tif (definitionOptions) {\n\t\t\t\tawait this.applyDefinitionToRuntime(runtime, definitionOptions.definition, definitionOptions.allowedTools);\n\t\t\t}\n\n\t\t\tlet handle: LocalSubagentHandle | undefined;\n\t\t\tclient = await createInProcessRpcClient(runtime, {\n\t\t\t\tdisposeRuntimeOnClose: !this.retainRuntimeOnDispose,\n\t\t\t\trequestTimeoutMs: options.requestTimeoutMs ?? this.requestTimeoutMs,\n\t\t\t\tonEvent: (event) => {\n\t\t\t\t\tthis.recordActivityEvent(id, event);\n\t\t\t\t\thandle?.handleEvent(event);\n\t\t\t\t},\n\t\t\t});\n\t\t\tawait this.notifyRuntimeCreated({ id, runtime, definition: definitionOptions?.definition });\n\t\t\tthis.registerActivity(id, runtime, definitionOptions?.definition);\n\t\t\thandle = new LocalSubagentHandle({\n\t\t\t\tid,\n\t\t\t\tsessionId: runtime.session.sessionId,\n\t\t\t\tclient,\n\t\t\t\tabortRuntime: () => runtime.session.abort(),\n\t\t\t\tremoveFromManager: (handleId) => {\n\t\t\t\t\tthis.handles.delete(handleId);\n\t\t\t\t},\n\t\t\t\tonPromptStarted: (message) => this.updateActivityTask(id, message),\n\t\t\t\tonPromptFailed: (error) => this.finishActivity(id, \"failed\", errorMessage(error)),\n\t\t\t\tonAbortRequested: () => this.markActivityAbortRequested(id),\n\t\t\t\tonTerminal: () => {\n\t\t\t\t\tunsubscribeScopeAccounting();\n\t\t\t\t\tdelegation.reservation.release();\n\t\t\t\t\tif (delegation.scopeLease.owned) delegation.scopeLease.scope.dispose();\n\t\t\t\t},\n\t\t\t\twaitForIdle: () => runtime.session.waitForIdle(),\n\t\t\t});\n\t\t\tdelegation.reservation.commit(id, () => {\n\t\t\t\tvoid runtime.session.abort();\n\t\t\t});\n\t\t\tthis.handles.set(id, handle);\n\t\t\tvoid handle.waitForEnd().then(\n\t\t\t\t(result) => {\n\t\t\t\t\tconst terminal = getTerminalActivityResult(result.event);\n\t\t\t\t\tthis.finishActivity(id, terminal.status, terminal.error);\n\t\t\t\t},\n\t\t\t\t(error: unknown) => {\n\t\t\t\t\tconst activity = this.activities.get(id);\n\t\t\t\t\tconst status = activity?.abortRequested ? \"aborted\" : \"failed\";\n\t\t\t\t\tthis.finishActivity(id, status, status === \"failed\" ? errorMessage(error) : undefined);\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn handle;\n\t\t} catch (error) {\n\t\t\tunsubscribeScopeAccounting();\n\t\t\tawait client?.stop().catch(() => undefined);\n\t\t\tawait runtime.dispose().catch(() => undefined);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate registerActivity(\n\t\tid: string,\n\t\truntime: AgentSessionRuntime,\n\t\tdefinition: SubagentDefinition | undefined,\n\t): void {\n\t\tconst now = Date.now();\n\t\tconst activity: MutableSubagentActivity = {\n\t\t\tid,\n\t\t\tsessionId: runtime.session.sessionId,\n\t\t\tagent: {\n\t\t\t\tname: definition?.name ?? \"subagent\",\n\t\t\t\tsource: definition?.source,\n\t\t\t},\n\t\t\ttask: undefined,\n\t\t\tstatus: \"running\",\n\t\t\tstartedAt: now,\n\t\t\tupdatedAt: now,\n\t\t\tfinishedAt: undefined,\n\t\t\tabortRequested: false,\n\t\t\tevents: [],\n\t\t\tdroppedEvents: 0,\n\t\t\ttranscript: [],\n\t\t\tsessionStats: undefined,\n\t\t\terror: undefined,\n\t\t\truntime,\n\t\t\tnextSequence: 0,\n\t\t};\n\t\tthis.activities.set(id, activity);\n\t\tthis.trimActivities();\n\t\tthis.notifyActivity(activity);\n\t}\n\n\tprivate updateActivityTask(id: string, task: string): void {\n\t\tconst activity = this.activities.get(id);\n\t\tif (!activity || activity.status !== \"running\") return;\n\t\tactivity.task = task;\n\t\tactivity.updatedAt = Date.now();\n\t\tthis.notifyActivity(activity);\n\t}\n\n\tprivate markActivityAbortRequested(id: string): void {\n\t\tconst activity = this.activities.get(id);\n\t\tif (!activity || activity.status !== \"running\") return;\n\t\tactivity.abortRequested = true;\n\t\tactivity.updatedAt = Date.now();\n\t\tthis.notifyActivity(activity);\n\t}\n\n\tprivate recordActivityEvent(id: string, event: SubagentEvent): void {\n\t\tconst activity = this.activities.get(id);\n\t\tif (!activity) return;\n\t\tconst now = Date.now();\n\t\tconst previous = activity.events[activity.events.length - 1];\n\t\tconst coalesceMessageUpdate = previous?.event.type === \"message_update\" && event.type === \"message_update\";\n\t\tconst coalesceToolUpdate =\n\t\t\tprevious?.event.type === \"tool_execution_update\" &&\n\t\t\tevent.type === \"tool_execution_update\" &&\n\t\t\tprevious.event.toolCallId === event.toolCallId;\n\t\tif (previous && (coalesceMessageUpdate || coalesceToolUpdate)) {\n\t\t\tprevious.timestamp = now;\n\t\t\tprevious.event = event;\n\t\t} else {\n\t\t\tactivity.events.push({ sequence: activity.nextSequence, timestamp: now, event });\n\t\t\tactivity.nextSequence += 1;\n\t\t\tif (activity.events.length > MAX_RETAINED_ACTIVITY_EVENTS) {\n\t\t\t\tactivity.events.shift();\n\t\t\t\tactivity.droppedEvents += 1;\n\t\t\t}\n\t\t}\n\t\tactivity.updatedAt = now;\n\t\tthis.notifyActivity(activity);\n\t}\n\n\tprivate finishActivity(id: string, status: Exclude<SubagentActivityStatus, \"running\">, error?: string): void {\n\t\tconst activity = this.activities.get(id);\n\t\tif (!activity || activity.status !== \"running\") return;\n\t\tconst runtime = activity.runtime;\n\t\tif (runtime) {\n\t\t\tactivity.transcript = [...runtime.session.messages];\n\t\t\tactivity.sessionStats = runtime.session.getSessionStats();\n\t\t}\n\t\tconst now = Date.now();\n\t\tactivity.runtime = undefined;\n\t\tactivity.status = status;\n\t\tactivity.finishedAt = now;\n\t\tactivity.updatedAt = now;\n\t\tactivity.error = error;\n\t\tthis.notifyActivity(activity);\n\t\tthis.trimActivities();\n\t}\n\n\tprivate snapshotActivity(activity: MutableSubagentActivity): SubagentActivity {\n\t\tconst runtime = activity.runtime;\n\t\tconst transcript = runtime ? [...runtime.session.messages] : [...activity.transcript];\n\t\tconst sessionStats = runtime ? runtime.session.getSessionStats() : activity.sessionStats;\n\t\treturn {\n\t\t\tid: activity.id,\n\t\t\tsessionId: activity.sessionId,\n\t\t\tagent: { ...activity.agent },\n\t\t\t...(activity.task !== undefined ? { task: activity.task } : {}),\n\t\t\tstatus: activity.status,\n\t\t\tstartedAt: activity.startedAt,\n\t\t\tupdatedAt: activity.updatedAt,\n\t\t\t...(activity.finishedAt !== undefined ? { finishedAt: activity.finishedAt } : {}),\n\t\t\tabortRequested: activity.abortRequested,\n\t\t\tevents: activity.events.map((entry) => ({ ...entry })),\n\t\t\tdroppedEvents: activity.droppedEvents,\n\t\t\ttranscript,\n\t\t\t...(sessionStats ? { sessionStats } : {}),\n\t\t\t...(activity.error ? { error: activity.error } : {}),\n\t\t};\n\t}\n\n\tprivate notifyActivity(activity: MutableSubagentActivity): void {\n\t\tfor (const listener of this.activityListeners) {\n\t\t\ttry {\n\t\t\t\tlistener(activity.id);\n\t\t\t} catch {\n\t\t\t\t// Observer failures must not affect child execution.\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate trimActivities(): void {\n\t\twhile (this.activities.size > MAX_RETAINED_ACTIVITIES) {\n\t\t\tlet oldestTerminal: MutableSubagentActivity | undefined;\n\t\t\tfor (const activity of this.activities.values()) {\n\t\t\t\tif (activity.status !== \"running\") {\n\t\t\t\t\toldestTerminal = activity;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!oldestTerminal) return;\n\t\t\tthis.activities.delete(oldestTerminal.id);\n\t\t}\n\t}\n\n\tprivate createDefaultChildSessionManager(cwd: string): SessionManager {\n\t\tif (!this.parentSessionManager?.isPersisted()) {\n\t\t\treturn SessionManager.inMemory(cwd);\n\t\t}\n\t\tconst parentSession = this.parentSessionManager.getSessionFile();\n\t\treturn SessionManager.create(cwd, this.parentSessionManager.getSessionDir(), {\n\t\t\torigin: \"subagent\",\n\t\t\t...(parentSession ? { parentSession } : {}),\n\t\t});\n\t}\n\n\tprivate async notifyRuntimeCreated(options: {\n\t\tid: string;\n\t\truntime: AgentSessionRuntime;\n\t\tdefinition?: SubagentDefinition;\n\t}): Promise<void> {\n\t\tif (!this.onRuntimeCreated) {\n\t\t\treturn;\n\t\t}\n\t\tawait this.onRuntimeCreated({\n\t\t\tid: options.id,\n\t\t\tsessionId: options.runtime.session.sessionId,\n\t\t\truntime: options.runtime,\n\t\t\t...(options.definition ? { definition: options.definition } : {}),\n\t\t\t...(this.parentSessionManager ? { parentSessionId: this.parentSessionManager.getSessionId() } : {}),\n\t\t\t...(this.parentSessionManager?.getSessionFile()\n\t\t\t\t? { parentSessionFile: this.parentSessionManager.getSessionFile() }\n\t\t\t\t: {}),\n\t\t});\n\t}\n\n\tprivate resolveDefinition(\n\t\tagentName: string,\n\t\tresourceLoaderOverride: ResourceLoader | undefined,\n\t): SubagentDefinition {\n\t\tconst resourceLoader = resourceLoaderOverride ?? this.resourceLoader;\n\t\tif (!resourceLoader) {\n\t\t\tthrow new SubagentDefinitionNotFoundError(agentName, []);\n\t\t}\n\n\t\tconst result = resourceLoader.getSubagents();\n\t\tconst definition = result.definitions.find((candidate) => candidate.name === agentName.trim());\n\t\tif (!definition) {\n\t\t\tthrow new SubagentDefinitionNotFoundError(\n\t\t\t\tagentName,\n\t\t\t\tresult.definitions.map((candidate) => candidate.name),\n\t\t\t\tresult.diagnostics,\n\t\t\t);\n\t\t}\n\t\treturn definition;\n\t}\n\n\tprivate async applyDefinitionToRuntime(\n\t\truntime: AgentSessionRuntime,\n\t\tdefinition: SubagentDefinition,\n\t\tallowedTools: string[] | undefined,\n\t): Promise<void> {\n\t\tconst allowedSubagents = normalizeUniqueNames(definition.allowedSubagents) ?? [];\n\t\tconst activeTools = resolveEffectiveTools({\n\t\t\trequestedTools: definition.tools,\n\t\t\texcludedTools:\n\t\t\t\tallowedSubagents.length === 0\n\t\t\t\t\t? [...(definition.excludedTools ?? []), \"subagent\"]\n\t\t\t\t\t: definition.excludedTools,\n\t\t\tallowedTools,\n\t\t\tdefaultTools: runtime.session.getActiveToolNames(),\n\t\t});\n\t\tif (activeTools) {\n\t\t\truntime.session.setActiveToolsByName(activeTools);\n\t\t}\n\t\truntime.session.appendSystemPromptContext(definition.systemPrompt);\n\n\t\tlet thinkingLevel = this.validateThinkingLevel(definition);\n\t\tif (definition.model) {\n\t\t\tconst availableModels = await runtime.session.modelRegistry.getAvailable();\n\t\t\tconst resolved = parseModelPattern(definition.model, availableModels, {\n\t\t\t\tallowInvalidThinkingLevelFallback: false,\n\t\t\t});\n\t\t\tif (!resolved.model) {\n\t\t\t\tthrow new SubagentDefinitionConfigurationError(\n\t\t\t\t\tdefinition.name,\n\t\t\t\t\t\"model\",\n\t\t\t\t\t`model reference \"${definition.model}\" is not available or is not configured`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait runtime.session.setModel(resolved.model, { persistDefault: false });\n\t\t\tthinkingLevel ??= resolved.thinkingLevel;\n\t\t}\n\n\t\tif (thinkingLevel) {\n\t\t\truntime.session.setThinkingLevel(thinkingLevel, { persistDefault: false });\n\t\t}\n\t}\n\n\tprivate validateThinkingLevel(definition: SubagentDefinition): ThinkingLevel | undefined {\n\t\tif (!definition.thinking) {\n\t\t\treturn undefined;\n\t\t}\n\t\t// Discovery keeps invalid frontmatter as diagnostics, but definition-backed starts fail\n\t\t// before prompting so callers get a clear configuration error for this subagent.\n\t\tif (!isThinkingLevel(definition.thinking)) {\n\t\t\tthrow new SubagentDefinitionConfigurationError(\n\t\t\t\tdefinition.name,\n\t\t\t\t\"thinking\",\n\t\t\t\t`\"${definition.thinking}\" is not a supported thinking level`,\n\t\t\t);\n\t\t}\n\t\treturn definition.thinking;\n\t}\n\n\tprivate async createChildRuntime(options: {\n\t\tcwd: string;\n\t\tagentDir: string;\n\t\tsessionManager: SessionManager;\n\t\tsubagentContext?: SubagentRuntimeContext;\n\t}): Promise<AgentSessionRuntime> {\n\t\treturn createAgentSessionRuntime(this.createRuntime, {\n\t\t\tcwd: options.cwd,\n\t\t\tagentDir: options.agentDir,\n\t\t\tsessionManager: options.sessionManager,\n\t\t\t...(options.subagentContext ? { subagentContext: options.subagentContext } : {}),\n\t\t});\n\t}\n}\n"]}
|