attocode 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/CHANGELOG.md +48 -0
- package/LICENSE +21 -0
- package/README.md +164 -0
- package/dist/src/adapters.d.ts +83 -0
- package/dist/src/adapters.d.ts.map +1 -0
- package/dist/src/adapters.js +221 -0
- package/dist/src/adapters.js.map +1 -0
- package/dist/src/agent-tools/index.d.ts +7 -0
- package/dist/src/agent-tools/index.d.ts.map +1 -0
- package/dist/src/agent-tools/index.js +8 -0
- package/dist/src/agent-tools/index.js.map +1 -0
- package/dist/src/agent-tools/lsp-file-tools.d.ts +33 -0
- package/dist/src/agent-tools/lsp-file-tools.d.ts.map +1 -0
- package/dist/src/agent-tools/lsp-file-tools.js +200 -0
- package/dist/src/agent-tools/lsp-file-tools.js.map +1 -0
- package/dist/src/agent.d.ts +667 -0
- package/dist/src/agent.d.ts.map +1 -0
- package/dist/src/agent.js +2824 -0
- package/dist/src/agent.js.map +1 -0
- package/dist/src/cli.d.ts +36 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +176 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/commands/handler.d.ts +22 -0
- package/dist/src/commands/handler.d.ts.map +1 -0
- package/dist/src/commands/handler.js +1320 -0
- package/dist/src/commands/handler.js.map +1 -0
- package/dist/src/commands/init.d.ts +7 -0
- package/dist/src/commands/init.d.ts.map +1 -0
- package/dist/src/commands/init.js +153 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/types.d.ts +70 -0
- package/dist/src/commands/types.d.ts.map +1 -0
- package/dist/src/commands/types.js +8 -0
- package/dist/src/commands/types.js.map +1 -0
- package/dist/src/config.d.ts +22 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +25 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/core/index.d.ts +32 -0
- package/dist/src/core/index.d.ts.map +1 -0
- package/dist/src/core/index.js +35 -0
- package/dist/src/core/index.js.map +1 -0
- package/dist/src/core/process-handlers.d.ts +43 -0
- package/dist/src/core/process-handlers.d.ts.map +1 -0
- package/dist/src/core/process-handlers.js +117 -0
- package/dist/src/core/process-handlers.js.map +1 -0
- package/dist/src/core/protocol/bridge.d.ts +117 -0
- package/dist/src/core/protocol/bridge.d.ts.map +1 -0
- package/dist/src/core/protocol/bridge.js +149 -0
- package/dist/src/core/protocol/bridge.js.map +1 -0
- package/dist/src/core/protocol/index.d.ts +8 -0
- package/dist/src/core/protocol/index.d.ts.map +1 -0
- package/dist/src/core/protocol/index.js +8 -0
- package/dist/src/core/protocol/index.js.map +1 -0
- package/dist/src/core/protocol/types.d.ts +539 -0
- package/dist/src/core/protocol/types.d.ts.map +1 -0
- package/dist/src/core/protocol/types.js +149 -0
- package/dist/src/core/protocol/types.js.map +1 -0
- package/dist/src/core/queues/atomic-counter.d.ts +36 -0
- package/dist/src/core/queues/atomic-counter.d.ts.map +1 -0
- package/dist/src/core/queues/atomic-counter.js +46 -0
- package/dist/src/core/queues/atomic-counter.js.map +1 -0
- package/dist/src/core/queues/event-queue.d.ts +126 -0
- package/dist/src/core/queues/event-queue.d.ts.map +1 -0
- package/dist/src/core/queues/event-queue.js +208 -0
- package/dist/src/core/queues/event-queue.js.map +1 -0
- package/dist/src/core/queues/index.d.ts +12 -0
- package/dist/src/core/queues/index.d.ts.map +1 -0
- package/dist/src/core/queues/index.js +15 -0
- package/dist/src/core/queues/index.js.map +1 -0
- package/dist/src/core/queues/submission-queue.d.ts +116 -0
- package/dist/src/core/queues/submission-queue.d.ts.map +1 -0
- package/dist/src/core/queues/submission-queue.js +236 -0
- package/dist/src/core/queues/submission-queue.js.map +1 -0
- package/dist/src/costs/index.d.ts +22 -0
- package/dist/src/costs/index.d.ts.map +1 -0
- package/dist/src/costs/index.js +22 -0
- package/dist/src/costs/index.js.map +1 -0
- package/dist/src/costs/model-registry.d.ts +80 -0
- package/dist/src/costs/model-registry.d.ts.map +1 -0
- package/dist/src/costs/model-registry.js +237 -0
- package/dist/src/costs/model-registry.js.map +1 -0
- package/dist/src/costs/types.d.ts +50 -0
- package/dist/src/costs/types.d.ts.map +1 -0
- package/dist/src/costs/types.js +2 -0
- package/dist/src/costs/types.js.map +1 -0
- package/dist/src/defaults.d.ts +114 -0
- package/dist/src/defaults.d.ts.map +1 -0
- package/dist/src/defaults.js +457 -0
- package/dist/src/defaults.js.map +1 -0
- package/dist/src/first-run.d.ts +35 -0
- package/dist/src/first-run.d.ts.map +1 -0
- package/dist/src/first-run.js +94 -0
- package/dist/src/first-run.js.map +1 -0
- package/dist/src/hello.d.ts +2 -0
- package/dist/src/hello.d.ts.map +1 -0
- package/dist/src/hello.js +4 -0
- package/dist/src/hello.js.map +1 -0
- package/dist/src/integrations/agent-registry.d.ts +160 -0
- package/dist/src/integrations/agent-registry.d.ts.map +1 -0
- package/dist/src/integrations/agent-registry.js +446 -0
- package/dist/src/integrations/agent-registry.js.map +1 -0
- package/dist/src/integrations/auto-compaction.d.ts +177 -0
- package/dist/src/integrations/auto-compaction.d.ts.map +1 -0
- package/dist/src/integrations/auto-compaction.js +428 -0
- package/dist/src/integrations/auto-compaction.js.map +1 -0
- package/dist/src/integrations/cancellation.d.ts +162 -0
- package/dist/src/integrations/cancellation.d.ts.map +1 -0
- package/dist/src/integrations/cancellation.js +339 -0
- package/dist/src/integrations/cancellation.js.map +1 -0
- package/dist/src/integrations/codebase-context.d.ts +319 -0
- package/dist/src/integrations/codebase-context.d.ts.map +1 -0
- package/dist/src/integrations/codebase-context.js +816 -0
- package/dist/src/integrations/codebase-context.js.map +1 -0
- package/dist/src/integrations/compaction.d.ts +192 -0
- package/dist/src/integrations/compaction.d.ts.map +1 -0
- package/dist/src/integrations/compaction.js +376 -0
- package/dist/src/integrations/compaction.js.map +1 -0
- package/dist/src/integrations/context-engineering.d.ts +246 -0
- package/dist/src/integrations/context-engineering.d.ts.map +1 -0
- package/dist/src/integrations/context-engineering.js +394 -0
- package/dist/src/integrations/context-engineering.js.map +1 -0
- package/dist/src/integrations/diff-utils.d.ts +105 -0
- package/dist/src/integrations/diff-utils.d.ts.map +1 -0
- package/dist/src/integrations/diff-utils.js +497 -0
- package/dist/src/integrations/diff-utils.js.map +1 -0
- package/dist/src/integrations/economics.d.ts +192 -0
- package/dist/src/integrations/economics.d.ts.map +1 -0
- package/dist/src/integrations/economics.js +431 -0
- package/dist/src/integrations/economics.js.map +1 -0
- package/dist/src/integrations/execution-policy.d.ts +189 -0
- package/dist/src/integrations/execution-policy.d.ts.map +1 -0
- package/dist/src/integrations/execution-policy.js +352 -0
- package/dist/src/integrations/execution-policy.js.map +1 -0
- package/dist/src/integrations/file-change-tracker.d.ts +161 -0
- package/dist/src/integrations/file-change-tracker.d.ts.map +1 -0
- package/dist/src/integrations/file-change-tracker.js +520 -0
- package/dist/src/integrations/file-change-tracker.js.map +1 -0
- package/dist/src/integrations/hierarchical-config.d.ts +212 -0
- package/dist/src/integrations/hierarchical-config.d.ts.map +1 -0
- package/dist/src/integrations/hierarchical-config.js +484 -0
- package/dist/src/integrations/hierarchical-config.js.map +1 -0
- package/dist/src/integrations/hooks.d.ts +114 -0
- package/dist/src/integrations/hooks.d.ts.map +1 -0
- package/dist/src/integrations/hooks.js +326 -0
- package/dist/src/integrations/hooks.js.map +1 -0
- package/dist/src/integrations/ignore.d.ts +143 -0
- package/dist/src/integrations/ignore.d.ts.map +1 -0
- package/dist/src/integrations/ignore.js +417 -0
- package/dist/src/integrations/ignore.js.map +1 -0
- package/dist/src/integrations/image-renderer.d.ts +119 -0
- package/dist/src/integrations/image-renderer.d.ts.map +1 -0
- package/dist/src/integrations/image-renderer.js +306 -0
- package/dist/src/integrations/image-renderer.js.map +1 -0
- package/dist/src/integrations/index.d.ts +42 -0
- package/dist/src/integrations/index.d.ts.map +1 -0
- package/dist/src/integrations/index.js +73 -0
- package/dist/src/integrations/index.js.map +1 -0
- package/dist/src/integrations/lsp.d.ts +196 -0
- package/dist/src/integrations/lsp.d.ts.map +1 -0
- package/dist/src/integrations/lsp.js +582 -0
- package/dist/src/integrations/lsp.js.map +1 -0
- package/dist/src/integrations/mcp-client.d.ts +270 -0
- package/dist/src/integrations/mcp-client.d.ts.map +1 -0
- package/dist/src/integrations/mcp-client.js +698 -0
- package/dist/src/integrations/mcp-client.js.map +1 -0
- package/dist/src/integrations/mcp-tool-search.d.ts +77 -0
- package/dist/src/integrations/mcp-tool-search.d.ts.map +1 -0
- package/dist/src/integrations/mcp-tool-search.js +220 -0
- package/dist/src/integrations/mcp-tool-search.js.map +1 -0
- package/dist/src/integrations/memory.d.ts +108 -0
- package/dist/src/integrations/memory.d.ts.map +1 -0
- package/dist/src/integrations/memory.js +288 -0
- package/dist/src/integrations/memory.js.map +1 -0
- package/dist/src/integrations/multi-agent.d.ts +150 -0
- package/dist/src/integrations/multi-agent.d.ts.map +1 -0
- package/dist/src/integrations/multi-agent.js +306 -0
- package/dist/src/integrations/multi-agent.js.map +1 -0
- package/dist/src/integrations/observability.d.ts +162 -0
- package/dist/src/integrations/observability.d.ts.map +1 -0
- package/dist/src/integrations/observability.js +406 -0
- package/dist/src/integrations/observability.js.map +1 -0
- package/dist/src/integrations/openrouter-pricing.d.ts +42 -0
- package/dist/src/integrations/openrouter-pricing.d.ts.map +1 -0
- package/dist/src/integrations/openrouter-pricing.js +124 -0
- package/dist/src/integrations/openrouter-pricing.js.map +1 -0
- package/dist/src/integrations/pending-plan.d.ts +171 -0
- package/dist/src/integrations/pending-plan.d.ts.map +1 -0
- package/dist/src/integrations/pending-plan.js +244 -0
- package/dist/src/integrations/pending-plan.js.map +1 -0
- package/dist/src/integrations/persistence.d.ts +48 -0
- package/dist/src/integrations/persistence.d.ts.map +1 -0
- package/dist/src/integrations/persistence.js +196 -0
- package/dist/src/integrations/persistence.js.map +1 -0
- package/dist/src/integrations/planning.d.ts +96 -0
- package/dist/src/integrations/planning.d.ts.map +1 -0
- package/dist/src/integrations/planning.js +338 -0
- package/dist/src/integrations/planning.js.map +1 -0
- package/dist/src/integrations/pty-shell.d.ts +169 -0
- package/dist/src/integrations/pty-shell.d.ts.map +1 -0
- package/dist/src/integrations/pty-shell.js +367 -0
- package/dist/src/integrations/pty-shell.js.map +1 -0
- package/dist/src/integrations/react.d.ts +139 -0
- package/dist/src/integrations/react.d.ts.map +1 -0
- package/dist/src/integrations/react.js +273 -0
- package/dist/src/integrations/react.js.map +1 -0
- package/dist/src/integrations/resources.d.ts +177 -0
- package/dist/src/integrations/resources.d.ts.map +1 -0
- package/dist/src/integrations/resources.js +311 -0
- package/dist/src/integrations/resources.js.map +1 -0
- package/dist/src/integrations/result-synthesizer.d.ts +389 -0
- package/dist/src/integrations/result-synthesizer.d.ts.map +1 -0
- package/dist/src/integrations/result-synthesizer.js +951 -0
- package/dist/src/integrations/result-synthesizer.js.map +1 -0
- package/dist/src/integrations/routing.d.ts +117 -0
- package/dist/src/integrations/routing.d.ts.map +1 -0
- package/dist/src/integrations/routing.js +347 -0
- package/dist/src/integrations/routing.js.map +1 -0
- package/dist/src/integrations/rules.d.ts +131 -0
- package/dist/src/integrations/rules.d.ts.map +1 -0
- package/dist/src/integrations/rules.js +284 -0
- package/dist/src/integrations/rules.js.map +1 -0
- package/dist/src/integrations/safety.d.ts +142 -0
- package/dist/src/integrations/safety.d.ts.map +1 -0
- package/dist/src/integrations/safety.js +342 -0
- package/dist/src/integrations/safety.js.map +1 -0
- package/dist/src/integrations/sandbox/basic.d.ts +74 -0
- package/dist/src/integrations/sandbox/basic.d.ts.map +1 -0
- package/dist/src/integrations/sandbox/basic.js +310 -0
- package/dist/src/integrations/sandbox/basic.js.map +1 -0
- package/dist/src/integrations/sandbox/docker.d.ts +94 -0
- package/dist/src/integrations/sandbox/docker.d.ts.map +1 -0
- package/dist/src/integrations/sandbox/docker.js +293 -0
- package/dist/src/integrations/sandbox/docker.js.map +1 -0
- package/dist/src/integrations/sandbox/index.d.ts +182 -0
- package/dist/src/integrations/sandbox/index.d.ts.map +1 -0
- package/dist/src/integrations/sandbox/index.js +382 -0
- package/dist/src/integrations/sandbox/index.js.map +1 -0
- package/dist/src/integrations/sandbox/landlock.d.ts +59 -0
- package/dist/src/integrations/sandbox/landlock.d.ts.map +1 -0
- package/dist/src/integrations/sandbox/landlock.js +326 -0
- package/dist/src/integrations/sandbox/landlock.js.map +1 -0
- package/dist/src/integrations/sandbox/seatbelt.d.ts +68 -0
- package/dist/src/integrations/sandbox/seatbelt.d.ts.map +1 -0
- package/dist/src/integrations/sandbox/seatbelt.js +298 -0
- package/dist/src/integrations/sandbox/seatbelt.js.map +1 -0
- package/dist/src/integrations/semantic-cache.d.ts +178 -0
- package/dist/src/integrations/semantic-cache.d.ts.map +1 -0
- package/dist/src/integrations/semantic-cache.js +372 -0
- package/dist/src/integrations/semantic-cache.js.map +1 -0
- package/dist/src/integrations/session-store.d.ts +183 -0
- package/dist/src/integrations/session-store.d.ts.map +1 -0
- package/dist/src/integrations/session-store.js +345 -0
- package/dist/src/integrations/session-store.js.map +1 -0
- package/dist/src/integrations/shared-blackboard.d.ts +403 -0
- package/dist/src/integrations/shared-blackboard.d.ts.map +1 -0
- package/dist/src/integrations/shared-blackboard.js +710 -0
- package/dist/src/integrations/shared-blackboard.js.map +1 -0
- package/dist/src/integrations/skills.d.ts +171 -0
- package/dist/src/integrations/skills.d.ts.map +1 -0
- package/dist/src/integrations/skills.js +403 -0
- package/dist/src/integrations/skills.js.map +1 -0
- package/dist/src/integrations/smart-decomposer.d.ts +322 -0
- package/dist/src/integrations/smart-decomposer.d.ts.map +1 -0
- package/dist/src/integrations/smart-decomposer.js +856 -0
- package/dist/src/integrations/smart-decomposer.js.map +1 -0
- package/dist/src/integrations/sourcegraph.d.ts +169 -0
- package/dist/src/integrations/sourcegraph.d.ts.map +1 -0
- package/dist/src/integrations/sourcegraph.js +379 -0
- package/dist/src/integrations/sourcegraph.js.map +1 -0
- package/dist/src/integrations/sqlite-store.d.ts +518 -0
- package/dist/src/integrations/sqlite-store.d.ts.map +1 -0
- package/dist/src/integrations/sqlite-store.js +1423 -0
- package/dist/src/integrations/sqlite-store.js.map +1 -0
- package/dist/src/integrations/streaming.d.ts +102 -0
- package/dist/src/integrations/streaming.d.ts.map +1 -0
- package/dist/src/integrations/streaming.js +362 -0
- package/dist/src/integrations/streaming.js.map +1 -0
- package/dist/src/integrations/thread-manager.d.ts +199 -0
- package/dist/src/integrations/thread-manager.d.ts.map +1 -0
- package/dist/src/integrations/thread-manager.js +357 -0
- package/dist/src/integrations/thread-manager.js.map +1 -0
- package/dist/src/main.d.ts +26 -0
- package/dist/src/main.d.ts.map +1 -0
- package/dist/src/main.js +170 -0
- package/dist/src/main.js.map +1 -0
- package/dist/src/modes/index.d.ts +10 -0
- package/dist/src/modes/index.d.ts.map +1 -0
- package/dist/src/modes/index.js +10 -0
- package/dist/src/modes/index.js.map +1 -0
- package/dist/src/modes/repl.d.ts +19 -0
- package/dist/src/modes/repl.d.ts.map +1 -0
- package/dist/src/modes/repl.js +393 -0
- package/dist/src/modes/repl.js.map +1 -0
- package/dist/src/modes/tui.d.ts +29 -0
- package/dist/src/modes/tui.d.ts.map +1 -0
- package/dist/src/modes/tui.js +272 -0
- package/dist/src/modes/tui.js.map +1 -0
- package/dist/src/modes.d.ts +179 -0
- package/dist/src/modes.d.ts.map +1 -0
- package/dist/src/modes.js +385 -0
- package/dist/src/modes.js.map +1 -0
- package/dist/src/observability/tracer.d.ts +111 -0
- package/dist/src/observability/tracer.d.ts.map +1 -0
- package/dist/src/observability/tracer.js +300 -0
- package/dist/src/observability/tracer.js.map +1 -0
- package/dist/src/observability/types.d.ts +271 -0
- package/dist/src/observability/types.d.ts.map +1 -0
- package/dist/src/observability/types.js +24 -0
- package/dist/src/observability/types.js.map +1 -0
- package/dist/src/paths.d.ts +101 -0
- package/dist/src/paths.d.ts.map +1 -0
- package/dist/src/paths.js +148 -0
- package/dist/src/paths.js.map +1 -0
- package/dist/src/persistence/index.d.ts +38 -0
- package/dist/src/persistence/index.d.ts.map +1 -0
- package/dist/src/persistence/index.js +48 -0
- package/dist/src/persistence/index.js.map +1 -0
- package/dist/src/persistence/migrator.d.ts +135 -0
- package/dist/src/persistence/migrator.d.ts.map +1 -0
- package/dist/src/persistence/migrator.js +303 -0
- package/dist/src/persistence/migrator.js.map +1 -0
- package/dist/src/persistence/schema.d.ts +101 -0
- package/dist/src/persistence/schema.d.ts.map +1 -0
- package/dist/src/persistence/schema.js +395 -0
- package/dist/src/persistence/schema.js.map +1 -0
- package/dist/src/providers/adapters/anthropic.d.ts +20 -0
- package/dist/src/providers/adapters/anthropic.d.ts.map +1 -0
- package/dist/src/providers/adapters/anthropic.js +124 -0
- package/dist/src/providers/adapters/anthropic.js.map +1 -0
- package/dist/src/providers/adapters/mock.d.ts +25 -0
- package/dist/src/providers/adapters/mock.d.ts.map +1 -0
- package/dist/src/providers/adapters/mock.js +133 -0
- package/dist/src/providers/adapters/mock.js.map +1 -0
- package/dist/src/providers/adapters/openai.d.ts +21 -0
- package/dist/src/providers/adapters/openai.d.ts.map +1 -0
- package/dist/src/providers/adapters/openai.js +126 -0
- package/dist/src/providers/adapters/openai.js.map +1 -0
- package/dist/src/providers/adapters/openrouter.d.ts +49 -0
- package/dist/src/providers/adapters/openrouter.d.ts.map +1 -0
- package/dist/src/providers/adapters/openrouter.js +363 -0
- package/dist/src/providers/adapters/openrouter.js.map +1 -0
- package/dist/src/providers/provider.d.ts +54 -0
- package/dist/src/providers/provider.d.ts.map +1 -0
- package/dist/src/providers/provider.js +111 -0
- package/dist/src/providers/provider.js.map +1 -0
- package/dist/src/providers/resilient-fetch.d.ts +99 -0
- package/dist/src/providers/resilient-fetch.d.ts.map +1 -0
- package/dist/src/providers/resilient-fetch.js +208 -0
- package/dist/src/providers/resilient-fetch.js.map +1 -0
- package/dist/src/providers/types.d.ts +227 -0
- package/dist/src/providers/types.d.ts.map +1 -0
- package/dist/src/providers/types.js +24 -0
- package/dist/src/providers/types.js.map +1 -0
- package/dist/src/session-picker.d.ts +28 -0
- package/dist/src/session-picker.d.ts.map +1 -0
- package/dist/src/session-picker.js +256 -0
- package/dist/src/session-picker.js.map +1 -0
- package/dist/src/test-sqlite.d.ts +2 -0
- package/dist/src/test-sqlite.d.ts.map +1 -0
- package/dist/src/test-sqlite.js +114 -0
- package/dist/src/test-sqlite.js.map +1 -0
- package/dist/src/tools/agent.d.ts +44 -0
- package/dist/src/tools/agent.d.ts.map +1 -0
- package/dist/src/tools/agent.js +110 -0
- package/dist/src/tools/agent.js.map +1 -0
- package/dist/src/tools/bash.d.ts +52 -0
- package/dist/src/tools/bash.d.ts.map +1 -0
- package/dist/src/tools/bash.js +141 -0
- package/dist/src/tools/bash.js.map +1 -0
- package/dist/src/tools/file.d.ts +47 -0
- package/dist/src/tools/file.d.ts.map +1 -0
- package/dist/src/tools/file.js +263 -0
- package/dist/src/tools/file.js.map +1 -0
- package/dist/src/tools/permission.d.ts +43 -0
- package/dist/src/tools/permission.d.ts.map +1 -0
- package/dist/src/tools/permission.js +216 -0
- package/dist/src/tools/permission.js.map +1 -0
- package/dist/src/tools/registry.d.ts +63 -0
- package/dist/src/tools/registry.d.ts.map +1 -0
- package/dist/src/tools/registry.js +250 -0
- package/dist/src/tools/registry.js.map +1 -0
- package/dist/src/tools/standard.d.ts +57 -0
- package/dist/src/tools/standard.d.ts.map +1 -0
- package/dist/src/tools/standard.js +113 -0
- package/dist/src/tools/standard.js.map +1 -0
- package/dist/src/tools/types.d.ts +146 -0
- package/dist/src/tools/types.d.ts.map +1 -0
- package/dist/src/tools/types.js +28 -0
- package/dist/src/tools/types.js.map +1 -0
- package/dist/src/tools/undo.d.ts +71 -0
- package/dist/src/tools/undo.d.ts.map +1 -0
- package/dist/src/tools/undo.js +123 -0
- package/dist/src/tools/undo.js.map +1 -0
- package/dist/src/tracing/cache-boundary-tracker.d.ts +189 -0
- package/dist/src/tracing/cache-boundary-tracker.d.ts.map +1 -0
- package/dist/src/tracing/cache-boundary-tracker.js +411 -0
- package/dist/src/tracing/cache-boundary-tracker.js.map +1 -0
- package/dist/src/tracing/trace-collector.d.ts +274 -0
- package/dist/src/tracing/trace-collector.d.ts.map +1 -0
- package/dist/src/tracing/trace-collector.js +727 -0
- package/dist/src/tracing/trace-collector.js.map +1 -0
- package/dist/src/tracing/types.d.ts +657 -0
- package/dist/src/tracing/types.d.ts.map +1 -0
- package/dist/src/tracing/types.js +39 -0
- package/dist/src/tracing/types.js.map +1 -0
- package/dist/src/tricks/failure-evidence.d.ts +268 -0
- package/dist/src/tricks/failure-evidence.d.ts.map +1 -0
- package/dist/src/tricks/failure-evidence.js +544 -0
- package/dist/src/tricks/failure-evidence.js.map +1 -0
- package/dist/src/tricks/json-utils.d.ts +77 -0
- package/dist/src/tricks/json-utils.d.ts.map +1 -0
- package/dist/src/tricks/json-utils.js +247 -0
- package/dist/src/tricks/json-utils.js.map +1 -0
- package/dist/src/tricks/kv-cache-context.d.ts +227 -0
- package/dist/src/tricks/kv-cache-context.d.ts.map +1 -0
- package/dist/src/tricks/kv-cache-context.js +377 -0
- package/dist/src/tricks/kv-cache-context.js.map +1 -0
- package/dist/src/tricks/recitation.d.ts +208 -0
- package/dist/src/tricks/recitation.d.ts.map +1 -0
- package/dist/src/tricks/recitation.js +374 -0
- package/dist/src/tricks/recitation.js.map +1 -0
- package/dist/src/tricks/reversible-compaction.d.ts +251 -0
- package/dist/src/tricks/reversible-compaction.d.ts.map +1 -0
- package/dist/src/tricks/reversible-compaction.js +555 -0
- package/dist/src/tricks/reversible-compaction.js.map +1 -0
- package/dist/src/tricks/serialization-diversity.d.ts +197 -0
- package/dist/src/tricks/serialization-diversity.d.ts.map +1 -0
- package/dist/src/tricks/serialization-diversity.js +460 -0
- package/dist/src/tricks/serialization-diversity.js.map +1 -0
- package/dist/src/tui/app.d.ts +42 -0
- package/dist/src/tui/app.d.ts.map +1 -0
- package/dist/src/tui/app.js +1076 -0
- package/dist/src/tui/app.js.map +1 -0
- package/dist/src/tui/components/ApprovalDialog.d.ts +28 -0
- package/dist/src/tui/components/ApprovalDialog.d.ts.map +1 -0
- package/dist/src/tui/components/ApprovalDialog.js +59 -0
- package/dist/src/tui/components/ApprovalDialog.js.map +1 -0
- package/dist/src/tui/components/InputArea.d.ts +35 -0
- package/dist/src/tui/components/InputArea.d.ts.map +1 -0
- package/dist/src/tui/components/InputArea.js +144 -0
- package/dist/src/tui/components/InputArea.js.map +1 -0
- package/dist/src/tui/components/MessageItem.d.ts +28 -0
- package/dist/src/tui/components/MessageItem.d.ts.map +1 -0
- package/dist/src/tui/components/MessageItem.js +27 -0
- package/dist/src/tui/components/MessageItem.js.map +1 -0
- package/dist/src/tui/components/ScrollableBox.d.ts +41 -0
- package/dist/src/tui/components/ScrollableBox.d.ts.map +1 -0
- package/dist/src/tui/components/ScrollableBox.js +101 -0
- package/dist/src/tui/components/ScrollableBox.js.map +1 -0
- package/dist/src/tui/components/ToolCallItem.d.ts +33 -0
- package/dist/src/tui/components/ToolCallItem.d.ts.map +1 -0
- package/dist/src/tui/components/ToolCallItem.js +91 -0
- package/dist/src/tui/components/ToolCallItem.js.map +1 -0
- package/dist/src/tui/components/index.d.ts +13 -0
- package/dist/src/tui/components/index.d.ts.map +1 -0
- package/dist/src/tui/components/index.js +15 -0
- package/dist/src/tui/components/index.js.map +1 -0
- package/dist/src/tui/event-display.d.ts +19 -0
- package/dist/src/tui/event-display.d.ts.map +1 -0
- package/dist/src/tui/event-display.js +178 -0
- package/dist/src/tui/event-display.js.map +1 -0
- package/dist/src/tui/index.d.ts +105 -0
- package/dist/src/tui/index.d.ts.map +1 -0
- package/dist/src/tui/index.js +214 -0
- package/dist/src/tui/index.js.map +1 -0
- package/dist/src/tui/input/CommandPalette.d.ts +55 -0
- package/dist/src/tui/input/CommandPalette.d.ts.map +1 -0
- package/dist/src/tui/input/CommandPalette.js +135 -0
- package/dist/src/tui/input/CommandPalette.js.map +1 -0
- package/dist/src/tui/input/index.d.ts +7 -0
- package/dist/src/tui/input/index.d.ts.map +1 -0
- package/dist/src/tui/input/index.js +7 -0
- package/dist/src/tui/input/index.js.map +1 -0
- package/dist/src/tui/theme/index.d.ts +45 -0
- package/dist/src/tui/theme/index.d.ts.map +1 -0
- package/dist/src/tui/theme/index.js +215 -0
- package/dist/src/tui/theme/index.js.map +1 -0
- package/dist/src/tui/types.d.ts +214 -0
- package/dist/src/tui/types.d.ts.map +1 -0
- package/dist/src/tui/types.js +27 -0
- package/dist/src/tui/types.js.map +1 -0
- package/dist/src/types.d.ts +905 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +9 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +89 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Mode
|
|
3
|
+
*
|
|
4
|
+
* Full-featured Terminal User Interface for the coding agent.
|
|
5
|
+
* Uses Ink/React for rendering with anti-flicker patterns.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Flicker-free rendering via Ink's <Static> component
|
|
9
|
+
* - Single useInput hook (no input conflicts)
|
|
10
|
+
* - Command palette with fuzzy search (Ctrl+P)
|
|
11
|
+
* - Theme system (dark, light, high-contrast)
|
|
12
|
+
* - LSP integration for code intelligence
|
|
13
|
+
* - Session persistence with checkpoints
|
|
14
|
+
*/
|
|
15
|
+
import type { LLMProviderWithTools } from '../providers/types.js';
|
|
16
|
+
import type { PermissionMode } from '../tools/types.js';
|
|
17
|
+
export interface TUIModeOptions {
|
|
18
|
+
permissionMode?: PermissionMode;
|
|
19
|
+
maxIterations?: number;
|
|
20
|
+
model?: string;
|
|
21
|
+
trace?: boolean;
|
|
22
|
+
theme?: 'dark' | 'light' | 'auto';
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Start the TUI mode.
|
|
26
|
+
* Falls back to REPL mode if TUI is not available.
|
|
27
|
+
*/
|
|
28
|
+
export declare function startTUIMode(provider: LLMProviderWithTools, options?: TUIModeOptions): Promise<void>;
|
|
29
|
+
//# sourceMappingURL=tui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../../src/modes/tui.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA6BxD,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA0Qf"}
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TUI Mode
|
|
3
|
+
*
|
|
4
|
+
* Full-featured Terminal User Interface for the coding agent.
|
|
5
|
+
* Uses Ink/React for rendering with anti-flicker patterns.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Flicker-free rendering via Ink's <Static> component
|
|
9
|
+
* - Single useInput hook (no input conflicts)
|
|
10
|
+
* - Command palette with fuzzy search (Ctrl+P)
|
|
11
|
+
* - Theme system (dark, light, high-contrast)
|
|
12
|
+
* - LSP integration for code intelligence
|
|
13
|
+
* - Session persistence with checkpoints
|
|
14
|
+
*/
|
|
15
|
+
import { createProductionAgent } from '../agent.js';
|
|
16
|
+
import { ProviderAdapter, convertToolsFromRegistry, createTUIApprovalBridge } from '../adapters.js';
|
|
17
|
+
import { createStandardRegistry } from '../tools/standard.js';
|
|
18
|
+
import { TUIPermissionChecker } from '../tools/permission.js';
|
|
19
|
+
import { createSQLiteStore, createSessionStore, createMCPClient, createCompactor, } from '../integrations/index.js';
|
|
20
|
+
import { persistenceDebug, saveCheckpointToStore, loadSessionState, } from '../integrations/persistence.js';
|
|
21
|
+
import { getMCPConfigPaths } from '../paths.js';
|
|
22
|
+
import { showSessionPicker, showQuickPicker, formatSessionsTable } from '../session-picker.js';
|
|
23
|
+
import { createLSPManager } from '../integrations/lsp.js';
|
|
24
|
+
import { createLSPFileTools } from '../agent-tools/lsp-file-tools.js';
|
|
25
|
+
import { initPricingCache } from '../integrations/openrouter-pricing.js';
|
|
26
|
+
// Import TUI components and utilities
|
|
27
|
+
import { TUIApp, checkTUICapabilities } from '../tui/index.js';
|
|
28
|
+
// Import REPL mode for fallback
|
|
29
|
+
import { startProductionREPL } from './repl.js';
|
|
30
|
+
/**
|
|
31
|
+
* Start the TUI mode.
|
|
32
|
+
* Falls back to REPL mode if TUI is not available.
|
|
33
|
+
*/
|
|
34
|
+
export async function startTUIMode(provider, options = {}) {
|
|
35
|
+
const { permissionMode = 'interactive', maxIterations = 50, model, trace = false, theme = 'auto', } = options;
|
|
36
|
+
try {
|
|
37
|
+
// Check Ink availability
|
|
38
|
+
const capabilities = await checkTUICapabilities();
|
|
39
|
+
if (!capabilities.inkAvailable) {
|
|
40
|
+
console.log('! TUI not available. Falling back to legacy mode.');
|
|
41
|
+
return startProductionREPL(provider, options);
|
|
42
|
+
}
|
|
43
|
+
// Enable TUI mode for debug logger to prevent console interference with Ink
|
|
44
|
+
persistenceDebug.enableTUIMode();
|
|
45
|
+
// CRITICAL: Initialize session storage FIRST, before any heavy dynamic imports
|
|
46
|
+
// This ensures better-sqlite3 native module loads cleanly
|
|
47
|
+
let sessionStore;
|
|
48
|
+
persistenceDebug.log('[TUI] Initializing session store BEFORE dynamic imports...');
|
|
49
|
+
try {
|
|
50
|
+
sessionStore = await createSQLiteStore({ baseDir: '.agent/sessions' });
|
|
51
|
+
if (persistenceDebug.isEnabled()) {
|
|
52
|
+
const sqliteStore = sessionStore;
|
|
53
|
+
const stats = sqliteStore.getStats();
|
|
54
|
+
persistenceDebug.log('[TUI] SQLite store initialized!', { sessions: stats.sessionCount, checkpoints: stats.checkpointCount });
|
|
55
|
+
}
|
|
56
|
+
console.log('+ SQLite session store initialized');
|
|
57
|
+
}
|
|
58
|
+
catch (sqliteError) {
|
|
59
|
+
const errMsg = sqliteError.message;
|
|
60
|
+
if (persistenceDebug.isEnabled()) {
|
|
61
|
+
process.stderr.write(`[DEBUG] [TUI] SQLite FAILED: ${errMsg}\n`);
|
|
62
|
+
}
|
|
63
|
+
console.log('! SQLite unavailable, using JSONL fallback');
|
|
64
|
+
console.log(` Error: ${errMsg}`);
|
|
65
|
+
sessionStore = await createSessionStore({ baseDir: '.agent/sessions' });
|
|
66
|
+
}
|
|
67
|
+
// Dynamic imports - using our modular TUI components
|
|
68
|
+
const { render } = await import('ink');
|
|
69
|
+
const React = await import('react');
|
|
70
|
+
// Initialize pricing cache from OpenRouter
|
|
71
|
+
await initPricingCache();
|
|
72
|
+
// Setup agent
|
|
73
|
+
// Create approval bridge FIRST so we can use it for the permission checker
|
|
74
|
+
// This must be created before the registry to inject the TUI permission checker
|
|
75
|
+
const approvalBridge = permissionMode === 'interactive' ? createTUIApprovalBridge() : null;
|
|
76
|
+
// Create registry with the real permission mode
|
|
77
|
+
// For interactive mode, we inject a TUIPermissionChecker that routes through the TUI dialog
|
|
78
|
+
// This prevents the console-based permission prompt from conflicting with Ink
|
|
79
|
+
const registry = createStandardRegistry(permissionMode);
|
|
80
|
+
// In interactive mode, inject TUI permission checker that routes through approval dialog
|
|
81
|
+
if (approvalBridge) {
|
|
82
|
+
const tuiChecker = new TUIPermissionChecker(approvalBridge);
|
|
83
|
+
registry.setPermissionChecker(tuiChecker);
|
|
84
|
+
}
|
|
85
|
+
const tools = convertToolsFromRegistry(registry);
|
|
86
|
+
const adaptedProvider = new ProviderAdapter(provider, model);
|
|
87
|
+
// Hierarchical MCP config: global (~/.config/attocode/mcp.json) + workspace (.mcp.json)
|
|
88
|
+
const mcpClient = await createMCPClient({
|
|
89
|
+
configPaths: getMCPConfigPaths(),
|
|
90
|
+
lazyLoading: true,
|
|
91
|
+
alwaysLoadTools: [],
|
|
92
|
+
summaryDescriptionLimit: 100,
|
|
93
|
+
maxToolsPerSearch: 5,
|
|
94
|
+
});
|
|
95
|
+
const mcpSummaries = mcpClient.getAllToolSummaries().map(s => ({
|
|
96
|
+
name: s.name,
|
|
97
|
+
description: s.description,
|
|
98
|
+
}));
|
|
99
|
+
// Initialize LSP manager for code intelligence
|
|
100
|
+
const lspManager = createLSPManager({ autoDetect: true });
|
|
101
|
+
let lspServers = [];
|
|
102
|
+
try {
|
|
103
|
+
lspServers = await lspManager.autoStart(process.cwd());
|
|
104
|
+
if (lspServers.length > 0) {
|
|
105
|
+
console.log(`@ LSP: Started ${lspServers.join(', ')} language server(s)`);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
console.log(`* LSP: No language servers found (optional)`);
|
|
109
|
+
console.log(` For inline diagnostics: npm i -g typescript-language-server typescript`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
console.log(`! LSP: Could not start language servers (${err.message})`);
|
|
114
|
+
}
|
|
115
|
+
// Create LSP-enhanced file tools (replaces standard edit_file/write_file)
|
|
116
|
+
const lspFileTools = createLSPFileTools({ lspManager, diagnosticDelay: 500 });
|
|
117
|
+
// Replace standard edit_file/write_file with LSP-enhanced versions
|
|
118
|
+
const standardToolsWithoutFileOps = tools.filter(t => !['edit_file', 'write_file'].includes(t.name));
|
|
119
|
+
const allTools = [...standardToolsWithoutFileOps, ...lspFileTools];
|
|
120
|
+
// approvalBridge is already created above with the permission checker
|
|
121
|
+
const agent = createProductionAgent({
|
|
122
|
+
toolResolver: (toolName) => toolName.startsWith('mcp_') ? mcpClient.getFullToolDefinition(toolName) : null,
|
|
123
|
+
mcpToolSummaries: mcpSummaries,
|
|
124
|
+
provider: adaptedProvider,
|
|
125
|
+
tools: allTools,
|
|
126
|
+
model,
|
|
127
|
+
maxIterations,
|
|
128
|
+
memory: { enabled: true, types: { episodic: true, semantic: true, working: true } },
|
|
129
|
+
planning: { enabled: true, autoplan: true, complexityThreshold: 6 },
|
|
130
|
+
humanInLoop: permissionMode === 'interactive'
|
|
131
|
+
? {
|
|
132
|
+
enabled: true,
|
|
133
|
+
riskThreshold: 'moderate', // Require approval for moderate+ risk tools
|
|
134
|
+
alwaysApprove: [], // Don't auto-approve anything, show dialog
|
|
135
|
+
neverApprove: ['read_file', 'list_files', 'glob', 'grep'], // Safe read tools
|
|
136
|
+
approvalHandler: approvalBridge.handler, // TUI approval handler
|
|
137
|
+
auditLog: true,
|
|
138
|
+
}
|
|
139
|
+
: false,
|
|
140
|
+
// Observability: trace capture to file when --trace, logging disabled in TUI (use debug mode instead)
|
|
141
|
+
observability: trace
|
|
142
|
+
? { enabled: true, traceCapture: { enabled: true, outputDir: '.traces' }, logging: { enabled: false } }
|
|
143
|
+
: undefined,
|
|
144
|
+
// Hooks: Only enable console output in debug mode
|
|
145
|
+
hooks: {
|
|
146
|
+
enabled: true,
|
|
147
|
+
builtIn: {
|
|
148
|
+
logging: persistenceDebug.isEnabled(), // Only show [Hook] logs in debug mode
|
|
149
|
+
timing: persistenceDebug.isEnabled(), // Only show timing in debug mode
|
|
150
|
+
metrics: true,
|
|
151
|
+
},
|
|
152
|
+
custom: [],
|
|
153
|
+
},
|
|
154
|
+
});
|
|
155
|
+
// Session store was already initialized at the top
|
|
156
|
+
const compactor = createCompactor(adaptedProvider, {
|
|
157
|
+
tokenThreshold: 80000,
|
|
158
|
+
preserveRecentCount: 10,
|
|
159
|
+
});
|
|
160
|
+
// Check for existing sessions to offer resume
|
|
161
|
+
let currentSessionId;
|
|
162
|
+
let resumedSession = false;
|
|
163
|
+
const existingSessions = await sessionStore.listSessions();
|
|
164
|
+
persistenceDebug.log('[TUI] Checking existing sessions', { count: existingSessions.length });
|
|
165
|
+
if (existingSessions.length > 0) {
|
|
166
|
+
const pickerResult = await showQuickPicker(existingSessions);
|
|
167
|
+
if (pickerResult.action === 'cancel') {
|
|
168
|
+
// User typed 'list' - show full picker
|
|
169
|
+
const fullResult = await showSessionPicker(existingSessions);
|
|
170
|
+
if (fullResult.action === 'resume' && fullResult.sessionId) {
|
|
171
|
+
currentSessionId = fullResult.sessionId;
|
|
172
|
+
resumedSession = true;
|
|
173
|
+
}
|
|
174
|
+
else if (fullResult.action === 'cancel') {
|
|
175
|
+
console.log('Goodbye!');
|
|
176
|
+
await mcpClient.cleanup();
|
|
177
|
+
await agent.cleanup();
|
|
178
|
+
await lspManager.cleanup();
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
currentSessionId = await sessionStore.createSession();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
else if (pickerResult.action === 'resume' && pickerResult.sessionId) {
|
|
186
|
+
currentSessionId = pickerResult.sessionId;
|
|
187
|
+
resumedSession = true;
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
currentSessionId = await sessionStore.createSession();
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
currentSessionId = await sessionStore.createSession();
|
|
195
|
+
}
|
|
196
|
+
persistenceDebug.log('[TUI] Session selected', {
|
|
197
|
+
sessionId: currentSessionId,
|
|
198
|
+
resumed: resumedSession,
|
|
199
|
+
storeType: persistenceDebug.storeType(sessionStore),
|
|
200
|
+
});
|
|
201
|
+
// CRITICAL: Sync the session ID to the store's internal state
|
|
202
|
+
sessionStore.setCurrentSessionId(currentSessionId);
|
|
203
|
+
// If resuming, load the session state
|
|
204
|
+
if (resumedSession) {
|
|
205
|
+
const sessionState = await loadSessionState(sessionStore, currentSessionId);
|
|
206
|
+
if (sessionState?.messages) {
|
|
207
|
+
agent.loadState({
|
|
208
|
+
messages: sessionState.messages,
|
|
209
|
+
iteration: sessionState.iteration,
|
|
210
|
+
metrics: sessionState.metrics,
|
|
211
|
+
plan: sessionState.plan,
|
|
212
|
+
memoryContext: sessionState.memoryContext,
|
|
213
|
+
});
|
|
214
|
+
console.log(`+ Resumed ${sessionState.messages.length} messages from session`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// Get git branch for status line (using execFileSync for safety - no shell injection possible)
|
|
218
|
+
const getGitBranch = () => {
|
|
219
|
+
try {
|
|
220
|
+
const { execFileSync } = require('child_process');
|
|
221
|
+
return execFileSync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], { encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
return '';
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
const gitBranch = getGitBranch();
|
|
228
|
+
// Render TUI (don't clear in debug mode so we can see initialization messages)
|
|
229
|
+
if (!persistenceDebug.isEnabled()) {
|
|
230
|
+
console.clear();
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
console.log('\n--- TUI Starting (debug mode - console not cleared) ---\n');
|
|
234
|
+
}
|
|
235
|
+
// Pass all required props to the TUIApp
|
|
236
|
+
const tuiProps = {
|
|
237
|
+
agent,
|
|
238
|
+
sessionStore: sessionStore,
|
|
239
|
+
mcpClient,
|
|
240
|
+
compactor,
|
|
241
|
+
lspManager: {
|
|
242
|
+
cleanup: () => lspManager.cleanup(),
|
|
243
|
+
getActiveServers: () => lspManager.getActiveServers(),
|
|
244
|
+
},
|
|
245
|
+
theme: theme,
|
|
246
|
+
model: model || 'default',
|
|
247
|
+
gitBranch,
|
|
248
|
+
currentSessionId,
|
|
249
|
+
formatSessionsTable,
|
|
250
|
+
saveCheckpointToStore,
|
|
251
|
+
loadSessionState,
|
|
252
|
+
persistenceDebug: {
|
|
253
|
+
isEnabled: () => persistenceDebug.isEnabled(),
|
|
254
|
+
log: (message, data) => persistenceDebug.log(message, data),
|
|
255
|
+
error: (message, error) => persistenceDebug.error(message, error),
|
|
256
|
+
},
|
|
257
|
+
// Approval bridge for TUI permission dialogs (only in interactive mode)
|
|
258
|
+
approvalBridge: approvalBridge || undefined,
|
|
259
|
+
};
|
|
260
|
+
const instance = render(React.createElement(TUIApp, tuiProps));
|
|
261
|
+
await instance.waitUntilExit();
|
|
262
|
+
await agent.cleanup();
|
|
263
|
+
await mcpClient.cleanup();
|
|
264
|
+
await lspManager.cleanup();
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
console.error('! TUI failed:', error.message);
|
|
268
|
+
console.log(' Falling back to legacy mode.');
|
|
269
|
+
return startProductionREPL(provider, options);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=tui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../../src/modes/tui.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lesson 25: Agent Modes (OpenCode-inspired)
|
|
3
|
+
*
|
|
4
|
+
* Provides different operational modes for the agent:
|
|
5
|
+
* - Build: Full access to modify files and run commands
|
|
6
|
+
* - Plan: Read-only mode for exploration and planning
|
|
7
|
+
* - Review: Read-only mode focused on code review
|
|
8
|
+
*
|
|
9
|
+
* Users can switch modes with Tab key or /mode command.
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* agent.setMode('plan');
|
|
13
|
+
* const currentMode = agent.getMode();
|
|
14
|
+
*/
|
|
15
|
+
import type { ToolDefinition } from './types.js';
|
|
16
|
+
/**
|
|
17
|
+
* Available agent modes.
|
|
18
|
+
*/
|
|
19
|
+
export type AgentMode = 'build' | 'plan' | 'review' | 'debug';
|
|
20
|
+
/**
|
|
21
|
+
* Mode configuration.
|
|
22
|
+
*/
|
|
23
|
+
export interface ModeConfig {
|
|
24
|
+
/** Display name */
|
|
25
|
+
name: string;
|
|
26
|
+
/** Short description */
|
|
27
|
+
description: string;
|
|
28
|
+
/** Available tool names in this mode */
|
|
29
|
+
availableTools: string[];
|
|
30
|
+
/** Additional system prompt for this mode */
|
|
31
|
+
systemPromptAddition: string;
|
|
32
|
+
/** Color for terminal display (ANSI code) */
|
|
33
|
+
color: string;
|
|
34
|
+
/** Icon for display */
|
|
35
|
+
icon: string;
|
|
36
|
+
/** Whether write operations require approval before execution (plan mode feature) */
|
|
37
|
+
requireWriteApproval: boolean;
|
|
38
|
+
/** Whether to show plan-specific prompts and UI elements */
|
|
39
|
+
showPlanPrompt: boolean;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Mode event types.
|
|
43
|
+
*/
|
|
44
|
+
export type ModeEvent = {
|
|
45
|
+
type: 'mode.changed';
|
|
46
|
+
from: AgentMode;
|
|
47
|
+
to: AgentMode;
|
|
48
|
+
} | {
|
|
49
|
+
type: 'mode.tool.filtered';
|
|
50
|
+
tool: string;
|
|
51
|
+
mode: AgentMode;
|
|
52
|
+
} | {
|
|
53
|
+
type: 'mode.write.intercepted';
|
|
54
|
+
tool: string;
|
|
55
|
+
reason: string;
|
|
56
|
+
};
|
|
57
|
+
export type ModeEventListener = (event: ModeEvent) => void;
|
|
58
|
+
/**
|
|
59
|
+
* Tools that modify the filesystem or execute side effects.
|
|
60
|
+
* In plan mode with write approval, these are queued instead of executed.
|
|
61
|
+
*/
|
|
62
|
+
export declare const WRITE_TOOLS: string[];
|
|
63
|
+
/**
|
|
64
|
+
* Check if a tool is a write operation.
|
|
65
|
+
*/
|
|
66
|
+
export declare function isWriteTool(toolName: string): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Analyze bash command to determine if it's a write operation.
|
|
69
|
+
* Returns true for commands that modify state.
|
|
70
|
+
*/
|
|
71
|
+
export declare function isBashWriteCommand(command: string): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Read-only tools available in restricted modes.
|
|
74
|
+
*/
|
|
75
|
+
export declare const READ_ONLY_TOOLS: string[];
|
|
76
|
+
/**
|
|
77
|
+
* All tools (for build mode).
|
|
78
|
+
*/
|
|
79
|
+
export declare const ALL_TOOLS = "*";
|
|
80
|
+
/**
|
|
81
|
+
* Mode configurations.
|
|
82
|
+
*/
|
|
83
|
+
export declare const MODES: Record<AgentMode, ModeConfig>;
|
|
84
|
+
/**
|
|
85
|
+
* Manages agent modes and tool filtering.
|
|
86
|
+
*/
|
|
87
|
+
export declare class ModeManager {
|
|
88
|
+
private currentMode;
|
|
89
|
+
private eventListeners;
|
|
90
|
+
private allToolNames;
|
|
91
|
+
constructor(tools?: ToolDefinition[]);
|
|
92
|
+
/**
|
|
93
|
+
* Get the current mode.
|
|
94
|
+
*/
|
|
95
|
+
getMode(): AgentMode;
|
|
96
|
+
/**
|
|
97
|
+
* Get the current mode configuration.
|
|
98
|
+
*/
|
|
99
|
+
getModeConfig(): ModeConfig;
|
|
100
|
+
/**
|
|
101
|
+
* Set the agent mode.
|
|
102
|
+
*/
|
|
103
|
+
setMode(mode: AgentMode): void;
|
|
104
|
+
/**
|
|
105
|
+
* Cycle to the next mode.
|
|
106
|
+
*/
|
|
107
|
+
cycleMode(): AgentMode;
|
|
108
|
+
/**
|
|
109
|
+
* Check if a tool is available in the current mode.
|
|
110
|
+
*/
|
|
111
|
+
isToolAvailable(toolName: string): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Filter tools based on current mode.
|
|
114
|
+
*/
|
|
115
|
+
filterTools(tools: ToolDefinition[]): ToolDefinition[];
|
|
116
|
+
/**
|
|
117
|
+
* Get the system prompt addition for the current mode.
|
|
118
|
+
*/
|
|
119
|
+
getSystemPromptAddition(): string;
|
|
120
|
+
/**
|
|
121
|
+
* Get all available modes.
|
|
122
|
+
*/
|
|
123
|
+
getAllModes(): AgentMode[];
|
|
124
|
+
/**
|
|
125
|
+
* Get mode info for display.
|
|
126
|
+
*/
|
|
127
|
+
getModeInfo(mode?: AgentMode): {
|
|
128
|
+
name: string;
|
|
129
|
+
icon: string;
|
|
130
|
+
color: string;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Format mode for terminal display.
|
|
134
|
+
*/
|
|
135
|
+
formatModePrompt(): string;
|
|
136
|
+
/**
|
|
137
|
+
* Subscribe to mode events.
|
|
138
|
+
*/
|
|
139
|
+
subscribe(listener: ModeEventListener): () => void;
|
|
140
|
+
/**
|
|
141
|
+
* Update available tools.
|
|
142
|
+
*/
|
|
143
|
+
updateTools(tools: ToolDefinition[]): void;
|
|
144
|
+
/**
|
|
145
|
+
* Check if the current mode requires write approval.
|
|
146
|
+
*/
|
|
147
|
+
requiresWriteApproval(): boolean;
|
|
148
|
+
/**
|
|
149
|
+
* Check if the current mode should show plan prompts.
|
|
150
|
+
*/
|
|
151
|
+
shouldShowPlanPrompt(): boolean;
|
|
152
|
+
/**
|
|
153
|
+
* Check if a tool call should be intercepted (queued) in current mode.
|
|
154
|
+
* Returns true if the tool is a write operation and mode requires approval.
|
|
155
|
+
*
|
|
156
|
+
* @param toolName - The name of the tool
|
|
157
|
+
* @param args - The tool arguments (needed to check bash commands)
|
|
158
|
+
*/
|
|
159
|
+
shouldInterceptTool(toolName: string, args?: Record<string, unknown>): boolean;
|
|
160
|
+
/**
|
|
161
|
+
* Toggle between build and plan modes.
|
|
162
|
+
* Useful for shift-tab or /plan command.
|
|
163
|
+
*/
|
|
164
|
+
togglePlanMode(): AgentMode;
|
|
165
|
+
private emit;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Create a mode manager.
|
|
169
|
+
*/
|
|
170
|
+
export declare function createModeManager(tools?: ToolDefinition[]): ModeManager;
|
|
171
|
+
/**
|
|
172
|
+
* Format all modes for display.
|
|
173
|
+
*/
|
|
174
|
+
export declare function formatModeList(): string;
|
|
175
|
+
/**
|
|
176
|
+
* Parse mode from string (case-insensitive).
|
|
177
|
+
*/
|
|
178
|
+
export declare function parseMode(input: string): AgentMode | null;
|
|
179
|
+
//# sourceMappingURL=modes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modes.d.ts","sourceRoot":"","sources":["../../src/modes.ts"],"names":[],"mappings":"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"}
|