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,428 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AutoCompactionManager - Monitors token usage and triggers compaction
|
|
3
|
+
*
|
|
4
|
+
* Implements a three-tier threshold system:
|
|
5
|
+
* - OK (< 80%): Continue normally
|
|
6
|
+
* - Warning (80-89%): Alert user, no automatic action
|
|
7
|
+
* - Auto-Compact (90-97%): Depending on mode, auto-compact or request approval
|
|
8
|
+
* - Hard Limit (>= 98%): Agent cannot continue - context too full
|
|
9
|
+
*/
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// DEFAULT CONFIG
|
|
12
|
+
// =============================================================================
|
|
13
|
+
const DEFAULT_CONFIG = {
|
|
14
|
+
mode: 'auto',
|
|
15
|
+
warningThreshold: 0.80,
|
|
16
|
+
autoCompactThreshold: 0.90,
|
|
17
|
+
hardLimitThreshold: 0.98,
|
|
18
|
+
preserveRecentUserMessages: 5,
|
|
19
|
+
preserveRecentAssistantMessages: 5,
|
|
20
|
+
cooldownMs: 60000, // 1 minute
|
|
21
|
+
maxContextTokens: 200000, // Claude's context window
|
|
22
|
+
};
|
|
23
|
+
// =============================================================================
|
|
24
|
+
// AUTO COMPACTION MANAGER
|
|
25
|
+
// =============================================================================
|
|
26
|
+
/**
|
|
27
|
+
* Monitors token usage and triggers compaction based on thresholds.
|
|
28
|
+
*
|
|
29
|
+
* Three-tier threshold design:
|
|
30
|
+
* - OK (< 80%): Normal operation
|
|
31
|
+
* - Warning (80-89%): User alerted but no action
|
|
32
|
+
* - Auto-Compact (90-97%): Automatic compaction (in auto mode) or approval request
|
|
33
|
+
* - Hard Limit (>= 98%): Cannot continue - too close to context limit
|
|
34
|
+
*/
|
|
35
|
+
export class AutoCompactionManager {
|
|
36
|
+
compactor;
|
|
37
|
+
config;
|
|
38
|
+
lastCompactionTime = 0;
|
|
39
|
+
listeners = [];
|
|
40
|
+
constructor(compactor, config) {
|
|
41
|
+
this.compactor = compactor;
|
|
42
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
43
|
+
// Validate thresholds are in correct order
|
|
44
|
+
if (this.config.warningThreshold >= this.config.autoCompactThreshold) {
|
|
45
|
+
throw new Error('warningThreshold must be less than autoCompactThreshold');
|
|
46
|
+
}
|
|
47
|
+
if (this.config.autoCompactThreshold >= this.config.hardLimitThreshold) {
|
|
48
|
+
throw new Error('autoCompactThreshold must be less than hardLimitThreshold');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Check token usage and maybe perform compaction.
|
|
53
|
+
*
|
|
54
|
+
* @param options - Current tokens and messages
|
|
55
|
+
* @returns Result indicating status and any compaction performed
|
|
56
|
+
*/
|
|
57
|
+
async checkAndMaybeCompact(options) {
|
|
58
|
+
const { currentTokens, messages } = options;
|
|
59
|
+
const ratio = this.getTokenRatio(currentTokens);
|
|
60
|
+
const maxTokens = this.config.maxContextTokens;
|
|
61
|
+
// Determine which zone we're in
|
|
62
|
+
const zone = this.determineZone(ratio);
|
|
63
|
+
this.emit({
|
|
64
|
+
type: 'autocompaction.check',
|
|
65
|
+
currentTokens,
|
|
66
|
+
ratio,
|
|
67
|
+
threshold: zone,
|
|
68
|
+
});
|
|
69
|
+
// Zone: OK (< warningThreshold)
|
|
70
|
+
if (zone === 'ok') {
|
|
71
|
+
return {
|
|
72
|
+
status: 'ok',
|
|
73
|
+
currentTokens,
|
|
74
|
+
maxTokens,
|
|
75
|
+
ratio,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// Zone: Hard Limit (>= hardLimitThreshold)
|
|
79
|
+
if (zone === 'hard_limit') {
|
|
80
|
+
this.emit({
|
|
81
|
+
type: 'autocompaction.hard_limit',
|
|
82
|
+
currentTokens,
|
|
83
|
+
ratio,
|
|
84
|
+
});
|
|
85
|
+
return {
|
|
86
|
+
status: 'hard_limit',
|
|
87
|
+
currentTokens,
|
|
88
|
+
maxTokens,
|
|
89
|
+
ratio,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
// Zone: Warning (warningThreshold <= ratio < autoCompactThreshold)
|
|
93
|
+
if (zone === 'warning') {
|
|
94
|
+
this.emit({
|
|
95
|
+
type: 'autocompaction.warning',
|
|
96
|
+
currentTokens,
|
|
97
|
+
ratio,
|
|
98
|
+
});
|
|
99
|
+
return {
|
|
100
|
+
status: 'warning',
|
|
101
|
+
currentTokens,
|
|
102
|
+
maxTokens,
|
|
103
|
+
ratio,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
// Zone: Auto-Compact (autoCompactThreshold <= ratio < hardLimitThreshold)
|
|
107
|
+
// Check cooldown
|
|
108
|
+
if (this.isInCooldown()) {
|
|
109
|
+
const remaining = this.getRemainingCooldown();
|
|
110
|
+
this.emit({
|
|
111
|
+
type: 'autocompaction.cooldown',
|
|
112
|
+
remainingMs: remaining,
|
|
113
|
+
});
|
|
114
|
+
// During cooldown, treat as warning
|
|
115
|
+
return {
|
|
116
|
+
status: 'warning',
|
|
117
|
+
currentTokens,
|
|
118
|
+
maxTokens,
|
|
119
|
+
ratio,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
// Handle based on mode
|
|
123
|
+
switch (this.config.mode) {
|
|
124
|
+
case 'auto':
|
|
125
|
+
return this.performCompaction(messages, currentTokens, maxTokens, ratio);
|
|
126
|
+
case 'approval':
|
|
127
|
+
this.emit({
|
|
128
|
+
type: 'autocompaction.needs_approval',
|
|
129
|
+
currentTokens,
|
|
130
|
+
ratio,
|
|
131
|
+
});
|
|
132
|
+
return {
|
|
133
|
+
status: 'needs_approval',
|
|
134
|
+
currentTokens,
|
|
135
|
+
maxTokens,
|
|
136
|
+
ratio,
|
|
137
|
+
};
|
|
138
|
+
case 'manual':
|
|
139
|
+
// In manual mode, auto-compact zone is treated as warning
|
|
140
|
+
this.emit({
|
|
141
|
+
type: 'autocompaction.warning',
|
|
142
|
+
currentTokens,
|
|
143
|
+
ratio,
|
|
144
|
+
});
|
|
145
|
+
return {
|
|
146
|
+
status: 'warning',
|
|
147
|
+
currentTokens,
|
|
148
|
+
maxTokens,
|
|
149
|
+
ratio,
|
|
150
|
+
};
|
|
151
|
+
default:
|
|
152
|
+
return {
|
|
153
|
+
status: 'warning',
|
|
154
|
+
currentTokens,
|
|
155
|
+
maxTokens,
|
|
156
|
+
ratio,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Get the current token ratio.
|
|
162
|
+
*/
|
|
163
|
+
getTokenRatio(currentTokens) {
|
|
164
|
+
return currentTokens / this.config.maxContextTokens;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Check if currently in cooldown period.
|
|
168
|
+
*/
|
|
169
|
+
isInCooldown() {
|
|
170
|
+
if (this.lastCompactionTime === 0) {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
return Date.now() - this.lastCompactionTime < this.config.cooldownMs;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Get remaining cooldown time in milliseconds.
|
|
177
|
+
*/
|
|
178
|
+
getRemainingCooldown() {
|
|
179
|
+
if (!this.isInCooldown()) {
|
|
180
|
+
return 0;
|
|
181
|
+
}
|
|
182
|
+
return this.config.cooldownMs - (Date.now() - this.lastCompactionTime);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Reset cooldown (e.g., after manual compaction request).
|
|
186
|
+
*/
|
|
187
|
+
resetCooldown() {
|
|
188
|
+
this.lastCompactionTime = 0;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Force compaction regardless of mode or cooldown.
|
|
192
|
+
* Useful for manual compaction requests.
|
|
193
|
+
*/
|
|
194
|
+
async forceCompact(messages) {
|
|
195
|
+
const currentTokens = this.compactor.estimateTokens(messages);
|
|
196
|
+
const ratio = this.getTokenRatio(currentTokens);
|
|
197
|
+
const maxTokens = this.config.maxContextTokens;
|
|
198
|
+
return this.performCompaction(messages, currentTokens, maxTokens, ratio);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Get current configuration.
|
|
202
|
+
*/
|
|
203
|
+
getConfig() {
|
|
204
|
+
return { ...this.config };
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Update configuration.
|
|
208
|
+
*/
|
|
209
|
+
updateConfig(updates) {
|
|
210
|
+
this.config = { ...this.config, ...updates };
|
|
211
|
+
// Re-validate thresholds
|
|
212
|
+
if (this.config.warningThreshold >= this.config.autoCompactThreshold) {
|
|
213
|
+
throw new Error('warningThreshold must be less than autoCompactThreshold');
|
|
214
|
+
}
|
|
215
|
+
if (this.config.autoCompactThreshold >= this.config.hardLimitThreshold) {
|
|
216
|
+
throw new Error('autoCompactThreshold must be less than hardLimitThreshold');
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Subscribe to events.
|
|
221
|
+
*/
|
|
222
|
+
on(listener) {
|
|
223
|
+
this.listeners.push(listener);
|
|
224
|
+
return () => {
|
|
225
|
+
const idx = this.listeners.indexOf(listener);
|
|
226
|
+
if (idx >= 0)
|
|
227
|
+
this.listeners.splice(idx, 1);
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
// ===========================================================================
|
|
231
|
+
// PRIVATE METHODS
|
|
232
|
+
// ===========================================================================
|
|
233
|
+
/**
|
|
234
|
+
* Determine which zone the current ratio falls into.
|
|
235
|
+
*/
|
|
236
|
+
determineZone(ratio) {
|
|
237
|
+
if (ratio >= this.config.hardLimitThreshold) {
|
|
238
|
+
return 'hard_limit';
|
|
239
|
+
}
|
|
240
|
+
if (ratio >= this.config.autoCompactThreshold) {
|
|
241
|
+
return 'auto_compact';
|
|
242
|
+
}
|
|
243
|
+
if (ratio >= this.config.warningThreshold) {
|
|
244
|
+
return 'warning';
|
|
245
|
+
}
|
|
246
|
+
return 'ok';
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Perform the actual compaction.
|
|
250
|
+
*/
|
|
251
|
+
async performCompaction(messages, currentTokens, maxTokens, ratio) {
|
|
252
|
+
this.emit({
|
|
253
|
+
type: 'autocompaction.triggered',
|
|
254
|
+
mode: this.config.mode,
|
|
255
|
+
currentTokens,
|
|
256
|
+
});
|
|
257
|
+
// Configure compactor to preserve the specified number of messages
|
|
258
|
+
// The compactor already handles preserving recent messages, but we can
|
|
259
|
+
// update its config if needed based on our preservation settings
|
|
260
|
+
const totalPreserve = this.config.preserveRecentUserMessages + this.config.preserveRecentAssistantMessages;
|
|
261
|
+
const currentCompactorConfig = this.compactor.getConfig();
|
|
262
|
+
// Temporarily adjust if our preserve count differs
|
|
263
|
+
const needsRestore = currentCompactorConfig.preserveRecentCount !== totalPreserve;
|
|
264
|
+
if (needsRestore) {
|
|
265
|
+
this.compactor.updateConfig({ preserveRecentCount: totalPreserve });
|
|
266
|
+
}
|
|
267
|
+
let result;
|
|
268
|
+
try {
|
|
269
|
+
result = await this.compactor.compact(messages);
|
|
270
|
+
}
|
|
271
|
+
catch (compactionError) {
|
|
272
|
+
// LLM-based compaction failed - use emergency truncation as fallback
|
|
273
|
+
console.error('[AutoCompaction] LLM compaction failed, using emergency truncation:', compactionError);
|
|
274
|
+
const emergencyResult = this.emergencyTruncate(messages, totalPreserve);
|
|
275
|
+
// Restore original config
|
|
276
|
+
if (needsRestore) {
|
|
277
|
+
this.compactor.updateConfig({ preserveRecentCount: currentCompactorConfig.preserveRecentCount });
|
|
278
|
+
}
|
|
279
|
+
// Update cooldown even for emergency truncation
|
|
280
|
+
this.lastCompactionTime = Date.now();
|
|
281
|
+
return emergencyResult;
|
|
282
|
+
}
|
|
283
|
+
// Restore original config
|
|
284
|
+
if (needsRestore) {
|
|
285
|
+
this.compactor.updateConfig({ preserveRecentCount: currentCompactorConfig.preserveRecentCount });
|
|
286
|
+
}
|
|
287
|
+
// Update cooldown
|
|
288
|
+
this.lastCompactionTime = Date.now();
|
|
289
|
+
const reduction = result.tokensBefore > 0
|
|
290
|
+
? Math.round((1 - result.tokensAfter / result.tokensBefore) * 100)
|
|
291
|
+
: 0;
|
|
292
|
+
this.emit({
|
|
293
|
+
type: 'autocompaction.completed',
|
|
294
|
+
tokensBefore: result.tokensBefore,
|
|
295
|
+
tokensAfter: result.tokensAfter,
|
|
296
|
+
reduction,
|
|
297
|
+
});
|
|
298
|
+
return {
|
|
299
|
+
status: 'compacted',
|
|
300
|
+
currentTokens: result.tokensAfter,
|
|
301
|
+
maxTokens,
|
|
302
|
+
ratio: result.tokensAfter / maxTokens,
|
|
303
|
+
compactedMessages: result.preservedMessages,
|
|
304
|
+
summary: result.summary,
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Emergency truncation fallback when LLM-based compaction fails.
|
|
309
|
+
* Simply keeps system message and last N messages without summarization.
|
|
310
|
+
*/
|
|
311
|
+
emergencyTruncate(messages, preserveCount) {
|
|
312
|
+
const messagesBefore = messages.length;
|
|
313
|
+
// Find and keep the system message
|
|
314
|
+
const systemMessage = messages.find(m => m.role === 'system');
|
|
315
|
+
// Get the last N messages (excluding system message from count)
|
|
316
|
+
const nonSystemMessages = messages.filter(m => m.role !== 'system');
|
|
317
|
+
const preservedMessages = nonSystemMessages.slice(-preserveCount);
|
|
318
|
+
// Build the truncated message array
|
|
319
|
+
const truncatedMessages = [];
|
|
320
|
+
if (systemMessage) {
|
|
321
|
+
truncatedMessages.push(systemMessage);
|
|
322
|
+
}
|
|
323
|
+
// Add a marker message about the truncation
|
|
324
|
+
truncatedMessages.push({
|
|
325
|
+
role: 'system',
|
|
326
|
+
content: `[CONTEXT TRUNCATED: ${messagesBefore - preservedMessages.length - (systemMessage ? 1 : 0)} messages were removed due to compaction failure. The conversation continues from the most recent ${preservedMessages.length} messages.]`,
|
|
327
|
+
});
|
|
328
|
+
truncatedMessages.push(...preservedMessages);
|
|
329
|
+
const messagesAfter = truncatedMessages.length;
|
|
330
|
+
const tokensAfter = this.compactor.estimateTokens(truncatedMessages);
|
|
331
|
+
this.emit({
|
|
332
|
+
type: 'autocompaction.emergency_truncate',
|
|
333
|
+
reason: 'LLM compaction failed',
|
|
334
|
+
messagesBefore,
|
|
335
|
+
messagesAfter,
|
|
336
|
+
});
|
|
337
|
+
return {
|
|
338
|
+
status: 'compacted',
|
|
339
|
+
currentTokens: tokensAfter,
|
|
340
|
+
maxTokens: this.config.maxContextTokens,
|
|
341
|
+
ratio: tokensAfter / this.config.maxContextTokens,
|
|
342
|
+
compactedMessages: truncatedMessages,
|
|
343
|
+
summary: '[Emergency truncation - no summary available]',
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Emit an event to all listeners.
|
|
348
|
+
*/
|
|
349
|
+
emit(event) {
|
|
350
|
+
for (const listener of this.listeners) {
|
|
351
|
+
try {
|
|
352
|
+
listener(event);
|
|
353
|
+
}
|
|
354
|
+
catch {
|
|
355
|
+
// Ignore listener errors
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
// =============================================================================
|
|
361
|
+
// FACTORY
|
|
362
|
+
// =============================================================================
|
|
363
|
+
/**
|
|
364
|
+
* Create an AutoCompactionManager.
|
|
365
|
+
*/
|
|
366
|
+
export function createAutoCompactionManager(compactor, config) {
|
|
367
|
+
return new AutoCompactionManager(compactor, config);
|
|
368
|
+
}
|
|
369
|
+
// =============================================================================
|
|
370
|
+
// UTILITIES
|
|
371
|
+
// =============================================================================
|
|
372
|
+
/**
|
|
373
|
+
* Format a CompactionCheckResult for display.
|
|
374
|
+
*/
|
|
375
|
+
export function formatCompactionCheckResult(result) {
|
|
376
|
+
const percentUsed = Math.round(result.ratio * 100);
|
|
377
|
+
const lines = [];
|
|
378
|
+
switch (result.status) {
|
|
379
|
+
case 'ok':
|
|
380
|
+
lines.push(`Context usage: ${percentUsed}% (${result.currentTokens.toLocaleString()} / ${result.maxTokens.toLocaleString()} tokens)`);
|
|
381
|
+
lines.push('Status: OK');
|
|
382
|
+
break;
|
|
383
|
+
case 'warning':
|
|
384
|
+
lines.push(`Context usage: ${percentUsed}% (${result.currentTokens.toLocaleString()} / ${result.maxTokens.toLocaleString()} tokens)`);
|
|
385
|
+
lines.push('Status: WARNING - Context usage is high');
|
|
386
|
+
lines.push('Consider compacting the conversation to free up space.');
|
|
387
|
+
break;
|
|
388
|
+
case 'needs_approval':
|
|
389
|
+
lines.push(`Context usage: ${percentUsed}% (${result.currentTokens.toLocaleString()} / ${result.maxTokens.toLocaleString()} tokens)`);
|
|
390
|
+
lines.push('Status: NEEDS APPROVAL');
|
|
391
|
+
lines.push('Context is nearing capacity. Approve compaction to continue.');
|
|
392
|
+
break;
|
|
393
|
+
case 'compacted':
|
|
394
|
+
lines.push(`Context usage: ${percentUsed}% (${result.currentTokens.toLocaleString()} / ${result.maxTokens.toLocaleString()} tokens)`);
|
|
395
|
+
lines.push('Status: COMPACTED');
|
|
396
|
+
if (result.summary) {
|
|
397
|
+
lines.push('Summary preserved: Yes');
|
|
398
|
+
}
|
|
399
|
+
break;
|
|
400
|
+
case 'hard_limit':
|
|
401
|
+
lines.push(`Context usage: ${percentUsed}% (${result.currentTokens.toLocaleString()} / ${result.maxTokens.toLocaleString()} tokens)`);
|
|
402
|
+
lines.push('Status: HARD LIMIT REACHED');
|
|
403
|
+
lines.push('Cannot continue - context window is too full.');
|
|
404
|
+
lines.push('Manual intervention required.');
|
|
405
|
+
break;
|
|
406
|
+
}
|
|
407
|
+
return lines.join('\n');
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Get suggested action based on check result.
|
|
411
|
+
*/
|
|
412
|
+
export function getSuggestedAction(result) {
|
|
413
|
+
switch (result.status) {
|
|
414
|
+
case 'ok':
|
|
415
|
+
return null;
|
|
416
|
+
case 'warning':
|
|
417
|
+
return 'Consider running /compact to free up context space';
|
|
418
|
+
case 'needs_approval':
|
|
419
|
+
return 'Approve context compaction to continue';
|
|
420
|
+
case 'compacted':
|
|
421
|
+
return null;
|
|
422
|
+
case 'hard_limit':
|
|
423
|
+
return 'Start a new conversation or manually clear context';
|
|
424
|
+
default:
|
|
425
|
+
return null;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
//# sourceMappingURL=auto-compaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-compaction.js","sourceRoot":"","sources":["../../../src/integrations/auto-compaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cancellation Token Integration
|
|
3
|
+
*
|
|
4
|
+
* Provides graceful cancellation support for long-running agent operations.
|
|
5
|
+
* Based on the .NET CancellationToken pattern, adapted from tricks/cancellation.ts.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* const cts = createCancellationTokenSource();
|
|
9
|
+
* agent.run(task, { cancellationToken: cts.token });
|
|
10
|
+
* // Later: cts.cancel('User requested cancellation');
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Token that can be checked for cancellation.
|
|
14
|
+
*/
|
|
15
|
+
export interface CancellationToken {
|
|
16
|
+
/** Whether cancellation has been requested */
|
|
17
|
+
readonly isCancellationRequested: boolean;
|
|
18
|
+
/** The reason for cancellation (if cancelled) */
|
|
19
|
+
readonly cancellationReason?: string;
|
|
20
|
+
/** Promise that resolves when cancelled */
|
|
21
|
+
readonly onCancellationRequested: Promise<string | void>;
|
|
22
|
+
/** Register a callback for cancellation */
|
|
23
|
+
register(callback: (reason?: string) => void): {
|
|
24
|
+
dispose: () => void;
|
|
25
|
+
};
|
|
26
|
+
/** Throw if cancelled */
|
|
27
|
+
throwIfCancellationRequested(): void;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Source that controls a cancellation token.
|
|
31
|
+
*/
|
|
32
|
+
export interface CancellationTokenSource {
|
|
33
|
+
/** The token */
|
|
34
|
+
readonly token: CancellationToken;
|
|
35
|
+
/** Whether cancellation has been requested */
|
|
36
|
+
readonly isCancellationRequested: boolean;
|
|
37
|
+
/** Request cancellation */
|
|
38
|
+
cancel(reason?: string): void;
|
|
39
|
+
/** Cancel after timeout */
|
|
40
|
+
cancelAfter(ms: number): this;
|
|
41
|
+
/** Dispose resources */
|
|
42
|
+
dispose(): void;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Options for cancellable operations.
|
|
46
|
+
*/
|
|
47
|
+
export interface CancellableOptions {
|
|
48
|
+
/** Cancellation token */
|
|
49
|
+
token?: CancellationToken;
|
|
50
|
+
/** Timeout in milliseconds (creates auto-cancelling token) */
|
|
51
|
+
timeout?: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Cancellation event for agent integration.
|
|
55
|
+
*/
|
|
56
|
+
export type CancellationEvent = {
|
|
57
|
+
type: 'cancellation.requested';
|
|
58
|
+
reason?: string;
|
|
59
|
+
timestamp: Date;
|
|
60
|
+
} | {
|
|
61
|
+
type: 'cancellation.handled';
|
|
62
|
+
cleanupDuration: number;
|
|
63
|
+
};
|
|
64
|
+
export type CancellationEventListener = (event: CancellationEvent) => void;
|
|
65
|
+
/**
|
|
66
|
+
* Error thrown when an operation is cancelled.
|
|
67
|
+
*/
|
|
68
|
+
export declare class CancellationError extends Error {
|
|
69
|
+
readonly isCancellation = true;
|
|
70
|
+
readonly reason?: string;
|
|
71
|
+
constructor(reason?: string);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Check if an error is a cancellation error.
|
|
75
|
+
*/
|
|
76
|
+
export declare function isCancellationError(error: unknown): error is CancellationError;
|
|
77
|
+
/**
|
|
78
|
+
* Create a new cancellation token source.
|
|
79
|
+
*/
|
|
80
|
+
export declare function createCancellationTokenSource(): CancellationTokenSource;
|
|
81
|
+
/**
|
|
82
|
+
* Create a token source that auto-cancels after timeout.
|
|
83
|
+
*/
|
|
84
|
+
export declare function createTimeoutToken(ms: number): CancellationTokenSource;
|
|
85
|
+
/**
|
|
86
|
+
* Create a linked token that cancels when any source cancels.
|
|
87
|
+
*/
|
|
88
|
+
export declare function createLinkedToken(...sources: CancellationTokenSource[]): CancellationTokenSource;
|
|
89
|
+
/**
|
|
90
|
+
* Create a "none" token that is never cancelled.
|
|
91
|
+
* Useful as a default when no cancellation is needed.
|
|
92
|
+
*/
|
|
93
|
+
export declare const CancellationToken: {
|
|
94
|
+
None: CancellationToken;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Run a function with cancellation support.
|
|
98
|
+
*/
|
|
99
|
+
export declare function withCancellation<T>(fn: (token: CancellationToken) => Promise<T>, options?: CancellableOptions): Promise<T>;
|
|
100
|
+
/**
|
|
101
|
+
* Sleep with cancellation support.
|
|
102
|
+
*/
|
|
103
|
+
export declare function sleep(ms: number, token?: CancellationToken): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Race a promise against cancellation.
|
|
106
|
+
*/
|
|
107
|
+
export declare function race<T>(promise: Promise<T>, token: CancellationToken): Promise<T>;
|
|
108
|
+
/**
|
|
109
|
+
* Create an AbortSignal from a CancellationToken.
|
|
110
|
+
* Useful for integrating with fetch and other AbortSignal-based APIs.
|
|
111
|
+
*/
|
|
112
|
+
export declare function toAbortSignal(token: CancellationToken): AbortSignal;
|
|
113
|
+
/**
|
|
114
|
+
* Manager that handles cancellation for agent operations.
|
|
115
|
+
* Provides a clean interface for the ProductionAgent to use.
|
|
116
|
+
*/
|
|
117
|
+
export declare class CancellationManager {
|
|
118
|
+
private currentSource;
|
|
119
|
+
private eventListeners;
|
|
120
|
+
/**
|
|
121
|
+
* Create a new cancellation context for an operation.
|
|
122
|
+
* Disposes the previous context if one exists.
|
|
123
|
+
*/
|
|
124
|
+
createContext(timeout?: number): CancellationToken;
|
|
125
|
+
/**
|
|
126
|
+
* Get the current cancellation token.
|
|
127
|
+
*/
|
|
128
|
+
get token(): CancellationToken;
|
|
129
|
+
/**
|
|
130
|
+
* Check if cancellation has been requested.
|
|
131
|
+
*/
|
|
132
|
+
get isCancelled(): boolean;
|
|
133
|
+
/**
|
|
134
|
+
* Request cancellation of the current operation.
|
|
135
|
+
*/
|
|
136
|
+
cancel(reason?: string): void;
|
|
137
|
+
/**
|
|
138
|
+
* Dispose the current cancellation context.
|
|
139
|
+
*/
|
|
140
|
+
disposeContext(): void;
|
|
141
|
+
/**
|
|
142
|
+
* Check if there's an active cancellation context.
|
|
143
|
+
*/
|
|
144
|
+
hasActiveContext(): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Subscribe to cancellation events.
|
|
147
|
+
*/
|
|
148
|
+
subscribe(listener: CancellationEventListener): () => void;
|
|
149
|
+
/**
|
|
150
|
+
* Emit a cancellation event.
|
|
151
|
+
*/
|
|
152
|
+
private emit;
|
|
153
|
+
/**
|
|
154
|
+
* Cleanup all resources.
|
|
155
|
+
*/
|
|
156
|
+
cleanup(): void;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Create a cancellation manager.
|
|
160
|
+
*/
|
|
161
|
+
export declare function createCancellationManager(): CancellationManager;
|
|
162
|
+
//# sourceMappingURL=cancellation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancellation.d.ts","sourceRoot":"","sources":["../../../src/integrations/cancellation.ts"],"names":[],"mappings":"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"}
|