codehere 0.1.1
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/LICENSE +22 -0
- package/README.md +378 -0
- package/dist/agents/base.d.ts +107 -0
- package/dist/agents/base.d.ts.map +1 -0
- package/dist/agents/base.js +101 -0
- package/dist/agents/base.js.map +1 -0
- package/dist/agents/orchestrator-model-driven.d.ts +41 -0
- package/dist/agents/orchestrator-model-driven.d.ts.map +1 -0
- package/dist/agents/orchestrator-model-driven.js +141 -0
- package/dist/agents/orchestrator-model-driven.js.map +1 -0
- package/dist/agents/react-orchestrator-agent.d.ts +15 -0
- package/dist/agents/react-orchestrator-agent.d.ts.map +1 -0
- package/dist/agents/react-orchestrator-agent.js +54 -0
- package/dist/agents/react-orchestrator-agent.js.map +1 -0
- package/dist/application/agents/execution-agent.d.ts +79 -0
- package/dist/application/agents/execution-agent.d.ts.map +1 -0
- package/dist/application/agents/execution-agent.js +534 -0
- package/dist/application/agents/execution-agent.js.map +1 -0
- package/dist/application/agents/multi-agent-orchestrator.d.ts +69 -0
- package/dist/application/agents/multi-agent-orchestrator.d.ts.map +1 -0
- package/dist/application/agents/multi-agent-orchestrator.js +296 -0
- package/dist/application/agents/multi-agent-orchestrator.js.map +1 -0
- package/dist/application/agents/planning-agent.d.ts +65 -0
- package/dist/application/agents/planning-agent.d.ts.map +1 -0
- package/dist/application/agents/planning-agent.js +553 -0
- package/dist/application/agents/planning-agent.js.map +1 -0
- package/dist/application/agents/validation-agent.d.ts +68 -0
- package/dist/application/agents/validation-agent.d.ts.map +1 -0
- package/dist/application/agents/validation-agent.js +317 -0
- package/dist/application/agents/validation-agent.js.map +1 -0
- package/dist/application/architectures/plan-and-act.d.ts +94 -0
- package/dist/application/architectures/plan-and-act.d.ts.map +1 -0
- package/dist/application/architectures/plan-and-act.js +242 -0
- package/dist/application/architectures/plan-and-act.js.map +1 -0
- package/dist/application/index.d.ts +12 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +12 -0
- package/dist/application/index.js.map +1 -0
- package/dist/application/services/agent-factory.d.ts +9 -0
- package/dist/application/services/agent-factory.d.ts.map +1 -0
- package/dist/application/services/agent-factory.js +28 -0
- package/dist/application/services/agent-factory.js.map +1 -0
- package/dist/application/services/context-importer.d.ts +71 -0
- package/dist/application/services/context-importer.d.ts.map +1 -0
- package/dist/application/services/context-importer.js +436 -0
- package/dist/application/services/context-importer.js.map +1 -0
- package/dist/application/services/context-manager.d.ts +132 -0
- package/dist/application/services/context-manager.d.ts.map +1 -0
- package/dist/application/services/context-manager.js +369 -0
- package/dist/application/services/context-manager.js.map +1 -0
- package/dist/application/services/dependency-container.d.ts +187 -0
- package/dist/application/services/dependency-container.d.ts.map +1 -0
- package/dist/application/services/dependency-container.js +607 -0
- package/dist/application/services/dependency-container.js.map +1 -0
- package/dist/application/services/git-context-service.d.ts +30 -0
- package/dist/application/services/git-context-service.d.ts.map +1 -0
- package/dist/application/services/git-context-service.js +83 -0
- package/dist/application/services/git-context-service.js.map +1 -0
- package/dist/application/services/intelligent-router.d.ts +90 -0
- package/dist/application/services/intelligent-router.d.ts.map +1 -0
- package/dist/application/services/intelligent-router.js +942 -0
- package/dist/application/services/intelligent-router.js.map +1 -0
- package/dist/application/services/token-counting-service.d.ts +87 -0
- package/dist/application/services/token-counting-service.d.ts.map +1 -0
- package/dist/application/services/token-counting-service.js +196 -0
- package/dist/application/services/token-counting-service.js.map +1 -0
- package/dist/application/services/tool-executor-service.d.ts +14 -0
- package/dist/application/services/tool-executor-service.d.ts.map +1 -0
- package/dist/application/services/tool-executor-service.js +94 -0
- package/dist/application/services/tool-executor-service.js.map +1 -0
- package/dist/application/use-cases/ask-question-use-case.d.ts +67 -0
- package/dist/application/use-cases/ask-question-use-case.d.ts.map +1 -0
- package/dist/application/use-cases/ask-question-use-case.js +437 -0
- package/dist/application/use-cases/ask-question-use-case.js.map +1 -0
- package/dist/application/use-cases/edit-file-use-case.d.ts +92 -0
- package/dist/application/use-cases/edit-file-use-case.d.ts.map +1 -0
- package/dist/application/use-cases/edit-file-use-case.js +819 -0
- package/dist/application/use-cases/edit-file-use-case.js.map +1 -0
- package/dist/application/use-cases/explain-file-use-case.d.ts +21 -0
- package/dist/application/use-cases/explain-file-use-case.d.ts.map +1 -0
- package/dist/application/use-cases/explain-file-use-case.js +50 -0
- package/dist/application/use-cases/explain-file-use-case.js.map +1 -0
- package/dist/application/use-cases/index-codebase-use-case.d.ts +46 -0
- package/dist/application/use-cases/index-codebase-use-case.d.ts.map +1 -0
- package/dist/application/use-cases/index-codebase-use-case.js +113 -0
- package/dist/application/use-cases/index-codebase-use-case.js.map +1 -0
- package/dist/application/use-cases/planning-use-case.d.ts +46 -0
- package/dist/application/use-cases/planning-use-case.d.ts.map +1 -0
- package/dist/application/use-cases/planning-use-case.js +276 -0
- package/dist/application/use-cases/planning-use-case.js.map +1 -0
- package/dist/application/use-cases/react-orchestration-use-case.d.ts +51 -0
- package/dist/application/use-cases/react-orchestration-use-case.d.ts.map +1 -0
- package/dist/application/use-cases/react-orchestration-use-case.js +362 -0
- package/dist/application/use-cases/react-orchestration-use-case.js.map +1 -0
- package/dist/application/use-cases/reflexion-use-case.d.ts +24 -0
- package/dist/application/use-cases/reflexion-use-case.d.ts.map +1 -0
- package/dist/application/use-cases/reflexion-use-case.js +30 -0
- package/dist/application/use-cases/reflexion-use-case.js.map +1 -0
- package/dist/application/workflows/deterministic-workflows.d.ts +61 -0
- package/dist/application/workflows/deterministic-workflows.d.ts.map +1 -0
- package/dist/application/workflows/deterministic-workflows.js +189 -0
- package/dist/application/workflows/deterministic-workflows.js.map +1 -0
- package/dist/ast-parser.d 2.ts +55 -0
- package/dist/ast-parser.d.ts +55 -0
- package/dist/ast-parser.d.ts.map +1 -0
- package/dist/ast-parser.js +331 -0
- package/dist/ast-parser.js.map +1 -0
- package/dist/cache.d.ts +45 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +180 -0
- package/dist/cache.js.map +1 -0
- package/dist/chat.d.ts +4 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +175 -0
- package/dist/chat.js.map +1 -0
- package/dist/code-analysis 2.js +327 -0
- package/dist/code-analysis.d.ts +50 -0
- package/dist/code-analysis.d.ts.map +1 -0
- package/dist/code-analysis.js +327 -0
- package/dist/code-analysis.js.map +1 -0
- package/dist/context.d.ts +44 -0
- package/dist/context.d.ts 2.map +1 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +187 -0
- package/dist/context.js.map +1 -0
- package/dist/docs.d.ts +21 -0
- package/dist/docs.d.ts.map +1 -0
- package/dist/docs.js +146 -0
- package/dist/docs.js.map +1 -0
- package/dist/domain/entities/code-chunk.d.ts +26 -0
- package/dist/domain/entities/code-chunk.d.ts.map +1 -0
- package/dist/domain/entities/code-chunk.js +6 -0
- package/dist/domain/entities/code-chunk.js.map +1 -0
- package/dist/domain/entities/conversation-context.d.ts +245 -0
- package/dist/domain/entities/conversation-context.d.ts.map +1 -0
- package/dist/domain/entities/conversation-context.js +50 -0
- package/dist/domain/entities/conversation-context.js.map +1 -0
- package/dist/domain/entities/decision.d.ts +37 -0
- package/dist/domain/entities/decision.d.ts.map +1 -0
- package/dist/domain/entities/decision.js +9 -0
- package/dist/domain/entities/decision.js.map +1 -0
- package/dist/domain/entities/edit.d.ts +35 -0
- package/dist/domain/entities/edit.d.ts.map +1 -0
- package/dist/domain/entities/edit.js +6 -0
- package/dist/domain/entities/edit.js.map +1 -0
- package/dist/domain/entities/knowledge-node.d.ts +83 -0
- package/dist/domain/entities/knowledge-node.d.ts.map +1 -0
- package/dist/domain/entities/knowledge-node.js +9 -0
- package/dist/domain/entities/knowledge-node.js.map +1 -0
- package/dist/domain/entities/knowledge-preservation.d.ts +42 -0
- package/dist/domain/entities/knowledge-preservation.d.ts.map +1 -0
- package/dist/domain/entities/knowledge-preservation.js +10 -0
- package/dist/domain/entities/knowledge-preservation.js.map +1 -0
- package/dist/domain/entities/memory.d.ts +36 -0
- package/dist/domain/entities/memory.d.ts.map +1 -0
- package/dist/domain/entities/memory.js +6 -0
- package/dist/domain/entities/memory.js.map +1 -0
- package/dist/domain/entities/pattern.d.ts +49 -0
- package/dist/domain/entities/pattern.d.ts.map +1 -0
- package/dist/domain/entities/pattern.js +7 -0
- package/dist/domain/entities/pattern.js.map +1 -0
- package/dist/domain/entities/plan.d.ts +42 -0
- package/dist/domain/entities/plan.d.ts.map +1 -0
- package/dist/domain/entities/plan.js +6 -0
- package/dist/domain/entities/plan.js.map +1 -0
- package/dist/domain/entities/query.d.ts +17 -0
- package/dist/domain/entities/query.d.ts.map +1 -0
- package/dist/domain/entities/query.js +6 -0
- package/dist/domain/entities/query.js.map +1 -0
- package/dist/domain/entities/task.d.ts +152 -0
- package/dist/domain/entities/task.d.ts.map +1 -0
- package/dist/domain/entities/task.js +61 -0
- package/dist/domain/entities/task.js.map +1 -0
- package/dist/domain/errors/embeddings-not-found-error.d.ts +9 -0
- package/dist/domain/errors/embeddings-not-found-error.d.ts.map +1 -0
- package/dist/domain/errors/embeddings-not-found-error.js +13 -0
- package/dist/domain/errors/embeddings-not-found-error.js.map +1 -0
- package/dist/domain/index.d.ts +16 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +19 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/interfaces/ai-service.interface.d.ts +72 -0
- package/dist/domain/interfaces/ai-service.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/ai-service.interface.js +6 -0
- package/dist/domain/interfaces/ai-service.interface.js.map +1 -0
- package/dist/domain/interfaces/code-analyzer.interface.d.ts +38 -0
- package/dist/domain/interfaces/code-analyzer.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/code-analyzer.interface.js +6 -0
- package/dist/domain/interfaces/code-analyzer.interface.js.map +1 -0
- package/dist/domain/interfaces/context-repository.interface.d.ts +71 -0
- package/dist/domain/interfaces/context-repository.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/context-repository.interface.js +10 -0
- package/dist/domain/interfaces/context-repository.interface.js.map +1 -0
- package/dist/domain/interfaces/decision-repository.interface.d.ts +51 -0
- package/dist/domain/interfaces/decision-repository.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/decision-repository.interface.js +9 -0
- package/dist/domain/interfaces/decision-repository.interface.js.map +1 -0
- package/dist/domain/interfaces/embedding-repository.interface.d.ts +33 -0
- package/dist/domain/interfaces/embedding-repository.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/embedding-repository.interface.js +6 -0
- package/dist/domain/interfaces/embedding-repository.interface.js.map +1 -0
- package/dist/domain/interfaces/knowledge-graph-repository.interface.d.ts +91 -0
- package/dist/domain/interfaces/knowledge-graph-repository.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/knowledge-graph-repository.interface.js +9 -0
- package/dist/domain/interfaces/knowledge-graph-repository.interface.js.map +1 -0
- package/dist/domain/interfaces/knowledge-preservation-repository.interface.d.ts +50 -0
- package/dist/domain/interfaces/knowledge-preservation-repository.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/knowledge-preservation-repository.interface.js +8 -0
- package/dist/domain/interfaces/knowledge-preservation-repository.interface.js.map +1 -0
- package/dist/domain/interfaces/memory-repository.interface.d.ts +49 -0
- package/dist/domain/interfaces/memory-repository.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/memory-repository.interface.js +6 -0
- package/dist/domain/interfaces/memory-repository.interface.js.map +1 -0
- package/dist/domain/interfaces/pattern-repository.interface.d.ts +48 -0
- package/dist/domain/interfaces/pattern-repository.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/pattern-repository.interface.js +6 -0
- package/dist/domain/interfaces/pattern-repository.interface.js.map +1 -0
- package/dist/domain/interfaces/verification-service.interface.d.ts +20 -0
- package/dist/domain/interfaces/verification-service.interface.d.ts.map +1 -0
- package/dist/domain/interfaces/verification-service.interface.js +6 -0
- package/dist/domain/interfaces/verification-service.interface.js.map +1 -0
- package/dist/domain/services/codebase-detector.d.ts +18 -0
- package/dist/domain/services/codebase-detector.d.ts.map +1 -0
- package/dist/domain/services/codebase-detector.js +91 -0
- package/dist/domain/services/codebase-detector.js.map +1 -0
- package/dist/domain/services/cross-team-pattern-sharing.d.ts +65 -0
- package/dist/domain/services/cross-team-pattern-sharing.d.ts.map +1 -0
- package/dist/domain/services/cross-team-pattern-sharing.js +125 -0
- package/dist/domain/services/cross-team-pattern-sharing.js.map +1 -0
- package/dist/domain/services/decision-recorder.d.ts +76 -0
- package/dist/domain/services/decision-recorder.d.ts.map +1 -0
- package/dist/domain/services/decision-recorder.js +223 -0
- package/dist/domain/services/decision-recorder.js.map +1 -0
- package/dist/domain/services/decision-retriever.d.ts +75 -0
- package/dist/domain/services/decision-retriever.d.ts.map +1 -0
- package/dist/domain/services/decision-retriever.js +133 -0
- package/dist/domain/services/decision-retriever.js.map +1 -0
- package/dist/domain/services/environment-mode-manager.d.ts +12 -0
- package/dist/domain/services/environment-mode-manager.d.ts.map +1 -0
- package/dist/domain/services/environment-mode-manager.js +22 -0
- package/dist/domain/services/environment-mode-manager.js.map +1 -0
- package/dist/domain/services/graded-memory-activation.d.ts +37 -0
- package/dist/domain/services/graded-memory-activation.d.ts.map +1 -0
- package/dist/domain/services/graded-memory-activation.js +69 -0
- package/dist/domain/services/graded-memory-activation.js.map +1 -0
- package/dist/domain/services/knowledge-access.d.ts +63 -0
- package/dist/domain/services/knowledge-access.d.ts.map +1 -0
- package/dist/domain/services/knowledge-access.js +132 -0
- package/dist/domain/services/knowledge-access.js.map +1 -0
- package/dist/domain/services/knowledge-extractor.d.ts +54 -0
- package/dist/domain/services/knowledge-extractor.d.ts.map +1 -0
- package/dist/domain/services/knowledge-extractor.js +247 -0
- package/dist/domain/services/knowledge-extractor.js.map +1 -0
- package/dist/domain/services/knowledge-graph-builder.d.ts +70 -0
- package/dist/domain/services/knowledge-graph-builder.d.ts.map +1 -0
- package/dist/domain/services/knowledge-graph-builder.js +268 -0
- package/dist/domain/services/knowledge-graph-builder.js.map +1 -0
- package/dist/domain/services/knowledge-graph-query.d.ts +69 -0
- package/dist/domain/services/knowledge-graph-query.d.ts.map +1 -0
- package/dist/domain/services/knowledge-graph-query.js +187 -0
- package/dist/domain/services/knowledge-graph-query.js.map +1 -0
- package/dist/domain/services/memory-retriever.d.ts +30 -0
- package/dist/domain/services/memory-retriever.d.ts.map +1 -0
- package/dist/domain/services/memory-retriever.js +82 -0
- package/dist/domain/services/memory-retriever.js.map +1 -0
- package/dist/domain/services/memory-synthesizer.d.ts +57 -0
- package/dist/domain/services/memory-synthesizer.d.ts.map +1 -0
- package/dist/domain/services/memory-synthesizer.js +91 -0
- package/dist/domain/services/memory-synthesizer.js.map +1 -0
- package/dist/domain/services/pattern-extractor.d.ts +108 -0
- package/dist/domain/services/pattern-extractor.d.ts.map +1 -0
- package/dist/domain/services/pattern-extractor.js +442 -0
- package/dist/domain/services/pattern-extractor.js.map +1 -0
- package/dist/domain/services/query-intent-classifier.d.ts +16 -0
- package/dist/domain/services/query-intent-classifier.d.ts.map +1 -0
- package/dist/domain/services/query-intent-classifier.js +173 -0
- package/dist/domain/services/query-intent-classifier.js.map +1 -0
- package/dist/domain/services/react-loop.d.ts +52 -0
- package/dist/domain/services/react-loop.d.ts.map +1 -0
- package/dist/domain/services/react-loop.js +186 -0
- package/dist/domain/services/react-loop.js.map +1 -0
- package/dist/domain/services/risk-tier-detector.d.ts +17 -0
- package/dist/domain/services/risk-tier-detector.d.ts.map +1 -0
- package/dist/domain/services/risk-tier-detector.js +78 -0
- package/dist/domain/services/risk-tier-detector.js.map +1 -0
- package/dist/edit.d.ts +26 -0
- package/dist/edit.d.ts 2.map +1 -0
- package/dist/edit.d.ts.map +1 -0
- package/dist/edit.js +319 -0
- package/dist/edit.js.map +1 -0
- package/dist/embed.d 2.ts +14 -0
- package/dist/embed.d.ts +14 -0
- package/dist/embed.d.ts.map +1 -0
- package/dist/embed.js +472 -0
- package/dist/embed.js.map +1 -0
- package/dist/error-handler.d 2.ts +77 -0
- package/dist/error-handler.d.ts +77 -0
- package/dist/error-handler.d.ts.map +1 -0
- package/dist/error-handler.js +256 -0
- package/dist/error-handler.js.map +1 -0
- package/dist/formatter 2.js +168 -0
- package/dist/formatter.d.ts +25 -0
- package/dist/formatter.d.ts 2.map +1 -0
- package/dist/formatter.d.ts.map +1 -0
- package/dist/formatter.js +168 -0
- package/dist/formatter.js.map +1 -0
- package/dist/git 2.js +198 -0
- package/dist/git.d 2.ts +55 -0
- package/dist/git.d.ts +55 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +198 -0
- package/dist/git.js.map +1 -0
- package/dist/index 2.d.ts +16 -0
- package/dist/index 2.d.ts.map +1 -0
- package/dist/index 2.js +429 -0
- package/dist/index 2.js.map +1 -0
- package/dist/index-backup-before-lazy-loading.d.ts +3 -0
- package/dist/index-backup-before-lazy-loading.d.ts.map +1 -0
- package/dist/index-backup-before-lazy-loading.js +1551 -0
- package/dist/index-backup-before-lazy-loading.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts 2.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +489 -0
- package/dist/index.js 2.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/ai/cohere-ai-service.d.ts +71 -0
- package/dist/infrastructure/ai/cohere-ai-service.d.ts.map +1 -0
- package/dist/infrastructure/ai/cohere-ai-service.js +676 -0
- package/dist/infrastructure/ai/cohere-ai-service.js.map +1 -0
- package/dist/infrastructure/ai/command-r-evaluation.d.ts +42 -0
- package/dist/infrastructure/ai/command-r-evaluation.d.ts.map +1 -0
- package/dist/infrastructure/ai/command-r-evaluation.js +206 -0
- package/dist/infrastructure/ai/command-r-evaluation.js.map +1 -0
- package/dist/infrastructure/ai/model-config.d.ts +47 -0
- package/dist/infrastructure/ai/model-config.d.ts.map +1 -0
- package/dist/infrastructure/ai/model-config.js +84 -0
- package/dist/infrastructure/ai/model-config.js.map +1 -0
- package/dist/infrastructure/ai/provider-ai-service.d.ts +67 -0
- package/dist/infrastructure/ai/provider-ai-service.d.ts.map +1 -0
- package/dist/infrastructure/ai/provider-ai-service.js +580 -0
- package/dist/infrastructure/ai/provider-ai-service.js.map +1 -0
- package/dist/infrastructure/cache/embedding-cache.d.ts +58 -0
- package/dist/infrastructure/cache/embedding-cache.d.ts.map +1 -0
- package/dist/infrastructure/cache/embedding-cache.js +175 -0
- package/dist/infrastructure/cache/embedding-cache.js.map +1 -0
- package/dist/infrastructure/cache/query-result-cache.d.ts +27 -0
- package/dist/infrastructure/cache/query-result-cache.d.ts.map +1 -0
- package/dist/infrastructure/cache/query-result-cache.js +66 -0
- package/dist/infrastructure/cache/query-result-cache.js.map +1 -0
- package/dist/infrastructure/cache/response-cache.d.ts +18 -0
- package/dist/infrastructure/cache/response-cache.d.ts.map +1 -0
- package/dist/infrastructure/cache/response-cache.js +48 -0
- package/dist/infrastructure/cache/response-cache.js.map +1 -0
- package/dist/infrastructure/cache/security-scan-cache.d.ts +16 -0
- package/dist/infrastructure/cache/security-scan-cache.d.ts.map +1 -0
- package/dist/infrastructure/cache/security-scan-cache.js +47 -0
- package/dist/infrastructure/cache/security-scan-cache.js.map +1 -0
- package/dist/infrastructure/chunking/ast-code-chunker.d.ts +12 -0
- package/dist/infrastructure/chunking/ast-code-chunker.d.ts.map +1 -0
- package/dist/infrastructure/chunking/ast-code-chunker.js +19 -0
- package/dist/infrastructure/chunking/ast-code-chunker.js.map +1 -0
- package/dist/infrastructure/chunking/code-aware-chunker.d.ts +63 -0
- package/dist/infrastructure/chunking/code-aware-chunker.d.ts.map +1 -0
- package/dist/infrastructure/chunking/code-aware-chunker.js +397 -0
- package/dist/infrastructure/chunking/code-aware-chunker.js.map +1 -0
- package/dist/infrastructure/completion/bash-completion.d.ts +7 -0
- package/dist/infrastructure/completion/bash-completion.d.ts.map +1 -0
- package/dist/infrastructure/completion/bash-completion.js +25 -0
- package/dist/infrastructure/completion/bash-completion.js.map +1 -0
- package/dist/infrastructure/completion/fish-completion.d.ts +7 -0
- package/dist/infrastructure/completion/fish-completion.d.ts.map +1 -0
- package/dist/infrastructure/completion/fish-completion.js +22 -0
- package/dist/infrastructure/completion/fish-completion.js.map +1 -0
- package/dist/infrastructure/completion/zsh-completion.d.ts +7 -0
- package/dist/infrastructure/completion/zsh-completion.d.ts.map +1 -0
- package/dist/infrastructure/completion/zsh-completion.js +30 -0
- package/dist/infrastructure/completion/zsh-completion.js.map +1 -0
- package/dist/infrastructure/config/config-manager.d.ts +158 -0
- package/dist/infrastructure/config/config-manager.d.ts.map +1 -0
- package/dist/infrastructure/config/config-manager.js +294 -0
- package/dist/infrastructure/config/config-manager.js.map +1 -0
- package/dist/infrastructure/context/context-compressor.d.ts +94 -0
- package/dist/infrastructure/context/context-compressor.d.ts.map +1 -0
- package/dist/infrastructure/context/context-compressor.js +329 -0
- package/dist/infrastructure/context/context-compressor.js.map +1 -0
- package/dist/infrastructure/context/conversation-context.d.ts +82 -0
- package/dist/infrastructure/context/conversation-context.d.ts.map +1 -0
- package/dist/infrastructure/context/conversation-context.js +213 -0
- package/dist/infrastructure/context/conversation-context.js.map +1 -0
- package/dist/infrastructure/context/direct-context-provider.d.ts +18 -0
- package/dist/infrastructure/context/direct-context-provider.d.ts.map +1 -0
- package/dist/infrastructure/context/direct-context-provider.js +222 -0
- package/dist/infrastructure/context/direct-context-provider.js.map +1 -0
- package/dist/infrastructure/context/git-context-provider.d.ts +30 -0
- package/dist/infrastructure/context/git-context-provider.d.ts.map +1 -0
- package/dist/infrastructure/context/git-context-provider.js +140 -0
- package/dist/infrastructure/context/git-context-provider.js.map +1 -0
- package/dist/infrastructure/context/project-context-loader.d.ts +35 -0
- package/dist/infrastructure/context/project-context-loader.d.ts.map +1 -0
- package/dist/infrastructure/context/project-context-loader.js +184 -0
- package/dist/infrastructure/context/project-context-loader.js.map +1 -0
- package/dist/infrastructure/context/session-manager.d.ts +42 -0
- package/dist/infrastructure/context/session-manager.d.ts.map +1 -0
- package/dist/infrastructure/context/session-manager.js +94 -0
- package/dist/infrastructure/context/session-manager.js.map +1 -0
- package/dist/infrastructure/cost/cost-tracker.d.ts +91 -0
- package/dist/infrastructure/cost/cost-tracker.d.ts.map +1 -0
- package/dist/infrastructure/cost/cost-tracker.js +361 -0
- package/dist/infrastructure/cost/cost-tracker.js.map +1 -0
- package/dist/infrastructure/cost/session-token-tracker.d.ts +68 -0
- package/dist/infrastructure/cost/session-token-tracker.d.ts.map +1 -0
- package/dist/infrastructure/cost/session-token-tracker.js +178 -0
- package/dist/infrastructure/cost/session-token-tracker.js.map +1 -0
- package/dist/infrastructure/cost-calculator.d.ts +34 -0
- package/dist/infrastructure/cost-calculator.d.ts.map +1 -0
- package/dist/infrastructure/cost-calculator.js +145 -0
- package/dist/infrastructure/cost-calculator.js.map +1 -0
- package/dist/infrastructure/cost-estimator.d.ts +48 -0
- package/dist/infrastructure/cost-estimator.d.ts.map +1 -0
- package/dist/infrastructure/cost-estimator.js +201 -0
- package/dist/infrastructure/cost-estimator.js.map +1 -0
- package/dist/infrastructure/file-scanner/file-scanner.d.ts +31 -0
- package/dist/infrastructure/file-scanner/file-scanner.d.ts.map +1 -0
- package/dist/infrastructure/file-scanner/file-scanner.js +106 -0
- package/dist/infrastructure/file-scanner/file-scanner.js.map +1 -0
- package/dist/infrastructure/governance/nist-ai-rmf.d.ts +105 -0
- package/dist/infrastructure/governance/nist-ai-rmf.d.ts.map +1 -0
- package/dist/infrastructure/governance/nist-ai-rmf.js +292 -0
- package/dist/infrastructure/governance/nist-ai-rmf.js.map +1 -0
- package/dist/infrastructure/governance/policy-as-code.d.ts +88 -0
- package/dist/infrastructure/governance/policy-as-code.d.ts.map +1 -0
- package/dist/infrastructure/governance/policy-as-code.js +257 -0
- package/dist/infrastructure/governance/policy-as-code.js.map +1 -0
- package/dist/infrastructure/governance/prompt-to-code-lineage.d.ts +136 -0
- package/dist/infrastructure/governance/prompt-to-code-lineage.d.ts.map +1 -0
- package/dist/infrastructure/governance/prompt-to-code-lineage.js +239 -0
- package/dist/infrastructure/governance/prompt-to-code-lineage.js.map +1 -0
- package/dist/infrastructure/index.d.ts +7 -0
- package/dist/infrastructure/index.d.ts.map +1 -0
- package/dist/infrastructure/index.js +7 -0
- package/dist/infrastructure/index.js.map +1 -0
- package/dist/infrastructure/observability/execution-tracer.d.ts +130 -0
- package/dist/infrastructure/observability/execution-tracer.d.ts.map +1 -0
- package/dist/infrastructure/observability/execution-tracer.js +400 -0
- package/dist/infrastructure/observability/execution-tracer.js.map +1 -0
- package/dist/infrastructure/observability/prompt-versioner.d.ts +67 -0
- package/dist/infrastructure/observability/prompt-versioner.d.ts.map +1 -0
- package/dist/infrastructure/observability/prompt-versioner.js +145 -0
- package/dist/infrastructure/observability/prompt-versioner.js.map +1 -0
- package/dist/infrastructure/protocols/a2a-metadata.d.ts +278 -0
- package/dist/infrastructure/protocols/a2a-metadata.d.ts.map +1 -0
- package/dist/infrastructure/protocols/a2a-metadata.js +137 -0
- package/dist/infrastructure/protocols/a2a-metadata.js.map +1 -0
- package/dist/infrastructure/protocols/a2a-protocol.d.ts +132 -0
- package/dist/infrastructure/protocols/a2a-protocol.d.ts.map +1 -0
- package/dist/infrastructure/protocols/a2a-protocol.js +314 -0
- package/dist/infrastructure/protocols/a2a-protocol.js.map +1 -0
- package/dist/infrastructure/protocols/mcp-oauth.d.ts +91 -0
- package/dist/infrastructure/protocols/mcp-oauth.d.ts.map +1 -0
- package/dist/infrastructure/protocols/mcp-oauth.js +184 -0
- package/dist/infrastructure/protocols/mcp-oauth.js.map +1 -0
- package/dist/infrastructure/protocols/mcp-server.d.ts +126 -0
- package/dist/infrastructure/protocols/mcp-server.d.ts.map +1 -0
- package/dist/infrastructure/protocols/mcp-server.js +333 -0
- package/dist/infrastructure/protocols/mcp-server.js.map +1 -0
- package/dist/infrastructure/protocols/streaming-handler.d.ts +57 -0
- package/dist/infrastructure/protocols/streaming-handler.d.ts.map +1 -0
- package/dist/infrastructure/protocols/streaming-handler.js +103 -0
- package/dist/infrastructure/protocols/streaming-handler.js.map +1 -0
- package/dist/infrastructure/providers/cohere-provider.d.ts +39 -0
- package/dist/infrastructure/providers/cohere-provider.d.ts.map +1 -0
- package/dist/infrastructure/providers/cohere-provider.js +470 -0
- package/dist/infrastructure/providers/cohere-provider.js.map +1 -0
- package/dist/infrastructure/providers/fake-provider.d.ts +43 -0
- package/dist/infrastructure/providers/fake-provider.d.ts.map +1 -0
- package/dist/infrastructure/providers/fake-provider.js +138 -0
- package/dist/infrastructure/providers/fake-provider.js.map +1 -0
- package/dist/infrastructure/providers/local-llm-provider.d.ts +49 -0
- package/dist/infrastructure/providers/local-llm-provider.d.ts.map +1 -0
- package/dist/infrastructure/providers/local-llm-provider.js +336 -0
- package/dist/infrastructure/providers/local-llm-provider.js.map +1 -0
- package/dist/infrastructure/providers/model-config.types.d.ts +70 -0
- package/dist/infrastructure/providers/model-config.types.d.ts.map +1 -0
- package/dist/infrastructure/providers/model-config.types.js +9 -0
- package/dist/infrastructure/providers/model-config.types.js.map +1 -0
- package/dist/infrastructure/providers/model-provider.interface.d.ts +113 -0
- package/dist/infrastructure/providers/model-provider.interface.d.ts.map +1 -0
- package/dist/infrastructure/providers/model-provider.interface.js +8 -0
- package/dist/infrastructure/providers/model-provider.interface.js.map +1 -0
- package/dist/infrastructure/providers/openai-provider.d.ts +38 -0
- package/dist/infrastructure/providers/openai-provider.d.ts.map +1 -0
- package/dist/infrastructure/providers/openai-provider.js +445 -0
- package/dist/infrastructure/providers/openai-provider.js.map +1 -0
- package/dist/infrastructure/providers/openrouter-provider.d.ts +42 -0
- package/dist/infrastructure/providers/openrouter-provider.d.ts.map +1 -0
- package/dist/infrastructure/providers/openrouter-provider.js +407 -0
- package/dist/infrastructure/providers/openrouter-provider.js.map +1 -0
- package/dist/infrastructure/providers/operation-provider-resolver.d.ts +48 -0
- package/dist/infrastructure/providers/operation-provider-resolver.d.ts.map +1 -0
- package/dist/infrastructure/providers/operation-provider-resolver.js +105 -0
- package/dist/infrastructure/providers/operation-provider-resolver.js.map +1 -0
- package/dist/infrastructure/providers/provider-config-loader.d.ts +37 -0
- package/dist/infrastructure/providers/provider-config-loader.d.ts.map +1 -0
- package/dist/infrastructure/providers/provider-config-loader.js +120 -0
- package/dist/infrastructure/providers/provider-config-loader.js.map +1 -0
- package/dist/infrastructure/providers/provider-registry.d.ts +53 -0
- package/dist/infrastructure/providers/provider-registry.d.ts.map +1 -0
- package/dist/infrastructure/providers/provider-registry.js +88 -0
- package/dist/infrastructure/providers/provider-registry.js.map +1 -0
- package/dist/infrastructure/security/ai-sast-scanner.d.ts +59 -0
- package/dist/infrastructure/security/ai-sast-scanner.d.ts.map +1 -0
- package/dist/infrastructure/security/ai-sast-scanner.js +241 -0
- package/dist/infrastructure/security/ai-sast-scanner.js.map +1 -0
- package/dist/infrastructure/security/docker-sandbox.d.ts +57 -0
- package/dist/infrastructure/security/docker-sandbox.d.ts.map +1 -0
- package/dist/infrastructure/security/docker-sandbox.js +178 -0
- package/dist/infrastructure/security/docker-sandbox.js.map +1 -0
- package/dist/infrastructure/security/enhanced-security-gate.d.ts +66 -0
- package/dist/infrastructure/security/enhanced-security-gate.d.ts.map +1 -0
- package/dist/infrastructure/security/enhanced-security-gate.js +210 -0
- package/dist/infrastructure/security/enhanced-security-gate.js.map +1 -0
- package/dist/infrastructure/security/input-validator.d.ts +46 -0
- package/dist/infrastructure/security/input-validator.d.ts.map +1 -0
- package/dist/infrastructure/security/input-validator.js +269 -0
- package/dist/infrastructure/security/input-validator.js.map +1 -0
- package/dist/infrastructure/security/license-scanner.d.ts +55 -0
- package/dist/infrastructure/security/license-scanner.d.ts.map +1 -0
- package/dist/infrastructure/security/license-scanner.js +167 -0
- package/dist/infrastructure/security/license-scanner.js.map +1 -0
- package/dist/infrastructure/security/provider-bias-detector.d.ts +53 -0
- package/dist/infrastructure/security/provider-bias-detector.d.ts.map +1 -0
- package/dist/infrastructure/security/provider-bias-detector.js +164 -0
- package/dist/infrastructure/security/provider-bias-detector.js.map +1 -0
- package/dist/infrastructure/security/sandbox-executor.d.ts +34 -0
- package/dist/infrastructure/security/sandbox-executor.d.ts.map +1 -0
- package/dist/infrastructure/security/sandbox-executor.js +64 -0
- package/dist/infrastructure/security/sandbox-executor.js.map +1 -0
- package/dist/infrastructure/serialization/toon-serializer.d.ts +45 -0
- package/dist/infrastructure/serialization/toon-serializer.d.ts.map +1 -0
- package/dist/infrastructure/serialization/toon-serializer.js +119 -0
- package/dist/infrastructure/serialization/toon-serializer.js.map +1 -0
- package/dist/infrastructure/storage/embeddings-path.d.ts +18 -0
- package/dist/infrastructure/storage/embeddings-path.d.ts.map +1 -0
- package/dist/infrastructure/storage/embeddings-path.js +47 -0
- package/dist/infrastructure/storage/embeddings-path.js.map +1 -0
- package/dist/infrastructure/storage/memory-stream-service.d.ts +47 -0
- package/dist/infrastructure/storage/memory-stream-service.d.ts.map +1 -0
- package/dist/infrastructure/storage/memory-stream-service.js +204 -0
- package/dist/infrastructure/storage/memory-stream-service.js.map +1 -0
- package/dist/infrastructure/storage/plan-repository.d.ts +40 -0
- package/dist/infrastructure/storage/plan-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/plan-repository.js +95 -0
- package/dist/infrastructure/storage/plan-repository.js.map +1 -0
- package/dist/infrastructure/storage/sqlite-context-repository.d.ts +95 -0
- package/dist/infrastructure/storage/sqlite-context-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite-context-repository.js +467 -0
- package/dist/infrastructure/storage/sqlite-context-repository.js.map +1 -0
- package/dist/infrastructure/storage/sqlite-decision-repository.d.ts +29 -0
- package/dist/infrastructure/storage/sqlite-decision-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite-decision-repository.js +228 -0
- package/dist/infrastructure/storage/sqlite-decision-repository.js.map +1 -0
- package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts +47 -0
- package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite-embedding-repository.js +323 -0
- package/dist/infrastructure/storage/sqlite-embedding-repository.js.map +1 -0
- package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.d.ts +41 -0
- package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js +413 -0
- package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js.map +1 -0
- package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.d.ts +29 -0
- package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js +226 -0
- package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js.map +1 -0
- package/dist/infrastructure/storage/sqlite-memory-repository.d.ts +40 -0
- package/dist/infrastructure/storage/sqlite-memory-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite-memory-repository.js +225 -0
- package/dist/infrastructure/storage/sqlite-memory-repository.js.map +1 -0
- package/dist/infrastructure/storage/sqlite-pattern-repository.d.ts +25 -0
- package/dist/infrastructure/storage/sqlite-pattern-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/sqlite-pattern-repository.js +245 -0
- package/dist/infrastructure/storage/sqlite-pattern-repository.js.map +1 -0
- package/dist/infrastructure/storage/task-helpers.d.ts +69 -0
- package/dist/infrastructure/storage/task-helpers.d.ts.map +1 -0
- package/dist/infrastructure/storage/task-helpers.js +197 -0
- package/dist/infrastructure/storage/task-helpers.js.map +1 -0
- package/dist/infrastructure/storage/task-repository.d.ts +67 -0
- package/dist/infrastructure/storage/task-repository.d.ts.map +1 -0
- package/dist/infrastructure/storage/task-repository.js +205 -0
- package/dist/infrastructure/storage/task-repository.js.map +1 -0
- package/dist/infrastructure/telemetry/telemetry-service.d.ts +74 -0
- package/dist/infrastructure/telemetry/telemetry-service.d.ts.map +1 -0
- package/dist/infrastructure/telemetry/telemetry-service.js +167 -0
- package/dist/infrastructure/telemetry/telemetry-service.js.map +1 -0
- package/dist/infrastructure/ux/appropriate-friction.d.ts +77 -0
- package/dist/infrastructure/ux/appropriate-friction.d.ts.map +1 -0
- package/dist/infrastructure/ux/appropriate-friction.js +213 -0
- package/dist/infrastructure/ux/appropriate-friction.js.map +1 -0
- package/dist/infrastructure/ux/bi-directional-learning.d.ts +131 -0
- package/dist/infrastructure/ux/bi-directional-learning.d.ts.map +1 -0
- package/dist/infrastructure/ux/bi-directional-learning.js +337 -0
- package/dist/infrastructure/ux/bi-directional-learning.js.map +1 -0
- package/dist/infrastructure/ux/capability-boundaries.d.ts +22 -0
- package/dist/infrastructure/ux/capability-boundaries.d.ts.map +1 -0
- package/dist/infrastructure/ux/capability-boundaries.js +42 -0
- package/dist/infrastructure/ux/capability-boundaries.js.map +1 -0
- package/dist/infrastructure/ux/cli-style-guide.d.ts +105 -0
- package/dist/infrastructure/ux/cli-style-guide.d.ts.map +1 -0
- package/dist/infrastructure/ux/cli-style-guide.js +220 -0
- package/dist/infrastructure/ux/cli-style-guide.js.map +1 -0
- package/dist/infrastructure/ux/comprehensive-formatter.d.ts +21 -0
- package/dist/infrastructure/ux/comprehensive-formatter.d.ts.map +1 -0
- package/dist/infrastructure/ux/comprehensive-formatter.js +117 -0
- package/dist/infrastructure/ux/comprehensive-formatter.js.map +1 -0
- package/dist/infrastructure/ux/contextual-feature-discovery.d.ts +11 -0
- package/dist/infrastructure/ux/contextual-feature-discovery.d.ts.map +1 -0
- package/dist/infrastructure/ux/contextual-feature-discovery.js +10 -0
- package/dist/infrastructure/ux/contextual-feature-discovery.js.map +1 -0
- package/dist/infrastructure/ux/expectation-management.d.ts +98 -0
- package/dist/infrastructure/ux/expectation-management.d.ts.map +1 -0
- package/dist/infrastructure/ux/expectation-management.js +327 -0
- package/dist/infrastructure/ux/expectation-management.js.map +1 -0
- package/dist/infrastructure/ux/feature-discovery.d.ts +17 -0
- package/dist/infrastructure/ux/feature-discovery.d.ts.map +1 -0
- package/dist/infrastructure/ux/feature-discovery.js +14 -0
- package/dist/infrastructure/ux/feature-discovery.js.map +1 -0
- package/dist/infrastructure/ux/feedback-prompt.d.ts +26 -0
- package/dist/infrastructure/ux/feedback-prompt.d.ts.map +1 -0
- package/dist/infrastructure/ux/feedback-prompt.js +45 -0
- package/dist/infrastructure/ux/feedback-prompt.js.map +1 -0
- package/dist/infrastructure/ux/hitl-validation.d.ts +139 -0
- package/dist/infrastructure/ux/hitl-validation.d.ts.map +1 -0
- package/dist/infrastructure/ux/hitl-validation.js +297 -0
- package/dist/infrastructure/ux/hitl-validation.js.map +1 -0
- package/dist/infrastructure/ux/progress-indicator.d.ts +53 -0
- package/dist/infrastructure/ux/progress-indicator.d.ts.map +1 -0
- package/dist/infrastructure/ux/progress-indicator.js +116 -0
- package/dist/infrastructure/ux/progress-indicator.js.map +1 -0
- package/dist/infrastructure/ux/progressive-disclosure.d.ts +84 -0
- package/dist/infrastructure/ux/progressive-disclosure.d.ts.map +1 -0
- package/dist/infrastructure/ux/progressive-disclosure.js +236 -0
- package/dist/infrastructure/ux/progressive-disclosure.js.map +1 -0
- package/dist/infrastructure/ux/review-checkpoint.d.ts +37 -0
- package/dist/infrastructure/ux/review-checkpoint.d.ts.map +1 -0
- package/dist/infrastructure/ux/review-checkpoint.js +72 -0
- package/dist/infrastructure/ux/review-checkpoint.js.map +1 -0
- package/dist/infrastructure/ux/staged-feature-intro.d.ts +22 -0
- package/dist/infrastructure/ux/staged-feature-intro.d.ts.map +1 -0
- package/dist/infrastructure/ux/staged-feature-intro.js +24 -0
- package/dist/infrastructure/ux/staged-feature-intro.js.map +1 -0
- package/dist/infrastructure/ux/syntax-highlighter.d.ts +20 -0
- package/dist/infrastructure/ux/syntax-highlighter.d.ts.map +1 -0
- package/dist/infrastructure/ux/syntax-highlighter.js +91 -0
- package/dist/infrastructure/ux/syntax-highlighter.js.map +1 -0
- package/dist/infrastructure/ux/team-standards.d.ts +94 -0
- package/dist/infrastructure/ux/team-standards.d.ts.map +1 -0
- package/dist/infrastructure/ux/team-standards.js +196 -0
- package/dist/infrastructure/ux/team-standards.js.map +1 -0
- package/dist/infrastructure/validation/agent-feedback.d.ts +57 -0
- package/dist/infrastructure/validation/agent-feedback.d.ts.map +1 -0
- package/dist/infrastructure/validation/agent-feedback.js +100 -0
- package/dist/infrastructure/validation/agent-feedback.js.map +1 -0
- package/dist/infrastructure/validation/agent-validation-helper.d.ts +75 -0
- package/dist/infrastructure/validation/agent-validation-helper.d.ts.map +1 -0
- package/dist/infrastructure/validation/agent-validation-helper.js +137 -0
- package/dist/infrastructure/validation/agent-validation-helper.js.map +1 -0
- package/dist/infrastructure/validation/hallucination-detector.d.ts +121 -0
- package/dist/infrastructure/validation/hallucination-detector.d.ts.map +1 -0
- package/dist/infrastructure/validation/hallucination-detector.js +388 -0
- package/dist/infrastructure/validation/hallucination-detector.js.map +1 -0
- package/dist/infrastructure/validation/review-handler.d.ts +26 -0
- package/dist/infrastructure/validation/review-handler.d.ts.map +1 -0
- package/dist/infrastructure/validation/review-handler.js +40 -0
- package/dist/infrastructure/validation/review-handler.js.map +1 -0
- package/dist/infrastructure/validation/summary-aggregator.d.ts +45 -0
- package/dist/infrastructure/validation/summary-aggregator.d.ts.map +1 -0
- package/dist/infrastructure/validation/summary-aggregator.js +70 -0
- package/dist/infrastructure/validation/summary-aggregator.js.map +1 -0
- package/dist/infrastructure/validation/summary-extractor.d.ts +24 -0
- package/dist/infrastructure/validation/summary-extractor.d.ts.map +1 -0
- package/dist/infrastructure/validation/summary-extractor.js +45 -0
- package/dist/infrastructure/validation/summary-extractor.js.map +1 -0
- package/dist/infrastructure/validation/trace-summary.d.ts +45 -0
- package/dist/infrastructure/validation/trace-summary.d.ts.map +1 -0
- package/dist/infrastructure/validation/trace-summary.js +52 -0
- package/dist/infrastructure/validation/trace-summary.js.map +1 -0
- package/dist/infrastructure/verification/verification-service.d.ts +12 -0
- package/dist/infrastructure/verification/verification-service.d.ts.map +1 -0
- package/dist/infrastructure/verification/verification-service.js +47 -0
- package/dist/infrastructure/verification/verification-service.js.map +1 -0
- package/dist/infrastructure/xai/attention-visualizer.d.ts +71 -0
- package/dist/infrastructure/xai/attention-visualizer.d.ts.map +1 -0
- package/dist/infrastructure/xai/attention-visualizer.js +172 -0
- package/dist/infrastructure/xai/attention-visualizer.js.map +1 -0
- package/dist/infrastructure/xai/cot-visualizer.d.ts +103 -0
- package/dist/infrastructure/xai/cot-visualizer.d.ts.map +1 -0
- package/dist/infrastructure/xai/cot-visualizer.js +283 -0
- package/dist/infrastructure/xai/cot-visualizer.js.map +1 -0
- package/dist/infrastructure/xai/decision-tree-log.d.ts +100 -0
- package/dist/infrastructure/xai/decision-tree-log.d.ts.map +1 -0
- package/dist/infrastructure/xai/decision-tree-log.js +212 -0
- package/dist/infrastructure/xai/decision-tree-log.js.map +1 -0
- package/dist/infrastructure/xai/interactive-xai.d.ts +104 -0
- package/dist/infrastructure/xai/interactive-xai.d.ts.map +1 -0
- package/dist/infrastructure/xai/interactive-xai.js +260 -0
- package/dist/infrastructure/xai/interactive-xai.js.map +1 -0
- package/dist/infrastructure/xai/uncertainty-quantifier.d.ts +77 -0
- package/dist/infrastructure/xai/uncertainty-quantifier.d.ts.map +1 -0
- package/dist/infrastructure/xai/uncertainty-quantifier.js +198 -0
- package/dist/infrastructure/xai/uncertainty-quantifier.js.map +1 -0
- package/dist/intelligent-retrieval 2.js +272 -0
- package/dist/intelligent-retrieval.d.ts +41 -0
- package/dist/intelligent-retrieval.d.ts 2.map +1 -0
- package/dist/intelligent-retrieval.d.ts.map +1 -0
- package/dist/intelligent-retrieval.js +272 -0
- package/dist/intelligent-retrieval.js.map +1 -0
- package/dist/intent/classifier.d.ts +6 -0
- package/dist/intent/classifier.d.ts.map +1 -0
- package/dist/intent/classifier.js +2 -0
- package/dist/intent/classifier.js.map +1 -0
- package/dist/intent/context.d.ts +4 -0
- package/dist/intent/context.d.ts.map +1 -0
- package/dist/intent/context.js +2 -0
- package/dist/intent/context.js.map +1 -0
- package/dist/iterative-refinement.d.ts +31 -0
- package/dist/iterative-refinement.d.ts.map +1 -0
- package/dist/iterative-refinement.js +189 -0
- package/dist/iterative-refinement.js.map +1 -0
- package/dist/learning.d.ts +69 -0
- package/dist/learning.d.ts.map +1 -0
- package/dist/learning.js +232 -0
- package/dist/learning.js.map +1 -0
- package/dist/log.d.ts +4 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +31 -0
- package/dist/log.js 2.map +1 -0
- package/dist/log.js.map +1 -0
- package/dist/migrate.d.ts +33 -0
- package/dist/migrate.d.ts.map +1 -0
- package/dist/migrate.js +133 -0
- package/dist/migrate.js 2.map +1 -0
- package/dist/migrate.js.map +1 -0
- package/dist/monitoring.d.ts +75 -0
- package/dist/monitoring.d.ts.map +1 -0
- package/dist/monitoring.js +250 -0
- package/dist/monitoring.js.map +1 -0
- package/dist/parallel-processor.d 2.ts +44 -0
- package/dist/parallel-processor.d.ts +44 -0
- package/dist/parallel-processor.d.ts.map +1 -0
- package/dist/parallel-processor.js +606 -0
- package/dist/parallel-processor.js.map +1 -0
- package/dist/planner.d.ts +47 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +198 -0
- package/dist/planner.js.map +1 -0
- package/dist/policy.d 2.ts +3 -0
- package/dist/policy.d.ts +3 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +26 -0
- package/dist/policy.js.map +1 -0
- package/dist/presentation/cli/commands/ask-command.d.ts +9 -0
- package/dist/presentation/cli/commands/ask-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/ask-command.js +355 -0
- package/dist/presentation/cli/commands/ask-command.js.map +1 -0
- package/dist/presentation/cli/commands/audit-command.d.ts +13 -0
- package/dist/presentation/cli/commands/audit-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/audit-command.js +96 -0
- package/dist/presentation/cli/commands/audit-command.js.map +1 -0
- package/dist/presentation/cli/commands/config-command.d.ts +9 -0
- package/dist/presentation/cli/commands/config-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/config-command.js +125 -0
- package/dist/presentation/cli/commands/config-command.js.map +1 -0
- package/dist/presentation/cli/commands/context-command.d.ts +32 -0
- package/dist/presentation/cli/commands/context-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/context-command.js +295 -0
- package/dist/presentation/cli/commands/context-command.js.map +1 -0
- package/dist/presentation/cli/commands/context-helper.d.ts +16 -0
- package/dist/presentation/cli/commands/context-helper.d.ts.map +1 -0
- package/dist/presentation/cli/commands/context-helper.js +88 -0
- package/dist/presentation/cli/commands/context-helper.js.map +1 -0
- package/dist/presentation/cli/commands/cost-command.d.ts +8 -0
- package/dist/presentation/cli/commands/cost-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/cost-command.js +191 -0
- package/dist/presentation/cli/commands/cost-command.js.map +1 -0
- package/dist/presentation/cli/commands/decision-command.d.ts +12 -0
- package/dist/presentation/cli/commands/decision-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/decision-command.js +207 -0
- package/dist/presentation/cli/commands/decision-command.js.map +1 -0
- package/dist/presentation/cli/commands/docs-command.d.ts +14 -0
- package/dist/presentation/cli/commands/docs-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/docs-command.js +25 -0
- package/dist/presentation/cli/commands/docs-command.js.map +1 -0
- package/dist/presentation/cli/commands/fix-command.d.ts +15 -0
- package/dist/presentation/cli/commands/fix-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/fix-command.js +93 -0
- package/dist/presentation/cli/commands/fix-command.js.map +1 -0
- package/dist/presentation/cli/commands/help-command.d.ts +9 -0
- package/dist/presentation/cli/commands/help-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/help-command.js +283 -0
- package/dist/presentation/cli/commands/help-command.js.map +1 -0
- package/dist/presentation/cli/commands/knowledge-command.d.ts +13 -0
- package/dist/presentation/cli/commands/knowledge-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/knowledge-command.js +129 -0
- package/dist/presentation/cli/commands/knowledge-command.js.map +1 -0
- package/dist/presentation/cli/commands/learning-dashboard-command.d.ts +8 -0
- package/dist/presentation/cli/commands/learning-dashboard-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/learning-dashboard-command.js +183 -0
- package/dist/presentation/cli/commands/learning-dashboard-command.js.map +1 -0
- package/dist/presentation/cli/commands/models-command.d.ts +13 -0
- package/dist/presentation/cli/commands/models-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/models-command.js +194 -0
- package/dist/presentation/cli/commands/models-command.js.map +1 -0
- package/dist/presentation/cli/commands/orchestrate-command.d.ts +10 -0
- package/dist/presentation/cli/commands/orchestrate-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/orchestrate-command.js +249 -0
- package/dist/presentation/cli/commands/orchestrate-command.js.map +1 -0
- package/dist/presentation/cli/commands/plan-command.d.ts +9 -0
- package/dist/presentation/cli/commands/plan-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/plan-command.js +246 -0
- package/dist/presentation/cli/commands/plan-command.js.map +1 -0
- package/dist/presentation/cli/commands/product-command.d.ts +14 -0
- package/dist/presentation/cli/commands/product-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/product-command.js +22 -0
- package/dist/presentation/cli/commands/product-command.js.map +1 -0
- package/dist/presentation/cli/commands/react-command.d.ts +8 -0
- package/dist/presentation/cli/commands/react-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/react-command.js +181 -0
- package/dist/presentation/cli/commands/react-command.js.map +1 -0
- package/dist/presentation/cli/commands/review-command.d.ts +14 -0
- package/dist/presentation/cli/commands/review-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/review-command.js +154 -0
- package/dist/presentation/cli/commands/review-command.js.map +1 -0
- package/dist/presentation/cli/commands/run-command.d.ts +13 -0
- package/dist/presentation/cli/commands/run-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/run-command.js +188 -0
- package/dist/presentation/cli/commands/run-command.js.map +1 -0
- package/dist/presentation/cli/commands/setup-command.d.ts +10 -0
- package/dist/presentation/cli/commands/setup-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/setup-command.js +301 -0
- package/dist/presentation/cli/commands/setup-command.js.map +1 -0
- package/dist/presentation/cli/commands/smart-command.d.ts +11 -0
- package/dist/presentation/cli/commands/smart-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/smart-command.js +517 -0
- package/dist/presentation/cli/commands/smart-command.js.map +1 -0
- package/dist/presentation/cli/commands/status-command.d.ts +14 -0
- package/dist/presentation/cli/commands/status-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/status-command.js +167 -0
- package/dist/presentation/cli/commands/status-command.js.map +1 -0
- package/dist/presentation/cli/commands/suggest-command.d.ts +11 -0
- package/dist/presentation/cli/commands/suggest-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/suggest-command.js +138 -0
- package/dist/presentation/cli/commands/suggest-command.js.map +1 -0
- package/dist/presentation/cli/commands/trace-command.d.ts +8 -0
- package/dist/presentation/cli/commands/trace-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/trace-command.js +129 -0
- package/dist/presentation/cli/commands/trace-command.js.map +1 -0
- package/dist/presentation/cli/commands/trust-command.d.ts +28 -0
- package/dist/presentation/cli/commands/trust-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/trust-command.js +301 -0
- package/dist/presentation/cli/commands/trust-command.js.map +1 -0
- package/dist/presentation/cli/commands/undo-command.d.ts +8 -0
- package/dist/presentation/cli/commands/undo-command.d.ts.map +1 -0
- package/dist/presentation/cli/commands/undo-command.js +150 -0
- package/dist/presentation/cli/commands/undo-command.js.map +1 -0
- package/dist/presentation/cli/error-display.d.ts +25 -0
- package/dist/presentation/cli/error-display.d.ts.map +1 -0
- package/dist/presentation/cli/error-display.js +340 -0
- package/dist/presentation/cli/error-display.js.map +1 -0
- package/dist/query-optimizer.d.ts +32 -0
- package/dist/query-optimizer.d.ts.map +1 -0
- package/dist/query-optimizer.js +205 -0
- package/dist/query-optimizer.js.map +1 -0
- package/dist/refactor.d.ts +27 -0
- package/dist/refactor.d.ts.map +1 -0
- package/dist/refactor.js +116 -0
- package/dist/refactor.js.map +1 -0
- package/dist/review 2.js +206 -0
- package/dist/review.d.ts +31 -0
- package/dist/review.d.ts.map +1 -0
- package/dist/review.js +206 -0
- package/dist/review.js.map +1 -0
- package/dist/search.d.ts +19 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +193 -0
- package/dist/search.js 2.map +1 -0
- package/dist/search.js.map +1 -0
- package/dist/session 2.js +593 -0
- package/dist/session.d.ts +17 -0
- package/dist/session.d.ts 2.map +1 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +593 -0
- package/dist/session.js.map +1 -0
- package/dist/task-verification 2.js +336 -0
- package/dist/task-verification.d.ts +39 -0
- package/dist/task-verification.d.ts 2.map +1 -0
- package/dist/task-verification.d.ts.map +1 -0
- package/dist/task-verification.js +336 -0
- package/dist/task-verification.js.map +1 -0
- package/dist/test-minimal.d.ts +2 -0
- package/dist/test-minimal.d.ts.map +1 -0
- package/dist/test-minimal.js +2 -0
- package/dist/test-minimal.js.map +1 -0
- package/dist/testgen.d.ts +24 -0
- package/dist/testgen.d.ts.map +1 -0
- package/dist/testgen.js +166 -0
- package/dist/testgen.js 2.map +1 -0
- package/dist/testgen.js.map +1 -0
- package/dist/token-optimizer.d 2.ts +20 -0
- package/dist/token-optimizer.d.ts +20 -0
- package/dist/token-optimizer.d.ts.map +1 -0
- package/dist/token-optimizer.js +282 -0
- package/dist/token-optimizer.js.map +1 -0
- package/dist/tools/bash.d.ts +53 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +213 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/edit.d.ts +48 -0
- package/dist/tools/edit.d.ts.map +1 -0
- package/dist/tools/edit.js +235 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/executor.d.ts +29 -0
- package/dist/tools/executor.d.ts.map +1 -0
- package/dist/tools/executor.js +153 -0
- package/dist/tools/executor.js.map +1 -0
- package/dist/tools/git-tool.d.ts +87 -0
- package/dist/tools/git-tool.d.ts.map +1 -0
- package/dist/tools/git-tool.js +292 -0
- package/dist/tools/git-tool.js.map +1 -0
- package/dist/tools/parser.d.ts +33 -0
- package/dist/tools/parser.d.ts.map +1 -0
- package/dist/tools/parser.js +158 -0
- package/dist/tools/parser.js.map +1 -0
- package/dist/tools/registry.d.ts +74 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +302 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/search.d.ts +41 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +100 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/types.d.ts +36 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/ui.d.ts +60 -0
- package/dist/ui.d.ts 2.map +1 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +334 -0
- package/dist/ui.js.map +1 -0
- package/dist/utils/check-api-status.d.ts +12 -0
- package/dist/utils/check-api-status.d.ts.map +1 -0
- package/dist/utils/check-api-status.js +82 -0
- package/dist/utils/check-api-status.js.map +1 -0
- package/dist/utils/debug.d.ts +7 -0
- package/dist/utils/debug.d.ts.map +1 -0
- package/dist/utils/debug.js +24 -0
- package/dist/utils/debug.js.map +1 -0
- package/dist/utils/diff-parser.d.ts +22 -0
- package/dist/utils/diff-parser.d.ts.map +1 -0
- package/dist/utils/diff-parser.js +192 -0
- package/dist/utils/diff-parser.js.map +1 -0
- package/dist/utils/provider-check.d.ts +21 -0
- package/dist/utils/provider-check.d.ts.map +1 -0
- package/dist/utils/provider-check.js +124 -0
- package/dist/utils/provider-check.js.map +1 -0
- package/dist/utils/version.d.ts +21 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +52 -0
- package/dist/utils/version.js.map +1 -0
- package/dist/verification/backup.d.ts +30 -0
- package/dist/verification/backup.d.ts.map +1 -0
- package/dist/verification/backup.js +259 -0
- package/dist/verification/backup.js.map +1 -0
- package/dist/verification/compiler.d.ts +20 -0
- package/dist/verification/compiler.d.ts.map +1 -0
- package/dist/verification/compiler.js +263 -0
- package/dist/verification/compiler.js.map +1 -0
- package/dist/verification/index.d.ts +59 -0
- package/dist/verification/index.d.ts.map +1 -0
- package/dist/verification/index.js +273 -0
- package/dist/verification/index.js.map +1 -0
- package/dist/verification/test-runner.d.ts +27 -0
- package/dist/verification/test-runner.d.ts.map +1 -0
- package/dist/verification/test-runner.js +379 -0
- package/dist/verification/test-runner.js.map +1 -0
- package/dist/verify_db.d.ts +2 -0
- package/dist/verify_db.d.ts.map +1 -0
- package/dist/verify_db.js +52 -0
- package/dist/verify_db.js 2.map +1 -0
- package/dist/verify_db.js.map +1 -0
- package/package.json +125 -0
|
@@ -0,0 +1,942 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intelligent Query Router
|
|
3
|
+
* Understands user intent and routes to appropriate use cases
|
|
4
|
+
* Provides seamless experience - user just types what they want
|
|
5
|
+
* MEMORY-AWARE: Uses Memory Stream to inform routing decisions
|
|
6
|
+
*/
|
|
7
|
+
import { QueryIntentClassifier } from '../../domain/services/query-intent-classifier.js';
|
|
8
|
+
import { validateQuery } from '../../infrastructure/security/input-validator.js';
|
|
9
|
+
import { executionTracer } from '../../infrastructure/observability/execution-tracer.js';
|
|
10
|
+
import { agentFeedbackManager } from '../../infrastructure/validation/agent-feedback.js';
|
|
11
|
+
import { findCodebaseRoot } from '../../domain/services/codebase-detector.js';
|
|
12
|
+
export class IntelligentRouter {
|
|
13
|
+
intentClassifier;
|
|
14
|
+
aiService;
|
|
15
|
+
memoryStream;
|
|
16
|
+
constructor(intentClassifier, aiService, memoryStream) {
|
|
17
|
+
this.intentClassifier = intentClassifier || new QueryIntentClassifier();
|
|
18
|
+
this.aiService = aiService;
|
|
19
|
+
this.memoryStream = memoryStream;
|
|
20
|
+
}
|
|
21
|
+
async route(request) {
|
|
22
|
+
// Start routing trace
|
|
23
|
+
const codebaseInfo = findCodebaseRoot(process.cwd());
|
|
24
|
+
const routingRunId = executionTracer.startRun('intelligent-router', {
|
|
25
|
+
query: request.query,
|
|
26
|
+
codebaseId: codebaseInfo?.codebaseId || codebaseInfo?.rootPath,
|
|
27
|
+
});
|
|
28
|
+
// Track routing decision data
|
|
29
|
+
let routingDecision;
|
|
30
|
+
try {
|
|
31
|
+
// Validate input
|
|
32
|
+
const validation = validateQuery(request.query);
|
|
33
|
+
if (!validation.valid) {
|
|
34
|
+
executionTracer.endRun();
|
|
35
|
+
return {
|
|
36
|
+
intent: 'error',
|
|
37
|
+
action: 'general',
|
|
38
|
+
result: null,
|
|
39
|
+
success: false,
|
|
40
|
+
error: `Invalid query: ${validation.errors.join(', ')}`,
|
|
41
|
+
routingRunId,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// Use sanitized query if validation found issues
|
|
45
|
+
let query = (validation.sanitized || request.query).trim();
|
|
46
|
+
// 2. Classify intent FIRST (needed for conversation tracking)
|
|
47
|
+
const classifiedIntent = this.intentClassifier.classify(query);
|
|
48
|
+
// Record intent classification
|
|
49
|
+
executionTracer.trace({
|
|
50
|
+
operationType: 'code_analysis',
|
|
51
|
+
operationName: 'intent_classification',
|
|
52
|
+
input: { query },
|
|
53
|
+
output: { intent: classifiedIntent },
|
|
54
|
+
metadata: {
|
|
55
|
+
classifier: 'QueryIntentClassifier',
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
// Resolve conversation references if we have history
|
|
59
|
+
let resolvedQuery = query;
|
|
60
|
+
let sessionId;
|
|
61
|
+
if (request.context?.conversationHistory && request.context.conversationHistory.length > 0) {
|
|
62
|
+
const { conversationContextManager } = await import('../../infrastructure/context/conversation-context.js');
|
|
63
|
+
sessionId = request.context.sessionId || 'default-session';
|
|
64
|
+
// Resolve references in query (e.g., "it", "that", "the previous")
|
|
65
|
+
resolvedQuery = conversationContextManager.resolveReferences(sessionId, query);
|
|
66
|
+
// Extract entities for context tracking
|
|
67
|
+
const entities = conversationContextManager.extractEntities(resolvedQuery);
|
|
68
|
+
// Store original query turn (will be updated with response after routing)
|
|
69
|
+
conversationContextManager.addTurn(sessionId, query, '', entities, classifiedIntent);
|
|
70
|
+
}
|
|
71
|
+
// Use resolved query for processing
|
|
72
|
+
query = resolvedQuery;
|
|
73
|
+
// 1. MEMORY-AWARE: Retrieve relevant memories to inform routing decision
|
|
74
|
+
let memories = [];
|
|
75
|
+
let memoryInformedIntent = null;
|
|
76
|
+
if (this.memoryStream) {
|
|
77
|
+
try {
|
|
78
|
+
// Retrieve memories relevant to this query
|
|
79
|
+
memories = await this.memoryStream.retrieve(query, 10);
|
|
80
|
+
// If we have memories, use them to inform intent classification
|
|
81
|
+
if (memories.length > 0 && this.aiService) {
|
|
82
|
+
memoryInformedIntent = await this.classifyIntentWithMemory(query, memories);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
// Fallback to basic classification if memory retrieval fails
|
|
87
|
+
console.warn('Memory retrieval failed, using basic classification:', error);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// CRITICAL: Compound instructions (numbered steps) MUST route to Planning Module
|
|
91
|
+
// Check this BEFORE memory-informed intent to prevent override
|
|
92
|
+
const isCompoundInstruction = query.includes('\n') && /\d+\.\s+[^\n]+\n\s*\d+\.\s+/.test(query);
|
|
93
|
+
// Use memory-informed intent ONLY if not a compound instruction
|
|
94
|
+
const intent = isCompoundInstruction && classifiedIntent === 'multi-file-modify'
|
|
95
|
+
? 'multi-file-modify' // Force compound instructions to Planning Module
|
|
96
|
+
: (memoryInformedIntent || classifiedIntent);
|
|
97
|
+
const symbols = this.intentClassifier.extractSymbols(query);
|
|
98
|
+
// Determine which action/agent will be selected based on intent
|
|
99
|
+
const actionMap = {
|
|
100
|
+
'explain': 'explain',
|
|
101
|
+
'multi-file-modify': 'orchestrate',
|
|
102
|
+
'modify': 'edit',
|
|
103
|
+
'debug': 'edit',
|
|
104
|
+
'implement': 'edit',
|
|
105
|
+
'index': 'index',
|
|
106
|
+
'plan': 'plan',
|
|
107
|
+
'find': 'ask',
|
|
108
|
+
'understand': 'ask', // Open questions → semantic search
|
|
109
|
+
'general': 'ask',
|
|
110
|
+
'review': 'ask', // Code review questions → semantic search
|
|
111
|
+
'test': 'ask', // Test-related questions → semantic search
|
|
112
|
+
'refactor': 'edit', // Single-file refactoring
|
|
113
|
+
};
|
|
114
|
+
const selectedAction = actionMap[intent] || 'ask';
|
|
115
|
+
const selectedAgent = selectedAction === 'orchestrate' ? 'multi-agent-orchestrator' :
|
|
116
|
+
selectedAction === 'plan' ? 'planning-agent' :
|
|
117
|
+
selectedAction === 'react' ? 'react-orchestration' :
|
|
118
|
+
selectedAction === 'edit' ? 'edit-file-use-case' :
|
|
119
|
+
selectedAction === 'explain' ? 'explain-file-use-case' :
|
|
120
|
+
selectedAction === 'index' ? 'index-codebase-use-case' :
|
|
121
|
+
'ask-question-use-case';
|
|
122
|
+
// Calculate confidence score (heuristic)
|
|
123
|
+
let confidence = 0.8; // Default confidence
|
|
124
|
+
if (memoryInformedIntent && memoryInformedIntent === classifiedIntent) {
|
|
125
|
+
confidence = 0.95; // High confidence when memory and classifier agree
|
|
126
|
+
}
|
|
127
|
+
else if (memoryInformedIntent) {
|
|
128
|
+
confidence = 0.85; // Good confidence with memory override
|
|
129
|
+
}
|
|
130
|
+
else if (isCompoundInstruction) {
|
|
131
|
+
confidence = 0.9; // High confidence for compound instructions
|
|
132
|
+
}
|
|
133
|
+
// Build selection reason
|
|
134
|
+
const selectionReason = isCompoundInstruction
|
|
135
|
+
? 'Compound instruction detected - routing to orchestration'
|
|
136
|
+
: memoryInformedIntent && memoryInformedIntent !== classifiedIntent
|
|
137
|
+
? `Memory-informed routing: ${classifiedIntent} → ${memoryInformedIntent}`
|
|
138
|
+
: `Intent classification: ${intent}`;
|
|
139
|
+
// Track alternatives considered
|
|
140
|
+
const alternatives = Object.keys(actionMap)
|
|
141
|
+
.filter(k => actionMap[k] !== selectedAction)
|
|
142
|
+
.map(k => actionMap[k])
|
|
143
|
+
.filter((v, i, arr) => arr.indexOf(v) === i) // Deduplicate
|
|
144
|
+
.slice(0, 3); // Top 3 alternatives
|
|
145
|
+
// Record routing decision
|
|
146
|
+
routingDecision = {
|
|
147
|
+
confidence,
|
|
148
|
+
selectedAgent,
|
|
149
|
+
selectionReason,
|
|
150
|
+
alternatives,
|
|
151
|
+
};
|
|
152
|
+
// Trace routing decision
|
|
153
|
+
executionTracer.trace({
|
|
154
|
+
operationType: 'code_analysis',
|
|
155
|
+
operationName: 'routing_decision',
|
|
156
|
+
input: { query, intent, classifiedIntent, memoryInformedIntent },
|
|
157
|
+
output: { selectedAction, selectedAgent, confidence },
|
|
158
|
+
metadata: {
|
|
159
|
+
intent,
|
|
160
|
+
selectedAction,
|
|
161
|
+
selectedAgent,
|
|
162
|
+
confidence,
|
|
163
|
+
memoryInformed: !!memoryInformedIntent,
|
|
164
|
+
memoriesUsed: memories.length,
|
|
165
|
+
compoundInstruction: isCompoundInstruction,
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
// Debug logging for compound instructions
|
|
169
|
+
if (isCompoundInstruction) {
|
|
170
|
+
console.log(`[IntelligentRouter] Compound instruction detected. Classified: ${classifiedIntent}, Memory: ${memoryInformedIntent}, Using: ${intent}`);
|
|
171
|
+
}
|
|
172
|
+
// 3. Check if indexing is needed
|
|
173
|
+
const needsIndex = await this.checkIfIndexingNeeded(request.context);
|
|
174
|
+
// Handle indexing first if needed
|
|
175
|
+
if (needsIndex && (intent === 'find' || intent === 'understand' || intent === 'explain')) {
|
|
176
|
+
executionTracer.endRun();
|
|
177
|
+
// Record routing decision feedback
|
|
178
|
+
try {
|
|
179
|
+
agentFeedbackManager.recordFeedback({
|
|
180
|
+
runId: routingRunId,
|
|
181
|
+
agentName: 'intelligent-router',
|
|
182
|
+
operation: 'route',
|
|
183
|
+
query: request.query,
|
|
184
|
+
outcome: 'failure',
|
|
185
|
+
userAction: 'not_required', // Error case - no review flow
|
|
186
|
+
errors: ['Indexing required'],
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
// Non-blocking
|
|
191
|
+
}
|
|
192
|
+
return {
|
|
193
|
+
intent: 'index',
|
|
194
|
+
action: 'index',
|
|
195
|
+
result: { message: 'Indexing required. Please run: codehere index' },
|
|
196
|
+
success: false,
|
|
197
|
+
message: 'Codebase not indexed. Run "codehere index" first, then try again.',
|
|
198
|
+
memoriesUsed: memories.length,
|
|
199
|
+
routingDecision,
|
|
200
|
+
routingRunId,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
// Route based on intent (pass memories for context)
|
|
204
|
+
let routingResult;
|
|
205
|
+
try {
|
|
206
|
+
switch (intent) {
|
|
207
|
+
case 'explain':
|
|
208
|
+
// Use deterministic workflow for faster performance (no ReAct overhead)
|
|
209
|
+
routingResult = await this.handleExplainWithWorkflow(query, symbols, memories);
|
|
210
|
+
break;
|
|
211
|
+
case 'multi-file-modify':
|
|
212
|
+
// Multi-file operations require planning AND execution
|
|
213
|
+
routingResult = await this.handleOrchestrate(query, memories);
|
|
214
|
+
break;
|
|
215
|
+
case 'modify':
|
|
216
|
+
case 'debug': // 'fix' maps to 'debug'
|
|
217
|
+
case 'implement':
|
|
218
|
+
routingResult = await this.handleEdit(query, symbols, memories);
|
|
219
|
+
break;
|
|
220
|
+
case 'index':
|
|
221
|
+
routingResult = await this.handleIndex(query);
|
|
222
|
+
break;
|
|
223
|
+
case 'plan':
|
|
224
|
+
// Complex goals need planning
|
|
225
|
+
routingResult = await this.handlePlan(query, memories);
|
|
226
|
+
break;
|
|
227
|
+
case 'find':
|
|
228
|
+
// For "find" queries, use AskQuestion to search the codebase
|
|
229
|
+
routingResult = await this.handleAsk(query, memories);
|
|
230
|
+
break;
|
|
231
|
+
case 'understand':
|
|
232
|
+
case 'general':
|
|
233
|
+
// CRITICAL FIX: Simple questions should NEVER use ReAct
|
|
234
|
+
// Only use ReAct for truly complex multi-step queries
|
|
235
|
+
// Simple questions (explain, find, understand) go directly to AskQuestionUseCase
|
|
236
|
+
if (this.isSimpleQuestion(query)) {
|
|
237
|
+
routingResult = await this.handleAsk(query, memories);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
// For complex queries, check if ReAct is appropriate
|
|
241
|
+
const shouldUseReAct = this.shouldUseReAct(query, memories);
|
|
242
|
+
if (shouldUseReAct) {
|
|
243
|
+
routingResult = await this.handleReAct(query, memories);
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
// Default to AskQuestion for understand/general queries
|
|
247
|
+
routingResult = await this.handleAsk(query, memories);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
break;
|
|
251
|
+
default:
|
|
252
|
+
// CRITICAL FIX: Default to AskQuestion, not ReAct
|
|
253
|
+
routingResult = await this.handleAsk(query, memories);
|
|
254
|
+
break;
|
|
255
|
+
}
|
|
256
|
+
// Attach routing decision to result
|
|
257
|
+
routingResult.routingDecision = routingDecision;
|
|
258
|
+
routingResult.routingRunId = routingRunId;
|
|
259
|
+
// End routing trace
|
|
260
|
+
executionTracer.endRun();
|
|
261
|
+
// Record routing feedback
|
|
262
|
+
try {
|
|
263
|
+
agentFeedbackManager.recordFeedback({
|
|
264
|
+
runId: routingRunId,
|
|
265
|
+
agentName: 'intelligent-router',
|
|
266
|
+
operation: 'route',
|
|
267
|
+
query: request.query,
|
|
268
|
+
outcome: routingResult.success ? 'success' : 'failure',
|
|
269
|
+
userAction: 'not_required', // Internal routing - no review flow
|
|
270
|
+
errors: routingResult.error ? [routingResult.error] : undefined,
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
catch {
|
|
274
|
+
// Non-blocking
|
|
275
|
+
}
|
|
276
|
+
return routingResult;
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
// End run on error
|
|
280
|
+
executionTracer.endRun();
|
|
281
|
+
// Record failure
|
|
282
|
+
try {
|
|
283
|
+
agentFeedbackManager.recordFeedback({
|
|
284
|
+
runId: routingRunId,
|
|
285
|
+
agentName: 'intelligent-router',
|
|
286
|
+
operation: 'route',
|
|
287
|
+
query: request.query,
|
|
288
|
+
outcome: 'failure',
|
|
289
|
+
userAction: 'not_required', // Error case - no review flow
|
|
290
|
+
errors: [error instanceof Error ? error.message : String(error)],
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
catch {
|
|
294
|
+
// Non-blocking
|
|
295
|
+
}
|
|
296
|
+
return {
|
|
297
|
+
intent,
|
|
298
|
+
action: selectedAction === 'orchestrate' ? 'general' : selectedAction,
|
|
299
|
+
result: null,
|
|
300
|
+
success: false,
|
|
301
|
+
error: error instanceof Error ? error.message : String(error),
|
|
302
|
+
routingDecision,
|
|
303
|
+
routingRunId,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
catch (outerError) {
|
|
308
|
+
// Catch any errors from the outer try block (validation, classification, etc.)
|
|
309
|
+
executionTracer.endRun();
|
|
310
|
+
try {
|
|
311
|
+
agentFeedbackManager.recordFeedback({
|
|
312
|
+
runId: routingRunId,
|
|
313
|
+
agentName: 'intelligent-router',
|
|
314
|
+
operation: 'route',
|
|
315
|
+
query: request.query,
|
|
316
|
+
outcome: 'failure',
|
|
317
|
+
userAction: 'not_required', // Error case - no review flow
|
|
318
|
+
errors: [outerError instanceof Error ? outerError.message : String(outerError)],
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
catch {
|
|
322
|
+
// Non-blocking
|
|
323
|
+
}
|
|
324
|
+
return {
|
|
325
|
+
intent: 'error',
|
|
326
|
+
action: 'general',
|
|
327
|
+
result: null,
|
|
328
|
+
success: false,
|
|
329
|
+
error: outerError instanceof Error ? outerError.message : String(outerError),
|
|
330
|
+
routingRunId,
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Classify intent using AI and memory context
|
|
336
|
+
* More accurate than keyword-based classification
|
|
337
|
+
*/
|
|
338
|
+
async classifyIntentWithMemory(query, memories) {
|
|
339
|
+
if (!this.aiService) {
|
|
340
|
+
return this.intentClassifier.classify(query);
|
|
341
|
+
}
|
|
342
|
+
// Build memory context
|
|
343
|
+
const memoryContext = memories
|
|
344
|
+
.slice(0, 5) // Use top 5 most relevant
|
|
345
|
+
.map((m, i) => `${i + 1}. ${m.description} (${m.type})`)
|
|
346
|
+
.join('\n');
|
|
347
|
+
const prompt = `Classify the intent of this user query. Consider past experiences that might inform the classification.
|
|
348
|
+
|
|
349
|
+
Query: "${query}"
|
|
350
|
+
|
|
351
|
+
Relevant Past Experiences:
|
|
352
|
+
${memoryContext}
|
|
353
|
+
|
|
354
|
+
Classify the intent as ONE of: explain, refactor, debug, implement, understand, find, modify, multi-file-modify, index, review, test, plan, general
|
|
355
|
+
|
|
356
|
+
Consider:
|
|
357
|
+
- If similar queries were handled successfully before, use that intent
|
|
358
|
+
- If past experiences suggest a specific approach, use that
|
|
359
|
+
- If the query is complex and requires planning, use "plan"
|
|
360
|
+
- If it's a simple question, use "understand" or "find"
|
|
361
|
+
|
|
362
|
+
Respond with ONLY the intent word (e.g., "explain", "plan", "understand"):`;
|
|
363
|
+
try {
|
|
364
|
+
const response = await this.aiService.chat(prompt, []);
|
|
365
|
+
const intent = response.trim().toLowerCase().split(/\s+/)[0];
|
|
366
|
+
// Validate intent
|
|
367
|
+
const validIntents = ['explain', 'refactor', 'debug', 'implement', 'understand', 'find', 'modify', 'multi-file-modify', 'index', 'review', 'test', 'plan', 'general'];
|
|
368
|
+
if (validIntents.includes(intent)) {
|
|
369
|
+
return intent;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
catch (error) {
|
|
373
|
+
// Fallback to keyword-based
|
|
374
|
+
}
|
|
375
|
+
return this.intentClassifier.classify(query);
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Check if query is a simple question (explain, find, understand)
|
|
379
|
+
* Simple questions should NEVER use ReAct - they go directly to AskQuestionUseCase
|
|
380
|
+
*/
|
|
381
|
+
isSimpleQuestion(query) {
|
|
382
|
+
const lower = query.toLowerCase();
|
|
383
|
+
// Simple question patterns
|
|
384
|
+
const simplePatterns = [
|
|
385
|
+
/^(what|where|how|why|when|who|which|is|are|does|do|can|could|will|would)\s+/i,
|
|
386
|
+
/^(explain|describe|tell me about|show me|find|locate|search for)/i,
|
|
387
|
+
/^(what is|what are|where is|where are|how does|how do|how is|how are)/i,
|
|
388
|
+
/\?$/, // Ends with question mark
|
|
389
|
+
];
|
|
390
|
+
// Check if query matches simple question patterns
|
|
391
|
+
const isQuestion = simplePatterns.some(pattern => pattern.test(query));
|
|
392
|
+
// Simple if it's a question AND doesn't require multiple steps
|
|
393
|
+
const isSingleStep = !this.isComplexQuery(query);
|
|
394
|
+
return isQuestion && isSingleStep;
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Determine if ReAct should be used based on query complexity and past experiences
|
|
398
|
+
* CRITICAL: Only use ReAct for truly complex multi-step queries
|
|
399
|
+
*/
|
|
400
|
+
shouldUseReAct(query, memories) {
|
|
401
|
+
// NEVER use ReAct for simple questions
|
|
402
|
+
if (this.isSimpleQuestion(query)) {
|
|
403
|
+
return false;
|
|
404
|
+
}
|
|
405
|
+
// Check query complexity - must be truly complex
|
|
406
|
+
if (!this.isComplexQuery(query)) {
|
|
407
|
+
return false;
|
|
408
|
+
}
|
|
409
|
+
// Additional check: Query must require multiple tools/steps
|
|
410
|
+
const requiresMultipleSteps = this.requiresMultipleSteps(query);
|
|
411
|
+
if (!requiresMultipleSteps) {
|
|
412
|
+
return false;
|
|
413
|
+
}
|
|
414
|
+
// Check memories for similar queries that used ReAct successfully
|
|
415
|
+
// But only if query is already complex
|
|
416
|
+
if (memories.length > 0) {
|
|
417
|
+
const similarQueries = memories.filter(m => {
|
|
418
|
+
const desc = m.description.toLowerCase();
|
|
419
|
+
const queryLower = query.toLowerCase();
|
|
420
|
+
// Check if memory mentions ReAct or similar complex handling
|
|
421
|
+
return desc.includes('react') ||
|
|
422
|
+
desc.includes('complex') ||
|
|
423
|
+
desc.includes('multi-step') ||
|
|
424
|
+
(desc.includes(queryLower.split(' ')[0]) && m.metadata?.action === 'react');
|
|
425
|
+
});
|
|
426
|
+
// If we have memories of similar queries using ReAct, use it
|
|
427
|
+
if (similarQueries.length > 0) {
|
|
428
|
+
return true;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
return false;
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Check if query requires multiple steps/tools
|
|
435
|
+
*/
|
|
436
|
+
requiresMultipleSteps(query) {
|
|
437
|
+
const lower = query.toLowerCase();
|
|
438
|
+
// Multi-step indicators
|
|
439
|
+
const multiStepIndicators = [
|
|
440
|
+
'and then',
|
|
441
|
+
'after that',
|
|
442
|
+
'also',
|
|
443
|
+
'first',
|
|
444
|
+
'second',
|
|
445
|
+
'third',
|
|
446
|
+
'finally',
|
|
447
|
+
'then',
|
|
448
|
+
'next',
|
|
449
|
+
'step',
|
|
450
|
+
'steps',
|
|
451
|
+
'multiple',
|
|
452
|
+
'several',
|
|
453
|
+
'check',
|
|
454
|
+
'verify',
|
|
455
|
+
'debug',
|
|
456
|
+
'fix',
|
|
457
|
+
'and',
|
|
458
|
+
'while',
|
|
459
|
+
'during',
|
|
460
|
+
];
|
|
461
|
+
// Count multi-step indicators
|
|
462
|
+
const indicatorCount = multiStepIndicators.filter(indicator => lower.includes(indicator)).length;
|
|
463
|
+
// Requires multiple steps if 2+ indicators or very long query
|
|
464
|
+
return indicatorCount >= 2 || query.split(' ').length > 20;
|
|
465
|
+
}
|
|
466
|
+
async checkIfIndexingNeeded(context) {
|
|
467
|
+
// Quick mode - bypass indexing entirely, use direct file reading
|
|
468
|
+
if (context?.quickMode) {
|
|
469
|
+
return false;
|
|
470
|
+
}
|
|
471
|
+
// FAKE_AI mode never needs indexing - for demos and testing
|
|
472
|
+
if (process.env.CODEHERE_FAKE_AI === '1') {
|
|
473
|
+
return false;
|
|
474
|
+
}
|
|
475
|
+
// Local provider with no embeddings support - skip indexing
|
|
476
|
+
if (process.env.CODEHERE_AI_PROVIDER === 'local') {
|
|
477
|
+
return false;
|
|
478
|
+
}
|
|
479
|
+
if (context?.hasIndex === false)
|
|
480
|
+
return true;
|
|
481
|
+
try {
|
|
482
|
+
const { container } = await import('./dependency-container.js');
|
|
483
|
+
// Use per-repo embedding repository for codebase isolation
|
|
484
|
+
const repo = container.getEmbeddingRepository(process.cwd());
|
|
485
|
+
// Check if any embeddings exist
|
|
486
|
+
const testSearch = await repo.searchWithEmbedding([0.1], 1);
|
|
487
|
+
return testSearch.length === 0;
|
|
488
|
+
}
|
|
489
|
+
catch {
|
|
490
|
+
return true; // Assume needs indexing if check fails
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
async handleAsk(query, memories) {
|
|
494
|
+
try {
|
|
495
|
+
const { container } = await import('./dependency-container.js');
|
|
496
|
+
// Use per-repo use case for codebase isolation
|
|
497
|
+
const useCase = container.getAskQuestionUseCase(process.cwd());
|
|
498
|
+
const result = await useCase.execute({ query, maxResults: 15 });
|
|
499
|
+
// Record successful routing in memory
|
|
500
|
+
if (this.memoryStream && memories && memories.length > 0) {
|
|
501
|
+
await this.memoryStream.recordObservation(`Successfully routed query to AskQuestionUseCase: ${query}`, {
|
|
502
|
+
query,
|
|
503
|
+
action: 'ask',
|
|
504
|
+
memoriesUsed: memories.length,
|
|
505
|
+
});
|
|
506
|
+
}
|
|
507
|
+
return {
|
|
508
|
+
intent: 'understand',
|
|
509
|
+
action: 'ask',
|
|
510
|
+
result,
|
|
511
|
+
success: result.chunks.length > 0,
|
|
512
|
+
message: result.answer,
|
|
513
|
+
memoriesUsed: memories?.length || 0,
|
|
514
|
+
};
|
|
515
|
+
}
|
|
516
|
+
catch (error) {
|
|
517
|
+
return {
|
|
518
|
+
intent: 'understand',
|
|
519
|
+
action: 'ask',
|
|
520
|
+
result: null,
|
|
521
|
+
success: false,
|
|
522
|
+
error: error instanceof Error ? error.message : String(error),
|
|
523
|
+
memoriesUsed: memories?.length || 0,
|
|
524
|
+
};
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
async handleExplainWithWorkflow(query, symbols, memories) {
|
|
528
|
+
// Try deterministic workflow first (faster, no ReAct overhead)
|
|
529
|
+
try {
|
|
530
|
+
const { container } = await import('./dependency-container.js');
|
|
531
|
+
const { ExplainWorkflow } = await import('../workflows/deterministic-workflows.js');
|
|
532
|
+
// Use per-repo embedding repository for codebase isolation
|
|
533
|
+
const explainWorkflow = new ExplainWorkflow(container.getEmbeddingRepository(process.cwd()), container.aiService);
|
|
534
|
+
const workflowResult = await explainWorkflow.execute(query);
|
|
535
|
+
if (workflowResult.success) {
|
|
536
|
+
return {
|
|
537
|
+
intent: 'explain',
|
|
538
|
+
action: 'explain',
|
|
539
|
+
result: workflowResult.result,
|
|
540
|
+
success: true,
|
|
541
|
+
message: workflowResult.result?.explanation || 'Explanation generated',
|
|
542
|
+
memoriesUsed: memories?.length || 0,
|
|
543
|
+
};
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
catch (error) {
|
|
547
|
+
// Fallback to original implementation if workflow fails
|
|
548
|
+
console.warn('Workflow failed, falling back to standard explain:', error);
|
|
549
|
+
}
|
|
550
|
+
// Fallback to standard explain
|
|
551
|
+
return await this.handleExplain(query, symbols, memories);
|
|
552
|
+
}
|
|
553
|
+
async handleExplain(query, symbols, memories) {
|
|
554
|
+
// Extract filepath from query
|
|
555
|
+
const filepath = this.extractFilepath(query);
|
|
556
|
+
if (!filepath) {
|
|
557
|
+
// No filepath found, treat as ask query
|
|
558
|
+
return await this.handleAsk(query, memories);
|
|
559
|
+
}
|
|
560
|
+
try {
|
|
561
|
+
const { container } = await import('./dependency-container.js');
|
|
562
|
+
const useCase = container.explainFileUseCase;
|
|
563
|
+
const result = await useCase.execute({ filepath });
|
|
564
|
+
// Record successful routing
|
|
565
|
+
if (this.memoryStream && memories && memories.length > 0) {
|
|
566
|
+
await this.memoryStream.recordObservation(`Successfully routed to ExplainFileUseCase: ${query}`, {
|
|
567
|
+
query,
|
|
568
|
+
action: 'explain',
|
|
569
|
+
filepath,
|
|
570
|
+
memoriesUsed: memories.length,
|
|
571
|
+
});
|
|
572
|
+
}
|
|
573
|
+
return {
|
|
574
|
+
intent: 'explain',
|
|
575
|
+
action: 'explain',
|
|
576
|
+
result,
|
|
577
|
+
success: true,
|
|
578
|
+
message: result.explanation,
|
|
579
|
+
memoriesUsed: memories?.length || 0,
|
|
580
|
+
};
|
|
581
|
+
}
|
|
582
|
+
catch (error) {
|
|
583
|
+
return {
|
|
584
|
+
intent: 'explain',
|
|
585
|
+
action: 'explain',
|
|
586
|
+
result: null,
|
|
587
|
+
success: false,
|
|
588
|
+
error: error instanceof Error ? error.message : String(error),
|
|
589
|
+
memoriesUsed: memories?.length || 0,
|
|
590
|
+
};
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
async handleEdit(query, symbols, memories) {
|
|
594
|
+
// Extract filepath and instruction
|
|
595
|
+
let { filepath, instruction } = this.extractEditParams(query);
|
|
596
|
+
// CRITICAL: Fast security check BEFORE any expensive operations (file search, reading, etc.)
|
|
597
|
+
// This prevents wasting time and tokens on dangerous code
|
|
598
|
+
if (instruction) {
|
|
599
|
+
const securityCheck = await this.fastSecurityCheck(instruction);
|
|
600
|
+
if (!securityCheck.allowed) {
|
|
601
|
+
return {
|
|
602
|
+
intent: 'edit',
|
|
603
|
+
action: 'edit',
|
|
604
|
+
result: null,
|
|
605
|
+
success: false,
|
|
606
|
+
error: securityCheck.reason,
|
|
607
|
+
memoriesUsed: memories?.length || 0,
|
|
608
|
+
};
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
console.log(`[IntelligentRouter] Edit query: ${query}`);
|
|
612
|
+
console.log(`[IntelligentRouter] Extracted filepath: ${filepath || 'none'}`);
|
|
613
|
+
console.log(`[IntelligentRouter] Extracted instruction: ${instruction || 'none'}`);
|
|
614
|
+
console.log(`[IntelligentRouter] Symbols found: ${symbols.join(', ')}`);
|
|
615
|
+
// If no filepath found but we have symbols (class/function names), search for the file
|
|
616
|
+
if (!filepath && symbols.length > 0) {
|
|
617
|
+
// Filter out common words and prioritize capitalized names (likely class/function names)
|
|
618
|
+
const meaningfulSymbols = symbols.filter(s => {
|
|
619
|
+
const lower = s.toLowerCase();
|
|
620
|
+
// Exclude common words
|
|
621
|
+
return !['in', 'to', 'the', 'a', 'an', 'and', 'or', 'of', 'for', 'with', 'from'].includes(lower) &&
|
|
622
|
+
s.length > 2; // At least 3 characters
|
|
623
|
+
});
|
|
624
|
+
// Prioritize capitalized names (classes) and camelCase (functions)
|
|
625
|
+
const prioritizedSymbols = meaningfulSymbols.sort((a, b) => {
|
|
626
|
+
const aIsClass = /^[A-Z]/.test(a);
|
|
627
|
+
const bIsClass = /^[A-Z]/.test(b);
|
|
628
|
+
if (aIsClass && !bIsClass)
|
|
629
|
+
return -1;
|
|
630
|
+
if (!aIsClass && bIsClass)
|
|
631
|
+
return 1;
|
|
632
|
+
return b.length - a.length; // Longer names are more specific
|
|
633
|
+
});
|
|
634
|
+
console.log(`[IntelligentRouter] Filtered symbols: ${prioritizedSymbols.join(', ')}`);
|
|
635
|
+
if (prioritizedSymbols.length > 0) {
|
|
636
|
+
console.log(`[IntelligentRouter] Searching for file containing symbol: ${prioritizedSymbols[0]}`);
|
|
637
|
+
filepath = await this.findFileBySymbol(prioritizedSymbols[0], query);
|
|
638
|
+
console.log(`[IntelligentRouter] Found filepath: ${filepath || 'none'}`);
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
if (!filepath || !instruction) {
|
|
642
|
+
console.error(`[IntelligentRouter] Missing filepath or instruction. filepath: ${filepath}, instruction: ${instruction}`);
|
|
643
|
+
return {
|
|
644
|
+
intent: 'edit',
|
|
645
|
+
action: 'edit',
|
|
646
|
+
result: null,
|
|
647
|
+
success: false,
|
|
648
|
+
error: 'Could not extract filepath and instruction from query. Format: "edit <file> <instruction>" or "fix <file> <what to fix>" or mention the class/function name',
|
|
649
|
+
memoriesUsed: memories?.length || 0,
|
|
650
|
+
};
|
|
651
|
+
}
|
|
652
|
+
console.log(`[IntelligentRouter] Proceeding with edit: ${filepath} - ${instruction}`);
|
|
653
|
+
try {
|
|
654
|
+
const { container } = await import('./dependency-container.js');
|
|
655
|
+
const useCase = container.editFileUseCase;
|
|
656
|
+
const result = await useCase.execute({ filepath, instruction });
|
|
657
|
+
// Record successful routing
|
|
658
|
+
if (this.memoryStream && memories && memories.length > 0) {
|
|
659
|
+
await this.memoryStream.recordObservation(`Successfully routed to EditFileUseCase: ${query}`, {
|
|
660
|
+
query,
|
|
661
|
+
action: 'edit',
|
|
662
|
+
filepath,
|
|
663
|
+
memoriesUsed: memories.length,
|
|
664
|
+
success: result.success,
|
|
665
|
+
});
|
|
666
|
+
}
|
|
667
|
+
return {
|
|
668
|
+
intent: 'edit',
|
|
669
|
+
action: 'edit',
|
|
670
|
+
result,
|
|
671
|
+
success: result.success,
|
|
672
|
+
message: result.success ? 'Edit applied successfully' : result.error,
|
|
673
|
+
error: result.error,
|
|
674
|
+
memoriesUsed: memories?.length || 0,
|
|
675
|
+
};
|
|
676
|
+
}
|
|
677
|
+
catch (error) {
|
|
678
|
+
return {
|
|
679
|
+
intent: 'edit',
|
|
680
|
+
action: 'edit',
|
|
681
|
+
result: null,
|
|
682
|
+
success: false,
|
|
683
|
+
error: error instanceof Error ? error.message : String(error),
|
|
684
|
+
memoriesUsed: memories?.length || 0,
|
|
685
|
+
};
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
async handleReAct(query, memories) {
|
|
689
|
+
try {
|
|
690
|
+
const { container } = await import('./dependency-container.js');
|
|
691
|
+
const useCase = container.reactOrchestrationUseCase;
|
|
692
|
+
// Pass memories to ReAct for context
|
|
693
|
+
const result = await useCase.execute({
|
|
694
|
+
query,
|
|
695
|
+
maxTurns: 15,
|
|
696
|
+
context: {
|
|
697
|
+
memories: memories || [],
|
|
698
|
+
},
|
|
699
|
+
});
|
|
700
|
+
// Record successful routing
|
|
701
|
+
if (this.memoryStream && memories && memories.length > 0) {
|
|
702
|
+
await this.memoryStream.recordObservation(`Successfully routed complex query to ReAct: ${query}`, {
|
|
703
|
+
query,
|
|
704
|
+
action: 'react',
|
|
705
|
+
memoriesUsed: memories.length,
|
|
706
|
+
steps: result.trajectory.steps.length,
|
|
707
|
+
});
|
|
708
|
+
}
|
|
709
|
+
return {
|
|
710
|
+
intent: 'general',
|
|
711
|
+
action: 'react',
|
|
712
|
+
result,
|
|
713
|
+
success: result.trajectory.success,
|
|
714
|
+
message: result.answer,
|
|
715
|
+
memoriesUsed: memories?.length || 0,
|
|
716
|
+
};
|
|
717
|
+
}
|
|
718
|
+
catch (error) {
|
|
719
|
+
return {
|
|
720
|
+
intent: 'general',
|
|
721
|
+
action: 'react',
|
|
722
|
+
result: null,
|
|
723
|
+
success: false,
|
|
724
|
+
error: error instanceof Error ? error.message : String(error),
|
|
725
|
+
memoriesUsed: memories?.length || 0,
|
|
726
|
+
};
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
async handleIndex(query) {
|
|
730
|
+
return {
|
|
731
|
+
intent: 'index',
|
|
732
|
+
action: 'index',
|
|
733
|
+
result: { message: 'Use "codehere index" command to index the codebase' },
|
|
734
|
+
success: false,
|
|
735
|
+
message: 'To index the codebase, run: codehere index',
|
|
736
|
+
};
|
|
737
|
+
}
|
|
738
|
+
async handlePlan(query, memories) {
|
|
739
|
+
try {
|
|
740
|
+
const { container } = await import('./dependency-container.js');
|
|
741
|
+
const useCase = container.planningUseCase;
|
|
742
|
+
const result = await useCase.execute({
|
|
743
|
+
goal: query,
|
|
744
|
+
planningMode: 'hybrid',
|
|
745
|
+
context: {
|
|
746
|
+
// Pass memories for planning context
|
|
747
|
+
},
|
|
748
|
+
});
|
|
749
|
+
// Record successful planning
|
|
750
|
+
if (this.memoryStream && memories && memories.length > 0) {
|
|
751
|
+
await this.memoryStream.recordObservation(`Successfully routed to Planning Module: ${query}`, {
|
|
752
|
+
query,
|
|
753
|
+
action: 'plan',
|
|
754
|
+
memoriesUsed: memories.length,
|
|
755
|
+
subPlans: result.plan.subPlans.length,
|
|
756
|
+
});
|
|
757
|
+
}
|
|
758
|
+
return {
|
|
759
|
+
intent: 'plan',
|
|
760
|
+
action: 'plan',
|
|
761
|
+
result,
|
|
762
|
+
success: true,
|
|
763
|
+
message: `Plan created with ${result.plan.subPlans.length} sub-plans`,
|
|
764
|
+
memoriesUsed: memories?.length || 0,
|
|
765
|
+
};
|
|
766
|
+
}
|
|
767
|
+
catch (error) {
|
|
768
|
+
return {
|
|
769
|
+
intent: 'plan',
|
|
770
|
+
action: 'plan',
|
|
771
|
+
result: null,
|
|
772
|
+
success: false,
|
|
773
|
+
error: error instanceof Error ? error.message : String(error),
|
|
774
|
+
memoriesUsed: memories?.length || 0,
|
|
775
|
+
};
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
async handleOrchestrate(query, memories) {
|
|
779
|
+
try {
|
|
780
|
+
const { container } = await import('./dependency-container.js');
|
|
781
|
+
const orchestrator = container.multiAgentOrchestrator;
|
|
782
|
+
const result = await orchestrator.orchestrate({
|
|
783
|
+
goal: query,
|
|
784
|
+
mode: 'full', // Plan + Execute + Validate
|
|
785
|
+
context: {
|
|
786
|
+
// Pass memories context if needed
|
|
787
|
+
},
|
|
788
|
+
});
|
|
789
|
+
// Record successful orchestration
|
|
790
|
+
if (this.memoryStream && memories && memories.length > 0) {
|
|
791
|
+
await this.memoryStream.recordObservation(`Successfully routed compound instruction to Orchestrator: ${query}`, {
|
|
792
|
+
query,
|
|
793
|
+
action: 'orchestrate',
|
|
794
|
+
memoriesUsed: memories.length,
|
|
795
|
+
planSubPlans: result.plan?.subPlans.length || 0,
|
|
796
|
+
executionCompleted: result.execution?.completedSubPlans || 0,
|
|
797
|
+
});
|
|
798
|
+
}
|
|
799
|
+
return {
|
|
800
|
+
intent: 'plan',
|
|
801
|
+
action: 'plan',
|
|
802
|
+
result,
|
|
803
|
+
success: result.success,
|
|
804
|
+
message: result.message,
|
|
805
|
+
error: result.success ? undefined : result.message,
|
|
806
|
+
memoriesUsed: memories?.length || 0,
|
|
807
|
+
};
|
|
808
|
+
}
|
|
809
|
+
catch (error) {
|
|
810
|
+
return {
|
|
811
|
+
intent: 'plan',
|
|
812
|
+
action: 'plan',
|
|
813
|
+
result: null,
|
|
814
|
+
success: false,
|
|
815
|
+
error: error instanceof Error ? error.message : String(error),
|
|
816
|
+
memoriesUsed: memories?.length || 0,
|
|
817
|
+
};
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
extractFilepath(query) {
|
|
821
|
+
// Look for file paths in query
|
|
822
|
+
const patterns = [
|
|
823
|
+
/(?:file|in|from|at)\s+([^\s]+\.(ts|js|tsx|jsx|py|java|cpp|go|rs|rb|php|vue|svelte|html|css|json|yaml|yml|md|txt|sh|bash))/i,
|
|
824
|
+
/([a-zA-Z0-9_\-/]+\.(ts|js|tsx|jsx|py|java|cpp|go|rs|rb|php|vue|svelte|html|css|json|yaml|yml|md|txt|sh|bash))/,
|
|
825
|
+
/src\/[^\s]+/,
|
|
826
|
+
/\.\/[^\s]+/,
|
|
827
|
+
];
|
|
828
|
+
for (const pattern of patterns) {
|
|
829
|
+
const match = query.match(pattern);
|
|
830
|
+
if (match) {
|
|
831
|
+
return match[1] || match[0];
|
|
832
|
+
}
|
|
833
|
+
}
|
|
834
|
+
return null;
|
|
835
|
+
}
|
|
836
|
+
extractEditParams(query) {
|
|
837
|
+
const filepath = this.extractFilepath(query);
|
|
838
|
+
if (!filepath) {
|
|
839
|
+
return { filepath: null, instruction: query };
|
|
840
|
+
}
|
|
841
|
+
// Remove filepath from query to get instruction
|
|
842
|
+
const instruction = query
|
|
843
|
+
.replace(new RegExp(filepath.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gi'), '')
|
|
844
|
+
.replace(/(?:edit|fix|modify|change|update|add to|remove from)\s+/i, '')
|
|
845
|
+
.trim();
|
|
846
|
+
return { filepath, instruction: instruction || 'Make the requested changes' };
|
|
847
|
+
}
|
|
848
|
+
isComplexQuery(query) {
|
|
849
|
+
const lower = query.toLowerCase();
|
|
850
|
+
// Complex if it requires multiple steps
|
|
851
|
+
const complexIndicators = [
|
|
852
|
+
'and then',
|
|
853
|
+
'after that',
|
|
854
|
+
'also',
|
|
855
|
+
'multiple',
|
|
856
|
+
'several',
|
|
857
|
+
'steps',
|
|
858
|
+
'first',
|
|
859
|
+
'second',
|
|
860
|
+
'finally',
|
|
861
|
+
'create',
|
|
862
|
+
'build',
|
|
863
|
+
'implement',
|
|
864
|
+
'refactor',
|
|
865
|
+
];
|
|
866
|
+
return complexIndicators.some(indicator => lower.includes(indicator)) ||
|
|
867
|
+
query.split(' ').length > 15; // Long queries are likely complex
|
|
868
|
+
}
|
|
869
|
+
/**
|
|
870
|
+
* Fast security check using pattern matching (before expensive operations)
|
|
871
|
+
* Synchronous pattern matching - instant rejection for dangerous patterns
|
|
872
|
+
*/
|
|
873
|
+
fastSecurityCheck(query) {
|
|
874
|
+
// Fast pattern-based check for obvious security issues (synchronous, no API calls)
|
|
875
|
+
const lower = query.toLowerCase();
|
|
876
|
+
// Dangerous patterns that should be blocked immediately
|
|
877
|
+
const dangerousPatterns = [
|
|
878
|
+
{ pattern: /execute.*user.*input|eval.*user|exec.*user/i, reason: 'Security vulnerabilities detected: 1 critical, 0 high severity findings. Review and fix before applying.' },
|
|
879
|
+
{ pattern: /shell.*command|system.*call|process\.exec/i, reason: 'Security vulnerabilities detected: 1 critical, 0 high severity findings. Review and fix before applying.' },
|
|
880
|
+
{ pattern: /bypass.*security|disable.*security|remove.*validation/i, reason: 'Security vulnerabilities detected: 1 critical, 0 high severity findings. Review and fix before applying.' },
|
|
881
|
+
{ pattern: /hardcode.*password|store.*password.*plaintext|plaintext.*password/i, reason: 'Security vulnerabilities detected: 0 critical, 1 high severity findings. Review and fix before applying.' },
|
|
882
|
+
];
|
|
883
|
+
for (const { pattern, reason } of dangerousPatterns) {
|
|
884
|
+
if (pattern.test(query)) {
|
|
885
|
+
return { allowed: false, reason };
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
return { allowed: true };
|
|
889
|
+
}
|
|
890
|
+
/**
|
|
891
|
+
* Find file containing a symbol (class/function name)
|
|
892
|
+
* Uses search to locate the file
|
|
893
|
+
*/
|
|
894
|
+
async findFileBySymbol(symbol, query) {
|
|
895
|
+
try {
|
|
896
|
+
console.log(`[IntelligentRouter] Searching for symbol: ${symbol}`);
|
|
897
|
+
const { container } = await import('./dependency-container.js');
|
|
898
|
+
const useCase = container.askQuestionUseCase;
|
|
899
|
+
// Search for the symbol - try multiple query variations
|
|
900
|
+
const searchQueries = [
|
|
901
|
+
`Find ${symbol}`,
|
|
902
|
+
`file containing ${symbol}`,
|
|
903
|
+
`Where is ${symbol} defined`,
|
|
904
|
+
`${symbol} class or function`,
|
|
905
|
+
];
|
|
906
|
+
for (const searchQuery of searchQueries) {
|
|
907
|
+
console.log(`[IntelligentRouter] Trying search query: ${searchQuery}`);
|
|
908
|
+
const result = await useCase.execute({ query: searchQuery, maxResults: 5 });
|
|
909
|
+
// Look for filepath in results
|
|
910
|
+
if (result.chunks && result.chunks.length > 0) {
|
|
911
|
+
// Get the most relevant chunk
|
|
912
|
+
const topChunk = result.chunks[0];
|
|
913
|
+
if (topChunk && topChunk.filepath) {
|
|
914
|
+
// Convert absolute path to relative if needed
|
|
915
|
+
let filepath = topChunk.filepath;
|
|
916
|
+
const cwd = process.cwd();
|
|
917
|
+
if (filepath.startsWith(cwd)) {
|
|
918
|
+
filepath = filepath.substring(cwd.length + 1); // Remove leading slash
|
|
919
|
+
}
|
|
920
|
+
console.log(`[IntelligentRouter] Found filepath from search: ${filepath}`);
|
|
921
|
+
return filepath;
|
|
922
|
+
}
|
|
923
|
+
}
|
|
924
|
+
// Also check answer for filepath mentions
|
|
925
|
+
if (result.answer) {
|
|
926
|
+
const filepathMatch = result.answer.match(/([^\s]+\.(ts|js|tsx|jsx|py|java|cpp|go|rs|rb|php|vue|svelte|html|css|json|yaml|yml|md|txt|sh|bash))/);
|
|
927
|
+
if (filepathMatch) {
|
|
928
|
+
console.log(`[IntelligentRouter] Found filepath from answer: ${filepathMatch[1]}`);
|
|
929
|
+
return filepathMatch[1];
|
|
930
|
+
}
|
|
931
|
+
}
|
|
932
|
+
}
|
|
933
|
+
console.warn(`[IntelligentRouter] Could not find file for symbol: ${symbol}`);
|
|
934
|
+
return null;
|
|
935
|
+
}
|
|
936
|
+
catch (error) {
|
|
937
|
+
console.error(`[IntelligentRouter] Failed to find file by symbol:`, error);
|
|
938
|
+
return null;
|
|
939
|
+
}
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
//# sourceMappingURL=intelligent-router.js.map
|