codehere 0.1.0 → 0.3.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 (671) 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 +65 -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 +143 -0
  43. package/dist/application/services/dependency-container.d.ts.map +1 -0
  44. package/dist/application/services/dependency-container.js +426 -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 +48 -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 +270 -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 +752 -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 +276 -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 +329 -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 +52 -0
  227. package/dist/domain/services/react-loop.d.ts.map +1 -0
  228. package/dist/domain/services/react-loop.js +186 -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/formatter.d.ts +2 -2
  243. package/dist/formatter.d.ts.map +1 -1
  244. package/dist/formatter.js +30 -17
  245. package/dist/formatter.js.map +1 -1
  246. package/dist/index.js +355 -239
  247. package/dist/index.js.map +1 -1
  248. package/dist/infrastructure/ai/cohere-ai-service.d.ts +56 -0
  249. package/dist/infrastructure/ai/cohere-ai-service.d.ts.map +1 -0
  250. package/dist/infrastructure/ai/cohere-ai-service.js +594 -0
  251. package/dist/infrastructure/ai/cohere-ai-service.js.map +1 -0
  252. package/dist/infrastructure/ai/command-r-evaluation.d.ts +42 -0
  253. package/dist/infrastructure/ai/command-r-evaluation.d.ts.map +1 -0
  254. package/dist/infrastructure/ai/command-r-evaluation.js +206 -0
  255. package/dist/infrastructure/ai/command-r-evaluation.js.map +1 -0
  256. package/dist/infrastructure/ai/model-config.d.ts +47 -0
  257. package/dist/infrastructure/ai/model-config.d.ts.map +1 -0
  258. package/dist/infrastructure/ai/model-config.js +84 -0
  259. package/dist/infrastructure/ai/model-config.js.map +1 -0
  260. package/dist/infrastructure/cache/embedding-cache.d.ts +46 -0
  261. package/dist/infrastructure/cache/embedding-cache.d.ts.map +1 -0
  262. package/dist/infrastructure/cache/embedding-cache.js +104 -0
  263. package/dist/infrastructure/cache/embedding-cache.js.map +1 -0
  264. package/dist/infrastructure/cache/query-result-cache.d.ts +68 -0
  265. package/dist/infrastructure/cache/query-result-cache.d.ts.map +1 -0
  266. package/dist/infrastructure/cache/query-result-cache.js +138 -0
  267. package/dist/infrastructure/cache/query-result-cache.js.map +1 -0
  268. package/dist/infrastructure/cache/security-scan-cache.d.ts +57 -0
  269. package/dist/infrastructure/cache/security-scan-cache.d.ts.map +1 -0
  270. package/dist/infrastructure/cache/security-scan-cache.js +124 -0
  271. package/dist/infrastructure/cache/security-scan-cache.js.map +1 -0
  272. package/dist/infrastructure/chunking/ast-code-chunker.d.ts +12 -0
  273. package/dist/infrastructure/chunking/ast-code-chunker.d.ts.map +1 -0
  274. package/dist/infrastructure/chunking/ast-code-chunker.js +19 -0
  275. package/dist/infrastructure/chunking/ast-code-chunker.js.map +1 -0
  276. package/dist/infrastructure/chunking/code-aware-chunker.d.ts +63 -0
  277. package/dist/infrastructure/chunking/code-aware-chunker.d.ts.map +1 -0
  278. package/dist/infrastructure/chunking/code-aware-chunker.js +397 -0
  279. package/dist/infrastructure/chunking/code-aware-chunker.js.map +1 -0
  280. package/dist/infrastructure/completion/bash-completion.d.ts +8 -0
  281. package/dist/infrastructure/completion/bash-completion.d.ts.map +1 -0
  282. package/dist/infrastructure/completion/bash-completion.js +101 -0
  283. package/dist/infrastructure/completion/bash-completion.js.map +1 -0
  284. package/dist/infrastructure/completion/completion-generator.d.ts +42 -0
  285. package/dist/infrastructure/completion/completion-generator.d.ts.map +1 -0
  286. package/dist/infrastructure/completion/completion-generator.js +184 -0
  287. package/dist/infrastructure/completion/completion-generator.js.map +1 -0
  288. package/dist/infrastructure/completion/fish-completion.d.ts +8 -0
  289. package/dist/infrastructure/completion/fish-completion.d.ts.map +1 -0
  290. package/dist/infrastructure/completion/fish-completion.js +65 -0
  291. package/dist/infrastructure/completion/fish-completion.js.map +1 -0
  292. package/dist/infrastructure/completion/zsh-completion.d.ts +8 -0
  293. package/dist/infrastructure/completion/zsh-completion.d.ts.map +1 -0
  294. package/dist/infrastructure/completion/zsh-completion.js +85 -0
  295. package/dist/infrastructure/completion/zsh-completion.js.map +1 -0
  296. package/dist/infrastructure/config/config-manager.d.ts +79 -0
  297. package/dist/infrastructure/config/config-manager.d.ts.map +1 -0
  298. package/dist/infrastructure/config/config-manager.js +162 -0
  299. package/dist/infrastructure/config/config-manager.js.map +1 -0
  300. package/dist/infrastructure/context/context-compressor.d.ts +94 -0
  301. package/dist/infrastructure/context/context-compressor.d.ts.map +1 -0
  302. package/dist/infrastructure/context/context-compressor.js +329 -0
  303. package/dist/infrastructure/context/context-compressor.js.map +1 -0
  304. package/dist/infrastructure/cost/cost-tracker.d.ts +90 -0
  305. package/dist/infrastructure/cost/cost-tracker.d.ts.map +1 -0
  306. package/dist/infrastructure/cost/cost-tracker.js +353 -0
  307. package/dist/infrastructure/cost/cost-tracker.js.map +1 -0
  308. package/dist/infrastructure/file-scanner/file-scanner.d.ts +31 -0
  309. package/dist/infrastructure/file-scanner/file-scanner.d.ts.map +1 -0
  310. package/dist/infrastructure/file-scanner/file-scanner.js +106 -0
  311. package/dist/infrastructure/file-scanner/file-scanner.js.map +1 -0
  312. package/dist/infrastructure/governance/nist-ai-rmf.d.ts +107 -0
  313. package/dist/infrastructure/governance/nist-ai-rmf.d.ts.map +1 -0
  314. package/dist/infrastructure/governance/nist-ai-rmf.js +294 -0
  315. package/dist/infrastructure/governance/nist-ai-rmf.js.map +1 -0
  316. package/dist/infrastructure/governance/policy-as-code.d.ts +90 -0
  317. package/dist/infrastructure/governance/policy-as-code.d.ts.map +1 -0
  318. package/dist/infrastructure/governance/policy-as-code.js +259 -0
  319. package/dist/infrastructure/governance/policy-as-code.js.map +1 -0
  320. package/dist/infrastructure/governance/prompt-to-code-lineage.d.ts +138 -0
  321. package/dist/infrastructure/governance/prompt-to-code-lineage.d.ts.map +1 -0
  322. package/dist/infrastructure/governance/prompt-to-code-lineage.js +241 -0
  323. package/dist/infrastructure/governance/prompt-to-code-lineage.js.map +1 -0
  324. package/dist/infrastructure/index.d.ts +7 -0
  325. package/dist/infrastructure/index.d.ts.map +1 -0
  326. package/dist/infrastructure/index.js +7 -0
  327. package/dist/infrastructure/index.js.map +1 -0
  328. package/dist/infrastructure/observability/execution-tracer.d.ts +108 -0
  329. package/dist/infrastructure/observability/execution-tracer.d.ts.map +1 -0
  330. package/dist/infrastructure/observability/execution-tracer.js +227 -0
  331. package/dist/infrastructure/observability/execution-tracer.js.map +1 -0
  332. package/dist/infrastructure/observability/prompt-versioner.d.ts +67 -0
  333. package/dist/infrastructure/observability/prompt-versioner.d.ts.map +1 -0
  334. package/dist/infrastructure/observability/prompt-versioner.js +145 -0
  335. package/dist/infrastructure/observability/prompt-versioner.js.map +1 -0
  336. package/dist/infrastructure/protocols/a2a-metadata.d.ts +278 -0
  337. package/dist/infrastructure/protocols/a2a-metadata.d.ts.map +1 -0
  338. package/dist/infrastructure/protocols/a2a-metadata.js +137 -0
  339. package/dist/infrastructure/protocols/a2a-metadata.js.map +1 -0
  340. package/dist/infrastructure/protocols/a2a-protocol.d.ts +132 -0
  341. package/dist/infrastructure/protocols/a2a-protocol.d.ts.map +1 -0
  342. package/dist/infrastructure/protocols/a2a-protocol.js +314 -0
  343. package/dist/infrastructure/protocols/a2a-protocol.js.map +1 -0
  344. package/dist/infrastructure/protocols/mcp-oauth.d.ts +91 -0
  345. package/dist/infrastructure/protocols/mcp-oauth.d.ts.map +1 -0
  346. package/dist/infrastructure/protocols/mcp-oauth.js +184 -0
  347. package/dist/infrastructure/protocols/mcp-oauth.js.map +1 -0
  348. package/dist/infrastructure/protocols/mcp-server.d.ts +126 -0
  349. package/dist/infrastructure/protocols/mcp-server.d.ts.map +1 -0
  350. package/dist/infrastructure/protocols/mcp-server.js +333 -0
  351. package/dist/infrastructure/protocols/mcp-server.js.map +1 -0
  352. package/dist/infrastructure/protocols/streaming-handler.d.ts +57 -0
  353. package/dist/infrastructure/protocols/streaming-handler.d.ts.map +1 -0
  354. package/dist/infrastructure/protocols/streaming-handler.js +103 -0
  355. package/dist/infrastructure/protocols/streaming-handler.js.map +1 -0
  356. package/dist/infrastructure/security/ai-sast-scanner.d.ts +59 -0
  357. package/dist/infrastructure/security/ai-sast-scanner.d.ts.map +1 -0
  358. package/dist/infrastructure/security/ai-sast-scanner.js +241 -0
  359. package/dist/infrastructure/security/ai-sast-scanner.js.map +1 -0
  360. package/dist/infrastructure/security/docker-sandbox.d.ts +57 -0
  361. package/dist/infrastructure/security/docker-sandbox.d.ts.map +1 -0
  362. package/dist/infrastructure/security/docker-sandbox.js +178 -0
  363. package/dist/infrastructure/security/docker-sandbox.js.map +1 -0
  364. package/dist/infrastructure/security/enhanced-security-gate.d.ts +53 -0
  365. package/dist/infrastructure/security/enhanced-security-gate.d.ts.map +1 -0
  366. package/dist/infrastructure/security/enhanced-security-gate.js +151 -0
  367. package/dist/infrastructure/security/enhanced-security-gate.js.map +1 -0
  368. package/dist/infrastructure/security/input-validator.d.ts +33 -0
  369. package/dist/infrastructure/security/input-validator.d.ts.map +1 -0
  370. package/dist/infrastructure/security/input-validator.js +152 -0
  371. package/dist/infrastructure/security/input-validator.js.map +1 -0
  372. package/dist/infrastructure/security/license-scanner.d.ts +55 -0
  373. package/dist/infrastructure/security/license-scanner.d.ts.map +1 -0
  374. package/dist/infrastructure/security/license-scanner.js +167 -0
  375. package/dist/infrastructure/security/license-scanner.js.map +1 -0
  376. package/dist/infrastructure/security/provider-bias-detector.d.ts +53 -0
  377. package/dist/infrastructure/security/provider-bias-detector.d.ts.map +1 -0
  378. package/dist/infrastructure/security/provider-bias-detector.js +164 -0
  379. package/dist/infrastructure/security/provider-bias-detector.js.map +1 -0
  380. package/dist/infrastructure/security/sandbox-executor.d.ts +34 -0
  381. package/dist/infrastructure/security/sandbox-executor.d.ts.map +1 -0
  382. package/dist/infrastructure/security/sandbox-executor.js +64 -0
  383. package/dist/infrastructure/security/sandbox-executor.js.map +1 -0
  384. package/dist/infrastructure/storage/memory-stream-service.d.ts +47 -0
  385. package/dist/infrastructure/storage/memory-stream-service.d.ts.map +1 -0
  386. package/dist/infrastructure/storage/memory-stream-service.js +204 -0
  387. package/dist/infrastructure/storage/memory-stream-service.js.map +1 -0
  388. package/dist/infrastructure/storage/plan-repository.d.ts +38 -0
  389. package/dist/infrastructure/storage/plan-repository.d.ts.map +1 -0
  390. package/dist/infrastructure/storage/plan-repository.js +133 -0
  391. package/dist/infrastructure/storage/plan-repository.js.map +1 -0
  392. package/dist/infrastructure/storage/sqlite-decision-repository.d.ts +29 -0
  393. package/dist/infrastructure/storage/sqlite-decision-repository.d.ts.map +1 -0
  394. package/dist/infrastructure/storage/sqlite-decision-repository.js +232 -0
  395. package/dist/infrastructure/storage/sqlite-decision-repository.js.map +1 -0
  396. package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts +35 -0
  397. package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts.map +1 -0
  398. package/dist/infrastructure/storage/sqlite-embedding-repository.js +277 -0
  399. package/dist/infrastructure/storage/sqlite-embedding-repository.js.map +1 -0
  400. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.d.ts +41 -0
  401. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.d.ts.map +1 -0
  402. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js +417 -0
  403. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js.map +1 -0
  404. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.d.ts +29 -0
  405. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.d.ts.map +1 -0
  406. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js +230 -0
  407. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js.map +1 -0
  408. package/dist/infrastructure/storage/sqlite-memory-repository.d.ts +40 -0
  409. package/dist/infrastructure/storage/sqlite-memory-repository.d.ts.map +1 -0
  410. package/dist/infrastructure/storage/sqlite-memory-repository.js +229 -0
  411. package/dist/infrastructure/storage/sqlite-memory-repository.js.map +1 -0
  412. package/dist/infrastructure/storage/sqlite-pattern-repository.d.ts +25 -0
  413. package/dist/infrastructure/storage/sqlite-pattern-repository.d.ts.map +1 -0
  414. package/dist/infrastructure/storage/sqlite-pattern-repository.js +249 -0
  415. package/dist/infrastructure/storage/sqlite-pattern-repository.js.map +1 -0
  416. package/dist/infrastructure/ux/appropriate-friction.d.ts +77 -0
  417. package/dist/infrastructure/ux/appropriate-friction.d.ts.map +1 -0
  418. package/dist/infrastructure/ux/appropriate-friction.js +213 -0
  419. package/dist/infrastructure/ux/appropriate-friction.js.map +1 -0
  420. package/dist/infrastructure/ux/bi-directional-learning.d.ts +109 -0
  421. package/dist/infrastructure/ux/bi-directional-learning.d.ts.map +1 -0
  422. package/dist/infrastructure/ux/bi-directional-learning.js +200 -0
  423. package/dist/infrastructure/ux/bi-directional-learning.js.map +1 -0
  424. package/dist/infrastructure/ux/contextual-feature-discovery.d.ts +24 -0
  425. package/dist/infrastructure/ux/contextual-feature-discovery.d.ts.map +1 -0
  426. package/dist/infrastructure/ux/contextual-feature-discovery.js +144 -0
  427. package/dist/infrastructure/ux/contextual-feature-discovery.js.map +1 -0
  428. package/dist/infrastructure/ux/expectation-management.d.ts +98 -0
  429. package/dist/infrastructure/ux/expectation-management.d.ts.map +1 -0
  430. package/dist/infrastructure/ux/expectation-management.js +327 -0
  431. package/dist/infrastructure/ux/expectation-management.js.map +1 -0
  432. package/dist/infrastructure/ux/feature-discovery.d.ts +47 -0
  433. package/dist/infrastructure/ux/feature-discovery.d.ts.map +1 -0
  434. package/dist/infrastructure/ux/feature-discovery.js +190 -0
  435. package/dist/infrastructure/ux/feature-discovery.js.map +1 -0
  436. package/dist/infrastructure/ux/hitl-review-portal.d.ts +47 -0
  437. package/dist/infrastructure/ux/hitl-review-portal.d.ts.map +1 -0
  438. package/dist/infrastructure/ux/hitl-review-portal.js +225 -0
  439. package/dist/infrastructure/ux/hitl-review-portal.js.map +1 -0
  440. package/dist/infrastructure/ux/hitl-validation.d.ts +104 -0
  441. package/dist/infrastructure/ux/hitl-validation.d.ts.map +1 -0
  442. package/dist/infrastructure/ux/hitl-validation.js +211 -0
  443. package/dist/infrastructure/ux/hitl-validation.js.map +1 -0
  444. package/dist/infrastructure/ux/progress-indicator.d.ts +54 -0
  445. package/dist/infrastructure/ux/progress-indicator.d.ts.map +1 -0
  446. package/dist/infrastructure/ux/progress-indicator.js +121 -0
  447. package/dist/infrastructure/ux/progress-indicator.js.map +1 -0
  448. package/dist/infrastructure/ux/progressive-disclosure.d.ts +84 -0
  449. package/dist/infrastructure/ux/progressive-disclosure.d.ts.map +1 -0
  450. package/dist/infrastructure/ux/progressive-disclosure.js +236 -0
  451. package/dist/infrastructure/ux/progressive-disclosure.js.map +1 -0
  452. package/dist/infrastructure/ux/review-checkpoint.d.ts +35 -0
  453. package/dist/infrastructure/ux/review-checkpoint.d.ts.map +1 -0
  454. package/dist/infrastructure/ux/review-checkpoint.js +119 -0
  455. package/dist/infrastructure/ux/review-checkpoint.js.map +1 -0
  456. package/dist/infrastructure/ux/staged-feature-intro.d.ts +47 -0
  457. package/dist/infrastructure/ux/staged-feature-intro.d.ts.map +1 -0
  458. package/dist/infrastructure/ux/staged-feature-intro.js +144 -0
  459. package/dist/infrastructure/ux/staged-feature-intro.js.map +1 -0
  460. package/dist/infrastructure/ux/syntax-highlighter.d.ts +21 -0
  461. package/dist/infrastructure/ux/syntax-highlighter.d.ts.map +1 -0
  462. package/dist/infrastructure/ux/syntax-highlighter.js +172 -0
  463. package/dist/infrastructure/ux/syntax-highlighter.js.map +1 -0
  464. package/dist/infrastructure/ux/team-standards.d.ts +94 -0
  465. package/dist/infrastructure/ux/team-standards.d.ts.map +1 -0
  466. package/dist/infrastructure/ux/team-standards.js +196 -0
  467. package/dist/infrastructure/ux/team-standards.js.map +1 -0
  468. package/dist/infrastructure/verification/verification-service.d.ts +12 -0
  469. package/dist/infrastructure/verification/verification-service.d.ts.map +1 -0
  470. package/dist/infrastructure/verification/verification-service.js +47 -0
  471. package/dist/infrastructure/verification/verification-service.js.map +1 -0
  472. package/dist/infrastructure/xai/attention-visualizer.d.ts +73 -0
  473. package/dist/infrastructure/xai/attention-visualizer.d.ts.map +1 -0
  474. package/dist/infrastructure/xai/attention-visualizer.js +174 -0
  475. package/dist/infrastructure/xai/attention-visualizer.js.map +1 -0
  476. package/dist/infrastructure/xai/cot-visualizer.d.ts +106 -0
  477. package/dist/infrastructure/xai/cot-visualizer.d.ts.map +1 -0
  478. package/dist/infrastructure/xai/cot-visualizer.js +286 -0
  479. package/dist/infrastructure/xai/cot-visualizer.js.map +1 -0
  480. package/dist/infrastructure/xai/decision-tree-log.d.ts +104 -0
  481. package/dist/infrastructure/xai/decision-tree-log.d.ts.map +1 -0
  482. package/dist/infrastructure/xai/decision-tree-log.js +216 -0
  483. package/dist/infrastructure/xai/decision-tree-log.js.map +1 -0
  484. package/dist/infrastructure/xai/interactive-xai.d.ts +106 -0
  485. package/dist/infrastructure/xai/interactive-xai.d.ts.map +1 -0
  486. package/dist/infrastructure/xai/interactive-xai.js +262 -0
  487. package/dist/infrastructure/xai/interactive-xai.js.map +1 -0
  488. package/dist/infrastructure/xai/uncertainty-quantifier.d.ts +80 -0
  489. package/dist/infrastructure/xai/uncertainty-quantifier.d.ts.map +1 -0
  490. package/dist/infrastructure/xai/uncertainty-quantifier.js +201 -0
  491. package/dist/infrastructure/xai/uncertainty-quantifier.js.map +1 -0
  492. package/dist/intelligent-retrieval.d.ts.map +1 -1
  493. package/dist/intelligent-retrieval.js +8 -1
  494. package/dist/intelligent-retrieval.js.map +1 -1
  495. package/dist/intent/classifier.d.ts +6 -0
  496. package/dist/intent/classifier.d.ts.map +1 -0
  497. package/dist/intent/classifier.js +2 -0
  498. package/dist/intent/classifier.js.map +1 -0
  499. package/dist/intent/context.d.ts +4 -0
  500. package/dist/intent/context.d.ts.map +1 -0
  501. package/dist/intent/context.js +2 -0
  502. package/dist/intent/context.js.map +1 -0
  503. package/dist/iterative-refinement.d.ts.map +1 -1
  504. package/dist/iterative-refinement.js +20 -3
  505. package/dist/iterative-refinement.js.map +1 -1
  506. package/dist/learning.d.ts.map +1 -1
  507. package/dist/learning.js +1 -2
  508. package/dist/learning.js.map +1 -1
  509. package/dist/monitoring.d.ts.map +1 -1
  510. package/dist/monitoring.js +1 -2
  511. package/dist/monitoring.js.map +1 -1
  512. package/dist/parallel-processor.d.ts +3 -2
  513. package/dist/parallel-processor.d.ts.map +1 -1
  514. package/dist/parallel-processor.js +183 -56
  515. package/dist/parallel-processor.js.map +1 -1
  516. package/dist/presentation/cli/commands/ask-command.d.ts +8 -0
  517. package/dist/presentation/cli/commands/ask-command.d.ts.map +1 -0
  518. package/dist/presentation/cli/commands/ask-command.js +190 -0
  519. package/dist/presentation/cli/commands/ask-command.js.map +1 -0
  520. package/dist/presentation/cli/commands/config-command.d.ts +9 -0
  521. package/dist/presentation/cli/commands/config-command.d.ts.map +1 -0
  522. package/dist/presentation/cli/commands/config-command.js +123 -0
  523. package/dist/presentation/cli/commands/config-command.js.map +1 -0
  524. package/dist/presentation/cli/commands/cost-command.d.ts +8 -0
  525. package/dist/presentation/cli/commands/cost-command.d.ts.map +1 -0
  526. package/dist/presentation/cli/commands/cost-command.js +191 -0
  527. package/dist/presentation/cli/commands/cost-command.js.map +1 -0
  528. package/dist/presentation/cli/commands/decision-command.d.ts +12 -0
  529. package/dist/presentation/cli/commands/decision-command.d.ts.map +1 -0
  530. package/dist/presentation/cli/commands/decision-command.js +207 -0
  531. package/dist/presentation/cli/commands/decision-command.js.map +1 -0
  532. package/dist/presentation/cli/commands/help-command.d.ts +9 -0
  533. package/dist/presentation/cli/commands/help-command.d.ts.map +1 -0
  534. package/dist/presentation/cli/commands/help-command.js +281 -0
  535. package/dist/presentation/cli/commands/help-command.js.map +1 -0
  536. package/dist/presentation/cli/commands/knowledge-command.d.ts +13 -0
  537. package/dist/presentation/cli/commands/knowledge-command.d.ts.map +1 -0
  538. package/dist/presentation/cli/commands/knowledge-command.js +129 -0
  539. package/dist/presentation/cli/commands/knowledge-command.js.map +1 -0
  540. package/dist/presentation/cli/commands/learning-dashboard-command.d.ts +8 -0
  541. package/dist/presentation/cli/commands/learning-dashboard-command.d.ts.map +1 -0
  542. package/dist/presentation/cli/commands/learning-dashboard-command.js +183 -0
  543. package/dist/presentation/cli/commands/learning-dashboard-command.js.map +1 -0
  544. package/dist/presentation/cli/commands/orchestrate-command.d.ts +9 -0
  545. package/dist/presentation/cli/commands/orchestrate-command.d.ts.map +1 -0
  546. package/dist/presentation/cli/commands/orchestrate-command.js +146 -0
  547. package/dist/presentation/cli/commands/orchestrate-command.js.map +1 -0
  548. package/dist/presentation/cli/commands/plan-command.d.ts +8 -0
  549. package/dist/presentation/cli/commands/plan-command.d.ts.map +1 -0
  550. package/dist/presentation/cli/commands/plan-command.js +166 -0
  551. package/dist/presentation/cli/commands/plan-command.js.map +1 -0
  552. package/dist/presentation/cli/commands/react-command.d.ts +8 -0
  553. package/dist/presentation/cli/commands/react-command.d.ts.map +1 -0
  554. package/dist/presentation/cli/commands/react-command.js +179 -0
  555. package/dist/presentation/cli/commands/react-command.js.map +1 -0
  556. package/dist/presentation/cli/commands/setup-command.d.ts +10 -0
  557. package/dist/presentation/cli/commands/setup-command.d.ts.map +1 -0
  558. package/dist/presentation/cli/commands/setup-command.js +286 -0
  559. package/dist/presentation/cli/commands/setup-command.js.map +1 -0
  560. package/dist/presentation/cli/commands/smart-command.d.ts +6 -0
  561. package/dist/presentation/cli/commands/smart-command.d.ts.map +1 -0
  562. package/dist/presentation/cli/commands/smart-command.js +330 -0
  563. package/dist/presentation/cli/commands/smart-command.js.map +1 -0
  564. package/dist/presentation/cli/commands/trace-command.d.ts +8 -0
  565. package/dist/presentation/cli/commands/trace-command.d.ts.map +1 -0
  566. package/dist/presentation/cli/commands/trace-command.js +129 -0
  567. package/dist/presentation/cli/commands/trace-command.js.map +1 -0
  568. package/dist/presentation/cli/commands/undo-command.d.ts +8 -0
  569. package/dist/presentation/cli/commands/undo-command.d.ts.map +1 -0
  570. package/dist/presentation/cli/commands/undo-command.js +150 -0
  571. package/dist/presentation/cli/commands/undo-command.js.map +1 -0
  572. package/dist/presentation/cli/error-display.d.ts +25 -0
  573. package/dist/presentation/cli/error-display.d.ts.map +1 -0
  574. package/dist/presentation/cli/error-display.js +297 -0
  575. package/dist/presentation/cli/error-display.js.map +1 -0
  576. package/dist/presentation/cli/keyboard-shortcuts.d.ts +27 -0
  577. package/dist/presentation/cli/keyboard-shortcuts.d.ts.map +1 -0
  578. package/dist/presentation/cli/keyboard-shortcuts.js +77 -0
  579. package/dist/presentation/cli/keyboard-shortcuts.js.map +1 -0
  580. package/dist/refactor.d.ts.map +1 -1
  581. package/dist/refactor.js +2 -4
  582. package/dist/refactor.js.map +1 -1
  583. package/dist/search.d.ts.map +1 -1
  584. package/dist/search.js +2 -63
  585. package/dist/search.js.map +1 -1
  586. package/dist/session.d.ts.map +1 -1
  587. package/dist/session.js +72 -3
  588. package/dist/session.js.map +1 -1
  589. package/dist/testgen.d.ts.map +1 -1
  590. package/dist/testgen.js +1 -2
  591. package/dist/testgen.js.map +1 -1
  592. package/dist/tools/bash.d.ts +53 -0
  593. package/dist/tools/bash.d.ts.map +1 -0
  594. package/dist/tools/bash.js +213 -0
  595. package/dist/tools/bash.js.map +1 -0
  596. package/dist/tools/edit.d.ts +48 -0
  597. package/dist/tools/edit.d.ts.map +1 -0
  598. package/dist/tools/edit.js +235 -0
  599. package/dist/tools/edit.js.map +1 -0
  600. package/dist/tools/executor.d.ts +29 -0
  601. package/dist/tools/executor.d.ts.map +1 -0
  602. package/dist/tools/executor.js +153 -0
  603. package/dist/tools/executor.js.map +1 -0
  604. package/dist/tools/git-tool.d.ts +87 -0
  605. package/dist/tools/git-tool.d.ts.map +1 -0
  606. package/dist/tools/git-tool.js +292 -0
  607. package/dist/tools/git-tool.js.map +1 -0
  608. package/dist/tools/parser.d.ts +33 -0
  609. package/dist/tools/parser.d.ts.map +1 -0
  610. package/dist/tools/parser.js +158 -0
  611. package/dist/tools/parser.js.map +1 -0
  612. package/dist/tools/registry.d.ts +74 -0
  613. package/dist/tools/registry.d.ts.map +1 -0
  614. package/dist/tools/registry.js +302 -0
  615. package/dist/tools/registry.js.map +1 -0
  616. package/dist/tools/search.d.ts +41 -0
  617. package/dist/tools/search.d.ts.map +1 -0
  618. package/dist/tools/search.js +100 -0
  619. package/dist/tools/search.js.map +1 -0
  620. package/dist/ui.d.ts.map +1 -1
  621. package/dist/ui.js +4 -2
  622. package/dist/ui.js.map +1 -1
  623. package/dist/utils/check-api-status.d.ts +12 -0
  624. package/dist/utils/check-api-status.d.ts.map +1 -0
  625. package/dist/utils/check-api-status.js +82 -0
  626. package/dist/utils/check-api-status.js.map +1 -0
  627. package/dist/utils/diff-parser.d.ts +22 -0
  628. package/dist/utils/diff-parser.d.ts.map +1 -0
  629. package/dist/utils/diff-parser.js +160 -0
  630. package/dist/utils/diff-parser.js.map +1 -0
  631. package/dist/utils/logger.d.ts +34 -0
  632. package/dist/utils/logger.d.ts.map +1 -0
  633. package/dist/utils/logger.js +56 -0
  634. package/dist/utils/logger.js.map +1 -0
  635. package/dist/utils/version.d.ts +21 -0
  636. package/dist/utils/version.d.ts.map +1 -0
  637. package/dist/utils/version.js +52 -0
  638. package/dist/utils/version.js.map +1 -0
  639. package/dist/verification/backup.d.ts +30 -0
  640. package/dist/verification/backup.d.ts.map +1 -0
  641. package/dist/verification/backup.js +259 -0
  642. package/dist/verification/backup.js.map +1 -0
  643. package/dist/verification/compiler.d.ts +20 -0
  644. package/dist/verification/compiler.d.ts.map +1 -0
  645. package/dist/verification/compiler.js +263 -0
  646. package/dist/verification/compiler.js.map +1 -0
  647. package/dist/verification/index.d.ts +59 -0
  648. package/dist/verification/index.d.ts.map +1 -0
  649. package/dist/verification/index.js +273 -0
  650. package/dist/verification/index.js.map +1 -0
  651. package/dist/verification/test-runner.d.ts +27 -0
  652. package/dist/verification/test-runner.d.ts.map +1 -0
  653. package/dist/verification/test-runner.js +379 -0
  654. package/dist/verification/test-runner.js.map +1 -0
  655. package/package.json +39 -14
  656. package/ARCHITECTURE.md +0 -240
  657. package/CHANGELOG.md +0 -44
  658. package/CONTRIBUTING.md +0 -171
  659. package/dist/benchmark.d.ts +0 -39
  660. package/dist/benchmark.d.ts.map +0 -1
  661. package/dist/benchmark.js +0 -195
  662. package/dist/benchmark.js.map +0 -1
  663. package/dist/scaffold.d.ts +0 -14
  664. package/dist/scaffold.d.ts.map +0 -1
  665. package/dist/scaffold.js +0 -85
  666. package/dist/scaffold.js.map +0 -1
  667. package/templates/next-page/app/layout.tsx +0 -19
  668. package/templates/next-page/app/page.tsx +0 -10
  669. package/templates/next-page/package.json +0 -22
  670. package/templates/node-api/index.js +0 -57
  671. package/templates/node-api/package.json +0 -13
