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,446 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lesson 25: Extensible Agent Registry
|
|
3
|
+
*
|
|
4
|
+
* Allows users to define custom agents that can be spawned on demand.
|
|
5
|
+
* Supports:
|
|
6
|
+
* - Built-in agents (researcher, coder, reviewer, architect)
|
|
7
|
+
* - User-defined agents from .agents/ directory (YAML/JSON)
|
|
8
|
+
* - Hot-reload of agent definitions
|
|
9
|
+
* - NL-based agent selection
|
|
10
|
+
*/
|
|
11
|
+
import { readFile, readdir } from 'node:fs/promises';
|
|
12
|
+
import { existsSync } from 'node:fs';
|
|
13
|
+
import { join, extname } from 'node:path';
|
|
14
|
+
// =============================================================================
|
|
15
|
+
// BUILT-IN AGENTS
|
|
16
|
+
// =============================================================================
|
|
17
|
+
const BUILTIN_AGENTS = [
|
|
18
|
+
{
|
|
19
|
+
name: 'researcher',
|
|
20
|
+
description: 'Explores codebases and gathers information. Good for finding files, understanding structure, and summarizing code.',
|
|
21
|
+
systemPrompt: `You are a code researcher. Your job is to:
|
|
22
|
+
- Explore codebases thoroughly
|
|
23
|
+
- Find relevant files and functions
|
|
24
|
+
- Summarize code structure and patterns
|
|
25
|
+
- Answer questions about the codebase
|
|
26
|
+
|
|
27
|
+
Be thorough but concise. Focus on finding the specific information requested.`,
|
|
28
|
+
tools: ['read_file', 'list_files', 'glob', 'grep'],
|
|
29
|
+
model: 'fast',
|
|
30
|
+
maxTokenBudget: 50000,
|
|
31
|
+
maxIterations: 30,
|
|
32
|
+
capabilities: ['explore', 'search', 'find', 'understand', 'analyze'],
|
|
33
|
+
tags: ['research', 'exploration', 'analysis'],
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: 'coder',
|
|
37
|
+
description: 'Writes and modifies code. Good for implementing features, fixing bugs, and making changes.',
|
|
38
|
+
systemPrompt: `You are a skilled coder. Your job is to:
|
|
39
|
+
- Write clean, well-documented code
|
|
40
|
+
- Follow existing code patterns and conventions
|
|
41
|
+
- Make focused, minimal changes
|
|
42
|
+
- Test your changes when possible
|
|
43
|
+
|
|
44
|
+
Always explain what you're changing and why.`,
|
|
45
|
+
tools: ['read_file', 'write_file', 'edit_file', 'list_files', 'glob', 'grep', 'bash'],
|
|
46
|
+
model: 'balanced',
|
|
47
|
+
maxTokenBudget: 100000,
|
|
48
|
+
maxIterations: 50,
|
|
49
|
+
capabilities: ['write', 'implement', 'fix', 'code', 'create', 'modify'],
|
|
50
|
+
tags: ['coding', 'implementation', 'development'],
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'reviewer',
|
|
54
|
+
description: 'Reviews code for quality, bugs, and security issues. Good for code reviews and quality checks.',
|
|
55
|
+
systemPrompt: `You are a code reviewer. Your job is to:
|
|
56
|
+
- Find bugs and potential issues
|
|
57
|
+
- Identify security vulnerabilities
|
|
58
|
+
- Check for code quality and style
|
|
59
|
+
- Suggest improvements
|
|
60
|
+
|
|
61
|
+
Be constructive and specific in your feedback. Prioritize serious issues.`,
|
|
62
|
+
tools: ['read_file', 'list_files', 'glob', 'grep'],
|
|
63
|
+
model: 'quality',
|
|
64
|
+
maxTokenBudget: 80000,
|
|
65
|
+
maxIterations: 30,
|
|
66
|
+
capabilities: ['review', 'check', 'audit', 'verify', 'security'],
|
|
67
|
+
tags: ['review', 'quality', 'security', 'audit'],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'architect',
|
|
71
|
+
description: 'Designs system architecture and structure. Good for planning features and making design decisions.',
|
|
72
|
+
systemPrompt: `You are a software architect. Your job is to:
|
|
73
|
+
- Design scalable, maintainable systems
|
|
74
|
+
- Consider trade-offs and alternatives
|
|
75
|
+
- Document architectural decisions
|
|
76
|
+
- Plan implementation approaches
|
|
77
|
+
|
|
78
|
+
Think holistically about the system and its evolution.`,
|
|
79
|
+
tools: ['read_file', 'list_files', 'glob', 'grep'],
|
|
80
|
+
model: 'quality',
|
|
81
|
+
maxTokenBudget: 100000,
|
|
82
|
+
maxIterations: 20,
|
|
83
|
+
capabilities: ['design', 'plan', 'architect', 'structure', 'organize'],
|
|
84
|
+
tags: ['architecture', 'design', 'planning'],
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: 'debugger',
|
|
88
|
+
description: 'Debugs and troubleshoots issues. Good for finding root causes and fixing bugs.',
|
|
89
|
+
systemPrompt: `You are a debugger. Your job is to:
|
|
90
|
+
- Analyze error messages and stack traces
|
|
91
|
+
- Find the root cause of issues
|
|
92
|
+
- Test hypotheses systematically
|
|
93
|
+
- Propose and verify fixes
|
|
94
|
+
|
|
95
|
+
Be methodical. Test assumptions before making changes.`,
|
|
96
|
+
tools: ['read_file', 'list_files', 'glob', 'grep', 'bash'],
|
|
97
|
+
model: 'balanced',
|
|
98
|
+
maxTokenBudget: 80000,
|
|
99
|
+
maxIterations: 40,
|
|
100
|
+
capabilities: ['debug', 'troubleshoot', 'fix', 'diagnose', 'error'],
|
|
101
|
+
tags: ['debugging', 'troubleshooting', 'errors'],
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: 'documenter',
|
|
105
|
+
description: 'Writes documentation and comments. Good for adding docs, README files, and code comments.',
|
|
106
|
+
systemPrompt: `You are a technical writer. Your job is to:
|
|
107
|
+
- Write clear, helpful documentation
|
|
108
|
+
- Add meaningful code comments
|
|
109
|
+
- Create README files and guides
|
|
110
|
+
- Explain complex concepts simply
|
|
111
|
+
|
|
112
|
+
Focus on clarity and usefulness. Write for your audience.`,
|
|
113
|
+
tools: ['read_file', 'write_file', 'edit_file', 'list_files', 'glob'],
|
|
114
|
+
model: 'balanced',
|
|
115
|
+
maxTokenBudget: 50000,
|
|
116
|
+
maxIterations: 20,
|
|
117
|
+
capabilities: ['document', 'explain', 'comment', 'readme', 'guide'],
|
|
118
|
+
tags: ['documentation', 'writing', 'comments'],
|
|
119
|
+
},
|
|
120
|
+
];
|
|
121
|
+
// =============================================================================
|
|
122
|
+
// AGENT REGISTRY
|
|
123
|
+
// =============================================================================
|
|
124
|
+
/**
|
|
125
|
+
* AgentRegistry manages agent definitions and spawning.
|
|
126
|
+
*/
|
|
127
|
+
export class AgentRegistry {
|
|
128
|
+
agents = new Map();
|
|
129
|
+
listeners = [];
|
|
130
|
+
watchController;
|
|
131
|
+
baseDir;
|
|
132
|
+
constructor(baseDir) {
|
|
133
|
+
this.baseDir = baseDir || process.cwd();
|
|
134
|
+
// Load built-in agents
|
|
135
|
+
for (const agent of BUILTIN_AGENTS) {
|
|
136
|
+
this.agents.set(agent.name, {
|
|
137
|
+
...agent,
|
|
138
|
+
source: 'builtin',
|
|
139
|
+
loadedAt: new Date(),
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Load user-defined agents from .agents/ directory.
|
|
145
|
+
*/
|
|
146
|
+
async loadUserAgents() {
|
|
147
|
+
const agentsDir = join(this.baseDir, '.agents');
|
|
148
|
+
if (!existsSync(agentsDir)) {
|
|
149
|
+
return; // No user agents directory
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
const files = await readdir(agentsDir);
|
|
153
|
+
for (const file of files) {
|
|
154
|
+
const ext = extname(file).toLowerCase();
|
|
155
|
+
if (!['.json', '.yaml', '.yml'].includes(ext))
|
|
156
|
+
continue;
|
|
157
|
+
const filePath = join(agentsDir, file);
|
|
158
|
+
await this.loadAgentFile(filePath);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
console.warn('[AgentRegistry] Failed to load user agents:', err);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Load an agent from a file.
|
|
167
|
+
*/
|
|
168
|
+
async loadAgentFile(filePath) {
|
|
169
|
+
try {
|
|
170
|
+
const content = await readFile(filePath, 'utf-8');
|
|
171
|
+
const ext = extname(filePath).toLowerCase();
|
|
172
|
+
let definition;
|
|
173
|
+
if (ext === '.json') {
|
|
174
|
+
definition = JSON.parse(content);
|
|
175
|
+
}
|
|
176
|
+
else if (ext === '.yaml' || ext === '.yml') {
|
|
177
|
+
// Simple YAML parsing (for basic structures)
|
|
178
|
+
definition = this.parseSimpleYaml(content);
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
// Validate required fields
|
|
184
|
+
if (!definition.name || !definition.description || !definition.systemPrompt) {
|
|
185
|
+
throw new Error('Missing required fields: name, description, systemPrompt');
|
|
186
|
+
}
|
|
187
|
+
// Store as loaded agent
|
|
188
|
+
const loaded = {
|
|
189
|
+
...definition,
|
|
190
|
+
source: 'user',
|
|
191
|
+
filePath,
|
|
192
|
+
loadedAt: new Date(),
|
|
193
|
+
};
|
|
194
|
+
this.agents.set(definition.name, loaded);
|
|
195
|
+
this.emit({ type: 'agent.loaded', name: definition.name, source: filePath });
|
|
196
|
+
}
|
|
197
|
+
catch (err) {
|
|
198
|
+
const error = err instanceof Error ? err.message : String(err);
|
|
199
|
+
this.emit({ type: 'agent.error', name: filePath, error });
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Simple YAML parser for basic agent definitions.
|
|
204
|
+
*/
|
|
205
|
+
parseSimpleYaml(content) {
|
|
206
|
+
const result = {};
|
|
207
|
+
let currentKey = '';
|
|
208
|
+
let inMultiline = false;
|
|
209
|
+
let multilineContent = [];
|
|
210
|
+
const lines = content.split('\n');
|
|
211
|
+
for (const line of lines) {
|
|
212
|
+
// Skip comments and empty lines
|
|
213
|
+
if (line.trim().startsWith('#') || line.trim() === '') {
|
|
214
|
+
if (inMultiline)
|
|
215
|
+
multilineContent.push('');
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
// Check for multiline continuation
|
|
219
|
+
if (inMultiline) {
|
|
220
|
+
if (line.startsWith(' ') || line.startsWith('\t')) {
|
|
221
|
+
multilineContent.push(line.trim());
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
// End of multiline
|
|
226
|
+
result[currentKey] = multilineContent.join('\n');
|
|
227
|
+
inMultiline = false;
|
|
228
|
+
multilineContent = [];
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// Parse key: value
|
|
232
|
+
const match = line.match(/^(\w+):\s*(.*)$/);
|
|
233
|
+
if (match) {
|
|
234
|
+
const [, key, value] = match;
|
|
235
|
+
currentKey = key;
|
|
236
|
+
if (value === '|' || value === '>') {
|
|
237
|
+
// Start multiline
|
|
238
|
+
inMultiline = true;
|
|
239
|
+
multilineContent = [];
|
|
240
|
+
}
|
|
241
|
+
else if (value.startsWith('[')) {
|
|
242
|
+
// Array
|
|
243
|
+
const arrayMatch = value.match(/\[(.*)\]/);
|
|
244
|
+
if (arrayMatch) {
|
|
245
|
+
result[key] = arrayMatch[1].split(',').map(s => s.trim().replace(/['"]/g, ''));
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
else if (value === 'true' || value === 'false') {
|
|
249
|
+
result[key] = value === 'true';
|
|
250
|
+
}
|
|
251
|
+
else if (!isNaN(Number(value))) {
|
|
252
|
+
result[key] = Number(value);
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
result[key] = value.replace(/^['"]|['"]$/g, '');
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
// Handle final multiline
|
|
260
|
+
if (inMultiline) {
|
|
261
|
+
result[currentKey] = multilineContent.join('\n');
|
|
262
|
+
}
|
|
263
|
+
return result;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Watch .agents/ directory for changes.
|
|
267
|
+
*/
|
|
268
|
+
startWatching() {
|
|
269
|
+
const agentsDir = join(this.baseDir, '.agents');
|
|
270
|
+
if (!existsSync(agentsDir))
|
|
271
|
+
return;
|
|
272
|
+
this.watchController = new AbortController();
|
|
273
|
+
// Note: Using a polling approach since fs.watch has platform inconsistencies
|
|
274
|
+
const checkForChanges = async () => {
|
|
275
|
+
await this.loadUserAgents();
|
|
276
|
+
};
|
|
277
|
+
// Check every 5 seconds
|
|
278
|
+
const interval = setInterval(checkForChanges, 5000);
|
|
279
|
+
// Clean up on abort
|
|
280
|
+
this.watchController.signal.addEventListener('abort', () => {
|
|
281
|
+
clearInterval(interval);
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Stop watching for changes.
|
|
286
|
+
*/
|
|
287
|
+
stopWatching() {
|
|
288
|
+
this.watchController?.abort();
|
|
289
|
+
this.watchController = undefined;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Get an agent by name.
|
|
293
|
+
*/
|
|
294
|
+
getAgent(name) {
|
|
295
|
+
return this.agents.get(name);
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Get all agents.
|
|
299
|
+
*/
|
|
300
|
+
getAllAgents() {
|
|
301
|
+
return Array.from(this.agents.values());
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Get agents by source.
|
|
305
|
+
*/
|
|
306
|
+
getAgentsBySource(source) {
|
|
307
|
+
return this.getAllAgents().filter(a => a.source === source);
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Find agents matching a query (for NL routing).
|
|
311
|
+
*/
|
|
312
|
+
findMatchingAgents(query, limit = 3) {
|
|
313
|
+
const queryLower = query.toLowerCase();
|
|
314
|
+
const scored = [];
|
|
315
|
+
for (const agent of this.agents.values()) {
|
|
316
|
+
let score = 0;
|
|
317
|
+
// Check name match
|
|
318
|
+
if (queryLower.includes(agent.name)) {
|
|
319
|
+
score += 10;
|
|
320
|
+
}
|
|
321
|
+
// Check description match
|
|
322
|
+
const descWords = agent.description.toLowerCase().split(/\s+/);
|
|
323
|
+
for (const word of descWords) {
|
|
324
|
+
if (queryLower.includes(word) && word.length > 3) {
|
|
325
|
+
score += 2;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
// Check capabilities match
|
|
329
|
+
for (const cap of agent.capabilities || []) {
|
|
330
|
+
if (queryLower.includes(cap)) {
|
|
331
|
+
score += 5;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
// Check tags match
|
|
335
|
+
for (const tag of agent.tags || []) {
|
|
336
|
+
if (queryLower.includes(tag)) {
|
|
337
|
+
score += 3;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
if (score > 0) {
|
|
341
|
+
scored.push({ agent, score });
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
// Sort by score descending
|
|
345
|
+
scored.sort((a, b) => b.score - a.score);
|
|
346
|
+
return scored.slice(0, limit).map(s => s.agent);
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Register a runtime agent.
|
|
350
|
+
*/
|
|
351
|
+
registerAgent(definition) {
|
|
352
|
+
const loaded = {
|
|
353
|
+
...definition,
|
|
354
|
+
source: 'user',
|
|
355
|
+
loadedAt: new Date(),
|
|
356
|
+
};
|
|
357
|
+
this.agents.set(definition.name, loaded);
|
|
358
|
+
this.emit({ type: 'agent.loaded', name: definition.name, source: 'runtime' });
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Unregister an agent.
|
|
362
|
+
*/
|
|
363
|
+
unregisterAgent(name) {
|
|
364
|
+
const existed = this.agents.delete(name);
|
|
365
|
+
if (existed) {
|
|
366
|
+
this.emit({ type: 'agent.removed', name });
|
|
367
|
+
}
|
|
368
|
+
return existed;
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Subscribe to events.
|
|
372
|
+
*/
|
|
373
|
+
on(listener) {
|
|
374
|
+
this.listeners.push(listener);
|
|
375
|
+
return () => {
|
|
376
|
+
const idx = this.listeners.indexOf(listener);
|
|
377
|
+
if (idx >= 0)
|
|
378
|
+
this.listeners.splice(idx, 1);
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Emit an event.
|
|
383
|
+
*/
|
|
384
|
+
emit(event) {
|
|
385
|
+
for (const listener of this.listeners) {
|
|
386
|
+
try {
|
|
387
|
+
listener(event);
|
|
388
|
+
}
|
|
389
|
+
catch {
|
|
390
|
+
// Ignore listener errors
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Cleanup.
|
|
396
|
+
*/
|
|
397
|
+
cleanup() {
|
|
398
|
+
this.stopWatching();
|
|
399
|
+
this.listeners = [];
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
// =============================================================================
|
|
403
|
+
// FACTORY
|
|
404
|
+
// =============================================================================
|
|
405
|
+
/**
|
|
406
|
+
* Create an agent registry and load user agents.
|
|
407
|
+
*/
|
|
408
|
+
export async function createAgentRegistry(baseDir) {
|
|
409
|
+
const registry = new AgentRegistry(baseDir);
|
|
410
|
+
await registry.loadUserAgents();
|
|
411
|
+
return registry;
|
|
412
|
+
}
|
|
413
|
+
// =============================================================================
|
|
414
|
+
// UTILITIES
|
|
415
|
+
// =============================================================================
|
|
416
|
+
/**
|
|
417
|
+
* Filter tools based on agent's tool whitelist.
|
|
418
|
+
*/
|
|
419
|
+
export function filterToolsForAgent(agent, allTools) {
|
|
420
|
+
if (!agent.tools || agent.tools.length === 0) {
|
|
421
|
+
return allTools; // No whitelist = all tools
|
|
422
|
+
}
|
|
423
|
+
return allTools.filter(t => agent.tools.includes(t.name));
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Get a formatted list of agents for display.
|
|
427
|
+
*/
|
|
428
|
+
export function formatAgentList(agents) {
|
|
429
|
+
const lines = [];
|
|
430
|
+
const builtIn = agents.filter(a => a.source === 'builtin');
|
|
431
|
+
const user = agents.filter(a => a.source === 'user');
|
|
432
|
+
if (builtIn.length > 0) {
|
|
433
|
+
lines.push('Built-in Agents:');
|
|
434
|
+
for (const agent of builtIn) {
|
|
435
|
+
lines.push(` ${agent.name} - ${agent.description.split('.')[0]}`);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
if (user.length > 0) {
|
|
439
|
+
lines.push('\nUser Agents:');
|
|
440
|
+
for (const agent of user) {
|
|
441
|
+
lines.push(` ${agent.name} - ${agent.description.split('.')[0]}`);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
return lines.join('\n');
|
|
445
|
+
}
|
|
446
|
+
//# sourceMappingURL=agent-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-registry.js","sourceRoot":"","sources":["../../../src/integrations/agent-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
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
|
+
import type { Message } from '../types.js';
|
|
11
|
+
import type { Compactor } from './compaction.js';
|
|
12
|
+
/**
|
|
13
|
+
* Configuration for automatic compaction behavior.
|
|
14
|
+
*/
|
|
15
|
+
export interface AutoCompactionConfig {
|
|
16
|
+
/** Compaction mode: auto (no approval), approval (asks user), manual (never auto) */
|
|
17
|
+
mode: 'auto' | 'approval' | 'manual';
|
|
18
|
+
/** Warning threshold as ratio (default: 0.80) */
|
|
19
|
+
warningThreshold: number;
|
|
20
|
+
/** Auto-compact threshold as ratio (default: 0.90) */
|
|
21
|
+
autoCompactThreshold: number;
|
|
22
|
+
/** Hard limit threshold as ratio (default: 0.98) */
|
|
23
|
+
hardLimitThreshold: number;
|
|
24
|
+
/** Number of recent user messages to preserve (default: 5) */
|
|
25
|
+
preserveRecentUserMessages: number;
|
|
26
|
+
/** Number of recent assistant messages to preserve (default: 5) */
|
|
27
|
+
preserveRecentAssistantMessages: number;
|
|
28
|
+
/** Cooldown between compactions in ms (default: 60000) */
|
|
29
|
+
cooldownMs: number;
|
|
30
|
+
/** Max context window tokens (default: 200000 for Claude) */
|
|
31
|
+
maxContextTokens: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Result of checking token usage and potentially compacting.
|
|
35
|
+
*/
|
|
36
|
+
export interface CompactionCheckResult {
|
|
37
|
+
/** Current status after check */
|
|
38
|
+
status: 'ok' | 'warning' | 'compacted' | 'needs_approval' | 'hard_limit';
|
|
39
|
+
/** Current token count */
|
|
40
|
+
currentTokens: number;
|
|
41
|
+
/** Maximum allowed tokens */
|
|
42
|
+
maxTokens: number;
|
|
43
|
+
/** Ratio of current to max (0-1) */
|
|
44
|
+
ratio: number;
|
|
45
|
+
/** Compacted messages if compaction occurred */
|
|
46
|
+
compactedMessages?: Message[];
|
|
47
|
+
/** Summary generated during compaction */
|
|
48
|
+
summary?: string;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Events emitted by AutoCompactionManager.
|
|
52
|
+
*/
|
|
53
|
+
export type AutoCompactionEvent = {
|
|
54
|
+
type: 'autocompaction.check';
|
|
55
|
+
currentTokens: number;
|
|
56
|
+
ratio: number;
|
|
57
|
+
threshold: string;
|
|
58
|
+
} | {
|
|
59
|
+
type: 'autocompaction.warning';
|
|
60
|
+
currentTokens: number;
|
|
61
|
+
ratio: number;
|
|
62
|
+
} | {
|
|
63
|
+
type: 'autocompaction.triggered';
|
|
64
|
+
mode: string;
|
|
65
|
+
currentTokens: number;
|
|
66
|
+
} | {
|
|
67
|
+
type: 'autocompaction.completed';
|
|
68
|
+
tokensBefore: number;
|
|
69
|
+
tokensAfter: number;
|
|
70
|
+
reduction: number;
|
|
71
|
+
} | {
|
|
72
|
+
type: 'autocompaction.cooldown';
|
|
73
|
+
remainingMs: number;
|
|
74
|
+
} | {
|
|
75
|
+
type: 'autocompaction.hard_limit';
|
|
76
|
+
currentTokens: number;
|
|
77
|
+
ratio: number;
|
|
78
|
+
} | {
|
|
79
|
+
type: 'autocompaction.needs_approval';
|
|
80
|
+
currentTokens: number;
|
|
81
|
+
ratio: number;
|
|
82
|
+
} | {
|
|
83
|
+
type: 'autocompaction.emergency_truncate';
|
|
84
|
+
reason: string;
|
|
85
|
+
messagesBefore: number;
|
|
86
|
+
messagesAfter: number;
|
|
87
|
+
};
|
|
88
|
+
export type AutoCompactionEventListener = (event: AutoCompactionEvent) => void;
|
|
89
|
+
/**
|
|
90
|
+
* Monitors token usage and triggers compaction based on thresholds.
|
|
91
|
+
*
|
|
92
|
+
* Three-tier threshold design:
|
|
93
|
+
* - OK (< 80%): Normal operation
|
|
94
|
+
* - Warning (80-89%): User alerted but no action
|
|
95
|
+
* - Auto-Compact (90-97%): Automatic compaction (in auto mode) or approval request
|
|
96
|
+
* - Hard Limit (>= 98%): Cannot continue - too close to context limit
|
|
97
|
+
*/
|
|
98
|
+
export declare class AutoCompactionManager {
|
|
99
|
+
private compactor;
|
|
100
|
+
private config;
|
|
101
|
+
private lastCompactionTime;
|
|
102
|
+
private listeners;
|
|
103
|
+
constructor(compactor: Compactor, config?: Partial<AutoCompactionConfig>);
|
|
104
|
+
/**
|
|
105
|
+
* Check token usage and maybe perform compaction.
|
|
106
|
+
*
|
|
107
|
+
* @param options - Current tokens and messages
|
|
108
|
+
* @returns Result indicating status and any compaction performed
|
|
109
|
+
*/
|
|
110
|
+
checkAndMaybeCompact(options: {
|
|
111
|
+
currentTokens: number;
|
|
112
|
+
messages: Message[];
|
|
113
|
+
}): Promise<CompactionCheckResult>;
|
|
114
|
+
/**
|
|
115
|
+
* Get the current token ratio.
|
|
116
|
+
*/
|
|
117
|
+
getTokenRatio(currentTokens: number): number;
|
|
118
|
+
/**
|
|
119
|
+
* Check if currently in cooldown period.
|
|
120
|
+
*/
|
|
121
|
+
isInCooldown(): boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Get remaining cooldown time in milliseconds.
|
|
124
|
+
*/
|
|
125
|
+
getRemainingCooldown(): number;
|
|
126
|
+
/**
|
|
127
|
+
* Reset cooldown (e.g., after manual compaction request).
|
|
128
|
+
*/
|
|
129
|
+
resetCooldown(): void;
|
|
130
|
+
/**
|
|
131
|
+
* Force compaction regardless of mode or cooldown.
|
|
132
|
+
* Useful for manual compaction requests.
|
|
133
|
+
*/
|
|
134
|
+
forceCompact(messages: Message[]): Promise<CompactionCheckResult>;
|
|
135
|
+
/**
|
|
136
|
+
* Get current configuration.
|
|
137
|
+
*/
|
|
138
|
+
getConfig(): AutoCompactionConfig;
|
|
139
|
+
/**
|
|
140
|
+
* Update configuration.
|
|
141
|
+
*/
|
|
142
|
+
updateConfig(updates: Partial<AutoCompactionConfig>): void;
|
|
143
|
+
/**
|
|
144
|
+
* Subscribe to events.
|
|
145
|
+
*/
|
|
146
|
+
on(listener: AutoCompactionEventListener): () => void;
|
|
147
|
+
/**
|
|
148
|
+
* Determine which zone the current ratio falls into.
|
|
149
|
+
*/
|
|
150
|
+
private determineZone;
|
|
151
|
+
/**
|
|
152
|
+
* Perform the actual compaction.
|
|
153
|
+
*/
|
|
154
|
+
private performCompaction;
|
|
155
|
+
/**
|
|
156
|
+
* Emergency truncation fallback when LLM-based compaction fails.
|
|
157
|
+
* Simply keeps system message and last N messages without summarization.
|
|
158
|
+
*/
|
|
159
|
+
private emergencyTruncate;
|
|
160
|
+
/**
|
|
161
|
+
* Emit an event to all listeners.
|
|
162
|
+
*/
|
|
163
|
+
private emit;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Create an AutoCompactionManager.
|
|
167
|
+
*/
|
|
168
|
+
export declare function createAutoCompactionManager(compactor: Compactor, config?: Partial<AutoCompactionConfig>): AutoCompactionManager;
|
|
169
|
+
/**
|
|
170
|
+
* Format a CompactionCheckResult for display.
|
|
171
|
+
*/
|
|
172
|
+
export declare function formatCompactionCheckResult(result: CompactionCheckResult): string;
|
|
173
|
+
/**
|
|
174
|
+
* Get suggested action based on check result.
|
|
175
|
+
*/
|
|
176
|
+
export declare function getSuggestedAction(result: CompactionCheckResult): string | null;
|
|
177
|
+
//# sourceMappingURL=auto-compaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-compaction.d.ts","sourceRoot":"","sources":["../../../src/integrations/auto-compaction.ts"],"names":[],"mappings":"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"}
|