codehere 0.1.1 → 0.2.2

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.
Files changed (849) hide show
  1. package/README.md +68 -329
  2. package/dist/application/agents/execution-agent.js +4 -30
  3. package/dist/application/agents/multi-agent-orchestrator.js +0 -1
  4. package/dist/application/agents/planning-agent.js +79 -199
  5. package/dist/application/services/dependency-container.js +9 -20
  6. package/dist/application/services/intelligent-router.js +56 -64
  7. package/dist/application/use-cases/ask-question-use-case.js +22 -121
  8. package/dist/application/use-cases/edit-file-use-case.js +171 -160
  9. package/dist/application/use-cases/react-orchestration-use-case.js +10 -43
  10. package/dist/chat.js +130 -54
  11. package/dist/domain/services/query-intent-classifier.js +3 -36
  12. package/dist/embed.js +61 -74
  13. package/dist/index.js +1299 -259
  14. package/dist/infrastructure/ai/cohere-ai-service.js +9 -78
  15. package/dist/infrastructure/ai/provider-ai-service.js +18 -121
  16. package/dist/infrastructure/config/config-manager.js +14 -135
  17. package/dist/infrastructure/config/product-context.js +66 -0
  18. package/dist/infrastructure/context/conversation-context.js +1 -86
  19. package/dist/infrastructure/cost/cost-router.js +104 -0
  20. package/dist/infrastructure/cost/cost-tracker.js +2 -3
  21. package/dist/infrastructure/governance/policy-as-code.js +2 -1
  22. package/dist/infrastructure/hooks/claude-sdk-hook.js +253 -0
  23. package/dist/infrastructure/hooks/session-analyzer.js +111 -0
  24. package/dist/infrastructure/observability/execution-tracer.js +7 -180
  25. package/dist/infrastructure/protocols/mcp-helpers.js +45 -0
  26. package/dist/infrastructure/protocols/mcp-server-impl.js +286 -0
  27. package/dist/infrastructure/providers/cohere-provider.js +5 -31
  28. package/dist/infrastructure/providers/fake-provider.js +0 -8
  29. package/dist/infrastructure/providers/local-llm-provider.js +2 -8
  30. package/dist/infrastructure/providers/openai-provider.js +5 -37
  31. package/dist/infrastructure/providers/openrouter-provider.js +3 -11
  32. package/dist/infrastructure/safety/pattern-detector.js +133 -0
  33. package/dist/infrastructure/security/ai-sast-scanner.js +62 -13
  34. package/dist/infrastructure/security/enhanced-security-gate.js +2 -61
  35. package/dist/infrastructure/security/input-validator.js +29 -146
  36. package/dist/infrastructure/security/trust-scorer.js +337 -0
  37. package/dist/infrastructure/storage/embeddings-path.js +4 -14
  38. package/dist/infrastructure/storage/plan-repository.js +5 -4
  39. package/dist/infrastructure/storage/sqlite-decision-repository.js +8 -4
  40. package/dist/infrastructure/storage/sqlite-embedding-repository.js +11 -23
  41. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js +8 -4
  42. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js +8 -4
  43. package/dist/infrastructure/storage/sqlite-memory-repository.js +8 -4
  44. package/dist/infrastructure/storage/sqlite-pattern-repository.js +8 -4
  45. package/dist/infrastructure/ux/stream-markdown.js +151 -0
  46. package/dist/infrastructure/ux/transparency.js +71 -0
  47. package/dist/infrastructure/validation/agent-feedback.js +12 -57
  48. package/dist/monitoring.js +8 -17
  49. package/dist/parallel-processor.js +50 -122
  50. package/dist/presentation/cli/commands/ask-command.js +39 -80
  51. package/dist/presentation/cli/commands/config-command.js +1 -1
  52. package/dist/presentation/cli/commands/cost-command.js +6 -6
  53. package/dist/presentation/cli/commands/decision-command.js +5 -5
  54. package/dist/presentation/cli/commands/fix-command.js +4 -44
  55. package/dist/presentation/cli/commands/help-command.js +151 -100
  56. package/dist/presentation/cli/commands/hook-command.js +272 -0
  57. package/dist/presentation/cli/commands/knowledge-command.js +4 -4
  58. package/dist/presentation/cli/commands/learning-dashboard-command.js +3 -3
  59. package/dist/presentation/cli/commands/orchestrate-command.js +6 -48
  60. package/dist/presentation/cli/commands/plan-command.js +1 -1
  61. package/dist/presentation/cli/commands/product-command.js +193 -16
  62. package/dist/presentation/cli/commands/report-command.js +353 -0
  63. package/dist/presentation/cli/commands/run-command.js +3 -3
  64. package/dist/presentation/cli/commands/scan-tool-command.js +65 -0
  65. package/dist/presentation/cli/commands/setup-command.js +34 -81
  66. package/dist/presentation/cli/commands/smart-command.js +50 -172
  67. package/dist/presentation/cli/commands/status-command.js +304 -119
  68. package/dist/presentation/cli/commands/trust-command.js +267 -274
  69. package/dist/presentation/cli/commands/undo-command.js +2 -2
  70. package/dist/search.js +37 -67
  71. package/dist/session.js +595 -484
  72. package/dist/task-verification.js +4 -4
  73. package/dist/token-optimizer.js +1 -6
  74. package/dist/ui.js +132 -16
  75. package/dist/utils/check-api-status.js +30 -12
  76. package/dist/utils/diff-parser.js +18 -48
  77. package/dist/verification/compiler.js +12 -11
  78. package/package.json +36 -43
  79. package/dist/agents/base.d.ts +0 -107
  80. package/dist/agents/base.d.ts.map +0 -1
  81. package/dist/agents/base.js.map +0 -1
  82. package/dist/agents/orchestrator-model-driven.d.ts +0 -41
  83. package/dist/agents/orchestrator-model-driven.d.ts.map +0 -1
  84. package/dist/agents/orchestrator-model-driven.js.map +0 -1
  85. package/dist/agents/react-orchestrator-agent.d.ts +0 -15
  86. package/dist/agents/react-orchestrator-agent.d.ts.map +0 -1
  87. package/dist/agents/react-orchestrator-agent.js.map +0 -1
  88. package/dist/application/agents/execution-agent.d.ts +0 -79
  89. package/dist/application/agents/execution-agent.d.ts.map +0 -1
  90. package/dist/application/agents/execution-agent.js.map +0 -1
  91. package/dist/application/agents/multi-agent-orchestrator.d.ts +0 -69
  92. package/dist/application/agents/multi-agent-orchestrator.d.ts.map +0 -1
  93. package/dist/application/agents/multi-agent-orchestrator.js.map +0 -1
  94. package/dist/application/agents/planning-agent.d.ts +0 -65
  95. package/dist/application/agents/planning-agent.d.ts.map +0 -1
  96. package/dist/application/agents/planning-agent.js.map +0 -1
  97. package/dist/application/agents/validation-agent.d.ts +0 -68
  98. package/dist/application/agents/validation-agent.d.ts.map +0 -1
  99. package/dist/application/agents/validation-agent.js.map +0 -1
  100. package/dist/application/architectures/plan-and-act.d.ts +0 -94
  101. package/dist/application/architectures/plan-and-act.d.ts.map +0 -1
  102. package/dist/application/architectures/plan-and-act.js.map +0 -1
  103. package/dist/application/index.d.ts +0 -12
  104. package/dist/application/index.d.ts.map +0 -1
  105. package/dist/application/index.js.map +0 -1
  106. package/dist/application/services/agent-factory.d.ts +0 -9
  107. package/dist/application/services/agent-factory.d.ts.map +0 -1
  108. package/dist/application/services/agent-factory.js.map +0 -1
  109. package/dist/application/services/context-importer.d.ts +0 -71
  110. package/dist/application/services/context-importer.d.ts.map +0 -1
  111. package/dist/application/services/context-importer.js +0 -436
  112. package/dist/application/services/context-importer.js.map +0 -1
  113. package/dist/application/services/context-manager.d.ts +0 -132
  114. package/dist/application/services/context-manager.d.ts.map +0 -1
  115. package/dist/application/services/context-manager.js +0 -369
  116. package/dist/application/services/context-manager.js.map +0 -1
  117. package/dist/application/services/dependency-container.d.ts +0 -187
  118. package/dist/application/services/dependency-container.d.ts.map +0 -1
  119. package/dist/application/services/dependency-container.js.map +0 -1
  120. package/dist/application/services/git-context-service.d.ts +0 -30
  121. package/dist/application/services/git-context-service.d.ts.map +0 -1
  122. package/dist/application/services/git-context-service.js.map +0 -1
  123. package/dist/application/services/intelligent-router.d.ts +0 -90
  124. package/dist/application/services/intelligent-router.d.ts.map +0 -1
  125. package/dist/application/services/intelligent-router.js.map +0 -1
  126. package/dist/application/services/token-counting-service.d.ts +0 -87
  127. package/dist/application/services/token-counting-service.d.ts.map +0 -1
  128. package/dist/application/services/token-counting-service.js +0 -196
  129. package/dist/application/services/token-counting-service.js.map +0 -1
  130. package/dist/application/services/tool-executor-service.d.ts +0 -14
  131. package/dist/application/services/tool-executor-service.d.ts.map +0 -1
  132. package/dist/application/services/tool-executor-service.js.map +0 -1
  133. package/dist/application/use-cases/ask-question-use-case.d.ts +0 -67
  134. package/dist/application/use-cases/ask-question-use-case.d.ts.map +0 -1
  135. package/dist/application/use-cases/ask-question-use-case.js.map +0 -1
  136. package/dist/application/use-cases/edit-file-use-case.d.ts +0 -92
  137. package/dist/application/use-cases/edit-file-use-case.d.ts.map +0 -1
  138. package/dist/application/use-cases/edit-file-use-case.js.map +0 -1
  139. package/dist/application/use-cases/explain-file-use-case.d.ts +0 -21
  140. package/dist/application/use-cases/explain-file-use-case.d.ts.map +0 -1
  141. package/dist/application/use-cases/explain-file-use-case.js.map +0 -1
  142. package/dist/application/use-cases/index-codebase-use-case.d.ts +0 -46
  143. package/dist/application/use-cases/index-codebase-use-case.d.ts.map +0 -1
  144. package/dist/application/use-cases/index-codebase-use-case.js.map +0 -1
  145. package/dist/application/use-cases/planning-use-case.d.ts +0 -46
  146. package/dist/application/use-cases/planning-use-case.d.ts.map +0 -1
  147. package/dist/application/use-cases/planning-use-case.js.map +0 -1
  148. package/dist/application/use-cases/react-orchestration-use-case.d.ts +0 -51
  149. package/dist/application/use-cases/react-orchestration-use-case.d.ts.map +0 -1
  150. package/dist/application/use-cases/react-orchestration-use-case.js.map +0 -1
  151. package/dist/application/use-cases/reflexion-use-case.d.ts +0 -24
  152. package/dist/application/use-cases/reflexion-use-case.d.ts.map +0 -1
  153. package/dist/application/use-cases/reflexion-use-case.js.map +0 -1
  154. package/dist/application/workflows/deterministic-workflows.d.ts +0 -61
  155. package/dist/application/workflows/deterministic-workflows.d.ts.map +0 -1
  156. package/dist/application/workflows/deterministic-workflows.js.map +0 -1
  157. package/dist/ast-parser.d 2.ts +0 -55
  158. package/dist/ast-parser.d.ts +0 -55
  159. package/dist/ast-parser.d.ts.map +0 -1
  160. package/dist/ast-parser.js.map +0 -1
  161. package/dist/cache.d.ts +0 -45
  162. package/dist/cache.d.ts.map +0 -1
  163. package/dist/cache.js.map +0 -1
  164. package/dist/chat.d.ts +0 -4
  165. package/dist/chat.d.ts.map +0 -1
  166. package/dist/chat.js.map +0 -1
  167. package/dist/code-analysis 2.js +0 -327
  168. package/dist/code-analysis.d.ts +0 -50
  169. package/dist/code-analysis.d.ts.map +0 -1
  170. package/dist/code-analysis.js.map +0 -1
  171. package/dist/context.d.ts +0 -44
  172. package/dist/context.d.ts 2.map +0 -1
  173. package/dist/context.d.ts.map +0 -1
  174. package/dist/context.js.map +0 -1
  175. package/dist/docs.d.ts +0 -21
  176. package/dist/docs.d.ts.map +0 -1
  177. package/dist/docs.js.map +0 -1
  178. package/dist/domain/entities/code-chunk.d.ts +0 -26
  179. package/dist/domain/entities/code-chunk.d.ts.map +0 -1
  180. package/dist/domain/entities/code-chunk.js.map +0 -1
  181. package/dist/domain/entities/conversation-context.d.ts +0 -245
  182. package/dist/domain/entities/conversation-context.d.ts.map +0 -1
  183. package/dist/domain/entities/conversation-context.js +0 -50
  184. package/dist/domain/entities/conversation-context.js.map +0 -1
  185. package/dist/domain/entities/decision.d.ts +0 -37
  186. package/dist/domain/entities/decision.d.ts.map +0 -1
  187. package/dist/domain/entities/decision.js.map +0 -1
  188. package/dist/domain/entities/edit.d.ts +0 -35
  189. package/dist/domain/entities/edit.d.ts.map +0 -1
  190. package/dist/domain/entities/edit.js.map +0 -1
  191. package/dist/domain/entities/knowledge-node.d.ts +0 -83
  192. package/dist/domain/entities/knowledge-node.d.ts.map +0 -1
  193. package/dist/domain/entities/knowledge-node.js.map +0 -1
  194. package/dist/domain/entities/knowledge-preservation.d.ts +0 -42
  195. package/dist/domain/entities/knowledge-preservation.d.ts.map +0 -1
  196. package/dist/domain/entities/knowledge-preservation.js.map +0 -1
  197. package/dist/domain/entities/memory.d.ts +0 -36
  198. package/dist/domain/entities/memory.d.ts.map +0 -1
  199. package/dist/domain/entities/memory.js.map +0 -1
  200. package/dist/domain/entities/pattern.d.ts +0 -49
  201. package/dist/domain/entities/pattern.d.ts.map +0 -1
  202. package/dist/domain/entities/pattern.js.map +0 -1
  203. package/dist/domain/entities/plan.d.ts +0 -42
  204. package/dist/domain/entities/plan.d.ts.map +0 -1
  205. package/dist/domain/entities/plan.js.map +0 -1
  206. package/dist/domain/entities/query.d.ts +0 -17
  207. package/dist/domain/entities/query.d.ts.map +0 -1
  208. package/dist/domain/entities/query.js.map +0 -1
  209. package/dist/domain/entities/task.d.ts +0 -152
  210. package/dist/domain/entities/task.d.ts.map +0 -1
  211. package/dist/domain/entities/task.js.map +0 -1
  212. package/dist/domain/errors/embeddings-not-found-error.d.ts +0 -9
  213. package/dist/domain/errors/embeddings-not-found-error.d.ts.map +0 -1
  214. package/dist/domain/errors/embeddings-not-found-error.js.map +0 -1
  215. package/dist/domain/index.d.ts +0 -16
  216. package/dist/domain/index.d.ts.map +0 -1
  217. package/dist/domain/index.js.map +0 -1
  218. package/dist/domain/interfaces/ai-service.interface.d.ts +0 -72
  219. package/dist/domain/interfaces/ai-service.interface.d.ts.map +0 -1
  220. package/dist/domain/interfaces/ai-service.interface.js.map +0 -1
  221. package/dist/domain/interfaces/code-analyzer.interface.d.ts +0 -38
  222. package/dist/domain/interfaces/code-analyzer.interface.d.ts.map +0 -1
  223. package/dist/domain/interfaces/code-analyzer.interface.js.map +0 -1
  224. package/dist/domain/interfaces/context-repository.interface.d.ts +0 -71
  225. package/dist/domain/interfaces/context-repository.interface.d.ts.map +0 -1
  226. package/dist/domain/interfaces/context-repository.interface.js +0 -10
  227. package/dist/domain/interfaces/context-repository.interface.js.map +0 -1
  228. package/dist/domain/interfaces/decision-repository.interface.d.ts +0 -51
  229. package/dist/domain/interfaces/decision-repository.interface.d.ts.map +0 -1
  230. package/dist/domain/interfaces/decision-repository.interface.js.map +0 -1
  231. package/dist/domain/interfaces/embedding-repository.interface.d.ts +0 -33
  232. package/dist/domain/interfaces/embedding-repository.interface.d.ts.map +0 -1
  233. package/dist/domain/interfaces/embedding-repository.interface.js.map +0 -1
  234. package/dist/domain/interfaces/knowledge-graph-repository.interface.d.ts +0 -91
  235. package/dist/domain/interfaces/knowledge-graph-repository.interface.d.ts.map +0 -1
  236. package/dist/domain/interfaces/knowledge-graph-repository.interface.js.map +0 -1
  237. package/dist/domain/interfaces/knowledge-preservation-repository.interface.d.ts +0 -50
  238. package/dist/domain/interfaces/knowledge-preservation-repository.interface.d.ts.map +0 -1
  239. package/dist/domain/interfaces/knowledge-preservation-repository.interface.js.map +0 -1
  240. package/dist/domain/interfaces/memory-repository.interface.d.ts +0 -49
  241. package/dist/domain/interfaces/memory-repository.interface.d.ts.map +0 -1
  242. package/dist/domain/interfaces/memory-repository.interface.js.map +0 -1
  243. package/dist/domain/interfaces/pattern-repository.interface.d.ts +0 -48
  244. package/dist/domain/interfaces/pattern-repository.interface.d.ts.map +0 -1
  245. package/dist/domain/interfaces/pattern-repository.interface.js.map +0 -1
  246. package/dist/domain/interfaces/verification-service.interface.d.ts +0 -20
  247. package/dist/domain/interfaces/verification-service.interface.d.ts.map +0 -1
  248. package/dist/domain/interfaces/verification-service.interface.js.map +0 -1
  249. package/dist/domain/services/codebase-detector.d.ts +0 -18
  250. package/dist/domain/services/codebase-detector.d.ts.map +0 -1
  251. package/dist/domain/services/codebase-detector.js.map +0 -1
  252. package/dist/domain/services/cross-team-pattern-sharing.d.ts +0 -65
  253. package/dist/domain/services/cross-team-pattern-sharing.d.ts.map +0 -1
  254. package/dist/domain/services/cross-team-pattern-sharing.js.map +0 -1
  255. package/dist/domain/services/decision-recorder.d.ts +0 -76
  256. package/dist/domain/services/decision-recorder.d.ts.map +0 -1
  257. package/dist/domain/services/decision-recorder.js.map +0 -1
  258. package/dist/domain/services/decision-retriever.d.ts +0 -75
  259. package/dist/domain/services/decision-retriever.d.ts.map +0 -1
  260. package/dist/domain/services/decision-retriever.js.map +0 -1
  261. package/dist/domain/services/environment-mode-manager.d.ts +0 -12
  262. package/dist/domain/services/environment-mode-manager.d.ts.map +0 -1
  263. package/dist/domain/services/environment-mode-manager.js.map +0 -1
  264. package/dist/domain/services/graded-memory-activation.d.ts +0 -37
  265. package/dist/domain/services/graded-memory-activation.d.ts.map +0 -1
  266. package/dist/domain/services/graded-memory-activation.js.map +0 -1
  267. package/dist/domain/services/knowledge-access.d.ts +0 -63
  268. package/dist/domain/services/knowledge-access.d.ts.map +0 -1
  269. package/dist/domain/services/knowledge-access.js.map +0 -1
  270. package/dist/domain/services/knowledge-extractor.d.ts +0 -54
  271. package/dist/domain/services/knowledge-extractor.d.ts.map +0 -1
  272. package/dist/domain/services/knowledge-extractor.js.map +0 -1
  273. package/dist/domain/services/knowledge-graph-builder.d.ts +0 -70
  274. package/dist/domain/services/knowledge-graph-builder.d.ts.map +0 -1
  275. package/dist/domain/services/knowledge-graph-builder.js.map +0 -1
  276. package/dist/domain/services/knowledge-graph-query.d.ts +0 -69
  277. package/dist/domain/services/knowledge-graph-query.d.ts.map +0 -1
  278. package/dist/domain/services/knowledge-graph-query.js.map +0 -1
  279. package/dist/domain/services/memory-retriever.d.ts +0 -30
  280. package/dist/domain/services/memory-retriever.d.ts.map +0 -1
  281. package/dist/domain/services/memory-retriever.js.map +0 -1
  282. package/dist/domain/services/memory-synthesizer.d.ts +0 -57
  283. package/dist/domain/services/memory-synthesizer.d.ts.map +0 -1
  284. package/dist/domain/services/memory-synthesizer.js.map +0 -1
  285. package/dist/domain/services/pattern-extractor.d.ts +0 -108
  286. package/dist/domain/services/pattern-extractor.d.ts.map +0 -1
  287. package/dist/domain/services/pattern-extractor.js.map +0 -1
  288. package/dist/domain/services/query-intent-classifier.d.ts +0 -16
  289. package/dist/domain/services/query-intent-classifier.d.ts.map +0 -1
  290. package/dist/domain/services/query-intent-classifier.js.map +0 -1
  291. package/dist/domain/services/react-loop.d.ts +0 -52
  292. package/dist/domain/services/react-loop.d.ts.map +0 -1
  293. package/dist/domain/services/react-loop.js.map +0 -1
  294. package/dist/domain/services/risk-tier-detector.d.ts +0 -17
  295. package/dist/domain/services/risk-tier-detector.d.ts.map +0 -1
  296. package/dist/domain/services/risk-tier-detector.js.map +0 -1
  297. package/dist/edit.d.ts +0 -26
  298. package/dist/edit.d.ts 2.map +0 -1
  299. package/dist/edit.d.ts.map +0 -1
  300. package/dist/edit.js.map +0 -1
  301. package/dist/embed.d 2.ts +0 -14
  302. package/dist/embed.d.ts +0 -14
  303. package/dist/embed.d.ts.map +0 -1
  304. package/dist/embed.js.map +0 -1
  305. package/dist/error-handler.d 2.ts +0 -77
  306. package/dist/error-handler.d.ts +0 -77
  307. package/dist/error-handler.d.ts.map +0 -1
  308. package/dist/error-handler.js.map +0 -1
  309. package/dist/formatter 2.js +0 -168
  310. package/dist/formatter.d.ts +0 -25
  311. package/dist/formatter.d.ts 2.map +0 -1
  312. package/dist/formatter.d.ts.map +0 -1
  313. package/dist/formatter.js.map +0 -1
  314. package/dist/git 2.js +0 -198
  315. package/dist/git.d 2.ts +0 -55
  316. package/dist/git.d.ts +0 -55
  317. package/dist/git.d.ts.map +0 -1
  318. package/dist/git.js.map +0 -1
  319. package/dist/index 2.d.ts +0 -16
  320. package/dist/index 2.d.ts.map +0 -1
  321. package/dist/index 2.js +0 -429
  322. package/dist/index 2.js.map +0 -1
  323. package/dist/index-backup-before-lazy-loading.d.ts +0 -3
  324. package/dist/index-backup-before-lazy-loading.d.ts.map +0 -1
  325. package/dist/index-backup-before-lazy-loading.js +0 -1551
  326. package/dist/index-backup-before-lazy-loading.js.map +0 -1
  327. package/dist/index.d.ts +0 -16
  328. package/dist/index.d.ts 2.map +0 -1
  329. package/dist/index.d.ts.map +0 -1
  330. package/dist/index.js 2.map +0 -1
  331. package/dist/index.js.map +0 -1
  332. package/dist/infrastructure/ai/cohere-ai-service.d.ts +0 -71
  333. package/dist/infrastructure/ai/cohere-ai-service.d.ts.map +0 -1
  334. package/dist/infrastructure/ai/cohere-ai-service.js.map +0 -1
  335. package/dist/infrastructure/ai/command-r-evaluation.d.ts +0 -42
  336. package/dist/infrastructure/ai/command-r-evaluation.d.ts.map +0 -1
  337. package/dist/infrastructure/ai/command-r-evaluation.js.map +0 -1
  338. package/dist/infrastructure/ai/model-config.d.ts +0 -47
  339. package/dist/infrastructure/ai/model-config.d.ts.map +0 -1
  340. package/dist/infrastructure/ai/model-config.js.map +0 -1
  341. package/dist/infrastructure/ai/provider-ai-service.d.ts +0 -67
  342. package/dist/infrastructure/ai/provider-ai-service.d.ts.map +0 -1
  343. package/dist/infrastructure/ai/provider-ai-service.js.map +0 -1
  344. package/dist/infrastructure/cache/embedding-cache.d.ts +0 -58
  345. package/dist/infrastructure/cache/embedding-cache.d.ts.map +0 -1
  346. package/dist/infrastructure/cache/embedding-cache.js.map +0 -1
  347. package/dist/infrastructure/cache/query-result-cache.d.ts +0 -27
  348. package/dist/infrastructure/cache/query-result-cache.d.ts.map +0 -1
  349. package/dist/infrastructure/cache/query-result-cache.js.map +0 -1
  350. package/dist/infrastructure/cache/response-cache.d.ts +0 -18
  351. package/dist/infrastructure/cache/response-cache.d.ts.map +0 -1
  352. package/dist/infrastructure/cache/response-cache.js.map +0 -1
  353. package/dist/infrastructure/cache/security-scan-cache.d.ts +0 -16
  354. package/dist/infrastructure/cache/security-scan-cache.d.ts.map +0 -1
  355. package/dist/infrastructure/cache/security-scan-cache.js.map +0 -1
  356. package/dist/infrastructure/chunking/ast-code-chunker.d.ts +0 -12
  357. package/dist/infrastructure/chunking/ast-code-chunker.d.ts.map +0 -1
  358. package/dist/infrastructure/chunking/ast-code-chunker.js.map +0 -1
  359. package/dist/infrastructure/chunking/code-aware-chunker.d.ts +0 -63
  360. package/dist/infrastructure/chunking/code-aware-chunker.d.ts.map +0 -1
  361. package/dist/infrastructure/chunking/code-aware-chunker.js.map +0 -1
  362. package/dist/infrastructure/completion/bash-completion.d.ts +0 -7
  363. package/dist/infrastructure/completion/bash-completion.d.ts.map +0 -1
  364. package/dist/infrastructure/completion/bash-completion.js.map +0 -1
  365. package/dist/infrastructure/completion/fish-completion.d.ts +0 -7
  366. package/dist/infrastructure/completion/fish-completion.d.ts.map +0 -1
  367. package/dist/infrastructure/completion/fish-completion.js.map +0 -1
  368. package/dist/infrastructure/completion/zsh-completion.d.ts +0 -7
  369. package/dist/infrastructure/completion/zsh-completion.d.ts.map +0 -1
  370. package/dist/infrastructure/completion/zsh-completion.js.map +0 -1
  371. package/dist/infrastructure/config/config-manager.d.ts +0 -158
  372. package/dist/infrastructure/config/config-manager.d.ts.map +0 -1
  373. package/dist/infrastructure/config/config-manager.js.map +0 -1
  374. package/dist/infrastructure/context/context-compressor.d.ts +0 -94
  375. package/dist/infrastructure/context/context-compressor.d.ts.map +0 -1
  376. package/dist/infrastructure/context/context-compressor.js.map +0 -1
  377. package/dist/infrastructure/context/conversation-context.d.ts +0 -82
  378. package/dist/infrastructure/context/conversation-context.d.ts.map +0 -1
  379. package/dist/infrastructure/context/conversation-context.js.map +0 -1
  380. package/dist/infrastructure/context/direct-context-provider.d.ts +0 -18
  381. package/dist/infrastructure/context/direct-context-provider.d.ts.map +0 -1
  382. package/dist/infrastructure/context/direct-context-provider.js +0 -222
  383. package/dist/infrastructure/context/direct-context-provider.js.map +0 -1
  384. package/dist/infrastructure/context/git-context-provider.d.ts +0 -30
  385. package/dist/infrastructure/context/git-context-provider.d.ts.map +0 -1
  386. package/dist/infrastructure/context/git-context-provider.js +0 -140
  387. package/dist/infrastructure/context/git-context-provider.js.map +0 -1
  388. package/dist/infrastructure/context/project-context-loader.d.ts +0 -35
  389. package/dist/infrastructure/context/project-context-loader.d.ts.map +0 -1
  390. package/dist/infrastructure/context/project-context-loader.js +0 -184
  391. package/dist/infrastructure/context/project-context-loader.js.map +0 -1
  392. package/dist/infrastructure/context/session-manager.d.ts +0 -42
  393. package/dist/infrastructure/context/session-manager.d.ts.map +0 -1
  394. package/dist/infrastructure/context/session-manager.js.map +0 -1
  395. package/dist/infrastructure/cost/cost-tracker.d.ts +0 -91
  396. package/dist/infrastructure/cost/cost-tracker.d.ts.map +0 -1
  397. package/dist/infrastructure/cost/cost-tracker.js.map +0 -1
  398. package/dist/infrastructure/cost/session-token-tracker.d.ts +0 -68
  399. package/dist/infrastructure/cost/session-token-tracker.d.ts.map +0 -1
  400. package/dist/infrastructure/cost/session-token-tracker.js +0 -178
  401. package/dist/infrastructure/cost/session-token-tracker.js.map +0 -1
  402. package/dist/infrastructure/cost-calculator.d.ts +0 -34
  403. package/dist/infrastructure/cost-calculator.d.ts.map +0 -1
  404. package/dist/infrastructure/cost-calculator.js +0 -145
  405. package/dist/infrastructure/cost-calculator.js.map +0 -1
  406. package/dist/infrastructure/cost-estimator.d.ts +0 -48
  407. package/dist/infrastructure/cost-estimator.d.ts.map +0 -1
  408. package/dist/infrastructure/cost-estimator.js +0 -201
  409. package/dist/infrastructure/cost-estimator.js.map +0 -1
  410. package/dist/infrastructure/file-scanner/file-scanner.d.ts +0 -31
  411. package/dist/infrastructure/file-scanner/file-scanner.d.ts.map +0 -1
  412. package/dist/infrastructure/file-scanner/file-scanner.js.map +0 -1
  413. package/dist/infrastructure/governance/nist-ai-rmf.d.ts +0 -105
  414. package/dist/infrastructure/governance/nist-ai-rmf.d.ts.map +0 -1
  415. package/dist/infrastructure/governance/nist-ai-rmf.js.map +0 -1
  416. package/dist/infrastructure/governance/policy-as-code.d.ts +0 -88
  417. package/dist/infrastructure/governance/policy-as-code.d.ts.map +0 -1
  418. package/dist/infrastructure/governance/policy-as-code.js.map +0 -1
  419. package/dist/infrastructure/governance/prompt-to-code-lineage.d.ts +0 -136
  420. package/dist/infrastructure/governance/prompt-to-code-lineage.d.ts.map +0 -1
  421. package/dist/infrastructure/governance/prompt-to-code-lineage.js.map +0 -1
  422. package/dist/infrastructure/index.d.ts +0 -7
  423. package/dist/infrastructure/index.d.ts.map +0 -1
  424. package/dist/infrastructure/index.js.map +0 -1
  425. package/dist/infrastructure/observability/execution-tracer.d.ts +0 -130
  426. package/dist/infrastructure/observability/execution-tracer.d.ts.map +0 -1
  427. package/dist/infrastructure/observability/execution-tracer.js.map +0 -1
  428. package/dist/infrastructure/observability/prompt-versioner.d.ts +0 -67
  429. package/dist/infrastructure/observability/prompt-versioner.d.ts.map +0 -1
  430. package/dist/infrastructure/observability/prompt-versioner.js.map +0 -1
  431. package/dist/infrastructure/protocols/a2a-metadata.d.ts +0 -278
  432. package/dist/infrastructure/protocols/a2a-metadata.d.ts.map +0 -1
  433. package/dist/infrastructure/protocols/a2a-metadata.js.map +0 -1
  434. package/dist/infrastructure/protocols/a2a-protocol.d.ts +0 -132
  435. package/dist/infrastructure/protocols/a2a-protocol.d.ts.map +0 -1
  436. package/dist/infrastructure/protocols/a2a-protocol.js.map +0 -1
  437. package/dist/infrastructure/protocols/mcp-oauth.d.ts +0 -91
  438. package/dist/infrastructure/protocols/mcp-oauth.d.ts.map +0 -1
  439. package/dist/infrastructure/protocols/mcp-oauth.js.map +0 -1
  440. package/dist/infrastructure/protocols/mcp-server.d.ts +0 -126
  441. package/dist/infrastructure/protocols/mcp-server.d.ts.map +0 -1
  442. package/dist/infrastructure/protocols/mcp-server.js.map +0 -1
  443. package/dist/infrastructure/protocols/streaming-handler.d.ts +0 -57
  444. package/dist/infrastructure/protocols/streaming-handler.d.ts.map +0 -1
  445. package/dist/infrastructure/protocols/streaming-handler.js.map +0 -1
  446. package/dist/infrastructure/providers/cohere-provider.d.ts +0 -39
  447. package/dist/infrastructure/providers/cohere-provider.d.ts.map +0 -1
  448. package/dist/infrastructure/providers/cohere-provider.js.map +0 -1
  449. package/dist/infrastructure/providers/fake-provider.d.ts +0 -43
  450. package/dist/infrastructure/providers/fake-provider.d.ts.map +0 -1
  451. package/dist/infrastructure/providers/fake-provider.js.map +0 -1
  452. package/dist/infrastructure/providers/local-llm-provider.d.ts +0 -49
  453. package/dist/infrastructure/providers/local-llm-provider.d.ts.map +0 -1
  454. package/dist/infrastructure/providers/local-llm-provider.js.map +0 -1
  455. package/dist/infrastructure/providers/model-config.types.d.ts +0 -70
  456. package/dist/infrastructure/providers/model-config.types.d.ts.map +0 -1
  457. package/dist/infrastructure/providers/model-config.types.js.map +0 -1
  458. package/dist/infrastructure/providers/model-provider.interface.d.ts +0 -113
  459. package/dist/infrastructure/providers/model-provider.interface.d.ts.map +0 -1
  460. package/dist/infrastructure/providers/model-provider.interface.js.map +0 -1
  461. package/dist/infrastructure/providers/openai-provider.d.ts +0 -38
  462. package/dist/infrastructure/providers/openai-provider.d.ts.map +0 -1
  463. package/dist/infrastructure/providers/openai-provider.js.map +0 -1
  464. package/dist/infrastructure/providers/openrouter-provider.d.ts +0 -42
  465. package/dist/infrastructure/providers/openrouter-provider.d.ts.map +0 -1
  466. package/dist/infrastructure/providers/openrouter-provider.js.map +0 -1
  467. package/dist/infrastructure/providers/operation-provider-resolver.d.ts +0 -48
  468. package/dist/infrastructure/providers/operation-provider-resolver.d.ts.map +0 -1
  469. package/dist/infrastructure/providers/operation-provider-resolver.js.map +0 -1
  470. package/dist/infrastructure/providers/provider-config-loader.d.ts +0 -37
  471. package/dist/infrastructure/providers/provider-config-loader.d.ts.map +0 -1
  472. package/dist/infrastructure/providers/provider-config-loader.js.map +0 -1
  473. package/dist/infrastructure/providers/provider-registry.d.ts +0 -53
  474. package/dist/infrastructure/providers/provider-registry.d.ts.map +0 -1
  475. package/dist/infrastructure/providers/provider-registry.js.map +0 -1
  476. package/dist/infrastructure/security/ai-sast-scanner.d.ts +0 -59
  477. package/dist/infrastructure/security/ai-sast-scanner.d.ts.map +0 -1
  478. package/dist/infrastructure/security/ai-sast-scanner.js.map +0 -1
  479. package/dist/infrastructure/security/docker-sandbox.d.ts +0 -57
  480. package/dist/infrastructure/security/docker-sandbox.d.ts.map +0 -1
  481. package/dist/infrastructure/security/docker-sandbox.js.map +0 -1
  482. package/dist/infrastructure/security/enhanced-security-gate.d.ts +0 -66
  483. package/dist/infrastructure/security/enhanced-security-gate.d.ts.map +0 -1
  484. package/dist/infrastructure/security/enhanced-security-gate.js.map +0 -1
  485. package/dist/infrastructure/security/input-validator.d.ts +0 -46
  486. package/dist/infrastructure/security/input-validator.d.ts.map +0 -1
  487. package/dist/infrastructure/security/input-validator.js.map +0 -1
  488. package/dist/infrastructure/security/license-scanner.d.ts +0 -55
  489. package/dist/infrastructure/security/license-scanner.d.ts.map +0 -1
  490. package/dist/infrastructure/security/license-scanner.js.map +0 -1
  491. package/dist/infrastructure/security/provider-bias-detector.d.ts +0 -53
  492. package/dist/infrastructure/security/provider-bias-detector.d.ts.map +0 -1
  493. package/dist/infrastructure/security/provider-bias-detector.js.map +0 -1
  494. package/dist/infrastructure/security/sandbox-executor.d.ts +0 -34
  495. package/dist/infrastructure/security/sandbox-executor.d.ts.map +0 -1
  496. package/dist/infrastructure/security/sandbox-executor.js.map +0 -1
  497. package/dist/infrastructure/serialization/toon-serializer.d.ts +0 -45
  498. package/dist/infrastructure/serialization/toon-serializer.d.ts.map +0 -1
  499. package/dist/infrastructure/serialization/toon-serializer.js.map +0 -1
  500. package/dist/infrastructure/storage/embeddings-path.d.ts +0 -18
  501. package/dist/infrastructure/storage/embeddings-path.d.ts.map +0 -1
  502. package/dist/infrastructure/storage/embeddings-path.js.map +0 -1
  503. package/dist/infrastructure/storage/memory-stream-service.d.ts +0 -47
  504. package/dist/infrastructure/storage/memory-stream-service.d.ts.map +0 -1
  505. package/dist/infrastructure/storage/memory-stream-service.js.map +0 -1
  506. package/dist/infrastructure/storage/plan-repository.d.ts +0 -40
  507. package/dist/infrastructure/storage/plan-repository.d.ts.map +0 -1
  508. package/dist/infrastructure/storage/plan-repository.js.map +0 -1
  509. package/dist/infrastructure/storage/sqlite-context-repository.d.ts +0 -95
  510. package/dist/infrastructure/storage/sqlite-context-repository.d.ts.map +0 -1
  511. package/dist/infrastructure/storage/sqlite-context-repository.js +0 -467
  512. package/dist/infrastructure/storage/sqlite-context-repository.js.map +0 -1
  513. package/dist/infrastructure/storage/sqlite-decision-repository.d.ts +0 -29
  514. package/dist/infrastructure/storage/sqlite-decision-repository.d.ts.map +0 -1
  515. package/dist/infrastructure/storage/sqlite-decision-repository.js.map +0 -1
  516. package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts +0 -47
  517. package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts.map +0 -1
  518. package/dist/infrastructure/storage/sqlite-embedding-repository.js.map +0 -1
  519. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.d.ts +0 -41
  520. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.d.ts.map +0 -1
  521. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js.map +0 -1
  522. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.d.ts +0 -29
  523. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.d.ts.map +0 -1
  524. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js.map +0 -1
  525. package/dist/infrastructure/storage/sqlite-memory-repository.d.ts +0 -40
  526. package/dist/infrastructure/storage/sqlite-memory-repository.d.ts.map +0 -1
  527. package/dist/infrastructure/storage/sqlite-memory-repository.js.map +0 -1
  528. package/dist/infrastructure/storage/sqlite-pattern-repository.d.ts +0 -25
  529. package/dist/infrastructure/storage/sqlite-pattern-repository.d.ts.map +0 -1
  530. package/dist/infrastructure/storage/sqlite-pattern-repository.js.map +0 -1
  531. package/dist/infrastructure/storage/task-helpers.d.ts +0 -69
  532. package/dist/infrastructure/storage/task-helpers.d.ts.map +0 -1
  533. package/dist/infrastructure/storage/task-helpers.js.map +0 -1
  534. package/dist/infrastructure/storage/task-repository.d.ts +0 -67
  535. package/dist/infrastructure/storage/task-repository.d.ts.map +0 -1
  536. package/dist/infrastructure/storage/task-repository.js.map +0 -1
  537. package/dist/infrastructure/telemetry/telemetry-service.d.ts +0 -74
  538. package/dist/infrastructure/telemetry/telemetry-service.d.ts.map +0 -1
  539. package/dist/infrastructure/telemetry/telemetry-service.js.map +0 -1
  540. package/dist/infrastructure/ux/appropriate-friction.d.ts +0 -77
  541. package/dist/infrastructure/ux/appropriate-friction.d.ts.map +0 -1
  542. package/dist/infrastructure/ux/appropriate-friction.js.map +0 -1
  543. package/dist/infrastructure/ux/bi-directional-learning.d.ts +0 -131
  544. package/dist/infrastructure/ux/bi-directional-learning.d.ts.map +0 -1
  545. package/dist/infrastructure/ux/bi-directional-learning.js.map +0 -1
  546. package/dist/infrastructure/ux/capability-boundaries.d.ts +0 -22
  547. package/dist/infrastructure/ux/capability-boundaries.d.ts.map +0 -1
  548. package/dist/infrastructure/ux/capability-boundaries.js.map +0 -1
  549. package/dist/infrastructure/ux/cli-style-guide.d.ts +0 -105
  550. package/dist/infrastructure/ux/cli-style-guide.d.ts.map +0 -1
  551. package/dist/infrastructure/ux/cli-style-guide.js +0 -220
  552. package/dist/infrastructure/ux/cli-style-guide.js.map +0 -1
  553. package/dist/infrastructure/ux/comprehensive-formatter.d.ts +0 -21
  554. package/dist/infrastructure/ux/comprehensive-formatter.d.ts.map +0 -1
  555. package/dist/infrastructure/ux/comprehensive-formatter.js.map +0 -1
  556. package/dist/infrastructure/ux/contextual-feature-discovery.d.ts +0 -11
  557. package/dist/infrastructure/ux/contextual-feature-discovery.d.ts.map +0 -1
  558. package/dist/infrastructure/ux/contextual-feature-discovery.js.map +0 -1
  559. package/dist/infrastructure/ux/expectation-management.d.ts +0 -98
  560. package/dist/infrastructure/ux/expectation-management.d.ts.map +0 -1
  561. package/dist/infrastructure/ux/expectation-management.js.map +0 -1
  562. package/dist/infrastructure/ux/feature-discovery.d.ts +0 -17
  563. package/dist/infrastructure/ux/feature-discovery.d.ts.map +0 -1
  564. package/dist/infrastructure/ux/feature-discovery.js.map +0 -1
  565. package/dist/infrastructure/ux/feedback-prompt.d.ts +0 -26
  566. package/dist/infrastructure/ux/feedback-prompt.d.ts.map +0 -1
  567. package/dist/infrastructure/ux/feedback-prompt.js.map +0 -1
  568. package/dist/infrastructure/ux/hitl-validation.d.ts +0 -139
  569. package/dist/infrastructure/ux/hitl-validation.d.ts.map +0 -1
  570. package/dist/infrastructure/ux/hitl-validation.js.map +0 -1
  571. package/dist/infrastructure/ux/progress-indicator.d.ts +0 -53
  572. package/dist/infrastructure/ux/progress-indicator.d.ts.map +0 -1
  573. package/dist/infrastructure/ux/progress-indicator.js.map +0 -1
  574. package/dist/infrastructure/ux/progressive-disclosure.d.ts +0 -84
  575. package/dist/infrastructure/ux/progressive-disclosure.d.ts.map +0 -1
  576. package/dist/infrastructure/ux/progressive-disclosure.js.map +0 -1
  577. package/dist/infrastructure/ux/review-checkpoint.d.ts +0 -37
  578. package/dist/infrastructure/ux/review-checkpoint.d.ts.map +0 -1
  579. package/dist/infrastructure/ux/review-checkpoint.js.map +0 -1
  580. package/dist/infrastructure/ux/staged-feature-intro.d.ts +0 -22
  581. package/dist/infrastructure/ux/staged-feature-intro.d.ts.map +0 -1
  582. package/dist/infrastructure/ux/staged-feature-intro.js.map +0 -1
  583. package/dist/infrastructure/ux/syntax-highlighter.d.ts +0 -20
  584. package/dist/infrastructure/ux/syntax-highlighter.d.ts.map +0 -1
  585. package/dist/infrastructure/ux/syntax-highlighter.js.map +0 -1
  586. package/dist/infrastructure/ux/team-standards.d.ts +0 -94
  587. package/dist/infrastructure/ux/team-standards.d.ts.map +0 -1
  588. package/dist/infrastructure/ux/team-standards.js.map +0 -1
  589. package/dist/infrastructure/validation/agent-feedback.d.ts +0 -57
  590. package/dist/infrastructure/validation/agent-feedback.d.ts.map +0 -1
  591. package/dist/infrastructure/validation/agent-feedback.js.map +0 -1
  592. package/dist/infrastructure/validation/agent-validation-helper.d.ts +0 -75
  593. package/dist/infrastructure/validation/agent-validation-helper.d.ts.map +0 -1
  594. package/dist/infrastructure/validation/agent-validation-helper.js.map +0 -1
  595. package/dist/infrastructure/validation/hallucination-detector.d.ts +0 -121
  596. package/dist/infrastructure/validation/hallucination-detector.d.ts.map +0 -1
  597. package/dist/infrastructure/validation/hallucination-detector.js +0 -388
  598. package/dist/infrastructure/validation/hallucination-detector.js.map +0 -1
  599. package/dist/infrastructure/validation/review-handler.d.ts +0 -26
  600. package/dist/infrastructure/validation/review-handler.d.ts.map +0 -1
  601. package/dist/infrastructure/validation/review-handler.js.map +0 -1
  602. package/dist/infrastructure/validation/summary-aggregator.d.ts +0 -45
  603. package/dist/infrastructure/validation/summary-aggregator.d.ts.map +0 -1
  604. package/dist/infrastructure/validation/summary-aggregator.js.map +0 -1
  605. package/dist/infrastructure/validation/summary-extractor.d.ts +0 -24
  606. package/dist/infrastructure/validation/summary-extractor.d.ts.map +0 -1
  607. package/dist/infrastructure/validation/summary-extractor.js.map +0 -1
  608. package/dist/infrastructure/validation/trace-summary.d.ts +0 -45
  609. package/dist/infrastructure/validation/trace-summary.d.ts.map +0 -1
  610. package/dist/infrastructure/validation/trace-summary.js.map +0 -1
  611. package/dist/infrastructure/verification/verification-service.d.ts +0 -12
  612. package/dist/infrastructure/verification/verification-service.d.ts.map +0 -1
  613. package/dist/infrastructure/verification/verification-service.js.map +0 -1
  614. package/dist/infrastructure/xai/attention-visualizer.d.ts +0 -71
  615. package/dist/infrastructure/xai/attention-visualizer.d.ts.map +0 -1
  616. package/dist/infrastructure/xai/attention-visualizer.js.map +0 -1
  617. package/dist/infrastructure/xai/cot-visualizer.d.ts +0 -103
  618. package/dist/infrastructure/xai/cot-visualizer.d.ts.map +0 -1
  619. package/dist/infrastructure/xai/cot-visualizer.js.map +0 -1
  620. package/dist/infrastructure/xai/decision-tree-log.d.ts +0 -100
  621. package/dist/infrastructure/xai/decision-tree-log.d.ts.map +0 -1
  622. package/dist/infrastructure/xai/decision-tree-log.js.map +0 -1
  623. package/dist/infrastructure/xai/interactive-xai.d.ts +0 -104
  624. package/dist/infrastructure/xai/interactive-xai.d.ts.map +0 -1
  625. package/dist/infrastructure/xai/interactive-xai.js.map +0 -1
  626. package/dist/infrastructure/xai/uncertainty-quantifier.d.ts +0 -77
  627. package/dist/infrastructure/xai/uncertainty-quantifier.d.ts.map +0 -1
  628. package/dist/infrastructure/xai/uncertainty-quantifier.js.map +0 -1
  629. package/dist/intelligent-retrieval 2.js +0 -272
  630. package/dist/intelligent-retrieval.d.ts +0 -41
  631. package/dist/intelligent-retrieval.d.ts 2.map +0 -1
  632. package/dist/intelligent-retrieval.d.ts.map +0 -1
  633. package/dist/intelligent-retrieval.js.map +0 -1
  634. package/dist/intent/classifier.d.ts +0 -6
  635. package/dist/intent/classifier.d.ts.map +0 -1
  636. package/dist/intent/classifier.js.map +0 -1
  637. package/dist/intent/context.d.ts +0 -4
  638. package/dist/intent/context.d.ts.map +0 -1
  639. package/dist/intent/context.js.map +0 -1
  640. package/dist/iterative-refinement.d.ts +0 -31
  641. package/dist/iterative-refinement.d.ts.map +0 -1
  642. package/dist/iterative-refinement.js.map +0 -1
  643. package/dist/learning.d.ts +0 -69
  644. package/dist/learning.d.ts.map +0 -1
  645. package/dist/learning.js.map +0 -1
  646. package/dist/log.d.ts +0 -4
  647. package/dist/log.d.ts.map +0 -1
  648. package/dist/log.js 2.map +0 -1
  649. package/dist/log.js.map +0 -1
  650. package/dist/migrate.d.ts +0 -33
  651. package/dist/migrate.d.ts.map +0 -1
  652. package/dist/migrate.js 2.map +0 -1
  653. package/dist/migrate.js.map +0 -1
  654. package/dist/monitoring.d.ts +0 -75
  655. package/dist/monitoring.d.ts.map +0 -1
  656. package/dist/monitoring.js.map +0 -1
  657. package/dist/parallel-processor.d 2.ts +0 -44
  658. package/dist/parallel-processor.d.ts +0 -44
  659. package/dist/parallel-processor.d.ts.map +0 -1
  660. package/dist/parallel-processor.js.map +0 -1
  661. package/dist/planner.d.ts +0 -47
  662. package/dist/planner.d.ts.map +0 -1
  663. package/dist/planner.js.map +0 -1
  664. package/dist/policy.d 2.ts +0 -3
  665. package/dist/policy.d.ts +0 -3
  666. package/dist/policy.d.ts.map +0 -1
  667. package/dist/policy.js.map +0 -1
  668. package/dist/presentation/cli/commands/ask-command.d.ts +0 -9
  669. package/dist/presentation/cli/commands/ask-command.d.ts.map +0 -1
  670. package/dist/presentation/cli/commands/ask-command.js.map +0 -1
  671. package/dist/presentation/cli/commands/audit-command.d.ts +0 -13
  672. package/dist/presentation/cli/commands/audit-command.d.ts.map +0 -1
  673. package/dist/presentation/cli/commands/audit-command.js +0 -96
  674. package/dist/presentation/cli/commands/audit-command.js.map +0 -1
  675. package/dist/presentation/cli/commands/config-command.d.ts +0 -9
  676. package/dist/presentation/cli/commands/config-command.d.ts.map +0 -1
  677. package/dist/presentation/cli/commands/config-command.js.map +0 -1
  678. package/dist/presentation/cli/commands/context-command.d.ts +0 -32
  679. package/dist/presentation/cli/commands/context-command.d.ts.map +0 -1
  680. package/dist/presentation/cli/commands/context-command.js +0 -295
  681. package/dist/presentation/cli/commands/context-command.js.map +0 -1
  682. package/dist/presentation/cli/commands/context-helper.d.ts +0 -16
  683. package/dist/presentation/cli/commands/context-helper.d.ts.map +0 -1
  684. package/dist/presentation/cli/commands/context-helper.js +0 -88
  685. package/dist/presentation/cli/commands/context-helper.js.map +0 -1
  686. package/dist/presentation/cli/commands/cost-command.d.ts +0 -8
  687. package/dist/presentation/cli/commands/cost-command.d.ts.map +0 -1
  688. package/dist/presentation/cli/commands/cost-command.js.map +0 -1
  689. package/dist/presentation/cli/commands/decision-command.d.ts +0 -12
  690. package/dist/presentation/cli/commands/decision-command.d.ts.map +0 -1
  691. package/dist/presentation/cli/commands/decision-command.js.map +0 -1
  692. package/dist/presentation/cli/commands/docs-command.d.ts +0 -14
  693. package/dist/presentation/cli/commands/docs-command.d.ts.map +0 -1
  694. package/dist/presentation/cli/commands/docs-command.js.map +0 -1
  695. package/dist/presentation/cli/commands/fix-command.d.ts +0 -15
  696. package/dist/presentation/cli/commands/fix-command.d.ts.map +0 -1
  697. package/dist/presentation/cli/commands/fix-command.js.map +0 -1
  698. package/dist/presentation/cli/commands/help-command.d.ts +0 -9
  699. package/dist/presentation/cli/commands/help-command.d.ts.map +0 -1
  700. package/dist/presentation/cli/commands/help-command.js.map +0 -1
  701. package/dist/presentation/cli/commands/knowledge-command.d.ts +0 -13
  702. package/dist/presentation/cli/commands/knowledge-command.d.ts.map +0 -1
  703. package/dist/presentation/cli/commands/knowledge-command.js.map +0 -1
  704. package/dist/presentation/cli/commands/learning-dashboard-command.d.ts +0 -8
  705. package/dist/presentation/cli/commands/learning-dashboard-command.d.ts.map +0 -1
  706. package/dist/presentation/cli/commands/learning-dashboard-command.js.map +0 -1
  707. package/dist/presentation/cli/commands/models-command.d.ts +0 -13
  708. package/dist/presentation/cli/commands/models-command.d.ts.map +0 -1
  709. package/dist/presentation/cli/commands/models-command.js.map +0 -1
  710. package/dist/presentation/cli/commands/orchestrate-command.d.ts +0 -10
  711. package/dist/presentation/cli/commands/orchestrate-command.d.ts.map +0 -1
  712. package/dist/presentation/cli/commands/orchestrate-command.js.map +0 -1
  713. package/dist/presentation/cli/commands/plan-command.d.ts +0 -9
  714. package/dist/presentation/cli/commands/plan-command.d.ts.map +0 -1
  715. package/dist/presentation/cli/commands/plan-command.js.map +0 -1
  716. package/dist/presentation/cli/commands/product-command.d.ts +0 -14
  717. package/dist/presentation/cli/commands/product-command.d.ts.map +0 -1
  718. package/dist/presentation/cli/commands/product-command.js.map +0 -1
  719. package/dist/presentation/cli/commands/react-command.d.ts +0 -8
  720. package/dist/presentation/cli/commands/react-command.d.ts.map +0 -1
  721. package/dist/presentation/cli/commands/react-command.js.map +0 -1
  722. package/dist/presentation/cli/commands/review-command.d.ts +0 -14
  723. package/dist/presentation/cli/commands/review-command.d.ts.map +0 -1
  724. package/dist/presentation/cli/commands/review-command.js.map +0 -1
  725. package/dist/presentation/cli/commands/run-command.d.ts +0 -13
  726. package/dist/presentation/cli/commands/run-command.d.ts.map +0 -1
  727. package/dist/presentation/cli/commands/run-command.js.map +0 -1
  728. package/dist/presentation/cli/commands/setup-command.d.ts +0 -10
  729. package/dist/presentation/cli/commands/setup-command.d.ts.map +0 -1
  730. package/dist/presentation/cli/commands/setup-command.js.map +0 -1
  731. package/dist/presentation/cli/commands/smart-command.d.ts +0 -11
  732. package/dist/presentation/cli/commands/smart-command.d.ts.map +0 -1
  733. package/dist/presentation/cli/commands/smart-command.js.map +0 -1
  734. package/dist/presentation/cli/commands/status-command.d.ts +0 -14
  735. package/dist/presentation/cli/commands/status-command.d.ts.map +0 -1
  736. package/dist/presentation/cli/commands/status-command.js.map +0 -1
  737. package/dist/presentation/cli/commands/suggest-command.d.ts +0 -11
  738. package/dist/presentation/cli/commands/suggest-command.d.ts.map +0 -1
  739. package/dist/presentation/cli/commands/suggest-command.js.map +0 -1
  740. package/dist/presentation/cli/commands/trace-command.d.ts +0 -8
  741. package/dist/presentation/cli/commands/trace-command.d.ts.map +0 -1
  742. package/dist/presentation/cli/commands/trace-command.js.map +0 -1
  743. package/dist/presentation/cli/commands/trust-command.d.ts +0 -28
  744. package/dist/presentation/cli/commands/trust-command.d.ts.map +0 -1
  745. package/dist/presentation/cli/commands/trust-command.js.map +0 -1
  746. package/dist/presentation/cli/commands/undo-command.d.ts +0 -8
  747. package/dist/presentation/cli/commands/undo-command.d.ts.map +0 -1
  748. package/dist/presentation/cli/commands/undo-command.js.map +0 -1
  749. package/dist/presentation/cli/error-display.d.ts +0 -25
  750. package/dist/presentation/cli/error-display.d.ts.map +0 -1
  751. package/dist/presentation/cli/error-display.js.map +0 -1
  752. package/dist/query-optimizer.d.ts +0 -32
  753. package/dist/query-optimizer.d.ts.map +0 -1
  754. package/dist/query-optimizer.js.map +0 -1
  755. package/dist/refactor.d.ts +0 -27
  756. package/dist/refactor.d.ts.map +0 -1
  757. package/dist/refactor.js.map +0 -1
  758. package/dist/review 2.js +0 -206
  759. package/dist/review.d.ts +0 -31
  760. package/dist/review.d.ts.map +0 -1
  761. package/dist/review.js.map +0 -1
  762. package/dist/search.d.ts +0 -19
  763. package/dist/search.d.ts.map +0 -1
  764. package/dist/search.js 2.map +0 -1
  765. package/dist/search.js.map +0 -1
  766. package/dist/session 2.js +0 -593
  767. package/dist/session.d.ts +0 -17
  768. package/dist/session.d.ts 2.map +0 -1
  769. package/dist/session.d.ts.map +0 -1
  770. package/dist/session.js.map +0 -1
  771. package/dist/task-verification 2.js +0 -336
  772. package/dist/task-verification.d.ts +0 -39
  773. package/dist/task-verification.d.ts 2.map +0 -1
  774. package/dist/task-verification.d.ts.map +0 -1
  775. package/dist/task-verification.js.map +0 -1
  776. package/dist/test-minimal.d.ts +0 -2
  777. package/dist/test-minimal.d.ts.map +0 -1
  778. package/dist/test-minimal.js +0 -2
  779. package/dist/test-minimal.js.map +0 -1
  780. package/dist/testgen.d.ts +0 -24
  781. package/dist/testgen.d.ts.map +0 -1
  782. package/dist/testgen.js 2.map +0 -1
  783. package/dist/testgen.js.map +0 -1
  784. package/dist/token-optimizer.d 2.ts +0 -20
  785. package/dist/token-optimizer.d.ts +0 -20
  786. package/dist/token-optimizer.d.ts.map +0 -1
  787. package/dist/token-optimizer.js.map +0 -1
  788. package/dist/tools/bash.d.ts +0 -53
  789. package/dist/tools/bash.d.ts.map +0 -1
  790. package/dist/tools/bash.js.map +0 -1
  791. package/dist/tools/edit.d.ts +0 -48
  792. package/dist/tools/edit.d.ts.map +0 -1
  793. package/dist/tools/edit.js.map +0 -1
  794. package/dist/tools/executor.d.ts +0 -29
  795. package/dist/tools/executor.d.ts.map +0 -1
  796. package/dist/tools/executor.js.map +0 -1
  797. package/dist/tools/git-tool.d.ts +0 -87
  798. package/dist/tools/git-tool.d.ts.map +0 -1
  799. package/dist/tools/git-tool.js.map +0 -1
  800. package/dist/tools/parser.d.ts +0 -33
  801. package/dist/tools/parser.d.ts.map +0 -1
  802. package/dist/tools/parser.js.map +0 -1
  803. package/dist/tools/registry.d.ts +0 -74
  804. package/dist/tools/registry.d.ts.map +0 -1
  805. package/dist/tools/registry.js.map +0 -1
  806. package/dist/tools/search.d.ts +0 -41
  807. package/dist/tools/search.d.ts.map +0 -1
  808. package/dist/tools/search.js.map +0 -1
  809. package/dist/types.d.ts +0 -36
  810. package/dist/types.d.ts.map +0 -1
  811. package/dist/types.js.map +0 -1
  812. package/dist/ui.d.ts +0 -60
  813. package/dist/ui.d.ts 2.map +0 -1
  814. package/dist/ui.d.ts.map +0 -1
  815. package/dist/ui.js.map +0 -1
  816. package/dist/utils/check-api-status.d.ts +0 -12
  817. package/dist/utils/check-api-status.d.ts.map +0 -1
  818. package/dist/utils/check-api-status.js.map +0 -1
  819. package/dist/utils/debug.d.ts +0 -7
  820. package/dist/utils/debug.d.ts.map +0 -1
  821. package/dist/utils/debug.js +0 -24
  822. package/dist/utils/debug.js.map +0 -1
  823. package/dist/utils/diff-parser.d.ts +0 -22
  824. package/dist/utils/diff-parser.d.ts.map +0 -1
  825. package/dist/utils/diff-parser.js.map +0 -1
  826. package/dist/utils/provider-check.d.ts +0 -21
  827. package/dist/utils/provider-check.d.ts.map +0 -1
  828. package/dist/utils/provider-check.js +0 -124
  829. package/dist/utils/provider-check.js.map +0 -1
  830. package/dist/utils/version.d.ts +0 -21
  831. package/dist/utils/version.d.ts.map +0 -1
  832. package/dist/utils/version.js.map +0 -1
  833. package/dist/verification/backup.d.ts +0 -30
  834. package/dist/verification/backup.d.ts.map +0 -1
  835. package/dist/verification/backup.js.map +0 -1
  836. package/dist/verification/compiler.d.ts +0 -20
  837. package/dist/verification/compiler.d.ts.map +0 -1
  838. package/dist/verification/compiler.js.map +0 -1
  839. package/dist/verification/index.d.ts +0 -59
  840. package/dist/verification/index.d.ts.map +0 -1
  841. package/dist/verification/index.js.map +0 -1
  842. package/dist/verification/test-runner.d.ts +0 -27
  843. package/dist/verification/test-runner.d.ts.map +0 -1
  844. package/dist/verification/test-runner.js.map +0 -1
  845. package/dist/verify_db.d.ts +0 -2
  846. package/dist/verify_db.d.ts.map +0 -1
  847. package/dist/verify_db.js +0 -52
  848. package/dist/verify_db.js 2.map +0 -1
  849. package/dist/verify_db.js.map +0 -1