@@ -0,0 +1,752 @@
1
+ /**
2
+ * Application Use Case: EditFileUseCase
3
+ * Handles file editing with verification and Reflexion
4
+ */
5
+ import { container } from '../services/dependency-container.js';
6
+ import { backupFile, rollbackFile } from '../../verification/backup.js';
7
+ import { executionTracer } from '../../infrastructure/observability/execution-tracer.js';
8
+ import { validateFilePath } from '../../infrastructure/security/input-validator.js';
9
+ export class EditFileUseCase {
10
+ aiService;
11
+ verificationService;
12
+ sastScanner;
13
+ enhancedSecurityGate;
14
+ appropriateFriction;
15
+ hitlValidation;
16
+ biDirectionalLearning;
17
+ teamStandards;
18
+ promptToCodeLineage;
19
+ nistAIRMF;
20
+ policyAsCode;
21
+ constructor(aiService, verificationService, sastScanner, // Optional: AI SAST scanner (legacy, prefer enhancedSecurityGate)
22
+ enhancedSecurityGate, // Optional: Enhanced security gate (all scanners)
23
+ appropriateFriction, // Optional: Appropriate friction system
24
+ hitlValidation, // Optional: HITL validation system
25
+ biDirectionalLearning, // Optional: Bi-directional learning system
26
+ teamStandards, // Optional: Team standards system
27
+ promptToCodeLineage, // Optional: Prompt-to-code lineage tracking
28
+ nistAIRMF, // Optional: NIST AI RMF for enterprise governance
29
+ policyAsCode // Optional: Policy-as-Code for automated compliance
30
+ ) {
31
+ this.aiService = aiService;
32
+ this.verificationService = verificationService;
33
+ this.sastScanner = sastScanner;
34
+ this.enhancedSecurityGate = enhancedSecurityGate;
35
+ this.appropriateFriction = appropriateFriction;
36
+ this.hitlValidation = hitlValidation;
37
+ this.biDirectionalLearning = biDirectionalLearning;
38
+ this.teamStandards = teamStandards;
39
+ this.promptToCodeLineage = promptToCodeLineage;
40
+ this.nistAIRMF = nistAIRMF;
41
+ this.policyAsCode = policyAsCode;
42
+ }
43
+ async execute(request) {
44
+ // 1. Start Prompt-to-Code Lineage tracking
45
+ let lineageId;
46
+ let rootNodeId;
47
+ if (this.promptToCodeLineage) {
48
+ const runId = executionTracer.getCurrentRunId();
49
+ if (runId) {
50
+ lineageId = this.promptToCodeLineage.createLineage(request.instruction, {
51
+ sessionId: runId,
52
+ workspace: process.cwd(),
53
+ });
54
+ const lineage = lineageId ? this.promptToCodeLineage.getLineage(lineageId) : undefined;
55
+ rootNodeId = lineage?.rootNodeId;
56
+ }
57
+ else {
58
+ // No run context - create lineage without sessionId
59
+ lineageId = this.promptToCodeLineage.createLineage(request.instruction);
60
+ const lineage = lineageId ? this.promptToCodeLineage.getLineage(lineageId) : undefined;
61
+ rootNodeId = lineage?.rootNodeId;
62
+ }
63
+ }
64
+ // Validate file path
65
+ const pathValidation = validateFilePath(request.filepath);
66
+ if (!pathValidation.valid) {
67
+ return {
68
+ success: false,
69
+ error: `Invalid file path: ${pathValidation.errors.join(', ')}`,
70
+ };
71
+ }
72
+ // NIST AI RMF: GOVERN - Establish risk culture and accountability (Enterprise Governance)
73
+ if (this.nistAIRMF) {
74
+ // Check if file exists for context type (quick check)
75
+ const { existsSync } = await import('fs');
76
+ const { join } = await import('path');
77
+ const safeFilePath = pathValidation.sanitized || request.filepath;
78
+ const fullPath = join(process.cwd(), safeFilePath);
79
+ const fileExists = existsSync(fullPath);
80
+ const riskContext = {
81
+ contextType: fileExists ? 'code_edit' : 'code_generation',
82
+ targetDomain: this.inferDomain(request.filepath, request.instruction),
83
+ riskLevel: this.determineRiskLevel(request.instruction, ''),
84
+ regulatoryRelevant: this.isRegulatoryRelevant(request.filepath, request.instruction),
85
+ };
86
+ const governDecision = await this.nistAIRMF.govern(riskContext);
87
+ console.log(`[EditFileUseCase] NIST AI RMF Govern: ${governDecision.decision}`);
88
+ if (governDecision.outcome === 'blocked') {
89
+ return {
90
+ success: false,
91
+ error: `Operation blocked by governance policy: ${governDecision.rationale}`,
92
+ };
93
+ }
94
+ if (governDecision.outcome === 'requires_review') {
95
+ console.warn(`[EditFileUseCase] ⚠️ Governance requires review: ${governDecision.rationale}`);
96
+ }
97
+ }
98
+ // CRITICAL FIX: Security check FIRST (before any expensive operations)
99
+ // This prevents wasting time and tokens on dangerous code
100
+ // RESEARCH CONTEXT: 45% of AI-generated code has security flaws, 35% has license issues
101
+ // Use Enhanced Security Gate if available (includes all scanners), fallback to SAST only
102
+ if (this.enhancedSecurityGate) {
103
+ // Fast pre-check on instruction before generating edit
104
+ const fastCheck = await this.enhancedSecurityGate.fastCheck(request.instruction);
105
+ if (!fastCheck.allowed) {
106
+ return {
107
+ success: false,
108
+ error: `Security vulnerabilities detected in instruction: ${fastCheck.findings.join('; ')}`,
109
+ securityFindings: fastCheck.findings,
110
+ };
111
+ }
112
+ }
113
+ else if (this.sastScanner) {
114
+ // Legacy: Quick security check on instruction before generating edit
115
+ // This is a fast pattern-based check, full AI scan happens after edit generation
116
+ const quickSecurityCheck = await this.sastScanner.scanInstruction(request.instruction);
117
+ if (quickSecurityCheck && quickSecurityCheck.findings && quickSecurityCheck.findings.length > 0) {
118
+ const criticalFindings = quickSecurityCheck.findings.filter((f) => f.severity === 'critical') || [];
119
+ const highFindings = quickSecurityCheck.findings.filter((f) => f.severity === 'high') || [];
120
+ if (criticalFindings.length > 0 || highFindings.length > 0) {
121
+ return {
122
+ success: false,
123
+ error: `Security vulnerabilities detected: ${criticalFindings.length} critical, ${highFindings.length} high severity findings. Review and fix before applying.`,
124
+ securityFindings: quickSecurityCheck.findings,
125
+ };
126
+ }
127
+ }
128
+ }
129
+ const { readFileSync, writeFileSync, existsSync, mkdirSync } = await import('fs');
130
+ const { join, dirname } = await import('path');
131
+ // Use sanitized path if validation found issues
132
+ const safeFilePath = pathValidation.sanitized || request.filepath;
133
+ const fullPath = join(process.cwd(), safeFilePath);
134
+ const fileExists = existsSync(fullPath);
135
+ // Determine risk level for friction/HITL
136
+ const riskLevel = this.determineRiskLevel(request.instruction, fileExists ? '' : '');
137
+ // 2. Check Appropriate Friction (after security check, before edit generation)
138
+ let frictionApplied = null;
139
+ if (this.appropriateFriction) {
140
+ const frictionPoint = this.appropriateFriction.needsFriction('edit_file', {
141
+ riskLevel,
142
+ isDestructive: !fileExists || request.instruction.toLowerCase().includes('delete'),
143
+ modifiesSecuritySensitiveCode: request.instruction.toLowerCase().includes('security') ||
144
+ request.instruction.toLowerCase().includes('auth') ||
145
+ request.instruction.toLowerCase().includes('password'),
146
+ });
147
+ if (frictionPoint) {
148
+ frictionApplied = frictionPoint;
149
+ console.log(`[EditFileUseCase] ⚠️ Friction applied: ${frictionPoint.message}`);
150
+ // For CLI: Log warning. For UI: This would pause and wait for user interaction
151
+ if (frictionPoint.requiresExplicitConfirmation) {
152
+ // In CLI, we'll allow it but log the warning
153
+ // In UI, this would block until user confirms
154
+ console.warn(`[EditFileUseCase] Explicit confirmation required: ${frictionPoint.message}`);
155
+ }
156
+ }
157
+ }
158
+ // Handle file creation if file doesn't exist
159
+ if (!fileExists) {
160
+ console.log(`[EditFileUseCase] File does not exist, creating new file: ${fullPath}`);
161
+ console.log(`[EditFileUseCase] Instruction: ${request.instruction}`);
162
+ return await this.createFile(request, fullPath);
163
+ }
164
+ console.log(`[EditFileUseCase] Editing existing file: ${fullPath}`);
165
+ console.log(`[EditFileUseCase] Instruction: ${request.instruction}`);
166
+ // Read current content
167
+ const currentContent = readFileSync(fullPath, 'utf-8');
168
+ console.log(`[EditFileUseCase] File size: ${currentContent.length} chars`);
169
+ // Update risk level with file context
170
+ const updatedRiskLevel = this.determineRiskLevel(request.instruction, currentContent);
171
+ // 3. Check HITL Validation requirement
172
+ let hitlRequired = false;
173
+ let hitlCheckpointId;
174
+ if (this.hitlValidation && this.hitlValidation.requiresValidation({
175
+ riskLevel: updatedRiskLevel,
176
+ isDestructive: request.instruction.toLowerCase().includes('delete'),
177
+ modifiesSecuritySensitiveCode: request.instruction.toLowerCase().includes('security') ||
178
+ request.instruction.toLowerCase().includes('auth') ||
179
+ request.instruction.toLowerCase().includes('password'),
180
+ })) {
181
+ hitlRequired = true;
182
+ // Note: In CLI, we proceed with warning. In UI, this would block until approval
183
+ console.warn(`[EditFileUseCase] ⚠️ HITL validation required for this operation`);
184
+ }
185
+ // Track edit generation in lineage
186
+ if (this.promptToCodeLineage && lineageId && rootNodeId) {
187
+ this.promptToCodeLineage.addNode(lineageId, {
188
+ type: 'plan',
189
+ timestamp: Date.now(),
190
+ description: `Generating edit for ${request.filepath}`,
191
+ input: { instruction: request.instruction, filepath: request.filepath },
192
+ metadata: { riskLevel: updatedRiskLevel },
193
+ }, rootNodeId);
194
+ }
195
+ // Generate edit (with progress indicator for better UX)
196
+ let diff;
197
+ try {
198
+ // Show progress indicator for code generation (can take 20-30s)
199
+ const { createSpinner } = await import('../../ui.js');
200
+ const codeGenSpinner = createSpinner('Generating code changes...');
201
+ codeGenSpinner.start();
202
+ diff = await this.aiService.generateEdit(currentContent, request.instruction, request.filepath);
203
+ codeGenSpinner.stop();
204
+ console.log(`[EditFileUseCase] Generated diff length: ${diff.length} chars`);
205
+ if (diff.length > 0) {
206
+ console.log(`[EditFileUseCase] Diff preview: ${diff.substring(0, 200)}...`);
207
+ }
208
+ else {
209
+ console.warn(`[EditFileUseCase] Warning: Empty diff generated`);
210
+ }
211
+ }
212
+ catch (error) {
213
+ console.error(`[EditFileUseCase] Failed to generate edit:`, error);
214
+ return {
215
+ success: false,
216
+ error: `Failed to generate edit: ${error instanceof Error ? error.message : String(error)}`,
217
+ };
218
+ }
219
+ // Apply diff
220
+ let newContent;
221
+ try {
222
+ newContent = await this.applyDiff(currentContent, diff);
223
+ console.log(`[EditFileUseCase] Applied diff, new content size: ${newContent.length} chars`);
224
+ // Check if content actually changed
225
+ if (newContent === currentContent) {
226
+ console.warn(`[EditFileUseCase] Warning: Content unchanged after applying diff`);
227
+ }
228
+ else {
229
+ const diffSize = newContent.length - currentContent.length;
230
+ console.log(`[EditFileUseCase] Content changed: ${diffSize > 0 ? '+' : ''}${diffSize} chars difference`);
231
+ }
232
+ }
233
+ catch (error) {
234
+ console.error(`[EditFileUseCase] Failed to apply diff:`, error);
235
+ return {
236
+ success: false,
237
+ error: `Failed to apply diff: ${error instanceof Error ? error.message : String(error)}`,
238
+ };
239
+ }
240
+ // Comprehensive security scan - before verification
241
+ // RESEARCH CONTEXT: 45% AI code has flaws, 35% license issues, provider bias risk
242
+ // Use Enhanced Security Gate if available (all scanners), fallback to SAST only
243
+ let securityResult = null; // Will be set by security scan
244
+ if (this.enhancedSecurityGate) {
245
+ // Show progress indicator for security scanning (can take 10-15s)
246
+ const { createSpinner } = await import('../../ui.js');
247
+ const securitySpinner = createSpinner('Scanning for security vulnerabilities...');
248
+ securitySpinner.start();
249
+ // Comprehensive scan: SAST + License + Provider Bias + Uncertainty
250
+ securityResult = await this.enhancedSecurityGate.scan(request.filepath, newContent, request.instruction, { query: request.instruction });
251
+ securitySpinner.stop();
252
+ if (!securityResult.passed) {
253
+ const errorMessages = [
254
+ ...securityResult.errors,
255
+ ...securityResult.warnings.map((w) => `Warning: ${w}`),
256
+ ];
257
+ return {
258
+ success: false,
259
+ error: `Security validation failed: ${errorMessages.join('; ')}`,
260
+ securityFindings: securityResult.sast.findings,
261
+ licenseFindings: securityResult.license.findings,
262
+ providerBiasFindings: securityResult.providerBias.findings,
263
+ uncertaintyFindings: securityResult.uncertainty,
264
+ };
265
+ }
266
+ // Log warnings for non-blocking issues (provider bias, uncertainty)
267
+ if (securityResult.warnings.length > 0) {
268
+ console.warn(`[EditFileUseCase] Security warnings: ${securityResult.warnings.join('; ')}`);
269
+ }
270
+ // NIST AI RMF: MAP - Context framing and risk identification (Enterprise Governance)
271
+ if (this.nistAIRMF) {
272
+ const riskContext = {
273
+ contextType: fileExists ? 'code_edit' : 'code_generation',
274
+ targetDomain: this.inferDomain(request.filepath, request.instruction),
275
+ riskLevel: this.determineRiskLevel(request.instruction, newContent),
276
+ regulatoryRelevant: this.isRegulatoryRelevant(request.filepath, request.instruction),
277
+ };
278
+ const { decision: mapDecision, riskProfile } = await this.nistAIRMF.map(riskContext, {
279
+ security: {
280
+ vulnerabilities: securityResult.sast.findings?.length || 0,
281
+ licenseConflicts: securityResult.license.findings?.length || 0,
282
+ providerBias: (securityResult.providerBias.findings?.length || 0) > 0,
283
+ uncertainty: securityResult.uncertainty?.combined?.value || 0.5,
284
+ },
285
+ compliance: {
286
+ gdprRelevant: riskContext.regulatoryRelevant,
287
+ hipaaRelevant: this.inferDomain(request.filepath, request.instruction) === 'healthcare',
288
+ },
289
+ operational: {
290
+ complexity: newContent.length > 1000 ? 0.8 : 0.5,
291
+ dependencies: 0, // Could be enhanced
292
+ },
293
+ });
294
+ console.log(`[EditFileUseCase] NIST AI RMF Map: ${mapDecision.decision}`);
295
+ if (mapDecision.outcome === 'blocked') {
296
+ return {
297
+ success: false,
298
+ error: `Operation blocked by risk mapping: ${mapDecision.rationale}`,
299
+ securityFindings: securityResult.sast.findings,
300
+ licenseFindings: securityResult.license.findings,
301
+ providerBiasFindings: securityResult.providerBias.findings,
302
+ uncertaintyFindings: securityResult.uncertainty,
303
+ };
304
+ }
305
+ // NIST AI RMF: MEASURE - Quantify and monitor risks (Enterprise Governance)
306
+ const measureDecision = await this.nistAIRMF.measure(riskProfile, {
307
+ sastFindings: securityResult.sast.findings?.length || 0,
308
+ licenseFindings: securityResult.license.findings?.length || 0,
309
+ providerBiasFindings: securityResult.providerBias.findings?.length || 0,
310
+ uncertaintyScore: securityResult.uncertainty?.combined?.value,
311
+ });
312
+ console.log(`[EditFileUseCase] NIST AI RMF Measure: ${measureDecision.decision}`);
313
+ }
314
+ // Policy-as-Code: Evaluate policies before proceeding (Enterprise Governance)
315
+ if (this.policyAsCode) {
316
+ // Debug: Log security findings before policy evaluation
317
+ const criticalHighFindings = securityResult.sast.findings.filter((f) => f.severity === 'critical' || f.severity === 'high');
318
+ console.log(`[EditFileUseCase] Security scan: ${securityResult.sast.findings.length} total findings, ${criticalHighFindings.length} critical/high`);
319
+ if (criticalHighFindings.length > 0) {
320
+ console.log(`[EditFileUseCase] Critical/High findings:`, criticalHighFindings.map((f) => `${f.severity}: ${f.category} - ${f.description}`).join('; '));
321
+ }
322
+ const policyEvaluation = await this.policyAsCode.evaluate({
323
+ filepath: request.filepath,
324
+ code: newContent,
325
+ instruction: request.instruction,
326
+ securityFindings: securityResult.sast.findings,
327
+ licenseFindings: securityResult.license.findings,
328
+ providerBiasFindings: securityResult.providerBias.findings,
329
+ uncertainty: securityResult.uncertainty,
330
+ });
331
+ // Debug: Log policy evaluation results
332
+ console.log(`[EditFileUseCase] Policy evaluation: ${policyEvaluation.results.length} rules evaluated, ${policyEvaluation.blockingRules.length} blocking`);
333
+ policyEvaluation.results.forEach((result) => {
334
+ if (!result.passed) {
335
+ console.log(`[EditFileUseCase] Policy rule "${result.ruleName}": ${result.message}`);
336
+ if (result.evidence) {
337
+ console.log(`[EditFileUseCase] Evidence:`, JSON.stringify(result.evidence, null, 2));
338
+ }
339
+ }
340
+ });
341
+ if (!policyEvaluation.passed && policyEvaluation.blockingRules.length > 0) {
342
+ const blockingRule = policyEvaluation.blockingRules[0];
343
+ console.error(`[EditFileUseCase] Policy violation: ${blockingRule.ruleName} - ${blockingRule.message}`);
344
+ return {
345
+ success: false,
346
+ error: `Policy violation: ${blockingRule.message}`,
347
+ securityFindings: securityResult.sast.findings,
348
+ licenseFindings: securityResult.license.findings,
349
+ providerBiasFindings: securityResult.providerBias.findings,
350
+ uncertaintyFindings: securityResult.uncertainty,
351
+ };
352
+ }
353
+ if (policyEvaluation.results.length > 0) {
354
+ console.log(`[EditFileUseCase] Policy evaluation: ${policyEvaluation.results.filter(r => r.passed).length}/${policyEvaluation.results.length} passed`);
355
+ }
356
+ }
357
+ // Track security scan in lineage
358
+ if (this.promptToCodeLineage && lineageId && rootNodeId) {
359
+ this.promptToCodeLineage.addNode(lineageId, {
360
+ type: 'verification',
361
+ timestamp: Date.now(),
362
+ description: 'Security scan completed',
363
+ input: { filepath: request.filepath },
364
+ output: { passed: securityResult.passed, findings: securityResult.errors.length },
365
+ metadata: {
366
+ securityScan: true,
367
+ licenseIssues: securityResult.license.findings?.length || 0,
368
+ providerBiasIssues: securityResult.providerBias.findings?.length || 0,
369
+ },
370
+ }, rootNodeId);
371
+ }
372
+ }
373
+ else if (this.sastScanner) {
374
+ // Legacy: SAST-only scan
375
+ const securityCheck = await this.sastScanner.scan(request.filepath, newContent);
376
+ const criticalFindings = securityCheck.findings?.filter(f => f.severity === 'critical') || [];
377
+ const highFindings = securityCheck.findings?.filter(f => f.severity === 'high') || [];
378
+ // Block edits with critical or high severity findings
379
+ if (criticalFindings.length > 0 || highFindings.length > 0) {
380
+ return {
381
+ success: false,
382
+ error: `Security vulnerabilities detected: ${criticalFindings.length} critical, ${highFindings.length} high severity findings. Review and fix before applying.`,
383
+ securityFindings: securityCheck.findings,
384
+ };
385
+ }
386
+ }
387
+ // Create backup before applying edit
388
+ let backupPath;
389
+ try {
390
+ backupPath = await backupFile(fullPath);
391
+ console.log(`[EditFileUseCase] Backup created: ${backupPath}`);
392
+ // Link backup to current run for undo capability
393
+ const runId = executionTracer.getCurrentRunId();
394
+ if (runId) {
395
+ executionTracer.trace({
396
+ operationType: 'file_operation',
397
+ operationName: 'backup',
398
+ input: { filepath: fullPath },
399
+ output: { backupPath },
400
+ metadata: {
401
+ runId,
402
+ filepath: fullPath,
403
+ },
404
+ });
405
+ }
406
+ }
407
+ catch (error) {
408
+ console.warn(`[EditFileUseCase] Failed to create backup: ${error instanceof Error ? error.message : String(error)}`);
409
+ // Continue anyway - backup failure shouldn't block edit
410
+ }
411
+ // 4. Team Standards Validation (before writing file)
412
+ let teamStandardsApplied = false;
413
+ if (this.teamStandards && newContent) {
414
+ const teamId = 'default'; // TODO: Get from config or context
415
+ const standardsResult = this.teamStandards.validateCode(teamId, newContent, request.filepath);
416
+ if (!standardsResult.passed) {
417
+ console.warn(`[EditFileUseCase] Team standards violations: ${standardsResult.violations.length}`);
418
+ // Try auto-fix
419
+ const fixedResult = this.teamStandards.applyStyleGuide(teamId, newContent, request.filepath);
420
+ if (fixedResult.fixesApplied > 0) {
421
+ newContent = fixedResult.modified;
422
+ teamStandardsApplied = true;
423
+ console.log(`[EditFileUseCase] Auto-fixed ${fixedResult.fixesApplied} style issues`);
424
+ }
425
+ else {
426
+ // Critical violations that can't be auto-fixed
427
+ const criticalViolations = standardsResult.issues.filter(i => i.severity === 'error');
428
+ if (criticalViolations.length > 0) {
429
+ return {
430
+ success: false,
431
+ error: `Team standards validation failed: ${criticalViolations.length} critical violations`,
432
+ frictionApplied,
433
+ hitlRequired,
434
+ hitlCheckpointId,
435
+ };
436
+ }
437
+ }
438
+ }
439
+ }
440
+ // Review Checkpoint: Show summary before applying edits (Task 5.1)
441
+ // Display review checkpoint with diff summary, security status, and risk level
442
+ const { displayReviewCheckpoint, calculateDiffSummary } = await import('../../infrastructure/ux/review-checkpoint.js');
443
+ const diffSummary = calculateDiffSummary(currentContent, newContent);
444
+ // Determine risk level for review checkpoint
445
+ let reviewRiskLevel = 'medium';
446
+ if (securityResult) {
447
+ if (securityResult.errors && securityResult.errors.length > 0) {
448
+ reviewRiskLevel = 'critical';
449
+ }
450
+ else if (securityResult.warnings && securityResult.warnings.length > 0) {
451
+ reviewRiskLevel = 'high';
452
+ }
453
+ else {
454
+ reviewRiskLevel = 'low';
455
+ }
456
+ }
457
+ const reviewInfo = {
458
+ filesToModify: [{
459
+ filepath: request.filepath,
460
+ linesAdded: diffSummary.linesAdded,
461
+ linesRemoved: diffSummary.linesRemoved,
462
+ linesChanged: diffSummary.linesChanged,
463
+ }],
464
+ securityScanPassed: securityResult?.passed ?? true,
465
+ compilationValid: true, // Will be verified after write
466
+ riskLevel: reviewRiskLevel,
467
+ uncertainty: securityResult?.uncertainty?.combined?.value,
468
+ };
469
+ displayReviewCheckpoint(reviewInfo);
470
+ // Verify if verification service available
471
+ let verification;
472
+ if (this.verificationService) {
473
+ console.log(`[EditFileUseCase] Writing file and verifying...`);
474
+ writeFileSync(fullPath, newContent, 'utf-8');
475
+ // Show progress indicator for verification (can take 5-10s)
476
+ const { createSpinner } = await import('../../ui.js');
477
+ const verificationSpinner = createSpinner('Verifying code compilation...');
478
+ verificationSpinner.start();
479
+ verification = await this.verificationService.verify(fullPath);
480
+ if (verification.success) {
481
+ verificationSpinner.succeed('Verification passed');
482
+ }
483
+ else {
484
+ verificationSpinner.fail('Verification failed');
485
+ }
486
+ console.log(`[EditFileUseCase] Verification result: success=${verification.success}, compiled=${verification.compiled}, testsPassed=${verification.testsPassed}`);
487
+ if (verification.errors && verification.errors.length > 0) {
488
+ console.error(`[EditFileUseCase] Verification errors: ${verification.errors.join('; ')}`);
489
+ }
490
+ if (!verification.success) {
491
+ console.warn(`[EditFileUseCase] Verification failed, rolling back...`);
492
+ // Automatic rollback on verification failure
493
+ if (backupPath) {
494
+ try {
495
+ await rollbackFile(fullPath, backupPath);
496
+ console.log(`[EditFileUseCase] File rolled back successfully`);
497
+ }
498
+ catch (rollbackError) {
499
+ console.error(`[EditFileUseCase] Rollback failed: ${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)}`);
500
+ // Try to restore from original content as fallback
501
+ try {
502
+ writeFileSync(fullPath, currentContent, 'utf-8');
503
+ console.log(`[EditFileUseCase] File restored from original content`);
504
+ }
505
+ catch (restoreError) {
506
+ console.error(`[EditFileUseCase] Restore also failed: ${restoreError instanceof Error ? restoreError.message : String(restoreError)}`);
507
+ }
508
+ }
509
+ }
510
+ // Use Reflexion to learn from failure
511
+ const reflexionUseCase = container.reflexionUseCase;
512
+ const reflection = await reflexionUseCase.execute({
513
+ trajectory: {
514
+ query: request.instruction,
515
+ steps: [{
516
+ thought: { content: 'Attempting edit', reasoning: request.instruction },
517
+ action: { type: 'tool', name: 'edit', parameters: {} },
518
+ observation: { result: null, success: false, error: verification.errors.join('; ') },
519
+ timestamp: new Date(),
520
+ }],
521
+ success: false,
522
+ },
523
+ reward: 0,
524
+ errors: verification.errors,
525
+ });
526
+ return {
527
+ success: false,
528
+ verification,
529
+ reflection: reflection.reflection,
530
+ error: verification.errors.join('; '),
531
+ };
532
+ }
533
+ }
534
+ else {
535
+ // No verification - just apply (still create backup for undo capability)
536
+ console.log(`[EditFileUseCase] No verification service, writing file directly`);
537
+ writeFileSync(fullPath, newContent, 'utf-8');
538
+ }
539
+ const edit = {
540
+ filepath: request.filepath,
541
+ oldContent: currentContent,
542
+ newContent,
543
+ instruction: request.instruction,
544
+ diff,
545
+ metadata: {
546
+ verificationResult: verification,
547
+ },
548
+ };
549
+ // 5. Record Bi-directional Learning
550
+ if (this.biDirectionalLearning) {
551
+ const userId = 'default'; // TODO: Get from context
552
+ this.biDirectionalLearning.recordFeedback(userId, {
553
+ type: 'edit',
554
+ signal: 'positive', // Successful edit = positive signal
555
+ originalCode: currentContent,
556
+ modifiedCode: newContent,
557
+ filepath: request.filepath,
558
+ context: {
559
+ query: request.instruction,
560
+ generatedBy: 'EditFileUseCase',
561
+ },
562
+ });
563
+ console.log(`[EditFileUseCase] Edit recorded for learning`);
564
+ }
565
+ // 6. Complete Prompt-to-Code Lineage tracking
566
+ if (this.promptToCodeLineage && lineageId && rootNodeId) {
567
+ this.promptToCodeLineage.trackCodeGeneration(lineageId, rootNodeId, {
568
+ filepath: request.filepath,
569
+ content: newContent,
570
+ diff: diff,
571
+ originalContent: currentContent,
572
+ }, {
573
+ verificationPassed: verification?.success || false,
574
+ });
575
+ console.log(`[EditFileUseCase] Lineage tracking complete`);
576
+ }
577
+ console.log(`[EditFileUseCase] Edit completed successfully`);
578
+ return {
579
+ success: true,
580
+ edit,
581
+ verification,
582
+ frictionApplied,
583
+ hitlRequired,
584
+ hitlCheckpointId,
585
+ };
586
+ }
587
+ /**
588
+ * Create a new file with generated content
589
+ */
590
+ async createFile(request, fullPath) {
591
+ const { writeFileSync, mkdirSync, existsSync } = await import('fs');
592
+ const { dirname } = await import('path');
593
+ try {
594
+ // Ensure directory exists
595
+ const dir = dirname(fullPath);
596
+ if (!existsSync(dir)) {
597
+ console.log(`[EditFileUseCase] Creating directory: ${dir}`);
598
+ mkdirSync(dir, { recursive: true });
599
+ }
600
+ // Generate file content using AI
601
+ console.log(`[EditFileUseCase] Generating new file content...`);
602
+ let fileContent;
603
+ try {
604
+ fileContent = await this.aiService.generateFileContent(request.filepath, request.instruction, request.requirements || []);
605
+ console.log(`[EditFileUseCase] Generated content length: ${fileContent.length} chars`);
606
+ }
607
+ catch (error) {
608
+ console.error(`[EditFileUseCase] Failed to generate file content:`, error);
609
+ return {
610
+ success: false,
611
+ error: `Failed to generate file content: ${error instanceof Error ? error.message : String(error)}`,
612
+ };
613
+ }
614
+ // Security scan before writing
615
+ if (this.sastScanner) {
616
+ const securityCheck = await this.sastScanner.scan(request.filepath, fileContent);
617
+ const criticalFindings = securityCheck.findings?.filter(f => f.severity === 'critical') || [];
618
+ const highFindings = securityCheck.findings?.filter(f => f.severity === 'high') || [];
619
+ if (criticalFindings.length > 0 || highFindings.length > 0) {
620
+ return {
621
+ success: false,
622
+ error: `Security vulnerabilities detected: ${criticalFindings.length} critical, ${highFindings.length} high severity findings. Review and fix before creating.`,
623
+ securityFindings: securityCheck.findings,
624
+ };
625
+ }
626
+ }
627
+ // Write file
628
+ writeFileSync(fullPath, fileContent, 'utf-8');
629
+ console.log(`[EditFileUseCase] File created successfully: ${fullPath}`);
630
+ // Verify if verification service available
631
+ let verification;
632
+ if (this.verificationService) {
633
+ console.log(`[EditFileUseCase] Verifying new file...`);
634
+ verification = await this.verificationService.verify(fullPath);
635
+ console.log(`[EditFileUseCase] Verification result: success=${verification.success}, compiled=${verification.compiled}, testsPassed=${verification.testsPassed}`);
636
+ if (!verification.success) {
637
+ console.warn(`[EditFileUseCase] Verification failed for new file, but keeping it for inspection`);
638
+ return {
639
+ success: false,
640
+ verification,
641
+ error: verification.errors?.join('; ') || 'Verification failed',
642
+ };
643
+ }
644
+ }
645
+ const edit = {
646
+ filepath: request.filepath,
647
+ oldContent: '', // No old content for new files
648
+ newContent: fileContent,
649
+ instruction: request.instruction,
650
+ diff: `New file created: ${request.filepath}`,
651
+ metadata: {
652
+ verificationResult: verification,
653
+ },
654
+ };
655
+ console.log(`[EditFileUseCase] File creation completed successfully`);
656
+ return {
657
+ success: true,
658
+ edit,
659
+ verification,
660
+ };
661
+ }
662
+ catch (error) {
663
+ console.error(`[EditFileUseCase] Failed to create file:`, error);
664
+ return {
665
+ success: false,
666
+ error: `Failed to create file: ${error instanceof Error ? error.message : String(error)}`,
667
+ };
668
+ }
669
+ }
670
+ async applyDiff(content, diff) {
671
+ try {
672
+ const { applyEditFallback } = await import('../../utils/diff-parser.js');
673
+ return applyEditFallback(content, diff);
674
+ }
675
+ catch (error) {
676
+ console.error('Failed to apply diff:', error);
677
+ // Fallback: if diff parsing fails, return original content
678
+ // This prevents silent failures
679
+ throw new Error(`Failed to apply diff: ${error instanceof Error ? error.message : String(error)}`);
680
+ }
681
+ }
682
+ /**
683
+ * Determine risk level based on instruction and content
684
+ */
685
+ determineRiskLevel(instruction, currentContent) {
686
+ const instructionLower = instruction.toLowerCase();
687
+ // Critical: Destructive operations
688
+ if (instructionLower.includes('delete') ||
689
+ instructionLower.includes('remove all') ||
690
+ instructionLower.includes('drop table') ||
691
+ instructionLower.includes('rm -rf')) {
692
+ return 'critical';
693
+ }
694
+ // High: Security-sensitive operations
695
+ if (instructionLower.includes('security') ||
696
+ instructionLower.includes('auth') ||
697
+ instructionLower.includes('password') ||
698
+ instructionLower.includes('credential') ||
699
+ instructionLower.includes('token') ||
700
+ instructionLower.includes('api key')) {
701
+ return 'high';
702
+ }
703
+ // High: Large file modifications
704
+ if (currentContent.length > 5000 && instruction.split(' ').length > 30) {
705
+ return 'high';
706
+ }
707
+ // Medium: Complex refactoring
708
+ if (instructionLower.includes('refactor') ||
709
+ instructionLower.includes('restructure') ||
710
+ instructionLower.includes('rewrite')) {
711
+ return 'medium';
712
+ }
713
+ // Low: Simple edits
714
+ return 'low';
715
+ }
716
+ /**
717
+ * Infer domain from filepath and instruction for NIST AI RMF
718
+ */
719
+ inferDomain(filepath, instruction) {
720
+ const pathLower = filepath.toLowerCase();
721
+ const instructionLower = instruction.toLowerCase();
722
+ if (pathLower.includes('health') || instructionLower.includes('health')) {
723
+ return 'healthcare';
724
+ }
725
+ if (pathLower.includes('finance') || pathLower.includes('payment') || instructionLower.includes('finance')) {
726
+ return 'financial';
727
+ }
728
+ if (pathLower.includes('auth') || instructionLower.includes('authentication')) {
729
+ return 'security';
730
+ }
731
+ return 'general';
732
+ }
733
+ /**
734
+ * Determine if operation is regulatory relevant (GDPR, HIPAA, etc.)
735
+ */
736
+ isRegulatoryRelevant(filepath, instruction) {
737
+ const pathLower = filepath.toLowerCase();
738
+ const instructionLower = instruction.toLowerCase();
739
+ // GDPR: Personal data processing
740
+ if (pathLower.includes('user') || pathLower.includes('customer') ||
741
+ instructionLower.includes('personal data') || instructionLower.includes('gdpr')) {
742
+ return true;
743
+ }
744
+ // HIPAA: Healthcare data
745
+ if (pathLower.includes('health') || instructionLower.includes('patient') ||
746
+ instructionLower.includes('medical record')) {
747
+ return true;
748
+ }
749
+ return false;
750
+ }
751
+ }
752
+ //# sourceMappingURL=edit-file-use-case.js.map