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,685 @@
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
196
+ let diff;
197
+ try {
198
+ diff = await this.aiService.generateEdit(currentContent, request.instruction, request.filepath);
199
+ console.log(`[EditFileUseCase] Generated diff length: ${diff.length} chars`);
200
+ if (diff.length > 0) {
201
+ console.log(`[EditFileUseCase] Diff preview: ${diff.substring(0, 200)}...`);
202
+ }
203
+ else {
204
+ console.warn(`[EditFileUseCase] Warning: Empty diff generated`);
205
+ }
206
+ }
207
+ catch (error) {
208
+ console.error(`[EditFileUseCase] Failed to generate edit:`, error);
209
+ return {
210
+ success: false,
211
+ error: `Failed to generate edit: ${error instanceof Error ? error.message : String(error)}`,
212
+ };
213
+ }
214
+ // Apply diff
215
+ let newContent;
216
+ try {
217
+ newContent = await this.applyDiff(currentContent, diff);
218
+ console.log(`[EditFileUseCase] Applied diff, new content size: ${newContent.length} chars`);
219
+ // Check if content actually changed
220
+ if (newContent === currentContent) {
221
+ console.warn(`[EditFileUseCase] Warning: Content unchanged after applying diff`);
222
+ }
223
+ else {
224
+ const diffSize = newContent.length - currentContent.length;
225
+ console.log(`[EditFileUseCase] Content changed: ${diffSize > 0 ? '+' : ''}${diffSize} chars difference`);
226
+ }
227
+ }
228
+ catch (error) {
229
+ console.error(`[EditFileUseCase] Failed to apply diff:`, error);
230
+ return {
231
+ success: false,
232
+ error: `Failed to apply diff: ${error instanceof Error ? error.message : String(error)}`,
233
+ };
234
+ }
235
+ // Comprehensive security scan - before verification
236
+ // RESEARCH CONTEXT: 45% AI code has flaws, 35% license issues, provider bias risk
237
+ // Use Enhanced Security Gate if available (all scanners), fallback to SAST only
238
+ if (this.enhancedSecurityGate) {
239
+ // Comprehensive scan: SAST + License + Provider Bias + Uncertainty
240
+ const securityResult = await this.enhancedSecurityGate.scan(request.filepath, newContent, request.instruction, { query: request.instruction });
241
+ if (!securityResult.passed) {
242
+ const errorMessages = [
243
+ ...securityResult.errors,
244
+ ...securityResult.warnings.map(w => `Warning: ${w}`),
245
+ ];
246
+ return {
247
+ success: false,
248
+ error: `Security validation failed: ${errorMessages.join('; ')}`,
249
+ securityFindings: securityResult.sast.findings,
250
+ licenseFindings: securityResult.license.findings,
251
+ providerBiasFindings: securityResult.providerBias.findings,
252
+ uncertaintyFindings: securityResult.uncertainty,
253
+ };
254
+ }
255
+ // Log warnings for non-blocking issues (provider bias, uncertainty)
256
+ if (securityResult.warnings.length > 0) {
257
+ console.warn(`[EditFileUseCase] Security warnings: ${securityResult.warnings.join('; ')}`);
258
+ }
259
+ // NIST AI RMF: MAP - Context framing and risk identification (Enterprise Governance)
260
+ if (this.nistAIRMF) {
261
+ const riskContext = {
262
+ contextType: fileExists ? 'code_edit' : 'code_generation',
263
+ targetDomain: this.inferDomain(request.filepath, request.instruction),
264
+ riskLevel: this.determineRiskLevel(request.instruction, newContent),
265
+ regulatoryRelevant: this.isRegulatoryRelevant(request.filepath, request.instruction),
266
+ };
267
+ const { decision: mapDecision, riskProfile } = await this.nistAIRMF.map(riskContext, {
268
+ security: {
269
+ vulnerabilities: securityResult.sast.findings?.length || 0,
270
+ licenseConflicts: securityResult.license.findings?.length || 0,
271
+ providerBias: (securityResult.providerBias.findings?.length || 0) > 0,
272
+ uncertainty: securityResult.uncertainty?.combined?.value || 0.5,
273
+ },
274
+ compliance: {
275
+ gdprRelevant: riskContext.regulatoryRelevant,
276
+ hipaaRelevant: this.inferDomain(request.filepath, request.instruction) === 'healthcare',
277
+ },
278
+ operational: {
279
+ complexity: newContent.length > 1000 ? 0.8 : 0.5,
280
+ dependencies: 0, // Could be enhanced
281
+ },
282
+ });
283
+ console.log(`[EditFileUseCase] NIST AI RMF Map: ${mapDecision.decision}`);
284
+ if (mapDecision.outcome === 'blocked') {
285
+ return {
286
+ success: false,
287
+ error: `Operation blocked by risk mapping: ${mapDecision.rationale}`,
288
+ securityFindings: securityResult.sast.findings,
289
+ licenseFindings: securityResult.license.findings,
290
+ providerBiasFindings: securityResult.providerBias.findings,
291
+ uncertaintyFindings: securityResult.uncertainty,
292
+ };
293
+ }
294
+ // NIST AI RMF: MEASURE - Quantify and monitor risks (Enterprise Governance)
295
+ const measureDecision = await this.nistAIRMF.measure(riskProfile, {
296
+ sastFindings: securityResult.sast.findings?.length || 0,
297
+ licenseFindings: securityResult.license.findings?.length || 0,
298
+ providerBiasFindings: securityResult.providerBias.findings?.length || 0,
299
+ uncertaintyScore: securityResult.uncertainty?.combined?.value,
300
+ });
301
+ console.log(`[EditFileUseCase] NIST AI RMF Measure: ${measureDecision.decision}`);
302
+ }
303
+ // Policy-as-Code: Evaluate policies before proceeding (Enterprise Governance)
304
+ if (this.policyAsCode) {
305
+ const policyEvaluation = await this.policyAsCode.evaluate({
306
+ filepath: request.filepath,
307
+ code: newContent,
308
+ instruction: request.instruction,
309
+ securityFindings: securityResult.sast.findings,
310
+ licenseFindings: securityResult.license.findings,
311
+ providerBiasFindings: securityResult.providerBias.findings,
312
+ uncertainty: securityResult.uncertainty,
313
+ });
314
+ if (!policyEvaluation.passed && policyEvaluation.blockingRules.length > 0) {
315
+ const blockingRule = policyEvaluation.blockingRules[0];
316
+ console.error(`[EditFileUseCase] Policy violation: ${blockingRule.ruleName} - ${blockingRule.message}`);
317
+ return {
318
+ success: false,
319
+ error: `Policy violation: ${blockingRule.message}`,
320
+ securityFindings: securityResult.sast.findings,
321
+ licenseFindings: securityResult.license.findings,
322
+ providerBiasFindings: securityResult.providerBias.findings,
323
+ uncertaintyFindings: securityResult.uncertainty,
324
+ };
325
+ }
326
+ if (policyEvaluation.results.length > 0) {
327
+ console.log(`[EditFileUseCase] Policy evaluation: ${policyEvaluation.results.filter(r => r.passed).length}/${policyEvaluation.results.length} passed`);
328
+ }
329
+ }
330
+ // Track security scan in lineage
331
+ if (this.promptToCodeLineage && lineageId && rootNodeId) {
332
+ this.promptToCodeLineage.addNode(lineageId, {
333
+ type: 'verification',
334
+ timestamp: Date.now(),
335
+ description: 'Security scan completed',
336
+ input: { filepath: request.filepath },
337
+ output: { passed: securityResult.passed, findings: securityResult.errors.length },
338
+ metadata: {
339
+ securityScan: true,
340
+ licenseIssues: securityResult.license.findings?.length || 0,
341
+ providerBiasIssues: securityResult.providerBias.findings?.length || 0,
342
+ },
343
+ }, rootNodeId);
344
+ }
345
+ }
346
+ else if (this.sastScanner) {
347
+ // Legacy: SAST-only scan
348
+ const securityCheck = await this.sastScanner.scan(request.filepath, newContent);
349
+ const criticalFindings = securityCheck.findings?.filter(f => f.severity === 'critical') || [];
350
+ const highFindings = securityCheck.findings?.filter(f => f.severity === 'high') || [];
351
+ // Block edits with critical or high severity findings
352
+ if (criticalFindings.length > 0 || highFindings.length > 0) {
353
+ return {
354
+ success: false,
355
+ error: `Security vulnerabilities detected: ${criticalFindings.length} critical, ${highFindings.length} high severity findings. Review and fix before applying.`,
356
+ securityFindings: securityCheck.findings,
357
+ };
358
+ }
359
+ }
360
+ // Create backup before applying edit
361
+ let backupPath;
362
+ try {
363
+ backupPath = await backupFile(fullPath);
364
+ console.log(`[EditFileUseCase] Backup created: ${backupPath}`);
365
+ // Link backup to current run for undo capability
366
+ const runId = executionTracer.getCurrentRunId();
367
+ if (runId) {
368
+ executionTracer.trace({
369
+ operationType: 'file_operation',
370
+ operationName: 'backup',
371
+ input: { filepath: fullPath },
372
+ output: { backupPath },
373
+ metadata: {
374
+ runId,
375
+ filepath: fullPath,
376
+ },
377
+ });
378
+ }
379
+ }
380
+ catch (error) {
381
+ console.warn(`[EditFileUseCase] Failed to create backup: ${error instanceof Error ? error.message : String(error)}`);
382
+ // Continue anyway - backup failure shouldn't block edit
383
+ }
384
+ // 4. Team Standards Validation (before writing file)
385
+ let teamStandardsApplied = false;
386
+ if (this.teamStandards && newContent) {
387
+ const teamId = 'default'; // TODO: Get from config or context
388
+ const standardsResult = this.teamStandards.validateCode(teamId, newContent, request.filepath);
389
+ if (!standardsResult.passed) {
390
+ console.warn(`[EditFileUseCase] Team standards violations: ${standardsResult.violations.length}`);
391
+ // Try auto-fix
392
+ const fixedResult = this.teamStandards.applyStyleGuide(teamId, newContent, request.filepath);
393
+ if (fixedResult.fixesApplied > 0) {
394
+ newContent = fixedResult.modified;
395
+ teamStandardsApplied = true;
396
+ console.log(`[EditFileUseCase] Auto-fixed ${fixedResult.fixesApplied} style issues`);
397
+ }
398
+ else {
399
+ // Critical violations that can't be auto-fixed
400
+ const criticalViolations = standardsResult.issues.filter(i => i.severity === 'error');
401
+ if (criticalViolations.length > 0) {
402
+ return {
403
+ success: false,
404
+ error: `Team standards validation failed: ${criticalViolations.length} critical violations`,
405
+ frictionApplied,
406
+ hitlRequired,
407
+ hitlCheckpointId,
408
+ };
409
+ }
410
+ }
411
+ }
412
+ }
413
+ // Verify if verification service available
414
+ let verification;
415
+ if (this.verificationService) {
416
+ console.log(`[EditFileUseCase] Writing file and verifying...`);
417
+ writeFileSync(fullPath, newContent, 'utf-8');
418
+ verification = await this.verificationService.verify(fullPath);
419
+ console.log(`[EditFileUseCase] Verification result: success=${verification.success}, compiled=${verification.compiled}, testsPassed=${verification.testsPassed}`);
420
+ if (verification.errors && verification.errors.length > 0) {
421
+ console.error(`[EditFileUseCase] Verification errors: ${verification.errors.join('; ')}`);
422
+ }
423
+ if (!verification.success) {
424
+ console.warn(`[EditFileUseCase] Verification failed, rolling back...`);
425
+ // Automatic rollback on verification failure
426
+ if (backupPath) {
427
+ try {
428
+ await rollbackFile(fullPath, backupPath);
429
+ console.log(`[EditFileUseCase] File rolled back successfully`);
430
+ }
431
+ catch (rollbackError) {
432
+ console.error(`[EditFileUseCase] Rollback failed: ${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)}`);
433
+ // Try to restore from original content as fallback
434
+ try {
435
+ writeFileSync(fullPath, currentContent, 'utf-8');
436
+ console.log(`[EditFileUseCase] File restored from original content`);
437
+ }
438
+ catch (restoreError) {
439
+ console.error(`[EditFileUseCase] Restore also failed: ${restoreError instanceof Error ? restoreError.message : String(restoreError)}`);
440
+ }
441
+ }
442
+ }
443
+ // Use Reflexion to learn from failure
444
+ const reflexionUseCase = container.reflexionUseCase;
445
+ const reflection = await reflexionUseCase.execute({
446
+ trajectory: {
447
+ query: request.instruction,
448
+ steps: [{
449
+ thought: { content: 'Attempting edit', reasoning: request.instruction },
450
+ action: { type: 'tool', name: 'edit', parameters: {} },
451
+ observation: { result: null, success: false, error: verification.errors.join('; ') },
452
+ timestamp: new Date(),
453
+ }],
454
+ success: false,
455
+ },
456
+ reward: 0,
457
+ errors: verification.errors,
458
+ });
459
+ return {
460
+ success: false,
461
+ verification,
462
+ reflection: reflection.reflection,
463
+ error: verification.errors.join('; '),
464
+ };
465
+ }
466
+ }
467
+ else {
468
+ // No verification - just apply (still create backup for undo capability)
469
+ console.log(`[EditFileUseCase] No verification service, writing file directly`);
470
+ writeFileSync(fullPath, newContent, 'utf-8');
471
+ }
472
+ const edit = {
473
+ filepath: request.filepath,
474
+ oldContent: currentContent,
475
+ newContent,
476
+ instruction: request.instruction,
477
+ diff,
478
+ metadata: {
479
+ verificationResult: verification,
480
+ },
481
+ };
482
+ // 5. Record Bi-directional Learning
483
+ if (this.biDirectionalLearning) {
484
+ const userId = 'default'; // TODO: Get from context
485
+ this.biDirectionalLearning.recordFeedback(userId, {
486
+ type: 'edit',
487
+ signal: 'positive', // Successful edit = positive signal
488
+ originalCode: currentContent,
489
+ modifiedCode: newContent,
490
+ filepath: request.filepath,
491
+ context: {
492
+ query: request.instruction,
493
+ generatedBy: 'EditFileUseCase',
494
+ },
495
+ });
496
+ console.log(`[EditFileUseCase] Edit recorded for learning`);
497
+ }
498
+ // 6. Complete Prompt-to-Code Lineage tracking
499
+ if (this.promptToCodeLineage && lineageId && rootNodeId) {
500
+ this.promptToCodeLineage.trackCodeGeneration(lineageId, rootNodeId, {
501
+ filepath: request.filepath,
502
+ content: newContent,
503
+ diff: diff,
504
+ originalContent: currentContent,
505
+ }, {
506
+ verificationPassed: verification?.success || false,
507
+ });
508
+ console.log(`[EditFileUseCase] Lineage tracking complete`);
509
+ }
510
+ console.log(`[EditFileUseCase] Edit completed successfully`);
511
+ return {
512
+ success: true,
513
+ edit,
514
+ verification,
515
+ frictionApplied,
516
+ hitlRequired,
517
+ hitlCheckpointId,
518
+ };
519
+ }
520
+ /**
521
+ * Create a new file with generated content
522
+ */
523
+ async createFile(request, fullPath) {
524
+ const { writeFileSync, mkdirSync, existsSync } = await import('fs');
525
+ const { dirname } = await import('path');
526
+ try {
527
+ // Ensure directory exists
528
+ const dir = dirname(fullPath);
529
+ if (!existsSync(dir)) {
530
+ console.log(`[EditFileUseCase] Creating directory: ${dir}`);
531
+ mkdirSync(dir, { recursive: true });
532
+ }
533
+ // Generate file content using AI
534
+ console.log(`[EditFileUseCase] Generating new file content...`);
535
+ let fileContent;
536
+ try {
537
+ fileContent = await this.aiService.generateFileContent(request.filepath, request.instruction, request.requirements || []);
538
+ console.log(`[EditFileUseCase] Generated content length: ${fileContent.length} chars`);
539
+ }
540
+ catch (error) {
541
+ console.error(`[EditFileUseCase] Failed to generate file content:`, error);
542
+ return {
543
+ success: false,
544
+ error: `Failed to generate file content: ${error instanceof Error ? error.message : String(error)}`,
545
+ };
546
+ }
547
+ // Security scan before writing
548
+ if (this.sastScanner) {
549
+ const securityCheck = await this.sastScanner.scan(request.filepath, fileContent);
550
+ const criticalFindings = securityCheck.findings?.filter(f => f.severity === 'critical') || [];
551
+ const highFindings = securityCheck.findings?.filter(f => f.severity === 'high') || [];
552
+ if (criticalFindings.length > 0 || highFindings.length > 0) {
553
+ return {
554
+ success: false,
555
+ error: `Security vulnerabilities detected: ${criticalFindings.length} critical, ${highFindings.length} high severity findings. Review and fix before creating.`,
556
+ securityFindings: securityCheck.findings,
557
+ };
558
+ }
559
+ }
560
+ // Write file
561
+ writeFileSync(fullPath, fileContent, 'utf-8');
562
+ console.log(`[EditFileUseCase] File created successfully: ${fullPath}`);
563
+ // Verify if verification service available
564
+ let verification;
565
+ if (this.verificationService) {
566
+ console.log(`[EditFileUseCase] Verifying new file...`);
567
+ verification = await this.verificationService.verify(fullPath);
568
+ console.log(`[EditFileUseCase] Verification result: success=${verification.success}, compiled=${verification.compiled}, testsPassed=${verification.testsPassed}`);
569
+ if (!verification.success) {
570
+ console.warn(`[EditFileUseCase] Verification failed for new file, but keeping it for inspection`);
571
+ return {
572
+ success: false,
573
+ verification,
574
+ error: verification.errors?.join('; ') || 'Verification failed',
575
+ };
576
+ }
577
+ }
578
+ const edit = {
579
+ filepath: request.filepath,
580
+ oldContent: '', // No old content for new files
581
+ newContent: fileContent,
582
+ instruction: request.instruction,
583
+ diff: `New file created: ${request.filepath}`,
584
+ metadata: {
585
+ verificationResult: verification,
586
+ },
587
+ };
588
+ console.log(`[EditFileUseCase] File creation completed successfully`);
589
+ return {
590
+ success: true,
591
+ edit,
592
+ verification,
593
+ };
594
+ }
595
+ catch (error) {
596
+ console.error(`[EditFileUseCase] Failed to create file:`, error);
597
+ return {
598
+ success: false,
599
+ error: `Failed to create file: ${error instanceof Error ? error.message : String(error)}`,
600
+ };
601
+ }
602
+ }
603
+ async applyDiff(content, diff) {
604
+ try {
605
+ const { applyEditFallback } = await import('../../utils/diff-parser.js');
606
+ return applyEditFallback(content, diff);
607
+ }
608
+ catch (error) {
609
+ console.error('Failed to apply diff:', error);
610
+ // Fallback: if diff parsing fails, return original content
611
+ // This prevents silent failures
612
+ throw new Error(`Failed to apply diff: ${error instanceof Error ? error.message : String(error)}`);
613
+ }
614
+ }
615
+ /**
616
+ * Determine risk level based on instruction and content
617
+ */
618
+ determineRiskLevel(instruction, currentContent) {
619
+ const instructionLower = instruction.toLowerCase();
620
+ // Critical: Destructive operations
621
+ if (instructionLower.includes('delete') ||
622
+ instructionLower.includes('remove all') ||
623
+ instructionLower.includes('drop table') ||
624
+ instructionLower.includes('rm -rf')) {
625
+ return 'critical';
626
+ }
627
+ // High: Security-sensitive operations
628
+ if (instructionLower.includes('security') ||
629
+ instructionLower.includes('auth') ||
630
+ instructionLower.includes('password') ||
631
+ instructionLower.includes('credential') ||
632
+ instructionLower.includes('token') ||
633
+ instructionLower.includes('api key')) {
634
+ return 'high';
635
+ }
636
+ // High: Large file modifications
637
+ if (currentContent.length > 5000 && instruction.split(' ').length > 30) {
638
+ return 'high';
639
+ }
640
+ // Medium: Complex refactoring
641
+ if (instructionLower.includes('refactor') ||
642
+ instructionLower.includes('restructure') ||
643
+ instructionLower.includes('rewrite')) {
644
+ return 'medium';
645
+ }
646
+ // Low: Simple edits
647
+ return 'low';
648
+ }
649
+ /**
650
+ * Infer domain from filepath and instruction for NIST AI RMF
651
+ */
652
+ inferDomain(filepath, instruction) {
653
+ const pathLower = filepath.toLowerCase();
654
+ const instructionLower = instruction.toLowerCase();
655
+ if (pathLower.includes('health') || instructionLower.includes('health')) {
656
+ return 'healthcare';
657
+ }
658
+ if (pathLower.includes('finance') || pathLower.includes('payment') || instructionLower.includes('finance')) {
659
+ return 'financial';
660
+ }
661
+ if (pathLower.includes('auth') || instructionLower.includes('authentication')) {
662
+ return 'security';
663
+ }
664
+ return 'general';
665
+ }
666
+ /**
667
+ * Determine if operation is regulatory relevant (GDPR, HIPAA, etc.)
668
+ */
669
+ isRegulatoryRelevant(filepath, instruction) {
670
+ const pathLower = filepath.toLowerCase();
671
+ const instructionLower = instruction.toLowerCase();
672
+ // GDPR: Personal data processing
673
+ if (pathLower.includes('user') || pathLower.includes('customer') ||
674
+ instructionLower.includes('personal data') || instructionLower.includes('gdpr')) {
675
+ return true;
676
+ }
677
+ // HIPAA: Healthcare data
678
+ if (pathLower.includes('health') || instructionLower.includes('patient') ||
679
+ instructionLower.includes('medical record')) {
680
+ return true;
681
+ }
682
+ return false;
683
+ }
684
+ }
685
+ //# sourceMappingURL=edit-file-use-case.js.map