@bastani/atomic 0.9.19-alpha.1 → 0.9.19-alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +206 -0
- package/README.md +2 -2
- package/dist/builtin/intercom/CHANGELOG.md +51 -0
- package/dist/builtin/intercom/README.md +28 -18
- package/dist/builtin/intercom/broker/broker.ts +81 -9
- package/dist/builtin/intercom/broker/client.ts +45 -1
- package/dist/builtin/intercom/broker/framing.ts +5 -2
- package/dist/builtin/intercom/broker/group-membership.ts +4 -2
- package/dist/builtin/intercom/broker/presence-handler.ts +14 -0
- package/dist/builtin/intercom/broker/send-handler.ts +61 -6
- package/dist/builtin/intercom/broker/terminal-questions.ts +29 -0
- package/dist/builtin/intercom/index.bundle.mjs +1120 -783
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/intercom/recipient-purpose.ts +9 -0
- package/dist/builtin/intercom/recoverable-disconnect.ts +2 -3
- package/dist/builtin/intercom/retry-policy.ts +4 -2
- package/dist/builtin/intercom/skills/intercom/SKILL.md +8 -7
- package/dist/builtin/intercom/types.ts +18 -3
- package/dist/builtin/mcp/CHANGELOG.md +6 -0
- package/dist/builtin/mcp/README.md +2 -0
- package/dist/builtin/mcp/index.bundle.mjs +2201 -12000
- package/dist/builtin/mcp/package.json +2 -2
- package/dist/builtin/subagents/CHANGELOG.md +57 -0
- package/dist/builtin/subagents/README.md +46 -23
- package/dist/builtin/subagents/agents/code-simplifier.md +1 -1
- package/dist/builtin/subagents/agents/codebase-analyzer.md +1 -1
- package/dist/builtin/subagents/agents/codebase-locator.md +2 -2
- package/dist/builtin/subagents/agents/codebase-online-researcher.md +8 -8
- package/dist/builtin/subagents/agents/codebase-pattern-finder.md +2 -2
- package/dist/builtin/subagents/agents/codebase-research-analyzer.md +1 -1
- package/dist/builtin/subagents/agents/codebase-research-locator.md +2 -2
- package/dist/builtin/subagents/agents/debugger.md +2 -2
- package/dist/builtin/subagents/agents/worker.md +1 -1
- package/dist/builtin/subagents/package.json +2 -2
- package/dist/builtin/subagents/skills/herdr/LICENSE +201 -0
- package/dist/builtin/subagents/skills/herdr/SKILL.md +202 -0
- package/dist/builtin/subagents/skills/subagent/SKILL.md +41 -35
- package/dist/builtin/subagents/skills/tmux/SKILL.md +1 -1
- package/dist/builtin/subagents/src/extension/index.bundle.mjs +1414 -656
- package/dist/builtin/web-access/CHANGELOG.md +19 -0
- package/dist/builtin/web-access/README.md +31 -24
- package/dist/builtin/web-access/index.bundle.mjs +42723 -26674
- package/dist/builtin/web-access/package.json +3 -2
- package/dist/builtin/workflows/CHANGELOG.md +127 -0
- package/dist/builtin/workflows/README.md +15 -16
- package/dist/builtin/workflows/builtin/adversarial-verification.js +5 -7
- package/dist/builtin/workflows/builtin/{chunk-hqpe2cyx.js → chunk-1jth021m.js} +85 -85
- package/dist/builtin/workflows/builtin/{chunk-7430zyas.js → chunk-2377r57g.js} +5 -3
- package/dist/builtin/workflows/builtin/{chunk-79fjkcvh.js → chunk-31j2gs7h.js} +18 -18
- package/dist/builtin/workflows/builtin/{chunk-wgccch41.js → chunk-6w6cvk6b.js} +16 -16
- package/dist/builtin/workflows/builtin/{chunk-zbekjqew.js → chunk-a2kdsqn8.js} +4 -4
- package/dist/builtin/workflows/builtin/{chunk-ze5x3d1r.js → chunk-fg9esgkj.js} +7 -7
- package/dist/builtin/workflows/builtin/{chunk-n8h4yyew.js → chunk-g0csgs7w.js} +11 -11
- package/dist/builtin/workflows/builtin/{chunk-b0v2xab1.js → chunk-ngkqkzej.js} +221 -23
- package/dist/builtin/workflows/builtin/{chunk-ed4jfn5t.js → chunk-nkrafh9s.js} +61 -61
- package/dist/builtin/workflows/builtin/{chunk-reqr3sr3.js → chunk-wf741bv3.js} +22 -22
- package/dist/builtin/workflows/builtin/{chunk-42s7sw0b.js → chunk-yeee2jrc.js} +19 -19
- package/dist/builtin/workflows/builtin/{chunk-6fqs7c01.js → chunk-z0d03ktm.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-k3w87x8y.js → chunk-z29qbehr.js} +10 -10
- package/dist/builtin/workflows/builtin/classify-and-act.js +5 -6
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize.js +3 -4
- package/dist/builtin/workflows/builtin/generate-and-filter.js +5 -6
- package/dist/builtin/workflows/builtin/goal.js +7 -8
- package/dist/builtin/workflows/builtin/index.js +20 -22
- package/dist/builtin/workflows/builtin/loop-until-done.js +5 -6
- package/dist/builtin/workflows/builtin/open-claude-design.js +3 -3
- package/dist/builtin/workflows/builtin/ralph.js +7 -8
- package/dist/builtin/workflows/builtin/steering-context.js +3 -3
- package/dist/builtin/workflows/builtin/tournament.js +5 -7
- package/dist/builtin/workflows/package.json +6 -6
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +27782 -26348
- package/dist/builtin/workflows/src/index.js +1103 -515
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +4 -1
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +1 -1
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/startup-ui.d.ts +1 -1
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-auto-compaction.js +6 -5
- package/dist/core/agent-session-auto-compaction.js.map +1 -1
- package/dist/core/agent-session-bash.d.ts +1 -1
- package/dist/core/agent-session-bash.d.ts.map +1 -1
- package/dist/core/agent-session-bash.js +5 -1
- package/dist/core/agent-session-bash.js.map +1 -1
- package/dist/core/agent-session-compaction.d.ts +1 -1
- package/dist/core/agent-session-compaction.js +1 -1
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-custom-message-commit.d.ts +1 -1
- package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -1
- package/dist/core/agent-session-custom-message-commit.js +33 -2
- package/dist/core/agent-session-custom-message-commit.js.map +1 -1
- package/dist/core/agent-session-delivery-forwarding.d.ts +1 -1
- package/dist/core/agent-session-delivery-forwarding.js.map +1 -1
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-events.js +5 -0
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-export.d.ts +1 -1
- package/dist/core/agent-session-export.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts +8 -1
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +45 -3
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-message-queue.d.ts +2 -2
- package/dist/core/agent-session-message-queue.d.ts.map +1 -1
- package/dist/core/agent-session-message-queue.js +22 -8
- package/dist/core/agent-session-message-queue.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +21 -8
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.d.ts +1 -1
- package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -1
- package/dist/core/agent-session-persistent-custom-messages.js +13 -3
- package/dist/core/agent-session-persistent-custom-messages.js.map +1 -1
- package/dist/core/agent-session-post-tool-compaction.js +1 -1
- package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts +2 -2
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +105 -18
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-queue-pause.d.ts.map +1 -1
- package/dist/core/agent-session-queue-pause.js +11 -0
- package/dist/core/agent-session-queue-pause.js.map +1 -1
- package/dist/core/agent-session-runtime-auth.d.ts +1 -1
- package/dist/core/agent-session-runtime-auth.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts +13 -4
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +27 -4
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +5 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +44 -34
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session-state.d.ts +1 -1
- package/dist/core/agent-session-state.js.map +1 -1
- package/dist/core/agent-session-tasks.d.ts +14 -0
- package/dist/core/agent-session-tasks.d.ts.map +1 -0
- package/dist/core/agent-session-tasks.js +120 -0
- package/dist/core/agent-session-tasks.js.map +1 -0
- package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
- package/dist/core/agent-session-tool-hooks.js +2 -0
- package/dist/core/agent-session-tool-hooks.js.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts +1 -0
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +52 -5
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-transfer.d.ts.map +1 -1
- package/dist/core/agent-session-transfer.js +7 -0
- package/dist/core/agent-session-transfer.js.map +1 -1
- package/dist/core/agent-session-tree.d.ts.map +1 -1
- package/dist/core/agent-session-tree.js +3 -0
- package/dist/core/agent-session-tree.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +4 -2
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js +2 -0
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +8 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +29 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/bash-executor.d.ts +1 -1
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/export-html/tool-renderer.d.ts +1 -1
- package/dist/core/export-html/tool-renderer.js.map +1 -1
- package/dist/core/extension-session-state.js.map +1 -1
- package/dist/core/extensions/agent-events.d.ts +4 -4
- package/dist/core/extensions/agent-events.d.ts.map +1 -1
- package/dist/core/extensions/agent-events.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +10 -2
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +15 -0
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/event-results.d.ts +1 -1
- package/dist/core/extensions/event-results.js.map +1 -1
- package/dist/core/extensions/event-types.d.ts +2 -1
- package/dist/core/extensions/event-types.d.ts.map +1 -1
- package/dist/core/extensions/event-types.js.map +1 -1
- package/dist/core/extensions/index.d.ts +3 -2
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-api.d.ts +1 -1
- package/dist/core/extensions/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +10 -0
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-core.d.ts +1 -1
- package/dist/core/extensions/loader-core.js.map +1 -1
- package/dist/core/extensions/loader-discovery.d.ts +1 -1
- package/dist/core/extensions/loader-discovery.js.map +1 -1
- package/dist/core/extensions/loader-host-modules.d.ts +1 -1
- package/dist/core/extensions/loader-host-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-host-modules.js +5 -2
- package/dist/core/extensions/loader-host-modules.js.map +1 -1
- package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
- package/dist/core/extensions/loader-runtime.js +3 -0
- package/dist/core/extensions/loader-runtime.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +6 -1
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +1 -1
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/message-types.d.ts +1 -1
- package/dist/core/extensions/message-types.js.map +1 -1
- package/dist/core/extensions/reactive-widget.d.ts +6 -0
- package/dist/core/extensions/reactive-widget.d.ts.map +1 -1
- package/dist/core/extensions/reactive-widget.js +7 -1
- package/dist/core/extensions/reactive-widget.js.map +1 -1
- package/dist/core/extensions/runner-context.d.ts +12 -2
- package/dist/core/extensions/runner-context.d.ts.map +1 -1
- package/dist/core/extensions/runner-context.js +49 -4
- package/dist/core/extensions/runner-context.js.map +1 -1
- package/dist/core/extensions/runner-events.d.ts +1 -1
- package/dist/core/extensions/runner-events.d.ts.map +1 -1
- package/dist/core/extensions/runner-events.js +17 -2
- package/dist/core/extensions/runner-events.js.map +1 -1
- package/dist/core/extensions/runner-shortcuts.d.ts.map +1 -1
- package/dist/core/extensions/runner-shortcuts.js +32 -3
- package/dist/core/extensions/runner-shortcuts.js.map +1 -1
- package/dist/core/extensions/runner-ui.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +17 -2
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +69 -19
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +8 -1
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/tool-types.d.ts +1 -1
- package/dist/core/extensions/tool-types.js.map +1 -1
- package/dist/core/extensions/types.d.ts +1 -0
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/extensions/ui-types.d.ts +25 -1
- package/dist/core/extensions/ui-types.d.ts.map +1 -1
- package/dist/core/extensions/ui-types.js.map +1 -1
- package/dist/core/extensions/workflow-activity-hub.d.ts +25 -0
- package/dist/core/extensions/workflow-activity-hub.d.ts.map +1 -0
- package/dist/core/extensions/workflow-activity-hub.js +183 -0
- package/dist/core/extensions/workflow-activity-hub.js.map +1 -0
- package/dist/core/extensions/workflow-events.d.ts +118 -0
- package/dist/core/extensions/workflow-events.d.ts.map +1 -0
- package/dist/core/extensions/workflow-events.js +2 -0
- package/dist/core/extensions/workflow-events.js.map +1 -0
- package/dist/core/footer-data-provider.d.ts +8 -4
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +97 -11
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/index.d.ts +3 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/keybinding-identity.d.ts +4 -0
- package/dist/core/keybinding-identity.d.ts.map +1 -0
- package/dist/core/keybinding-identity.js +10 -0
- package/dist/core/keybinding-identity.js.map +1 -0
- package/dist/core/keybindings.d.ts +37 -2
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +9 -2
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/mandatory-runtime-tools.d.ts +1 -1
- package/dist/core/mandatory-runtime-tools.js.map +1 -1
- package/dist/core/model-fallback-failures.js +2 -2
- package/dist/core/model-fallback-failures.js.map +1 -1
- package/dist/core/model-registry.d.ts +5 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +8 -0
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver-defaults.js +1 -1
- package/dist/core/model-resolver-defaults.js.map +1 -1
- package/dist/core/resource-loader-assets.js.map +1 -1
- package/dist/core/resource-loader-core.d.ts +1 -1
- package/dist/core/resource-loader-core.js.map +1 -1
- package/dist/core/resource-loader-internals.d.ts +2 -2
- package/dist/core/resource-loader-internals.js.map +1 -1
- package/dist/core/resource-loader-reload.d.ts +2 -0
- package/dist/core/resource-loader-reload.d.ts.map +1 -1
- package/dist/core/resource-loader-reload.js +231 -191
- package/dist/core/resource-loader-reload.js.map +1 -1
- package/dist/core/resource-loader-types.d.ts +4 -2
- package/dist/core/resource-loader-types.d.ts.map +1 -1
- package/dist/core/resource-loader-types.js.map +1 -1
- package/dist/core/retry-policy.d.ts +1 -0
- package/dist/core/retry-policy.d.ts.map +1 -1
- package/dist/core/retry-policy.js +2 -1
- package/dist/core/retry-policy.js.map +1 -1
- package/dist/core/sdk-exports.d.ts +3 -3
- package/dist/core/sdk-exports.d.ts.map +1 -1
- package/dist/core/sdk-exports.js +1 -1
- package/dist/core/sdk-exports.js.map +1 -1
- package/dist/core/sdk-types.d.ts +2 -2
- package/dist/core/sdk-types.js.map +1 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +6 -3
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +25 -8
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-manager-core.d.ts.map +1 -1
- package/dist/core/settings-manager-core.js +10 -4
- package/dist/core/settings-manager-core.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/settings-storage.d.ts +1 -0
- package/dist/core/settings-storage.d.ts.map +1 -1
- package/dist/core/settings-storage.js +18 -0
- package/dist/core/settings-storage.js.map +1 -1
- package/dist/core/settings-types.d.ts +17 -0
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +6 -5
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +5 -6
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tasks/agent-adapter.d.ts +44 -0
- package/dist/core/tasks/agent-adapter.d.ts.map +1 -0
- package/dist/core/tasks/agent-adapter.js +112 -0
- package/dist/core/tasks/agent-adapter.js.map +1 -0
- package/dist/core/tasks/command-output.d.ts +15 -0
- package/dist/core/tasks/command-output.d.ts.map +1 -0
- package/dist/core/tasks/command-output.js +29 -0
- package/dist/core/tasks/command-output.js.map +1 -0
- package/dist/core/tasks/completion-ordering.d.ts +11 -0
- package/dist/core/tasks/completion-ordering.d.ts.map +1 -0
- package/dist/core/tasks/completion-ordering.js +19 -0
- package/dist/core/tasks/completion-ordering.js.map +1 -0
- package/dist/core/tasks/completion.d.ts +36 -0
- package/dist/core/tasks/completion.d.ts.map +1 -0
- package/dist/core/tasks/completion.js +119 -0
- package/dist/core/tasks/completion.js.map +1 -0
- package/dist/core/tasks/contracts.d.ts +404 -0
- package/dist/core/tasks/contracts.d.ts.map +1 -0
- package/dist/core/tasks/contracts.js +2 -0
- package/dist/core/tasks/contracts.js.map +1 -0
- package/dist/core/tasks/execution-scope.d.ts +10 -0
- package/dist/core/tasks/execution-scope.d.ts.map +1 -0
- package/dist/core/tasks/execution-scope.js +27 -0
- package/dist/core/tasks/execution-scope.js.map +1 -0
- package/dist/core/tasks/owner-store.d.ts +53 -0
- package/dist/core/tasks/owner-store.d.ts.map +1 -0
- package/dist/core/tasks/owner-store.js +155 -0
- package/dist/core/tasks/owner-store.js.map +1 -0
- package/dist/core/tasks/pause.d.ts +4 -0
- package/dist/core/tasks/pause.d.ts.map +1 -0
- package/dist/core/tasks/pause.js +49 -0
- package/dist/core/tasks/pause.js.map +1 -0
- package/dist/core/tasks/supervisor.d.ts +123 -0
- package/dist/core/tasks/supervisor.d.ts.map +1 -0
- package/dist/core/tasks/supervisor.js +942 -0
- package/dist/core/tasks/supervisor.js.map +1 -0
- package/dist/core/tasks/transcript.d.ts +23 -0
- package/dist/core/tasks/transcript.d.ts.map +1 -0
- package/dist/core/tasks/transcript.js +74 -0
- package/dist/core/tasks/transcript.js.map +1 -0
- package/dist/core/tools/ask-user-question/ask-user-question.d.ts +2 -2
- package/dist/core/tools/ask-user-question/ask-user-question.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/ask-user-question.js +8 -4
- package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
- package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts +1 -1
- package/dist/core/tools/ask-user-question/state/build-questionnaire.js.map +1 -1
- package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts +1 -1
- package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/multi-select-view.d.ts +1 -1
- package/dist/core/tools/ask-user-question/view/components/multi-select-view.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/submit-picker.d.ts +1 -1
- package/dist/core/tools/ask-user-question/view/components/submit-picker.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/tab-bar.d.ts +1 -1
- package/dist/core/tools/ask-user-question/view/components/tab-bar.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts +1 -1
- package/dist/core/tools/ask-user-question/view/dialog-builder.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts +1 -1
- package/dist/core/tools/ask-user-question/view/tab-content-strategy.js.map +1 -1
- package/dist/core/tools/bash-pty-native.d.ts +32 -3
- package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
- package/dist/core/tools/bash-pty-native.js +198 -1
- package/dist/core/tools/bash-pty-native.js.map +1 -1
- package/dist/core/tools/bash.d.ts +25 -5
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +100 -10
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.d.ts +3 -0
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +92 -14
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-coordinator.d.ts +255 -0
- package/dist/core/tools/file-mutation-coordinator.d.ts.map +1 -0
- package/dist/core/tools/file-mutation-coordinator.js +300 -0
- package/dist/core/tools/file-mutation-coordinator.js.map +1 -0
- package/dist/core/tools/file-mutation-queue.d.ts +14 -1
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.js +15 -3
- package/dist/core/tools/file-mutation-queue.js.map +1 -1
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/hashline.d.ts +9 -0
- package/dist/core/tools/hashline.d.ts.map +1 -1
- package/dist/core/tools/hashline.js +12 -1
- package/dist/core/tools/hashline.js.map +1 -1
- package/dist/core/tools/index.d.ts +15 -4
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +79 -12
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/kill.d.ts +17 -0
- package/dist/core/tools/kill.d.ts.map +1 -0
- package/dist/core/tools/kill.js +49 -0
- package/dist/core/tools/kill.js.map +1 -0
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/non-minting-snapshot-store.d.ts +49 -0
- package/dist/core/tools/non-minting-snapshot-store.d.ts.map +1 -0
- package/dist/core/tools/non-minting-snapshot-store.js +64 -0
- package/dist/core/tools/non-minting-snapshot-store.js.map +1 -0
- package/dist/core/tools/powershell.d.ts +100 -34
- package/dist/core/tools/powershell.d.ts.map +1 -1
- package/dist/core/tools/powershell.js +41 -11
- package/dist/core/tools/powershell.js.map +1 -1
- package/dist/core/tools/read-document-extract.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +1 -2
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts +1 -1
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/resource-selectors.d.ts +1 -1
- package/dist/core/tools/resource-selectors.d.ts.map +1 -1
- package/dist/core/tools/resource-selectors.js +21 -10
- package/dist/core/tools/resource-selectors.js.map +1 -1
- package/dist/core/tools/search.js.map +1 -1
- package/dist/core/tools/todos-render.d.ts +1 -1
- package/dist/core/tools/todos-render.js.map +1 -1
- package/dist/core/tools/write.d.ts +30 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +98 -10
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/workflow-stage-admission.d.ts +24 -0
- package/dist/core/workflow-stage-admission.d.ts.map +1 -1
- package/dist/core/workflow-stage-admission.js +87 -3
- package/dist/core/workflow-stage-admission.js.map +1 -1
- package/dist/extensions/herdr/activity.d.ts +15 -0
- package/dist/extensions/herdr/activity.d.ts.map +1 -0
- package/dist/extensions/herdr/activity.js +24 -0
- package/dist/extensions/herdr/activity.js.map +1 -0
- package/dist/extensions/herdr/environment.d.ts +7 -0
- package/dist/extensions/herdr/environment.d.ts.map +1 -0
- package/dist/extensions/herdr/environment.js +6 -0
- package/dist/extensions/herdr/environment.js.map +1 -0
- package/dist/extensions/herdr/index.d.ts +9 -0
- package/dist/extensions/herdr/index.d.ts.map +1 -0
- package/dist/extensions/herdr/index.js +225 -0
- package/dist/extensions/herdr/index.js.map +1 -0
- package/dist/extensions/herdr/pane-owner.d.ts +30 -0
- package/dist/extensions/herdr/pane-owner.d.ts.map +1 -0
- package/dist/extensions/herdr/pane-owner.js +111 -0
- package/dist/extensions/herdr/pane-owner.js.map +1 -0
- package/dist/extensions/herdr/transport.d.ts +8 -0
- package/dist/extensions/herdr/transport.d.ts.map +1 -0
- package/dist/extensions/herdr/transport.js +28 -0
- package/dist/extensions/herdr/transport.js.map +1 -0
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js +2 -0
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/llama/huggingface-ui.d.ts +1 -1
- package/dist/extensions/llama/huggingface-ui.js.map +1 -1
- package/dist/extensions/llama/ui.js.map +1 -1
- package/dist/index-extensions.d.ts +3 -2
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index-extensions.js.map +1 -1
- package/dist/index.d.ts +14 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/main-session.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +149 -69
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/armin.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/atomic-banner.d.ts +1 -1
- package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
- package/dist/modes/interactive/components/atomic-working-status.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.d.ts +12 -0
- package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.js +44 -0
- package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.d.ts +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.js +43 -8
- package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-editor.d.ts +1 -1
- package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-events.d.ts +2 -2
- package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.d.ts +2 -2
- package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.js +12 -3
- package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +4 -5
- package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-runtime.js +8 -6
- package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.d.ts +7 -2
- package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.js +1 -0
- package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.d.ts +1 -1
- package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-types.d.ts +8 -3
- package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-utils.d.ts +1 -1
- package/dist/modes/interactive/components/chat-session-host-utils.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-utils.js +2 -0
- package/dist/modes/interactive/components/chat-session-host-utils.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.d.ts +17 -2
- package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.js +100 -3
- package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
- package/dist/modes/interactive/components/chat-transcript.d.ts +1 -0
- package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-transcript.js +1 -1
- package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
- package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/custom-entry.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +12 -0
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/daxnuts.js.map +1 -1
- package/dist/modes/interactive/components/diff.js.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/extension-input.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts +1 -1
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +7 -6
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +27 -9
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/host-input-form-mount.js.map +1 -1
- package/dist/modes/interactive/components/host-input-form.d.ts +1 -1
- package/dist/modes/interactive/components/host-input-form.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +2 -2
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/mermaid.d.ts +1 -1
- package/dist/modes/interactive/components/mermaid.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/reserved-bottom-overlay.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/scroll-widget.d.ts +23 -0
- package/dist/modes/interactive/components/scroll-widget.d.ts.map +1 -0
- package/dist/modes/interactive/components/scroll-widget.js +61 -0
- package/dist/modes/interactive/components/scroll-widget.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-header.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-submenus.d.ts +1 -1
- package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts +1 -1
- package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/task-completion-message.d.ts +13 -0
- package/dist/modes/interactive/components/task-completion-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/task-completion-message.js +65 -0
- package/dist/modes/interactive/components/task-completion-message.js.map +1 -0
- package/dist/modes/interactive/components/task-detail.d.ts +27 -0
- package/dist/modes/interactive/components/task-detail.d.ts.map +1 -0
- package/dist/modes/interactive/components/task-detail.js +107 -0
- package/dist/modes/interactive/components/task-detail.js.map +1 -0
- package/dist/modes/interactive/components/task-inspector.d.ts +50 -0
- package/dist/modes/interactive/components/task-inspector.d.ts.map +1 -0
- package/dist/modes/interactive/components/task-inspector.js +599 -0
- package/dist/modes/interactive/components/task-inspector.js.map +1 -0
- package/dist/modes/interactive/components/task-list.d.ts +18 -0
- package/dist/modes/interactive/components/task-list.d.ts.map +1 -0
- package/dist/modes/interactive/components/task-list.js +59 -0
- package/dist/modes/interactive/components/task-list.js.map +1 -0
- package/dist/modes/interactive/components/task-live-transcript.d.ts +17 -0
- package/dist/modes/interactive/components/task-live-transcript.d.ts.map +1 -0
- package/dist/modes/interactive/components/task-live-transcript.js +41 -0
- package/dist/modes/interactive/components/task-live-transcript.js.map +1 -0
- package/dist/modes/interactive/components/task-navigation.d.ts +38 -0
- package/dist/modes/interactive/components/task-navigation.d.ts.map +1 -0
- package/dist/modes/interactive/components/task-navigation.js +93 -0
- package/dist/modes/interactive/components/task-navigation.js.map +1 -0
- package/dist/modes/interactive/components/task-row.d.ts +34 -0
- package/dist/modes/interactive/components/task-row.d.ts.map +1 -0
- package/dist/modes/interactive/components/task-row.js +165 -0
- package/dist/modes/interactive/components/task-row.js.map +1 -0
- package/dist/modes/interactive/components/theme-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/transcript-follow-indicator.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-component.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-content.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-help.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-label-input.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector-list.js.map +1 -1
- package/dist/modes/interactive/components/trust-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/components/working-status.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.js +8 -2
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-login.js +3 -1
- package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js +9 -30
- package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.js +2 -1
- package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-context.js +14 -4
- package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-custom-ui.js +52 -4
- package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.js +11 -3
- package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-widgets.js +9 -1
- package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
- package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-input-handling.js +19 -0
- package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts +7 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.js +10 -4
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.d.ts +6 -6
- package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +3 -2
- package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +3 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/interactive-process-lifecycle.js +4 -1
- package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +30 -4
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-session-routing.js +33 -23
- package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js +1 -0
- package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +3 -0
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-summarization-retry-events.js +2 -2
- package/dist/modes/interactive/interactive-summarization-retry-events.js.map +1 -1
- package/dist/modes/interactive/interactive-task-projection.d.ts +13 -0
- package/dist/modes/interactive/interactive-task-projection.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-task-projection.js +72 -0
- package/dist/modes/interactive/interactive-task-projection.js.map +1 -0
- package/dist/modes/interactive/interactive-tui.js.map +1 -1
- package/dist/modes/interactive/interactive-windows-subshell.d.ts +17 -0
- package/dist/modes/interactive/interactive-windows-subshell.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-windows-subshell.js +92 -0
- package/dist/modes/interactive/interactive-windows-subshell.js.map +1 -0
- package/dist/modes/interactive/skill-command-autocomplete.d.ts +12 -0
- package/dist/modes/interactive/skill-command-autocomplete.d.ts.map +1 -0
- package/dist/modes/interactive/skill-command-autocomplete.js +69 -0
- package/dist/modes/interactive/skill-command-autocomplete.js.map +1 -0
- package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-class.js +4 -1
- package/dist/modes/interactive/theme/theme-class.js.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.d.ts +1 -1
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive-engine/activity-watchdog.d.ts +2 -2
- package/dist/modes/interactive-engine/activity-watchdog.d.ts.map +1 -1
- package/dist/modes/interactive-engine/activity-watchdog.js.map +1 -1
- package/dist/modes/interactive-engine/create-isolated-runtime.d.ts +1 -1
- package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts +9 -10
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-custom-ui.js +29 -12
- package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
- package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts +3 -1
- package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-diagnostic-view.js +11 -0
- package/dist/modes/interactive-engine/engine-diagnostic-view.js.map +1 -1
- package/dist/modes/interactive-engine/engine-dialog-host.d.ts +2 -2
- package/dist/modes/interactive-engine/engine-dialog-host.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-dialog-host.js +4 -1
- package/dist/modes/interactive-engine/engine-dialog-host.js.map +1 -1
- package/dist/modes/interactive-engine/engine-project-trust.d.ts +10 -0
- package/dist/modes/interactive-engine/engine-project-trust.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-project-trust.js +28 -0
- package/dist/modes/interactive-engine/engine-project-trust.js.map +1 -0
- package/dist/modes/interactive-engine/engine-render-service.d.ts +1 -1
- package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +3 -1
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
- package/dist/modes/interactive-engine/extension-ui-bridge.js +7 -1
- package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
- package/dist/modes/interactive-engine/input-form-host.d.ts +2 -2
- package/dist/modes/interactive-engine/input-form-host.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-auth.d.ts +1 -1
- package/dist/modes/interactive-engine/isolated-auth.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.d.ts +5 -2
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +42 -4
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/interactive-engine/protocol.d.ts +21 -1
- package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
- package/dist/modes/interactive-engine/protocol.js +53 -2
- package/dist/modes/interactive-engine/protocol.js.map +1 -1
- package/dist/modes/interactive-engine/remote-component.d.ts +2 -2
- package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -1
- package/dist/modes/interactive-engine/remote-component.js +19 -8
- package/dist/modes/interactive-engine/remote-component.js.map +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.d.ts +1 -1
- package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
- package/dist/modes/interactive-engine/remote-renderer.d.ts +1 -1
- package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
- package/dist/modes/interactive-engine/session-picker-host.d.ts +2 -2
- package/dist/modes/interactive-engine/session-picker-host.js.map +1 -1
- package/dist/modes/json-event.d.ts +1 -1
- package/dist/modes/json-event.js.map +1 -1
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-bash-request-owners.d.ts +2 -2
- package/dist/modes/rpc/rpc-bash-request-owners.js.map +1 -1
- package/dist/modes/rpc/rpc-client-api.d.ts +2 -2
- package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-api.js +2 -2
- package/dist/modes/rpc/rpc-client-api.js.map +1 -1
- package/dist/modes/rpc/rpc-client-process.d.ts +2 -0
- package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-process.js +23 -1
- package/dist/modes/rpc/rpc-client-process.js.map +1 -1
- package/dist/modes/rpc/rpc-client-waits.d.ts +1 -1
- package/dist/modes/rpc/rpc-client-waits.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +3 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +40 -3
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts +4 -2
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +12 -4
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-extension-ui.d.ts +1 -1
- package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-extension-ui.js +2 -1
- package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +12 -2
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.d.ts +1 -1
- package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
- package/dist/modes/rpc/rpc-session-binding.d.ts +4 -1
- package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-session-binding.js +35 -1
- package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +17 -1
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/modes/rpc/task-ui-bridge.d.ts +9 -0
- package/dist/modes/rpc/task-ui-bridge.d.ts.map +1 -0
- package/dist/modes/rpc/task-ui-bridge.js +146 -0
- package/dist/modes/rpc/task-ui-bridge.js.map +1 -0
- package/dist/self-update-plan.js.map +1 -1
- package/dist/utils/markit.d.ts +2 -0
- package/dist/utils/markit.d.ts.map +1 -1
- package/dist/utils/markit.js +65 -5
- package/dist/utils/markit.js.map +1 -1
- package/docs/background-tasks.md +232 -0
- package/docs/build.md +51 -0
- package/docs/changelog.mdx +8 -8
- package/docs/compaction/reference.md +267 -0
- package/docs/compaction.md +39 -200
- package/docs/computer-use.md +425 -0
- package/docs/containerization.md +9 -5
- package/docs/custom-provider/api-reference.md +145 -0
- package/docs/custom-provider/oauth.md +131 -0
- package/docs/custom-provider/override.md +34 -0
- package/docs/custom-provider/registration.md +163 -0
- package/docs/custom-provider/streaming.md +214 -0
- package/docs/custom-provider.md +43 -607
- package/docs/development.md +68 -30
- package/docs/docs.json +199 -73
- package/docs/environment-variables.md +2 -2
- package/docs/extensions/api-reference.md +1003 -0
- package/docs/extensions/authoring.md +676 -0
- package/docs/extensions/events.md +793 -0
- package/docs/extensions/examples.md +94 -0
- package/docs/extensions/ui.md +470 -0
- package/docs/extensions.md +241 -2623
- package/docs/getting-started/authentication.md +55 -0
- package/docs/getting-started/first-session.md +172 -0
- package/docs/getting-started/installation.md +154 -0
- package/docs/getting-started/project-instructions.md +43 -0
- package/docs/guides/configuration.md +65 -0
- package/docs/guides/intercom.md +24 -0
- package/docs/guides/non-interactive.md +33 -0
- package/docs/guides/subagents.md +24 -0
- package/docs/guides/workflows.md +27 -0
- package/docs/guides.md +41 -0
- package/docs/herdr.md +55 -0
- package/docs/index.md +13 -44
- package/docs/intercom/operations.md +178 -0
- package/docs/intercom/reference.md +150 -0
- package/docs/intercom.md +61 -251
- package/docs/json.md +17 -0
- package/docs/keybindings.md +36 -2
- package/docs/llama-cpp.md +5 -0
- package/docs/models/artificial-analysis-index.md +89 -0
- package/docs/models/evals.md +225 -148
- package/docs/models/model-selection.md +30 -21
- package/docs/models/pareto-efficiency.md +4 -4
- package/docs/models/reference.md +601 -0
- package/docs/models.md +45 -550
- package/docs/packages/authoring.md +88 -0
- package/docs/packages/reference.md +43 -0
- package/docs/packages.md +28 -107
- package/docs/programmatic.md +29 -0
- package/docs/prompt-templates.md +11 -0
- package/docs/providers/reference.md +23 -0
- package/docs/providers.md +59 -62
- package/docs/quickstart.md +45 -239
- package/docs/reference/cli.md +252 -0
- package/docs/reference.md +52 -0
- package/docs/rpc/examples.md +64 -0
- package/docs/rpc/extension-ui.md +198 -0
- package/docs/rpc/protocol.md +1341 -0
- package/docs/rpc.md +109 -1346
- package/docs/sdk/reference.md +1090 -0
- package/docs/sdk.md +64 -756
- package/docs/session-format.md +2 -0
- package/docs/sessions.md +6 -10
- package/docs/settings.md +45 -48
- package/docs/skills/authoring.md +95 -0
- package/docs/skills/reference.md +60 -0
- package/docs/skills.md +37 -117
- package/docs/subagents/authoring.md +37 -0
- package/docs/subagents/reference.md +60 -0
- package/docs/subagents.md +90 -78
- package/docs/terminal-setup.md +1 -1
- package/docs/themes/reference.md +176 -0
- package/docs/themes.md +25 -135
- package/docs/tmux.md +7 -0
- package/docs/tools/edit.md +5 -0
- package/docs/tools.md +67 -1
- package/docs/tui/reference.md +343 -0
- package/docs/tui.md +83 -285
- package/docs/usage.md +31 -210
- package/docs/web-access.md +50 -0
- package/docs/windows.md +6 -5
- package/docs/workflows/api-reference.md +31 -12
- package/docs/workflows/authoring.md +7 -5
- package/docs/workflows/builtins.md +11 -8
- package/docs/workflows/operations.md +103 -38
- package/docs/workflows/reliable-design.md +59 -10
- package/docs/workflows/verification.md +116 -32
- package/docs/workflows.md +7 -3
- package/examples/extensions/gondolin/index.ts +116 -148
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/ssh.ts +56 -34
- package/npm-shrinkwrap.json +798 -678
- package/package.json +11 -11
- /package/dist/builtin/workflows/builtin/{chunk-cg9tmks0.js → chunk-n1910xc4.js} +0 -0
- /package/dist/builtin/workflows/builtin/{chunk-wpckd35c.js → chunk-rc5ec5xx.js} +0 -0
- /package/dist/builtin/workflows/builtin/{chunk-7at6dnkr.js → chunk-tgt0s5e5.js} +0 -0
- /package/dist/builtin/workflows/builtin/{chunk-bfkmzv9h.js → chunk-xtxcq5tj.js} +0 -0
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Gondolin Tool Routing Example
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* directory is mounted at /workspace
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Routes read, write, edit, bash, find, ls and user ! commands into a local
|
|
5
|
+
* Gondolin micro-VM. The host working directory is mounted at /workspace;
|
|
6
|
+
* changes there write through to the host. Other guest changes stay in the VM.
|
|
7
|
+
* Search and other unoverridden tools still run on the host. For guest-only
|
|
8
|
+
* content searches use the routed shell; this is not whole-session isolation.
|
|
8
9
|
*
|
|
9
10
|
* Setup:
|
|
10
11
|
* cd packages/coding-agent/examples/extensions/gondolin
|
|
11
|
-
* npm
|
|
12
|
+
* npm ci --ignore-scripts
|
|
13
|
+
* npm run check # from this repository: full Gondolin + SSH adapter typecheck
|
|
12
14
|
*
|
|
13
15
|
* Usage:
|
|
14
16
|
* cd /path/to/project
|
|
@@ -24,33 +26,22 @@ import type { ExtensionAPI, ExtensionContext } from "@bastani/atomic";
|
|
|
24
26
|
import {
|
|
25
27
|
type BashOperations,
|
|
26
28
|
createBashTool,
|
|
29
|
+
createCodingTools,
|
|
27
30
|
createEditTool,
|
|
28
31
|
createFindTool,
|
|
29
|
-
createGrepTool,
|
|
30
32
|
createLsTool,
|
|
31
33
|
createReadTool,
|
|
32
34
|
createWriteTool,
|
|
33
|
-
DEFAULT_MAX_BYTES,
|
|
34
35
|
type EditOperations,
|
|
35
36
|
type FindOperations,
|
|
36
|
-
formatSize,
|
|
37
|
-
type GrepToolDetails,
|
|
38
|
-
type GrepToolInput,
|
|
39
37
|
type LsOperations,
|
|
40
38
|
type ReadOperations,
|
|
41
|
-
truncateHead,
|
|
42
|
-
truncateLine,
|
|
43
39
|
type WriteOperations,
|
|
44
40
|
} from "@bastani/atomic";
|
|
45
41
|
import { RealFSProvider, VM } from "@earendil-works/gondolin";
|
|
46
42
|
|
|
47
43
|
const GUEST_WORKSPACE = "/workspace";
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
type TextToolResult<TDetails> = {
|
|
51
|
-
content: Array<{ type: "text"; text: string }>;
|
|
52
|
-
details: TDetails | undefined;
|
|
53
|
-
};
|
|
44
|
+
const GUEST_FUSE_MOUNT = "/data";
|
|
54
45
|
|
|
55
46
|
function stripAtPrefix(value: string): string {
|
|
56
47
|
return value.startsWith("@") ? value.slice(1) : value;
|
|
@@ -98,20 +89,99 @@ function createGondolinReadOps(vm: VM, localCwd: string): ReadOperations {
|
|
|
98
89
|
};
|
|
99
90
|
}
|
|
100
91
|
|
|
101
|
-
function createGondolinWriteOps(vm: VM, localCwd: string): WriteOperations {
|
|
92
|
+
function createGondolinWriteOps(vm: VM, localCwd: string, workspace: RealFSProvider): WriteOperations {
|
|
93
|
+
const workspaceRelativePath = (target: string) => {
|
|
94
|
+
for (const mount of [GUEST_WORKSPACE, `${GUEST_FUSE_MOUNT}${GUEST_WORKSPACE}`]) {
|
|
95
|
+
if (target === mount || target.startsWith(`${mount}/`)) return target.slice(mount.length) || "/";
|
|
96
|
+
}
|
|
97
|
+
return undefined;
|
|
98
|
+
};
|
|
102
99
|
return {
|
|
103
|
-
writeFile: async (filePath, content) => {
|
|
104
|
-
|
|
100
|
+
writeFile: async (filePath, content, options) => {
|
|
101
|
+
const target = toGuestPath(localCwd, filePath);
|
|
102
|
+
if (!options?.exclusive) {
|
|
103
|
+
await vm.fs.writeFile(target, content, { encoding: "utf8" });
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
// Both fs.writeFile and the 0.12.0 FUSE bridge discard exclusive flags.
|
|
107
|
+
// Open through the exact provider mounted at /workspace, not unrelated host IO.
|
|
108
|
+
let relativePath = workspaceRelativePath(target);
|
|
109
|
+
if (relativePath === undefined) {
|
|
110
|
+
// A guest symlink can route an otherwise native-looking parent onto FUSE.
|
|
111
|
+
const parent = await vm.exec(["/bin/sh", "-c", 'cd "$1" && pwd -P', "sh", path.posix.dirname(target)]);
|
|
112
|
+
if (parent.exitCode !== 0) throw new Error(parent.stderr);
|
|
113
|
+
relativePath = workspaceRelativePath(
|
|
114
|
+
path.posix.join(parent.stdout.replace(/\n$/, ""), path.posix.basename(target)),
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
if (relativePath !== undefined) {
|
|
118
|
+
const mountedPath = relativePath;
|
|
119
|
+
const handle = await workspace.open(mountedPath, "wx").catch(async (error: NodeJS.ErrnoException) => {
|
|
120
|
+
// The provider resolves links before open: a dangling collision becomes ENOENT.
|
|
121
|
+
// Check occupancy in that same mounted namespace, without following the link.
|
|
122
|
+
if (
|
|
123
|
+
error.code === "ENOENT" &&
|
|
124
|
+
(await workspace.lstat(mountedPath).catch(() => undefined))?.isSymbolicLink()
|
|
125
|
+
) {
|
|
126
|
+
throw Object.assign(new Error(`EEXIST: file already exists, open '${target}'`), { code: "EEXIST" });
|
|
127
|
+
}
|
|
128
|
+
throw error;
|
|
129
|
+
});
|
|
130
|
+
try {
|
|
131
|
+
await handle.writeFile(content, { encoding: "utf8" });
|
|
132
|
+
} finally {
|
|
133
|
+
await handle.close();
|
|
134
|
+
}
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
// Native guest paths do not cross FUSE. Noclobber is enforced by the guest OS.
|
|
138
|
+
const result = await vm.exec(
|
|
139
|
+
[
|
|
140
|
+
"/bin/sh",
|
|
141
|
+
"-c",
|
|
142
|
+
'(set -C; cat > "$1") || { if [ -e "$1" ] || [ -L "$1" ]; then exit 17; else exit 1; fi; }',
|
|
143
|
+
"sh",
|
|
144
|
+
target,
|
|
145
|
+
],
|
|
146
|
+
{ stdin: content },
|
|
147
|
+
);
|
|
148
|
+
if (result.exitCode !== 0) {
|
|
149
|
+
const error = new Error(`Failed to create guest file '${target}': ${result.stderr}`);
|
|
150
|
+
if (result.exitCode === 17) throw Object.assign(error, { code: "EEXIST" });
|
|
151
|
+
throw error;
|
|
152
|
+
}
|
|
105
153
|
},
|
|
106
154
|
mkdir: async (dirPath) => {
|
|
107
155
|
await vm.fs.mkdir(toGuestPath(localCwd, dirPath), { recursive: true });
|
|
108
156
|
},
|
|
157
|
+
// Reads inside the guest, so the checks `write` runs before overwriting see the same
|
|
158
|
+
// filesystem the write lands on rather than the host's. Absence is `undefined`; a path
|
|
159
|
+
// that exists but cannot be read keeps throwing, since it is not a free path.
|
|
160
|
+
readFile: async (filePath) => {
|
|
161
|
+
const target = toGuestPath(localCwd, filePath);
|
|
162
|
+
try {
|
|
163
|
+
return await vm.fs.readFile(target, { encoding: "utf8" });
|
|
164
|
+
} catch (error) {
|
|
165
|
+
// Gondolin 0.12.0 wraps filesystem errors without preserving errno. Probe
|
|
166
|
+
// the guest namespace rather than parsing localized error messages.
|
|
167
|
+
const probe = await vm.exec([
|
|
168
|
+
"/bin/sh",
|
|
169
|
+
"-c",
|
|
170
|
+
'(cd "$2") && { if [ -e "$1" ] || [ -L "$1" ]; then exit 0; else exit 44; fi; }',
|
|
171
|
+
"sh",
|
|
172
|
+
target,
|
|
173
|
+
path.posix.dirname(target),
|
|
174
|
+
]);
|
|
175
|
+
if (probe.exitCode === 44) return undefined;
|
|
176
|
+
throw error;
|
|
177
|
+
}
|
|
178
|
+
},
|
|
109
179
|
};
|
|
110
180
|
}
|
|
111
181
|
|
|
112
|
-
function createGondolinEditOps(vm: VM, localCwd: string): EditOperations {
|
|
182
|
+
function createGondolinEditOps(vm: VM, localCwd: string, workspace: RealFSProvider): EditOperations {
|
|
113
183
|
const readOps = createGondolinReadOps(vm, localCwd);
|
|
114
|
-
const writeOps = createGondolinWriteOps(vm, localCwd);
|
|
184
|
+
const writeOps = createGondolinWriteOps(vm, localCwd, workspace);
|
|
115
185
|
return {
|
|
116
186
|
readFile: readOps.readFile,
|
|
117
187
|
writeFile: writeOps.writeFile,
|
|
@@ -203,110 +273,6 @@ function createGondolinFindOps(vm: VM, localCwd: string): FindOperations {
|
|
|
203
273
|
};
|
|
204
274
|
}
|
|
205
275
|
|
|
206
|
-
function createLineMatcher(pattern: string, literal: boolean | undefined, ignoreCase: boolean | undefined) {
|
|
207
|
-
if (literal) {
|
|
208
|
-
const needle = ignoreCase ? pattern.toLowerCase() : pattern;
|
|
209
|
-
return (line: string) => (ignoreCase ? line.toLowerCase() : line).includes(needle);
|
|
210
|
-
}
|
|
211
|
-
const regex = new RegExp(pattern, ignoreCase ? "i" : undefined);
|
|
212
|
-
return (line: string) => regex.test(line);
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
function appendGrepBlock(params: {
|
|
216
|
-
outputLines: string[];
|
|
217
|
-
lines: string[];
|
|
218
|
-
relativePath: string;
|
|
219
|
-
lineIndex: number;
|
|
220
|
-
contextLines: number;
|
|
221
|
-
}): boolean {
|
|
222
|
-
let linesTruncated = false;
|
|
223
|
-
const start = params.contextLines > 0 ? Math.max(0, params.lineIndex - params.contextLines) : params.lineIndex;
|
|
224
|
-
const end =
|
|
225
|
-
params.contextLines > 0
|
|
226
|
-
? Math.min(params.lines.length - 1, params.lineIndex + params.contextLines)
|
|
227
|
-
: params.lineIndex;
|
|
228
|
-
|
|
229
|
-
for (let index = start; index <= end; index++) {
|
|
230
|
-
const rawLine = params.lines[index] ?? "";
|
|
231
|
-
const { text, wasTruncated } = truncateLine(rawLine.replace(/\r/g, ""));
|
|
232
|
-
if (wasTruncated) linesTruncated = true;
|
|
233
|
-
const separator = index === params.lineIndex ? ":" : "-";
|
|
234
|
-
params.outputLines.push(`${params.relativePath}${separator}${index + 1}${separator} ${text}`);
|
|
235
|
-
}
|
|
236
|
-
return linesTruncated;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
async function executeGondolinGrep(
|
|
240
|
-
vm: VM,
|
|
241
|
-
localCwd: string,
|
|
242
|
-
params: GrepToolInput,
|
|
243
|
-
signal?: AbortSignal,
|
|
244
|
-
): Promise<TextToolResult<GrepToolDetails>> {
|
|
245
|
-
const root = toGuestPath(localCwd, params.path ?? ".");
|
|
246
|
-
const rootStat = await vm.fs.stat(root, { signal });
|
|
247
|
-
const rootIsDirectory = rootStat.isDirectory();
|
|
248
|
-
const matcher = createLineMatcher(params.pattern, params.literal, params.ignoreCase);
|
|
249
|
-
const contextLines = params.context && params.context > 0 ? params.context : 0;
|
|
250
|
-
const effectiveLimit = Math.max(1, params.limit ?? DEFAULT_GREP_LIMIT);
|
|
251
|
-
const outputLines: string[] = [];
|
|
252
|
-
const details: GrepToolDetails = {};
|
|
253
|
-
let matchCount = 0;
|
|
254
|
-
let matchLimitReached = false;
|
|
255
|
-
let linesTruncated = false;
|
|
256
|
-
|
|
257
|
-
await walkGuestFiles(
|
|
258
|
-
vm,
|
|
259
|
-
root,
|
|
260
|
-
async (guestPath, relativePath) => {
|
|
261
|
-
if (matchCount >= effectiveLimit) return false;
|
|
262
|
-
if (params.glob && !matchesToolGlob(relativePath, params.glob)) return true;
|
|
263
|
-
let content: string;
|
|
264
|
-
try {
|
|
265
|
-
content = await vm.fs.readFile(guestPath, { encoding: "utf8", signal });
|
|
266
|
-
} catch {
|
|
267
|
-
return true;
|
|
268
|
-
}
|
|
269
|
-
const lines = content.replace(/\r\n/g, "\n").replace(/\r/g, "\n").split("\n");
|
|
270
|
-
const displayPath = rootIsDirectory ? relativePath : path.posix.basename(guestPath);
|
|
271
|
-
for (let index = 0; index < lines.length; index++) {
|
|
272
|
-
if (signal?.aborted) throw new Error("Operation aborted");
|
|
273
|
-
if (!matcher(lines[index] ?? "")) continue;
|
|
274
|
-
matchCount++;
|
|
275
|
-
if (appendGrepBlock({ outputLines, lines, relativePath: displayPath, lineIndex: index, contextLines })) {
|
|
276
|
-
linesTruncated = true;
|
|
277
|
-
}
|
|
278
|
-
if (matchCount >= effectiveLimit) {
|
|
279
|
-
matchLimitReached = true;
|
|
280
|
-
return false;
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
return true;
|
|
284
|
-
},
|
|
285
|
-
signal,
|
|
286
|
-
);
|
|
287
|
-
if (matchCount === 0) return { content: [{ type: "text", text: "No matches found" }], details: undefined };
|
|
288
|
-
const rawOutput = outputLines.join("\n");
|
|
289
|
-
const truncation = truncateHead(rawOutput, { maxLines: Number.MAX_SAFE_INTEGER });
|
|
290
|
-
const notices: string[] = [];
|
|
291
|
-
let output = truncation.content;
|
|
292
|
-
if (matchLimitReached) {
|
|
293
|
-
details.matchLimitReached = effectiveLimit;
|
|
294
|
-
notices.push(`${effectiveLimit} matches limit reached`);
|
|
295
|
-
}
|
|
296
|
-
if (linesTruncated) {
|
|
297
|
-
details.linesTruncated = true;
|
|
298
|
-
notices.push("long lines truncated");
|
|
299
|
-
}
|
|
300
|
-
if (truncation.truncated) {
|
|
301
|
-
details.truncation = truncation;
|
|
302
|
-
notices.push(`${formatSize(DEFAULT_MAX_BYTES)} limit reached`);
|
|
303
|
-
}
|
|
304
|
-
if (notices.length > 0) output += `\n\n[${notices.join(". ")}]`;
|
|
305
|
-
return {
|
|
306
|
-
content: [{ type: "text", text: output }],
|
|
307
|
-
details: Object.keys(details).length > 0 ? details : undefined,
|
|
308
|
-
};
|
|
309
|
-
}
|
|
310
276
|
function createGondolinBashOps(vm: VM, localCwd: string, shellPath: string): BashOperations {
|
|
311
277
|
return {
|
|
312
278
|
exec: async (command, cwd, { onData, signal, timeout }) => {
|
|
@@ -348,23 +314,33 @@ function createGondolinBashOps(vm: VM, localCwd: string, shellPath: string): Bas
|
|
|
348
314
|
}
|
|
349
315
|
export default function (pi: ExtensionAPI) {
|
|
350
316
|
const localCwd = process.cwd();
|
|
317
|
+
const workspace = new RealFSProvider(localCwd);
|
|
351
318
|
const localRead = createReadTool(localCwd);
|
|
352
319
|
const localWrite = createWriteTool(localCwd);
|
|
353
320
|
const localEdit = createEditTool(localCwd);
|
|
354
321
|
const localBash = createBashTool(localCwd);
|
|
355
|
-
const localGrep = createGrepTool(localCwd);
|
|
356
322
|
const localFind = createFindTool(localCwd);
|
|
357
323
|
const localLs = createLsTool(localCwd);
|
|
358
324
|
let vm: VM | undefined;
|
|
359
325
|
let vmStarting: Promise<VM> | undefined;
|
|
360
326
|
let shellPath = "/bin/sh";
|
|
327
|
+
let fileTools: ReturnType<typeof createCodingTools> | undefined;
|
|
328
|
+
function getFileTools(activeVm: VM) {
|
|
329
|
+
fileTools ??= createCodingTools(GUEST_WORKSPACE, {
|
|
330
|
+
read: { operations: createGondolinReadOps(activeVm, localCwd) },
|
|
331
|
+
write: { operations: createGondolinWriteOps(activeVm, localCwd, workspace) },
|
|
332
|
+
edit: { operations: createGondolinEditOps(activeVm, localCwd, workspace) },
|
|
333
|
+
});
|
|
334
|
+
return fileTools;
|
|
335
|
+
}
|
|
361
336
|
async function startVm(ctx?: ExtensionContext): Promise<VM> {
|
|
362
337
|
ctx?.ui.setStatus("gondolin", ctx.ui.theme.fg("accent", `Gondolin: starting ${GUEST_WORKSPACE}`));
|
|
363
338
|
const created = await VM.create({
|
|
364
339
|
sessionLabel: `atomic ${path.basename(localCwd)}`,
|
|
365
340
|
vfs: {
|
|
341
|
+
fuseMount: GUEST_FUSE_MOUNT,
|
|
366
342
|
mounts: {
|
|
367
|
-
[GUEST_WORKSPACE]:
|
|
343
|
+
[GUEST_WORKSPACE]: workspace,
|
|
368
344
|
},
|
|
369
345
|
},
|
|
370
346
|
});
|
|
@@ -388,9 +364,11 @@ export default function (pi: ExtensionAPI) {
|
|
|
388
364
|
return vmStarting;
|
|
389
365
|
}
|
|
390
366
|
pi.on("session_start", async (_event, ctx) => {
|
|
367
|
+
fileTools = undefined;
|
|
391
368
|
await ensureVm(ctx);
|
|
392
369
|
});
|
|
393
370
|
pi.on("session_shutdown", async (_event, ctx) => {
|
|
371
|
+
fileTools = undefined;
|
|
394
372
|
const activeVm = vm;
|
|
395
373
|
vm = undefined;
|
|
396
374
|
vmStarting = undefined;
|
|
@@ -421,30 +399,27 @@ export default function (pi: ExtensionAPI) {
|
|
|
421
399
|
...localRead,
|
|
422
400
|
async execute(id, params, signal, onUpdate, ctx) {
|
|
423
401
|
const activeVm = await ensureVm(ctx);
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
return tool.execute(id, params, signal, onUpdate);
|
|
402
|
+
return getFileTools(activeVm)
|
|
403
|
+
.find((tool) => tool.name === "read")!
|
|
404
|
+
.execute(id, params, signal, onUpdate);
|
|
428
405
|
},
|
|
429
406
|
});
|
|
430
407
|
pi.registerTool({
|
|
431
408
|
...localWrite,
|
|
432
409
|
async execute(id, params, signal, onUpdate, ctx) {
|
|
433
410
|
const activeVm = await ensureVm(ctx);
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
return tool.execute(id, params, signal, onUpdate);
|
|
411
|
+
return getFileTools(activeVm)
|
|
412
|
+
.find((tool) => tool.name === "write")!
|
|
413
|
+
.execute(id, params, signal, onUpdate);
|
|
438
414
|
},
|
|
439
415
|
});
|
|
440
416
|
pi.registerTool({
|
|
441
417
|
...localEdit,
|
|
442
418
|
async execute(id, params, signal, onUpdate, ctx) {
|
|
443
419
|
const activeVm = await ensureVm(ctx);
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
return tool.execute(id, params, signal, onUpdate);
|
|
420
|
+
return getFileTools(activeVm)
|
|
421
|
+
.find((tool) => tool.name === "edit")!
|
|
422
|
+
.execute(id, params, signal, onUpdate);
|
|
448
423
|
},
|
|
449
424
|
});
|
|
450
425
|
pi.registerTool({
|
|
@@ -477,13 +452,6 @@ export default function (pi: ExtensionAPI) {
|
|
|
477
452
|
return tool.execute(id, params, signal, onUpdate);
|
|
478
453
|
},
|
|
479
454
|
});
|
|
480
|
-
pi.registerTool({
|
|
481
|
-
...localGrep,
|
|
482
|
-
async execute(_id, params, signal, _onUpdate, ctx) {
|
|
483
|
-
const activeVm = await ensureVm(ctx);
|
|
484
|
-
return executeGondolinGrep(activeVm, localCwd, params, signal);
|
|
485
|
-
},
|
|
486
|
-
});
|
|
487
455
|
pi.on("user_bash", async (_event, ctx) => {
|
|
488
456
|
const activeVm = await ensureVm(ctx);
|
|
489
457
|
return { operations: createGondolinBashOps(activeVm, localCwd, shellPath) };
|
|
@@ -14,10 +14,12 @@
|
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
import { spawn } from "node:child_process";
|
|
17
|
+
import { dirname } from "node:path";
|
|
17
18
|
import type { ExtensionAPI } from "@bastani/atomic";
|
|
18
19
|
import {
|
|
19
20
|
type BashOperations,
|
|
20
21
|
createBashTool,
|
|
22
|
+
createCodingTools,
|
|
21
23
|
createEditTool,
|
|
22
24
|
createReadTool,
|
|
23
25
|
createWriteTool,
|
|
@@ -64,11 +66,48 @@ function createRemoteReadOps(remote: string, remoteCwd: string, localCwd: string
|
|
|
64
66
|
function createRemoteWriteOps(remote: string, remoteCwd: string, localCwd: string): WriteOperations {
|
|
65
67
|
const toRemote = (p: string) => p.replace(localCwd, remoteCwd);
|
|
66
68
|
return {
|
|
67
|
-
writeFile: async (p, content) => {
|
|
69
|
+
writeFile: async (p, content, options) => {
|
|
68
70
|
const b64 = Buffer.from(content).toString("base64");
|
|
69
|
-
|
|
71
|
+
const target = JSON.stringify(toRemote(p));
|
|
72
|
+
// `set -C` is the shell's noclobber, so `>` on an existing path fails instead of
|
|
73
|
+
// truncating it. That is the remote equivalent of `O_EXCL`, and it is what keeps the
|
|
74
|
+
// create path from silently taking a file that appeared since the read below.
|
|
75
|
+
const redirect = options?.exclusive ? `set -C; base64 -d > ${target}` : `base64 -d > ${target}`;
|
|
76
|
+
try {
|
|
77
|
+
await sshExec(remote, `echo ${JSON.stringify(b64)} | { ${redirect}; }`);
|
|
78
|
+
} catch (error) {
|
|
79
|
+
// A remote shell reports noclobber as a bare non-zero exit, carrying no `code` to read.
|
|
80
|
+
// `write` renders an exclusive-create failure as a `target_exists` conflict only when the
|
|
81
|
+
// rejection carries `EEXIST`, so the collision has to be named here; otherwise this backend
|
|
82
|
+
// alone surfaces an opaque SSH error where every other one reports a typed conflict.
|
|
83
|
+
if (!options?.exclusive) throw error;
|
|
84
|
+
// Re-probe rather than assume the failure was a collision. A permission error, a full disk,
|
|
85
|
+
// or a dropped connection fail the same write, and each of those stays itself.
|
|
86
|
+
const probe = await sshExec(
|
|
87
|
+
remote,
|
|
88
|
+
`{ test -e ${target} || test -L ${target}; } && echo yes || echo no`,
|
|
89
|
+
).catch(() => undefined);
|
|
90
|
+
if (probe?.toString().trim() !== "yes") throw error;
|
|
91
|
+
throw Object.assign(new Error(`EEXIST: file already exists, open '${toRemote(p)}'`), { code: "EEXIST" });
|
|
92
|
+
}
|
|
70
93
|
},
|
|
71
94
|
mkdir: (dir) => sshExec(remote, `mkdir -p ${JSON.stringify(toRemote(dir))}`).then(() => {}),
|
|
95
|
+
// Reads the same filesystem the write lands on, which is the point: checking the local
|
|
96
|
+
// disk would let `write` decide what to do about a remote file by looking at a different
|
|
97
|
+
// machine. A missing path is `undefined`; anything else, including an unreadable one,
|
|
98
|
+
// stays a failure.
|
|
99
|
+
readFile: async (p) => {
|
|
100
|
+
const target = JSON.stringify(toRemote(p));
|
|
101
|
+
// `write` has already created the parent, so failure to enter it must remain
|
|
102
|
+
// an error. A subshell preserves the cwd used to resolve relative targets.
|
|
103
|
+
const parent = JSON.stringify(toRemote(dirname(p)));
|
|
104
|
+
const probe = await sshExec(
|
|
105
|
+
remote,
|
|
106
|
+
`(cd ${parent}) && { { test -e ${target} || test -L ${target}; } && echo yes || echo no; }`,
|
|
107
|
+
);
|
|
108
|
+
if (probe.toString().trim() === "no") return undefined;
|
|
109
|
+
return (await sshExec(remote, `cat ${target}`)).toString("utf8");
|
|
110
|
+
},
|
|
72
111
|
};
|
|
73
112
|
}
|
|
74
113
|
|
|
@@ -122,66 +161,42 @@ export default function (pi: ExtensionAPI) {
|
|
|
122
161
|
|
|
123
162
|
// Resolved lazily on session_start (CLI flags not available during factory)
|
|
124
163
|
let resolvedSsh: { remote: string; remoteCwd: string } | null = null;
|
|
164
|
+
// The bundle shares one snapshot store across read/edit/write until the next session.
|
|
165
|
+
let tools = createCodingTools(localCwd);
|
|
125
166
|
|
|
126
167
|
const getSsh = () => resolvedSsh;
|
|
127
168
|
|
|
128
169
|
pi.registerTool({
|
|
129
170
|
...localRead,
|
|
130
171
|
async execute(id, params, signal, onUpdate, _ctx) {
|
|
131
|
-
|
|
132
|
-
if (ssh) {
|
|
133
|
-
const tool = createReadTool(localCwd, {
|
|
134
|
-
operations: createRemoteReadOps(ssh.remote, ssh.remoteCwd, localCwd),
|
|
135
|
-
});
|
|
136
|
-
return tool.execute(id, params, signal, onUpdate);
|
|
137
|
-
}
|
|
138
|
-
return localRead.execute(id, params, signal, onUpdate);
|
|
172
|
+
return tools.find((tool) => tool.name === "read")!.execute(id, params, signal, onUpdate);
|
|
139
173
|
},
|
|
140
174
|
});
|
|
141
175
|
|
|
142
176
|
pi.registerTool({
|
|
143
177
|
...localWrite,
|
|
144
178
|
async execute(id, params, signal, onUpdate, _ctx) {
|
|
145
|
-
|
|
146
|
-
if (ssh) {
|
|
147
|
-
const tool = createWriteTool(localCwd, {
|
|
148
|
-
operations: createRemoteWriteOps(ssh.remote, ssh.remoteCwd, localCwd),
|
|
149
|
-
});
|
|
150
|
-
return tool.execute(id, params, signal, onUpdate);
|
|
151
|
-
}
|
|
152
|
-
return localWrite.execute(id, params, signal, onUpdate);
|
|
179
|
+
return tools.find((tool) => tool.name === "write")!.execute(id, params, signal, onUpdate);
|
|
153
180
|
},
|
|
154
181
|
});
|
|
155
182
|
|
|
156
183
|
pi.registerTool({
|
|
157
184
|
...localEdit,
|
|
158
185
|
async execute(id, params, signal, onUpdate, _ctx) {
|
|
159
|
-
|
|
160
|
-
if (ssh) {
|
|
161
|
-
const tool = createEditTool(localCwd, {
|
|
162
|
-
operations: createRemoteEditOps(ssh.remote, ssh.remoteCwd, localCwd),
|
|
163
|
-
});
|
|
164
|
-
return tool.execute(id, params, signal, onUpdate);
|
|
165
|
-
}
|
|
166
|
-
return localEdit.execute(id, params, signal, onUpdate);
|
|
186
|
+
return tools.find((tool) => tool.name === "edit")!.execute(id, params, signal, onUpdate);
|
|
167
187
|
},
|
|
168
188
|
});
|
|
169
189
|
|
|
170
190
|
pi.registerTool({
|
|
171
191
|
...localBash,
|
|
172
192
|
async execute(id, params, signal, onUpdate, _ctx) {
|
|
173
|
-
|
|
174
|
-
if (ssh) {
|
|
175
|
-
const tool = createBashTool(localCwd, {
|
|
176
|
-
operations: createRemoteBashOps(ssh.remote, ssh.remoteCwd, localCwd),
|
|
177
|
-
});
|
|
178
|
-
return tool.execute(id, params, signal, onUpdate);
|
|
179
|
-
}
|
|
180
|
-
return localBash.execute(id, params, signal, onUpdate);
|
|
193
|
+
return tools.find((tool) => tool.name === "bash")!.execute(id, params, signal, onUpdate);
|
|
181
194
|
},
|
|
182
195
|
});
|
|
183
196
|
|
|
184
197
|
pi.on("session_start", async (_event, ctx) => {
|
|
198
|
+
tools = createCodingTools(localCwd);
|
|
199
|
+
resolvedSsh = null;
|
|
185
200
|
// Resolve SSH config now that CLI flags are available
|
|
186
201
|
const arg = pi.getFlag("ssh") as string | undefined;
|
|
187
202
|
if (arg) {
|
|
@@ -194,6 +209,13 @@ export default function (pi: ExtensionAPI) {
|
|
|
194
209
|
const pwd = (await sshExec(remote, "pwd")).toString().trim();
|
|
195
210
|
resolvedSsh = { remote, remoteCwd: pwd };
|
|
196
211
|
}
|
|
212
|
+
const { remote, remoteCwd } = resolvedSsh;
|
|
213
|
+
tools = createCodingTools(localCwd, {
|
|
214
|
+
read: { operations: createRemoteReadOps(remote, remoteCwd, localCwd) },
|
|
215
|
+
write: { operations: createRemoteWriteOps(remote, remoteCwd, localCwd) },
|
|
216
|
+
edit: { operations: createRemoteEditOps(remote, remoteCwd, localCwd) },
|
|
217
|
+
bash: { operations: createRemoteBashOps(remote, remoteCwd, localCwd) },
|
|
218
|
+
});
|
|
197
219
|
ctx.ui.setStatus("ssh", ctx.ui.theme.fg("accent", `SSH: ${resolvedSsh.remote}:${resolvedSsh.remoteCwd}`));
|
|
198
220
|
ctx.ui.notify(`SSH mode: ${resolvedSsh.remote}:${resolvedSsh.remoteCwd}`, "info");
|
|
199
221
|
}
|