attocode 0.2.4 → 0.2.5
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 +56 -1
- package/dist/src/adapters.d.ts +2 -1
- package/dist/src/adapters.d.ts.map +1 -1
- package/dist/src/adapters.js +60 -2
- package/dist/src/adapters.js.map +1 -1
- package/dist/src/agent/agent-builder.d.ts +117 -0
- package/dist/src/agent/agent-builder.d.ts.map +1 -0
- package/dist/src/agent/agent-builder.js +204 -0
- package/dist/src/agent/agent-builder.js.map +1 -0
- package/dist/src/agent/feature-initializer.d.ts +80 -0
- package/dist/src/agent/feature-initializer.d.ts.map +1 -0
- package/dist/src/agent/feature-initializer.js +677 -0
- package/dist/src/agent/feature-initializer.js.map +1 -0
- package/dist/src/agent/index.d.ts +13 -0
- package/dist/src/agent/index.d.ts.map +1 -0
- package/dist/src/agent/index.js +13 -0
- package/dist/src/agent/index.js.map +1 -0
- package/dist/src/agent/message-builder.d.ts +50 -0
- package/dist/src/agent/message-builder.d.ts.map +1 -0
- package/dist/src/agent/message-builder.js +173 -0
- package/dist/src/agent/message-builder.js.map +1 -0
- package/dist/src/agent/session-api.d.ts +94 -0
- package/dist/src/agent/session-api.d.ts.map +1 -0
- package/dist/src/agent/session-api.js +262 -0
- package/dist/src/agent/session-api.js.map +1 -0
- package/dist/src/agent-tools/lsp-file-tools.d.ts +1 -1
- package/dist/src/agent-tools/lsp-file-tools.d.ts.map +1 -1
- package/dist/src/agent.d.ts +14 -115
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +36 -1177
- package/dist/src/agent.js.map +1 -1
- package/dist/src/cli.js +1 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/handler.d.ts.map +1 -1
- package/dist/src/commands/handler.js +8 -7
- package/dist/src/commands/handler.js.map +1 -1
- package/dist/src/commands/init.js +1 -1
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/config/schema.d.ts +6 -6
- package/dist/src/core/execution-loop.d.ts.map +1 -1
- package/dist/src/core/execution-loop.js +155 -16
- package/dist/src/core/execution-loop.js.map +1 -1
- package/dist/src/core/response-handler.d.ts.map +1 -1
- package/dist/src/core/response-handler.js +3 -2
- package/dist/src/core/response-handler.js.map +1 -1
- package/dist/src/core/subagent-spawner.d.ts.map +1 -1
- package/dist/src/core/subagent-spawner.js +13 -6
- package/dist/src/core/subagent-spawner.js.map +1 -1
- package/dist/src/core/tool-executor.d.ts.map +1 -1
- package/dist/src/core/tool-executor.js +7 -2
- package/dist/src/core/tool-executor.js.map +1 -1
- package/dist/src/core/types.d.ts +1 -0
- package/dist/src/core/types.d.ts.map +1 -1
- package/dist/src/core/types.js.map +1 -1
- package/dist/src/integrations/agents/agent-registry.d.ts +262 -0
- package/dist/src/integrations/agents/agent-registry.d.ts.map +1 -0
- package/dist/src/integrations/agents/agent-registry.js +686 -0
- package/dist/src/integrations/agents/agent-registry.js.map +1 -0
- package/dist/src/integrations/agents/async-subagent.d.ts +135 -0
- package/dist/src/integrations/agents/async-subagent.d.ts.map +1 -0
- package/dist/src/integrations/agents/async-subagent.js +213 -0
- package/dist/src/integrations/agents/async-subagent.js.map +1 -0
- package/dist/src/integrations/agents/complexity-classifier.d.ts +86 -0
- package/dist/src/integrations/agents/complexity-classifier.d.ts.map +1 -0
- package/dist/src/integrations/agents/complexity-classifier.js +233 -0
- package/dist/src/integrations/agents/complexity-classifier.js.map +1 -0
- package/dist/src/integrations/agents/delegation-protocol.d.ts +86 -0
- package/dist/src/integrations/agents/delegation-protocol.d.ts.map +1 -0
- package/dist/src/integrations/agents/delegation-protocol.js +127 -0
- package/dist/src/integrations/agents/delegation-protocol.js.map +1 -0
- package/dist/src/integrations/agents/multi-agent.d.ts +150 -0
- package/dist/src/integrations/agents/multi-agent.d.ts.map +1 -0
- package/dist/src/integrations/agents/multi-agent.js +306 -0
- package/dist/src/integrations/agents/multi-agent.js.map +1 -0
- package/dist/src/integrations/agents/result-synthesizer.d.ts +389 -0
- package/dist/src/integrations/agents/result-synthesizer.d.ts.map +1 -0
- package/dist/src/integrations/agents/result-synthesizer.js +951 -0
- package/dist/src/integrations/agents/result-synthesizer.js.map +1 -0
- package/dist/src/integrations/agents/shared-blackboard.d.ts +406 -0
- package/dist/src/integrations/agents/shared-blackboard.d.ts.map +1 -0
- package/dist/src/integrations/agents/shared-blackboard.js +757 -0
- package/dist/src/integrations/agents/shared-blackboard.js.map +1 -0
- package/dist/src/integrations/agents/subagent-output-store.d.ts +91 -0
- package/dist/src/integrations/agents/subagent-output-store.d.ts.map +1 -0
- package/dist/src/integrations/agents/subagent-output-store.js +257 -0
- package/dist/src/integrations/agents/subagent-output-store.js.map +1 -0
- package/dist/src/integrations/budget/budget-pool.d.ts +115 -0
- package/dist/src/integrations/budget/budget-pool.d.ts.map +1 -0
- package/dist/src/integrations/budget/budget-pool.js +205 -0
- package/dist/src/integrations/budget/budget-pool.js.map +1 -0
- package/dist/src/integrations/budget/cancellation.d.ts +229 -0
- package/dist/src/integrations/budget/cancellation.d.ts.map +1 -0
- package/dist/src/integrations/budget/cancellation.js +520 -0
- package/dist/src/integrations/budget/cancellation.js.map +1 -0
- package/dist/src/integrations/budget/dynamic-budget.d.ts +81 -0
- package/dist/src/integrations/budget/dynamic-budget.d.ts.map +1 -0
- package/dist/src/integrations/budget/dynamic-budget.js +151 -0
- package/dist/src/integrations/budget/dynamic-budget.js.map +1 -0
- package/dist/src/integrations/budget/economics.d.ts +435 -0
- package/dist/src/integrations/budget/economics.d.ts.map +1 -0
- package/dist/src/integrations/budget/economics.js +1007 -0
- package/dist/src/integrations/budget/economics.js.map +1 -0
- package/dist/src/integrations/budget/injection-budget.d.ts +71 -0
- package/dist/src/integrations/budget/injection-budget.d.ts.map +1 -0
- package/dist/src/integrations/budget/injection-budget.js +137 -0
- package/dist/src/integrations/budget/injection-budget.js.map +1 -0
- package/dist/src/integrations/budget/loop-detector.d.ts +105 -0
- package/dist/src/integrations/budget/loop-detector.d.ts.map +1 -0
- package/dist/src/integrations/budget/loop-detector.js +287 -0
- package/dist/src/integrations/budget/loop-detector.js.map +1 -0
- package/dist/src/integrations/budget/phase-tracker.d.ts +114 -0
- package/dist/src/integrations/budget/phase-tracker.d.ts.map +1 -0
- package/dist/src/integrations/budget/phase-tracker.js +262 -0
- package/dist/src/integrations/budget/phase-tracker.js.map +1 -0
- package/dist/src/integrations/budget/resources.d.ts +182 -0
- package/dist/src/integrations/budget/resources.d.ts.map +1 -0
- package/dist/src/integrations/budget/resources.js +318 -0
- package/dist/src/integrations/budget/resources.js.map +1 -0
- package/dist/src/integrations/context/auto-compaction.d.ts +210 -0
- package/dist/src/integrations/context/auto-compaction.d.ts.map +1 -0
- package/dist/src/integrations/context/auto-compaction.js +477 -0
- package/dist/src/integrations/context/auto-compaction.js.map +1 -0
- package/dist/src/integrations/context/code-analyzer.d.ts +71 -0
- package/dist/src/integrations/context/code-analyzer.d.ts.map +1 -0
- package/dist/src/integrations/context/code-analyzer.js +448 -0
- package/dist/src/integrations/context/code-analyzer.js.map +1 -0
- package/dist/src/integrations/context/code-selector.d.ts +78 -0
- package/dist/src/integrations/context/code-selector.d.ts.map +1 -0
- package/dist/src/integrations/context/code-selector.js +649 -0
- package/dist/src/integrations/context/code-selector.js.map +1 -0
- package/dist/src/integrations/context/codebase-ast.d.ts +138 -0
- package/dist/src/integrations/context/codebase-ast.d.ts.map +1 -0
- package/dist/src/integrations/context/codebase-ast.js +818 -0
- package/dist/src/integrations/context/codebase-ast.js.map +1 -0
- package/dist/src/integrations/context/codebase-context.d.ts +473 -0
- package/dist/src/integrations/context/codebase-context.d.ts.map +1 -0
- package/dist/src/integrations/context/codebase-context.js +685 -0
- package/dist/src/integrations/context/codebase-context.js.map +1 -0
- package/dist/src/integrations/context/compaction.d.ts +191 -0
- package/dist/src/integrations/context/compaction.d.ts.map +1 -0
- package/dist/src/integrations/context/compaction.js +384 -0
- package/dist/src/integrations/context/compaction.js.map +1 -0
- package/dist/src/integrations/context/context-engineering.d.ts +274 -0
- package/dist/src/integrations/context/context-engineering.d.ts.map +1 -0
- package/dist/src/integrations/context/context-engineering.js +437 -0
- package/dist/src/integrations/context/context-engineering.js.map +1 -0
- package/dist/src/integrations/context/file-cache.d.ts +97 -0
- package/dist/src/integrations/context/file-cache.d.ts.map +1 -0
- package/dist/src/integrations/context/file-cache.js +218 -0
- package/dist/src/integrations/context/file-cache.js.map +1 -0
- package/dist/src/integrations/context/semantic-cache.d.ts +178 -0
- package/dist/src/integrations/context/semantic-cache.d.ts.map +1 -0
- package/dist/src/integrations/context/semantic-cache.js +372 -0
- package/dist/src/integrations/context/semantic-cache.js.map +1 -0
- package/dist/src/integrations/index.d.ts +72 -68
- package/dist/src/integrations/index.d.ts.map +1 -1
- package/dist/src/integrations/index.js +76 -68
- package/dist/src/integrations/index.js.map +1 -1
- package/dist/src/integrations/lsp/lsp.d.ts +196 -0
- package/dist/src/integrations/lsp/lsp.d.ts.map +1 -0
- package/dist/src/integrations/lsp/lsp.js +583 -0
- package/dist/src/integrations/lsp/lsp.js.map +1 -0
- package/dist/src/integrations/mcp/mcp-client.d.ts +279 -0
- package/dist/src/integrations/mcp/mcp-client.d.ts.map +1 -0
- package/dist/src/integrations/mcp/mcp-client.js +755 -0
- package/dist/src/integrations/mcp/mcp-client.js.map +1 -0
- package/dist/src/integrations/mcp/mcp-custom-tools.d.ts +102 -0
- package/dist/src/integrations/mcp/mcp-custom-tools.d.ts.map +1 -0
- package/dist/src/integrations/mcp/mcp-custom-tools.js +232 -0
- package/dist/src/integrations/mcp/mcp-custom-tools.js.map +1 -0
- package/dist/src/integrations/mcp/mcp-tool-search.d.ts +77 -0
- package/dist/src/integrations/mcp/mcp-tool-search.d.ts.map +1 -0
- package/dist/src/integrations/mcp/mcp-tool-search.js +220 -0
- package/dist/src/integrations/mcp/mcp-tool-search.js.map +1 -0
- package/dist/src/integrations/mcp/mcp-tool-validator.d.ts +60 -0
- package/dist/src/integrations/mcp/mcp-tool-validator.d.ts.map +1 -0
- package/dist/src/integrations/mcp/mcp-tool-validator.js +141 -0
- package/dist/src/integrations/mcp/mcp-tool-validator.js.map +1 -0
- package/dist/src/integrations/persistence/codebase-repository.d.ts +45 -0
- package/dist/src/integrations/persistence/codebase-repository.d.ts.map +1 -0
- package/dist/src/integrations/persistence/codebase-repository.js +81 -0
- package/dist/src/integrations/persistence/codebase-repository.js.map +1 -0
- package/dist/src/integrations/persistence/goal-repository.d.ts +71 -0
- package/dist/src/integrations/persistence/goal-repository.d.ts.map +1 -0
- package/dist/src/integrations/persistence/goal-repository.js +184 -0
- package/dist/src/integrations/persistence/goal-repository.js.map +1 -0
- package/dist/src/integrations/persistence/history.d.ts +72 -0
- package/dist/src/integrations/persistence/history.d.ts.map +1 -0
- package/dist/src/integrations/persistence/history.js +165 -0
- package/dist/src/integrations/persistence/history.js.map +1 -0
- package/dist/src/integrations/persistence/persistence.d.ts +49 -0
- package/dist/src/integrations/persistence/persistence.d.ts.map +1 -0
- package/dist/src/integrations/persistence/persistence.js +197 -0
- package/dist/src/integrations/persistence/persistence.js.map +1 -0
- package/dist/src/integrations/persistence/session-repository.d.ts +212 -0
- package/dist/src/integrations/persistence/session-repository.d.ts.map +1 -0
- package/dist/src/integrations/persistence/session-repository.js +770 -0
- package/dist/src/integrations/persistence/session-repository.js.map +1 -0
- package/dist/src/integrations/persistence/session-store.d.ts +184 -0
- package/dist/src/integrations/persistence/session-store.d.ts.map +1 -0
- package/dist/src/integrations/persistence/session-store.js +346 -0
- package/dist/src/integrations/persistence/session-store.js.map +1 -0
- package/dist/src/integrations/persistence/sqlite-store.d.ts +453 -0
- package/dist/src/integrations/persistence/sqlite-store.d.ts.map +1 -0
- package/dist/src/integrations/persistence/sqlite-store.js +676 -0
- package/dist/src/integrations/persistence/sqlite-store.js.map +1 -0
- package/dist/src/integrations/persistence/worker-repository.d.ts +65 -0
- package/dist/src/integrations/persistence/worker-repository.d.ts.map +1 -0
- package/dist/src/integrations/persistence/worker-repository.js +183 -0
- package/dist/src/integrations/persistence/worker-repository.js.map +1 -0
- package/dist/src/integrations/quality/auto-checkpoint.d.ts +98 -0
- package/dist/src/integrations/quality/auto-checkpoint.d.ts.map +1 -0
- package/dist/src/integrations/quality/auto-checkpoint.js +252 -0
- package/dist/src/integrations/quality/auto-checkpoint.js.map +1 -0
- package/dist/src/integrations/quality/dead-letter-queue.d.ts +233 -0
- package/dist/src/integrations/quality/dead-letter-queue.d.ts.map +1 -0
- package/dist/src/integrations/quality/dead-letter-queue.js +543 -0
- package/dist/src/integrations/quality/dead-letter-queue.js.map +1 -0
- package/dist/src/integrations/quality/health-check.d.ts +218 -0
- package/dist/src/integrations/quality/health-check.d.ts.map +1 -0
- package/dist/src/integrations/quality/health-check.js +415 -0
- package/dist/src/integrations/quality/health-check.js.map +1 -0
- package/dist/src/integrations/quality/learning-store.d.ts +291 -0
- package/dist/src/integrations/quality/learning-store.d.ts.map +1 -0
- package/dist/src/integrations/quality/learning-store.js +646 -0
- package/dist/src/integrations/quality/learning-store.js.map +1 -0
- package/dist/src/integrations/quality/self-improvement.d.ts +90 -0
- package/dist/src/integrations/quality/self-improvement.d.ts.map +1 -0
- package/dist/src/integrations/quality/self-improvement.js +229 -0
- package/dist/src/integrations/quality/self-improvement.js.map +1 -0
- package/dist/src/integrations/quality/tool-recommendation.d.ts +61 -0
- package/dist/src/integrations/quality/tool-recommendation.d.ts.map +1 -0
- package/dist/src/integrations/quality/tool-recommendation.js +268 -0
- package/dist/src/integrations/quality/tool-recommendation.js.map +1 -0
- package/dist/src/integrations/safety/bash-policy.d.ts +33 -0
- package/dist/src/integrations/safety/bash-policy.d.ts.map +1 -0
- package/dist/src/integrations/safety/bash-policy.js +144 -0
- package/dist/src/integrations/safety/bash-policy.js.map +1 -0
- package/dist/src/integrations/safety/edit-validator.d.ts +30 -0
- package/dist/src/integrations/safety/edit-validator.d.ts.map +1 -0
- package/dist/src/integrations/safety/edit-validator.js +87 -0
- package/dist/src/integrations/safety/edit-validator.js.map +1 -0
- package/dist/src/integrations/safety/execution-policy.d.ts +189 -0
- package/dist/src/integrations/safety/execution-policy.d.ts.map +1 -0
- package/dist/src/integrations/safety/execution-policy.js +352 -0
- package/dist/src/integrations/safety/execution-policy.js.map +1 -0
- package/dist/src/integrations/safety/policy-engine.d.ts +55 -0
- package/dist/src/integrations/safety/policy-engine.d.ts.map +1 -0
- package/dist/src/integrations/safety/policy-engine.js +247 -0
- package/dist/src/integrations/safety/policy-engine.js.map +1 -0
- package/dist/src/integrations/safety/safety.d.ts +174 -0
- package/dist/src/integrations/safety/safety.d.ts.map +1 -0
- package/dist/src/integrations/safety/safety.js +470 -0
- package/dist/src/integrations/safety/safety.js.map +1 -0
- package/dist/src/integrations/safety/sandbox/basic.d.ts +81 -0
- package/dist/src/integrations/safety/sandbox/basic.d.ts.map +1 -0
- package/dist/src/integrations/safety/sandbox/basic.js +335 -0
- package/dist/src/integrations/safety/sandbox/basic.js.map +1 -0
- package/dist/src/integrations/safety/sandbox/docker.d.ts +94 -0
- package/dist/src/integrations/safety/sandbox/docker.d.ts.map +1 -0
- package/dist/src/integrations/safety/sandbox/docker.js +294 -0
- package/dist/src/integrations/safety/sandbox/docker.js.map +1 -0
- package/dist/src/integrations/safety/sandbox/index.d.ts +188 -0
- package/dist/src/integrations/safety/sandbox/index.d.ts.map +1 -0
- package/dist/src/integrations/safety/sandbox/index.js +386 -0
- package/dist/src/integrations/safety/sandbox/index.js.map +1 -0
- package/dist/src/integrations/safety/sandbox/landlock.d.ts +59 -0
- package/dist/src/integrations/safety/sandbox/landlock.d.ts.map +1 -0
- package/dist/src/integrations/safety/sandbox/landlock.js +329 -0
- package/dist/src/integrations/safety/sandbox/landlock.js.map +1 -0
- package/dist/src/integrations/safety/sandbox/seatbelt.d.ts +68 -0
- package/dist/src/integrations/safety/sandbox/seatbelt.d.ts.map +1 -0
- package/dist/src/integrations/safety/sandbox/seatbelt.js +298 -0
- package/dist/src/integrations/safety/sandbox/seatbelt.js.map +1 -0
- package/dist/src/integrations/safety/type-checker.d.ts +53 -0
- package/dist/src/integrations/safety/type-checker.d.ts.map +1 -0
- package/dist/src/integrations/safety/type-checker.js +142 -0
- package/dist/src/integrations/safety/type-checker.js.map +1 -0
- package/dist/src/integrations/skills/skill-executor.d.ts +113 -0
- package/dist/src/integrations/skills/skill-executor.d.ts.map +1 -0
- package/dist/src/integrations/skills/skill-executor.js +270 -0
- package/dist/src/integrations/skills/skill-executor.js.map +1 -0
- package/dist/src/integrations/skills/skills.d.ts +262 -0
- package/dist/src/integrations/skills/skills.d.ts.map +1 -0
- package/dist/src/integrations/skills/skills.js +602 -0
- package/dist/src/integrations/skills/skills.js.map +1 -0
- package/dist/src/integrations/streaming/pty-shell.d.ts +169 -0
- package/dist/src/integrations/streaming/pty-shell.d.ts.map +1 -0
- package/dist/src/integrations/streaming/pty-shell.js +367 -0
- package/dist/src/integrations/streaming/pty-shell.js.map +1 -0
- package/dist/src/integrations/streaming/streaming.d.ts +102 -0
- package/dist/src/integrations/streaming/streaming.d.ts.map +1 -0
- package/dist/src/integrations/streaming/streaming.js +362 -0
- package/dist/src/integrations/streaming/streaming.js.map +1 -0
- package/dist/src/integrations/swarm/index.d.ts +2 -1
- package/dist/src/integrations/swarm/index.d.ts.map +1 -1
- package/dist/src/integrations/swarm/index.js +2 -0
- package/dist/src/integrations/swarm/index.js.map +1 -1
- package/dist/src/integrations/swarm/model-selector.js +1 -1
- package/dist/src/integrations/swarm/model-selector.js.map +1 -1
- package/dist/src/integrations/swarm/swarm-budget.d.ts +1 -1
- package/dist/src/integrations/swarm/swarm-budget.d.ts.map +1 -1
- package/dist/src/integrations/swarm/swarm-budget.js +1 -1
- package/dist/src/integrations/swarm/swarm-budget.js.map +1 -1
- package/dist/src/integrations/swarm/swarm-config-loader.d.ts.map +1 -1
- package/dist/src/integrations/swarm/swarm-config-loader.js +7 -0
- package/dist/src/integrations/swarm/swarm-config-loader.js.map +1 -1
- package/dist/src/integrations/swarm/swarm-events.d.ts +1 -1
- package/dist/src/integrations/swarm/swarm-events.d.ts.map +1 -1
- package/dist/src/integrations/swarm/swarm-execution.d.ts +27 -0
- package/dist/src/integrations/swarm/swarm-execution.d.ts.map +1 -0
- package/dist/src/integrations/swarm/swarm-execution.js +1021 -0
- package/dist/src/integrations/swarm/swarm-execution.js.map +1 -0
- package/dist/src/integrations/swarm/swarm-helpers.d.ts +26 -0
- package/dist/src/integrations/swarm/swarm-helpers.d.ts.map +1 -0
- package/dist/src/integrations/swarm/swarm-helpers.js +95 -0
- package/dist/src/integrations/swarm/swarm-helpers.js.map +1 -0
- package/dist/src/integrations/swarm/swarm-lifecycle.d.ts +100 -0
- package/dist/src/integrations/swarm/swarm-lifecycle.d.ts.map +1 -0
- package/dist/src/integrations/swarm/swarm-lifecycle.js +922 -0
- package/dist/src/integrations/swarm/swarm-lifecycle.js.map +1 -0
- package/dist/src/integrations/swarm/swarm-orchestrator.d.ts +84 -203
- package/dist/src/integrations/swarm/swarm-orchestrator.d.ts.map +1 -1
- package/dist/src/integrations/swarm/swarm-orchestrator.js +251 -2870
- package/dist/src/integrations/swarm/swarm-orchestrator.js.map +1 -1
- package/dist/src/integrations/swarm/swarm-quality-gate.js +1 -1
- package/dist/src/integrations/swarm/swarm-quality-gate.js.map +1 -1
- package/dist/src/integrations/swarm/swarm-recovery.d.ts +75 -0
- package/dist/src/integrations/swarm/swarm-recovery.d.ts.map +1 -0
- package/dist/src/integrations/swarm/swarm-recovery.js +550 -0
- package/dist/src/integrations/swarm/swarm-recovery.js.map +1 -0
- package/dist/src/integrations/swarm/swarm-state-store.d.ts.map +1 -1
- package/dist/src/integrations/swarm/swarm-state-store.js +6 -0
- package/dist/src/integrations/swarm/swarm-state-store.js.map +1 -1
- package/dist/src/integrations/swarm/task-queue.d.ts +1 -1
- package/dist/src/integrations/swarm/task-queue.d.ts.map +1 -1
- package/dist/src/integrations/swarm/task-queue.js +28 -1
- package/dist/src/integrations/swarm/task-queue.js.map +1 -1
- package/dist/src/integrations/swarm/types.d.ts +17 -5
- package/dist/src/integrations/swarm/types.d.ts.map +1 -1
- package/dist/src/integrations/swarm/types.js.map +1 -1
- package/dist/src/integrations/swarm/worker-pool.d.ts +1 -1
- package/dist/src/integrations/swarm/worker-pool.d.ts.map +1 -1
- package/dist/src/integrations/swarm/worker-pool.js +13 -9
- package/dist/src/integrations/swarm/worker-pool.js.map +1 -1
- package/dist/src/integrations/tasks/dependency-analyzer.d.ts +34 -0
- package/dist/src/integrations/tasks/dependency-analyzer.d.ts.map +1 -0
- package/dist/src/integrations/tasks/dependency-analyzer.js +232 -0
- package/dist/src/integrations/tasks/dependency-analyzer.js.map +1 -0
- package/dist/src/integrations/tasks/interactive-planning.d.ts +322 -0
- package/dist/src/integrations/tasks/interactive-planning.d.ts.map +1 -0
- package/dist/src/integrations/tasks/interactive-planning.js +655 -0
- package/dist/src/integrations/tasks/interactive-planning.js.map +1 -0
- package/dist/src/integrations/tasks/pending-plan.d.ts +196 -0
- package/dist/src/integrations/tasks/pending-plan.d.ts.map +1 -0
- package/dist/src/integrations/tasks/pending-plan.js +431 -0
- package/dist/src/integrations/tasks/pending-plan.js.map +1 -0
- package/dist/src/integrations/tasks/planning.d.ts +115 -0
- package/dist/src/integrations/tasks/planning.d.ts.map +1 -0
- package/dist/src/integrations/tasks/planning.js +413 -0
- package/dist/src/integrations/tasks/planning.js.map +1 -0
- package/dist/src/integrations/tasks/smart-decomposer.d.ts +316 -0
- package/dist/src/integrations/tasks/smart-decomposer.d.ts.map +1 -0
- package/dist/src/integrations/tasks/smart-decomposer.js +661 -0
- package/dist/src/integrations/tasks/smart-decomposer.js.map +1 -0
- package/dist/src/integrations/tasks/task-manager.d.ts +164 -0
- package/dist/src/integrations/tasks/task-manager.d.ts.map +1 -0
- package/dist/src/integrations/tasks/task-manager.js +383 -0
- package/dist/src/integrations/tasks/task-manager.js.map +1 -0
- package/dist/src/integrations/tasks/task-splitter.d.ts +56 -0
- package/dist/src/integrations/tasks/task-splitter.d.ts.map +1 -0
- package/dist/src/integrations/tasks/task-splitter.js +537 -0
- package/dist/src/integrations/tasks/task-splitter.js.map +1 -0
- package/dist/src/integrations/tasks/verification-gate.d.ts +103 -0
- package/dist/src/integrations/tasks/verification-gate.d.ts.map +1 -0
- package/dist/src/integrations/tasks/verification-gate.js +193 -0
- package/dist/src/integrations/tasks/verification-gate.js.map +1 -0
- package/dist/src/integrations/tasks/work-log.d.ts +87 -0
- package/dist/src/integrations/tasks/work-log.d.ts.map +1 -0
- package/dist/src/integrations/tasks/work-log.js +275 -0
- package/dist/src/integrations/tasks/work-log.js.map +1 -0
- package/dist/src/integrations/utilities/capabilities.d.ts +160 -0
- package/dist/src/integrations/utilities/capabilities.d.ts.map +1 -0
- package/dist/src/integrations/utilities/capabilities.js +426 -0
- package/dist/src/integrations/utilities/capabilities.js.map +1 -0
- package/dist/src/integrations/utilities/diff-utils.d.ts +105 -0
- package/dist/src/integrations/utilities/diff-utils.d.ts.map +1 -0
- package/dist/src/integrations/utilities/diff-utils.js +497 -0
- package/dist/src/integrations/utilities/diff-utils.js.map +1 -0
- package/dist/src/integrations/utilities/environment-facts.d.ts +52 -0
- package/dist/src/integrations/utilities/environment-facts.d.ts.map +1 -0
- package/dist/src/integrations/utilities/environment-facts.js +84 -0
- package/dist/src/integrations/utilities/environment-facts.js.map +1 -0
- package/dist/src/integrations/utilities/file-change-tracker.d.ts +162 -0
- package/dist/src/integrations/utilities/file-change-tracker.d.ts.map +1 -0
- package/dist/src/integrations/utilities/file-change-tracker.js +538 -0
- package/dist/src/integrations/utilities/file-change-tracker.js.map +1 -0
- package/dist/src/integrations/utilities/graph-visualization.d.ts +72 -0
- package/dist/src/integrations/utilities/graph-visualization.d.ts.map +1 -0
- package/dist/src/integrations/utilities/graph-visualization.js +383 -0
- package/dist/src/integrations/utilities/graph-visualization.js.map +1 -0
- package/dist/src/integrations/utilities/hierarchical-config.d.ts +215 -0
- package/dist/src/integrations/utilities/hierarchical-config.d.ts.map +1 -0
- package/dist/src/integrations/utilities/hierarchical-config.js +504 -0
- package/dist/src/integrations/utilities/hierarchical-config.js.map +1 -0
- package/dist/src/integrations/utilities/hooks.d.ts +116 -0
- package/dist/src/integrations/utilities/hooks.d.ts.map +1 -0
- package/dist/src/integrations/utilities/hooks.js +410 -0
- package/dist/src/integrations/utilities/hooks.js.map +1 -0
- package/dist/src/integrations/utilities/ignore.d.ts +143 -0
- package/dist/src/integrations/utilities/ignore.d.ts.map +1 -0
- package/dist/src/integrations/utilities/ignore.js +417 -0
- package/dist/src/integrations/utilities/ignore.js.map +1 -0
- package/dist/src/integrations/utilities/image-renderer.d.ts +119 -0
- package/dist/src/integrations/utilities/image-renderer.d.ts.map +1 -0
- package/dist/src/integrations/utilities/image-renderer.js +306 -0
- package/dist/src/integrations/utilities/image-renderer.js.map +1 -0
- package/dist/src/integrations/utilities/logger.d.ts +104 -0
- package/dist/src/integrations/utilities/logger.d.ts.map +1 -0
- package/dist/src/integrations/utilities/logger.js +219 -0
- package/dist/src/integrations/utilities/logger.js.map +1 -0
- package/dist/src/integrations/utilities/memory.d.ts +116 -0
- package/dist/src/integrations/utilities/memory.d.ts.map +1 -0
- package/dist/src/integrations/utilities/memory.js +311 -0
- package/dist/src/integrations/utilities/memory.js.map +1 -0
- package/dist/src/integrations/utilities/observability.d.ts +162 -0
- package/dist/src/integrations/utilities/observability.d.ts.map +1 -0
- package/dist/src/integrations/utilities/observability.js +407 -0
- package/dist/src/integrations/utilities/observability.js.map +1 -0
- package/dist/src/integrations/utilities/openrouter-pricing.d.ts +67 -0
- package/dist/src/integrations/utilities/openrouter-pricing.d.ts.map +1 -0
- package/dist/src/integrations/utilities/openrouter-pricing.js +166 -0
- package/dist/src/integrations/utilities/openrouter-pricing.js.map +1 -0
- package/dist/src/integrations/utilities/react.d.ts +139 -0
- package/dist/src/integrations/utilities/react.d.ts.map +1 -0
- package/dist/src/integrations/utilities/react.js +273 -0
- package/dist/src/integrations/utilities/react.js.map +1 -0
- package/dist/src/integrations/utilities/retry.d.ts +132 -0
- package/dist/src/integrations/utilities/retry.d.ts.map +1 -0
- package/dist/src/integrations/utilities/retry.js +233 -0
- package/dist/src/integrations/utilities/retry.js.map +1 -0
- package/dist/src/integrations/utilities/routing.d.ts +118 -0
- package/dist/src/integrations/utilities/routing.d.ts.map +1 -0
- package/dist/src/integrations/utilities/routing.js +348 -0
- package/dist/src/integrations/utilities/routing.js.map +1 -0
- package/dist/src/integrations/utilities/rules.d.ts +131 -0
- package/dist/src/integrations/utilities/rules.d.ts.map +1 -0
- package/dist/src/integrations/utilities/rules.js +284 -0
- package/dist/src/integrations/utilities/rules.js.map +1 -0
- package/dist/src/integrations/utilities/sourcegraph.d.ts +169 -0
- package/dist/src/integrations/utilities/sourcegraph.d.ts.map +1 -0
- package/dist/src/integrations/utilities/sourcegraph.js +379 -0
- package/dist/src/integrations/utilities/sourcegraph.js.map +1 -0
- package/dist/src/integrations/utilities/thinking-strategy.d.ts +52 -0
- package/dist/src/integrations/utilities/thinking-strategy.d.ts.map +1 -0
- package/dist/src/integrations/utilities/thinking-strategy.js +129 -0
- package/dist/src/integrations/utilities/thinking-strategy.js.map +1 -0
- package/dist/src/integrations/utilities/thread-manager.d.ts +199 -0
- package/dist/src/integrations/utilities/thread-manager.d.ts.map +1 -0
- package/dist/src/integrations/utilities/thread-manager.js +357 -0
- package/dist/src/integrations/utilities/thread-manager.js.map +1 -0
- package/dist/src/integrations/utilities/token-estimate.d.ts +11 -0
- package/dist/src/integrations/utilities/token-estimate.d.ts.map +1 -0
- package/dist/src/integrations/utilities/token-estimate.js +14 -0
- package/dist/src/integrations/utilities/token-estimate.js.map +1 -0
- package/dist/src/main.js +10 -4
- package/dist/src/main.js.map +1 -1
- package/dist/src/modes/repl.d.ts.map +1 -1
- package/dist/src/modes/repl.js +22 -5
- package/dist/src/modes/repl.js.map +1 -1
- package/dist/src/modes/tui.d.ts.map +1 -1
- package/dist/src/modes/tui.js +23 -6
- package/dist/src/modes/tui.js.map +1 -1
- package/dist/src/modes.js +1 -1
- package/dist/src/modes.js.map +1 -1
- package/dist/src/observability/tracer.js +1 -1
- package/dist/src/observability/tracer.js.map +1 -1
- package/dist/src/persistence/schema.d.ts +2 -0
- package/dist/src/persistence/schema.d.ts.map +1 -1
- package/dist/src/persistence/schema.js +31 -0
- package/dist/src/persistence/schema.js.map +1 -1
- package/dist/src/providers/adapters/anthropic.d.ts +6 -0
- package/dist/src/providers/adapters/anthropic.d.ts.map +1 -1
- package/dist/src/providers/adapters/anthropic.js +99 -15
- package/dist/src/providers/adapters/anthropic.js.map +1 -1
- package/dist/src/providers/adapters/azure.d.ts +74 -0
- package/dist/src/providers/adapters/azure.d.ts.map +1 -0
- package/dist/src/providers/adapters/azure.js +354 -0
- package/dist/src/providers/adapters/azure.js.map +1 -0
- package/dist/src/providers/adapters/mock.d.ts +16 -2
- package/dist/src/providers/adapters/mock.d.ts.map +1 -1
- package/dist/src/providers/adapters/mock.js +44 -3
- package/dist/src/providers/adapters/mock.js.map +1 -1
- package/dist/src/providers/adapters/openai.d.ts +6 -1
- package/dist/src/providers/adapters/openai.d.ts.map +1 -1
- package/dist/src/providers/adapters/openai.js +39 -8
- package/dist/src/providers/adapters/openai.js.map +1 -1
- package/dist/src/providers/adapters/openrouter.d.ts +6 -0
- package/dist/src/providers/adapters/openrouter.d.ts.map +1 -1
- package/dist/src/providers/adapters/openrouter.js +73 -3
- package/dist/src/providers/adapters/openrouter.js.map +1 -1
- package/dist/src/providers/provider.js +1 -1
- package/dist/src/providers/provider.js.map +1 -1
- package/dist/src/providers/resilient-provider.js +1 -1
- package/dist/src/providers/resilient-provider.js.map +1 -1
- package/dist/src/providers/types.d.ts +23 -2
- package/dist/src/providers/types.d.ts.map +1 -1
- package/dist/src/session-picker.d.ts +1 -1
- package/dist/src/session-picker.d.ts.map +1 -1
- package/dist/src/session-picker.js +1 -1
- package/dist/src/session-picker.js.map +1 -1
- package/dist/src/shared/budget-tracker.js +1 -1
- package/dist/src/shared/budget-tracker.js.map +1 -1
- package/dist/src/tools/agent.d.ts +1 -1
- package/dist/src/tools/agent.d.ts.map +1 -1
- package/dist/src/tools/bash.js +1 -1
- package/dist/src/tools/bash.js.map +1 -1
- package/dist/src/tools/file.js +1 -1
- package/dist/src/tools/file.js.map +1 -1
- package/dist/src/tools/permission.js +2 -2
- package/dist/src/tools/permission.js.map +1 -1
- package/dist/src/tools/registry.d.ts +1 -1
- package/dist/src/tools/registry.d.ts.map +1 -1
- package/dist/src/tools/registry.js +1 -1
- package/dist/src/tools/registry.js.map +1 -1
- package/dist/src/tools/tasks.d.ts +1 -1
- package/dist/src/tools/tasks.d.ts.map +1 -1
- package/dist/src/tools/undo.d.ts +1 -1
- package/dist/src/tools/undo.d.ts.map +1 -1
- package/dist/src/tracing/cache-boundary-tracker.d.ts.map +1 -1
- package/dist/src/tracing/cache-boundary-tracker.js +2 -2
- package/dist/src/tracing/cache-boundary-tracker.js.map +1 -1
- package/dist/src/tracing/trace-collector.d.ts +22 -0
- package/dist/src/tracing/trace-collector.d.ts.map +1 -1
- package/dist/src/tracing/trace-collector.js +27 -3
- package/dist/src/tracing/trace-collector.js.map +1 -1
- package/dist/src/tracing/types.d.ts +17 -1
- package/dist/src/tracing/types.d.ts.map +1 -1
- package/dist/src/tracing/types.js.map +1 -1
- package/dist/src/tricks/failure-evidence.js +1 -1
- package/dist/src/tricks/failure-evidence.js.map +1 -1
- package/dist/src/tricks/recitation.d.ts.map +1 -1
- package/dist/src/tricks/recitation.js +2 -1
- package/dist/src/tricks/recitation.js.map +1 -1
- package/dist/src/tricks/recursive-context.d.ts.map +1 -1
- package/dist/src/tricks/recursive-context.js +2 -2
- package/dist/src/tricks/recursive-context.js.map +1 -1
- package/dist/src/tricks/reversible-compaction.d.ts.map +1 -1
- package/dist/src/tricks/reversible-compaction.js +6 -2
- package/dist/src/tricks/reversible-compaction.js.map +1 -1
- package/dist/src/tui/app.d.ts +3 -3
- package/dist/src/tui/app.d.ts.map +1 -1
- package/dist/src/tui/app.js +86 -14
- package/dist/src/tui/app.js.map +1 -1
- package/dist/src/tui/components/CollapsibleDiffView.d.ts +1 -1
- package/dist/src/tui/components/CollapsibleDiffView.d.ts.map +1 -1
- package/dist/src/tui/components/DiagnosticsPanel.d.ts +24 -0
- package/dist/src/tui/components/DiagnosticsPanel.d.ts.map +1 -0
- package/dist/src/tui/components/DiagnosticsPanel.js +47 -0
- package/dist/src/tui/components/DiagnosticsPanel.js.map +1 -0
- package/dist/src/tui/components/DiffView.d.ts +1 -1
- package/dist/src/tui/components/DiffView.d.ts.map +1 -1
- package/dist/src/tui/components/ErrorBoundary.js +1 -1
- package/dist/src/tui/components/ErrorBoundary.js.map +1 -1
- package/dist/src/tui/components/TasksPanel.d.ts +1 -1
- package/dist/src/tui/components/TasksPanel.d.ts.map +1 -1
- package/dist/src/tui/event-display.js +1 -1
- package/dist/src/tui/event-display.js.map +1 -1
- package/dist/src/tui/index.js +1 -1
- package/dist/src/tui/index.js.map +1 -1
- package/dist/src/tui/transparency-aggregator.d.ts +13 -0
- package/dist/src/tui/transparency-aggregator.d.ts.map +1 -1
- package/dist/src/tui/transparency-aggregator.js +21 -0
- package/dist/src/tui/transparency-aggregator.js.map +1 -1
- package/dist/src/types.d.ts +27 -2
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Search
|
|
3
|
+
*
|
|
4
|
+
* Provides a meta-tool for searching and dynamically loading MCP tools.
|
|
5
|
+
* Enables lazy loading of tool schemas to reduce context window usage.
|
|
6
|
+
*
|
|
7
|
+
* Token Savings:
|
|
8
|
+
* - 50 tools with full schemas: ~15,000 tokens
|
|
9
|
+
* - 50 tools as summaries: ~2,500 tokens
|
|
10
|
+
* - Savings: ~83% reduction in MCP tool context
|
|
11
|
+
*/
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// TOOL SEARCH TOOL
|
|
14
|
+
// =============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Create the mcp_tool_search tool.
|
|
17
|
+
*
|
|
18
|
+
* This tool allows the agent to search for MCP tools by name or description,
|
|
19
|
+
* then automatically loads matching tools so they become available for use.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* // Search for browser tools
|
|
23
|
+
* mcp_tool_search({ query: "browser click" })
|
|
24
|
+
*
|
|
25
|
+
* // Search with regex
|
|
26
|
+
* mcp_tool_search({ query: "browser_(click|hover)", regex: true })
|
|
27
|
+
*
|
|
28
|
+
* // Limit results
|
|
29
|
+
* mcp_tool_search({ query: "screenshot", limit: 3 })
|
|
30
|
+
*/
|
|
31
|
+
export function createMCPToolSearchTool(mcpClient, options = {}) {
|
|
32
|
+
const { autoLoad = true, defaultLimit = 5, onToolsLoaded, } = options;
|
|
33
|
+
return {
|
|
34
|
+
name: 'mcp_tool_search',
|
|
35
|
+
description: `Search for MCP tools by name or description.
|
|
36
|
+
Found tools are automatically loaded and become available for use.
|
|
37
|
+
|
|
38
|
+
Examples:
|
|
39
|
+
- "browser click" - find click-related browser tools
|
|
40
|
+
- "screenshot" - find screenshot tools
|
|
41
|
+
- "file read" - find file reading tools
|
|
42
|
+
|
|
43
|
+
Use this when you need an MCP tool but don't see it in your available tools.`,
|
|
44
|
+
parameters: {
|
|
45
|
+
type: 'object',
|
|
46
|
+
properties: {
|
|
47
|
+
query: {
|
|
48
|
+
type: 'string',
|
|
49
|
+
description: 'Search keywords (e.g., "browser click", "file read")',
|
|
50
|
+
},
|
|
51
|
+
regex: {
|
|
52
|
+
type: 'boolean',
|
|
53
|
+
description: 'Use regex matching instead of keyword search',
|
|
54
|
+
},
|
|
55
|
+
limit: {
|
|
56
|
+
type: 'number',
|
|
57
|
+
description: `Max results to return (default: ${defaultLimit})`,
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
required: ['query'],
|
|
61
|
+
},
|
|
62
|
+
execute: async (args) => {
|
|
63
|
+
const query = String(args.query || '');
|
|
64
|
+
const regex = Boolean(args.regex);
|
|
65
|
+
const limit = typeof args.limit === 'number' ? args.limit : defaultLimit;
|
|
66
|
+
// Search for matching tools
|
|
67
|
+
const matches = mcpClient.searchTools(query, { limit, regex });
|
|
68
|
+
// Get total count for context
|
|
69
|
+
const allSummaries = mcpClient.getAllToolSummaries();
|
|
70
|
+
const totalAvailable = allSummaries.length;
|
|
71
|
+
// Auto-load found tools if enabled
|
|
72
|
+
let loadedTools = [];
|
|
73
|
+
if (autoLoad && matches.length > 0) {
|
|
74
|
+
loadedTools = mcpClient.loadTools(matches.map(m => m.name));
|
|
75
|
+
// Notify callback if provided
|
|
76
|
+
if (onToolsLoaded && loadedTools.length > 0) {
|
|
77
|
+
onToolsLoaded(loadedTools);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Build result message
|
|
81
|
+
let message;
|
|
82
|
+
if (matches.length === 0) {
|
|
83
|
+
message = `No tools found matching "${query}". Try different keywords.`;
|
|
84
|
+
}
|
|
85
|
+
else if (autoLoad) {
|
|
86
|
+
message = `Found and loaded ${matches.length} tool(s) matching "${query}". They are now available for use.`;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
message = `Found ${matches.length} tool(s) matching "${query}".`;
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
tools: matches,
|
|
93
|
+
totalAvailable,
|
|
94
|
+
autoLoaded: autoLoad && matches.length > 0,
|
|
95
|
+
message,
|
|
96
|
+
};
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Create a tool that lists all available MCP tools as summaries.
|
|
102
|
+
* Useful when the agent needs to understand what tools are available.
|
|
103
|
+
*/
|
|
104
|
+
export function createMCPToolListTool(mcpClient) {
|
|
105
|
+
return {
|
|
106
|
+
name: 'mcp_tool_list',
|
|
107
|
+
description: `List all available MCP tools with brief descriptions.
|
|
108
|
+
Use this to see what tools are available before searching for specific ones.`,
|
|
109
|
+
parameters: {
|
|
110
|
+
type: 'object',
|
|
111
|
+
properties: {
|
|
112
|
+
server: {
|
|
113
|
+
type: 'string',
|
|
114
|
+
description: 'Filter by server name (optional)',
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
execute: async (args) => {
|
|
119
|
+
const serverFilter = args.server ? String(args.server) : undefined;
|
|
120
|
+
let summaries = mcpClient.getAllToolSummaries();
|
|
121
|
+
if (serverFilter) {
|
|
122
|
+
summaries = summaries.filter(s => s.serverName === serverFilter);
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
tools: summaries,
|
|
126
|
+
count: summaries.length,
|
|
127
|
+
};
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Create a tool that shows MCP context usage statistics.
|
|
133
|
+
* Useful for monitoring token usage with lazy loading.
|
|
134
|
+
*/
|
|
135
|
+
export function createMCPContextStatsTool(mcpClient) {
|
|
136
|
+
return {
|
|
137
|
+
name: 'mcp_context_stats',
|
|
138
|
+
description: `Show MCP tool context usage statistics.
|
|
139
|
+
Reports token usage for tool summaries vs full definitions.`,
|
|
140
|
+
parameters: {
|
|
141
|
+
type: 'object',
|
|
142
|
+
properties: {},
|
|
143
|
+
},
|
|
144
|
+
execute: async () => {
|
|
145
|
+
const stats = mcpClient.getContextStats();
|
|
146
|
+
// Calculate savings
|
|
147
|
+
const fullLoadTokens = stats.totalTools * 200; // Estimate: ~200 tokens per full tool
|
|
148
|
+
const currentTokens = stats.summaryTokens + stats.definitionTokens;
|
|
149
|
+
const savingsPercent = fullLoadTokens > 0
|
|
150
|
+
? Math.round((1 - currentTokens / fullLoadTokens) * 100)
|
|
151
|
+
: 0;
|
|
152
|
+
// Generate recommendation
|
|
153
|
+
let recommendation;
|
|
154
|
+
if (stats.loadedCount > 20) {
|
|
155
|
+
recommendation = 'Consider using lazy loading more aggressively - many tools are fully loaded.';
|
|
156
|
+
}
|
|
157
|
+
else if (stats.loadedCount === 0) {
|
|
158
|
+
recommendation = 'All tools are summaries. Use mcp_tool_search to load specific tools when needed.';
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
recommendation = `Good balance: ${stats.loadedCount} tools loaded, ${stats.summaryCount} as summaries.`;
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
stats,
|
|
165
|
+
savings: `${savingsPercent}% token savings vs loading all full schemas`,
|
|
166
|
+
recommendation,
|
|
167
|
+
};
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
// =============================================================================
|
|
172
|
+
// FACTORY
|
|
173
|
+
// =============================================================================
|
|
174
|
+
/**
|
|
175
|
+
* Create all MCP meta-tools for dynamic tool discovery.
|
|
176
|
+
*/
|
|
177
|
+
export function createMCPMetaTools(mcpClient, options = {}) {
|
|
178
|
+
return [
|
|
179
|
+
createMCPToolSearchTool(mcpClient, options),
|
|
180
|
+
createMCPToolListTool(mcpClient),
|
|
181
|
+
createMCPContextStatsTool(mcpClient),
|
|
182
|
+
];
|
|
183
|
+
}
|
|
184
|
+
// =============================================================================
|
|
185
|
+
// UTILITIES
|
|
186
|
+
// =============================================================================
|
|
187
|
+
/**
|
|
188
|
+
* Format tool summaries for display.
|
|
189
|
+
*/
|
|
190
|
+
export function formatToolSummaries(summaries) {
|
|
191
|
+
if (summaries.length === 0) {
|
|
192
|
+
return 'No tools available.';
|
|
193
|
+
}
|
|
194
|
+
const lines = ['MCP Tools:'];
|
|
195
|
+
// Group by server
|
|
196
|
+
const byServer = new Map();
|
|
197
|
+
for (const s of summaries) {
|
|
198
|
+
const existing = byServer.get(s.serverName) || [];
|
|
199
|
+
existing.push(s);
|
|
200
|
+
byServer.set(s.serverName, existing);
|
|
201
|
+
}
|
|
202
|
+
for (const [server, tools] of byServer) {
|
|
203
|
+
lines.push(`\n ${server}:`);
|
|
204
|
+
for (const tool of tools) {
|
|
205
|
+
lines.push(` - ${tool.originalName}: ${tool.description}`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return lines.join('\n');
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Format context stats for display.
|
|
212
|
+
*/
|
|
213
|
+
export function formatContextStats(stats) {
|
|
214
|
+
const total = stats.summaryTokens + stats.definitionTokens;
|
|
215
|
+
return `MCP Tool Context:
|
|
216
|
+
Tool summaries: ${stats.summaryCount} tools (~${stats.summaryTokens.toLocaleString()} tokens)
|
|
217
|
+
Full definitions: ${stats.loadedCount} tools (~${stats.definitionTokens.toLocaleString()} tokens)
|
|
218
|
+
Total: ${stats.totalTools} tools (~${total.toLocaleString()} tokens)`;
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=mcp-tool-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tool-search.js","sourceRoot":"","sources":["../../../../src/integrations/mcp/mcp-tool-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Description Validator
|
|
3
|
+
*
|
|
4
|
+
* Validates MCP tool descriptions for quality, helping ensure
|
|
5
|
+
* that LLMs can understand and correctly use the tools.
|
|
6
|
+
*
|
|
7
|
+
* Quality checks:
|
|
8
|
+
* 1. Description length (minimum useful length)
|
|
9
|
+
* 2. Input schema has property descriptions
|
|
10
|
+
* 3. Required parameters are marked
|
|
11
|
+
* 4. Description contains usage patterns
|
|
12
|
+
* 5. Naming conventions (snake_case, prefixed)
|
|
13
|
+
*/
|
|
14
|
+
export interface ToolValidationResult {
|
|
15
|
+
/** Tool name */
|
|
16
|
+
toolName: string;
|
|
17
|
+
/** Quality score (0-100) */
|
|
18
|
+
score: number;
|
|
19
|
+
/** Specific problems found */
|
|
20
|
+
issues: string[];
|
|
21
|
+
/** Improvement suggestions */
|
|
22
|
+
suggestions: string[];
|
|
23
|
+
}
|
|
24
|
+
export interface ToolValidationConfig {
|
|
25
|
+
/** Minimum description length (default: 20) */
|
|
26
|
+
minDescriptionLength: number;
|
|
27
|
+
/** Require input schema property descriptions (default: true) */
|
|
28
|
+
requirePropertyDescriptions: boolean;
|
|
29
|
+
/** Require at least one example in description (default: false) */
|
|
30
|
+
requireExamples: boolean;
|
|
31
|
+
/** Minimum quality score to pass (default: 40) */
|
|
32
|
+
minimumPassScore: number;
|
|
33
|
+
}
|
|
34
|
+
interface ValidatableToolInfo {
|
|
35
|
+
name: string;
|
|
36
|
+
description?: string;
|
|
37
|
+
inputSchema?: Record<string, unknown>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Validate a single tool's description quality.
|
|
41
|
+
*/
|
|
42
|
+
export declare function validateToolDescription(tool: ValidatableToolInfo, config?: Partial<ToolValidationConfig>): ToolValidationResult;
|
|
43
|
+
/**
|
|
44
|
+
* Validate all tools and return results sorted by score (worst first).
|
|
45
|
+
*/
|
|
46
|
+
export declare function validateAllTools(tools: ValidatableToolInfo[], config?: Partial<ToolValidationConfig>): ToolValidationResult[];
|
|
47
|
+
/**
|
|
48
|
+
* Get a summary of validation results.
|
|
49
|
+
*/
|
|
50
|
+
export declare function formatValidationSummary(results: ToolValidationResult[]): string;
|
|
51
|
+
/**
|
|
52
|
+
* Create a tool validator.
|
|
53
|
+
*/
|
|
54
|
+
export declare function createToolValidator(config?: Partial<ToolValidationConfig>): {
|
|
55
|
+
validate: (tool: ValidatableToolInfo) => ToolValidationResult;
|
|
56
|
+
validateAll: (tools: ValidatableToolInfo[]) => ToolValidationResult[];
|
|
57
|
+
formatSummary: typeof formatValidationSummary;
|
|
58
|
+
};
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=mcp-tool-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tool-validator.d.ts","sourceRoot":"","sources":["../../../../src/integrations/mcp/mcp-tool-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,MAAM,WAAW,oBAAoB;IACnC,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,8BAA8B;IAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,+CAA+C;IAC/C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iEAAiE;IACjE,2BAA2B,EAAE,OAAO,CAAC;IACrC,mEAAmE;IACnE,eAAe,EAAE,OAAO,CAAC;IACzB,kDAAkD;IAClD,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAiBD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,mBAAmB,EACzB,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACrC,oBAAoB,CAmFtB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,mBAAmB,EAAE,EAC5B,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACrC,oBAAoB,EAAE,CAIxB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAgB/E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;qBAErD,mBAAmB;yBACf,mBAAmB,EAAE;;EAG7C"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Description Validator
|
|
3
|
+
*
|
|
4
|
+
* Validates MCP tool descriptions for quality, helping ensure
|
|
5
|
+
* that LLMs can understand and correctly use the tools.
|
|
6
|
+
*
|
|
7
|
+
* Quality checks:
|
|
8
|
+
* 1. Description length (minimum useful length)
|
|
9
|
+
* 2. Input schema has property descriptions
|
|
10
|
+
* 3. Required parameters are marked
|
|
11
|
+
* 4. Description contains usage patterns
|
|
12
|
+
* 5. Naming conventions (snake_case, prefixed)
|
|
13
|
+
*/
|
|
14
|
+
// =============================================================================
|
|
15
|
+
// CONSTANTS
|
|
16
|
+
// =============================================================================
|
|
17
|
+
const DEFAULT_CONFIG = {
|
|
18
|
+
minDescriptionLength: 20,
|
|
19
|
+
requirePropertyDescriptions: true,
|
|
20
|
+
requireExamples: false,
|
|
21
|
+
minimumPassScore: 40,
|
|
22
|
+
};
|
|
23
|
+
// =============================================================================
|
|
24
|
+
// VALIDATOR
|
|
25
|
+
// =============================================================================
|
|
26
|
+
/**
|
|
27
|
+
* Validate a single tool's description quality.
|
|
28
|
+
*/
|
|
29
|
+
export function validateToolDescription(tool, config) {
|
|
30
|
+
const cfg = { ...DEFAULT_CONFIG, ...config };
|
|
31
|
+
const issues = [];
|
|
32
|
+
const suggestions = [];
|
|
33
|
+
let score = 100;
|
|
34
|
+
const description = tool.description || '';
|
|
35
|
+
// Check 1: Description exists and has minimum length
|
|
36
|
+
if (!description) {
|
|
37
|
+
issues.push('No description provided');
|
|
38
|
+
score -= 40;
|
|
39
|
+
}
|
|
40
|
+
else if (description.length < cfg.minDescriptionLength) {
|
|
41
|
+
issues.push(`Description too short (${description.length} chars, min: ${cfg.minDescriptionLength})`);
|
|
42
|
+
suggestions.push('Add more detail about what this tool does and when to use it');
|
|
43
|
+
score -= 20;
|
|
44
|
+
}
|
|
45
|
+
// Check 2: Description is informative (not just tool name restated)
|
|
46
|
+
if (description && tool.name) {
|
|
47
|
+
const nameWords = tool.name.replace(/[_-]/g, ' ').toLowerCase().split(/\s+/);
|
|
48
|
+
const descWords = description.toLowerCase().split(/\s+/);
|
|
49
|
+
const overlap = nameWords.filter(w => descWords.includes(w)).length;
|
|
50
|
+
if (overlap === nameWords.length && description.split(/\s+/).length < 5) {
|
|
51
|
+
issues.push('Description merely restates the tool name');
|
|
52
|
+
suggestions.push('Explain what the tool does, its purpose, and any important behavior');
|
|
53
|
+
score -= 15;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Check 3: Input schema has property descriptions
|
|
57
|
+
if (cfg.requirePropertyDescriptions && tool.inputSchema) {
|
|
58
|
+
const properties = tool.inputSchema.properties;
|
|
59
|
+
if (properties) {
|
|
60
|
+
const undocumented = [];
|
|
61
|
+
for (const [propName, propSchema] of Object.entries(properties)) {
|
|
62
|
+
if (!propSchema.description) {
|
|
63
|
+
undocumented.push(propName);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (undocumented.length > 0) {
|
|
67
|
+
issues.push(`Properties missing descriptions: ${undocumented.join(', ')}`);
|
|
68
|
+
suggestions.push('Add "description" to each property in the input schema');
|
|
69
|
+
score -= Math.min(undocumented.length * 5, 20);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Check 4: Required parameters are specified
|
|
74
|
+
if (tool.inputSchema) {
|
|
75
|
+
const required = tool.inputSchema.required;
|
|
76
|
+
const properties = tool.inputSchema.properties;
|
|
77
|
+
if (properties && Object.keys(properties).length > 0 && (!required || required.length === 0)) {
|
|
78
|
+
suggestions.push('Consider marking required parameters in the schema');
|
|
79
|
+
score -= 5;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Check 5: Description mentions examples or usage patterns
|
|
83
|
+
if (cfg.requireExamples && description) {
|
|
84
|
+
const hasExample = /example|e\.g\.|for instance|usage:|such as/i.test(description);
|
|
85
|
+
if (!hasExample) {
|
|
86
|
+
suggestions.push('Add a usage example to the description');
|
|
87
|
+
score -= 10;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Check 6: Naming conventions
|
|
91
|
+
if (tool.name) {
|
|
92
|
+
const isSnakeCase = /^[a-z][a-z0-9_]*$/.test(tool.name);
|
|
93
|
+
const hasMCPPrefix = tool.name.startsWith('mcp_');
|
|
94
|
+
if (!isSnakeCase && !hasMCPPrefix) {
|
|
95
|
+
suggestions.push('Consider using snake_case for tool names');
|
|
96
|
+
score -= 5;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
toolName: tool.name,
|
|
101
|
+
score: Math.max(0, score),
|
|
102
|
+
issues,
|
|
103
|
+
suggestions,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Validate all tools and return results sorted by score (worst first).
|
|
108
|
+
*/
|
|
109
|
+
export function validateAllTools(tools, config) {
|
|
110
|
+
return tools
|
|
111
|
+
.map(tool => validateToolDescription(tool, config))
|
|
112
|
+
.sort((a, b) => a.score - b.score);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get a summary of validation results.
|
|
116
|
+
*/
|
|
117
|
+
export function formatValidationSummary(results) {
|
|
118
|
+
const passed = results.filter(r => r.score >= (DEFAULT_CONFIG.minimumPassScore));
|
|
119
|
+
const failed = results.filter(r => r.score < (DEFAULT_CONFIG.minimumPassScore));
|
|
120
|
+
const lines = [
|
|
121
|
+
`Tool Description Quality: ${passed.length}/${results.length} passed`,
|
|
122
|
+
];
|
|
123
|
+
if (failed.length > 0) {
|
|
124
|
+
lines.push('', 'Failed:');
|
|
125
|
+
for (const r of failed) {
|
|
126
|
+
lines.push(` ${r.toolName} (score: ${r.score}): ${r.issues.join('; ')}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return lines.join('\n');
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Create a tool validator.
|
|
133
|
+
*/
|
|
134
|
+
export function createToolValidator(config) {
|
|
135
|
+
return {
|
|
136
|
+
validate: (tool) => validateToolDescription(tool, config),
|
|
137
|
+
validateAll: (tools) => validateAllTools(tools, config),
|
|
138
|
+
formatSummary: formatValidationSummary,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=mcp-tool-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tool-validator.js","sourceRoot":"","sources":["../../../../src/integrations/mcp/mcp-tool-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codebase Repository
|
|
3
|
+
*
|
|
4
|
+
* Persistence layer for codebase analysis results.
|
|
5
|
+
* Stores/loads chunk metadata and dependency graph to/from SQLite
|
|
6
|
+
* for warm startup across sessions.
|
|
7
|
+
*/
|
|
8
|
+
import type { SQLiteStoreDeps } from './sqlite-store.js';
|
|
9
|
+
export interface SavedChunk {
|
|
10
|
+
filePath: string;
|
|
11
|
+
contentHash: string;
|
|
12
|
+
symbolsJson: string;
|
|
13
|
+
dependenciesJson: string;
|
|
14
|
+
importance: number;
|
|
15
|
+
chunkType: string;
|
|
16
|
+
tokenCount: number;
|
|
17
|
+
analyzedAt: number;
|
|
18
|
+
}
|
|
19
|
+
export interface SavedCodebaseAnalysis {
|
|
20
|
+
chunks: Map<string, SavedChunk>;
|
|
21
|
+
deps: Map<string, Set<string>>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Save codebase analysis to SQLite for persistence across sessions.
|
|
25
|
+
*/
|
|
26
|
+
export declare function saveCodebaseAnalysis(deps: SQLiteStoreDeps, root: string, chunks: Iterable<{
|
|
27
|
+
filePath: string;
|
|
28
|
+
content: string;
|
|
29
|
+
symbolDetails: Array<{
|
|
30
|
+
name: string;
|
|
31
|
+
kind: string;
|
|
32
|
+
exported: boolean;
|
|
33
|
+
line: number;
|
|
34
|
+
}>;
|
|
35
|
+
dependencies: string[];
|
|
36
|
+
importance: number;
|
|
37
|
+
type: string;
|
|
38
|
+
tokenCount: number;
|
|
39
|
+
}>, dependencyGraph: Map<string, Set<string>>): void;
|
|
40
|
+
/**
|
|
41
|
+
* Load persisted codebase analysis from SQLite.
|
|
42
|
+
* Returns null if no analysis exists for the given workspace root.
|
|
43
|
+
*/
|
|
44
|
+
export declare function loadCodebaseAnalysis(deps: SQLiteStoreDeps, root: string): SavedCodebaseAnalysis | null;
|
|
45
|
+
//# sourceMappingURL=codebase-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codebase-repository.d.ts","sourceRoot":"","sources":["../../../../src/integrations/persistence/codebase-repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAOzD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CAChC;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,EACF,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GACxC,IAAI,CAkCN;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,MAAM,GACX,qBAAqB,GAAG,IAAI,CA8C9B"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codebase Repository
|
|
3
|
+
*
|
|
4
|
+
* Persistence layer for codebase analysis results.
|
|
5
|
+
* Stores/loads chunk metadata and dependency graph to/from SQLite
|
|
6
|
+
* for warm startup across sessions.
|
|
7
|
+
*/
|
|
8
|
+
import { djb2Hash } from '../context/codebase-ast.js';
|
|
9
|
+
// =============================================================================
|
|
10
|
+
// SAVE
|
|
11
|
+
// =============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Save codebase analysis to SQLite for persistence across sessions.
|
|
14
|
+
*/
|
|
15
|
+
export function saveCodebaseAnalysis(deps, root, chunks, dependencyGraph) {
|
|
16
|
+
if (!deps.features.codebaseAnalysis)
|
|
17
|
+
return;
|
|
18
|
+
const { db } = deps;
|
|
19
|
+
const deleteChunks = db.prepare('DELETE FROM codebase_chunks WHERE workspace_root = ?');
|
|
20
|
+
const deleteDeps = db.prepare('DELETE FROM codebase_deps WHERE workspace_root = ?');
|
|
21
|
+
const insertChunk = db.prepare(`
|
|
22
|
+
INSERT INTO codebase_chunks (file_path, workspace_root, content_hash, symbols_json,
|
|
23
|
+
dependencies_json, importance, chunk_type, token_count, analyzed_at)
|
|
24
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
25
|
+
`);
|
|
26
|
+
const insertDep = db.prepare(`
|
|
27
|
+
INSERT INTO codebase_deps (workspace_root, source_file, target_file) VALUES (?, ?, ?)
|
|
28
|
+
`);
|
|
29
|
+
const transaction = db.transaction(() => {
|
|
30
|
+
deleteChunks.run(root);
|
|
31
|
+
deleteDeps.run(root);
|
|
32
|
+
for (const chunk of chunks) {
|
|
33
|
+
const contentHash = djb2Hash(chunk.content).toString(36);
|
|
34
|
+
insertChunk.run(chunk.filePath, root, contentHash, JSON.stringify(chunk.symbolDetails), JSON.stringify(chunk.dependencies), chunk.importance, chunk.type, chunk.tokenCount, Date.now());
|
|
35
|
+
}
|
|
36
|
+
for (const [source, targets] of dependencyGraph) {
|
|
37
|
+
for (const target of targets) {
|
|
38
|
+
insertDep.run(root, source, target);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
transaction();
|
|
43
|
+
}
|
|
44
|
+
// =============================================================================
|
|
45
|
+
// LOAD
|
|
46
|
+
// =============================================================================
|
|
47
|
+
/**
|
|
48
|
+
* Load persisted codebase analysis from SQLite.
|
|
49
|
+
* Returns null if no analysis exists for the given workspace root.
|
|
50
|
+
*/
|
|
51
|
+
export function loadCodebaseAnalysis(deps, root) {
|
|
52
|
+
if (!deps.features.codebaseAnalysis)
|
|
53
|
+
return null;
|
|
54
|
+
const { db } = deps;
|
|
55
|
+
const rows = db.prepare('SELECT * FROM codebase_chunks WHERE workspace_root = ?').all(root);
|
|
56
|
+
if (rows.length === 0)
|
|
57
|
+
return null;
|
|
58
|
+
const chunks = new Map();
|
|
59
|
+
for (const row of rows) {
|
|
60
|
+
chunks.set(row.file_path, {
|
|
61
|
+
filePath: row.file_path,
|
|
62
|
+
contentHash: row.content_hash,
|
|
63
|
+
symbolsJson: row.symbols_json,
|
|
64
|
+
dependenciesJson: row.dependencies_json,
|
|
65
|
+
importance: row.importance,
|
|
66
|
+
chunkType: row.chunk_type,
|
|
67
|
+
tokenCount: row.token_count,
|
|
68
|
+
analyzedAt: row.analyzed_at,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
const depRows = db.prepare('SELECT source_file, target_file FROM codebase_deps WHERE workspace_root = ?').all(root);
|
|
72
|
+
const depsMap = new Map();
|
|
73
|
+
for (const row of depRows) {
|
|
74
|
+
if (!depsMap.has(row.source_file)) {
|
|
75
|
+
depsMap.set(row.source_file, new Set());
|
|
76
|
+
}
|
|
77
|
+
depsMap.get(row.source_file).add(row.target_file);
|
|
78
|
+
}
|
|
79
|
+
return { chunks, deps: depsMap };
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=codebase-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codebase-repository.js","sourceRoot":"","sources":["../../../../src/integrations/persistence/codebase-repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Goal Repository
|
|
3
|
+
*
|
|
4
|
+
* Goal CRUD operations and critical juncture tracking.
|
|
5
|
+
* Goals persist outside of context and survive compaction.
|
|
6
|
+
*
|
|
7
|
+
* Extracted from sqlite-store.ts as part of Phase 3c restructuring.
|
|
8
|
+
*/
|
|
9
|
+
import type { Goal, GoalStatus, Juncture, JunctureType, SQLiteStoreDeps } from './sqlite-store.js';
|
|
10
|
+
/**
|
|
11
|
+
* Create a new goal for the current session.
|
|
12
|
+
* Goals persist outside of context and survive compaction.
|
|
13
|
+
* Returns undefined if goals feature is not available.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createGoal(deps: SQLiteStoreDeps, goalText: string, options?: {
|
|
16
|
+
priority?: number;
|
|
17
|
+
parentGoalId?: string;
|
|
18
|
+
progressTotal?: number;
|
|
19
|
+
metadata?: Record<string, unknown>;
|
|
20
|
+
}): string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Update a goal's status or progress.
|
|
23
|
+
*/
|
|
24
|
+
export declare function updateGoal(deps: SQLiteStoreDeps, goalId: string, updates: {
|
|
25
|
+
goalText?: string;
|
|
26
|
+
status?: GoalStatus;
|
|
27
|
+
priority?: number;
|
|
28
|
+
progressCurrent?: number;
|
|
29
|
+
progressTotal?: number;
|
|
30
|
+
metadata?: Record<string, unknown>;
|
|
31
|
+
}): void;
|
|
32
|
+
/**
|
|
33
|
+
* Mark a goal as completed.
|
|
34
|
+
*/
|
|
35
|
+
export declare function completeGoal(deps: SQLiteStoreDeps, goalId: string): void;
|
|
36
|
+
/**
|
|
37
|
+
* Get a goal by ID.
|
|
38
|
+
*/
|
|
39
|
+
export declare function getGoal(deps: SQLiteStoreDeps, goalId: string): Goal | undefined;
|
|
40
|
+
/**
|
|
41
|
+
* List all goals for a session.
|
|
42
|
+
*/
|
|
43
|
+
export declare function listGoals(deps: SQLiteStoreDeps, sessionId?: string): Goal[];
|
|
44
|
+
/**
|
|
45
|
+
* List active goals for a session.
|
|
46
|
+
*/
|
|
47
|
+
export declare function listActiveGoals(deps: SQLiteStoreDeps, sessionId?: string): Goal[];
|
|
48
|
+
/**
|
|
49
|
+
* Get a summary of the current goals for context injection.
|
|
50
|
+
* This is what gets recited to maintain goal awareness.
|
|
51
|
+
*/
|
|
52
|
+
export declare function getGoalsSummary(deps: SQLiteStoreDeps, sessionId?: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* Log a critical juncture (decision, failure, breakthrough, pivot).
|
|
55
|
+
* Returns -1 if goals feature is not available.
|
|
56
|
+
*/
|
|
57
|
+
export declare function logJuncture(deps: SQLiteStoreDeps, type: JunctureType, description: string, options?: {
|
|
58
|
+
goalId?: string;
|
|
59
|
+
outcome?: string;
|
|
60
|
+
importance?: number;
|
|
61
|
+
context?: Record<string, unknown>;
|
|
62
|
+
}): number;
|
|
63
|
+
/**
|
|
64
|
+
* List junctures for a session.
|
|
65
|
+
*/
|
|
66
|
+
export declare function listJunctures(deps: SQLiteStoreDeps, sessionId?: string, limit?: number): Juncture[];
|
|
67
|
+
/**
|
|
68
|
+
* Get recent critical junctures for context.
|
|
69
|
+
*/
|
|
70
|
+
export declare function getJuncturesSummary(deps: SQLiteStoreDeps, sessionId?: string, limit?: number): string;
|
|
71
|
+
//# sourceMappingURL=goal-repository.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goal-repository.d.ts","sourceRoot":"","sources":["../../../../src/integrations/persistence/goal-repository.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAM3B;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,GACL,MAAM,GAAG,SAAS,CA4BpB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GACA,IAAI,CAkBN;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAExE;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAK/E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,CAO3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,CAOjF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAmBjF;AAMD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,YAAY,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B,GACL,MAAM,CAqBR;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE,CAUnG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,MAAM,CAoBxG"}
|