package/dist/session.js CHANGED
@@ -1,325 +1,617 @@
1
1
  /**
2
- * Interactive Session System
3
- * Seamless REPL-like interface for natural interaction
2
+ * Interactive Session — the main codehere experience
3
+ *
4
+ * Uses raw stdin for live command palette.
5
+ * Pattern copied from test-real.mjs which is verified working.
4
6
  */
5
- import * as readline from 'readline';
6
- import { chatWithContext } from './chat.js';
7
- import { searchIntelligent } from './search.js';
8
- import { generateAndApplyEdit } from './edit.js';
7
+ import { existsSync, readdirSync, readFileSync } from 'fs';
8
+ import { join, basename } from 'path';
9
+ import ora from 'ora';
10
+ import chalk from 'chalk';
11
+ // Brand colors
12
+ const brandBlue = chalk.rgb(74, 144, 226); // #4a90e2
13
+ const brandCoral = chalk.rgb(255, 154, 118); // #ff9a76
14
+ import { chatWithContextStream } from './chat.js';
15
+ import { createMarkdownStream } from './infrastructure/ux/stream-markdown.js';
9
16
  import { reviewFile } from './review.js';
10
17
  import { planTask, formatPlan } from './planner.js';
11
18
  import { IntelligentRouter } from './application/services/intelligent-router.js';
