codehere 0.1.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +4 -3
  49. package/dist/parallel-processor.js +42 -118
  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 +263 -274
  69. package/dist/presentation/cli/commands/undo-command.js +2 -2
  70. package/dist/search.js +37 -67
  71. package/dist/session.js +549 -490
  72. package/dist/task-verification.js +4 -4
  73. package/dist/token-optimizer.js +1 -6
  74. package/dist/ui.js +126 -15
  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 +24 -37
  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,568 @@
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)
44
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
+ }
198
+ return;
199
+ }
200
+ // Ctrl+D
201
+ if (key === '\x04') {
202
+ stdout.write('\r\x1b[J\n' + colors.dim(' See you.') + '\n');
203
+ process.exit(0);
45
204
  }
46
- // Handle exit
47
- if (trimmed.toLowerCase() === 'exit' || trimmed.toLowerCase() === 'quit' || trimmed === 'q') {
48
- console.log(info('Goodbye! 👋'));
49
- rl.close();
205
+ // Ctrl+L
206
+ if (key === '\x0c') {
207
+ line = '';
208
+ selected = 0;
209
+ stdout.write('\x1b[2J\x1b[H');
210
+ printWelcome();
211
+ render();
212
+ return;
213
+ }
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();
50
224
  return;
51
225
  }
52
- // Handle help
53
- if (trimmed.toLowerCase() === 'help' || trimmed === '?') {
54
- showHelp();
55
- showKeyboardShortcuts();
56
- 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();
57
242
  return;
58
243
  }
59
- // Handle clear
60
- if (trimmed.toLowerCase() === 'clear') {
61
- console.clear();
62
- console.log(createWelcomeMessage());
63
- newline();
64
- rl.prompt();
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();
65
253
  return;
66
254
  }
67
- // Parse and execute command
68
- try {
69
- await executeCommand(trimmed, state, rl);
255
+ // Enter
256
+ if (key === '\r' || key === '\n') {
257
+ stdout.write('\r\x1b[J\n');
258
+ const trimmed = line.trim();
259
+ if (trimmed) {
260
+ historyBuf.unshift(trimmed);
261
+ historyIdx = -1;
262
+ }
263
+ line = '';
264
+ selected = 0;
265
+ pLines = 0;
266
+ if (!trimmed) {
267
+ render();
268
+ return;
269
+ }
270
+ // Async execution
271
+ processing = true;
272
+ executeInput(trimmed, state).catch(err => {
273
+ console.log(error(' ' + (err instanceof Error ? err.message : String(err))));
274
+ }).finally(() => {
275
+ processing = false;
276
+ stdin.resume();
277
+ stdin.ref();
278
+ if (stdin.isTTY && !stdin.isRaw)
279
+ stdin.setRawMode(true);
280
+ console.log();
281
+ render();
282
+ });
283
+ return;
70
284
  }
71
- catch (err) {
72
- console.error(error('Error:'), err instanceof Error ? err.message : String(err));
285
+ // Backspace
286
+ if (key === '\x7f' || key === '\b') {
287
+ if (line.length > 0) {
288
+ line = line.slice(0, -1);
289
+ selected = 0;
290
+ render();
291
+ }
292
+ return;
73
293
  }
74
- rl.prompt();
75
- });
76
- rl.on('close', () => {
77
- console.log(newline());
78
- console.log(colors.dim('Session ended.'));
79
- process.exit(0);
294
+ // Ignore escape sequences
295
+ if (key.startsWith('\x1b'))
296
+ return;
297
+ // Regular character
298
+ line += key;
299
+ selected = 0;
300
+ render();
301
+ }
302
+ // ── Initial render ──
303
+ render();
304
+ // ── Stdin with escape buffering ──
305
+ stdin.on('data', (raw) => {
306
+ if (processing)
307
+ return;
308
+ if (escBuf.length > 0) {
309
+ escBuf += raw;
310
+ if (escTimer)
311
+ clearTimeout(escTimer);
312
+ if (escBuf.length >= 3) {
313
+ const seq = escBuf;
314
+ escBuf = '';
315
+ handle(seq);
316
+ }
317
+ else {
318
+ escTimer = setTimeout(() => { const seq = escBuf; escBuf = ''; handle(seq); }, 50);
319
+ }
320
+ return;
321
+ }
322
+ if (raw === '\x1b') {
323
+ escBuf = raw;
324
+ escTimer = setTimeout(() => { const seq = escBuf; escBuf = ''; handle(seq); }, 50);
325
+ return;
326
+ }
327
+ handle(raw);
80
328
  });
81
329
  }
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);
330
+ // ── Command list (for bare / or help) ──────────────────────────────────────
331
+ function printCommandList() {
332
+ console.log();
333
+ const maxLen = Math.max(...PALETTE_CMDS.map(c => c.sig.length));
334
+ for (const cmd of PALETTE_CMDS) {
335
+ const pad = ' '.repeat(Math.max(1, maxLen - cmd.sig.length + 2));
336
+ const badge = cmd.noKey ? colors.dim(' (free)') : '';
337
+ console.log(` ${colors.cyan(cmd.sig)}${pad}${colors.dim(cmd.desc)}${badge}`);
338
+ }
339
+ }
340
+ // ── Input dispatcher ────────────────────────────────────────────────────────
341
+ async function executeInput(input, state) {
342
+ if (input === '/') {
343
+ printCommandList();
91
344
  return;
92
345
  }
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);
346
+ if (input.startsWith('/')) {
347
+ const spaceIdx = input.indexOf(' ');
348
+ const cmd = (spaceIdx === -1 ? input.slice(1) : input.slice(1, spaceIdx)).toLowerCase();
349
+ const args = spaceIdx === -1 ? '' : input.slice(spaceIdx + 1).trim();
350
+ await handleSlash(cmd, args, state);
351
+ return;
97
352
  }
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);
353
+ // Exact keywords for REPL control
354
+ if (/^(exit|quit)$/i.test(input)) {
355
+ console.log(colors.dim(' See you.'));
356
+ process.exit(0);
103
357
  }
