codehere 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of codehere might be problematic. Click here for more details.

Files changed (603) hide show
  1. package/README.md +51 -25
  2. package/dist/agents/base.d.ts +107 -0
  3. package/dist/agents/base.d.ts.map +1 -0
  4. package/dist/agents/base.js +101 -0
  5. package/dist/agents/base.js.map +1 -0
  6. package/dist/agents/orchestrator-model-driven.d.ts +41 -0
  7. package/dist/agents/orchestrator-model-driven.d.ts.map +1 -0
  8. package/dist/agents/orchestrator-model-driven.js +141 -0
  9. package/dist/agents/orchestrator-model-driven.js.map +1 -0
  10. package/dist/agents/react-orchestrator-agent.d.ts +15 -0
  11. package/dist/agents/react-orchestrator-agent.d.ts.map +1 -0
  12. package/dist/agents/react-orchestrator-agent.js +54 -0
  13. package/dist/agents/react-orchestrator-agent.js.map +1 -0
  14. package/dist/application/agents/execution-agent.d.ts +68 -0
  15. package/dist/application/agents/execution-agent.d.ts.map +1 -0
  16. package/dist/application/agents/execution-agent.js +299 -0
  17. package/dist/application/agents/execution-agent.js.map +1 -0
  18. package/dist/application/agents/multi-agent-orchestrator.d.ts +64 -0
  19. package/dist/application/agents/multi-agent-orchestrator.d.ts.map +1 -0
  20. package/dist/application/agents/multi-agent-orchestrator.js +209 -0
  21. package/dist/application/agents/multi-agent-orchestrator.js.map +1 -0
  22. package/dist/application/agents/planning-agent.d.ts +61 -0
  23. package/dist/application/agents/planning-agent.d.ts.map +1 -0
  24. package/dist/application/agents/planning-agent.js +357 -0
  25. package/dist/application/agents/planning-agent.js.map +1 -0
  26. package/dist/application/agents/validation-agent.d.ts +64 -0
  27. package/dist/application/agents/validation-agent.d.ts.map +1 -0
  28. package/dist/application/agents/validation-agent.js +182 -0
  29. package/dist/application/agents/validation-agent.js.map +1 -0
  30. package/dist/application/architectures/plan-and-act.d.ts +94 -0
  31. package/dist/application/architectures/plan-and-act.d.ts.map +1 -0
  32. package/dist/application/architectures/plan-and-act.js +242 -0
  33. package/dist/application/architectures/plan-and-act.js.map +1 -0
  34. package/dist/application/index.d.ts +12 -0
  35. package/dist/application/index.d.ts.map +1 -0
  36. package/dist/application/index.js +12 -0
  37. package/dist/application/index.js.map +1 -0
  38. package/dist/application/services/agent-factory.d.ts +9 -0
  39. package/dist/application/services/agent-factory.d.ts.map +1 -0
  40. package/dist/application/services/agent-factory.js +28 -0
  41. package/dist/application/services/agent-factory.js.map +1 -0
  42. package/dist/application/services/dependency-container.d.ts +140 -0
  43. package/dist/application/services/dependency-container.d.ts.map +1 -0
  44. package/dist/application/services/dependency-container.js +402 -0
  45. package/dist/application/services/dependency-container.js.map +1 -0
  46. package/dist/application/services/git-context-service.d.ts +30 -0
  47. package/dist/application/services/git-context-service.d.ts.map +1 -0
  48. package/dist/application/services/git-context-service.js +83 -0
  49. package/dist/application/services/git-context-service.js.map +1 -0
  50. package/dist/application/services/intelligent-router.d.ts +74 -0
  51. package/dist/application/services/intelligent-router.d.ts.map +1 -0
  52. package/dist/application/services/intelligent-router.js +711 -0
  53. package/dist/application/services/intelligent-router.js.map +1 -0
  54. package/dist/application/services/tool-executor-service.d.ts +14 -0
  55. package/dist/application/services/tool-executor-service.d.ts.map +1 -0
  56. package/dist/application/services/tool-executor-service.js +94 -0
  57. package/dist/application/services/tool-executor-service.js.map +1 -0
  58. package/dist/application/use-cases/ask-question-use-case.d.ts +36 -0
  59. package/dist/application/use-cases/ask-question-use-case.d.ts.map +1 -0
  60. package/dist/application/use-cases/ask-question-use-case.js +150 -0
  61. package/dist/application/use-cases/ask-question-use-case.js.map +1 -0
  62. package/dist/application/use-cases/edit-file-use-case.d.ts +76 -0
  63. package/dist/application/use-cases/edit-file-use-case.d.ts.map +1 -0
  64. package/dist/application/use-cases/edit-file-use-case.js +685 -0
  65. package/dist/application/use-cases/edit-file-use-case.js.map +1 -0
  66. package/dist/application/use-cases/explain-file-use-case.d.ts +21 -0
  67. package/dist/application/use-cases/explain-file-use-case.d.ts.map +1 -0
  68. package/dist/application/use-cases/explain-file-use-case.js +50 -0
  69. package/dist/application/use-cases/explain-file-use-case.js.map +1 -0
  70. package/dist/application/use-cases/index-codebase-use-case.d.ts +46 -0
  71. package/dist/application/use-cases/index-codebase-use-case.d.ts.map +1 -0
  72. package/dist/application/use-cases/index-codebase-use-case.js +113 -0
  73. package/dist/application/use-cases/index-codebase-use-case.js.map +1 -0
  74. package/dist/application/use-cases/planning-use-case.d.ts +46 -0
  75. package/dist/application/use-cases/planning-use-case.d.ts.map +1 -0
  76. package/dist/application/use-cases/planning-use-case.js +267 -0
  77. package/dist/application/use-cases/planning-use-case.js.map +1 -0
  78. package/dist/application/use-cases/react-orchestration-use-case.d.ts +51 -0
  79. package/dist/application/use-cases/react-orchestration-use-case.d.ts.map +1 -0
  80. package/dist/application/use-cases/react-orchestration-use-case.js +325 -0
  81. package/dist/application/use-cases/react-orchestration-use-case.js.map +1 -0
  82. package/dist/application/use-cases/reflexion-use-case.d.ts +24 -0
  83. package/dist/application/use-cases/reflexion-use-case.d.ts.map +1 -0
  84. package/dist/application/use-cases/reflexion-use-case.js +30 -0
  85. package/dist/application/use-cases/reflexion-use-case.js.map +1 -0
  86. package/dist/application/workflows/deterministic-workflows.d.ts +61 -0
  87. package/dist/application/workflows/deterministic-workflows.d.ts.map +1 -0
  88. package/dist/application/workflows/deterministic-workflows.js +189 -0
  89. package/dist/application/workflows/deterministic-workflows.js.map +1 -0
  90. package/dist/cache.d.ts.map +1 -1
  91. package/dist/cache.js +1 -3
  92. package/dist/cache.js.map +1 -1
  93. package/dist/chat.js +10 -10
  94. package/dist/chat.js.map +1 -1
  95. package/dist/docs.d.ts.map +1 -1
  96. package/dist/docs.js +1 -2
  97. package/dist/docs.js.map +1 -1
  98. package/dist/domain/entities/code-chunk.d.ts +26 -0
  99. package/dist/domain/entities/code-chunk.d.ts.map +1 -0
  100. package/dist/domain/entities/code-chunk.js +6 -0
  101. package/dist/domain/entities/code-chunk.js.map +1 -0
  102. package/dist/domain/entities/decision.d.ts +37 -0
  103. package/dist/domain/entities/decision.d.ts.map +1 -0
  104. package/dist/domain/entities/decision.js +9 -0
  105. package/dist/domain/entities/decision.js.map +1 -0
  106. package/dist/domain/entities/edit.d.ts +35 -0
  107. package/dist/domain/entities/edit.d.ts.map +1 -0
  108. package/dist/domain/entities/edit.js +6 -0
  109. package/dist/domain/entities/edit.js.map +1 -0
  110. package/dist/domain/entities/knowledge-node.d.ts +83 -0
  111. package/dist/domain/entities/knowledge-node.d.ts.map +1 -0
  112. package/dist/domain/entities/knowledge-node.js +9 -0
  113. package/dist/domain/entities/knowledge-node.js.map +1 -0
  114. package/dist/domain/entities/knowledge-preservation.d.ts +42 -0
  115. package/dist/domain/entities/knowledge-preservation.d.ts.map +1 -0
  116. package/dist/domain/entities/knowledge-preservation.js +10 -0
  117. package/dist/domain/entities/knowledge-preservation.js.map +1 -0
  118. package/dist/domain/entities/memory.d.ts +36 -0
  119. package/dist/domain/entities/memory.d.ts.map +1 -0
  120. package/dist/domain/entities/memory.js +6 -0
  121. package/dist/domain/entities/memory.js.map +1 -0
  122. package/dist/domain/entities/pattern.d.ts +49 -0
  123. package/dist/domain/entities/pattern.d.ts.map +1 -0
  124. package/dist/domain/entities/pattern.js +7 -0
  125. package/dist/domain/entities/pattern.js.map +1 -0
  126. package/dist/domain/entities/plan.d.ts +42 -0
  127. package/dist/domain/entities/plan.d.ts.map +1 -0
  128. package/dist/domain/entities/plan.js +6 -0
  129. package/dist/domain/entities/plan.js.map +1 -0
  130. package/dist/domain/entities/query.d.ts +17 -0
  131. package/dist/domain/entities/query.d.ts.map +1 -0
  132. package/dist/domain/entities/query.js +6 -0
  133. package/dist/domain/entities/query.js.map +1 -0
  134. package/dist/domain/index.d.ts +16 -0
  135. package/dist/domain/index.d.ts.map +1 -0
  136. package/dist/domain/index.js +19 -0
  137. package/dist/domain/index.js.map +1 -0
  138. package/dist/domain/interfaces/ai-service.interface.d.ts +62 -0
  139. package/dist/domain/interfaces/ai-service.interface.d.ts.map +1 -0
  140. package/dist/domain/interfaces/ai-service.interface.js +6 -0
  141. package/dist/domain/interfaces/ai-service.interface.js.map +1 -0
  142. package/dist/domain/interfaces/code-analyzer.interface.d.ts +38 -0
  143. package/dist/domain/interfaces/code-analyzer.interface.d.ts.map +1 -0
  144. package/dist/domain/interfaces/code-analyzer.interface.js +6 -0
  145. package/dist/domain/interfaces/code-analyzer.interface.js.map +1 -0
  146. package/dist/domain/interfaces/decision-repository.interface.d.ts +51 -0
  147. package/dist/domain/interfaces/decision-repository.interface.d.ts.map +1 -0
  148. package/dist/domain/interfaces/decision-repository.interface.js +9 -0
  149. package/dist/domain/interfaces/decision-repository.interface.js.map +1 -0
  150. package/dist/domain/interfaces/embedding-repository.interface.d.ts +28 -0
  151. package/dist/domain/interfaces/embedding-repository.interface.d.ts.map +1 -0
  152. package/dist/domain/interfaces/embedding-repository.interface.js +6 -0
  153. package/dist/domain/interfaces/embedding-repository.interface.js.map +1 -0
  154. package/dist/domain/interfaces/knowledge-graph-repository.interface.d.ts +91 -0
  155. package/dist/domain/interfaces/knowledge-graph-repository.interface.d.ts.map +1 -0
  156. package/dist/domain/interfaces/knowledge-graph-repository.interface.js +9 -0
  157. package/dist/domain/interfaces/knowledge-graph-repository.interface.js.map +1 -0
  158. package/dist/domain/interfaces/knowledge-preservation-repository.interface.d.ts +50 -0
  159. package/dist/domain/interfaces/knowledge-preservation-repository.interface.d.ts.map +1 -0
  160. package/dist/domain/interfaces/knowledge-preservation-repository.interface.js +8 -0
  161. package/dist/domain/interfaces/knowledge-preservation-repository.interface.js.map +1 -0
  162. package/dist/domain/interfaces/memory-repository.interface.d.ts +49 -0
  163. package/dist/domain/interfaces/memory-repository.interface.d.ts.map +1 -0
  164. package/dist/domain/interfaces/memory-repository.interface.js +6 -0
  165. package/dist/domain/interfaces/memory-repository.interface.js.map +1 -0
  166. package/dist/domain/interfaces/pattern-repository.interface.d.ts +48 -0
  167. package/dist/domain/interfaces/pattern-repository.interface.d.ts.map +1 -0
  168. package/dist/domain/interfaces/pattern-repository.interface.js +6 -0
  169. package/dist/domain/interfaces/pattern-repository.interface.js.map +1 -0
  170. package/dist/domain/interfaces/verification-service.interface.d.ts +20 -0
  171. package/dist/domain/interfaces/verification-service.interface.d.ts.map +1 -0
  172. package/dist/domain/interfaces/verification-service.interface.js +6 -0
  173. package/dist/domain/interfaces/verification-service.interface.js.map +1 -0
  174. package/dist/domain/services/codebase-detector.d.ts +18 -0
  175. package/dist/domain/services/codebase-detector.d.ts.map +1 -0
  176. package/dist/domain/services/codebase-detector.js +91 -0
  177. package/dist/domain/services/codebase-detector.js.map +1 -0
  178. package/dist/domain/services/cross-team-pattern-sharing.d.ts +65 -0
  179. package/dist/domain/services/cross-team-pattern-sharing.d.ts.map +1 -0
  180. package/dist/domain/services/cross-team-pattern-sharing.js +125 -0
  181. package/dist/domain/services/cross-team-pattern-sharing.js.map +1 -0
  182. package/dist/domain/services/decision-recorder.d.ts +76 -0
  183. package/dist/domain/services/decision-recorder.d.ts.map +1 -0
  184. package/dist/domain/services/decision-recorder.js +223 -0
  185. package/dist/domain/services/decision-recorder.js.map +1 -0
  186. package/dist/domain/services/decision-retriever.d.ts +75 -0
  187. package/dist/domain/services/decision-retriever.d.ts.map +1 -0
  188. package/dist/domain/services/decision-retriever.js +133 -0
  189. package/dist/domain/services/decision-retriever.js.map +1 -0
  190. package/dist/domain/services/graded-memory-activation.d.ts +37 -0
  191. package/dist/domain/services/graded-memory-activation.d.ts.map +1 -0
  192. package/dist/domain/services/graded-memory-activation.js +69 -0
  193. package/dist/domain/services/graded-memory-activation.js.map +1 -0
  194. package/dist/domain/services/knowledge-access.d.ts +63 -0
  195. package/dist/domain/services/knowledge-access.d.ts.map +1 -0
  196. package/dist/domain/services/knowledge-access.js +132 -0
  197. package/dist/domain/services/knowledge-access.js.map +1 -0
  198. package/dist/domain/services/knowledge-extractor.d.ts +54 -0
  199. package/dist/domain/services/knowledge-extractor.d.ts.map +1 -0
  200. package/dist/domain/services/knowledge-extractor.js +247 -0
  201. package/dist/domain/services/knowledge-extractor.js.map +1 -0
  202. package/dist/domain/services/knowledge-graph-builder.d.ts +70 -0
  203. package/dist/domain/services/knowledge-graph-builder.d.ts.map +1 -0
  204. package/dist/domain/services/knowledge-graph-builder.js +268 -0
  205. package/dist/domain/services/knowledge-graph-builder.js.map +1 -0
  206. package/dist/domain/services/knowledge-graph-query.d.ts +69 -0
  207. package/dist/domain/services/knowledge-graph-query.d.ts.map +1 -0
  208. package/dist/domain/services/knowledge-graph-query.js +187 -0
  209. package/dist/domain/services/knowledge-graph-query.js.map +1 -0
  210. package/dist/domain/services/memory-retriever.d.ts +30 -0
  211. package/dist/domain/services/memory-retriever.d.ts.map +1 -0
  212. package/dist/domain/services/memory-retriever.js +82 -0
  213. package/dist/domain/services/memory-retriever.js.map +1 -0
  214. package/dist/domain/services/memory-synthesizer.d.ts +57 -0
  215. package/dist/domain/services/memory-synthesizer.d.ts.map +1 -0
  216. package/dist/domain/services/memory-synthesizer.js +91 -0
  217. package/dist/domain/services/memory-synthesizer.js.map +1 -0
  218. package/dist/domain/services/pattern-extractor.d.ts +108 -0
  219. package/dist/domain/services/pattern-extractor.d.ts.map +1 -0
  220. package/dist/domain/services/pattern-extractor.js +442 -0
  221. package/dist/domain/services/pattern-extractor.js.map +1 -0
  222. package/dist/domain/services/query-intent-classifier.d.ts +16 -0
  223. package/dist/domain/services/query-intent-classifier.d.ts.map +1 -0
  224. package/dist/domain/services/query-intent-classifier.js +140 -0
  225. package/dist/domain/services/query-intent-classifier.js.map +1 -0
  226. package/dist/domain/services/react-loop.d.ts +44 -0
  227. package/dist/domain/services/react-loop.d.ts.map +1 -0
  228. package/dist/domain/services/react-loop.js +110 -0
  229. package/dist/domain/services/react-loop.js.map +1 -0
  230. package/dist/edit.d.ts +0 -12
  231. package/dist/edit.d.ts.map +1 -1
  232. package/dist/edit.js +76 -351
  233. package/dist/edit.js.map +1 -1
  234. package/dist/embed.d.ts +0 -4
  235. package/dist/embed.d.ts.map +1 -1
  236. package/dist/embed.js +100 -174
  237. package/dist/embed.js.map +1 -1
  238. package/dist/error-handler.d.ts +1 -0
  239. package/dist/error-handler.d.ts.map +1 -1
  240. package/dist/error-handler.js +46 -3
  241. package/dist/error-handler.js.map +1 -1
  242. package/dist/index.js +228 -231
  243. package/dist/index.js.map +1 -1
  244. package/dist/infrastructure/ai/cohere-ai-service.d.ts +54 -0
  245. package/dist/infrastructure/ai/cohere-ai-service.d.ts.map +1 -0
  246. package/dist/infrastructure/ai/cohere-ai-service.js +547 -0
  247. package/dist/infrastructure/ai/cohere-ai-service.js.map +1 -0
  248. package/dist/infrastructure/ai/command-r-evaluation.d.ts +42 -0
  249. package/dist/infrastructure/ai/command-r-evaluation.d.ts.map +1 -0
  250. package/dist/infrastructure/ai/command-r-evaluation.js +206 -0
  251. package/dist/infrastructure/ai/command-r-evaluation.js.map +1 -0
  252. package/dist/infrastructure/ai/model-config.d.ts +47 -0
  253. package/dist/infrastructure/ai/model-config.d.ts.map +1 -0
  254. package/dist/infrastructure/ai/model-config.js +84 -0
  255. package/dist/infrastructure/ai/model-config.js.map +1 -0
  256. package/dist/infrastructure/cache/embedding-cache.d.ts +46 -0
  257. package/dist/infrastructure/cache/embedding-cache.d.ts.map +1 -0
  258. package/dist/infrastructure/cache/embedding-cache.js +104 -0
  259. package/dist/infrastructure/cache/embedding-cache.js.map +1 -0
  260. package/dist/infrastructure/chunking/ast-code-chunker.d.ts +12 -0
  261. package/dist/infrastructure/chunking/ast-code-chunker.d.ts.map +1 -0
  262. package/dist/infrastructure/chunking/ast-code-chunker.js +19 -0
  263. package/dist/infrastructure/chunking/ast-code-chunker.js.map +1 -0
  264. package/dist/infrastructure/chunking/code-aware-chunker.d.ts +63 -0
  265. package/dist/infrastructure/chunking/code-aware-chunker.d.ts.map +1 -0
  266. package/dist/infrastructure/chunking/code-aware-chunker.js +397 -0
  267. package/dist/infrastructure/chunking/code-aware-chunker.js.map +1 -0
  268. package/dist/infrastructure/config/config-manager.d.ts +79 -0
  269. package/dist/infrastructure/config/config-manager.d.ts.map +1 -0
  270. package/dist/infrastructure/config/config-manager.js +162 -0
  271. package/dist/infrastructure/config/config-manager.js.map +1 -0
  272. package/dist/infrastructure/cost/cost-tracker.d.ts +90 -0
  273. package/dist/infrastructure/cost/cost-tracker.d.ts.map +1 -0
  274. package/dist/infrastructure/cost/cost-tracker.js +353 -0
  275. package/dist/infrastructure/cost/cost-tracker.js.map +1 -0
  276. package/dist/infrastructure/file-scanner/file-scanner.d.ts +31 -0
  277. package/dist/infrastructure/file-scanner/file-scanner.d.ts.map +1 -0
  278. package/dist/infrastructure/file-scanner/file-scanner.js +106 -0
  279. package/dist/infrastructure/file-scanner/file-scanner.js.map +1 -0
  280. package/dist/infrastructure/governance/nist-ai-rmf.d.ts +107 -0
  281. package/dist/infrastructure/governance/nist-ai-rmf.d.ts.map +1 -0
  282. package/dist/infrastructure/governance/nist-ai-rmf.js +294 -0
  283. package/dist/infrastructure/governance/nist-ai-rmf.js.map +1 -0
  284. package/dist/infrastructure/governance/policy-as-code.d.ts +90 -0
  285. package/dist/infrastructure/governance/policy-as-code.d.ts.map +1 -0
  286. package/dist/infrastructure/governance/policy-as-code.js +244 -0
  287. package/dist/infrastructure/governance/policy-as-code.js.map +1 -0
  288. package/dist/infrastructure/governance/prompt-to-code-lineage.d.ts +138 -0
  289. package/dist/infrastructure/governance/prompt-to-code-lineage.d.ts.map +1 -0
  290. package/dist/infrastructure/governance/prompt-to-code-lineage.js +241 -0
  291. package/dist/infrastructure/governance/prompt-to-code-lineage.js.map +1 -0
  292. package/dist/infrastructure/index.d.ts +7 -0
  293. package/dist/infrastructure/index.d.ts.map +1 -0
  294. package/dist/infrastructure/index.js +7 -0
  295. package/dist/infrastructure/index.js.map +1 -0
  296. package/dist/infrastructure/observability/execution-tracer.d.ts +105 -0
  297. package/dist/infrastructure/observability/execution-tracer.d.ts.map +1 -0
  298. package/dist/infrastructure/observability/execution-tracer.js +190 -0
  299. package/dist/infrastructure/observability/execution-tracer.js.map +1 -0
  300. package/dist/infrastructure/observability/prompt-versioner.d.ts +67 -0
  301. package/dist/infrastructure/observability/prompt-versioner.d.ts.map +1 -0
  302. package/dist/infrastructure/observability/prompt-versioner.js +145 -0
  303. package/dist/infrastructure/observability/prompt-versioner.js.map +1 -0
  304. package/dist/infrastructure/protocols/a2a-metadata.d.ts +278 -0
  305. package/dist/infrastructure/protocols/a2a-metadata.d.ts.map +1 -0
  306. package/dist/infrastructure/protocols/a2a-metadata.js +137 -0
  307. package/dist/infrastructure/protocols/a2a-metadata.js.map +1 -0
  308. package/dist/infrastructure/protocols/a2a-protocol.d.ts +132 -0
  309. package/dist/infrastructure/protocols/a2a-protocol.d.ts.map +1 -0
  310. package/dist/infrastructure/protocols/a2a-protocol.js +314 -0
  311. package/dist/infrastructure/protocols/a2a-protocol.js.map +1 -0
  312. package/dist/infrastructure/protocols/mcp-oauth.d.ts +91 -0
  313. package/dist/infrastructure/protocols/mcp-oauth.d.ts.map +1 -0
  314. package/dist/infrastructure/protocols/mcp-oauth.js +184 -0
  315. package/dist/infrastructure/protocols/mcp-oauth.js.map +1 -0
  316. package/dist/infrastructure/protocols/mcp-server.d.ts +126 -0
  317. package/dist/infrastructure/protocols/mcp-server.d.ts.map +1 -0
  318. package/dist/infrastructure/protocols/mcp-server.js +333 -0
  319. package/dist/infrastructure/protocols/mcp-server.js.map +1 -0
  320. package/dist/infrastructure/protocols/streaming-handler.d.ts +57 -0
  321. package/dist/infrastructure/protocols/streaming-handler.d.ts.map +1 -0
  322. package/dist/infrastructure/protocols/streaming-handler.js +103 -0
  323. package/dist/infrastructure/protocols/streaming-handler.js.map +1 -0
  324. package/dist/infrastructure/security/ai-sast-scanner.d.ts +55 -0
  325. package/dist/infrastructure/security/ai-sast-scanner.d.ts.map +1 -0
  326. package/dist/infrastructure/security/ai-sast-scanner.js +163 -0
  327. package/dist/infrastructure/security/ai-sast-scanner.js.map +1 -0
  328. package/dist/infrastructure/security/docker-sandbox.d.ts +57 -0
  329. package/dist/infrastructure/security/docker-sandbox.d.ts.map +1 -0
  330. package/dist/infrastructure/security/docker-sandbox.js +178 -0
  331. package/dist/infrastructure/security/docker-sandbox.js.map +1 -0
  332. package/dist/infrastructure/security/enhanced-security-gate.d.ts +51 -0
  333. package/dist/infrastructure/security/enhanced-security-gate.d.ts.map +1 -0
  334. package/dist/infrastructure/security/enhanced-security-gate.js +92 -0
  335. package/dist/infrastructure/security/enhanced-security-gate.js.map +1 -0
  336. package/dist/infrastructure/security/input-validator.d.ts +33 -0
  337. package/dist/infrastructure/security/input-validator.d.ts.map +1 -0
  338. package/dist/infrastructure/security/input-validator.js +152 -0
  339. package/dist/infrastructure/security/input-validator.js.map +1 -0
  340. package/dist/infrastructure/security/license-scanner.d.ts +55 -0
  341. package/dist/infrastructure/security/license-scanner.d.ts.map +1 -0
  342. package/dist/infrastructure/security/license-scanner.js +167 -0
  343. package/dist/infrastructure/security/license-scanner.js.map +1 -0
  344. package/dist/infrastructure/security/provider-bias-detector.d.ts +53 -0
  345. package/dist/infrastructure/security/provider-bias-detector.d.ts.map +1 -0
  346. package/dist/infrastructure/security/provider-bias-detector.js +164 -0
  347. package/dist/infrastructure/security/provider-bias-detector.js.map +1 -0
  348. package/dist/infrastructure/security/sandbox-executor.d.ts +34 -0
  349. package/dist/infrastructure/security/sandbox-executor.d.ts.map +1 -0
  350. package/dist/infrastructure/security/sandbox-executor.js +64 -0
  351. package/dist/infrastructure/security/sandbox-executor.js.map +1 -0
  352. package/dist/infrastructure/storage/memory-stream-service.d.ts +47 -0
  353. package/dist/infrastructure/storage/memory-stream-service.d.ts.map +1 -0
  354. package/dist/infrastructure/storage/memory-stream-service.js +204 -0
  355. package/dist/infrastructure/storage/memory-stream-service.js.map +1 -0
  356. package/dist/infrastructure/storage/sqlite-decision-repository.d.ts +29 -0
  357. package/dist/infrastructure/storage/sqlite-decision-repository.d.ts.map +1 -0
  358. package/dist/infrastructure/storage/sqlite-decision-repository.js +232 -0
  359. package/dist/infrastructure/storage/sqlite-decision-repository.js.map +1 -0
  360. package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts +24 -0
  361. package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts.map +1 -0
  362. package/dist/infrastructure/storage/sqlite-embedding-repository.js +162 -0
  363. package/dist/infrastructure/storage/sqlite-embedding-repository.js.map +1 -0
  364. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.d.ts +41 -0
  365. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.d.ts.map +1 -0
  366. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js +417 -0
  367. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js.map +1 -0
  368. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.d.ts +29 -0
  369. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.d.ts.map +1 -0
  370. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js +230 -0
  371. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js.map +1 -0
  372. package/dist/infrastructure/storage/sqlite-memory-repository.d.ts +40 -0
  373. package/dist/infrastructure/storage/sqlite-memory-repository.d.ts.map +1 -0
  374. package/dist/infrastructure/storage/sqlite-memory-repository.js +229 -0
  375. package/dist/infrastructure/storage/sqlite-memory-repository.js.map +1 -0
  376. package/dist/infrastructure/storage/sqlite-pattern-repository.d.ts +25 -0
  377. package/dist/infrastructure/storage/sqlite-pattern-repository.d.ts.map +1 -0
  378. package/dist/infrastructure/storage/sqlite-pattern-repository.js +249 -0
  379. package/dist/infrastructure/storage/sqlite-pattern-repository.js.map +1 -0
  380. package/dist/infrastructure/ux/appropriate-friction.d.ts +77 -0
  381. package/dist/infrastructure/ux/appropriate-friction.d.ts.map +1 -0
  382. package/dist/infrastructure/ux/appropriate-friction.js +213 -0
  383. package/dist/infrastructure/ux/appropriate-friction.js.map +1 -0
  384. package/dist/infrastructure/ux/bi-directional-learning.d.ts +109 -0
  385. package/dist/infrastructure/ux/bi-directional-learning.d.ts.map +1 -0
  386. package/dist/infrastructure/ux/bi-directional-learning.js +200 -0
  387. package/dist/infrastructure/ux/bi-directional-learning.js.map +1 -0
  388. package/dist/infrastructure/ux/expectation-management.d.ts +65 -0
  389. package/dist/infrastructure/ux/expectation-management.d.ts.map +1 -0
  390. package/dist/infrastructure/ux/expectation-management.js +193 -0
  391. package/dist/infrastructure/ux/expectation-management.js.map +1 -0
  392. package/dist/infrastructure/ux/hitl-validation.d.ts +104 -0
  393. package/dist/infrastructure/ux/hitl-validation.d.ts.map +1 -0
  394. package/dist/infrastructure/ux/hitl-validation.js +211 -0
  395. package/dist/infrastructure/ux/hitl-validation.js.map +1 -0
  396. package/dist/infrastructure/ux/progressive-disclosure.d.ts +84 -0
  397. package/dist/infrastructure/ux/progressive-disclosure.d.ts.map +1 -0
  398. package/dist/infrastructure/ux/progressive-disclosure.js +235 -0
  399. package/dist/infrastructure/ux/progressive-disclosure.js.map +1 -0
  400. package/dist/infrastructure/ux/team-standards.d.ts +94 -0
  401. package/dist/infrastructure/ux/team-standards.d.ts.map +1 -0
  402. package/dist/infrastructure/ux/team-standards.js +196 -0
  403. package/dist/infrastructure/ux/team-standards.js.map +1 -0
  404. package/dist/infrastructure/verification/verification-service.d.ts +12 -0
  405. package/dist/infrastructure/verification/verification-service.d.ts.map +1 -0
  406. package/dist/infrastructure/verification/verification-service.js +47 -0
  407. package/dist/infrastructure/verification/verification-service.js.map +1 -0
  408. package/dist/infrastructure/xai/attention-visualizer.d.ts +73 -0
  409. package/dist/infrastructure/xai/attention-visualizer.d.ts.map +1 -0
  410. package/dist/infrastructure/xai/attention-visualizer.js +174 -0
  411. package/dist/infrastructure/xai/attention-visualizer.js.map +1 -0
  412. package/dist/infrastructure/xai/cot-visualizer.d.ts +105 -0
  413. package/dist/infrastructure/xai/cot-visualizer.d.ts.map +1 -0
  414. package/dist/infrastructure/xai/cot-visualizer.js +239 -0
  415. package/dist/infrastructure/xai/cot-visualizer.js.map +1 -0
  416. package/dist/infrastructure/xai/decision-tree-log.d.ts +104 -0
  417. package/dist/infrastructure/xai/decision-tree-log.d.ts.map +1 -0
  418. package/dist/infrastructure/xai/decision-tree-log.js +216 -0
  419. package/dist/infrastructure/xai/decision-tree-log.js.map +1 -0
  420. package/dist/infrastructure/xai/interactive-xai.d.ts +106 -0
  421. package/dist/infrastructure/xai/interactive-xai.d.ts.map +1 -0
  422. package/dist/infrastructure/xai/interactive-xai.js +262 -0
  423. package/dist/infrastructure/xai/interactive-xai.js.map +1 -0
  424. package/dist/infrastructure/xai/uncertainty-quantifier.d.ts +80 -0
  425. package/dist/infrastructure/xai/uncertainty-quantifier.d.ts.map +1 -0
  426. package/dist/infrastructure/xai/uncertainty-quantifier.js +201 -0
  427. package/dist/infrastructure/xai/uncertainty-quantifier.js.map +1 -0
  428. package/dist/intelligent-retrieval.d.ts.map +1 -1
  429. package/dist/intelligent-retrieval.js +8 -1
  430. package/dist/intelligent-retrieval.js.map +1 -1
  431. package/dist/intent/classifier.d.ts +6 -0
  432. package/dist/intent/classifier.d.ts.map +1 -0
  433. package/dist/intent/classifier.js +2 -0
  434. package/dist/intent/classifier.js.map +1 -0
  435. package/dist/intent/context.d.ts +4 -0
  436. package/dist/intent/context.d.ts.map +1 -0
  437. package/dist/intent/context.js +2 -0
  438. package/dist/intent/context.js.map +1 -0
  439. package/dist/iterative-refinement.d.ts.map +1 -1
  440. package/dist/iterative-refinement.js +20 -3
  441. package/dist/iterative-refinement.js.map +1 -1
  442. package/dist/learning.d.ts.map +1 -1
  443. package/dist/learning.js +1 -2
  444. package/dist/learning.js.map +1 -1
  445. package/dist/monitoring.d.ts.map +1 -1
  446. package/dist/monitoring.js +1 -2
  447. package/dist/monitoring.js.map +1 -1
  448. package/dist/parallel-processor.d.ts +3 -2
  449. package/dist/parallel-processor.d.ts.map +1 -1
  450. package/dist/parallel-processor.js +183 -56
  451. package/dist/parallel-processor.js.map +1 -1
  452. package/dist/presentation/cli/commands/ask-command.d.ts +8 -0
  453. package/dist/presentation/cli/commands/ask-command.d.ts.map +1 -0
  454. package/dist/presentation/cli/commands/ask-command.js +133 -0
  455. package/dist/presentation/cli/commands/ask-command.js.map +1 -0
  456. package/dist/presentation/cli/commands/config-command.d.ts +9 -0
  457. package/dist/presentation/cli/commands/config-command.d.ts.map +1 -0
  458. package/dist/presentation/cli/commands/config-command.js +123 -0
  459. package/dist/presentation/cli/commands/config-command.js.map +1 -0
  460. package/dist/presentation/cli/commands/cost-command.d.ts +8 -0
  461. package/dist/presentation/cli/commands/cost-command.d.ts.map +1 -0
  462. package/dist/presentation/cli/commands/cost-command.js +191 -0
  463. package/dist/presentation/cli/commands/cost-command.js.map +1 -0
  464. package/dist/presentation/cli/commands/decision-command.d.ts +12 -0
  465. package/dist/presentation/cli/commands/decision-command.d.ts.map +1 -0
  466. package/dist/presentation/cli/commands/decision-command.js +207 -0
  467. package/dist/presentation/cli/commands/decision-command.js.map +1 -0
  468. package/dist/presentation/cli/commands/help-command.d.ts +9 -0
  469. package/dist/presentation/cli/commands/help-command.d.ts.map +1 -0
  470. package/dist/presentation/cli/commands/help-command.js +281 -0
  471. package/dist/presentation/cli/commands/help-command.js.map +1 -0
  472. package/dist/presentation/cli/commands/knowledge-command.d.ts +13 -0
  473. package/dist/presentation/cli/commands/knowledge-command.d.ts.map +1 -0
  474. package/dist/presentation/cli/commands/knowledge-command.js +129 -0
  475. package/dist/presentation/cli/commands/knowledge-command.js.map +1 -0
  476. package/dist/presentation/cli/commands/learning-dashboard-command.d.ts +8 -0
  477. package/dist/presentation/cli/commands/learning-dashboard-command.d.ts.map +1 -0
  478. package/dist/presentation/cli/commands/learning-dashboard-command.js +183 -0
  479. package/dist/presentation/cli/commands/learning-dashboard-command.js.map +1 -0
  480. package/dist/presentation/cli/commands/orchestrate-command.d.ts +8 -0
  481. package/dist/presentation/cli/commands/orchestrate-command.d.ts.map +1 -0
  482. package/dist/presentation/cli/commands/orchestrate-command.js +112 -0
  483. package/dist/presentation/cli/commands/orchestrate-command.js.map +1 -0
  484. package/dist/presentation/cli/commands/plan-command.d.ts +8 -0
  485. package/dist/presentation/cli/commands/plan-command.d.ts.map +1 -0
  486. package/dist/presentation/cli/commands/plan-command.js +114 -0
  487. package/dist/presentation/cli/commands/plan-command.js.map +1 -0
  488. package/dist/presentation/cli/commands/react-command.d.ts +8 -0
  489. package/dist/presentation/cli/commands/react-command.d.ts.map +1 -0
  490. package/dist/presentation/cli/commands/react-command.js +99 -0
  491. package/dist/presentation/cli/commands/react-command.js.map +1 -0
  492. package/dist/presentation/cli/commands/setup-command.d.ts +10 -0
  493. package/dist/presentation/cli/commands/setup-command.d.ts.map +1 -0
  494. package/dist/presentation/cli/commands/setup-command.js +231 -0
  495. package/dist/presentation/cli/commands/setup-command.js.map +1 -0
  496. package/dist/presentation/cli/commands/smart-command.d.ts +6 -0
  497. package/dist/presentation/cli/commands/smart-command.d.ts.map +1 -0
  498. package/dist/presentation/cli/commands/smart-command.js +212 -0
  499. package/dist/presentation/cli/commands/smart-command.js.map +1 -0
  500. package/dist/presentation/cli/commands/trace-command.d.ts +8 -0
  501. package/dist/presentation/cli/commands/trace-command.d.ts.map +1 -0
  502. package/dist/presentation/cli/commands/trace-command.js +125 -0
  503. package/dist/presentation/cli/commands/trace-command.js.map +1 -0
  504. package/dist/presentation/cli/commands/undo-command.d.ts +8 -0
  505. package/dist/presentation/cli/commands/undo-command.d.ts.map +1 -0
  506. package/dist/presentation/cli/commands/undo-command.js +141 -0
  507. package/dist/presentation/cli/commands/undo-command.js.map +1 -0
  508. package/dist/presentation/cli/error-display.d.ts +23 -0
  509. package/dist/presentation/cli/error-display.d.ts.map +1 -0
  510. package/dist/presentation/cli/error-display.js +122 -0
  511. package/dist/presentation/cli/error-display.js.map +1 -0
  512. package/dist/refactor.d.ts.map +1 -1
  513. package/dist/refactor.js +2 -4
  514. package/dist/refactor.js.map +1 -1
  515. package/dist/search.d.ts.map +1 -1
  516. package/dist/search.js +2 -63
  517. package/dist/search.js.map +1 -1
  518. package/dist/session.d.ts.map +1 -1
  519. package/dist/session.js +52 -3
  520. package/dist/session.js.map +1 -1
  521. package/dist/testgen.d.ts.map +1 -1
  522. package/dist/testgen.js +1 -2
  523. package/dist/testgen.js.map +1 -1
  524. package/dist/tools/bash.d.ts +53 -0
  525. package/dist/tools/bash.d.ts.map +1 -0
  526. package/dist/tools/bash.js +213 -0
  527. package/dist/tools/bash.js.map +1 -0
  528. package/dist/tools/edit.d.ts +48 -0
  529. package/dist/tools/edit.d.ts.map +1 -0
  530. package/dist/tools/edit.js +235 -0
  531. package/dist/tools/edit.js.map +1 -0
  532. package/dist/tools/executor.d.ts +29 -0
  533. package/dist/tools/executor.d.ts.map +1 -0
  534. package/dist/tools/executor.js +153 -0
  535. package/dist/tools/executor.js.map +1 -0
  536. package/dist/tools/git-tool.d.ts +87 -0
  537. package/dist/tools/git-tool.d.ts.map +1 -0
  538. package/dist/tools/git-tool.js +292 -0
  539. package/dist/tools/git-tool.js.map +1 -0
  540. package/dist/tools/parser.d.ts +33 -0
  541. package/dist/tools/parser.d.ts.map +1 -0
  542. package/dist/tools/parser.js +158 -0
  543. package/dist/tools/parser.js.map +1 -0
  544. package/dist/tools/registry.d.ts +74 -0
  545. package/dist/tools/registry.d.ts.map +1 -0
  546. package/dist/tools/registry.js +302 -0
  547. package/dist/tools/registry.js.map +1 -0
  548. package/dist/tools/search.d.ts +41 -0
  549. package/dist/tools/search.d.ts.map +1 -0
  550. package/dist/tools/search.js +100 -0
  551. package/dist/tools/search.js.map +1 -0
  552. package/dist/ui.d.ts.map +1 -1
  553. package/dist/ui.js +4 -2
  554. package/dist/ui.js.map +1 -1
  555. package/dist/utils/check-api-status.d.ts +12 -0
  556. package/dist/utils/check-api-status.d.ts.map +1 -0
  557. package/dist/utils/check-api-status.js +82 -0
  558. package/dist/utils/check-api-status.js.map +1 -0
  559. package/dist/utils/diff-parser.d.ts +22 -0
  560. package/dist/utils/diff-parser.d.ts.map +1 -0
  561. package/dist/utils/diff-parser.js +160 -0
  562. package/dist/utils/diff-parser.js.map +1 -0
  563. package/dist/utils/logger.d.ts +34 -0
  564. package/dist/utils/logger.d.ts.map +1 -0
  565. package/dist/utils/logger.js +56 -0
  566. package/dist/utils/logger.js.map +1 -0
  567. package/dist/utils/version.d.ts +21 -0
  568. package/dist/utils/version.d.ts.map +1 -0
  569. package/dist/utils/version.js +52 -0
  570. package/dist/utils/version.js.map +1 -0
  571. package/dist/verification/backup.d.ts +30 -0
  572. package/dist/verification/backup.d.ts.map +1 -0
  573. package/dist/verification/backup.js +238 -0
  574. package/dist/verification/backup.js.map +1 -0
  575. package/dist/verification/compiler.d.ts +20 -0
  576. package/dist/verification/compiler.d.ts.map +1 -0
  577. package/dist/verification/compiler.js +228 -0
  578. package/dist/verification/compiler.js.map +1 -0
  579. package/dist/verification/index.d.ts +59 -0
  580. package/dist/verification/index.d.ts.map +1 -0
  581. package/dist/verification/index.js +273 -0
  582. package/dist/verification/index.js.map +1 -0
  583. package/dist/verification/test-runner.d.ts +27 -0
  584. package/dist/verification/test-runner.d.ts.map +1 -0
  585. package/dist/verification/test-runner.js +379 -0
  586. package/dist/verification/test-runner.js.map +1 -0
  587. package/package.json +39 -14
  588. package/ARCHITECTURE.md +0 -240
  589. package/CHANGELOG.md +0 -44
  590. package/CONTRIBUTING.md +0 -171
  591. package/dist/benchmark.d.ts +0 -39
  592. package/dist/benchmark.d.ts.map +0 -1
  593. package/dist/benchmark.js +0 -195
  594. package/dist/benchmark.js.map +0 -1
  595. package/dist/scaffold.d.ts +0 -14
  596. package/dist/scaffold.d.ts.map +0 -1
  597. package/dist/scaffold.js +0 -85
  598. package/dist/scaffold.js.map +0 -1
  599. package/templates/next-page/app/layout.tsx +0 -19
  600. package/templates/next-page/app/page.tsx +0 -10
  601. package/templates/next-page/package.json +0 -22
  602. package/templates/node-api/index.js +0 -57
  603. package/templates/node-api/package.json +0 -13