12
- import { colors, success, error, warning, info, newline, formatNumber, formatPercent, createWelcomeMessage, createSessionWelcome, } from './ui.js';
13
- import { sessionTokenTracker } from './infrastructure/cost/session-token-tracker.js';
14
- import { cleanResponse } from './formatter.js';
15
- /**
16
- * Start interactive session
17
- */
19
+ import { colors, error, warning, createCodehereLogo, SLASH_COMMANDS, } from './ui.js';
20
+ import { getVersion } from './utils/version.js';
21
+ const stdin = process.stdin;
22
+ const stdout = process.stdout;
23
+ // Build palette command list from SLASH_COMMANDS
24
+ const PALETTE_CMDS = SLASH_COMMANDS.map(c => ({
25
+ sig: `/${c.name}${c.args ? ' ' + c.args : ''}`,
26
+ name: c.name,
27
+ desc: c.description,
28
+ noKey: c.noKey,
29
+ }));
30
+ // Dynamic: leave room for prompt + header lines
31
+ function maxPalette() {
32
+ const rows = process.stdout.rows || 24;
33
+ return Math.min(rows - 8, 20); // 8 lines reserved for header/prompt/footer
34
+ }
35
+ // ── State detection ─────────────────────────────────────────────────────────
36
+ function detectState() {
37
+ const cwd = process.cwd();
38
+ const name = basename(cwd);
39
+ const settingsPath = join(process.env.HOME || '', '.claude', 'settings.json');
40
+ let hasHooks = false;
41
+ try {
42
+ hasHooks = existsSync(settingsPath) && readFileSync(settingsPath, 'utf-8').includes('codehere');
43
+ }
44
+ catch { }
45
+ const hasApiKey = !!(process.env.ANTHROPIC_API_KEY || process.env.OPENAI_API_KEY || process.env.COHERE_API_KEY);
46
+ const hasEmbeddings = existsSync(join(cwd, '.codehere-cache', 'embeddings.sqlite'));
47
+ const isGitRepo = existsSync(join(cwd, '.git'));
48
+ let fileCount = 0;
49
+ try {
50
+ const count = (dir, d) => {
51
+ if (d > 3)
52
+ return 0;
53
+ let n = 0;
54
+ for (const e of readdirSync(dir, { withFileTypes: true })) {
55
+ if (e.name.startsWith('.') || e.name === 'node_modules' || e.name === 'dist')
56
+ continue;
57
+ if (e.isDirectory())
58
+ n += count(join(dir, e.name), d + 1);
59
+ else
60
+ n++;
61
+ }
62
+ return n;
63
+ };
64
+ fileCount = count(cwd, 0);
65
+ }
66
+ catch { }
67
+ return { name, hasHooks, hasApiKey, hasEmbeddings, isGitRepo, fileCount };
68
+ }
69
+ function printWelcome() {
70
+ const state = detectState();
71
+ const logo = createCodehereLogo();
72
+ const ver = colors.dim(`v${getVersion()}`);
73
+ console.log();
74
+ console.log(` ${logo} ${ver}`);
75
+ console.log();
76
+ const badges = [
77
+ state.hasHooks ? colors.green('● hooks') : colors.dim('○ hooks'),
78
+ state.hasApiKey ? colors.green('● api') : colors.dim('○ api'),
79
+ state.hasEmbeddings ? colors.green('● indexed') : colors.dim('○ indexed'),
80
+ ];
81
+ console.log(' ' + badges.join(' '));
82
+ console.log();
83
+ console.log(colors.dim(` ${state.name}`) + colors.dim(` · ${state.isGitRepo ? 'git' : 'dir'} · ${state.fileCount} files`));
84
+ console.log();
85
+ if (!state.hasHooks)
86
+ console.log(' ' + colors.yellow('→') + ' ' + colors.cyan('/hook install') + colors.dim(' to activate safety scanning'));
87
+ else if (!state.hasApiKey)
88
+ console.log(' ' + colors.yellow('→') + ' ' + colors.cyan('codehere setup') + colors.dim(' to add an API key'));
89
+ else if (!state.hasEmbeddings)
90
+ console.log(' ' + colors.yellow('→') + ' Type ' + colors.cyan('/index') + colors.dim(' to enable semantic search'));
91
+ console.log(colors.dim(' Type / for commands, or ask anything'));
92
+ console.log();
93
+ }
94
+ // ── Main session ────────────────────────────────────────────────────────────
18
95
  export async function startSession() {
19
- // Show welcome
20
- console.clear();
21
- console.log(createSessionWelcome());
22
- newline();
23
- console.log(colors.dim('Type your questions naturally, or use /commands. Type /help for all commands, exit to quit.'));
24
- newline();
25
- console.log(colors.dim('Keyboard Shortcuts: ↑/↓ for history, Ctrl+C to cancel, Ctrl+D to exit, Ctrl+L to clear'));
26
- newline();
27
- console.log(colors.dim('────────────────────────────────────────────────────'));
28
- newline();
29
- const rl = readline.createInterface({
30
- input: process.stdin,
31
- output: process.stdout,
32
- prompt: colors.cyan('codehere> '),
33
- historySize: 100, // Enhanced: Store up to 100 commands for history navigation
34
- });
35
- const state = {
36
- history: [],
37
- context: null,
38
- };
39
- rl.prompt();
40
- rl.on('line', async (input) => {
41
- const trimmed = input.trim();
42
- if (!trimmed) {
43
- rl.prompt();
96
+ printWelcome();
97
+ // Raw mode
98
+ if (stdin.isTTY)
99
+ stdin.setRawMode(true);
100
+ stdin.resume();
101
+ stdin.setEncoding('utf8');
102
+ const state = { history: [] };
103
+ const historyBuf = [];
104
+ let historyIdx = -1;
105
+ let line = '';
106
+ let selected = 0;
107
+ let pLines = 0;
108
+ let processing = false;
109
+ let escBuf = '';
110
+ let escTimer = null;
111
+ // ── Render: clear from prompt to end of screen, redraw everything ──
112
+ // Key insight: truncate all output lines to terminal width to prevent wrapping,
113
+ // which breaks cursor-up counting.
114
+ const cols = () => stdout.columns || 80;
115
+ function truncate(s, maxWidth) {
116
+ // Strip ANSI to measure visible length, truncate if needed
117
+ const visible = s.replace(/\x1b\[[0-9;]*m/g, '');
118
+ if (visible.length <= maxWidth)
119
+ return s;
120
+ // Truncate by removing chars from the end (keep ANSI structure intact)
121
+ let vis = 0;
122
+ let cut = 0;
123
+ for (let i = 0; i < s.length; i++) {
124
+ if (s[i] === '\x1b') {
125
+ // Skip ANSI sequence
126
+ const end = s.indexOf('m', i);
127
+ if (end !== -1) {
128
+ i = end;
129
+ continue;
130
+ }
131
+ }
132
+ vis++;
133
+ if (vis >= maxWidth - 1) {
134
+ cut = i + 1;
135
+ break;
136
+ }
137
+ }
138
+ return cut > 0 ? s.slice(0, cut) + '\x1b[0m' : s;
139
+ }
140
+ function render() {
141
+ stdout.write('\r\x1b[J');
142
+ stdout.write(brandBlue('> ') + line);
143
+ if (line.startsWith('/') && !line.includes(' ')) {
144
+ const filter = line.slice(1).toLowerCase();
145
+ const allMatching = PALETTE_CMDS.filter(c => c.name.startsWith(filter));
146
+ const limit = maxPalette();
147
+ const filtered = allMatching.slice(0, limit);
148
+ const overflow = allMatching.length - filtered.length;
149
+ if (filtered.length > 0) {
150
+ const maxLen = Math.max(...filtered.map(c => c.sig.length));
151
+ const w = cols();
152
+ let drawnLines = 0;
153
+ for (let i = 0; i < filtered.length; i++) {
154
+ const c = filtered[i];
155
+ const pad = ' '.repeat(Math.max(1, maxLen - c.sig.length + 2));
156
+ const badge = c.noKey ? colors.dim(' (free)') : '';
157
+ const prefix = i === selected ? brandBlue('▸') : ' ';
158
+ const text = i === selected ? brandBlue(c.sig) : c.sig;
159
+ const row = ` ${prefix} ${text}${pad}${colors.dim(c.desc)}${badge}`;
160
+ stdout.write('\n' + truncate(row, w));
161
+ drawnLines++;
162
+ }
163
+ if (overflow > 0) {
164
+ stdout.write('\n' + colors.dim(` ... +${overflow} more (type to filter)`));
165
+ drawnLines++;
166
+ }
167
+ stdout.write(`\x1b[${drawnLines}A`);
168
+ stdout.write(`\x1b[${line.length + 3}G`);
169
+ pLines = drawnLines;
170
+ }
171
+ else {
172
+ stdout.write('\n' + colors.dim(' No matching commands'));
173
+ stdout.write('\x1b[1A');
174
+ stdout.write(`\x1b[${line.length + 3}G`);
175
+ pLines = 1;
176
+ }
177
+ }
178
+ else {
179
+ pLines = 0;
180
+ }
181
+ }
182
+ // ── Key handler (synchronous for palette, async exec wrapped separately) ──
183
+ function handle(key) {
184
+ if (processing)
185
+ return;
186
+ // Ctrl+C
187
+ if (key === '\x03') {
188
+ if (line.length > 0) {
189
+ line = '';
190
+ selected = 0;
191
+ stdout.write('\r\x1b[J\n');
192
+ render();
193
+ }
194
+ else {
195
+ stdout.write('\r\x1b[J\n');
196
+ process.exit(0);
197
+ }
44
198
  return;
45
199
  }
46
- // Handle exit
47
- if (trimmed.toLowerCase() === 'exit' || trimmed.toLowerCase() === 'quit' || trimmed === 'q') {
48
- console.log(info('Goodbye! 👋'));
49
- rl.close();
200
+ // Ctrl+D
201
+ if (key === '\x04') {
202
+ stdout.write('\r\x1b[J\n' + colors.dim(' See you.') + '\n');
203
+ process.exit(0);
204
+ }
205
+ // Ctrl+L
206
+ if (key === '\x0c') {
207
+ line = '';
208
+ selected = 0;
209
+ stdout.write('\x1b[2J\x1b[H');
210
+ printWelcome();
211
+ render();
50
212
  return;
51
213
  }
52
- // Handle help
53
- if (trimmed.toLowerCase() === 'help' || trimmed === '?') {
54
- showHelp();
55
- showKeyboardShortcuts();
56
- rl.prompt();
214
+ // Arrow up
215
+ if (key === '\x1b[A') {
216
+ if (pLines > 0) {
217
+ selected = Math.max(0, selected - 1);
218
+ }
219
+ else if (historyBuf.length > 0 && historyIdx < historyBuf.length - 1) {
220
+ historyIdx++;
221
+ line = historyBuf[historyIdx];
222
+ }
223
+ render();
57
224
  return;
58
225
  }
59
- // Handle clear
60
- if (trimmed.toLowerCase() === 'clear') {
61
- console.clear();
62
- console.log(createWelcomeMessage());
63
- newline();
64
- rl.prompt();
226
+ // Arrow down
227
+ if (key === '\x1b[B') {
228
+ if (pLines > 0) {
229
+ selected = Math.min(pLines - 1, selected + 1);
230
+ }
231
+ else {
232
+ if (historyIdx > 0) {
233
+ historyIdx--;
234
+ line = historyBuf[historyIdx];
235
+ }
236
+ else {
237
+ historyIdx = -1;
238
+ line = '';
239
+ }
240
+ }
241
+ render();
242
+ return;
243
+ }
244
+ // Tab
245
+ if (key === '\t' && pLines > 0) {
246
+ const filter = line.slice(1).toLowerCase();
247
+ const filtered = PALETTE_CMDS.filter(c => c.name.startsWith(filter)).slice(0, maxPalette());
248
+ if (filtered[selected]) {
249
+ line = `/${filtered[selected].name} `;
250
+ selected = 0;
251
+ }
252
+ render();
253
+ return;
254
+ }
255
+ // Enter
256
+ if (key === '\r' || key === '\n') {
257
+ // If palette is visible, complete the selected command first
258
+ if (pLines > 0 && line.startsWith('/') && !line.includes(' ')) {
259
+ const filter = line.slice(1).toLowerCase();
260
+ const filtered = PALETTE_CMDS.filter(c => c.name.startsWith(filter)).slice(0, maxPalette());
261
+ if (filtered[selected]) {
262
+ line = `/${filtered[selected].name}`;
263
+ }
264
+ }
265
+ stdout.write('\r\x1b[J\n');
266
+ const trimmed = line.trim();
267
+ if (trimmed) {
268
+ historyBuf.unshift(trimmed);
269
+ historyIdx = -1;
270
+ }
271
+ line = '';
272
+ selected = 0;
273
+ pLines = 0;
274
+ if (!trimmed) {
275
+ render();
276
+ return;
277
+ }
278
+ // Async execution
279
+ processing = true;
280
+ executeInput(trimmed, state).catch(err => {
281
+ console.log(error(' ' + (err instanceof Error ? err.message : String(err))));
282
+ }).finally(() => {
283
+ processing = false;
284
+ stdin.resume();
285
+ stdin.ref();
286
+ if (stdin.isTTY && !stdin.isRaw)
287
+ stdin.setRawMode(true);
288
+ console.log();
289
+ render();
290
+ });
65
291
  return;
66
292
  }
67
- // Parse and execute command
68
- try {
69
- await executeCommand(trimmed, state, rl);
293
+ // Backspace
294
+ if (key === '\x7f' || key === '\b') {
295
+ if (line.length > 0) {
296
+ line = line.slice(0, -1);
297
+ selected = 0;
298
+ render();
299
+ }
300
+ return;
70
301
  }
71
- catch (err) {
72
- console.error(error('Error:'), err instanceof Error ? err.message : String(err));
302
+ // Ignore escape sequences
303
+ if (key.startsWith('\x1b'))
304
+ return;
305
+ // Regular character
306
+ line += key;
307
+ selected = 0;
308
+ render();
309
+ }
310
+ // ── Initial render ──
311
+ render();
312
+ // ── Stdin with escape buffering ──
313
+ // CRITICAL: raw mode can deliver multiple chars in one data event (fast typing, paste).
314
+ // We must process each character individually, except escape sequences which are multi-byte.
315
+ stdin.on('data', (raw) => {
316
+ if (processing)
317
+ return;
318
+ // If the whole chunk is a known escape sequence, handle it directly
319
+ if (raw.startsWith('\x1b') && raw.length >= 2) {
320
+ handle(raw);
321
+ return;
322
+ }
323
+ // Otherwise iterate character by character
324
+ for (let i = 0; i < raw.length; i++) {
325
+ if (processing)
326
+ return; // stop if a command started executing mid-chunk
327
+ const ch = raw[i];
328
+ if (escBuf.length > 0) {
329
+ escBuf += ch;
330
+ if (escTimer)
331
+ clearTimeout(escTimer);
332
+ if (escBuf.length >= 3) {
333
+ const seq = escBuf;
334
+ escBuf = '';
335
+ handle(seq);
336
+ }
337
+ else {
338
+ escTimer = setTimeout(() => { const seq = escBuf; escBuf = ''; handle(seq); }, 50);
339
+ }
340
+ continue;
341
+ }
342
+ if (ch === '\x1b') {
343
+ escBuf = ch;
344
+ escTimer = setTimeout(() => { const seq = escBuf; escBuf = ''; handle(seq); }, 50);
345
+ continue;
346
+ }
347
+ handle(ch);
73
348
  }
74
- rl.prompt();
75
- });
76
- rl.on('close', () => {
77
- console.log(newline());
78
- console.log(colors.dim('Session ended.'));
79
- process.exit(0);
80
349
  });
81
350
  }
82
- /**
83
- * Execute command in session
84
- */
85
- async function executeCommand(input, state, rl) {
86
- const lower = input.toLowerCase().trim();
87
- // SLASH COMMANDS - /command syntax for better discoverability
88
- // Support both /command and command syntax
89
- if (lower.startsWith('/')) {
90
- await handleSlashCommand(input.substring(1), state, rl);
351
+ // ── Command list (for bare / or help) ──────────────────────────────────────
352
+ function printCommandList() {
353
+ console.log();
354
+ const maxLen = Math.max(...PALETTE_CMDS.map(c => c.sig.length));
355
+ for (const cmd of PALETTE_CMDS) {
356
+ const pad = ' '.repeat(Math.max(1, maxLen - cmd.sig.length + 2));
357
+ const badge = cmd.noKey ? colors.dim(' (free)') : '';
358
+ console.log(` ${colors.cyan(cmd.sig)}${pad}${colors.dim(cmd.desc)}${badge}`);
359
+ }
360
+ }
361
+ // ── Input dispatcher ────────────────────────────────────────────────────────
362
+ async function executeInput(input, state) {
363
+ if (input === '/') {
364
+ printCommandList();
91
365
  return;
92
366
  }
93
- // Detect command type (legacy syntax without slash)
94
- if (lower.startsWith('explain ') || lower.startsWith('e ')) {
95
- const file = input.substring(lower.startsWith('explain ') ? 8 : 2).trim();
96
- await handleExplain(file, rl);
367
+ if (input.startsWith('/')) {
368
+ const spaceIdx = input.indexOf(' ');
369
+ const cmd = (spaceIdx === -1 ? input.slice(1) : input.slice(1, spaceIdx)).toLowerCase();
370
+ const args = spaceIdx === -1 ? '' : input.slice(spaceIdx + 1).trim();
371
+ await handleSlash(cmd, args, state);
372
+ return;
97
373
  }
98
- else if (lower.startsWith('fix ') || lower.startsWith('edit ')) {
99
- const parts = input.substring(lower.startsWith('fix ') ? 4 : 5).trim().split(' ');
100
- const file = parts[0];
101
- const instruction = parts.slice(1).join(' ');
102
- await handleFix(file, instruction, rl);
374
+ // Exact keywords for REPL control
375
+ if (/^(exit|quit)$/i.test(input)) {
376
+ console.log(colors.dim(' See you.'));
377
+ process.exit(0);
103
378
  }
104
- else if (lower.startsWith('review ')) {
105
- const file = input.substring(7).trim();
106
- await handleReview(file, rl);
379
+ if (/^(help|\?)$/i.test(input)) {
380
+ printCommandList();
381
+ return;
107
382
  }
108
- else if (lower.startsWith('plan ')) {
109
- const instruction = input.substring(5).trim();
110
- await handlePlan(instruction, rl);
383
+ if (input.toLowerCase() === 'clear') {
384
+ stdout.write('\x1b[2J\x1b[H');
385
+ return;
111
386
  }
112
- else {
113
- // Default: use intelligent router - understands any query
114
- await handleSmartQuery(input, state, rl);
387
+ // Bare command names: "trust ." or "status" → same as "/trust ." or "/status"
388
+ // Only match unambiguous commands — skip words that are common English ("help", "fix", "run", "plan", "report", "test")
389
+ const BARE_SAFE = ['trust', 'hook', 'status', 'health', 'setup', 'serve', 'models', 'config', 'index', 'explain', 'review', 'cost', 'undo'];
390
+ const lower = input.toLowerCase();
391
+ const firstWord = lower.split(/\s+/)[0];
392
+ const restArgs = input.slice(firstWord.length).trim();
393
+ if (BARE_SAFE.includes(firstWord)) {
394
+ await handleSlash(firstWord, restArgs, state);
395
+ return;
115
396
  }
397
+ // Everything else → AI query (the router decides what to do)
398
+ await handleQuery(input, state);
116
399
  }
117
- /**
118
- * Handle slash commands (/fix, /explain, /review, etc.)
119
- */
120
- async function handleSlashCommand(input, state, rl) {
121
- const parts = input.trim().split(/\s+/);
122
- const command = parts[0].toLowerCase();
123
- const args = parts.slice(1).join(' ');
124
- switch (command) {
125
- case 'fix':
126
- case 'edit': {
127
- // /fix <file> <instruction>
128
- const fixParts = args.split(/\s+/);
129
- if (fixParts.length < 2) {
130
- console.log(warning('Usage: /fix <file> <instruction>'));
131
- console.log(colors.dim('Example: /fix src/utils.ts "add error handling"'));
400
+ // ── Slash commands ──────────────────────────────────────────────────────────
401
+ async function handleSlash(cmd, args, state) {
402
+ switch (cmd) {
403
+ case 'ask':
404
+ case 'q':
405
+ if (!args) {
406
+ console.log(colors.dim(' Usage: /ask <question>'));
132
407
  return;
133
408
  }
134
- const file = fixParts[0];
135
- const instruction = fixParts.slice(1).join(' ');
136
- await handleFix(file, instruction, rl);
409
+ await handleQuery(args, state);
137
410
  break;
138
- }
139
411
  case 'explain':
140
- case 'e': {
141
- // /explain <file>
412
+ case 'e':
142
413
  if (!args) {
143
- console.log(warning('Usage: /explain <file>'));
144
- console.log(colors.dim('Example: /explain src/auth.ts'));
414
+ console.log(colors.dim(' Usage: /explain <file>'));
145
415
  return;
146
416
  }
147
- await handleExplain(args.split(/\s+/)[0], rl);
417
+ await handleExplain(args);
418
+ break;
419
+ case 'fix':
420
+ case 'edit': {
421
+ const p = args.split(' ');
422
+ if (!p[0]) {
423
+ console.log(colors.dim(' Usage: /fix <file> <instruction>'));
424
+ return;
425
+ }
426
+ await handleFix(p[0], p.slice(1).join(' '));
148
427
  break;
149
428
  }
150
429
  case 'review':
151
- case 'r': {
152
- // /review <file>
153
430
  if (!args) {
154
- console.log(warning('Usage: /review <file>'));
155
- console.log(colors.dim('Example: /review src/auth.ts'));
431
+ console.log(colors.dim(' Usage: /review <file>'));
156
432
  return;
157
433
  }
158
- await handleReview(args.split(/\s+/)[0], rl);
434
+ await handleReview(args);
159
435
  break;
160
- }
161
436
  case 'plan':
162
- case 'p': {
163
- // /plan <instruction>
164
437
  if (!args) {
165
- console.log(warning('Usage: /plan <instruction>'));
166
- console.log(colors.dim('Example: /plan "add user authentication"'));
438
+ console.log(colors.dim(' Usage: /plan <goal>'));
167
439
  return;
168
440
  }
169
- await handlePlan(args, rl);
441
+ await handlePlan(args);
442
+ break;
443
+ case 'trust': {
444
+ const { executeTrustCommand } = await import('./presentation/cli/commands/trust-command.js');
445
+ await executeTrustCommand(args || undefined);
170
446
  break;
171
447
  }
172
- case 'cost': {
173
- // /cost - show instant session token stats (like Claude Code)
174
- showSessionCostDisplay();
448
+ case 'report': {
449
+ const { executeReportCommand } = await import('./presentation/cli/commands/report-command.js');
450
+ await executeReportCommand(args || undefined);
175
451
  break;
176
452
  }
177
- case 'trust': {
178
- // /trust - show trust dashboard
179
- try {
180
- const { executeTrustCommand } = await import('./presentation/cli/commands/trust-command.js');
181
- await executeTrustCommand('status');
453
+ case 'hook': {
454
+ const { executeHookCommand } = await import('./presentation/cli/commands/hook-command.js');
455
+ await executeHookCommand(args.split(' ')[0] || 'status');
456
+ break;
457
+ }
458
+ case 'status': {
459
+ const { executeStatusCommand } = await import('./presentation/cli/commands/status-command.js');
460
+ await executeStatusCommand({});
461
+ break;
462
+ }
463
+ case 'suggest': {
464
+ const { executeSuggestCommand } = await import('./presentation/cli/commands/suggest-command.js');
465
+ if (!args) {
466
+ console.log(colors.dim(' Usage: /suggest <query>'));
467
+ return;
182
468
  }
183
- catch (err) {
184
- console.log(error('Failed to get trust status'));
469
+ await executeSuggestCommand(args);
470
+ break;
471
+ }
472
+ case 'test': {
473
+ if (!args) {
474
+ console.log(colors.dim(' Usage: /test <file>'));
475
+ return;
185
476
  }
477
+ if (!(await requireKey()))
478
+ return;
479
+ await handleQuery(`Generate tests for ${args}`, state);
186
480
  break;
187
481
  }
188
- case 'undo': {
189
- // /undo - undo last edit
190
- try {
191
- const { executeUndoCommand } = await import('./presentation/cli/commands/undo-command.js');
192
- await executeUndoCommand('undo');
482
+ case 'docs': {
483
+ const { executeDocsCommand } = await import('./presentation/cli/commands/docs-command.js');
484
+ await executeDocsCommand((args || 'readme'));
485
+ break;
486
+ }
487
+ case 'refactor': {
488
+ if (!args) {
489
+ console.log(colors.dim(' Usage: /refactor <goal>'));
490
+ return;
193
491
  }
194
- catch (err) {
195
- console.log(error('Failed to undo'));
492
+ if (!(await requireKey()))
493
+ return;
494
+ await handleQuery('Refactor: ' + args, state);
495
+ break;
496
+ }
497
+ case 'orchestrate': {
498
+ const { executeOrchestrateCommand } = await import('./presentation/cli/commands/orchestrate-command.js');
499
+ if (!args) {
500
+ console.log(colors.dim(' Usage: /orchestrate <goal>'));
501
+ return;
196
502
  }
503
+ await executeOrchestrateCommand(args, {});
197
504
  break;
198
505
  }
199
- case 'status': {
200
- // /status - show project status
506
+ case 'run': {
507
+ const { executeRunCommand } = await import('./presentation/cli/commands/run-command.js');
508
+ if (!args) {
509
+ console.log(colors.dim(' Usage: /run <goal>'));
510
+ return;
511
+ }
512
+ await executeRunCommand(args, {});
513
+ break;
514
+ }
515
+ case 'git-review': {
516
+ if (!(await requireKey()))
517
+ return;
518
+ await handleQuery('Review the recent git changes in this project', state);
519
+ break;
520
+ }
521
+ case 'index': {
522
+ if (!(await requireKey()))
523
+ return;
524
+ const { indexRepositoryParallel } = await import('./embed.js');
525
+ const spinner = startSpinner('Indexing codebase...');
201
526
  try {
202
- const { executeStatusCommand } = await import('./presentation/cli/commands/status-command.js');
203
- await executeStatusCommand();
527
+ await indexRepositoryParallel(process.cwd(), { useCache: true, maxConcurrency: 5 });
528
+ spinner.succeed(colors.green('Index built'));
204
529
  }
205
530
  catch (err) {
206
- console.log(error('Failed to get status'));
531
+ spinner.fail(error('Index failed: ' + (err instanceof Error ? err.message : String(err))));
207
532
  }
208
533
  break;
209
534
  }
210
- case 'history':
211
- case 'h': {
212
- // /history - show command history
213
- if (state.history.length === 0) {
214
- console.log(colors.dim('No command history yet.'));
215
- }
216
- else {
217
- console.log(colors.bold('Recent Commands:'));
218
- state.history.slice(-10).forEach((h, i) => {
219
- console.log(colors.dim(` ${i + 1}. ${h.command.substring(0, 60)}${h.command.length > 60 ? '...' : ''}`));
220
- });
221
- }
535
+ case 'health': {
536
+ const { performHealthCheck, formatHealthStatus } = await import('./monitoring.js');
537
+ console.log(formatHealthStatus(performHealthCheck()));
538
+ break;
539
+ }
540
+ case 'setup': {
541
+ const { executeSetupCommand } = await import('./presentation/cli/commands/setup-command.js');
542
+ await executeSetupCommand(false);
543
+ break;
544
+ }
545
+ case 'serve': {
546
+ console.log(colors.dim(' MCP server must run in its own process:'));
547
+ console.log(colors.cyan(' codehere serve'));
548
+ break;
549
+ }
550
+ case 'config': {
551
+ const { executeConfigCommand } = await import('./presentation/cli/commands/config-command.js');
552
+ const parts = args.split(' ');
553
+ await executeConfigCommand(parts[0], parts[1], parts[2]);
554
+ break;
555
+ }
556
+ case 'cost': {
557
+ const { executeCostCommand } = await import('./presentation/cli/commands/cost-command.js');
558
+ await executeCostCommand((args || 'status'));
559
+ break;
560
+ }
561
+ case 'models': {
562
+ const { executeModelsCommand } = await import('./presentation/cli/commands/models-command.js');
563
+ await executeModelsCommand({ list: true });
222
564
  break;
223
565
  }
224
- case 'clear': {
225
- // /clear - clear screen
226
- console.clear();
227
- console.log(createWelcomeMessage());
228
- newline();
566
+ case 'undo': {
567
+ const { executeUndoCommand } = await import('./presentation/cli/commands/undo-command.js');
568
+ await executeUndoCommand(args ? 'undo' : 'list', args || undefined);
229
569
  break;
230
570
  }
571
+ case 'clear':
572
+ stdout.write('\x1b[2J\x1b[H');
573
+ break;
231
574
  case 'help':
232
- case '?': {
233
- // /help - show help
234
- showSlashCommandHelp();
575
+ case '?':
576
+ printCommandList();
235
577
  break;
578
+ case 'exit':
579
+ case 'quit':
580
+ console.log(colors.dim(' See you.'));
581
+ process.exit(0);
582
+ default: {
583
+ // Fuzzy match: find closest command
584
+ const ALL_CMD_NAMES = PALETTE_CMDS.map(c => c.name);
585
+ const KNOWN = [...ALL_CMD_NAMES, 'q', 'e', 'edit', 'quit'];
586
+ const match = KNOWN.find(k => k.startsWith(cmd));
587
+ if (match) {
588
+ console.log(colors.dim(` Did you mean /${match}?`));
589
+ }
590
+ else {
591
+ console.log(warning(` Unknown: /${cmd}`));
592
+ console.log(colors.dim(' Type / to see commands'));
593
+ }
236
594
  }
237
- default:
238
- console.log(warning(`Unknown command: /${command}`));
239
- console.log(colors.dim('Type /help to see available commands'));
240
595
  }
241
596
  }
242
- /**
243
- * Show instant session cost display (like Claude Code)
244
- */
245
- function showSessionCostDisplay() {
246
- newline();
247
- console.log(colors.bold('Session Usage'));
248
- console.log(colors.dim('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
249
- newline();
250
- const stats = sessionTokenTracker.getStats();
251
- const formatTokens = (n) => {
252
- if (n >= 1000000)
253
- return `${(n / 1000000).toFixed(2)}M`;
254
- if (n >= 1000)
255
- return `${(n / 1000).toFixed(1)}k`;
256
- return n.toLocaleString();
257
- };
258
- // Token display like Claude Code
259
- console.log(colors.bold(' Tokens'));
260
- console.log(` Input: ${colors.cyan('↓ ' + formatTokens(stats.inputTokens).padStart(10))}`);
261
- console.log(` Output: ${colors.green('↑ ' + formatTokens(stats.outputTokens).padStart(10))}`);
262
- if (stats.cacheReads > 0) {
263
- console.log(` Cache: ${colors.dim(' ' + formatTokens(stats.cacheReads).padStart(10))}`);
264
- }
265
- newline();
266
- // Cost display
267
- console.log(colors.bold(' Cost'));
268
- console.log(` Session: ${colors.yellow('$' + stats.totalCost.toFixed(4))}`);
269
- newline();
270
- // Requests count
271
- const requests = sessionTokenTracker.getRequests();
272
- console.log(colors.dim(` ${requests.length} API calls this session`));
273
- newline();
274
- // Quick summary line (like Claude Code)
275
- console.log(colors.dim(' ─────────────────────────────'));
276
- console.log(colors.bold(' ') + sessionTokenTracker.getDisplayString());
277
- newline();
597
+ // ── Handlers ────────────────────────────────────────────────────────────────
598
+ function startSpinner(text) {
599
+ return ora({ text: colors.dim(text), spinner: 'dots', color: 'cyan' }).start();
278
600
  }
279
- /**
280
- * Show slash command help
281
- */
282
- function showSlashCommandHelp() {
283
- newline();
284
- console.log(colors.bold('Slash Commands'));
285
- console.log(colors.dim('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'));
286
- newline();
287
- const commands = [
288
- ['/fix <file> <instruction>', 'Apply AI-generated edit to a file'],
289
- ['/explain <file>', 'Get AI explanation of a file'],
290
- ['/review <file>', 'Review code quality and get suggestions'],
291
- ['/plan <instruction>', 'Create an implementation plan'],
292
- ['/cost', 'Show cost tracking status'],
293
- ['/trust', 'Show agent trust/reliability dashboard'],
294
- ['/undo', 'Undo last edit'],
295
- ['/status', 'Show project status'],
296
- ['/history', 'Show command history'],
297
- ['/clear', 'Clear the screen'],
298
- ['/help', 'Show this help message'],
299
- ];
300
- commands.forEach(([cmd, desc]) => {
301
- console.log(` ${colors.cyan(cmd.padEnd(30))} ${colors.dim(desc)}`);
302
- });
303
- newline();
304
- console.log(colors.dim('Tip: You can also just type your question naturally!'));
305
- console.log(colors.dim('Example: "how does authentication work?"'));
306
- newline();
601
+ async function requireKey() {
602
+ if (!process.env.ANTHROPIC_API_KEY && !process.env.OPENAI_API_KEY && !process.env.COHERE_API_KEY && process.env.CODEHERE_FAKE_AI !== '1') {
603
+ console.log(warning(' No API key set. Run: codehere setup'));
604
+ return false;
605
+ }
606
+ return true;
307
607
  }
308
- /**
309
- * Handle smart query (intelligent routing)
310
- */
311
- async function handleSmartQuery(query, state, rl) {
312
- if (!process.env.COHERE_API_KEY) {
313
- console.error(error('COHERE_API_KEY not found. Please set it in .env file.'));
608
+ async function handleQuery(query, state) {
609
+ if (!(await requireKey()))
314
610
  return;
315
- }
316
- process.stdout.write(colors.dim(' Processing...\r'));
611
+ const spinner = startSpinner('Thinking...');
317
612
  try {
318
- // Use memory-aware router
319
613
  const { container } = await import('./application/services/dependency-container.js');
320
- const router = new IntelligentRouter(undefined, // Use default QueryIntentClassifier
321
- container.aiService, container.memoryStreamService);
322
- // Get conversation context for this session
614
+ const router = new IntelligentRouter(undefined, container.aiService, container.memoryStreamService);
323
615
  const { conversationContextManager } = await import('./infrastructure/context/conversation-context.js');
324
616
  const { sessionManager } = await import('./infrastructure/context/session-manager.js');
325
617
  const sessionId = sessionManager.getSessionId(process.cwd());
@@ -328,266 +620,85 @@ async function handleSmartQuery(query, state, rl) {
328
620
  query,
329
621
  context: {
330
622
  currentDirectory: process.cwd(),
331
- conversationHistory: history.map(turn => ({
332
- query: turn.query,
333
- response: turn.response,
334
- timestamp: typeof turn.timestamp === 'string' ? Date.parse(turn.timestamp) : turn.timestamp,
335
- })),
623
+ conversationHistory: history.map(t => ({ query: t.query, response: t.response, timestamp: typeof t.timestamp === 'string' ? Date.parse(t.timestamp) : t.timestamp })),
336
624
  sessionId,
337
625
  },
338
626
  });
339
- process.stdout.write(' '.repeat(50) + '\r');
340
- if (result.success) {
341
- newline();
342
- if (result.message) {
343
- const formatted = cleanResponse(result.message);
344
- console.log(formatted);
345
- }
627
+ spinner.stop();
628
+ if (result.success && result.message) {
629
+ const { formatMarkdownForTerminal } = await import('./infrastructure/ux/stream-markdown.js');
630
+ console.log();
631
+ console.log(formatMarkdownForTerminal(result.message));
632
+ }
633
+ else if (result.error) {
634
+ console.log(error(' ' + result.error));
346
635
  }
347
636
  else {
348
- newline();
349
- if (result.error) {
350
- console.log(error(result.error));
351
- }
352
- else if (result.message) {
353
- console.log(warning(result.message));
354
- }
637
+ console.log(colors.dim(' No response. Try rephrasing, or run "codehere index" first.'));
355
638
  }
356
- newline();
357
- // Save to history
358
- const response = result.message || result.error || 'Processed';
359
- state.history.push({
360
- command: query,
361
- response,
362
- timestamp: new Date().toISOString(),
363
- });
364
- // Update conversation context (reuse variables from above)
639
+ state.history.push({ command: query, response: result.message || result.error || '', timestamp: new Date().toISOString() });
365
640
  const entities = conversationContextManager.extractEntities(query);
366
- conversationContextManager.addTurn(sessionId, query, response, entities, result.intent);
641
+ conversationContextManager.addTurn(sessionId, query, result.message || '', entities, result.intent);
367
642
  }
368
643
  catch (err) {
369
- process.stdout.write(' '.repeat(50) + '\r');
370
- throw err;
371
- }
372
- }
373
- /**
374
- * Handle ask command (legacy - kept for compatibility)
375
- */
376
- async function handleAsk(question, state, rl) {
377
- if (!process.env.COHERE_API_KEY) {
378
- console.error(error('COHERE_API_KEY not found. Please set it in .env file.'));
379
- return;
380
- }
381
- // Show thinking indicator
382
- process.stdout.write(colors.dim(' Thinking...\r'));
383
- try {
384
- // NEW: Use intelligent search
385
- const searchResult = await searchIntelligent(question, {
386
- baseDir: process.cwd(),
387
- });
388
- if (searchResult.chunks.length === 0) {
389
- console.log(warning('No relevant code found. Run "codehere index" first.'));
390
- return;
644
+ spinner.stop();
645
+ const msg = err instanceof Error ? err.message : String(err);
646
+ if (msg.includes('No embeddings') || msg.includes('not found') || msg.includes('Not found')) {
647
+ console.log(colors.dim(` Couldn't answer that. Try "codehere index" first, or rephrase your question.`));
391
648
  }
392
- // Clear thinking indicator
393
- process.stdout.write(' '.repeat(50) + '\r');
394
- // Show context summary
395
- const retrievedFiles = [...new Set(searchResult.chunks.map(r => r.filepath))];
396
- console.log(colors.dim(` Found ${formatNumber(searchResult.chunks.length)} optimized chunks from ${formatNumber(retrievedFiles.length)} file(s)`));
397
- console.log(colors.dim(` Token reduction: ${formatPercent(searchResult.reductionPercent)}`));
398
- // Generate response
399
- process.stdout.write(colors.dim(' Generating response...\r'));
400
- const response = await chatWithContext(question, searchResult.chunks);
401
- process.stdout.write(' '.repeat(50) + '\r');
402
- // Display response (formatted)
403
- newline();
404
- const formattedResponse = cleanResponse(response);
405
- console.log(formattedResponse);
406
- newline();
407
- // Save to history
408
- state.history.push({
409
- command: question,
410
- response,
411
- timestamp: new Date().toISOString(),
412
- });
413
- }
414
- catch (err) {
415
- process.stdout.write(' '.repeat(50) + '\r');
416
- throw err;
417
- }
418
- }
419
- /**
420
- * Handle explain command
421
- */
422
- async function handleExplain(file, rl) {
423
- if (!process.env.COHERE_API_KEY) {
424
- console.error(error('COHERE_API_KEY not found.'));
425
- return;
426
- }
427
- process.stdout.write(colors.dim(' Reading file...\r'));
428
- try {
429
- const { readFileSync, existsSync } = await import('fs');
430
- const { join } = await import('path');
431
- const fullPath = join(process.cwd(), file);
432
- if (!existsSync(fullPath)) {
433
- process.stdout.write(' '.repeat(50) + '\r');
434
- console.error(error(`File not found: ${file}`));
435
- return;
649
+ else {
650
+ console.log(error(' ' + msg));
436
651
  }
437
- const content = readFileSync(fullPath, 'utf-8');
438
- process.stdout.write(colors.dim(' Generating explanation...\r'));
439
- const context = [{
440
- filepath: file,
441
- content: content,
442
- score: 1.0,
443
- }];
444
- const question = `Explain this file: ${file}`;
445
- const response = await chatWithContext(question, context);
446
- process.stdout.write(' '.repeat(50) + '\r');
447
- newline();
448
- console.log(colors.bold(`Explanation for ${file}:`));
449
- const formattedResponse = cleanResponse(response);
450
- console.log(formattedResponse);
451
- newline();
452
- }
453
- catch (err) {
454
- process.stdout.write(' '.repeat(50) + '\r');
455
- throw err;
456
652
  }
457
653
  }
458
- /**
459
- * Handle fix command
460
- */
461
- async function handleFix(file, instruction, rl) {
462
- if (!process.env.COHERE_API_KEY) {
463
- console.error(error('COHERE_API_KEY not found.'));
654
+ async function handleExplain(file) {
655
+ if (!(await requireKey()))
464
656
  return;
465
- }
466
- if (!instruction) {
467
- console.error(error('Please provide an instruction. Example: fix file.js "Add error handling"'));
657
+ const fullPath = join(process.cwd(), file);
658
+ if (!existsSync(fullPath)) {
659
+ console.log(error(` Not found: ${file}`));
468
660
  return;
469
661
  }
470
- process.stdout.write(colors.dim(' Generating edit...\r'));
471
- try {
472
- const result = await generateAndApplyEdit(file, instruction);
473
- process.stdout.write(' '.repeat(50) + '\r');
474
- if (result.success) {
475
- newline();
476
- console.log(success('Edit applied successfully'));
477
- if (result.diffStats) {
478
- console.log(colors.dim(` ${result.diffStats.linesAdded} added, ${result.diffStats.linesRemoved} removed`));
479
- }
480
- }
481
- else {
482
- newline();
483
- console.log(error('Edit failed'));
484
- if (result.error) {
485
- console.log(colors.red(` ${result.error}`));
486
- }
487
- }
488
- newline();
489
- }
490
- catch (err) {
491
- process.stdout.write(' '.repeat(50) + '\r');
492
- throw err;
493
- }
662
+ const spinner = startSpinner('Reading...');
663
+ const content = readFileSync(fullPath, 'utf-8');
664
+ const context = [{ filepath: file, content, score: 1.0 }];
665
+ spinner.stop();
666
+ console.log();
667
+ const md = createMarkdownStream();
668
+ await chatWithContextStream(`Explain this file: ${file}`, context, (token) => md.write(token));
669
+ md.flush();
670
+ console.log();
494
671
  }
495
- /**
496
- * Handle review command
497
- */
498
- async function handleReview(file, rl) {
499
- if (!process.env.COHERE_API_KEY) {
500
- console.error(error('COHERE_API_KEY not found.'));
672
+ async function handleFix(file, hint) {
673
+ if (!(await requireKey()))
674
+ return;
675
+ if (!hint) {
676
+ console.log(colors.dim(' Usage: /fix <file> <what to fix>'));
501
677
  return;
502
678
  }
503
- process.stdout.write(colors.dim(' Reviewing code...\r'));
504
- try {
505
- const review = await reviewFile(file);
506
- process.stdout.write(' '.repeat(50) + '\r');
507
- newline();
508
- console.log(colors.bold(`Review for ${file}:`));
509
- console.log(`Score: ${review.score}/100`);
510
- console.log(`Issues: ${review.issues.length}`);
511
- if (review.issues.length > 0) {
512
- newline();
513
- review.issues.slice(0, 5).forEach(issue => {
514
- const icon = issue.severity === 'error' ? '✗' : issue.severity === 'warning' ? '⚠' : '→';
515
- console.log(` ${icon} ${issue.message}`);
516
- });
517
- }
518
- newline();
519
- }
520
- catch (err) {
521
- process.stdout.write(' '.repeat(50) + '\r');
522
- throw err;
523
- }
679
+ const { executeFixCommand } = await import('./presentation/cli/commands/fix-command.js');
680
+ await executeFixCommand(file, hint);
524
681
  }
525
- /**
526
- * Handle plan command
527
- */
528
- async function handlePlan(instruction, rl) {
529
- if (!process.env.COHERE_API_KEY) {
530
- console.error(error('COHERE_API_KEY not found.'));
682
+ async function handleReview(file) {
683
+ if (!(await requireKey()))
531
684
  return;
532
- }
533
- process.stdout.write(colors.dim(' Planning...\r'));
534
- try {
535
- const plan = await planTask(instruction);
536
- process.stdout.write(' '.repeat(50) + '\r');
537
- newline();
538
- console.log(colors.bold('Execution Plan:'));
539
- console.log(formatPlan(plan));
540
- newline();
541
- }
542
- catch (err) {
543
- process.stdout.write(' '.repeat(50) + '\r');
544
- throw err;
685
+ const spinner = startSpinner('Reviewing...');
686
+ const review = await reviewFile(file);
687
+ spinner.stop();
688
+ console.log();
689
+ console.log(colors.bold(` ${file}`) + colors.dim(` · ${review.score}/100 · ${review.issues.length} issues`));
690
+ for (const issue of review.issues.slice(0, 5)) {
691
+ const icon = issue.severity === 'error' ? colors.red('✗') : issue.severity === 'warning' ? colors.yellow('!') : colors.dim('·');
692
+ console.log(` ${icon} ${issue.message}`);
545
693
  }
546
694
  }
547
- /**
548
- * Show help
549
- */
550
- function showHelp() {
551
- newline();
552
- console.log(colors.bold('Slash Commands (recommended):'));
553
- newline();
554
- console.log(colors.cyan(' /fix <file> <instruction>') + ' Apply AI-generated edit');
555
- console.log(colors.cyan(' /explain <file>') + ' Get AI explanation');
556
- console.log(colors.cyan(' /review <file>') + ' Review code quality');
557
- console.log(colors.cyan(' /plan <instruction>') + ' Create implementation plan');
558
- console.log(colors.cyan(' /cost') + ' Show cost tracking');
559
- console.log(colors.cyan(' /trust') + ' Show trust dashboard');
560
- console.log(colors.cyan(' /undo') + ' Undo last edit');
561
- console.log(colors.cyan(' /status') + ' Show project status');
562
- console.log(colors.cyan(' /history') + ' Show command history');
563
- console.log(colors.cyan(' /help') + ' Show all commands');
564
- newline();
565
- console.log(colors.bold('Quick Commands:'));
566
- newline();
567
- console.log(colors.cyan(' <question>') + ' Ask anything about your codebase');
568
- console.log(colors.cyan(' clear') + ' Clear screen');
569
- console.log(colors.cyan(' exit') + ' Exit session (or: quit, q)');
570
- newline();
571
- console.log(colors.dim('Examples:'));
572
- console.log(colors.dim(' How does authentication work?'));
573
- console.log(colors.dim(' /explain src/auth.ts'));
574
- console.log(colors.dim(' /fix src/utils.js "Add error handling"'));
575
- newline();
576
- }
577
- /**
578
- * Show keyboard shortcuts (Task 7.5)
579
- */
580
- function showKeyboardShortcuts() {
581
- newline();
582
- console.log(colors.bold('Keyboard Shortcuts:'));
583
- newline();
584
- console.log(colors.cyan(' ↑/↓') + ' Navigate command history');
585
- console.log(colors.cyan(' Tab') + ' Autocomplete (when available)');
586
- console.log(colors.cyan(' Ctrl+C') + ' Cancel current operation');
587
- console.log(colors.cyan(' Ctrl+D') + ' Exit session');
588
- console.log(colors.cyan(' Ctrl+L') + ' Clear screen');
589
- console.log(colors.cyan(' Esc') + ' Cancel current input');
590
- console.log(colors.cyan(' Enter') + ' Execute command');
591
- newline();
695
+ async function handlePlan(goal) {
696
+ if (!(await requireKey()))
697
+ return;
698
+ const spinner = startSpinner('Planning...');
699
+ const plan = await planTask(goal);
700
+ spinner.stop();
701
+ console.log();
702
+ console.log(formatPlan(plan));
592
703
  }
593
704
  //# sourceMappingURL=session.js.map