104
- else if (lower.startsWith('review ')) {
105
- const file = input.substring(7).trim();
106
- await handleReview(file, rl);
358
+ if (/^(help|\?)$/i.test(input)) {
359
+ printCommandList();
360
+ return;
107
361
  }
108
- else if (lower.startsWith('plan ')) {
109
- const instruction = input.substring(5).trim();
110
- await handlePlan(instruction, rl);
362
+ if (input.toLowerCase() === 'clear') {
363
+ stdout.write('\x1b[2J\x1b[H');
364
+ return;
111
365
  }
112
- else {
113
- // Default: use intelligent router - understands any query
114
- await handleSmartQuery(input, state, rl);
366
+ // Bare command names: "explain src/auth.js" → same as "/explain src/auth.js"
367
+ const BARE_CMDS = PALETTE_CMDS.map(c => c.name);
368
+ const lower = input.toLowerCase();
369
+ const firstWord = lower.split(/\s+/)[0];
370
+ if (BARE_CMDS.includes(firstWord)) {
371
+ const args = input.slice(firstWord.length).trim();
372
+ await handleSlash(firstWord, args, state);
373
+ return;
115
374
  }
375
+ // Everything else → AI query (the router decides what to do)
376
+ await handleQuery(input, state);
116
377
  }
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"'));
378
+ // ── Slash commands ──────────────────────────────────────────────────────────
379
+ async function handleSlash(cmd, args, state) {
380
+ switch (cmd) {
381
+ case 'ask':
382
+ case 'q':
383
+ if (!args) {
384
+ console.log(colors.dim(' Usage: /ask <question>'));
132
385
  return;
133
386
  }
134
- const file = fixParts[0];
135
- const instruction = fixParts.slice(1).join(' ');
136
- await handleFix(file, instruction, rl);
387
+ await handleQuery(args, state);
137
388
  break;
138
- }
139
389
  case 'explain':
140
- case 'e': {
141
- // /explain <file>
390
+ case 'e':
142
391
  if (!args) {
143
- console.log(warning('Usage: /explain <file>'));
144
- console.log(colors.dim('Example: /explain src/auth.ts'));
392
+ console.log(colors.dim(' Usage: /explain <file>'));
145
393
  return;
146
394
  }
147
- await handleExplain(args.split(/\s+/)[0], rl);
395
+ await handleExplain(args);
396
+ break;
397
+ case 'fix':
398
+ case 'edit': {
399
+ const p = args.split(' ');
400
+ if (!p[0]) {
401
+ console.log(colors.dim(' Usage: /fix <file> <instruction>'));
402
+ return;
403
+ }
404
+ await handleFix(p[0], p.slice(1).join(' '));
148
405
  break;
149
406
  }
150
407
  case 'review':
151
- case 'r': {
152
- // /review <file>
153
408
  if (!args) {
154
- console.log(warning('Usage: /review <file>'));
155
- console.log(colors.dim('Example: /review src/auth.ts'));
409
+ console.log(colors.dim(' Usage: /review <file>'));
156
410
  return;
157
411
  }
158
- await handleReview(args.split(/\s+/)[0], rl);
412
+ await handleReview(args);
159
413
  break;
160
- }
161
414
  case 'plan':
162
- case 'p': {
163
- // /plan <instruction>
164
415
  if (!args) {
165
- console.log(warning('Usage: /plan <instruction>'));
166
- console.log(colors.dim('Example: /plan "add user authentication"'));
416
+ console.log(colors.dim(' Usage: /plan <goal>'));
167
417
  return;
168
418
  }
169
- await handlePlan(args, rl);
419
+ await handlePlan(args);
170
420
  break;
171
- }
172
- case 'cost': {
173
- // /cost - show instant session token stats (like Claude Code)
174
- showSessionCostDisplay();
421
+ case 'trust': {
422
+ const { executeTrustCommand } = await import('./presentation/cli/commands/trust-command.js');
423
+ await executeTrustCommand(args || undefined);
175
424
  break;
176
425
  }
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');
182
- }
183
- catch (err) {
184
- console.log(error('Failed to get trust status'));
185
- }
426
+ case 'report': {
427
+ const { executeReportCommand } = await import('./presentation/cli/commands/report-command.js');
428
+ await executeReportCommand(args || undefined);
186
429
  break;
187
430
  }
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');
193
- }
194
- catch (err) {
195
- console.log(error('Failed to undo'));
196
- }
431
+ case 'hook': {
432
+ const { executeHookCommand } = await import('./presentation/cli/commands/hook-command.js');
433
+ await executeHookCommand(args.split(' ')[0] || 'status');
197
434
  break;
198
435
  }
199
436
  case 'status': {
200
- // /status - show project status
201
- try {
202
- const { executeStatusCommand } = await import('./presentation/cli/commands/status-command.js');
203
- await executeStatusCommand();
204
- }
205
- catch (err) {
206
- console.log(error('Failed to get status'));
437
+ const { executeStatusCommand } = await import('./presentation/cli/commands/status-command.js');
438
+ await executeStatusCommand({});
439
+ break;
440
+ }
441
+ case 'suggest': {
442
+ const { executeSuggestCommand } = await import('./presentation/cli/commands/suggest-command.js');
443
+ if (!args) {
444
+ console.log(colors.dim(' Usage: /suggest <query>'));
445
+ return;
207
446
  }
447
+ await executeSuggestCommand(args);
448
+ break;
449
+ }
450
+ case 'test': {
451
+ console.log(colors.dim(' Run from terminal: ') + colors.cyan(`codehere test ${args || '<file>'}`));
208
452
  break;
209
453
  }
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.'));
454
+ case 'docs': {
455
+ const { executeDocsCommand } = await import('./presentation/cli/commands/docs-command.js');
456
+ await executeDocsCommand((args || 'readme'));
457
+ break;
458
+ }
459
+ case 'refactor': {
460
+ console.log(colors.dim(' Run from terminal: ') + colors.cyan(`codehere refactor ${args || '<pattern> <instruction>'}`));
461
+ break;
462
+ }
463
+ case 'orchestrate': {
464
+ const { executeOrchestrateCommand } = await import('./presentation/cli/commands/orchestrate-command.js');
465
+ if (!args) {
466
+ console.log(colors.dim(' Usage: /orchestrate <goal>'));
467
+ return;
215
468
  }
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
- });
469
+ await executeOrchestrateCommand(args, {});
470
+ break;
471
+ }
472
+ case 'run': {
473
+ const { executeRunCommand } = await import('./presentation/cli/commands/run-command.js');
474
+ if (!args) {
475
+ console.log(colors.dim(' Usage: /run <goal>'));
476
+ return;
221
477
  }
478
+ await executeRunCommand(args, {});
222
479
  break;
223
480
  }
224
- case 'clear': {
225
- // /clear - clear screen
226
- console.clear();
227
- console.log(createWelcomeMessage());
228
- newline();
481
+ case 'git-review': {
482
+ console.log(colors.dim(' Run from terminal: ') + colors.cyan('codehere git-review'));
229
483
  break;
230
484
  }
485
+ case 'index':
486
+ console.log(colors.dim(' Run from terminal: ') + colors.cyan('codehere index'));
487
+ break;
488
+ case 'health': {
489
+ const { performHealthCheck, formatHealthStatus } = await import('./monitoring.js');
490
+ console.log(formatHealthStatus(performHealthCheck()));
491
+ break;
492
+ }
493
+ case 'setup': {
494
+ const { executeSetupCommand } = await import('./presentation/cli/commands/setup-command.js');
495
+ await executeSetupCommand(false);
496
+ break;
497
+ }
498
+ case 'serve': {
499
+ console.log(colors.dim(' Run from terminal: ') + colors.cyan('codehere serve'));
500
+ break;
501
+ }
502
+ case 'config': {
503
+ const { executeConfigCommand } = await import('./presentation/cli/commands/config-command.js');
504
+ const parts = args.split(' ');
505
+ await executeConfigCommand(parts[0], parts[1], parts[2]);
506
+ break;
507
+ }
508
+ case 'cost': {
509
+ const { executeCostCommand } = await import('./presentation/cli/commands/cost-command.js');
510
+ await executeCostCommand((args || 'status'));
511
+ break;
512
+ }
513
+ case 'models': {
514
+ const { executeModelsCommand } = await import('./presentation/cli/commands/models-command.js');
515
+ await executeModelsCommand({ list: true });
516
+ break;
517
+ }
518
+ case 'undo': {
519
+ console.log(colors.dim(' Run from terminal: ') + colors.cyan(`codehere undo ${args || '<file>'}`));
520
+ break;
521
+ }
522
+ case 'clear':
523
+ stdout.write('\x1b[2J\x1b[H');
524
+ break;
231
525
  case 'help':
232
- case '?': {
233
- // /help - show help
234
- showSlashCommandHelp();
526
+ case '?':
527
+ printCommandList();
235
528
  break;
529
+ case 'exit':
530
+ case 'quit':
531
+ console.log(colors.dim(' See you.'));
532
+ process.exit(0);
533
+ default: {
534
+ // Fuzzy match: find closest command
535
+ const ALL_CMD_NAMES = PALETTE_CMDS.map(c => c.name);
536
+ const KNOWN = [...ALL_CMD_NAMES, 'q', 'e', 'edit', 'quit'];
537
+ const match = KNOWN.find(k => k.startsWith(cmd));
538
+ if (match) {
539
+ console.log(colors.dim(` Did you mean /${match}?`));
540
+ }
541
+ else {
542
+ console.log(warning(` Unknown: /${cmd}`));
543
+ console.log(colors.dim(' Type / to see commands'));
544
+ }
236
545
  }
237
- default:
238
- console.log(warning(`Unknown command: /${command}`));
239
- console.log(colors.dim('Type /help to see available commands'));
240
546
  }
241
547
  }
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();
548
+ // ── Handlers ────────────────────────────────────────────────────────────────
549
+ function startSpinner(text) {
550
+ return ora({ text: colors.dim(text), spinner: 'dots', color: 'cyan' }).start();
278
551
  }
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();
552
+ async function requireKey() {
553
+ if (!process.env.ANTHROPIC_API_KEY && !process.env.OPENAI_API_KEY && !process.env.COHERE_API_KEY && process.env.CODEHERE_FAKE_AI !== '1') {
554
+ console.log(warning(' No API key set. Run: codehere setup'));
555
+ return false;
556
+ }
557
+ return true;
307
558
  }
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.'));
559
+ async function handleQuery(query, state) {
560
+ if (!(await requireKey()))
314
561
  return;
315
- }
316
- process.stdout.write(colors.dim(' Processing...\r'));
562
+ const spinner = startSpinner('Thinking...');
317
563
  try {
318
- // Use memory-aware router
319
564
  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
565
+ const router = new IntelligentRouter(undefined, container.aiService, container.memoryStreamService);
323
566
  const { conversationContextManager } = await import('./infrastructure/context/conversation-context.js');
324
567
  const { sessionManager } = await import('./infrastructure/context/session-manager.js');
325
568
  const sessionId = sessionManager.getSessionId(process.cwd());
@@ -328,266 +571,82 @@ async function handleSmartQuery(query, state, rl) {
328
571
  query,
329
572
  context: {
330
573
  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
- })),
574
+ conversationHistory: history.map(t => ({ query: t.query, response: t.response, timestamp: typeof t.timestamp === 'string' ? Date.parse(t.timestamp) : t.timestamp })),
336
575
  sessionId,
337
576
  },
338
577
  });
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
- }
578
+ spinner.stop();
579
+ if (result.success && result.message) {
580
+ const { formatMarkdownForTerminal } = await import('./infrastructure/ux/stream-markdown.js');
581
+ console.log();
582
+ console.log(formatMarkdownForTerminal(result.message));
346
583
  }