@@ -0,0 +1,711 @@
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
+ export class IntelligentRouter {
10
+ intentClassifier;
11
+ aiService;
12
+ memoryStream;
13
+ constructor(intentClassifier, aiService, memoryStream) {
14
+ this.intentClassifier = intentClassifier || new QueryIntentClassifier();
15
+ this.aiService = aiService;
16
+ this.memoryStream = memoryStream;
17
+ }
18
+ async route(request) {
19
+ // Validate input
20
+ const validation = validateQuery(request.query);
21
+ if (!validation.valid) {
22
+ return {
23
+ intent: 'error',
24
+ action: 'general',
25
+ result: null,
26
+ success: false,
27
+ error: `Invalid query: ${validation.errors.join(', ')}`,
28
+ };
29
+ }
30
+ // Use sanitized query if validation found issues
31
+ const query = (validation.sanitized || request.query).trim();
32
+ // 1. MEMORY-AWARE: Retrieve relevant memories to inform routing decision
33
+ let memories = [];
34
+ let memoryInformedIntent = null;
35
+ if (this.memoryStream) {
36
+ try {
37
+ // Retrieve memories relevant to this query
38
+ memories = await this.memoryStream.retrieve(query, 10);
39
+ // If we have memories, use them to inform intent classification
40
+ if (memories.length > 0 && this.aiService) {
41
+ memoryInformedIntent = await this.classifyIntentWithMemory(query, memories);
42
+ }
43
+ }
44
+ catch (error) {
45
+ // Fallback to basic classification if memory retrieval fails
46
+ console.warn('Memory retrieval failed, using basic classification:', error);
47
+ }
48
+ }
49
+ // 2. Classify intent (check for compound instructions FIRST, before memory)
50
+ const classifiedIntent = this.intentClassifier.classify(query);
51
+ // CRITICAL: Compound instructions (numbered steps) MUST route to Planning Module
52
+ // Check this BEFORE memory-informed intent to prevent override
53
+ const isCompoundInstruction = query.includes('\n') && /\d+\.\s+[^\n]+\n\s*\d+\.\s+/.test(query);
54
+ // Use memory-informed intent ONLY if not a compound instruction
55
+ const intent = isCompoundInstruction && classifiedIntent === 'multi-file-modify'
56
+ ? 'multi-file-modify' // Force compound instructions to Planning Module
57
+ : (memoryInformedIntent || classifiedIntent);
58
+ const symbols = this.intentClassifier.extractSymbols(query);
59
+ // Debug logging for compound instructions
60
+ if (isCompoundInstruction) {
61
+ console.log(`[IntelligentRouter] Compound instruction detected. Classified: ${classifiedIntent}, Memory: ${memoryInformedIntent}, Using: ${intent}`);
62
+ }
63
+ // 3. Check if indexing is needed
64
+ const needsIndex = await this.checkIfIndexingNeeded(request.context);
65
+ // Handle indexing first if needed
66
+ if (needsIndex && (intent === 'find' || intent === 'understand' || intent === 'explain')) {
67
+ return {
68
+ intent: 'index',
69
+ action: 'index',
70
+ result: { message: 'Indexing required. Please run: codehere index' },
71
+ success: false,
72
+ message: 'Codebase not indexed. Run "codehere index" first, then try again.',
73
+ memoriesUsed: memories.length,
74
+ };
75
+ }
76
+ // Route based on intent (pass memories for context)
77
+ switch (intent) {
78
+ case 'explain':
79
+ // Use deterministic workflow for faster performance (no ReAct overhead)
80
+ return await this.handleExplainWithWorkflow(query, symbols, memories);
81
+ case 'multi-file-modify':
82
+ // Multi-file operations require planning AND execution
83
+ return await this.handleOrchestrate(query, memories);
84
+ case 'modify':
85
+ case 'debug': // 'fix' maps to 'debug'
86
+ case 'implement':
87
+ return await this.handleEdit(query, symbols, memories);
88
+ case 'index':
89
+ return await this.handleIndex(query);
90
+ case 'plan':
91
+ // Complex goals need planning
92
+ return await this.handlePlan(query, memories);
93
+ case 'find':
94
+ // For "find" queries, use AskQuestion to search the codebase
95
+ return await this.handleAsk(query, memories);
96
+ case 'understand':
97
+ case 'general':
98
+ // CRITICAL FIX: Simple questions should NEVER use ReAct
99
+ // Only use ReAct for truly complex multi-step queries
100
+ // Simple questions (explain, find, understand) go directly to AskQuestionUseCase
101
+ if (this.isSimpleQuestion(query)) {
102
+ return await this.handleAsk(query, memories);
103
+ }
104
+ // For complex queries, check if ReAct is appropriate
105
+ const shouldUseReAct = this.shouldUseReAct(query, memories);
106
+ if (shouldUseReAct) {
107
+ return await this.handleReAct(query, memories);
108
+ }
109
+ // Default to AskQuestion for understand/general queries
110
+ return await this.handleAsk(query, memories);
111
+ default:
112
+ // CRITICAL FIX: Default to AskQuestion, not ReAct
113
+ // ReAct should only be used when explicitly needed
114
+ // Most queries are simple and should use AskQuestionUseCase
115
+ return await this.handleAsk(query, memories);
116
+ }
117
+ }
118
+ /**
119
+ * Classify intent using AI and memory context
120
+ * More accurate than keyword-based classification
121
+ */
122
+ async classifyIntentWithMemory(query, memories) {
123
+ if (!this.aiService) {
124
+ return this.intentClassifier.classify(query);
125
+ }
126
+ // Build memory context
127
+ const memoryContext = memories
128
+ .slice(0, 5) // Use top 5 most relevant
129
+ .map((m, i) => `${i + 1}. ${m.description} (${m.type})`)
130
+ .join('\n');
131
+ const prompt = `Classify the intent of this user query. Consider past experiences that might inform the classification.
132
+
133
+ Query: "${query}"
134
+
135
+ Relevant Past Experiences:
136
+ ${memoryContext}
137
+
138
+ Classify the intent as ONE of: explain, refactor, debug, implement, understand, find, modify, multi-file-modify, index, review, test, plan, general
139
+
140
+ Consider:
141
+ - If similar queries were handled successfully before, use that intent
142
+ - If past experiences suggest a specific approach, use that
143
+ - If the query is complex and requires planning, use "plan"
144
+ - If it's a simple question, use "understand" or "find"
145
+
146
+ Respond with ONLY the intent word (e.g., "explain", "plan", "understand"):`;
147
+ try {
148
+ const response = await this.aiService.chat(prompt, []);
149
+ const intent = response.trim().toLowerCase().split(/\s+/)[0];
150
+ // Validate intent
151
+ const validIntents = ['explain', 'refactor', 'debug', 'implement', 'understand', 'find', 'modify', 'multi-file-modify', 'index', 'review', 'test', 'plan', 'general'];
152
+ if (validIntents.includes(intent)) {
153
+ return intent;
154
+ }
155
+ }
156
+ catch (error) {
157
+ // Fallback to keyword-based
158
+ }
159
+ return this.intentClassifier.classify(query);
160
+ }
161
+ /**
162
+ * Check if query is a simple question (explain, find, understand)
163
+ * Simple questions should NEVER use ReAct - they go directly to AskQuestionUseCase
164
+ */
165
+ isSimpleQuestion(query) {
166
+ const lower = query.toLowerCase();
167
+ // Simple question patterns
168
+ const simplePatterns = [
169
+ /^(what|where|how|why|when|who|which|is|are|does|do|can|could|will|would)\s+/i,
170
+ /^(explain|describe|tell me about|show me|find|locate|search for)/i,
171
+ /^(what is|what are|where is|where are|how does|how do|how is|how are)/i,
172
+ /\?$/, // Ends with question mark
173
+ ];
174
+ // Check if query matches simple question patterns
175
+ const isQuestion = simplePatterns.some(pattern => pattern.test(query));
176
+ // Simple if it's a question AND doesn't require multiple steps
177
+ const isSingleStep = !this.isComplexQuery(query);
178
+ return isQuestion && isSingleStep;
179
+ }
180
+ /**
181
+ * Determine if ReAct should be used based on query complexity and past experiences
182
+ * CRITICAL: Only use ReAct for truly complex multi-step queries
183
+ */
184
+ shouldUseReAct(query, memories) {
185
+ // NEVER use ReAct for simple questions
186
+ if (this.isSimpleQuestion(query)) {
187
+ return false;
188
+ }
189
+ // Check query complexity - must be truly complex
190
+ if (!this.isComplexQuery(query)) {
191
+ return false;
192
+ }
193
+ // Additional check: Query must require multiple tools/steps
194
+ const requiresMultipleSteps = this.requiresMultipleSteps(query);
195
+ if (!requiresMultipleSteps) {
196
+ return false;
197
+ }
198
+ // Check memories for similar queries that used ReAct successfully
199
+ // But only if query is already complex
200
+ if (memories.length > 0) {
201
+ const similarQueries = memories.filter(m => {
202
+ const desc = m.description.toLowerCase();
203
+ const queryLower = query.toLowerCase();
204
+ // Check if memory mentions ReAct or similar complex handling
205
+ return desc.includes('react') ||
206
+ desc.includes('complex') ||
207
+ desc.includes('multi-step') ||
208
+ (desc.includes(queryLower.split(' ')[0]) && m.metadata?.action === 'react');
209
+ });
210
+ // If we have memories of similar queries using ReAct, use it
211
+ if (similarQueries.length > 0) {
212
+ return true;
213
+ }
214
+ }
215
+ return false;
216
+ }
217
+ /**
218
+ * Check if query requires multiple steps/tools
219
+ */
220
+ requiresMultipleSteps(query) {
221
+ const lower = query.toLowerCase();
222
+ // Multi-step indicators
223
+ const multiStepIndicators = [
224
+ 'and then',
225
+ 'after that',
226
+ 'also',
227
+ 'first',
228
+ 'second',
229
+ 'third',
230
+ 'finally',
231
+ 'then',
232
+ 'next',
233
+ 'step',
234
+ 'steps',
235
+ 'multiple',
236
+ 'several',
237
+ 'check',
238
+ 'verify',
239
+ 'debug',
240
+ 'fix',
241
+ 'and',
242
+ 'while',
243
+ 'during',
244
+ ];
245
+ // Count multi-step indicators
246
+ const indicatorCount = multiStepIndicators.filter(indicator => lower.includes(indicator)).length;
247
+ // Requires multiple steps if 2+ indicators or very long query
248
+ return indicatorCount >= 2 || query.split(' ').length > 20;
249
+ }
250
+ async checkIfIndexingNeeded(context) {
251
+ if (context?.hasIndex === false)
252
+ return true;
253
+ try {
254
+ const { container } = await import('./dependency-container.js');
255
+ const repo = container.embeddingRepository;
256
+ // Check if any embeddings exist
257
+ const testSearch = await repo.searchWithEmbedding([0.1], 1);
258
+ return testSearch.length === 0;
259
+ }
260
+ catch {
261
+ return true; // Assume needs indexing if check fails
262
+ }
263
+ }
264
+ async handleAsk(query, memories) {
265
+ try {
266
+ const { container } = await import('./dependency-container.js');
267
+ const useCase = container.askQuestionUseCase;
268
+ const result = await useCase.execute({ query, maxResults: 15 });
269
+ // Record successful routing in memory
270
+ if (this.memoryStream && memories && memories.length > 0) {
271
+ await this.memoryStream.recordObservation(`Successfully routed query to AskQuestionUseCase: ${query}`, {
272
+ query,
273
+ action: 'ask',
274
+ memoriesUsed: memories.length,
275
+ });
276
+ }
277
+ return {
278
+ intent: 'understand',
279
+ action: 'ask',
280
+ result,
281
+ success: result.chunks.length > 0,
282
+ message: result.answer,
283
+ memoriesUsed: memories?.length || 0,
284
+ };
285
+ }
286
+ catch (error) {
287
+ return {
288
+ intent: 'understand',
289
+ action: 'ask',
290
+ result: null,
291
+ success: false,
292
+ error: error instanceof Error ? error.message : String(error),
293
+ memoriesUsed: memories?.length || 0,
294
+ };
295
+ }
296
+ }
297
+ async handleExplainWithWorkflow(query, symbols, memories) {
298
+ // Try deterministic workflow first (faster, no ReAct overhead)
299
+ try {
300
+ const { container } = await import('./dependency-container.js');
301
+ const { ExplainWorkflow } = await import('../workflows/deterministic-workflows.js');
302
+ const explainWorkflow = new ExplainWorkflow(container.embeddingRepository, container.aiService);
303
+ const workflowResult = await explainWorkflow.execute(query);
304
+ if (workflowResult.success) {
305
+ return {
306
+ intent: 'explain',
307
+ action: 'explain',
308
+ result: workflowResult.result,
309
+ success: true,
310
+ message: workflowResult.result?.explanation || 'Explanation generated',
311
+ memoriesUsed: memories?.length || 0,
312
+ };
313
+ }
314
+ }
315
+ catch (error) {
316
+ // Fallback to original implementation if workflow fails
317
+ console.warn('Workflow failed, falling back to standard explain:', error);
318
+ }
319
+ // Fallback to standard explain
320
+ return await this.handleExplain(query, symbols, memories);
321
+ }
322
+ async handleExplain(query, symbols, memories) {
323
+ // Extract filepath from query
324
+ const filepath = this.extractFilepath(query);
325
+ if (!filepath) {
326
+ // No filepath found, treat as ask query
327
+ return await this.handleAsk(query, memories);
328
+ }
329
+ try {
330
+ const { container } = await import('./dependency-container.js');
331
+ const useCase = container.explainFileUseCase;
332
+ const result = await useCase.execute({ filepath });
333
+ // Record successful routing
334
+ if (this.memoryStream && memories && memories.length > 0) {
335
+ await this.memoryStream.recordObservation(`Successfully routed to ExplainFileUseCase: ${query}`, {
336
+ query,
337
+ action: 'explain',
338
+ filepath,
339
+ memoriesUsed: memories.length,
340
+ });
341
+ }
342
+ return {
343
+ intent: 'explain',
344
+ action: 'explain',
345
+ result,
346
+ success: true,
347
+ message: result.explanation,
348
+ memoriesUsed: memories?.length || 0,
349
+ };
350
+ }
351
+ catch (error) {
352
+ return {
353
+ intent: 'explain',
354
+ action: 'explain',
355
+ result: null,
356
+ success: false,
357
+ error: error instanceof Error ? error.message : String(error),
358
+ memoriesUsed: memories?.length || 0,
359
+ };
360
+ }
361
+ }
362
+ async handleEdit(query, symbols, memories) {
363
+ // Extract filepath and instruction
364
+ let { filepath, instruction } = this.extractEditParams(query);
365
+ // CRITICAL: Fast security check BEFORE any expensive operations (file search, reading, etc.)
366
+ // This prevents wasting time and tokens on dangerous code
367
+ if (instruction) {
368
+ const securityCheck = await this.fastSecurityCheck(instruction);
369
+ if (!securityCheck.allowed) {
370
+ return {
371
+ intent: 'edit',
372
+ action: 'edit',
373
+ result: null,
374
+ success: false,
375
+ error: securityCheck.reason,
376
+ memoriesUsed: memories?.length || 0,
377
+ };
378
+ }
379
+ }
380
+ console.log(`[IntelligentRouter] Edit query: ${query}`);
381
+ console.log(`[IntelligentRouter] Extracted filepath: ${filepath || 'none'}`);
382
+ console.log(`[IntelligentRouter] Extracted instruction: ${instruction || 'none'}`);
383
+ console.log(`[IntelligentRouter] Symbols found: ${symbols.join(', ')}`);
384
+ // If no filepath found but we have symbols (class/function names), search for the file
385
+ if (!filepath && symbols.length > 0) {
386
+ // Filter out common words and prioritize capitalized names (likely class/function names)
387
+ const meaningfulSymbols = symbols.filter(s => {
388
+ const lower = s.toLowerCase();
389
+ // Exclude common words
390
+ return !['in', 'to', 'the', 'a', 'an', 'and', 'or', 'of', 'for', 'with', 'from'].includes(lower) &&
391
+ s.length > 2; // At least 3 characters
392
+ });
393
+ // Prioritize capitalized names (classes) and camelCase (functions)
394
+ const prioritizedSymbols = meaningfulSymbols.sort((a, b) => {
395
+ const aIsClass = /^[A-Z]/.test(a);
396
+ const bIsClass = /^[A-Z]/.test(b);
397
+ if (aIsClass && !bIsClass)
398
+ return -1;
399
+ if (!aIsClass && bIsClass)
400
+ return 1;
401
+ return b.length - a.length; // Longer names are more specific
402
+ });
403
+ console.log(`[IntelligentRouter] Filtered symbols: ${prioritizedSymbols.join(', ')}`);
404
+ if (prioritizedSymbols.length > 0) {
405
+ console.log(`[IntelligentRouter] Searching for file containing symbol: ${prioritizedSymbols[0]}`);
406
+ filepath = await this.findFileBySymbol(prioritizedSymbols[0], query);
407
+ console.log(`[IntelligentRouter] Found filepath: ${filepath || 'none'}`);
408
+ }
409
+ }
410
+ if (!filepath || !instruction) {
411
+ console.error(`[IntelligentRouter] Missing filepath or instruction. filepath: ${filepath}, instruction: ${instruction}`);
412
+ return {
413
+ intent: 'edit',
414
+ action: 'edit',
415
+ result: null,
416
+ success: false,
417
+ 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',
418
+ memoriesUsed: memories?.length || 0,
419
+ };
420
+ }
421
+ console.log(`[IntelligentRouter] Proceeding with edit: ${filepath} - ${instruction}`);
422
+ try {
423
+ const { container } = await import('./dependency-container.js');
424
+ const useCase = container.editFileUseCase;
425
+ const result = await useCase.execute({ filepath, instruction });
426
+ // Record successful routing
427
+ if (this.memoryStream && memories && memories.length > 0) {
428
+ await this.memoryStream.recordObservation(`Successfully routed to EditFileUseCase: ${query}`, {
429
+ query,
430
+ action: 'edit',
431
+ filepath,
432
+ memoriesUsed: memories.length,
433
+ success: result.success,
434
+ });
435
+ }
436
+ return {
437
+ intent: 'edit',
438
+ action: 'edit',
439
+ result,
440
+ success: result.success,
441
+ message: result.success ? 'Edit applied successfully' : result.error,
442
+ error: result.error,
443
+ memoriesUsed: memories?.length || 0,
444
+ };
445
+ }
446
+ catch (error) {
447
+ return {
448
+ intent: 'edit',
449
+ action: 'edit',
450
+ result: null,
451
+ success: false,
452
+ error: error instanceof Error ? error.message : String(error),
453
+ memoriesUsed: memories?.length || 0,
454
+ };
455
+ }
456
+ }
457
+ async handleReAct(query, memories) {
458
+ try {
459
+ const { container } = await import('./dependency-container.js');
460
+ const useCase = container.reactOrchestrationUseCase;
461
+ // Pass memories to ReAct for context
462
+ const result = await useCase.execute({
463
+ query,
464
+ maxTurns: 15,
465
+ context: {
466
+ memories: memories || [],
467
+ },
468
+ });
469
+ // Record successful routing
470
+ if (this.memoryStream && memories && memories.length > 0) {
471
+ await this.memoryStream.recordObservation(`Successfully routed complex query to ReAct: ${query}`, {
472
+ query,
473
+ action: 'react',
474
+ memoriesUsed: memories.length,
475
+ steps: result.trajectory.steps.length,
476
+ });
477
+ }
478
+ return {
479
+ intent: 'general',
480
+ action: 'react',
481
+ result,
482
+ success: result.trajectory.success,
483
+ message: result.answer,
484
+ memoriesUsed: memories?.length || 0,
485
+ };
486
+ }
487
+ catch (error) {
488
+ return {
489
+ intent: 'general',
490
+ action: 'react',
491
+ result: null,
492
+ success: false,
493
+ error: error instanceof Error ? error.message : String(error),
494
+ memoriesUsed: memories?.length || 0,
495
+ };
496
+ }
497
+ }
498
+ async handleIndex(query) {
499
+ return {
500
+ intent: 'index',
501
+ action: 'index',
502
+ result: { message: 'Use "codehere index" command to index the codebase' },
503
+ success: false,
504
+ message: 'To index the codebase, run: codehere index',
505
+ };
506
+ }
507
+ async handlePlan(query, memories) {
508
+ try {
509
+ const { container } = await import('./dependency-container.js');
510
+ const useCase = container.planningUseCase;
511
+ const result = await useCase.execute({
512
+ goal: query,
513
+ planningMode: 'hybrid',
514
+ context: {
515
+ // Pass memories for planning context
516
+ },
517
+ });
518
+ // Record successful planning
519
+ if (this.memoryStream && memories && memories.length > 0) {
520
+ await this.memoryStream.recordObservation(`Successfully routed to Planning Module: ${query}`, {
521
+ query,
522
+ action: 'plan',
523
+ memoriesUsed: memories.length,
524
+ subPlans: result.plan.subPlans.length,
525
+ });
526
+ }
527
+ return {
528
+ intent: 'plan',
529
+ action: 'plan',
530
+ result,
531
+ success: true,
532
+ message: `Plan created with ${result.plan.subPlans.length} sub-plans`,
533
+ memoriesUsed: memories?.length || 0,
534
+ };
535
+ }
536
+ catch (error) {
537
+ return {
538
+ intent: 'plan',
539
+ action: 'plan',
540
+ result: null,
541
+ success: false,
542
+ error: error instanceof Error ? error.message : String(error),
543
+ memoriesUsed: memories?.length || 0,
544
+ };
545
+ }
546
+ }
547
+ async handleOrchestrate(query, memories) {
548
+ try {
549
+ const { container } = await import('./dependency-container.js');
550
+ const orchestrator = container.multiAgentOrchestrator;
551
+ const result = await orchestrator.orchestrate({
552
+ goal: query,
553
+ mode: 'full', // Plan + Execute + Validate
554
+ context: {
555
+ // Pass memories context if needed
556
+ },
557
+ });
558
+ // Record successful orchestration
559
+ if (this.memoryStream && memories && memories.length > 0) {
560
+ await this.memoryStream.recordObservation(`Successfully routed compound instruction to Orchestrator: ${query}`, {
561
+ query,
562
+ action: 'orchestrate',
563
+ memoriesUsed: memories.length,
564
+ planSubPlans: result.plan?.subPlans.length || 0,
565
+ executionCompleted: result.execution?.completedSubPlans || 0,
566
+ });
567
+ }
568
+ return {
569
+ intent: 'plan',
570
+ action: 'plan',
571
+ result,
572
+ success: result.success,
573
+ message: result.message,
574
+ error: result.success ? undefined : result.message,
575
+ memoriesUsed: memories?.length || 0,
576
+ };
577
+ }
578
+ catch (error) {
579
+ return {
580
+ intent: 'plan',
581
+ action: 'plan',
582
+ result: null,
583
+ success: false,
584
+ error: error instanceof Error ? error.message : String(error),
585
+ memoriesUsed: memories?.length || 0,
586
+ };
587
+ }
588
+ }
589
+ extractFilepath(query) {
590
+ // Look for file paths in query
591
+ const patterns = [
592
+ /(?: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,
593
+ /([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))/,
594
+ /src\/[^\s]+/,
595
+ /\.\/[^\s]+/,
596
+ ];
597
+ for (const pattern of patterns) {
598
+ const match = query.match(pattern);
599
+ if (match) {
600
+ return match[1] || match[0];
601
+ }
602
+ }
603
+ return null;
604
+ }
605
+ extractEditParams(query) {
606
+ const filepath = this.extractFilepath(query);
607
+ if (!filepath) {
608
+ return { filepath: null, instruction: query };
609
+ }
610
+ // Remove filepath from query to get instruction
611
+ const instruction = query
612
+ .replace(new RegExp(filepath.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gi'), '')
613
+ .replace(/(?:edit|fix|modify|change|update|add to|remove from)\s+/i, '')
614
+ .trim();
615
+ return { filepath, instruction: instruction || 'Make the requested changes' };
616
+ }
617
+ isComplexQuery(query) {
618
+ const lower = query.toLowerCase();
619
+ // Complex if it requires multiple steps
620
+ const complexIndicators = [
621
+ 'and then',
622
+ 'after that',
623
+ 'also',
624
+ 'multiple',
625
+ 'several',
626
+ 'steps',
627
+ 'first',
628
+ 'second',
629
+ 'finally',
630
+ 'create',
631
+ 'build',
632
+ 'implement',
633
+ 'refactor',
634
+ ];
635
+ return complexIndicators.some(indicator => lower.includes(indicator)) ||
636
+ query.split(' ').length > 15; // Long queries are likely complex
637
+ }
638
+ /**
639
+ * Fast security check using pattern matching (before expensive operations)
640
+ * Synchronous pattern matching - instant rejection for dangerous patterns
641
+ */
642
+ fastSecurityCheck(query) {
643
+ // Fast pattern-based check for obvious security issues (synchronous, no API calls)
644
+ const lower = query.toLowerCase();
645
+ // Dangerous patterns that should be blocked immediately
646
+ const dangerousPatterns = [
647
+ { pattern: /execute.*user.*input|eval.*user|exec.*user/i, reason: 'Security vulnerabilities detected: 1 critical, 0 high severity findings. Review and fix before applying.' },
648
+ { pattern: /shell.*command|system.*call|process\.exec/i, reason: 'Security vulnerabilities detected: 1 critical, 0 high severity findings. Review and fix before applying.' },
649
+ { pattern: /bypass.*security|disable.*security|remove.*validation/i, reason: 'Security vulnerabilities detected: 1 critical, 0 high severity findings. Review and fix before applying.' },
650
+ { pattern: /hardcode.*password|store.*password.*plaintext|plaintext.*password/i, reason: 'Security vulnerabilities detected: 0 critical, 1 high severity findings. Review and fix before applying.' },
651
+ ];
652
+ for (const { pattern, reason } of dangerousPatterns) {
653
+ if (pattern.test(query)) {
654
+ return { allowed: false, reason };
655
+ }
656
+ }
657
+ return { allowed: true };
658
+ }
659
+ /**
660
+ * Find file containing a symbol (class/function name)
661
+ * Uses search to locate the file
662
+ */
663
+ async findFileBySymbol(symbol, query) {
664
+ try {
665
+ console.log(`[IntelligentRouter] Searching for symbol: ${symbol}`);
666
+ const { container } = await import('./dependency-container.js');
667
+ const useCase = container.askQuestionUseCase;
668
+ // Search for the symbol - try multiple query variations
669
+ const searchQueries = [
670
+ `Find ${symbol}`,
671
+ `file containing ${symbol}`,
672
+ `Where is ${symbol} defined`,
673
+ `${symbol} class or function`,
674
+ ];
675
+ for (const searchQuery of searchQueries) {
676
+ console.log(`[IntelligentRouter] Trying search query: ${searchQuery}`);
677
+ const result = await useCase.execute({ query: searchQuery, maxResults: 5 });
678
+ // Look for filepath in results
679
+ if (result.chunks && result.chunks.length > 0) {
680
+ // Get the most relevant chunk
681
+ const topChunk = result.chunks[0];
682
+ if (topChunk && topChunk.filepath) {
683
+ // Convert absolute path to relative if needed
684
+ let filepath = topChunk.filepath;
685
+ const cwd = process.cwd();
686
+ if (filepath.startsWith(cwd)) {
687
+ filepath = filepath.substring(cwd.length + 1); // Remove leading slash
688
+ }
689
+ console.log(`[IntelligentRouter] Found filepath from search: ${filepath}`);
690
+ return filepath;
691
+ }
692
+ }
693
+ // Also check answer for filepath mentions
694
+ if (result.answer) {
695
+ 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))/);
696
+ if (filepathMatch) {
697
+ console.log(`[IntelligentRouter] Found filepath from answer: ${filepathMatch[1]}`);
698
+ return filepathMatch[1];
699
+ }
700
+ }
701
+ }
702
+ console.warn(`[IntelligentRouter] Could not find file for symbol: ${symbol}`);
703
+ return null;
704
+ }
705
+ catch (error) {
706
+ console.error(`[IntelligentRouter] Failed to find file by symbol:`, error);
707
+ return null;
708
+ }
709
+ }
710
+ }
711
+ //# sourceMappingURL=intelligent-router.js.map