@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":"iroh-remote-rpc-mode.js","sourceRoot":"","sources":["../../../src/modes/rpc/iroh-remote-rpc-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,uBAAuB,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AACnG,OAAO,EAAsB,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EACN,oCAAoC,EACpC,4CAA4C,EAC5C,gCAAgC,EAOhC,gCAAgC,GAChC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACN,sBAAsB,GAMtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAE9F,OAAO,EAA8C,UAAU,EAAE,MAAM,eAAe,CAAC;AAoFvF;;;;GAIG;AACH,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAE5C;;;;GAIG;AACH,MAAM,mCAAmC,GAAG,KAAK,CAAC;AAElD,4EAA4E;AAC5E,MAAM,UAAU,oBAAoB,CACnC,WAAgC,EAChC,OAAiC,EACjB;IAChB,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAAU,CAAC;IACnD,IAAI,yBAAmD,CAAC;IACxD,IAAI,2BAAqD,CAAC;IAC1D,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,MAAM,yBAAyB,GAAG,GAAG,EAAE,CAAC;QACvC,yBAAyB,EAAE,EAAE,CAAC;QAC9B,yBAAyB,GAAG,mCAAmC,CAC9D,WAAW,EACX,OAAO,CAAC,oBAAoB,EAC5B,OAAO,CAAC,aAAa,CACrB,CAAC;IAAA,CACF,CAAC;IACF,MAAM,yBAAyB,GAAG,4CAA4C,CAAC;QAC9E,QAAQ,EAAE,OAAO,CAAC,gBAAgB;QAClC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,SAAS,EAAE,sBAAsB,CAAC,OAAO,CAAC;QAC1C,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;KACxD,CAAC,CAAC;IACH,MAAM,oBAAoB,GAAiB,OAAO,CAAC,2BAA2B;QAC7E,CAAC,CAAC;YACA,GAAG,yBAAyB;YAC5B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;gBACjB,IACC,OAAO,KAAK,KAAK,QAAQ;oBACzB,KAAK,KAAK,IAAI;oBACb,KAA4B,CAAC,IAAI,KAAK,sBAAsB,EAC5D,CAAC;oBACF,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC1B,CAAC;gBACD,OAAO,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAAA,CAC9C;SACD;QACF,CAAC,CAAC,yBAAyB,CAAC;IAC7B,wEAAwE;IACxE,iEAAiE;IACjE,MAAM,iBAAiB,GAAiB;QACvC,GAAG,oBAAoB;QACvB,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAChB,oBAAoB,CAAC,KAAK,CACzB,kCAAkC,CAAC,KAAK,EAAE;YACzC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,aAAa,EAAE,OAAO,CAAC,aAAa;SACpC,CAAC,CACF;KACF,CAAC;IACF,MAAM,2BAA2B,GAAG,GAAG,EAAE,CAAC;QACzC,2BAA2B,EAAE,EAAE,CAAC;QAChC,2BAA2B,GAAG,qCAAqC,CAAC,WAAW,EAAE,iBAAiB,EAAE;YACnG,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,aAAa,EAAE,OAAO,CAAC,aAAa;SACpC,CAAC,CAAC;IAAA,CACH,CAAC;IACF,2BAA2B,EAAE,CAAC;IAC9B,MAAM,6BAA6B,GAAG,KAAK,EAAE,YAA2C,EAAiB,EAAE,CAAC;QAC3G,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;YAClC,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YAC5F,IAAI,cAAc,KAAK,MAAM,IAAI,cAAc,KAAK,WAAW,EAAE,CAAC;gBACjE,OAAO;YACR,CAAC;QACF,CAAC;QACD,MAAM,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAAA,CAC5C,CAAC;IACF,MAAM,uBAAuB,GAAG,0CAA0C,CAAC;QAC1E,SAAS,EAAE,iBAAiB;QAC5B,kBAAkB,EAAE,GAAG,EAAE,CAAC,4BAA4B,CAAC,WAAW,CAAC;QACnE,kBAAkB,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC;YACzC,MAAM,YAAY,GAAG,sCAAsC,CAAC,UAAU,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;YAC/F,IAAI,CAAC,YAAY,IAAI,wBAAwB,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzE,OAAO;YACR,CAAC;YACD,IAAI,wBAAwB,CAAC,IAAI,IAAI,+BAA+B,EAAE,CAAC;gBACtE,mEAAmE;gBACnE,MAAM,MAAM,GAAG,wBAAwB,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;gBAC9D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBAC1B,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACzC,CAAC;YACF,CAAC;YACD,wBAAwB,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC;gBACJ,MAAM,6BAA6B,CAAC,YAAY,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACzB,wBAAwB,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtD,MAAM,KAAK,CAAC;YACb,CAAC;QAAA,CACD;QACD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,uBAAuB,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE;KAChE,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,oCAAoC,CAAC;QAC9D,SAAS,EAAE,uBAAuB;QAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC1B,CAAC,CAAC;IACH,MAAM,0BAA0B,GAC/B,OAAO,CAAC,oBAAoB,IAAI,OAAO,CAAC,iBAAiB;QACxD,CAAC,CAAC,uCAAuC,CAAC;YACxC,aAAa,EAAE,OAAO,CAAC,oBAAoB;YAC3C,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,SAAS,EAAE,iBAAiB;SAC5B,CAAC;QACH,CAAC,CAAC,iBAAiB,CAAC;IAEtB,OAAO,UAAU,CAAC,WAAW,EAAE;QAC9B,uBAAuB,EAAE,IAAI;QAC7B,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;YACpC,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,CAAC,eAAe,EAAE,CAAC;gBACtB,yBAAyB,EAAE,CAAC;gBAC5B,2BAA2B,EAAE,CAAC;YAC/B,CAAC;QAAA,CACD;QACD,2BAA2B,EAAE,OAAO,CAAC,2BAA2B;QAChE,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,0BAA0B,EAAE,IAAI;QAChC,SAAS,EAAE,0BAA0B;QACrC,WAAW,EAAE,KAAK;QAClB,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;KAC9C,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,eAAe,GAAG,IAAI,CAAC;QACvB,2BAA2B,EAAE,EAAE,CAAC;QAChC,yBAAyB,EAAE,EAAE,CAAC;IAAA,CAC9B,CAAC,CAAC;AAAA,CACH;AAOD,SAAS,qCAAqC,CAC7C,WAAgC,EAChC,SAAuB,EACvB,OAAyC,EAC5B;IACb,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/C,OAAO,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAClC,OAAO;QACR,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,cAAc,CAAC,GAAG,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,yBAAyB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,IAAI,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;gBAClD,OAAO;YACR,CAAC;YACD,MAAM,eAAe,GAAG,oCAAoC,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAC1F,IAAI,CAAC,eAAe,EAAE,CAAC;gBACtB,OAAO;YACR,CAAC;YACD,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnC,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;QAAA,CACvE,CAAC,CAAC;IAAA,CACH,CAAC,CAAC;AAAA,CACH;AAUD,SAAS,yBAAyB,CACjC,WAAgC,EAChC,OAAgB,EAC8B;IAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;IAC9D,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAC3D,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,kCAAkC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YAC3F,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAAA,CACjB;AAED,SAAS,kCAAkC,CAAC,KAAyB,EAAE,OAAgB,EAA4B;IAClH,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChG,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,2BAA2B,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AAAA,CACnE;AAED,SAAS,qBAAqB,CAAC,OAAgB,EAA4B;IAC1E,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/E,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAG,OAAiC,CAAC;IACpD,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,CAAC,UAAU,KAAK,QAAQ,IAAI,SAAS,CAAC,OAAO,KAAK,IAAI,CAAC;AAAA,CACtG;AAED,SAAS,2BAA2B,CAAC,IAAmC,EAAE,KAA+B,EAAW;IACnH,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3D,OAAO,IAAI,KAAK,KAAK,CAAC;IACvB,CAAC;IACD,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AAAA,CACD;AAED,SAAS,oCAAoC,CAC5C,KAAsC,EACtC,WAAgC,EAChC,OAAyC,EACH;IACtC,MAAM,cAAc,GAAG,6CAA6C,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAClG,IAAI,cAAc,EAAE,CAAC;QACpB,OAAO,cAAc,CAAC;IACvB,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC7D,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,GAAG,yBAAyB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,CAAC,CAAC,yCAAyC,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxG,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,IAAI,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,OAAO,yCAAyC,CAC/C,KAAK,EACL,OAAO,CAAC,IAAI,EACZ,IAAI,EACJ,OAAO,EACP,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CACpC,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;QACxD,MAAM,QAAQ,GACb,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACpG,MAAM,QAAQ,GAAG,0BAA0B,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAC9F,OAAO,CAAC,UAAU,CAClB,CAAC;QACF,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAChE,OAAO,yCAAyC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,IAAI,MAAM,EAAE,EAAE,OAAO,EAAE;YACjG,QAAQ;YACR,MAAM;YACN,OAAO,EAAE,GAAG,QAAQ,IAAI,MAAM,EAAE;YAChC,GAAG,CAAC,QAAQ,KAAK,UAAU;gBAC1B,CAAC,CAAC;oBACA,GAAG,uCAAuC,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;oBACxE,GAAG,0CAA0C,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;iBACvE;gBACF,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,kCAAkC,CAAC,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;YAC1F,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzC,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC;QAC/F,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;QAC/C,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS;YAC7B,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS;gBAC/B,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC/B,OAAO,yCAAyC,CAC/C,KAAK,EACL,MAAM,EACN,QAAQ,IAAI,EAAE,EACd,OAAO,EACP,kCAAkC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,CACvF,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AAAA,CACjB;AAED,SAAS,6CAA6C,CACrD,KAAsC,EACtC,WAAgC,EAChC,OAAyC,EACH;IACtC,MAAM,IAAI,GAAG,wBAAwB,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CACnG,CAAC,cAAc,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAClD,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO;QACN,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE;YACN,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,8CAA8C,CAAC,IAAI,EAAE,OAAO,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9E;QACD,KAAK,EAAE,IAAI;KACX,CAAC;AAAA,CACF;AAED,iFAAiF;AACjF,SAAS,6BAA6B,CACrC,KAAsC,EACtC,OAAyC,EACf;IAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACX,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACnC,OAAO,kCAAkC,CAAC,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACtC,OAAO,kCAAkC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC;IAChG,CAAC;IACD,OAAO,EAAE,CAAC;AAAA,CACV;AAED,SAAS,kCAAkC,CAC1C,KAAc,EACd,OAAyC,EACzC,aAAa,GAAG,KAAK,EACK;IAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO,EAAE,CAAC;IACX,CAAC;IACD,MAAM,SAAS,GAAG,gCAAgC,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,mCAAmC,CAAC;IAC/G,OAAO;QACN,MAAM,EACL,OAAO,CAAC,MAAM,GAAG,mCAAmC;YACnD,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,mCAAmC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAChE,CAAC,CAAC,SAAS,CAAC,IAAI;QAClB,eAAe,EAAE,SAAS;KAC1B,CAAC;AAAA,CACF;AAED;;;;GAIG;AACH,SAAS,kCAAkC,CAAC,KAAa,EAAE,OAAyC,EAAU;IAC7G,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,QAAQ,IAAI,KAAK,EAAE,CAAC;QAClF,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,YAAY,GAAG,kCAAkC,CAAC,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5G,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAAA,CACpF;AAED,SAAS,8CAA8C,CACtD,IAAuB,EACvB,OAAyC,EACf;IAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,gCAAgC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACnF,MAAM,MAAM,GAA4B;YACvC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,OAAO,CAAC,IAAI;SACrB,CAAC;QACF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC/B,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACzC,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACrC,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,gCAAgC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAClE,MAAM,MAAM,GAA4B;QACvC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;KACzB,CAAC;IACF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAC3B,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7C,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACrC,CAAC;IACD,OAAO,MAAM,CAAC;AAAA,CACd;AAED,SAAS,yCAAyC,CACjD,KAAmB,EACnB,IAA8C,EAC9C,IAAY,EACZ,OAAyC,EACzC,gBAAgB,GAA4B,EAAE,EACpB;IAC1B,MAAM,SAAS,GAAG,gCAAgC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC5G,OAAO;QACN,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE;YACN,OAAO,EAAE,KAAK,CAAC,EAAE;YACjB,SAAS,EAAE,sCAAsC,CAAC,KAAK,CAAC,SAAS,CAAC;YAClE,IAAI;YACJ,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,GAAG,gBAAgB;SACnB;QACD,KAAK,EAAE,IAAI;KACX,CAAC;AAAA,CACF;AAED,SAAS,0BAA0B,CAAC,OAAuB,EAAyC;IACnG,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoC,CAAC;IAC9D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACpE,SAAS;QACV,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC3C,IAAI,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAAA,CACjB;AAED,SAAS,0BAA0B,CAAC,KAAc,EAAqC;IACtF,OAAO,CACN,QAAQ,CAAC,KAAK,CAAC;QACf,KAAK,CAAC,IAAI,KAAK,UAAU;QACzB,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CACzB,CAAC;AAAA,CACF;AAED,SAAS,uCAAuC,CAC/C,IAAyC,EACzC,OAAyC,EACf;IAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACX,CAAC;IACD,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,2BAA2B,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACpE,2BAA2B,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,mCAAmC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvE,IAAI,KAAK,EAAE,CAAC;QACX,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,MAAM,KAAK,GAAG,mCAAmC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvE,IAAI,KAAK,EAAE,CAAC;QACX,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAAA,CACpE;AAED,SAAS,mCAAmC,CAC3C,KAAc,EACd,OAAyC,EACY;IACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,SAAS,GAAG,KAAK;SACrB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACnE,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CACnD,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAA2C,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAChF,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CACpD;AAED,SAAS,0CAA0C,CAClD,OAAgB,EAChB,OAAyC,EACf;IAC1B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACX,CAAC;IACD,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,2BAA2B,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACtE,2BAA2B,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACxE,2BAA2B,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5E,2BAA2B,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3E,oCAAoC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACzD,2BAA2B,CAAC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,gCAAgC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,IAAI,OAAO,EAAE,CAAC;QACb,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;IAC7B,CAAC;IACD,MAAM,aAAa,GAAG,oCAAoC,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC3F,IAAI,aAAa,EAAE,CAAC;QACnB,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC;IACzC,CAAC;IACD,MAAM,KAAK,GAAG,8BAA8B,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrE,IAAI,KAAK,EAAE,CAAC;QACX,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,MAAM,MAAM,GAAG,+BAA+B,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxE,IAAI,MAAM,EAAE,CAAC;QACZ,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;IAC3B,CAAC;IACD,MAAM,KAAK,GAAG,8BAA8B,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrE,IAAI,KAAK,EAAE,CAAC;QACX,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,MAAM,QAAQ,GAAG,oCAAoC,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjF,IAAI,QAAQ,EAAE,CAAC;QACd,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC/B,CAAC;IACD,MAAM,KAAK,GAAG,oCAAoC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3E,IAAI,KAAK,EAAE,CAAC;QACX,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,MAAM,KAAK,GAAG,oCAAoC,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3E,IAAI,KAAK,EAAE,CAAC;QACX,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAAA,CACvE;AAED,MAAM,iCAAiC,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AACtG,MAAM,qCAAqC,GAAG,CAAC,CAAC;AAEhD,SAAS,oCAAoC,CAAC,IAA6B,EAAE,EAA2B,EAAQ;IAC/G,KAAK,MAAM,GAAG,IAAI,iCAAiC,EAAE,CAAC;QACrD,MAAM,WAAW,GAAG,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACzD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/B,EAAE,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;QACvB,CAAC;IACF,CAAC;AAAA,CACD;AAED,SAAS,gCAAgC,CAAC,KAAc,EAAsC;IAC7F,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI;QACjB,OAAO;QACP,WAAW;QACX,QAAQ;QACR,SAAS;QACT,SAAS;QACT,UAAU;QACV,gBAAgB;QAChB,WAAW;KACX,EAAE,CAAC;QACH,MAAM,WAAW,GAAG,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/B,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;QAC9B,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CACjE;AAED,SAAS,oCAAoC,CAC5C,KAAc,EACd,OAAyC,EACzC,KAAK,GAAG,CAAC,EACoC;IAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,qCAAqC,EAAE,CAAC;QAC7E,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,SAAS,GAAG,KAAK;SACrB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,6BAA6B,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;SAClE,MAAM,CAAC,CAAC,IAAI,EAAmC,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IACxE,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CACpD;AAED,SAAS,6BAA6B,CACrC,KAAc,EACd,OAAyC,EACzC,KAAK,GAAG,CAAC,EAC6B;IACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAG,yBAAyB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1E,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACzE,MAAM,KAAK,GAAG,8BAA8B,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,KAAK,EAAE,CAAC;QACX,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACtE,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACtE,oCAAoC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACvD,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC/E,MAAM,KAAK,GAAG,8BAA8B,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,KAAK,EAAE,CAAC;QACX,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,MAAM,QAAQ,GAAG,oCAAoC,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC1F,IAAI,QAAQ,EAAE,CAAC;QACd,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CACjE;AAED,SAAS,8BAA8B,CACtC,KAAc,EACd,OAAyC,EACJ;IACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACpE,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CACjE;AAED,SAAS,+BAA+B,CACvC,KAAc,EACd,OAAyC,EACH;IACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,2BAA2B,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACtE,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,CAAC;QACzD,MAAM,WAAW,GAAG,yBAAyB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC/B,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;QAC9B,CAAC;IACF,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC1C,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACvC,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CACjE;AAED,SAAS,8BAA8B,CACtC,KAAc,EACd,OAAyC,EACJ;IACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,0BAA0B,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1E,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CACzC;AAED,SAAS,2BAA2B,CACnC,IAA6B,EAC7B,EAA2B,EAC3B,GAAW,EACX,OAAyC,EACzC,UAAkB,EACX;IACP,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACzE,IAAI,KAAK,EAAE,CAAC;QACX,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACjB,CAAC;AAAA,CACD;AAED,SAAS,0BAA0B,CAClC,KAAc,EACd,OAAyC,EACzC,UAAkB,EACG;IACrB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,sBAAsB,CAAC,gCAAgC,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAAA,CAC5G;AAED,SAAS,yBAAyB,CAAC,KAAc,EAAsB;IACtE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CAC/E;AAED,SAAS,sBAAsB,CAAC,KAAa,EAAE,SAAiB,EAAU;IACzE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAAA,CAClF;AAED,SAAS,sCAAsC,CAAC,SAAiB,EAAU;IAC1E,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAAA,CACrF;AAED,SAAS,mCAAmC,CAC3C,WAAgC,EAChC,QAAwD,EACxD,aAAiC,EACpB;IACb,IAAI,CAAC,QAAQ,EAAE,yBAAyB,EAAE,CAAC;QAC1C,OAAO,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC;IACjB,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,6BAA6B,CAAC,WAAW,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IACxF,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QAC5D,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;IAAA,CAC3C,CAAC,CAAC;IACH,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,OAAO,WAAW,CAAC;AAAA,CACnB;AAED,MAAM,6BAA6B;IACjB,QAAQ,CAAkF;IAC1F,WAAW,CAAsB;IACjC,aAAa,CAAqB;IAClC,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,UAAU,GAAG,UAAU,EAAE,CAAC;IACnC,aAAa,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IACjD,WAAW,GAAsC,EAAE,CAAC;IACpD,QAAQ,GAAG,CAAC,CAAC;IACb,MAAM,GAAG,KAAK,CAAC;IACf,qBAAqB,CAAqC;IAElE,YACC,WAAgC,EAChC,QAA4C,EAC5C,aAAiC,EAChC;QACD,IAAI,CAAC,QAAQ,CAAC,yBAAyB,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,EAAE,yBAAyB,EAAE,QAAQ,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjG,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IAAA,CACnC;IAED,KAAK,GAAS;QACb,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC3C,OAAO;QACR,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,KAAK,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;IAAA,CAChD;IAED,KAAK,CAAC,MAAM,CAAC,KAAwB,EAAiB;QACrD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,aAAa;gBACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;gBACvC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;gBACtB,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;gBACjC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACjC,MAAM;YACP,KAAK,sBAAsB;gBAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,2BAA2B,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;oBAC/F,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAClC,CAAC;gBACD,MAAM;YACP,KAAK,oBAAoB;gBACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IACC,IAAI,CAAC,UAAU,CACd,KAAK,CAAC,UAAU,EAChB,2BAA2B,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CACnF,EACA,CAAC;oBACF,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAClC,CAAC;gBACD,MAAM;YACP,KAAK,WAAW;gBACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBAClB,OAAO;gBACR,CAAC;gBACD,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC5G,MAAM;YACP,KAAK,eAAe,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;oBAC9D,OAAO;gBACR,CAAC;gBACD,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC;gBAClD,uEAAuE;gBACvE,8CAA8C;gBAC9C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC;gBACvC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;gBACjC,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;gBACtC,MAAM;YACP,CAAC;YACD;gBACC,MAAM;QACR,CAAC;IAAA,CACD;IAEO,UAAU,CAAC,UAA8B,EAAE,IAAqC,EAAW;QAClG,MAAM,gBAAgB,GAAG,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1G,IAAI,gBAAgB,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACrE,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;gBAC5E,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;gBACvC,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACzB,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACxD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;oBACjB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACzC,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBACjD,CAAC;YACF,CAAC;QACF,CAAC;QACD,IAAI,gBAAgB,EAAE,CAAC;YACtB,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,IAAI,CAAC;IAAA,CACZ;IAEO,KAAK,CAAC,UAAU,CACvB,MAAoD,EACpD,aAAa,GAAqB,QAAQ,EAC1B;QAChB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,eAAe,GAAG,4BAA4B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvE,MAAM,YAAY,GAAuC;YACxD,MAAM;YACN,UAAU,EAAE,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC;YACvD,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;YACrD,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACvC,SAAS,EAAE,eAAe,CAAC,SAAS;YACpC,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;YAClF,qBAAqB,EAAE,UAAU;SACjC,CAAC;QACF,MAAM,MAAM,GAAuC;YAClD,OAAO,EAAE,iBAAiB,eAAe,CAAC,SAAS,IAAI,eAAe,CAAC,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;YAChI,IAAI,EAAE,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,sBAAsB;YAC5E,aAAa;YACb,YAAY;YACZ,GAAG,CAAC,aAAa,KAAK,KAAK;gBAC1B,CAAC,CAAC,EAAE,yBAAyB,EAAE,UAAU,GAAG,EAAE,EAAE;gBAChD,CAAC,CAAC,EAAE,qBAAqB,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC;SAC9C,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,IAAI,CACjC,GAAG,EAAE,CAAC,EAAC,CAAC,EACR,GAAG,EAAE,CAAC,EAAC,CAAC,CACR,CAAC;QACF,MAAM,QAAQ,CAAC;IAAA,CACf;CACD;AAED,SAAS,2BAA2B,CACnC,QAA4B,EAC5B,MAAiD,EACf;IAClC,MAAM,IAAI,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACpD,OAAO;QACN,IAAI;QACJ,UAAU,EAAE,6BAA6B,CAAC,IAAI,CAAC;QAC/C,MAAM;KACN,CAAC;AAAA,CACF;AAED,SAAS,4BAA4B,CAAC,QAA4B,EAAU;IAC3E,MAAM,OAAO,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjC,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,MAAM,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAAA,CAC5B;AAED,MAAM,UAAU,uCAAuC,CACtD,OAAiD,EAC+B;IAChF,IAAI,qBAAqB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC9C,MAAM,qBAAqB,GAAG,IAAI,iBAAiB,EAAW,CAAC;IAC/D,MAAM,qBAAqB,GAAG,OAAO,CAAC,SAErC,CAAC;IACF,MAAM,4BAA4B,GAAG,KAAK,IAAmB,EAAE,CAAC;QAC/D,uEAAuE;QACvE,0EAA0E;QAC1E,4DAA4D;QAC5D,IAAI,qBAAqB,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC;YAC/C,OAAO;QACR,CAAC;QACD,MAAM,qBAAqB,CAAC;IAAA,CAC5B,CAAC;IAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAY,EAAE,KAAc,EAAiB,EAAE,CAAC;QAChF,MAAM,MAAM,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,CAC5B,gCAAgC,CAC/B,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,OAAO,EACd,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACtD,CACD,CAAC;IAAA,CACF,CAAC;IAEF,MAAM,UAAU,GAAG,KAAK,EAAE,IAAY,EAAE,OAAuB,EAAiB,EAAE,CAAC;QAClF,MAAM,OAAO,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO;QACR,CAAC;QACD,IAAI,QAA4B,CAAC;QACjC,IAAI,CAAC;YACJ,IAAI,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC;gBACvE,MAAM,MAAM,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;gBACjD,QAAQ,GAAG,gCAAgC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,+BAA+B,CAAC,CAAC;YACzG,CAAC;iBAAM,CAAC;gBACP,QAAQ,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC;YACnD,CAAC;QACF,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACzB,MAAM,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACrC,OAAO;QACR,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO;QACR,CAAC;QACD,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAAA,CACxC,CAAC;IAEF,OAAO;QACN,yBAAyB,CAAC,eAAwB,EAAE;YACnD,qBAAqB,CAAC,yBAAyB,EAAE,CAAC,eAAe,CAAC,CAAC;QAAA,CACnE;QACD,KAAK,CAAC,KAAK,EAAE;YACZ,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAAA,CACtC;QACD,MAAM,CAAC,OAAuB,EAAc;YAC3C,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;gBACzC,qBAAqB,GAAG,qBAAqB,CAAC,IAAI,CACjD,GAAG,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EACtE,GAAG,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CACtE,CAAC;gBACF,KAAK,qBAAqB,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;gBAC3C,OAAO,qBAAqB,CAAC;YAAA,CAC7B,CAAC,CAAC;QAAA,CACH;QACD,OAAO,CAAC,OAAwB,EAAc;YAC7C,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;QAAA,CAC1D;QACD,KAAK,CAAC,mBAAmB,GAAG;YAC3B,MAAM,4BAA4B,EAAE,CAAC;YACrC,MAAM,OAAO,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAE,CAAC;QAAA,CAChD;QACD,KAAK,CAAC,KAAK,GAAG;YACb,MAAM,4BAA4B,EAAE,CAAC;YACrC,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;QAAA,CAClC;QACD,KAAK,CAAC,KAAK,GAAG;YACb,MAAM,4BAA4B,EAAE,CAAC;YACrC,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAAA,CAChC;KACD,CAAC;AAAA,CACF;AAED,SAAS,8BAA8B,CAAC,IAAY,EAAuC;IAC1F,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1D,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AAAA,CACd;AAED,SAAS,2BAA2B,CAAC,IAAY,EAA+C;IAC/F,IAAI,CAAC;QACJ,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAC9C,CAAC;QACD,OAAO;YACN,EAAE,EAAE,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YACzD,OAAO,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SAClE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC5C,CAAC;AAAA,CACD;AAED,SAAS,sBAAsB,CAC9B,MAAoD,EACpD,WAAwD,EAC/C;IACT,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC5B,OAAO,eAAe,CAAC;IACxB,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,sBAAsB,CAAC;IAC/B,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,mBAAmB,CAAC;IAC5B,CAAC;IACD,OAAO,WAAW,CAAC,CAAC,CAAC,SAAS,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;AAAA,CACtE;AAED,SAAS,6BAA6B,CAAC,QAAgB,EAAU;IAChE,QAAQ,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QAChC,KAAK,MAAM;YACV,OAAO,0BAA0B,CAAC;QACnC,KAAK,OAAO;YACX,OAAO,mBAAmB,CAAC;QAC5B,KAAK,MAAM;YACV,OAAO,oBAAoB,CAAC;QAC7B,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO,CAAC;QACb,KAAK,UAAU;YACd,OAAO,UAAU,CAAC;QACnB,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACR,OAAO,iBAAiB,CAAC;QAC1B,KAAK,KAAK;YACT,OAAO,uCAAuC,CAAC;QAChD,KAAK,OAAO,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,eAAe;YACnB,OAAO,QAAQ,CAAC;QACjB,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU;YACd,OAAO,gBAAgB,CAAC;QACzB,KAAK,YAAY,CAAC;QAClB,KAAK,aAAa;YACjB,OAAO,mBAAmB,CAAC;QAC5B,KAAK,KAAK,CAAC;QACX,KAAK,OAAO,CAAC;QACb,KAAK,SAAS,CAAC;QACf,KAAK,OAAO,CAAC;QACb,KAAK,MAAM;YACV,OAAO,UAAU,CAAC;QACnB;YACC,OAAO,UAAU,CAAC;IACpB,CAAC;AAAA,CACD;AAED,MAAM,UAAU,0CAA0C,CACzD,OAAoD,EACrC;IACf,MAAM,eAAe,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC5D,IAAI,sBAAsB,GAAG,IAAI,CAAC;IAClC,IAAI,8BAA8B,GAAG,KAAK,CAAC;IAC3C,IAAI,wBAAwB,GAAG,KAAK,CAAC;IACrC,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAc,CAAC;IAExD,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAE,EAAsB,EAA4B,EAAE,CAAC;QACnG,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,WAAW,GAAG,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC;QAC3B,MAAM,OAAO,GAA6B;YACzC,OAAO;YACP,EAAE;YACF,YAAY,EAAE,OAAO,CAAC,kBAAkB,EAAE,EAAE;YAC5C,IAAI,EAAE,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBACpC,WAAW,GAAG,OAAO,CAAC;YAAA,CACtB,CAAC;YACF,eAAe,EAAE,KAAK;YACtB,MAAM,GAAG;gBACR,IAAI,QAAQ,EAAE,CAAC;oBACd,OAAO;gBACR,CAAC;gBACD,QAAQ,GAAG,IAAI,CAAC;gBAChB,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChC,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAC7B,8BAA8B,GAAG,IAAI,CAAC;gBACvC,CAAC;gBACD,WAAW,EAAE,CAAC;YAAA,CACd;SACD,CAAC;QACF,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,OAAO,CAAC;IAAA,CACf,CAAC;IAEF,MAAM,sBAAsB,GAAG,KAAK,IAAmB,EAAE,CAAC;QACzD,OAAO,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,CAAC;IAAA,CACD,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAE,EAAsB,EAAwC,EAAE,CAAC;QAC7G,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;gBAClF,OAAO,OAAO,CAAC;YAChB,CAAC;QACF,CAAC;QACD,OAAO,SAAS,CAAC;IAAA,CACjB,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAwC,EAAE,CAAC;QAChF,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACJ,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5E,OAAO,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,OAAO,GAAG,MAAiC,CAAC;QAClD,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,oBAAoB,CAAC,SAAS,EAAE,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACjG,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,uBAAuB,IAAI,OAAO,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YACzF,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,OAAO,oBAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAAA,CACnG,CAAC;IAEF,MAAM,sBAAsB,GAAG,KAAK,EACnC,OAAiC,EACjC,QAAkC,EAClB,EAAE,CAAC;QACnB,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAClC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,UAAU,EAAE,OAAO,CAAC,kBAAkB,EAAE,EAAE;YAC1C,QAAQ;SACR,CAAC,CAAC;IAAA,CACH,CAAC;IAEF,MAAM,4BAA4B,GAAG,KAAK,EACzC,OAAiC,EACjC,QAAkC,EAClB,EAAE,CAAC;QACnB,IAAI,CAAC;YACJ,MAAM,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC;gBAAS,CAAC;YACV,OAAO,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;IAAA,CACD,CAAC;IAEF,MAAM,2BAA2B,GAAG,KAAK,EAAE,OAAiC,EAAiB,EAAE,CAAC;QAC/F,IAAI,CAAC;YACJ,qEAAqE;YACrE,+EAA+E;YAC/E,4EAA4E;YAC5E,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,OAAO,CAAC,uBAAuB,EAAE,CAAC;YACxC,MAAM,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;gBAAS,CAAC;YACV,OAAO,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;IAAA,CACD,CAAC;IAEF,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAQ,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,KAAgC,CAAC;QAClD,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC1E,OAAO;QACR,CAAC;QACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAChH,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,OAAO;QACR,CAAC;QACD,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;QAC/B,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,IAAI,qCAAqC,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YACnG,KAAK,2BAA2B,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;YAC1D,OAAO;QACR,CAAC;QACD,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,IAAI,mCAAmC,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YACjG,KAAK,4BAA4B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;YACrE,OAAO;QACR,CAAC;QACD,OAAO,CAAC,MAAM,EAAE,CAAC;IAAA,CACjB,CAAC;IAEF,MAAM,qBAAqB,GAAG,KAAK,EAAE,KAAa,EAAE,WAAiC,EAAiB,EAAE,CAAC;QACxG,MAAM,WAAW,CAAC;QAClB,MAAM,QAAQ,GAAG,KAAgC,CAAC;QAClD,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAClC,OAAO;QACR,CAAC;QACD,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,CAAC;IAAA,CAC5C,CAAC;IAEF,MAAM,SAAS,GAAyC;QACvD,yBAAyB,CAAC,eAAe,EAAE;YAC1C,sBAAsB,GAAG,eAAe,CAAC;YACzC,IAAI,CAAC,sBAAsB,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAC1D,IAAI,sBAAsB,EAAE,CAAC;oBAC5B,8BAA8B,GAAG,KAAK,CAAC;gBACxC,CAAC;gBACD,OAAO;YACR,CAAC;YACD,wBAAwB,GAAG,KAAK,CAAC;YACjC,8BAA8B,GAAG,KAAK,CAAC;YACvC,KAAK,MAAM,OAAO,IAAI,yBAAyB,EAAE,CAAC;gBACjD,OAAO,EAAE,CAAC;YACX,CAAC;QAAA,CACD;QACD,KAAK,CAAC,KAAK,EAAE;YACZ,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,OAAO,CAAC,iBAAiB,IAAK,KAAiC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACzF,OAAO,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO,MAAM,CAAC;QAAA,CACd;QACD,MAAM,CAAC,OAAuB,EAAc;YAC3C,OAAO,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;gBAC/C,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBACvC,IAAI,CAAC;oBACJ,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC;gBAAC,OAAO,KAAc,EAAE,CAAC;oBACzB,OAAO,EAAE,MAAM,EAAE,CAAC;oBAClB,MAAM,KAAK,CAAC;gBACb,CAAC;YAAA,CACD,CAAC,CAAC;QAAA,CACH;QACD,OAAO,CAAC,OAAwB,EAAc;YAC7C,IAAI,MAAM,GAAG,IAAI,CAAC;YAClB,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC;gBAC9B,KAAK,sBAAsB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;oBACxC,IAAI,MAAM,EAAE,CAAC;wBACZ,OAAO,EAAE,CAAC;oBACX,CAAC;gBAAA,CACD,CAAC,CAAC;YAAA,CACH,CAAC;YACF,yBAAyB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAChD,MAAM,MAAM,GACX,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;gBACtC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACb,OAAO;gBACR,CAAC;gBACD,IAAI,KAAK,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,CAAC;oBACf,OAAO;gBACR,CAAC;gBACD,IAAI,CAAC,sBAAsB,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,IAAI,8BAA8B,CAAC,EAAE,CAAC;oBAC7F,wBAAwB,GAAG,IAAI,CAAC;oBAChC,OAAO;gBACR,CAAC;gBACD,gBAAgB,EAAE,CAAC;YAAA,CACnB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;YAClB,OAAO,GAAG,EAAE,CAAC;gBACZ,MAAM,GAAG,KAAK,CAAC;gBACf,yBAAyB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBACnD,MAAM,EAAE,CAAC;YAAA,CACT,CAAC;QAAA,CACF;QACD,KAAK,CAAC,mBAAmB,GAAG;YAC3B,MAAM,OAAO,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAE,CAAC;QAAA,CAChD;QACD,KAAK,CAAC,KAAK,GAAG;YACb,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;QAAA,CAClC;QACD,KAAK,GAAG;YACP,OAAO,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAAA,CACjC;KACD,CAAC;IACF,OAAO,SAAS,CAAC;AAAA,CACjB;AAED,SAAS,4BAA4B,CAAC,WAAgC,EAA6B;IAClG,OAAO;QACN,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS;QACxC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,SAAS;QAClE,eAAe,EAAE,qBAAqB,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;KACpE,CAAC;AAAA,CACF;AAED,SAAS,sCAAsC,CAC9C,UAAsC,EACtC,aAAiC,EACW;IAC5C,MAAM,UAAU,GAAG,8BAA8B,CAAC,UAAU,CAAC,CAAC;IAC9D,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,SAAS,GAAG,4BAA4B,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,gBAAgB,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;IACtE,IAAI,+BAA+B,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,QAAQ,UAAU,CAAC,eAAe,EAAE,CAAC;YACpC,KAAK,QAAQ;gBACZ,OAAO;oBACN,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE,gBAAgB,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,SAAS;oBAC1E,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,2BAA2B,SAAS,EAAE;oBAChG,IAAI,EAAE,8BAA8B;oBACpC,SAAS,EAAE,UAAU,CAAC,SAAS;oBAC/B,GAAG,gBAAgB;iBACnB,CAAC;YACH,KAAK,SAAS;gBACb,OAAO,SAAS,CAAC;YAClB,KAAK,WAAW;gBACf,OAAO;oBACN,IAAI,EAAE,sBAAsB;oBAC5B,OAAO,EAAE,gBAAgB,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,YAAY;oBAC7E,IAAI,EAAE,wBAAwB;oBAC9B,KAAK,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,oBAAoB,SAAS,EAAE;oBAClF,IAAI,EAAE,6BAA6B;oBACnC,SAAS,EAAE,UAAU,CAAC,SAAS;oBAC/B,GAAG,gBAAgB;iBACnB,CAAC;QACJ,CAAC;IACF,CAAC;IACD,IAAI,mCAAmC,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClF,OAAO;YACN,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,UAAU,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,YAAY;YACvE,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,SAAS,EAAE;YACtF,IAAI,EAAE,gCAAgC;YACtC,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,GAAG,gBAAgB;SACnB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AAAA,CACjB;AAED,SAAS,4BAA4B,CAAC,aAAiC,EAAsB;IAC5F,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACvG,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,OAAO,CAAC;AAAA,CACf;AAED,SAAS,8BAA8B,CACtC,UAAsC,EAC4D;IAClG,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACzC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;IAC7C,IAAI,YAAY,EAAE,SAAS,KAAK,UAAU,CAAC,SAAS,IAAI,YAAY,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC;QACjG,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO;QACN,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,eAAe,EAAE,UAAU,CAAC,eAAe,IAAI,WAAW;KAC1D,CAAC;AAAA,CACF;AAED,SAAS,qBAAqB,CAAC,QAAiC,EAAgC;IAC/F,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3D,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClC,SAAS;QACV,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YACpC,OAAO,QAAQ,CAAC;QACjB,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,OAAO,WAAW,CAAC;IACpB,CAAC;IACD,OAAO,WAAW,CAAC;AAAA,CACnB;AAED,SAAS,+BAA+B,CAAC,OAAe,EAAW;IAClE,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,WAAW,CAAC;AAAA,CAC9E;AAED,SAAS,qCAAqC,CAAC,OAAe,EAAE,QAAiC,EAAW;IAC3G,IAAI,+BAA+B,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,OAAO,KAAK,kBAAkB,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;AAAA,CAC9D;AAED,SAAS,mCAAmC,CAC3C,OAAe,EACf,QAA6C,EAC6C;IAC1F,IAAI,OAAO,KAAK,kBAAkB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAAA,CACpE;AAED,SAAS,gBAAgB,CAAC,MAAe,EAAW;IACnD,OAAO,MAAM,KAAK,4BAA4B,IAAI,MAAM,KAAK,uBAAuB,CAAC;AAAA,CACrF;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","sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport { randomUUID } from \"node:crypto\";\nimport type { AgentMessage } from \"@hansjm10/volt-agent-core\";\nimport type { AgentSessionEvent } from \"../../core/agent-session.ts\";\nimport type { AgentSessionRuntime } from \"../../core/agent-session-runtime.ts\";\nimport { REVIEW_BRANCH_ACTION_ID, REVIEW_UNCOMMITTED_ACTION_ID } from \"../../core/host-actions.ts\";\nimport { type CustomMessage, extractVisibleTextContent } from \"../../core/messages.ts\";\nimport {\n\tcreateIrohRemoteFilteredRpcTransport,\n\tcreateIrohRemoteOutboundFilteredRpcTransport,\n\tcreateIrohRemoteRpcErrorResponse,\n\ttype IrohRemoteLiveActivityContentState,\n\ttype IrohRemoteLiveActivityToolGlyph,\n\ttype IrohRemoteLiveActivityUpdateIntent,\n\ttype IrohRemoteOutboundValueDecorator,\n\ttype IrohRemotePushNotificationDelivery,\n\ttype IrohRemoteRpcGrant,\n\tsanitizeIrohRemoteTranscriptText,\n} from \"../../core/remote/iroh/index.ts\";\nimport {\n\tcreateIrohRpcTransport,\n\ttype IrohRpcTransportOptions,\n\ttype RpcCloseHandler,\n\ttype RpcLineHandler,\n\ttype RpcTranscriptItem,\n\ttype RpcTransport,\n} from \"../../core/rpc/index.ts\";\nimport { extractMessageImages, projectSessionTranscript } from \"../../core/rpc/transcript.ts\";\nimport type { CustomMessageEntry, SessionEntry, SessionMessageEntry } from \"../../core/session-manager.ts\";\nimport { type RpcModeOptions, type RpcSessionChange, runRpcMode } from \"./rpc-mode.ts\";\nimport type { RpcRegisterPushTargetResponse } from \"./rpc-types.ts\";\n\nexport interface IrohRemoteRpcModeOptions extends IrohRpcTransportOptions {\n\trpcGrant: IrohRemoteRpcGrant;\n\t/** Recheck persisted authority at each command boundary when the host owns grant state. */\n\tisRpcGrantCurrent?: () => boolean | Promise<boolean>;\n\tdecorateOutbound?: IrohRemoteOutboundValueDecorator;\n\tdisposeRuntimeOnClose?: boolean;\n\tnotificationDelivery?: IrohRemotePushNotificationDelivery;\n\tonClientCapabilitiesChanged?: (features: string[]) => void;\n\tonResponseWritten?: (response: Record<string, unknown>) => void | Promise<void>;\n\tonSessionChanged?: (session: RpcSessionChange) => void | Promise<void>;\n\tonWorkflowEvent?: RpcModeOptions[\"onWorkflowEvent\"];\n\tregisterPushTarget?: (args: unknown) => Promise<RpcRegisterPushTargetResponse>;\n\tremoteCommandHandler?: (command: Record<string, unknown>) => object | Promise<object | undefined> | undefined;\n\tremoteWorkspacePath?: string;\n\t/** Drop extension_ui_request frames (relayed streams: dialogs are answered in the owning TUI). */\n\tsuppressExtensionUiRequests?: boolean;\n\tworkspaceName?: string;\n\tworkspacePath: string;\n\t/** Extra roots (worktree parent checkout, worktrees root) redacted on every outbound frame. */\n\tadditionalRedactedPaths?: string[];\n}\n\nexport type IrohRemoteNotificationKind =\n\t| \"conversation_completed\"\n\t| \"review_completed\"\n\t| \"action_completed\"\n\t| \"host_notice\";\n\nexport interface IrohRemoteNotificationRequest {\n\ttype: \"notification_request\";\n\teventId: string;\n\tkind: IrohRemoteNotificationKind;\n\ttitle: string;\n\tbody: string;\n\tsessionId?: string;\n\tworkspace?: string;\n}\n\ntype IrohRemoteRunTerminalOutcome = \"completed\" | \"failed\" | \"aborted\";\n\nexport interface IrohRemoteCompletionState {\n\tsessionId: string;\n\trunId?: string;\n\tterminalOutcome?: IrohRemoteRunTerminalOutcome;\n}\n\nexport interface IrohRemoteCompletedCommand {\n\tcommand: string;\n\tid: string | undefined;\n\tinitialState: IrohRemoteCompletionState | undefined;\n\tfinalState: IrohRemoteCompletionState | undefined;\n\tresponse?: Record<string, unknown>;\n}\n\ninterface PendingIrohRemoteCommand {\n\tcommand: string;\n\tid: string | undefined;\n\tinitialState: IrohRemoteCompletionState | undefined;\n\tdone: Promise<void>;\n\tresponseMatched: boolean;\n\tfinish(): void;\n}\n\ninterface IrohRemoteCloseDeferringRpcTransportOptions {\n\ttransport: RpcTransport;\n\tgetCompletionState?: () => IrohRemoteCompletionState;\n\tonCommandCompleted?: (completion: IrohRemoteCompletedCommand) => void | Promise<void>;\n\tonResponseWritten?: (response: Record<string, unknown>) => void | Promise<void>;\n\twaitForPromptCompletion(): Promise<void>;\n}\n\ninterface IrohRemoteCloseDeferringRpcTransport extends RpcTransport {\n\tsetRpcModeStartupComplete(startupComplete: boolean): void;\n}\n\ninterface IrohRemoteHostCommandRpcTransportOptions {\n\thandleCommand?: (command: Record<string, unknown>) => object | Promise<object | undefined> | undefined;\n\tisRpcGrantCurrent?: () => boolean | Promise<boolean>;\n\ttransport: RpcTransport;\n}\n\n/**\n * Cap on the per-stream completion-notification dedup set. Duplicate suppression\n * only needs recent history, so a very long-lived relay stream doing thousands of\n * turns evicts oldest-first rather than growing the set without bound.\n */\nconst MAX_SENT_NOTIFICATION_EVENT_IDS = 512;\n\n/**\n * Scalar cap for tool result text shipped to remote clients (transcript entries\n * and tool_execution_end frames). Mirrors REMOTE_TOOL_OUTPUT_MAX_SCALARS in\n * daemon/conversation-commands.ts so live events and fetched history agree.\n */\nconst IROH_REMOTE_TOOL_OUTPUT_MAX_SCALARS = 8_000;\n\n/** Run Volt RPC in-process over an authorized Iroh bidirectional stream. */\nexport function runIrohRemoteRpcMode(\n\truntimeHost: AgentSessionRuntime,\n\toptions: IrohRemoteRpcModeOptions,\n): Promise<void> {\n\tconst sentNotificationEventIds = new Set<string>();\n\tlet detachLiveActivityUpdates: (() => void) | undefined;\n\tlet detachTranscriptEntryEvents: (() => void) | undefined;\n\tlet transportClosed = false;\n\tconst attachLiveActivityUpdates = () => {\n\t\tdetachLiveActivityUpdates?.();\n\t\tdetachLiveActivityUpdates = attachIrohRemoteLiveActivityUpdates(\n\t\t\truntimeHost,\n\t\t\toptions.notificationDelivery,\n\t\t\toptions.workspaceName,\n\t\t);\n\t};\n\tconst filteredOutboundTransport = createIrohRemoteOutboundFilteredRpcTransport({\n\t\tdecorate: options.decorateOutbound,\n\t\tremoteWorkspacePath: options.remoteWorkspacePath,\n\t\ttransport: createIrohRpcTransport(options),\n\t\tworkspacePath: options.workspacePath,\n\t\tadditionalRedactedPaths: options.additionalRedactedPaths,\n\t});\n\tconst suppressingTransport: RpcTransport = options.suppressExtensionUiRequests\n\t\t? {\n\t\t\t\t...filteredOutboundTransport,\n\t\t\t\twrite: (value) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof value === \"object\" &&\n\t\t\t\t\t\tvalue !== null &&\n\t\t\t\t\t\t(value as { type?: unknown }).type === \"extension_ui_request\"\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn Promise.resolve();\n\t\t\t\t\t}\n\t\t\t\t\treturn filteredOutboundTransport.write(value);\n\t\t\t\t},\n\t\t\t}\n\t\t: filteredOutboundTransport;\n\t// Attach bounded, sanitized tool result text to live tool_execution_end\n\t// frames so remote clients can show real output in tool details.\n\tconst outboundTransport: RpcTransport = {\n\t\t...suppressingTransport,\n\t\twrite: (value) =>\n\t\t\tsuppressingTransport.write(\n\t\t\t\tdecorateIrohRemoteToolExecutionEnd(value, {\n\t\t\t\t\tremoteWorkspacePath: options.remoteWorkspacePath,\n\t\t\t\t\tworkspacePath: options.workspacePath,\n\t\t\t\t}),\n\t\t\t),\n\t};\n\tconst attachTranscriptEntryEvents = () => {\n\t\tdetachTranscriptEntryEvents?.();\n\t\tdetachTranscriptEntryEvents = attachIrohRemoteTranscriptEntryEvents(runtimeHost, outboundTransport, {\n\t\t\tremoteWorkspacePath: options.remoteWorkspacePath,\n\t\t\tworkspacePath: options.workspacePath,\n\t\t});\n\t};\n\tattachTranscriptEntryEvents();\n\tconst deliverCompletionNotification = async (notification: IrohRemoteNotificationRequest): Promise<void> => {\n\t\tif (options.notificationDelivery) {\n\t\t\tconst deliveryStatus = await options.notificationDelivery.deliverNotification(notification);\n\t\t\tif (deliveryStatus === \"sent\" || deliveryStatus === \"duplicate\") {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tawait outboundTransport.write(notification);\n\t};\n\tconst closeDeferringTransport = createIrohRemoteCloseDeferringRpcTransport({\n\t\ttransport: outboundTransport,\n\t\tgetCompletionState: () => getIrohRemoteCompletionState(runtimeHost),\n\t\tonCommandCompleted: async (completion) => {\n\t\t\tconst notification = createIrohRemoteCompletionNotification(completion, options.workspaceName);\n\t\t\tif (!notification || sentNotificationEventIds.has(notification.eventId)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (sentNotificationEventIds.size >= MAX_SENT_NOTIFICATION_EVENT_IDS) {\n\t\t\t\t// Set preserves insertion order, so the first value is the oldest.\n\t\t\t\tconst oldest = sentNotificationEventIds.values().next().value;\n\t\t\t\tif (oldest !== undefined) {\n\t\t\t\t\tsentNotificationEventIds.delete(oldest);\n\t\t\t\t}\n\t\t\t}\n\t\t\tsentNotificationEventIds.add(notification.eventId);\n\t\t\ttry {\n\t\t\t\tawait deliverCompletionNotification(notification);\n\t\t\t} catch (error: unknown) {\n\t\t\t\tsentNotificationEventIds.delete(notification.eventId);\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tonResponseWritten: options.onResponseWritten,\n\t\twaitForPromptCompletion: () => runtimeHost.session.waitForIdle(),\n\t});\n\n\tconst filteredTransport = createIrohRemoteFilteredRpcTransport({\n\t\ttransport: closeDeferringTransport,\n\t\trpcGrant: options.rpcGrant,\n\t});\n\tconst remoteHostCommandTransport =\n\t\toptions.remoteCommandHandler || options.isRpcGrantCurrent\n\t\t\t? createIrohRemoteHostCommandRpcTransport({\n\t\t\t\t\thandleCommand: options.remoteCommandHandler,\n\t\t\t\t\tisRpcGrantCurrent: options.isRpcGrantCurrent,\n\t\t\t\t\ttransport: filteredTransport,\n\t\t\t\t})\n\t\t\t: filteredTransport;\n\n\treturn runRpcMode(runtimeHost, {\n\t\tallowUiActionInvocation: true,\n\t\tdisposeRuntimeOnClose: options.disposeRuntimeOnClose,\n\t\tonSessionChanged: async (session) => {\n\t\t\tawait options.onSessionChanged?.(session);\n\t\t\tif (!transportClosed) {\n\t\t\t\tattachLiveActivityUpdates();\n\t\t\t\tattachTranscriptEntryEvents();\n\t\t\t}\n\t\t},\n\t\tonClientCapabilitiesChanged: options.onClientCapabilitiesChanged,\n\t\tonWorkflowEvent: options.onWorkflowEvent,\n\t\trequireRemoteSafeUiActions: true,\n\t\ttransport: remoteHostCommandTransport,\n\t\texitProcess: false,\n\t\tregisterPushTarget: options.registerPushTarget,\n\t}).finally(() => {\n\t\ttransportClosed = true;\n\t\tdetachTranscriptEntryEvents?.();\n\t\tdetachLiveActivityUpdates?.();\n\t});\n}\n\ninterface IrohRemoteTranscriptEventOptions {\n\tremoteWorkspacePath?: string;\n\tworkspacePath: string;\n}\n\nfunction attachIrohRemoteTranscriptEntryEvents(\n\truntimeHost: AgentSessionRuntime,\n\ttransport: RpcTransport,\n\toptions: IrohRemoteTranscriptEventOptions,\n): () => void {\n\tconst emittedFinalEntryIds = new Set<string>();\n\treturn runtimeHost.session.subscribe((event) => {\n\t\tif (event.type !== \"message_end\") {\n\t\t\treturn;\n\t\t}\n\t\tconst message = event.message;\n\t\tqueueMicrotask(() => {\n\t\t\tconst entry = findPersistedMessageEntry(runtimeHost, message);\n\t\t\tif (!entry || emittedFinalEntryIds.has(entry.id)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst transcriptEvent = createIrohRemoteTranscriptEntryEvent(entry, runtimeHost, options);\n\t\t\tif (!transcriptEvent) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\temittedFinalEntryIds.add(entry.id);\n\t\t\tvoid Promise.resolve(transport.write(transcriptEvent)).catch(() => {});\n\t\t});\n\t});\n}\n\ntype IrohRemoteTranscriptSourceEntry = SessionMessageEntry | CustomMessageEntry;\n\ninterface IrohRemoteStoredToolCall {\n\tid: string;\n\tname: string;\n\targuments: Record<string, unknown>;\n}\n\nfunction findPersistedMessageEntry(\n\truntimeHost: AgentSessionRuntime,\n\tmessage: unknown,\n): IrohRemoteTranscriptSourceEntry | undefined {\n\tconst branch = runtimeHost.session.sessionManager.getBranch();\n\tfor (let index = branch.length - 1; index >= 0; index--) {\n\t\tconst entry = branch[index];\n\t\tif (entry.type === \"message\" && entry.message === message) {\n\t\t\treturn entry;\n\t\t}\n\t\tif (entry.type === \"custom_message\" && isMatchingReviewCustomMessageEntry(entry, message)) {\n\t\t\treturn entry;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction isMatchingReviewCustomMessageEntry(entry: CustomMessageEntry, message: unknown): message is CustomMessage {\n\tif (entry.customType !== \"review\" || entry.display !== true || !isReviewCustomMessage(message)) {\n\t\treturn false;\n\t}\n\treturn customMessageContentMatches(entry.content, message.content);\n}\n\nfunction isReviewCustomMessage(message: unknown): message is CustomMessage {\n\tif (typeof message !== \"object\" || message === null || Array.isArray(message)) {\n\t\treturn false;\n\t}\n\tconst candidate = message as Partial<CustomMessage>;\n\treturn candidate.role === \"custom\" && candidate.customType === \"review\" && candidate.display === true;\n}\n\nfunction customMessageContentMatches(left: CustomMessageEntry[\"content\"], right: CustomMessage[\"content\"]): boolean {\n\tif (typeof left === \"string\" || typeof right === \"string\") {\n\t\treturn left === right;\n\t}\n\ttry {\n\t\treturn JSON.stringify(left) === JSON.stringify(right);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction createIrohRemoteTranscriptEntryEvent(\n\tentry: IrohRemoteTranscriptSourceEntry,\n\truntimeHost: AgentSessionRuntime,\n\toptions: IrohRemoteTranscriptEventOptions,\n): Record<string, unknown> | undefined {\n\tconst projectedEvent = createIrohRemoteProjectedTranscriptEntryEvent(entry, runtimeHost, options);\n\tif (projectedEvent) {\n\t\treturn projectedEvent;\n\t}\n\n\tif (entry.type === \"custom_message\") {\n\t\tif (entry.customType !== \"review\" || entry.display !== true) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst text = extractVisibleTextContent(entry.content);\n\t\treturn text ? createIrohRemoteTranscriptEntryEventValue(entry, \"assistant\", text, options) : undefined;\n\t}\n\tconst message = entry.message;\n\tif (message.role === \"user\" || message.role === \"assistant\") {\n\t\tconst text = extractVisibleTextContent(message.content);\n\t\tconst imageCount = message.role === \"user\" ? extractMessageImages(message.content).length : 0;\n\t\tif (!text && imageCount === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn createIrohRemoteTranscriptEntryEventValue(\n\t\t\tentry,\n\t\t\tmessage.role,\n\t\t\ttext,\n\t\t\toptions,\n\t\t\timageCount > 0 ? { imageCount } : {},\n\t\t);\n\t}\n\tif (message.role === \"toolResult\") {\n\t\tconst status = message.isError ? \"failed\" : \"completed\";\n\t\tconst toolName =\n\t\t\ttypeof message.toolName === \"string\" && message.toolName.trim() ? message.toolName.trim() : \"tool\";\n\t\tconst toolCall = collectIrohRemoteToolCalls(runtimeHost.session.sessionManager.getBranch()).get(\n\t\t\tmessage.toolCallId,\n\t\t);\n\t\tconst imageCount = extractMessageImages(message.content).length;\n\t\treturn createIrohRemoteTranscriptEntryEventValue(entry, \"tool\", `${toolName} ${status}`, options, {\n\t\t\ttoolName,\n\t\t\tstatus,\n\t\t\tsummary: `${toolName} ${status}`,\n\t\t\t...(toolName === \"subagent\"\n\t\t\t\t? {\n\t\t\t\t\t\t...projectIrohRemoteSubagentTranscriptArgs(toolCall?.arguments, options),\n\t\t\t\t\t\t...projectIrohRemoteSubagentTranscriptDetails(message.details, options),\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t\t...sanitizeIrohRemoteToolOutputFields(extractVisibleTextContent(message.content), options),\n\t\t\t...(imageCount > 0 ? { imageCount } : {}),\n\t\t});\n\t}\n\tif (message.role === \"bashExecution\") {\n\t\tconst failed = message.cancelled || (message.exitCode !== undefined && message.exitCode !== 0);\n\t\tconst status = failed ? \"failed\" : \"completed\";\n\t\tconst exit = message.cancelled\n\t\t\t? \"cancelled\"\n\t\t\t: message.exitCode === undefined\n\t\t\t\t? status\n\t\t\t\t: `exit ${message.exitCode}`;\n\t\treturn createIrohRemoteTranscriptEntryEventValue(\n\t\t\tentry,\n\t\t\t\"tool\",\n\t\t\t`bash ${exit}`,\n\t\t\toptions,\n\t\t\tsanitizeIrohRemoteToolOutputFields(message.output, options, message.truncated === true),\n\t\t);\n\t}\n\treturn undefined;\n}\n\nfunction createIrohRemoteProjectedTranscriptEntryEvent(\n\tentry: IrohRemoteTranscriptSourceEntry,\n\truntimeHost: AgentSessionRuntime,\n\toptions: IrohRemoteTranscriptEventOptions,\n): Record<string, unknown> | undefined {\n\tconst item = projectSessionTranscript(runtimeHost.session.sessionManager, { limit: 200 }).items.find(\n\t\t(transcriptItem) => transcriptItem.id === entry.id,\n\t);\n\tif (!item) {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\ttype: \"transcript_entry\",\n\t\tentry: {\n\t\t\tentryId: item.id,\n\t\t\tcreatedAt: item.timestamp,\n\t\t\t...createIrohRemoteProjectedTranscriptEntryFields(item, options),\n\t\t\t...(item.role === \"tool\" ? getIrohRemoteToolOutputFields(entry, options) : {}),\n\t\t},\n\t\tfinal: true,\n\t};\n}\n\n/** Sanitized, bounded tool result text for a persisted tool transcript entry. */\nfunction getIrohRemoteToolOutputFields(\n\tentry: IrohRemoteTranscriptSourceEntry,\n\toptions: IrohRemoteTranscriptEventOptions,\n): Record<string, unknown> {\n\tif (entry.type !== \"message\") {\n\t\treturn {};\n\t}\n\tconst message = entry.message;\n\tif (message.role === \"toolResult\") {\n\t\treturn sanitizeIrohRemoteToolOutputFields(extractVisibleTextContent(message.content), options);\n\t}\n\tif (message.role === \"bashExecution\") {\n\t\treturn sanitizeIrohRemoteToolOutputFields(message.output, options, message.truncated === true);\n\t}\n\treturn {};\n}\n\nfunction sanitizeIrohRemoteToolOutputFields(\n\tvalue: unknown,\n\toptions: IrohRemoteTranscriptEventOptions,\n\thostTruncated = false,\n): Record<string, unknown> {\n\tif (typeof value !== \"string\" || value.trim().length === 0) {\n\t\treturn {};\n\t}\n\tconst sanitized = sanitizeIrohRemoteTranscriptText(value, options, \"preserve\");\n\tconst scalars = Array.from(sanitized.text);\n\tconst truncated = sanitized.truncated || hostTruncated || scalars.length > IROH_REMOTE_TOOL_OUTPUT_MAX_SCALARS;\n\treturn {\n\t\toutput:\n\t\t\tscalars.length > IROH_REMOTE_TOOL_OUTPUT_MAX_SCALARS\n\t\t\t\t? scalars.slice(0, IROH_REMOTE_TOOL_OUTPUT_MAX_SCALARS).join(\"\")\n\t\t\t\t: sanitized.text,\n\t\toutputTruncated: truncated,\n\t};\n}\n\n/**\n * Adds `output`/`outputTruncated` to outbound tool_execution_end frames. The\n * generic outbound filter still sanitizes the whole frame afterwards; the text\n * is pre-sanitized and truncated here so the added field is bounded regardless.\n */\nfunction decorateIrohRemoteToolExecutionEnd(value: object, options: IrohRemoteTranscriptEventOptions): object {\n\tif (!isRecord(value) || value.type !== \"tool_execution_end\" || \"output\" in value) {\n\t\treturn value;\n\t}\n\tconst result = value.result;\n\tif (!isRecord(result)) {\n\t\treturn value;\n\t}\n\tconst outputFields = sanitizeIrohRemoteToolOutputFields(extractVisibleTextContent(result.content), options);\n\treturn Object.keys(outputFields).length > 0 ? { ...value, ...outputFields } : value;\n}\n\nfunction createIrohRemoteProjectedTranscriptEntryFields(\n\titem: RpcTranscriptItem,\n\toptions: IrohRemoteTranscriptEventOptions,\n): Record<string, unknown> {\n\tif (item.role === \"tool\") {\n\t\tconst summary = sanitizeIrohRemoteTranscriptText(item.summary, options, \"summary\");\n\t\tconst fields: Record<string, unknown> = {\n\t\t\trole: \"tool\",\n\t\t\ttext: summary.text,\n\t\t\ttruncated: summary.truncated,\n\t\t\ttoolName: item.toolName,\n\t\t\tstatus: item.status,\n\t\t\tsummary: summary.text,\n\t\t};\n\t\tif (item.path) {\n\t\t\tfields.path = item.path;\n\t\t}\n\t\tif (item.args) {\n\t\t\tfields.args = item.args;\n\t\t}\n\t\tif (item.details) {\n\t\t\tfields.details = item.details;\n\t\t}\n\t\tif (item.diffPreview) {\n\t\t\tfields.diffPreview = item.diffPreview;\n\t\t}\n\t\tif (item.patchPreview) {\n\t\t\tfields.patchPreview = item.patchPreview;\n\t\t}\n\t\tif (item.imageCount) {\n\t\t\tfields.imageCount = item.imageCount;\n\t\t}\n\t\treturn fields;\n\t}\n\n\tconst text = sanitizeIrohRemoteTranscriptText(item.text, options);\n\tconst fields: Record<string, unknown> = {\n\t\trole: item.role,\n\t\ttext: text.text,\n\t\ttruncated: text.truncated,\n\t};\n\tif (item.role === \"summary\") {\n\t\tfields.title = item.title;\n\t}\n\tif (item.role === \"user\" && item.imageCount) {\n\t\tfields.imageCount = item.imageCount;\n\t}\n\treturn fields;\n}\n\nfunction createIrohRemoteTranscriptEntryEventValue(\n\tentry: SessionEntry,\n\trole: \"user\" | \"assistant\" | \"system\" | \"tool\",\n\ttext: string,\n\toptions: IrohRemoteTranscriptEventOptions,\n\textraEntryFields: Record<string, unknown> = {},\n): Record<string, unknown> {\n\tconst sanitized = sanitizeIrohRemoteTranscriptText(text, options, role === \"tool\" ? \"summary\" : \"preserve\");\n\treturn {\n\t\ttype: \"transcript_entry\",\n\t\tentry: {\n\t\t\tentryId: entry.id,\n\t\t\tcreatedAt: normalizeIrohRemoteTranscriptTimestamp(entry.timestamp),\n\t\t\trole,\n\t\t\ttext: sanitized.text,\n\t\t\ttruncated: sanitized.truncated,\n\t\t\t...extraEntryFields,\n\t\t},\n\t\tfinal: true,\n\t};\n}\n\nfunction collectIrohRemoteToolCalls(entries: SessionEntry[]): Map<string, IrohRemoteStoredToolCall> {\n\tconst toolCalls = new Map<string, IrohRemoteStoredToolCall>();\n\tfor (const entry of entries) {\n\t\tif (entry.type !== \"message\" || entry.message.role !== \"assistant\") {\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const block of entry.message.content) {\n\t\t\tif (isIrohRemoteStoredToolCall(block)) {\n\t\t\t\ttoolCalls.set(block.id, block);\n\t\t\t}\n\t\t}\n\t}\n\treturn toolCalls;\n}\n\nfunction isIrohRemoteStoredToolCall(value: unknown): value is IrohRemoteStoredToolCall {\n\treturn (\n\t\tisRecord(value) &&\n\t\tvalue.type === \"toolCall\" &&\n\t\ttypeof value.id === \"string\" &&\n\t\ttypeof value.name === \"string\" &&\n\t\tisRecord(value.arguments)\n\t);\n}\n\nfunction projectIrohRemoteSubagentTranscriptArgs(\n\targs: Record<string, unknown> | undefined,\n\toptions: IrohRemoteTranscriptEventOptions,\n): Record<string, unknown> {\n\tif (!args) {\n\t\treturn {};\n\t}\n\tconst projected: Record<string, unknown> = {};\n\tcopyIrohRemoteBoundedString(args, projected, \"agent\", options, 200);\n\tcopyIrohRemoteBoundedString(args, projected, \"task\", options, 1_000);\n\tconst tasks = projectIrohRemoteSubagentInputArray(args.tasks, options);\n\tif (tasks) {\n\t\tprojected.tasks = tasks;\n\t}\n\tconst chain = projectIrohRemoteSubagentInputArray(args.chain, options);\n\tif (chain) {\n\t\tprojected.chain = chain;\n\t}\n\treturn Object.keys(projected).length > 0 ? { args: projected } : {};\n}\n\nfunction projectIrohRemoteSubagentInputArray(\n\tvalue: unknown,\n\toptions: IrohRemoteTranscriptEventOptions,\n): Array<{ agent: string; task: string }> | undefined {\n\tif (!Array.isArray(value)) {\n\t\treturn undefined;\n\t}\n\tconst projected = value\n\t\t.map((item) => {\n\t\t\tif (!isRecord(item)) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconst agent = getIrohRemoteBoundedString(item.agent, options, 200);\n\t\t\tconst task = getIrohRemoteBoundedString(item.task, options, 1_000);\n\t\t\treturn agent && task ? { agent, task } : undefined;\n\t\t})\n\t\t.filter((item): item is { agent: string; task: string } => item !== undefined);\n\treturn projected.length > 0 ? projected : undefined;\n}\n\nfunction projectIrohRemoteSubagentTranscriptDetails(\n\tdetails: unknown,\n\toptions: IrohRemoteTranscriptEventOptions,\n): Record<string, unknown> {\n\tif (!isRecord(details)) {\n\t\treturn {};\n\t}\n\tconst projected: Record<string, unknown> = {};\n\tcopyIrohRemoteBoundedString(details, projected, \"mode\", options, 200);\n\tcopyIrohRemoteBoundedString(details, projected, \"status\", options, 200);\n\tcopyIrohRemoteBoundedString(details, projected, \"subagentId\", options, 200);\n\tcopyIrohRemoteBoundedString(details, projected, \"sessionId\", options, 200);\n\tcopyIrohRemoteSubagentNumericDetails(details, projected);\n\tcopyIrohRemoteBoundedString(details, projected, \"currentActivity\", options, 300);\n\tconst summary = projectIrohRemoteSubagentSummary(details.summary);\n\tif (summary) {\n\t\tprojected.summary = summary;\n\t}\n\tconst childSessions = projectIrohRemoteSubagentDetailArray(details.childSessions, options);\n\tif (childSessions) {\n\t\tprojected.childSessions = childSessions;\n\t}\n\tconst agent = projectIrohRemoteSubagentAgent(details.agent, options);\n\tif (agent) {\n\t\tprojected.agent = agent;\n\t}\n\tconst output = projectIrohRemoteSubagentOutput(details.output, options);\n\tif (output) {\n\t\tprojected.output = output;\n\t}\n\tconst error = projectIrohRemoteSubagentError(details.error, options);\n\tif (error) {\n\t\tprojected.error = error;\n\t}\n\tconst children = projectIrohRemoteSubagentDetailArray(details.children, options);\n\tif (children) {\n\t\tprojected.children = children;\n\t}\n\tconst tasks = projectIrohRemoteSubagentDetailArray(details.tasks, options);\n\tif (tasks) {\n\t\tprojected.tasks = tasks;\n\t}\n\tconst steps = projectIrohRemoteSubagentDetailArray(details.steps, options);\n\tif (steps) {\n\t\tprojected.steps = steps;\n\t}\n\treturn Object.keys(projected).length > 0 ? { details: projected } : {};\n}\n\nconst IROH_REMOTE_SUBAGENT_NUMERIC_KEYS = [\"startedAt\", \"durationMs\", \"toolCalls\", \"tokens\"] as const;\nconst IROH_REMOTE_SUBAGENT_TREE_DEPTH_LIMIT = 5;\n\nfunction copyIrohRemoteSubagentNumericDetails(from: Record<string, unknown>, to: Record<string, unknown>): void {\n\tfor (const key of IROH_REMOTE_SUBAGENT_NUMERIC_KEYS) {\n\t\tconst numberValue = getIrohRemoteFiniteNumber(from[key]);\n\t\tif (numberValue !== undefined) {\n\t\t\tto[key] = numberValue;\n\t\t}\n\t}\n}\n\nfunction projectIrohRemoteSubagentSummary(value: unknown): Record<string, number> | undefined {\n\tif (!isRecord(value)) {\n\t\treturn undefined;\n\t}\n\tconst projected: Record<string, number> = {};\n\tfor (const key of [\n\t\t\"total\",\n\t\t\"completed\",\n\t\t\"failed\",\n\t\t\"aborted\",\n\t\t\"running\",\n\t\t\"maxTasks\",\n\t\t\"maxConcurrency\",\n\t\t\"stoppedAt\",\n\t]) {\n\t\tconst numberValue = getIrohRemoteFiniteNumber(value[key]);\n\t\tif (numberValue !== undefined) {\n\t\t\tprojected[key] = numberValue;\n\t\t}\n\t}\n\treturn Object.keys(projected).length > 0 ? projected : undefined;\n}\n\nfunction projectIrohRemoteSubagentDetailArray(\n\tvalue: unknown,\n\toptions: IrohRemoteTranscriptEventOptions,\n\tdepth = 0,\n): Array<Record<string, unknown>> | undefined {\n\tif (!Array.isArray(value) || depth >= IROH_REMOTE_SUBAGENT_TREE_DEPTH_LIMIT) {\n\t\treturn undefined;\n\t}\n\tconst projected = value\n\t\t.map((item) => projectIrohRemoteSubagentTask(item, options, depth))\n\t\t.filter((item): item is Record<string, unknown> => item !== undefined);\n\treturn projected.length > 0 ? projected : undefined;\n}\n\nfunction projectIrohRemoteSubagentTask(\n\tvalue: unknown,\n\toptions: IrohRemoteTranscriptEventOptions,\n\tdepth = 0,\n): Record<string, unknown> | undefined {\n\tif (!isRecord(value)) {\n\t\treturn undefined;\n\t}\n\tconst projected: Record<string, unknown> = {};\n\tconst index = getIrohRemoteFiniteNumber(value.index);\n\tif (index !== undefined) {\n\t\tprojected.index = index;\n\t}\n\tcopyIrohRemoteBoundedString(value, projected, \"subagentId\", options, 200);\n\tcopyIrohRemoteBoundedString(value, projected, \"sessionId\", options, 200);\n\tconst agent = projectIrohRemoteSubagentAgent(value.agent, options);\n\tif (agent) {\n\t\tprojected.agent = agent;\n\t}\n\tcopyIrohRemoteBoundedString(value, projected, \"status\", options, 200);\n\tcopyIrohRemoteBoundedString(value, projected, \"task\", options, 1_000);\n\tcopyIrohRemoteSubagentNumericDetails(value, projected);\n\tcopyIrohRemoteBoundedString(value, projected, \"currentActivity\", options, 300);\n\tconst error = projectIrohRemoteSubagentError(value.error, options);\n\tif (error) {\n\t\tprojected.error = error;\n\t}\n\tconst children = projectIrohRemoteSubagentDetailArray(value.children, options, depth + 1);\n\tif (children) {\n\t\tprojected.children = children;\n\t}\n\treturn Object.keys(projected).length > 0 ? projected : undefined;\n}\n\nfunction projectIrohRemoteSubagentAgent(\n\tvalue: unknown,\n\toptions: IrohRemoteTranscriptEventOptions,\n): Record<string, string> | undefined {\n\tif (!isRecord(value)) {\n\t\treturn undefined;\n\t}\n\tconst projected: Record<string, string> = {};\n\tcopyIrohRemoteBoundedString(value, projected, \"name\", options, 200);\n\tcopyIrohRemoteBoundedString(value, projected, \"source\", options, 200);\n\treturn Object.keys(projected).length > 0 ? projected : undefined;\n}\n\nfunction projectIrohRemoteSubagentOutput(\n\tvalue: unknown,\n\toptions: IrohRemoteTranscriptEventOptions,\n): Record<string, unknown> | undefined {\n\tif (!isRecord(value)) {\n\t\treturn undefined;\n\t}\n\tconst projected: Record<string, unknown> = {};\n\tcopyIrohRemoteBoundedString(value, projected, \"text\", options, 1_000);\n\tfor (const key of [\"bytes\", \"omittedBytes\", \"maxBytes\"]) {\n\t\tconst numberValue = getIrohRemoteFiniteNumber(value[key]);\n\t\tif (numberValue !== undefined) {\n\t\t\tprojected[key] = numberValue;\n\t\t}\n\t}\n\tif (typeof value.truncated === \"boolean\") {\n\t\tprojected.truncated = value.truncated;\n\t}\n\treturn Object.keys(projected).length > 0 ? projected : undefined;\n}\n\nfunction projectIrohRemoteSubagentError(\n\tvalue: unknown,\n\toptions: IrohRemoteTranscriptEventOptions,\n): Record<string, string> | undefined {\n\tif (!isRecord(value)) {\n\t\treturn undefined;\n\t}\n\tconst message = getIrohRemoteBoundedString(value.message, options, 1_000);\n\treturn message ? { message } : undefined;\n}\n\nfunction copyIrohRemoteBoundedString(\n\tfrom: Record<string, unknown>,\n\tto: Record<string, unknown>,\n\tkey: string,\n\toptions: IrohRemoteTranscriptEventOptions,\n\tmaxScalars: number,\n): void {\n\tconst value = getIrohRemoteBoundedString(from[key], options, maxScalars);\n\tif (value) {\n\t\tto[key] = value;\n\t}\n}\n\nfunction getIrohRemoteBoundedString(\n\tvalue: unknown,\n\toptions: IrohRemoteTranscriptEventOptions,\n\tmaxScalars: number,\n): string | undefined {\n\tif (typeof value !== \"string\" || value.trim().length === 0) {\n\t\treturn undefined;\n\t}\n\treturn truncateUnicodeScalars(sanitizeIrohRemoteTranscriptText(value, options, \"summary\").text, maxScalars);\n}\n\nfunction getIrohRemoteFiniteNumber(value: unknown): number | undefined {\n\treturn typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n\nfunction truncateUnicodeScalars(value: string, maxLength: number): string {\n\tconst scalars = Array.from(value);\n\treturn scalars.length <= maxLength ? value : scalars.slice(0, maxLength).join(\"\");\n}\n\nfunction normalizeIrohRemoteTranscriptTimestamp(timestamp: string): string {\n\tconst date = new Date(timestamp);\n\treturn Number.isNaN(date.getTime()) ? new Date(0).toISOString() : date.toISOString();\n}\n\nfunction attachIrohRemoteLiveActivityUpdates(\n\truntimeHost: AgentSessionRuntime,\n\tdelivery: IrohRemotePushNotificationDelivery | undefined,\n\tworkspaceName: string | undefined,\n): () => void {\n\tif (!delivery?.deliverLiveActivityUpdate) {\n\t\treturn () => {};\n\t}\n\tconst updater = new IrohRemoteLiveActivityUpdater(runtimeHost, delivery, workspaceName);\n\tconst unsubscribe = runtimeHost.session.subscribe((event) => {\n\t\tvoid updater.handle(event).catch(() => {});\n\t});\n\tupdater.start();\n\treturn unsubscribe;\n}\n\nclass IrohRemoteLiveActivityUpdater {\n\tprivate readonly delivery: Required<Pick<IrohRemotePushNotificationDelivery, \"deliverLiveActivityUpdate\">>;\n\tprivate readonly runtimeHost: AgentSessionRuntime;\n\tprivate readonly workspaceName: string | undefined;\n\tprivate readonly toolIndexesByCallId = new Map<string, number>();\n\tprivate readonly instanceId = randomUUID();\n\tprivate deliveryQueue: Promise<void> = Promise.resolve();\n\tprivate recentTools: IrohRemoteLiveActivityToolGlyph[] = [];\n\tprivate sequence = 0;\n\tprivate active = false;\n\tprivate pendingTerminalStatus: \"completed\" | \"failed\" | undefined;\n\n\tconstructor(\n\t\truntimeHost: AgentSessionRuntime,\n\t\tdelivery: IrohRemotePushNotificationDelivery,\n\t\tworkspaceName: string | undefined,\n\t) {\n\t\tif (!delivery.deliverLiveActivityUpdate) {\n\t\t\tthrow new Error(\"live activity delivery is unavailable\");\n\t\t}\n\t\tthis.runtimeHost = runtimeHost;\n\t\tthis.delivery = { deliverLiveActivityUpdate: delivery.deliverLiveActivityUpdate.bind(delivery) };\n\t\tthis.workspaceName = workspaceName;\n\t}\n\n\tstart(): void {\n\t\tif (!this.runtimeHost.session.isStreaming) {\n\t\t\treturn;\n\t\t}\n\t\tthis.active = true;\n\t\tvoid this.sendUpdate(\"running\").catch(() => {});\n\t}\n\n\tasync handle(event: AgentSessionEvent): Promise<void> {\n\t\tswitch (event.type) {\n\t\t\tcase \"agent_start\":\n\t\t\t\tthis.active = true;\n\t\t\t\tthis.pendingTerminalStatus = undefined;\n\t\t\t\tthis.recentTools = [];\n\t\t\t\tthis.toolIndexesByCallId.clear();\n\t\t\t\tawait this.sendUpdate(\"running\");\n\t\t\t\tbreak;\n\t\t\tcase \"tool_execution_start\":\n\t\t\t\tthis.active = true;\n\t\t\t\tif (this.recordTool(event.toolCallId, createLiveActivityToolGlyph(event.toolName, \"started\"))) {\n\t\t\t\t\tawait this.sendUpdate(\"running\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"tool_execution_end\":\n\t\t\t\tthis.active = true;\n\t\t\t\tif (\n\t\t\t\t\tthis.recordTool(\n\t\t\t\t\t\tevent.toolCallId,\n\t\t\t\t\t\tcreateLiveActivityToolGlyph(event.toolName, event.isError ? \"failed\" : \"completed\"),\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tawait this.sendUpdate(\"running\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"agent_end\":\n\t\t\t\tif (!this.active) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.pendingTerminalStatus = getRunTerminalOutcome(event.messages) === \"completed\" ? \"completed\" : \"failed\";\n\t\t\t\tbreak;\n\t\t\tcase \"agent_settled\": {\n\t\t\t\tif (!this.active || this.pendingTerminalStatus === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst terminalStatus = this.pendingTerminalStatus;\n\t\t\t\t// End the old run synchronously so delayed delivery cannot clear state\n\t\t\t\t// established by a newer agent_start handler.\n\t\t\t\tthis.active = false;\n\t\t\t\tthis.pendingTerminalStatus = undefined;\n\t\t\t\tthis.toolIndexesByCallId.clear();\n\t\t\t\tawait this.sendUpdate(terminalStatus);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\tprivate recordTool(toolCallId: string | undefined, tool: IrohRemoteLiveActivityToolGlyph): boolean {\n\t\tconst normalizedCallId = typeof toolCallId === \"string\" && toolCallId.length > 0 ? toolCallId : undefined;\n\t\tif (normalizedCallId) {\n\t\t\tconst existingIndex = this.toolIndexesByCallId.get(normalizedCallId);\n\t\t\tif (existingIndex !== undefined && existingIndex < this.recentTools.length) {\n\t\t\t\tthis.recentTools[existingIndex] = tool;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\tif (this.recentTools.at(-1)?.name === tool.name) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.recentTools.push(tool);\n\t\twhile (this.recentTools.length > 6) {\n\t\t\tthis.recentTools.shift();\n\t\t\tfor (const [callId, index] of this.toolIndexesByCallId) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tthis.toolIndexesByCallId.delete(callId);\n\t\t\t\t} else {\n\t\t\t\t\tthis.toolIndexesByCallId.set(callId, index - 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (normalizedCallId) {\n\t\t\tthis.toolIndexesByCallId.set(normalizedCallId, this.recentTools.length - 1);\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate async sendUpdate(\n\t\tstatus: IrohRemoteLiveActivityContentState[\"status\"],\n\t\tactivityEvent: \"update\" | \"end\" = \"update\",\n\t): Promise<void> {\n\t\tconst nowSeconds = Math.floor(Date.now() / 1000);\n\t\tconst currentTool = this.recentTools.at(-1);\n\t\tconst completionState = getIrohRemoteCompletionState(this.runtimeHost);\n\t\tconst contentState: IrohRemoteLiveActivityContentState = {\n\t\t\tstatus,\n\t\t\tstatusText: liveActivityStatusText(status, currentTool),\n\t\t\t...(currentTool === undefined ? {} : { currentTool }),\n\t\t\trecentTools: this.recentTools.slice(-6),\n\t\t\tsessionID: completionState.sessionId,\n\t\t\t...(this.workspaceName === undefined ? {} : { workspaceName: this.workspaceName }),\n\t\t\tupdatedAtEpochSeconds: nowSeconds,\n\t\t};\n\t\tconst update: IrohRemoteLiveActivityUpdateIntent = {\n\t\t\teventId: `live-activity:${completionState.sessionId}:${completionState.runId ?? \"active\"}:${this.instanceId}:${++this.sequence}`,\n\t\t\tkind: activityEvent === \"end\" ? \"live_activity_end\" : \"live_activity_update\",\n\t\t\tactivityEvent,\n\t\t\tcontentState,\n\t\t\t...(activityEvent === \"end\"\n\t\t\t\t? { dismissalDateEpochSeconds: nowSeconds + 45 }\n\t\t\t\t: { staleDateEpochSeconds: nowSeconds + 90 }),\n\t\t};\n\t\tconst delivery = this.deliveryQueue.then(() => this.delivery.deliverLiveActivityUpdate(update));\n\t\tthis.deliveryQueue = delivery.then(\n\t\t\t() => {},\n\t\t\t() => {},\n\t\t);\n\t\tawait delivery;\n\t}\n}\n\nfunction createLiveActivityToolGlyph(\n\ttoolName: string | undefined,\n\tstatus: IrohRemoteLiveActivityToolGlyph[\"status\"],\n): IrohRemoteLiveActivityToolGlyph {\n\tconst name = sanitizeLiveActivityToolName(toolName);\n\treturn {\n\t\tname,\n\t\tsymbolName: liveActivitySymbolNameForTool(name),\n\t\tstatus,\n\t};\n}\n\nfunction sanitizeLiveActivityToolName(toolName: string | undefined): string {\n\tconst trimmed = toolName?.trim();\n\tif (!trimmed) {\n\t\treturn \"tool\";\n\t}\n\treturn trimmed.slice(0, 32);\n}\n\nexport function createIrohRemoteHostCommandRpcTransport(\n\toptions: IrohRemoteHostCommandRpcTransportOptions,\n): RpcTransport & { setRpcModeStartupComplete?(startupComplete: boolean): void } {\n\tlet pendingInboundCommand = Promise.resolve();\n\tconst inboundCommandContext = new AsyncLocalStorage<boolean>();\n\tconst startupAwareTransport = options.transport as {\n\t\tsetRpcModeStartupComplete?: (startupComplete: boolean) => void;\n\t};\n\tconst waitForPendingInboundCommand = async (): Promise<void> => {\n\t\t// Command handlers themselves call transport backpressure/flush/close.\n\t\t// Awaiting their own pending promise would form a cycle; external callers\n\t\t// still wait for the full serialized inbound command chain.\n\t\tif (inboundCommandContext.getStore() === true) {\n\t\t\treturn;\n\t\t}\n\t\tawait pendingInboundCommand;\n\t};\n\n\tconst writeHandlerError = async (line: string, error: unknown): Promise<void> => {\n\t\tconst target = getIrohRemoteRpcErrorTarget(line);\n\t\tawait options.transport.write(\n\t\t\tcreateIrohRemoteRpcErrorResponse(\n\t\t\t\ttarget.id,\n\t\t\t\ttarget.command,\n\t\t\t\terror instanceof Error ? error.message : String(error),\n\t\t\t),\n\t\t);\n\t};\n\n\tconst handleLine = async (line: string, handler: RpcLineHandler): Promise<void> => {\n\t\tconst command = parseIrohRemoteHostCommandLine(line);\n\t\tif (!command) {\n\t\t\tawait handler(line);\n\t\t\treturn;\n\t\t}\n\t\tlet response: object | undefined;\n\t\ttry {\n\t\t\tif (options.isRpcGrantCurrent && !(await options.isRpcGrantCurrent())) {\n\t\t\t\tconst target = getIrohRemoteRpcErrorTarget(line);\n\t\t\t\tresponse = createIrohRemoteRpcErrorResponse(target.id, target.command, \"RPC grant is stale; reconnect\");\n\t\t\t} else {\n\t\t\t\tresponse = await options.handleCommand?.(command);\n\t\t\t}\n\t\t} catch (error: unknown) {\n\t\t\tawait writeHandlerError(line, error);\n\t\t\treturn;\n\t\t}\n\t\tif (response === undefined) {\n\t\t\tawait handler(line);\n\t\t\treturn;\n\t\t}\n\t\tawait options.transport.write(response);\n\t};\n\n\treturn {\n\t\tsetRpcModeStartupComplete(startupComplete: boolean) {\n\t\t\tstartupAwareTransport.setRpcModeStartupComplete?.(startupComplete);\n\t\t},\n\t\twrite(value) {\n\t\t\treturn options.transport.write(value);\n\t\t},\n\t\tonLine(handler: RpcLineHandler): () => void {\n\t\t\treturn options.transport.onLine((line) => {\n\t\t\t\tpendingInboundCommand = pendingInboundCommand.then(\n\t\t\t\t\t() => inboundCommandContext.run(true, () => handleLine(line, handler)),\n\t\t\t\t\t() => inboundCommandContext.run(true, () => handleLine(line, handler)),\n\t\t\t\t);\n\t\t\t\tvoid pendingInboundCommand.catch(() => {});\n\t\t\t\treturn pendingInboundCommand;\n\t\t\t});\n\t\t},\n\t\tonClose(handler: RpcCloseHandler): () => void {\n\t\t\treturn options.transport.onClose?.(handler) ?? (() => {});\n\t\t},\n\t\tasync waitForBackpressure() {\n\t\t\tawait waitForPendingInboundCommand();\n\t\t\tawait options.transport.waitForBackpressure?.();\n\t\t},\n\t\tasync flush() {\n\t\t\tawait waitForPendingInboundCommand();\n\t\t\tawait options.transport.flush?.();\n\t\t},\n\t\tasync close() {\n\t\t\tawait waitForPendingInboundCommand();\n\t\t\tawait options.transport.close();\n\t\t},\n\t};\n}\n\nfunction parseIrohRemoteHostCommandLine(line: string): Record<string, unknown> | undefined {\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(line);\n\t} catch {\n\t\treturn undefined;\n\t}\n\tif (!isRecord(parsed) || typeof parsed.type !== \"string\") {\n\t\treturn undefined;\n\t}\n\treturn parsed;\n}\n\nfunction getIrohRemoteRpcErrorTarget(line: string): { id: string | undefined; command: string } {\n\ttry {\n\t\tconst parsed: unknown = JSON.parse(line);\n\t\tif (!isRecord(parsed)) {\n\t\t\treturn { id: undefined, command: \"unknown\" };\n\t\t}\n\t\treturn {\n\t\t\tid: typeof parsed.id === \"string\" ? parsed.id : undefined,\n\t\t\tcommand: typeof parsed.type === \"string\" ? parsed.type : \"unknown\",\n\t\t};\n\t} catch {\n\t\treturn { id: undefined, command: \"parse\" };\n\t}\n}\n\nfunction liveActivityStatusText(\n\tstatus: IrohRemoteLiveActivityContentState[\"status\"],\n\tcurrentTool: IrohRemoteLiveActivityToolGlyph | undefined,\n): string {\n\tif (status === \"completed\") {\n\t\treturn \"Volt finished\";\n\t}\n\tif (status === \"failed\") {\n\t\treturn \"Volt needs attention\";\n\t}\n\tif (status === \"waiting\") {\n\t\treturn \"Waiting for input\";\n\t}\n\treturn currentTool ? `Using ${currentTool.name}` : \"Volt is thinking\";\n}\n\nfunction liveActivitySymbolNameForTool(toolName: string): string {\n\tswitch (toolName.toLowerCase()) {\n\t\tcase \"read\":\n\t\t\treturn \"doc.text.magnifyingglass\";\n\t\tcase \"write\":\n\t\t\treturn \"square.and.pencil\";\n\t\tcase \"edit\":\n\t\t\treturn \"pencil.and.outline\";\n\t\tcase \"bash\":\n\t\tcase \"shell\":\n\t\tcase \"terminal\":\n\t\t\treturn \"terminal\";\n\t\tcase \"find\":\n\t\tcase \"grep\":\n\t\tcase \"search\":\n\t\tcase \"rg\":\n\t\t\treturn \"magnifyingglass\";\n\t\tcase \"lsp\":\n\t\t\treturn \"point.3.connected.trianglepath.dotted\";\n\t\tcase \"build\":\n\t\tcase \"build_sim\":\n\t\tcase \"build_run_sim\":\n\t\t\treturn \"hammer\";\n\t\tcase \"test\":\n\t\tcase \"test_sim\":\n\t\t\treturn \"checkmark.seal\";\n\t\tcase \"screenshot\":\n\t\tcase \"snapshot_ui\":\n\t\t\treturn \"camera.viewfinder\";\n\t\tcase \"tap\":\n\t\tcase \"touch\":\n\t\tcase \"gesture\":\n\t\tcase \"swipe\":\n\t\tcase \"drag\":\n\t\t\treturn \"hand.tap\";\n\t\tdefault:\n\t\t\treturn \"sparkles\";\n\t}\n}\n\nexport function createIrohRemoteCloseDeferringRpcTransport(\n\toptions: IrohRemoteCloseDeferringRpcTransportOptions,\n): RpcTransport {\n\tconst pendingCommands = new Set<PendingIrohRemoteCommand>();\n\tlet rpcModeStartupComplete = true;\n\tlet startupCompletedPendingCommand = false;\n\tlet startupCleanClosePending = false;\n\tconst startupCleanCloseHandlers = new Set<() => void>();\n\n\tconst createPendingCommand = (command: string, id: string | undefined): PendingIrohRemoteCommand => {\n\t\tlet finished = false;\n\t\tlet resolveDone = () => {};\n\t\tconst pending: PendingIrohRemoteCommand = {\n\t\t\tcommand,\n\t\t\tid,\n\t\t\tinitialState: options.getCompletionState?.(),\n\t\t\tdone: new Promise<void>((resolve) => {\n\t\t\t\tresolveDone = resolve;\n\t\t\t}),\n\t\t\tresponseMatched: false,\n\t\t\tfinish() {\n\t\t\t\tif (finished) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfinished = true;\n\t\t\t\tpendingCommands.delete(pending);\n\t\t\t\tif (!rpcModeStartupComplete) {\n\t\t\t\t\tstartupCompletedPendingCommand = true;\n\t\t\t\t}\n\t\t\t\tresolveDone();\n\t\t\t},\n\t\t};\n\t\tpendingCommands.add(pending);\n\t\treturn pending;\n\t};\n\n\tconst waitForPendingCommands = async (): Promise<void> => {\n\t\twhile (pendingCommands.size > 0) {\n\t\t\tawait Promise.allSettled([...pendingCommands].map((pending) => pending.done));\n\t\t}\n\t};\n\n\tconst findPendingCommand = (command: string, id: string | undefined): PendingIrohRemoteCommand | undefined => {\n\t\tfor (const pending of pendingCommands) {\n\t\t\tif (!pending.responseMatched && pending.command === command && pending.id === id) {\n\t\t\t\treturn pending;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t};\n\n\tconst trackInboundLine = (line: string): PendingIrohRemoteCommand | undefined => {\n\t\tlet parsed: unknown;\n\t\ttry {\n\t\t\tparsed = JSON.parse(line);\n\t\t} catch {\n\t\t\treturn createPendingCommand(\"parse\", undefined);\n\t\t}\n\t\tif (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n\t\t\treturn createPendingCommand(\"unknown\", undefined);\n\t\t}\n\t\tconst command = parsed as Record<string, unknown>;\n\t\tif (typeof command.type !== \"string\") {\n\t\t\treturn createPendingCommand(\"unknown\", typeof command.id === \"string\" ? command.id : undefined);\n\t\t}\n\t\tif (command.type === \"extension_ui_response\" || command.type === \"host_action_response\") {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn createPendingCommand(command.type, typeof command.id === \"string\" ? command.id : undefined);\n\t};\n\n\tconst notifyCompletedCommand = async (\n\t\tpending: PendingIrohRemoteCommand,\n\t\tresponse?: Record<string, unknown>,\n\t): Promise<void> => {\n\t\tawait options.onCommandCompleted?.({\n\t\t\tcommand: pending.command,\n\t\t\tid: pending.id,\n\t\t\tinitialState: pending.initialState,\n\t\t\tfinalState: options.getCompletionState?.(),\n\t\t\tresponse,\n\t\t});\n\t};\n\n\tconst finishAfterCommandCompletion = async (\n\t\tpending: PendingIrohRemoteCommand,\n\t\tresponse?: Record<string, unknown>,\n\t): Promise<void> => {\n\t\ttry {\n\t\t\tawait notifyCompletedCommand(pending, response);\n\t\t} finally {\n\t\t\tpending.finish();\n\t\t}\n\t};\n\n\tconst finishAfterPromptCompletion = async (pending: PendingIrohRemoteCommand): Promise<void> => {\n\t\ttry {\n\t\t\t// Prompt success is emitted just before AgentSession starts the run.\n\t\t\t// Steer/follow_up success means input was accepted into an active session run.\n\t\t\t// Yield once so waitForIdle observes that run or any accepted queued input.\n\t\t\tawait Promise.resolve();\n\t\t\tawait options.waitForPromptCompletion();\n\t\t\tawait notifyCompletedCommand(pending);\n\t\t} finally {\n\t\t\tpending.finish();\n\t\t}\n\t};\n\n\tconst trackOutboundResponse = (value: object): void => {\n\t\tconst response = value as Record<string, unknown>;\n\t\tif (response.type !== \"response\" || typeof response.command !== \"string\") {\n\t\t\treturn;\n\t\t}\n\t\tconst pending = findPendingCommand(response.command, typeof response.id === \"string\" ? response.id : undefined);\n\t\tif (!pending) {\n\t\t\treturn;\n\t\t}\n\t\tpending.responseMatched = true;\n\t\tif (response.success === true && shouldWaitForRemoteResponseCompletion(pending.command, response)) {\n\t\t\tvoid finishAfterPromptCompletion(pending).catch(() => {});\n\t\t\treturn;\n\t\t}\n\t\tif (response.success === true && isCompletedReviewInvocationResponse(pending.command, response)) {\n\t\t\tvoid finishAfterCommandCompletion(pending, response).catch(() => {});\n\t\t\treturn;\n\t\t}\n\t\tpending.finish();\n\t};\n\n\tconst notifyResponseWritten = async (value: object, writeResult: void | Promise<void>): Promise<void> => {\n\t\tawait writeResult;\n\t\tconst response = value as Record<string, unknown>;\n\t\tif (response.type !== \"response\") {\n\t\t\treturn;\n\t\t}\n\t\tawait options.onResponseWritten?.(response);\n\t};\n\n\tconst transport: IrohRemoteCloseDeferringRpcTransport = {\n\t\tsetRpcModeStartupComplete(startupComplete) {\n\t\t\trpcModeStartupComplete = startupComplete;\n\t\t\tif (!rpcModeStartupComplete || !startupCleanClosePending) {\n\t\t\t\tif (rpcModeStartupComplete) {\n\t\t\t\t\tstartupCompletedPendingCommand = false;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tstartupCleanClosePending = false;\n\t\t\tstartupCompletedPendingCommand = false;\n\t\t\tfor (const handler of startupCleanCloseHandlers) {\n\t\t\t\thandler();\n\t\t\t}\n\t\t},\n\t\twrite(value) {\n\t\t\ttrackOutboundResponse(value);\n\t\t\tconst result = options.transport.write(value);\n\t\t\tif (options.onResponseWritten && (value as Record<string, unknown>).type === \"response\") {\n\t\t\t\treturn notifyResponseWritten(value, result);\n\t\t\t}\n\t\t\treturn result;\n\t\t},\n\t\tonLine(handler: RpcLineHandler): () => void {\n\t\t\treturn options.transport.onLine(async (line) => {\n\t\t\t\tconst pending = trackInboundLine(line);\n\t\t\t\ttry {\n\t\t\t\t\tawait handler(line);\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\tpending?.finish();\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tonClose(handler: RpcCloseHandler): () => void {\n\t\t\tlet active = true;\n\t\t\tconst handleCleanClose = () => {\n\t\t\t\tvoid waitForPendingCommands().then(() => {\n\t\t\t\t\tif (active) {\n\t\t\t\t\t\thandler();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\t\t\tstartupCleanCloseHandlers.add(handleCleanClose);\n\t\t\tconst detach =\n\t\t\t\toptions.transport.onClose?.((error) => {\n\t\t\t\t\tif (!active) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\thandler(error);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (!rpcModeStartupComplete && (pendingCommands.size > 0 || startupCompletedPendingCommand)) {\n\t\t\t\t\t\tstartupCleanClosePending = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\thandleCleanClose();\n\t\t\t\t}) ?? (() => {});\n\t\t\treturn () => {\n\t\t\t\tactive = false;\n\t\t\t\tstartupCleanCloseHandlers.delete(handleCleanClose);\n\t\t\t\tdetach();\n\t\t\t};\n\t\t},\n\t\tasync waitForBackpressure() {\n\t\t\tawait options.transport.waitForBackpressure?.();\n\t\t},\n\t\tasync flush() {\n\t\t\tawait options.transport.flush?.();\n\t\t},\n\t\tclose() {\n\t\t\treturn options.transport.close();\n\t\t},\n\t};\n\treturn transport;\n}\n\nfunction getIrohRemoteCompletionState(runtimeHost: AgentSessionRuntime): IrohRemoteCompletionState {\n\treturn {\n\t\tsessionId: runtimeHost.session.sessionId,\n\t\trunId: runtimeHost.session.sessionManager.getLeafId() ?? undefined,\n\t\tterminalOutcome: getRunTerminalOutcome(runtimeHost.session.messages),\n\t};\n}\n\nfunction createIrohRemoteCompletionNotification(\n\tcompletion: IrohRemoteCompletedCommand,\n\tworkspaceName: string | undefined,\n): IrohRemoteNotificationRequest | undefined {\n\tconst finalState = getChangedFinalCompletionState(completion);\n\tif (!finalState) {\n\t\treturn undefined;\n\t}\n\tconst workspace = getSafeNotificationWorkspace(workspaceName);\n\tconst workspaceDetails = workspace === undefined ? {} : { workspace };\n\tif (isConversationCompletionCommand(completion.command)) {\n\t\tswitch (finalState.terminalOutcome) {\n\t\t\tcase \"failed\":\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"notification_request\",\n\t\t\t\t\teventId: `conversation:${finalState.sessionId}:${finalState.runId}:failed`,\n\t\t\t\t\tkind: \"host_notice\",\n\t\t\t\t\ttitle: workspace === undefined ? \"Volt needs attention\" : `Volt needs attention in ${workspace}`,\n\t\t\t\t\tbody: \"Open Volt to view the error.\",\n\t\t\t\t\tsessionId: finalState.sessionId,\n\t\t\t\t\t...workspaceDetails,\n\t\t\t\t};\n\t\t\tcase \"aborted\":\n\t\t\t\treturn undefined;\n\t\t\tcase \"completed\":\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"notification_request\",\n\t\t\t\t\teventId: `conversation:${finalState.sessionId}:${finalState.runId}:completed`,\n\t\t\t\t\tkind: \"conversation_completed\",\n\t\t\t\t\ttitle: workspace === undefined ? \"Volt finished\" : `Volt finished in ${workspace}`,\n\t\t\t\t\tbody: \"Your conversation is ready.\",\n\t\t\t\t\tsessionId: finalState.sessionId,\n\t\t\t\t\t...workspaceDetails,\n\t\t\t\t};\n\t\t}\n\t}\n\tif (isCompletedReviewInvocationResponse(completion.command, completion.response)) {\n\t\treturn {\n\t\t\ttype: \"notification_request\",\n\t\t\teventId: `review:${finalState.sessionId}:${finalState.runId}:completed`,\n\t\t\tkind: \"review_completed\",\n\t\t\ttitle: workspace === undefined ? \"Review complete\" : `Review complete in ${workspace}`,\n\t\t\tbody: \"Open Volt to see the findings.\",\n\t\t\tsessionId: finalState.sessionId,\n\t\t\t...workspaceDetails,\n\t\t};\n\t}\n\treturn undefined;\n}\n\nfunction getSafeNotificationWorkspace(workspaceName: string | undefined): string | undefined {\n\tif (workspaceName === undefined) {\n\t\treturn undefined;\n\t}\n\tconst trimmed = workspaceName.trim();\n\tif (trimmed.length === 0 || trimmed.includes(\"/\") || trimmed.includes(\"\\\\\") || trimmed.includes(\"\\0\")) {\n\t\treturn undefined;\n\t}\n\treturn trimmed;\n}\n\nfunction getChangedFinalCompletionState(\n\tcompletion: IrohRemoteCompletedCommand,\n): { sessionId: string; runId: string; terminalOutcome: IrohRemoteRunTerminalOutcome } | undefined {\n\tconst finalState = completion.finalState;\n\tif (!finalState?.runId) {\n\t\treturn undefined;\n\t}\n\tconst initialState = completion.initialState;\n\tif (initialState?.sessionId === finalState.sessionId && initialState.runId === finalState.runId) {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\tsessionId: finalState.sessionId,\n\t\trunId: finalState.runId,\n\t\tterminalOutcome: finalState.terminalOutcome ?? \"completed\",\n\t};\n}\n\nfunction getRunTerminalOutcome(messages: readonly AgentMessage[]): IrohRemoteRunTerminalOutcome {\n\tfor (let index = messages.length - 1; index >= 0; index--) {\n\t\tconst message = messages[index];\n\t\tif (message.role !== \"assistant\") {\n\t\t\tcontinue;\n\t\t}\n\t\tif (message.stopReason === \"error\") {\n\t\t\treturn \"failed\";\n\t\t}\n\t\tif (message.stopReason === \"aborted\") {\n\t\t\treturn \"aborted\";\n\t\t}\n\t\treturn \"completed\";\n\t}\n\treturn \"completed\";\n}\n\nfunction isConversationCompletionCommand(command: string): boolean {\n\treturn command === \"prompt\" || command === \"steer\" || command === \"follow_up\";\n}\n\nfunction shouldWaitForRemoteResponseCompletion(command: string, response: Record<string, unknown>): boolean {\n\tif (isConversationCompletionCommand(command)) {\n\t\treturn true;\n\t}\n\tif (command !== \"invoke_ui_action\") {\n\t\treturn false;\n\t}\n\tconst data = response.data;\n\tif (!isRecord(data)) {\n\t\treturn false;\n\t}\n\treturn data.status === \"accepted\" || data.status === \"queued\";\n}\n\nfunction isCompletedReviewInvocationResponse(\n\tcommand: string,\n\tresponse: Record<string, unknown> | undefined,\n): response is Record<string, unknown> & { data: { action: string; status: \"completed\" } } {\n\tif (command !== \"invoke_ui_action\" || !response) {\n\t\treturn false;\n\t}\n\tconst data = response.data;\n\tif (!isRecord(data)) {\n\t\treturn false;\n\t}\n\treturn data.status === \"completed\" && isReviewActionId(data.action);\n}\n\nfunction isReviewActionId(action: unknown): boolean {\n\treturn action === REVIEW_UNCOMMITTED_ACTION_ID || action === REVIEW_BRANCH_ACTION_ID;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/jsonl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC","sourcesContent":["export { attachJsonlLineReader, serializeJsonLine } from \"../../core/rpc/jsonl.ts\";\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsonl.js","sourceRoot":"","sources":["../../../src/modes/rpc/jsonl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC","sourcesContent":["export { attachJsonlLineReader, serializeJsonLine } from \"../../core/rpc/jsonl.ts\";\n"]}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import type { AgentMessage, ThinkingLevel } from "@hansjm10/volt-agent-core";
|
|
2
|
+
import type { ImageContent } from "@hansjm10/volt-ai";
|
|
3
|
+
import type { AgentSessionEvent, SessionStats } from "../../core/agent-session.ts";
|
|
4
|
+
import type { BashResult } from "../../core/bash-executor.ts";
|
|
5
|
+
import type { CompactionResult } from "../../core/compaction/index.ts";
|
|
6
|
+
import type { ExtensionError } from "../../core/extensions/index.ts";
|
|
7
|
+
import type { SubagentEvent, SubagentResult } from "../../core/subagents/index.ts";
|
|
8
|
+
import type { RpcClientCapabilityFeature, RpcCommand, RpcExtensionUIRequest, RpcExtensionUIResponse, RpcHostActionRequest, RpcHostActionResponse, RpcHostActionUpdate, RpcListSubagentsResponse, RpcSessionListItem, RpcSessionState, RpcSlashCommand, RpcSubagentStartResponse, RpcTranscriptResponse, RpcWorkflowEvent, RpcWorkflowToolEvent, UiActionCapabilities, UiActionDescriptor, UiActionInvocationQueueBehavior, UiActionInvocationResponse, UiActionListScope, UiActionOptionDescriptor } from "./rpc-types.ts";
|
|
9
|
+
export interface RpcClientBaseOptions {
|
|
10
|
+
/** Milliseconds to wait for a command response. Defaults to 30 seconds. */
|
|
11
|
+
requestTimeoutMs?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface ModelInfo {
|
|
14
|
+
provider: string;
|
|
15
|
+
id: string;
|
|
16
|
+
contextWindow: number;
|
|
17
|
+
reasoning: boolean;
|
|
18
|
+
}
|
|
19
|
+
export type RpcExtensionErrorEvent = {
|
|
20
|
+
type: "extension_error";
|
|
21
|
+
} & ExtensionError;
|
|
22
|
+
export type RpcSubagentEvent = {
|
|
23
|
+
type: "subagent_event";
|
|
24
|
+
subagentId: string;
|
|
25
|
+
event: SubagentEvent;
|
|
26
|
+
};
|
|
27
|
+
export type RpcSubagentEndEvent = {
|
|
28
|
+
type: "subagent_end";
|
|
29
|
+
subagentId: string;
|
|
30
|
+
result: SubagentResult;
|
|
31
|
+
};
|
|
32
|
+
/** Emitted when the host's available model catalog changed on disk (login, logout, or API key save). */
|
|
33
|
+
export type RpcModelsChangedEvent = {
|
|
34
|
+
type: "models_changed";
|
|
35
|
+
};
|
|
36
|
+
export type RpcClientEvent = AgentSessionEvent | RpcModelsChangedEvent | RpcWorkflowEvent | RpcWorkflowToolEvent | RpcExtensionUIRequest | RpcHostActionRequest | RpcHostActionUpdate | RpcSubagentEvent | RpcSubagentEndEvent | RpcExtensionErrorEvent;
|
|
37
|
+
export type RpcEventListener = (event: RpcClientEvent) => void;
|
|
38
|
+
export declare abstract class RpcClientBase {
|
|
39
|
+
private readonly requestTimeoutMs;
|
|
40
|
+
private readonly eventListeners;
|
|
41
|
+
private readonly pendingRequests;
|
|
42
|
+
private requestId;
|
|
43
|
+
private failureError;
|
|
44
|
+
constructor(options?: RpcClientBaseOptions);
|
|
45
|
+
/** Subscribe to RPC events and extension UI requests. */
|
|
46
|
+
onEvent(listener: RpcEventListener): () => void;
|
|
47
|
+
/** Respond to an extension UI request emitted through onEvent(). */
|
|
48
|
+
sendExtensionUIResponse(response: RpcExtensionUIResponse): Promise<void>;
|
|
49
|
+
/** Respond to a host-initiated action request emitted through onEvent(). */
|
|
50
|
+
sendHostActionResponse(response: RpcHostActionResponse): Promise<void>;
|
|
51
|
+
/** Advertise client-supported optional protocol features. */
|
|
52
|
+
setClientCapabilities(features: RpcClientCapabilityFeature[]): Promise<void>;
|
|
53
|
+
/** Return host actions currently waiting for client response. */
|
|
54
|
+
getPendingHostActions(): Promise<RpcHostActionRequest[]>;
|
|
55
|
+
/** Send a prompt to the agent. */
|
|
56
|
+
prompt(message: string, images?: ImageContent[], onAccepted?: () => void): Promise<void>;
|
|
57
|
+
/** Queue a steering message to interrupt the agent mid-run. */
|
|
58
|
+
steer(message: string, images?: ImageContent[]): Promise<void>;
|
|
59
|
+
/** Queue a follow-up message to be processed after the agent finishes. */
|
|
60
|
+
followUp(message: string, images?: ImageContent[]): Promise<void>;
|
|
61
|
+
/** Abort current operation. */
|
|
62
|
+
abort(): Promise<void>;
|
|
63
|
+
/** Start a new session, optionally with parent tracking. */
|
|
64
|
+
newSession(parentSession?: string): Promise<{
|
|
65
|
+
cancelled: boolean;
|
|
66
|
+
}>;
|
|
67
|
+
/** Get current session state. */
|
|
68
|
+
getState(): Promise<RpcSessionState>;
|
|
69
|
+
/** Get a UI-ready projected transcript for the active session. */
|
|
70
|
+
getTranscript(options?: {
|
|
71
|
+
limit?: number;
|
|
72
|
+
beforeEntryId?: string;
|
|
73
|
+
}): Promise<RpcTranscriptResponse>;
|
|
74
|
+
/** Get native UI action protocol capabilities. */
|
|
75
|
+
getUiCapabilities(): Promise<UiActionCapabilities>;
|
|
76
|
+
/** Get native UI action descriptors. */
|
|
77
|
+
getUiActions(scope?: UiActionListScope): Promise<UiActionDescriptor[]>;
|
|
78
|
+
/** Get native UI action completions for one argument. */
|
|
79
|
+
getUiActionCompletions(action: string, argument: string, prefix?: string): Promise<UiActionOptionDescriptor[]>;
|
|
80
|
+
/** Invoke a native UI action by id. */
|
|
81
|
+
invokeUiAction(action: string, options?: {
|
|
82
|
+
args?: Record<string, unknown>;
|
|
83
|
+
streamingBehavior?: UiActionInvocationQueueBehavior;
|
|
84
|
+
}): Promise<UiActionInvocationResponse>;
|
|
85
|
+
/** List discovered subagent definitions available to local RPC clients. */
|
|
86
|
+
listSubagents(): Promise<RpcListSubagentsResponse>;
|
|
87
|
+
/** Start a local RPC-managed subagent and send its initial prompt. */
|
|
88
|
+
startSubagent(agent: string, prompt: string): Promise<RpcSubagentStartResponse>;
|
|
89
|
+
/** Abort and dispose a local RPC-managed subagent. */
|
|
90
|
+
abortSubagent(subagentId: string): Promise<void>;
|
|
91
|
+
/** Get state for a local RPC-managed subagent. */
|
|
92
|
+
getSubagentState(subagentId: string): Promise<RpcSessionState>;
|
|
93
|
+
/** Get a transcript projection for a local RPC-managed subagent. */
|
|
94
|
+
getSubagentTranscript(subagentId: string, options?: {
|
|
95
|
+
limit?: number;
|
|
96
|
+
beforeEntryId?: string;
|
|
97
|
+
}): Promise<RpcTranscriptResponse>;
|
|
98
|
+
/** Dispose a local RPC-managed subagent without sending an abort request first. */
|
|
99
|
+
disposeSubagent(subagentId: string): Promise<void>;
|
|
100
|
+
/** Set model by provider and ID. Pass persistDefault: false to change the session's model without rewriting the host's default. */
|
|
101
|
+
setModel(provider: string, modelId: string, options?: {
|
|
102
|
+
persistDefault?: boolean;
|
|
103
|
+
}): Promise<{
|
|
104
|
+
provider: string;
|
|
105
|
+
id: string;
|
|
106
|
+
}>;
|
|
107
|
+
/** Cycle to next model. */
|
|
108
|
+
cycleModel(): Promise<{
|
|
109
|
+
model: {
|
|
110
|
+
provider: string;
|
|
111
|
+
id: string;
|
|
112
|
+
};
|
|
113
|
+
thinkingLevel: ThinkingLevel;
|
|
114
|
+
isScoped: boolean;
|
|
115
|
+
} | null>;
|
|
116
|
+
/** Get list of available models. */
|
|
117
|
+
getAvailableModels(): Promise<ModelInfo[]>;
|
|
118
|
+
/** Set thinking level. Returns the effective (possibly clamped) level. Pass persistDefault: false to skip persisting it as the host default. */
|
|
119
|
+
setThinkingLevel(level: ThinkingLevel, options?: {
|
|
120
|
+
persistDefault?: boolean;
|
|
121
|
+
}): Promise<{
|
|
122
|
+
level: ThinkingLevel;
|
|
123
|
+
}>;
|
|
124
|
+
/** Cycle thinking level. */
|
|
125
|
+
cycleThinkingLevel(): Promise<{
|
|
126
|
+
level: ThinkingLevel;
|
|
127
|
+
} | null>;
|
|
128
|
+
/** Set steering mode. */
|
|
129
|
+
setSteeringMode(mode: "all" | "one-at-a-time"): Promise<void>;
|
|
130
|
+
/** Set follow-up mode. */
|
|
131
|
+
setFollowUpMode(mode: "all" | "one-at-a-time"): Promise<void>;
|
|
132
|
+
/** Compact session context. */
|
|
133
|
+
compact(customInstructions?: string): Promise<CompactionResult>;
|
|
134
|
+
/** Set auto-compaction enabled/disabled. */
|
|
135
|
+
setAutoCompaction(enabled: boolean): Promise<void>;
|
|
136
|
+
/** Set auto-retry enabled/disabled. */
|
|
137
|
+
setAutoRetry(enabled: boolean): Promise<void>;
|
|
138
|
+
/** Abort in-progress retry. */
|
|
139
|
+
abortRetry(): Promise<void>;
|
|
140
|
+
/** Execute a bash command. */
|
|
141
|
+
bash(command: string): Promise<BashResult>;
|
|
142
|
+
/** Abort running bash command. */
|
|
143
|
+
abortBash(): Promise<void>;
|
|
144
|
+
/** Get session statistics. */
|
|
145
|
+
getSessionStats(): Promise<SessionStats>;
|
|
146
|
+
/** List persisted sessions for the current workspace. */
|
|
147
|
+
listSessions(): Promise<RpcSessionListItem[]>;
|
|
148
|
+
/** Export session to HTML. */
|
|
149
|
+
exportHtml(outputPath?: string): Promise<{
|
|
150
|
+
path: string;
|
|
151
|
+
}>;
|
|
152
|
+
/** Switch to a different session file. */
|
|
153
|
+
switchSession(sessionPath: string): Promise<{
|
|
154
|
+
cancelled: boolean;
|
|
155
|
+
}>;
|
|
156
|
+
/** Switch to a workspace session by stable session id. */
|
|
157
|
+
switchSessionById(sessionId: string): Promise<{
|
|
158
|
+
cancelled: boolean;
|
|
159
|
+
}>;
|
|
160
|
+
/** Fork from a specific message. */
|
|
161
|
+
fork(entryId: string): Promise<{
|
|
162
|
+
text: string;
|
|
163
|
+
cancelled: boolean;
|
|
164
|
+
}>;
|
|
165
|
+
/** Clone the current active branch into a new session. */
|
|
166
|
+
clone(): Promise<{
|
|
167
|
+
cancelled: boolean;
|
|
168
|
+
}>;
|
|
169
|
+
/** Get messages available for forking. */
|
|
170
|
+
getForkMessages(): Promise<Array<{
|
|
171
|
+
entryId: string;
|
|
172
|
+
text: string;
|
|
173
|
+
}>>;
|
|
174
|
+
/** Get text of last assistant message. */
|
|
175
|
+
getLastAssistantText(): Promise<string | null>;
|
|
176
|
+
/** Set the session display name. */
|
|
177
|
+
setSessionName(name: string): Promise<void>;
|
|
178
|
+
/** Get all messages in the session. */
|
|
179
|
+
getMessages(): Promise<AgentMessage[]>;
|
|
180
|
+
/** Get available commands. */
|
|
181
|
+
getCommands(): Promise<RpcSlashCommand[]>;
|
|
182
|
+
/**
|
|
183
|
+
* Wait for agent to become idle.
|
|
184
|
+
*
|
|
185
|
+
* Resolves on `agent_settled`, which the host emits after all tracked prompt
|
|
186
|
+
* work, including any agent run, automatic retries, compaction continuations,
|
|
187
|
+
* and queued-message continuations, has finished.
|
|
188
|
+
*/
|
|
189
|
+
waitForIdle(timeout?: number): Promise<void>;
|
|
190
|
+
/** Collect events until the agent settles (`agent_settled`). */
|
|
191
|
+
collectEvents(timeout?: number): Promise<RpcClientEvent[]>;
|
|
192
|
+
/** Send prompt and wait for the run to settle (`agent_settled`), returning all events. */
|
|
193
|
+
promptAndWait(message: string, images?: ImageContent[], timeout?: number): Promise<RpcClientEvent[]>;
|
|
194
|
+
protected handleLine(line: string): void;
|
|
195
|
+
protected assertCanSend(): void;
|
|
196
|
+
protected clearFailureError(): void;
|
|
197
|
+
protected setFailureError(error: Error): void;
|
|
198
|
+
protected rejectPendingRequests(error: Error): void;
|
|
199
|
+
protected getErrorContext(): string | undefined;
|
|
200
|
+
protected abstract writeMessage(message: RpcCommand | RpcExtensionUIResponse | RpcHostActionResponse): void | Promise<void>;
|
|
201
|
+
private sendOneWay;
|
|
202
|
+
private send;
|
|
203
|
+
private handleResponse;
|
|
204
|
+
private failInboundProtocol;
|
|
205
|
+
private getData;
|
|
206
|
+
private emitEvent;
|
|
207
|
+
private formatError;
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=rpc-client-base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-client-base.d.ts","sourceRoot":"","sources":["../../../src/modes/rpc/rpc-client-base.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentMessage, ThinkingLevel } from \"@hansjm10/volt-agent-core\";\nimport type { ImageContent } from \"@hansjm10/volt-ai\";\nimport type { AgentSessionEvent, SessionStats } from \"../../core/agent-session.ts\";\nimport type { BashResult } from \"../../core/bash-executor.ts\";\nimport type { CompactionResult } from \"../../core/compaction/index.ts\";\nimport type { ExtensionError } from \"../../core/extensions/index.ts\";\nimport type { SubagentEvent, SubagentResult } from \"../../core/subagents/index.ts\";\nimport type {\n\tRpcClientCapabilityFeature,\n\tRpcCommand,\n\tRpcExtensionUIRequest,\n\tRpcExtensionUIResponse,\n\tRpcHostActionRequest,\n\tRpcHostActionResponse,\n\tRpcHostActionUpdate,\n\tRpcListSubagentsResponse,\n\tRpcResponse,\n\tRpcSessionListItem,\n\tRpcSessionState,\n\tRpcSlashCommand,\n\tRpcSubagentStartResponse,\n\tRpcTranscriptResponse,\n\tRpcWorkflowEvent,\n\tRpcWorkflowToolEvent,\n\tUiActionCapabilities,\n\tUiActionDescriptor,\n\tUiActionInvocationQueueBehavior,\n\tUiActionInvocationResponse,\n\tUiActionListScope,\n\tUiActionOptionDescriptor,\n} from \"./rpc-types.ts\";\n\n/** Distributive Omit that works with union types. */\ntype DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;\n\n/** RpcCommand without the id field for client call sites. */\ntype RpcCommandBody = DistributiveOmit<RpcCommand, \"id\">;\n\ninterface PendingRpcRequest {\n\tcommand: string;\n\tresolve(response: RpcResponse): void;\n\treject(error: Error): void;\n}\n\ntype InboundRpcMessage = Record<string, unknown> & { type: string };\n\nexport interface RpcClientBaseOptions {\n\t/** Milliseconds to wait for a command response. Defaults to 30 seconds. */\n\trequestTimeoutMs?: number;\n}\n\nexport interface ModelInfo {\n\tprovider: string;\n\tid: string;\n\tcontextWindow: number;\n\treasoning: boolean;\n}\n\nexport type RpcExtensionErrorEvent = { type: \"extension_error\" } & ExtensionError;\nexport type RpcSubagentEvent = { type: \"subagent_event\"; subagentId: string; event: SubagentEvent };\nexport type RpcSubagentEndEvent = { type: \"subagent_end\"; subagentId: string; result: SubagentResult };\n/** Emitted when the host's available model catalog changed on disk (login, logout, or API key save). */\nexport type RpcModelsChangedEvent = { type: \"models_changed\" };\nexport type RpcClientEvent =\n\t| AgentSessionEvent\n\t| RpcModelsChangedEvent\n\t| RpcWorkflowEvent\n\t| RpcWorkflowToolEvent\n\t| RpcExtensionUIRequest\n\t| RpcHostActionRequest\n\t| RpcHostActionUpdate\n\t| RpcSubagentEvent\n\t| RpcSubagentEndEvent\n\t| RpcExtensionErrorEvent;\nexport type RpcEventListener = (event: RpcClientEvent) => void;\n\nconst MALFORMED_RPC_LINE_PREVIEW_CHARS = 200;\n\nexport abstract class RpcClientBase {\n\tprivate readonly requestTimeoutMs: number;\n\tprivate readonly eventListeners: RpcEventListener[] = [];\n\tprivate readonly pendingRequests = new Map<string, PendingRpcRequest>();\n\tprivate requestId = 0;\n\tprivate failureError: Error | null = null;\n\n\tconstructor(options: RpcClientBaseOptions = {}) {\n\t\tthis.requestTimeoutMs = options.requestTimeoutMs ?? 30_000;\n\t}\n\n\t/** Subscribe to RPC events and extension UI requests. */\n\tonEvent(listener: RpcEventListener): () => void {\n\t\tthis.eventListeners.push(listener);\n\t\treturn () => {\n\t\t\tconst index = this.eventListeners.indexOf(listener);\n\t\t\tif (index !== -1) {\n\t\t\t\tthis.eventListeners.splice(index, 1);\n\t\t\t}\n\t\t};\n\t}\n\n\t/** Respond to an extension UI request emitted through onEvent(). */\n\tasync sendExtensionUIResponse(response: RpcExtensionUIResponse): Promise<void> {\n\t\tawait this.sendOneWay(response);\n\t}\n\n\t/** Respond to a host-initiated action request emitted through onEvent(). */\n\tasync sendHostActionResponse(response: RpcHostActionResponse): Promise<void> {\n\t\tawait this.sendOneWay(response);\n\t}\n\n\t/** Advertise client-supported optional protocol features. */\n\tasync setClientCapabilities(features: RpcClientCapabilityFeature[]): Promise<void> {\n\t\tawait this.send({ type: \"set_client_capabilities\", features });\n\t}\n\n\t/** Return host actions currently waiting for client response. */\n\tasync getPendingHostActions(): Promise<RpcHostActionRequest[]> {\n\t\tconst response = await this.send({ type: \"get_pending_host_actions\" });\n\t\treturn this.getData<{ actions: RpcHostActionRequest[] }>(response).actions;\n\t}\n\n\t/** Send a prompt to the agent. */\n\tasync prompt(message: string, images?: ImageContent[], onAccepted?: () => void): Promise<void> {\n\t\tawait this.send({ type: \"prompt\", message, images }, onAccepted);\n\t}\n\n\t/** Queue a steering message to interrupt the agent mid-run. */\n\tasync steer(message: string, images?: ImageContent[]): Promise<void> {\n\t\tawait this.send({ type: \"steer\", message, images });\n\t}\n\n\t/** Queue a follow-up message to be processed after the agent finishes. */\n\tasync followUp(message: string, images?: ImageContent[]): Promise<void> {\n\t\tawait this.send({ type: \"follow_up\", message, images });\n\t}\n\n\t/** Abort current operation. */\n\tasync abort(): Promise<void> {\n\t\tawait this.send({ type: \"abort\" });\n\t}\n\n\t/** Start a new session, optionally with parent tracking. */\n\tasync newSession(parentSession?: string): Promise<{ cancelled: boolean }> {\n\t\tconst response = await this.send({ type: \"new_session\", parentSession });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Get current session state. */\n\tasync getState(): Promise<RpcSessionState> {\n\t\tconst response = await this.send({ type: \"get_state\" });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Get a UI-ready projected transcript for the active session. */\n\tasync getTranscript(options: { limit?: number; beforeEntryId?: string } = {}): Promise<RpcTranscriptResponse> {\n\t\tconst response = await this.send({\n\t\t\ttype: \"get_transcript\",\n\t\t\tlimit: options.limit,\n\t\t\tbeforeEntryId: options.beforeEntryId,\n\t\t});\n\t\treturn this.getData(response);\n\t}\n\n\t/** Get native UI action protocol capabilities. */\n\tasync getUiCapabilities(): Promise<UiActionCapabilities> {\n\t\tconst response = await this.send({ type: \"get_ui_capabilities\" });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Get native UI action descriptors. */\n\tasync getUiActions(scope?: UiActionListScope): Promise<UiActionDescriptor[]> {\n\t\tconst response = await this.send({ type: \"get_ui_actions\", scope });\n\t\treturn this.getData<{ actions: UiActionDescriptor[] }>(response).actions;\n\t}\n\n\t/** Get native UI action completions for one argument. */\n\tasync getUiActionCompletions(\n\t\taction: string,\n\t\targument: string,\n\t\tprefix?: string,\n\t): Promise<UiActionOptionDescriptor[]> {\n\t\tconst response = await this.send({ type: \"get_ui_action_completions\", action, argument, prefix });\n\t\treturn this.getData<{ completions: UiActionOptionDescriptor[] }>(response).completions;\n\t}\n\n\t/** Invoke a native UI action by id. */\n\tasync invokeUiAction(\n\t\taction: string,\n\t\toptions: { args?: Record<string, unknown>; streamingBehavior?: UiActionInvocationQueueBehavior } = {},\n\t): Promise<UiActionInvocationResponse> {\n\t\tconst response = await this.send({\n\t\t\ttype: \"invoke_ui_action\",\n\t\t\taction,\n\t\t\targs: options.args,\n\t\t\tstreamingBehavior: options.streamingBehavior,\n\t\t});\n\t\treturn this.getData(response);\n\t}\n\n\t/** List discovered subagent definitions available to local RPC clients. */\n\tasync listSubagents(): Promise<RpcListSubagentsResponse> {\n\t\tconst response = await this.send({ type: \"list_subagents\" });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Start a local RPC-managed subagent and send its initial prompt. */\n\tasync startSubagent(agent: string, prompt: string): Promise<RpcSubagentStartResponse> {\n\t\tconst response = await this.send({ type: \"subagent_start\", agent, prompt });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Abort and dispose a local RPC-managed subagent. */\n\tasync abortSubagent(subagentId: string): Promise<void> {\n\t\tawait this.send({ type: \"subagent_abort\", subagentId });\n\t}\n\n\t/** Get state for a local RPC-managed subagent. */\n\tasync getSubagentState(subagentId: string): Promise<RpcSessionState> {\n\t\tconst response = await this.send({ type: \"subagent_get_state\", subagentId });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Get a transcript projection for a local RPC-managed subagent. */\n\tasync getSubagentTranscript(\n\t\tsubagentId: string,\n\t\toptions: { limit?: number; beforeEntryId?: string } = {},\n\t): Promise<RpcTranscriptResponse> {\n\t\tconst response = await this.send({\n\t\t\ttype: \"subagent_get_transcript\",\n\t\t\tsubagentId,\n\t\t\tlimit: options.limit,\n\t\t\tbeforeEntryId: options.beforeEntryId,\n\t\t});\n\t\treturn this.getData(response);\n\t}\n\n\t/** Dispose a local RPC-managed subagent without sending an abort request first. */\n\tasync disposeSubagent(subagentId: string): Promise<void> {\n\t\tawait this.send({ type: \"subagent_dispose\", subagentId });\n\t}\n\n\t/** Set model by provider and ID. Pass persistDefault: false to change the session's model without rewriting the host's default. */\n\tasync setModel(\n\t\tprovider: string,\n\t\tmodelId: string,\n\t\toptions?: { persistDefault?: boolean },\n\t): Promise<{ provider: string; id: string }> {\n\t\tconst response = await this.send({\n\t\t\ttype: \"set_model\",\n\t\t\tprovider,\n\t\t\tmodelId,\n\t\t\tpersistDefault: options?.persistDefault,\n\t\t});\n\t\treturn this.getData(response);\n\t}\n\n\t/** Cycle to next model. */\n\tasync cycleModel(): Promise<{\n\t\tmodel: { provider: string; id: string };\n\t\tthinkingLevel: ThinkingLevel;\n\t\tisScoped: boolean;\n\t} | null> {\n\t\tconst response = await this.send({ type: \"cycle_model\" });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Get list of available models. */\n\tasync getAvailableModels(): Promise<ModelInfo[]> {\n\t\tconst response = await this.send({ type: \"get_available_models\" });\n\t\treturn this.getData<{ models: ModelInfo[] }>(response).models;\n\t}\n\n\t/** Set thinking level. Returns the effective (possibly clamped) level. Pass persistDefault: false to skip persisting it as the host default. */\n\tasync setThinkingLevel(\n\t\tlevel: ThinkingLevel,\n\t\toptions?: { persistDefault?: boolean },\n\t): Promise<{ level: ThinkingLevel }> {\n\t\tconst response = await this.send({ type: \"set_thinking_level\", level, persistDefault: options?.persistDefault });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Cycle thinking level. */\n\tasync cycleThinkingLevel(): Promise<{ level: ThinkingLevel } | null> {\n\t\tconst response = await this.send({ type: \"cycle_thinking_level\" });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Set steering mode. */\n\tasync setSteeringMode(mode: \"all\" | \"one-at-a-time\"): Promise<void> {\n\t\tawait this.send({ type: \"set_steering_mode\", mode });\n\t}\n\n\t/** Set follow-up mode. */\n\tasync setFollowUpMode(mode: \"all\" | \"one-at-a-time\"): Promise<void> {\n\t\tawait this.send({ type: \"set_follow_up_mode\", mode });\n\t}\n\n\t/** Compact session context. */\n\tasync compact(customInstructions?: string): Promise<CompactionResult> {\n\t\tconst response = await this.send({ type: \"compact\", customInstructions });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Set auto-compaction enabled/disabled. */\n\tasync setAutoCompaction(enabled: boolean): Promise<void> {\n\t\tawait this.send({ type: \"set_auto_compaction\", enabled });\n\t}\n\n\t/** Set auto-retry enabled/disabled. */\n\tasync setAutoRetry(enabled: boolean): Promise<void> {\n\t\tawait this.send({ type: \"set_auto_retry\", enabled });\n\t}\n\n\t/** Abort in-progress retry. */\n\tasync abortRetry(): Promise<void> {\n\t\tawait this.send({ type: \"abort_retry\" });\n\t}\n\n\t/** Execute a bash command. */\n\tasync bash(command: string): Promise<BashResult> {\n\t\tconst response = await this.send({ type: \"bash\", command });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Abort running bash command. */\n\tasync abortBash(): Promise<void> {\n\t\tawait this.send({ type: \"abort_bash\" });\n\t}\n\n\t/** Get session statistics. */\n\tasync getSessionStats(): Promise<SessionStats> {\n\t\tconst response = await this.send({ type: \"get_session_stats\" });\n\t\treturn this.getData(response);\n\t}\n\n\t/** List persisted sessions for the current workspace. */\n\tasync listSessions(): Promise<RpcSessionListItem[]> {\n\t\tconst response = await this.send({ type: \"list_sessions\" });\n\t\treturn this.getData<{ sessions: RpcSessionListItem[] }>(response).sessions;\n\t}\n\n\t/** Export session to HTML. */\n\tasync exportHtml(outputPath?: string): Promise<{ path: string }> {\n\t\tconst response = await this.send({ type: \"export_html\", outputPath });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Switch to a different session file. */\n\tasync switchSession(sessionPath: string): Promise<{ cancelled: boolean }> {\n\t\tconst response = await this.send({ type: \"switch_session\", sessionPath });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Switch to a workspace session by stable session id. */\n\tasync switchSessionById(sessionId: string): Promise<{ cancelled: boolean }> {\n\t\tconst response = await this.send({ type: \"switch_session_by_id\", sessionId });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Fork from a specific message. */\n\tasync fork(entryId: string): Promise<{ text: string; cancelled: boolean }> {\n\t\tconst response = await this.send({ type: \"fork\", entryId });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Clone the current active branch into a new session. */\n\tasync clone(): Promise<{ cancelled: boolean }> {\n\t\tconst response = await this.send({ type: \"clone\" });\n\t\treturn this.getData(response);\n\t}\n\n\t/** Get messages available for forking. */\n\tasync getForkMessages(): Promise<Array<{ entryId: string; text: string }>> {\n\t\tconst response = await this.send({ type: \"get_fork_messages\" });\n\t\treturn this.getData<{ messages: Array<{ entryId: string; text: string }> }>(response).messages;\n\t}\n\n\t/** Get text of last assistant message. */\n\tasync getLastAssistantText(): Promise<string | null> {\n\t\tconst response = await this.send({ type: \"get_last_assistant_text\" });\n\t\treturn this.getData<{ text: string | null }>(response).text;\n\t}\n\n\t/** Set the session display name. */\n\tasync setSessionName(name: string): Promise<void> {\n\t\tawait this.send({ type: \"set_session_name\", name });\n\t}\n\n\t/** Get all messages in the session. */\n\tasync getMessages(): Promise<AgentMessage[]> {\n\t\tconst response = await this.send({ type: \"get_messages\" });\n\t\treturn this.getData<{ messages: AgentMessage[] }>(response).messages;\n\t}\n\n\t/** Get available commands. */\n\tasync getCommands(): Promise<RpcSlashCommand[]> {\n\t\tconst response = await this.send({ type: \"get_commands\" });\n\t\treturn this.getData<{ commands: RpcSlashCommand[] }>(response).commands;\n\t}\n\n\t/**\n\t * Wait for agent to become idle.\n\t *\n\t * Resolves on `agent_settled`, which the host emits after all tracked prompt\n\t * work, including any agent run, automatic retries, compaction continuations,\n\t * and queued-message continuations, has finished.\n\t */\n\twaitForIdle(timeout = 60_000): Promise<void> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet settled = false;\n\t\t\tlet unsubscribe = (): void => {};\n\t\t\tconst finish = (error?: Error): void => {\n\t\t\t\tif (settled) return;\n\t\t\t\tsettled = true;\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tunsubscribe();\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tfinish(new Error(this.formatError(\"Timeout waiting for agent to become idle\")));\n\t\t\t}, timeout);\n\n\t\t\tunsubscribe = this.onEvent((event) => {\n\t\t\t\tif (event.type === \"agent_settled\") {\n\t\t\t\t\tfinish();\n\t\t\t\t}\n\t\t\t});\n\t\t\t// Subscribe before querying state so settlement cannot be lost between\n\t\t\t// the idle snapshot and listener installation.\n\t\t\tvoid this.getState().then(\n\t\t\t\t(state) => {\n\t\t\t\t\tif (!(state.isBusy ?? state.isStreaming)) finish();\n\t\t\t\t},\n\t\t\t\t(error: unknown) => finish(toError(error)),\n\t\t\t);\n\t\t});\n\t}\n\n\t/** Collect events until the agent settles (`agent_settled`). */\n\tcollectEvents(timeout = 60_000): Promise<RpcClientEvent[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst events: RpcClientEvent[] = [];\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tunsubscribe();\n\t\t\t\treject(new Error(this.formatError(\"Timeout collecting events\")));\n\t\t\t}, timeout);\n\n\t\t\tconst unsubscribe = this.onEvent((event) => {\n\t\t\t\tevents.push(event);\n\t\t\t\tif (event.type === \"agent_settled\") {\n\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\tunsubscribe();\n\t\t\t\t\tresolve(events);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/** Send prompt and wait for the run to settle (`agent_settled`), returning all events. */\n\tasync promptAndWait(message: string, images?: ImageContent[], timeout = 60_000): Promise<RpcClientEvent[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst events: RpcClientEvent[] = [];\n\t\t\tlet agentSettled = false;\n\t\t\tlet promptAccepted = false;\n\t\t\tlet settled = false;\n\t\t\tlet unsubscribe = (): void => {};\n\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tif (settled) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsettled = true;\n\t\t\t\tunsubscribe();\n\t\t\t\treject(new Error(this.formatError(\"Timeout collecting events\")));\n\t\t\t}, timeout);\n\n\t\t\tconst cleanup = (): void => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tunsubscribe();\n\t\t\t};\n\n\t\t\tconst rejectAndCleanup = (error: unknown): void => {\n\t\t\t\tif (settled) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsettled = true;\n\t\t\t\tcleanup();\n\t\t\t\treject(toError(error));\n\t\t\t};\n\n\t\t\tconst resolveIfComplete = (): void => {\n\t\t\t\tif (settled || !agentSettled || !promptAccepted) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsettled = true;\n\t\t\t\tcleanup();\n\t\t\t\tresolve(events);\n\t\t\t};\n\n\t\t\tunsubscribe = this.onEvent((event) => {\n\t\t\t\tevents.push(event);\n\t\t\t\t// Settlement predating this prompt's success response belongs to older\n\t\t\t\t// work and must not complete this request.\n\t\t\t\tif (event.type === \"agent_settled\" && promptAccepted) {\n\t\t\t\t\tagentSettled = true;\n\t\t\t\t\tresolveIfComplete();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvoid this.send({ type: \"prompt\", message, images }, () => {\n\t\t\t\tpromptAccepted = true;\n\t\t\t\tresolveIfComplete();\n\t\t\t}).catch(rejectAndCleanup);\n\t\t});\n\t}\n\n\tprotected handleLine(line: string): void {\n\t\tif (this.failureError) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet data: unknown;\n\t\ttry {\n\t\t\tdata = JSON.parse(line);\n\t\t} catch (error: unknown) {\n\t\t\tconst failureError = new Error(\n\t\t\t\tthis.formatError(\n\t\t\t\t\t`Malformed inbound RPC JSON: ${toError(error).message}. Bad line preview: ${formatLinePreview(line)}`,\n\t\t\t\t),\n\t\t\t);\n\t\t\tthis.setFailureError(failureError);\n\t\t\tthis.rejectPendingRequests(failureError);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!isInboundRpcMessage(data)) {\n\t\t\tthis.failInboundProtocol(\"Invalid inbound RPC message: expected object with string type\", line);\n\t\t\treturn;\n\t\t}\n\n\t\tif (data.type === \"response\") {\n\t\t\tthis.handleResponse(data, line);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.emitEvent(data as RpcClientEvent);\n\t}\n\n\tprotected assertCanSend(): void {\n\t\tif (this.failureError) {\n\t\t\tthrow this.failureError;\n\t\t}\n\t}\n\n\tprotected clearFailureError(): void {\n\t\tthis.failureError = null;\n\t}\n\n\tprotected setFailureError(error: Error): void {\n\t\tthis.failureError = error;\n\t}\n\n\tprotected rejectPendingRequests(error: Error): void {\n\t\tfor (const pending of this.pendingRequests.values()) {\n\t\t\tpending.reject(error);\n\t\t}\n\t\tthis.pendingRequests.clear();\n\t}\n\n\tprotected getErrorContext(): string | undefined {\n\t\treturn undefined;\n\t}\n\n\tprotected abstract writeMessage(\n\t\tmessage: RpcCommand | RpcExtensionUIResponse | RpcHostActionResponse,\n\t): void | Promise<void>;\n\n\tprivate async sendOneWay(message: RpcExtensionUIResponse | RpcHostActionResponse): Promise<void> {\n\t\tthis.assertCanSend();\n\t\ttry {\n\t\t\tawait this.writeMessage(message);\n\t\t} catch (error: unknown) {\n\t\t\tthrow toError(error);\n\t\t}\n\t}\n\n\tprivate async send(command: RpcCommandBody, onSuccessResponse?: () => void): Promise<RpcResponse> {\n\t\tthis.assertCanSend();\n\n\t\tconst id = `req_${++this.requestId}`;\n\t\tconst fullCommand = { ...command, id } as RpcCommand;\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst timeout = setTimeout(() => {\n\t\t\t\tthis.pendingRequests.delete(id);\n\t\t\t\treject(new Error(this.formatError(`Timeout waiting for response to ${command.type}`)));\n\t\t\t}, this.requestTimeoutMs);\n\n\t\t\tconst rejectRequest = (error: Error): void => {\n\t\t\t\tclearTimeout(timeout);\n\t\t\t\tthis.pendingRequests.delete(id);\n\t\t\t\treject(error);\n\t\t\t};\n\n\t\t\tthis.pendingRequests.set(id, {\n\t\t\t\tcommand: command.type,\n\t\t\t\tresolve: (response) => {\n\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\tif (!response.success) {\n\t\t\t\t\t\treject(new Error(response.error));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\ttry {\n\t\t\t\t\t\tonSuccessResponse?.();\n\t\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\t\treject(toError(error));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tresolve(response);\n\t\t\t\t},\n\t\t\t\treject: rejectRequest,\n\t\t\t});\n\n\t\t\ttry {\n\t\t\t\tconst writeResult = this.writeMessage(fullCommand);\n\t\t\t\tif (writeResult) {\n\t\t\t\t\tvoid Promise.resolve(writeResult).catch((error: unknown) => {\n\t\t\t\t\t\trejectRequest(toError(error));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} catch (error: unknown) {\n\t\t\t\trejectRequest(toError(error));\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate handleResponse(response: InboundRpcMessage, line: string): void {\n\t\t// Responses are reserved protocol messages. Missing, malformed, or\n\t\t// unrecognized correlation ids fail the client instead of reaching event\n\t\t// listeners as ordinary events.\n\t\tif (typeof response.id !== \"string\") {\n\t\t\tthis.failInboundProtocol(\"Invalid inbound RPC response: expected string id\", line);\n\t\t\treturn;\n\t\t}\n\t\tif (typeof response.command !== \"string\") {\n\t\t\tthis.failInboundProtocol(\"Invalid inbound RPC response: expected string command\", line);\n\t\t\treturn;\n\t\t}\n\t\tif (typeof response.success !== \"boolean\") {\n\t\t\tthis.failInboundProtocol(\"Invalid inbound RPC response: expected boolean success\", line);\n\t\t\treturn;\n\t\t}\n\t\tif (response.success === false && typeof response.error !== \"string\") {\n\t\t\tthis.failInboundProtocol(\"Invalid inbound RPC response: expected string error\", line);\n\t\t\treturn;\n\t\t}\n\n\t\tconst pending = this.pendingRequests.get(response.id);\n\t\tif (!pending) {\n\t\t\tthis.failInboundProtocol(`Invalid inbound RPC response: unknown id ${JSON.stringify(response.id)}`, line);\n\t\t\treturn;\n\t\t}\n\n\t\tif (response.command !== pending.command) {\n\t\t\tthis.failInboundProtocol(\n\t\t\t\t`Invalid inbound RPC response: command ${JSON.stringify(response.command)} does not match request ${JSON.stringify(pending.command)}`,\n\t\t\t\tline,\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.pendingRequests.delete(response.id);\n\t\tpending.resolve(response as RpcResponse);\n\t}\n\n\tprivate failInboundProtocol(message: string, line: string): void {\n\t\tconst failureError = new Error(this.formatError(`${message}. Bad line preview: ${formatLinePreview(line)}`));\n\t\tthis.setFailureError(failureError);\n\t\tthis.rejectPendingRequests(failureError);\n\t}\n\n\tprivate getData<T>(response: RpcResponse): T {\n\t\tif (!response.success) {\n\t\t\tconst errorResponse = response as Extract<RpcResponse, { success: false }>;\n\t\t\tthrow new Error(errorResponse.error);\n\t\t}\n\t\tconst successResponse = response as Extract<RpcResponse, { success: true; data: unknown }>;\n\t\treturn successResponse.data as T;\n\t}\n\n\tprivate emitEvent(event: RpcClientEvent): void {\n\t\tfor (const listener of this.eventListeners) {\n\t\t\tlistener(event);\n\t\t}\n\t}\n\n\tprivate formatError(message: string): string {\n\t\tconst context = this.getErrorContext();\n\t\treturn context ? `${message}. ${context}` : message;\n\t}\n}\n\nfunction isInboundRpcMessage(value: unknown): value is InboundRpcMessage {\n\treturn isRecord(value) && typeof value.type === \"string\";\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction toError(value: unknown): Error {\n\treturn value instanceof Error ? value : new Error(String(value));\n}\n\nfunction formatLinePreview(line: string): string {\n\tconst preview = JSON.stringify(line.slice(0, MALFORMED_RPC_LINE_PREVIEW_CHARS));\n\treturn line.length > MALFORMED_RPC_LINE_PREVIEW_CHARS ? `${preview}… (${line.length} chars)` : preview;\n}\n"]}
|