347
- 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
- }
584
+ else if (result.error) {
585
+ console.log(error(' ' + result.error));
355
586
  }
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)
587
+ state.history.push({ command: query, response: result.message || result.error || '', timestamp: new Date().toISOString() });
365
588
  const entities = conversationContextManager.extractEntities(query);
366
- conversationContextManager.addTurn(sessionId, query, response, entities, result.intent);
589
+ conversationContextManager.addTurn(sessionId, query, result.message || '', entities, result.intent);
367
590
  }
368
591
  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;
592
+ spinner.stop();
593
+ const msg = err instanceof Error ? err.message : String(err);
594
+ if (msg.includes('No embeddings') || msg.includes('not found') || msg.includes('Not found')) {
595
+ console.log(colors.dim(` Couldn't answer that. Try "codehere index" first, or rephrase your question.`));
391
596
  }
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;
597
+ else {
598
+ console.log(error(' ' + msg));
436
599
  }
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
600
  }
457
601
  }
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.'));
602
+ async function handleExplain(file) {
603
+ if (!(await requireKey()))
464
604
  return;
465
- }
466
- if (!instruction) {
467
- console.error(error('Please provide an instruction. Example: fix file.js "Add error handling"'));
605
+ const fullPath = join(process.cwd(), file);
606
+ if (!existsSync(fullPath)) {
607
+ console.log(error(` Not found: ${file}`));
468
608
  return;
469
609
  }
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
- }
610
+ const spinner = startSpinner('Reading...');
611
+ const content = readFileSync(fullPath, 'utf-8');
612
+ const context = [{ filepath: file, content, score: 1.0 }];
613
+ spinner.stop();
614
+ console.log();
615
+ const md = createMarkdownStream();
616
+ await chatWithContextStream(`Explain this file: ${file}`, context, (token) => md.write(token));
617
+ md.flush();
618
+ console.log();
494
619
  }
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.'));
620
+ async function handleFix(file, hint) {
621
+ if (!(await requireKey()))
622
+ return;
623
+ if (!hint) {
624
+ console.log(colors.dim(' Usage: /fix <file> <what to fix>'));
501
625
  return;
502
626
  }
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
- }
627
+ const { executeFixCommand } = await import('./presentation/cli/commands/fix-command.js');
628
+ await executeFixCommand(file, hint);
524
629
  }
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.'));
630
+ async function handleReview(file) {
631
+ if (!(await requireKey()))
531
632
  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;
633
+ const spinner = startSpinner('Reviewing...');
634
+ const review = await reviewFile(file);
635
+ spinner.stop();
636
+ console.log();
637
+ console.log(colors.bold(` ${file}`) + colors.dim(` · ${review.score}/100 · ${review.issues.length} issues`));
638
+ for (const issue of review.issues.slice(0, 5)) {
639
+ const icon = issue.severity === 'error' ? colors.red('✗') : issue.severity === 'warning' ? colors.yellow('!') : colors.dim('·');
640
+ console.log(` ${icon} ${issue.message}`);
545
641
  }
546
642
  }
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();
643
+ async function handlePlan(goal) {
644
+ if (!(await requireKey()))
645
+ return;
646
+ const spinner = startSpinner('Planning...');
647
+ const plan = await planTask(goal);
648
+ spinner.stop();
649
+ console.log();
650
+ console.log(formatPlan(plan));
592
651
  }
593
652
  //# sourceMappingURL=session.js.map