codehere 0.5.2-alpha → 0.5.3-alpha

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 (375) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +126 -102
  3. package/dist/application/agents/execution-agent.js +2 -2
  4. package/dist/application/agents/multi-agent-orchestrator.d.ts +0 -1
  5. package/dist/application/agents/multi-agent-orchestrator.d.ts.map +1 -1
  6. package/dist/application/agents/multi-agent-orchestrator.js +2 -9
  7. package/dist/application/agents/multi-agent-orchestrator.js.map +1 -1
  8. package/dist/application/agents/planning-agent.d.ts.map +1 -1
  9. package/dist/application/agents/planning-agent.js +11 -15
  10. package/dist/application/agents/planning-agent.js.map +1 -1
  11. package/dist/application/services/context-importer.d.ts +71 -0
  12. package/dist/application/services/context-importer.d.ts.map +1 -0
  13. package/dist/application/services/context-importer.js +436 -0
  14. package/dist/application/services/context-importer.js.map +1 -0
  15. package/dist/application/services/context-manager.d.ts +132 -0
  16. package/dist/application/services/context-manager.d.ts.map +1 -0
  17. package/dist/application/services/context-manager.js +369 -0
  18. package/dist/application/services/context-manager.js.map +1 -0
  19. package/dist/application/services/dependency-container.d.ts.map +1 -1
  20. package/dist/application/services/dependency-container.js +7 -5
  21. package/dist/application/services/dependency-container.js.map +1 -1
  22. package/dist/application/services/intelligent-router.d.ts +8 -5
  23. package/dist/application/services/intelligent-router.d.ts.map +1 -1
  24. package/dist/application/services/intelligent-router.js +78 -82
  25. package/dist/application/services/intelligent-router.js.map +1 -1
  26. package/dist/application/services/token-counting-service.d.ts +87 -0
  27. package/dist/application/services/token-counting-service.d.ts.map +1 -0
  28. package/dist/application/services/token-counting-service.js +196 -0
  29. package/dist/application/services/token-counting-service.js.map +1 -0
  30. package/dist/application/use-cases/ask-question-use-case.d.ts.map +1 -1
  31. package/dist/application/use-cases/ask-question-use-case.js +109 -21
  32. package/dist/application/use-cases/ask-question-use-case.js.map +1 -1
  33. package/dist/application/use-cases/edit-file-use-case.d.ts.map +1 -1
  34. package/dist/application/use-cases/edit-file-use-case.js +19 -0
  35. package/dist/application/use-cases/edit-file-use-case.js.map +1 -1
  36. package/dist/application/use-cases/planning-use-case.d.ts +1 -14
  37. package/dist/application/use-cases/planning-use-case.d.ts.map +1 -1
  38. package/dist/application/use-cases/planning-use-case.js +2 -109
  39. package/dist/application/use-cases/planning-use-case.js.map +1 -1
  40. package/dist/chat.d.ts.map +1 -1
  41. package/dist/chat.js +6 -17
  42. package/dist/chat.js.map +1 -1
  43. package/dist/domain/entities/conversation-context.d.ts +245 -0
  44. package/dist/domain/entities/conversation-context.d.ts.map +1 -0
  45. package/dist/domain/entities/conversation-context.js +50 -0
  46. package/dist/domain/entities/conversation-context.js.map +1 -0
  47. package/dist/domain/entities/memory.d.ts.map +1 -1
  48. package/dist/domain/interfaces/context-repository.interface.d.ts +71 -0
  49. package/dist/domain/interfaces/context-repository.interface.d.ts.map +1 -0
  50. package/dist/domain/interfaces/context-repository.interface.js +10 -0
  51. package/dist/domain/interfaces/context-repository.interface.js.map +1 -0
  52. package/dist/domain/services/query-intent-classifier.d.ts.map +1 -1
  53. package/dist/domain/services/query-intent-classifier.js +37 -23
  54. package/dist/domain/services/query-intent-classifier.js.map +1 -1
  55. package/dist/embed.d.ts.map +1 -1
  56. package/dist/embed.js +8 -3
  57. package/dist/embed.js.map +1 -1
  58. package/dist/index.js +267 -143
  59. package/dist/index.js.map +1 -1
  60. package/dist/infrastructure/ai/cohere-ai-service.d.ts.map +1 -1
  61. package/dist/infrastructure/ai/cohere-ai-service.js +14 -5
  62. package/dist/infrastructure/ai/cohere-ai-service.js.map +1 -1
  63. package/dist/infrastructure/ai/provider-ai-service.d.ts.map +1 -1
  64. package/dist/infrastructure/ai/provider-ai-service.js +64 -14
  65. package/dist/infrastructure/ai/provider-ai-service.js.map +1 -1
  66. package/dist/infrastructure/config/config-manager.d.ts +78 -9
  67. package/dist/infrastructure/config/config-manager.d.ts.map +1 -1
  68. package/dist/infrastructure/config/config-manager.js +127 -9
  69. package/dist/infrastructure/config/config-manager.js.map +1 -1
  70. package/dist/infrastructure/context/conversation-context.d.ts +39 -12
  71. package/dist/infrastructure/context/conversation-context.d.ts.map +1 -1
  72. package/dist/infrastructure/context/conversation-context.js +91 -4
  73. package/dist/infrastructure/context/conversation-context.js.map +1 -1
  74. package/dist/infrastructure/context/direct-context-provider.d.ts +18 -0
  75. package/dist/infrastructure/context/direct-context-provider.d.ts.map +1 -0
  76. package/dist/infrastructure/context/direct-context-provider.js +222 -0
  77. package/dist/infrastructure/context/direct-context-provider.js.map +1 -0
  78. package/dist/infrastructure/context/git-context-provider.d.ts +30 -0
  79. package/dist/infrastructure/context/git-context-provider.d.ts.map +1 -0
  80. package/dist/infrastructure/context/git-context-provider.js +140 -0
  81. package/dist/infrastructure/context/git-context-provider.js.map +1 -0
  82. package/dist/infrastructure/context/project-context-loader.d.ts +35 -0
  83. package/dist/infrastructure/context/project-context-loader.d.ts.map +1 -0
  84. package/dist/infrastructure/context/project-context-loader.js +184 -0
  85. package/dist/infrastructure/context/project-context-loader.js.map +1 -0
  86. package/dist/infrastructure/cost/cost-tracker.d.ts.map +1 -1
  87. package/dist/infrastructure/cost/cost-tracker.js +3 -2
  88. package/dist/infrastructure/cost/cost-tracker.js.map +1 -1
  89. package/dist/infrastructure/cost/session-token-tracker.d.ts +68 -0
  90. package/dist/infrastructure/cost/session-token-tracker.d.ts.map +1 -0
  91. package/dist/infrastructure/cost/session-token-tracker.js +178 -0
  92. package/dist/infrastructure/cost/session-token-tracker.js.map +1 -0
  93. package/dist/infrastructure/index.d.ts +1 -0
  94. package/dist/infrastructure/index.d.ts.map +1 -1
  95. package/dist/infrastructure/index.js +1 -2
  96. package/dist/infrastructure/index.js.map +1 -1
  97. package/dist/infrastructure/observability/execution-tracer.d.ts +21 -0
  98. package/dist/infrastructure/observability/execution-tracer.d.ts.map +1 -1
  99. package/dist/infrastructure/observability/execution-tracer.js +157 -4
  100. package/dist/infrastructure/observability/execution-tracer.js.map +1 -1
  101. package/dist/infrastructure/protocols/a2a-metadata.js +1 -1
  102. package/dist/infrastructure/protocols/mcp-oauth.js +1 -1
  103. package/dist/infrastructure/providers/cohere-provider.d.ts +1 -2
  104. package/dist/infrastructure/providers/cohere-provider.d.ts.map +1 -1
  105. package/dist/infrastructure/providers/cohere-provider.js +44 -42
  106. package/dist/infrastructure/providers/cohere-provider.js.map +1 -1
  107. package/dist/infrastructure/providers/fake-provider.d.ts.map +1 -1
  108. package/dist/infrastructure/providers/fake-provider.js +8 -0
  109. package/dist/infrastructure/providers/fake-provider.js.map +1 -1
  110. package/dist/infrastructure/providers/local-llm-provider.d.ts.map +1 -1
  111. package/dist/infrastructure/providers/local-llm-provider.js +8 -2
  112. package/dist/infrastructure/providers/local-llm-provider.js.map +1 -1
  113. package/dist/infrastructure/providers/openai-provider.d.ts.map +1 -1
  114. package/dist/infrastructure/providers/openai-provider.js +40 -7
  115. package/dist/infrastructure/providers/openai-provider.js.map +1 -1
  116. package/dist/infrastructure/providers/openrouter-provider.d.ts.map +1 -1
  117. package/dist/infrastructure/providers/openrouter-provider.js +13 -7
  118. package/dist/infrastructure/providers/openrouter-provider.js.map +1 -1
  119. package/dist/infrastructure/security/enhanced-security-gate.d.ts +13 -0
  120. package/dist/infrastructure/security/enhanced-security-gate.d.ts.map +1 -1
  121. package/dist/infrastructure/security/enhanced-security-gate.js +56 -1
  122. package/dist/infrastructure/security/enhanced-security-gate.js.map +1 -1
  123. package/dist/infrastructure/security/input-validator.d.ts +17 -0
  124. package/dist/infrastructure/security/input-validator.d.ts.map +1 -1
  125. package/dist/infrastructure/security/input-validator.js +140 -25
  126. package/dist/infrastructure/security/input-validator.js.map +1 -1
  127. package/dist/infrastructure/storage/embeddings-path.d.ts.map +1 -1
  128. package/dist/infrastructure/storage/embeddings-path.js +14 -4
  129. package/dist/infrastructure/storage/embeddings-path.js.map +1 -1
  130. package/dist/infrastructure/storage/memory-stream-service.d.ts.map +1 -1
  131. package/dist/infrastructure/storage/memory-stream-service.js +58 -88
  132. package/dist/infrastructure/storage/memory-stream-service.js.map +1 -1
  133. package/dist/infrastructure/storage/plan-repository.d.ts.map +1 -1
  134. package/dist/infrastructure/storage/plan-repository.js +4 -5
  135. package/dist/infrastructure/storage/plan-repository.js.map +1 -1
  136. package/dist/infrastructure/storage/sqlite-context-repository.d.ts +95 -0
  137. package/dist/infrastructure/storage/sqlite-context-repository.d.ts.map +1 -0
  138. package/dist/infrastructure/storage/sqlite-context-repository.js +467 -0
  139. package/dist/infrastructure/storage/sqlite-context-repository.js.map +1 -0
  140. package/dist/infrastructure/storage/sqlite-decision-repository.d.ts.map +1 -1
  141. package/dist/infrastructure/storage/sqlite-decision-repository.js +4 -8
  142. package/dist/infrastructure/storage/sqlite-decision-repository.js.map +1 -1
  143. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.d.ts.map +1 -1
  144. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js +4 -8
  145. package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js.map +1 -1
  146. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.d.ts.map +1 -1
  147. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js +4 -8
  148. package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js.map +1 -1
  149. package/dist/infrastructure/storage/sqlite-memory-repository.d.ts.map +1 -1
  150. package/dist/infrastructure/storage/sqlite-memory-repository.js +4 -8
  151. package/dist/infrastructure/storage/sqlite-memory-repository.js.map +1 -1
  152. package/dist/infrastructure/storage/sqlite-pattern-repository.d.ts.map +1 -1
  153. package/dist/infrastructure/storage/sqlite-pattern-repository.js +4 -8
  154. package/dist/infrastructure/storage/sqlite-pattern-repository.js.map +1 -1
  155. package/dist/infrastructure/storage/task-repository.d.ts +0 -1
  156. package/dist/infrastructure/storage/task-repository.d.ts.map +1 -1
  157. package/dist/infrastructure/storage/task-repository.js +2 -13
  158. package/dist/infrastructure/storage/task-repository.js.map +1 -1
  159. package/dist/infrastructure/ux/cli-style-guide.d.ts +105 -0
  160. package/dist/infrastructure/ux/cli-style-guide.d.ts.map +1 -0
  161. package/dist/infrastructure/ux/cli-style-guide.js +220 -0
  162. package/dist/infrastructure/ux/cli-style-guide.js.map +1 -0
  163. package/dist/infrastructure/ux/progress-indicator.d.ts +49 -10
  164. package/dist/infrastructure/ux/progress-indicator.d.ts.map +1 -1
  165. package/dist/infrastructure/ux/progress-indicator.js +112 -9
  166. package/dist/infrastructure/ux/progress-indicator.js.map +1 -1
  167. package/dist/infrastructure/validation/agent-feedback.d.ts +14 -1
  168. package/dist/infrastructure/validation/agent-feedback.d.ts.map +1 -1
  169. package/dist/infrastructure/validation/agent-feedback.js +57 -3
  170. package/dist/infrastructure/validation/agent-feedback.js.map +1 -1
  171. package/dist/parallel-processor.d.ts.map +1 -1
  172. package/dist/parallel-processor.js +39 -11
  173. package/dist/parallel-processor.js.map +1 -1
  174. package/dist/presentation/cli/commands/ask-command.d.ts +1 -2
  175. package/dist/presentation/cli/commands/ask-command.d.ts.map +1 -1
  176. package/dist/presentation/cli/commands/ask-command.js +66 -150
  177. package/dist/presentation/cli/commands/ask-command.js.map +1 -1
  178. package/dist/presentation/cli/commands/audit-command.d.ts +13 -0
  179. package/dist/presentation/cli/commands/audit-command.d.ts.map +1 -0
  180. package/dist/presentation/cli/commands/audit-command.js +96 -0
  181. package/dist/presentation/cli/commands/audit-command.js.map +1 -0
  182. package/dist/presentation/cli/commands/config-command.d.ts.map +1 -1
  183. package/dist/presentation/cli/commands/config-command.js +2 -14
  184. package/dist/presentation/cli/commands/config-command.js.map +1 -1
  185. package/dist/presentation/cli/commands/context-command.d.ts +32 -0
  186. package/dist/presentation/cli/commands/context-command.d.ts.map +1 -0
  187. package/dist/presentation/cli/commands/context-command.js +295 -0
  188. package/dist/presentation/cli/commands/context-command.js.map +1 -0
  189. package/dist/presentation/cli/commands/context-helper.d.ts +16 -0
  190. package/dist/presentation/cli/commands/context-helper.d.ts.map +1 -0
  191. package/dist/presentation/cli/commands/context-helper.js +88 -0
  192. package/dist/presentation/cli/commands/context-helper.js.map +1 -0
  193. package/dist/presentation/cli/commands/decision-command.js +6 -23
  194. package/dist/presentation/cli/commands/decision-command.js.map +1 -1
  195. package/dist/presentation/cli/commands/fix-command.d.ts.map +1 -1
  196. package/dist/presentation/cli/commands/fix-command.js +19 -23
  197. package/dist/presentation/cli/commands/fix-command.js.map +1 -1
  198. package/dist/presentation/cli/commands/help-command.d.ts.map +1 -1
  199. package/dist/presentation/cli/commands/help-command.js +1 -21
  200. package/dist/presentation/cli/commands/help-command.js.map +1 -1
  201. package/dist/presentation/cli/commands/orchestrate-command.d.ts +0 -1
  202. package/dist/presentation/cli/commands/orchestrate-command.d.ts.map +1 -1
  203. package/dist/presentation/cli/commands/orchestrate-command.js +19 -126
  204. package/dist/presentation/cli/commands/orchestrate-command.js.map +1 -1
  205. package/dist/presentation/cli/commands/plan-command.d.ts +0 -1
  206. package/dist/presentation/cli/commands/plan-command.d.ts.map +1 -1
  207. package/dist/presentation/cli/commands/plan-command.js +42 -132
  208. package/dist/presentation/cli/commands/plan-command.js.map +1 -1
  209. package/dist/presentation/cli/commands/react-command.d.ts.map +1 -1
  210. package/dist/presentation/cli/commands/react-command.js +1 -5
  211. package/dist/presentation/cli/commands/react-command.js.map +1 -1
  212. package/dist/presentation/cli/commands/review-command.d.ts.map +1 -1
  213. package/dist/presentation/cli/commands/review-command.js +2 -21
  214. package/dist/presentation/cli/commands/review-command.js.map +1 -1
  215. package/dist/presentation/cli/commands/smart-command.d.ts +3 -0
  216. package/dist/presentation/cli/commands/smart-command.d.ts.map +1 -1
  217. package/dist/presentation/cli/commands/smart-command.js +127 -93
  218. package/dist/presentation/cli/commands/smart-command.js.map +1 -1
  219. package/dist/presentation/cli/commands/status-command.d.ts.map +1 -1
  220. package/dist/presentation/cli/commands/status-command.js +1 -5
  221. package/dist/presentation/cli/commands/status-command.js.map +1 -1
  222. package/dist/presentation/cli/commands/trust-command.d.ts +28 -0
  223. package/dist/presentation/cli/commands/trust-command.d.ts.map +1 -0
  224. package/dist/presentation/cli/commands/trust-command.js +301 -0
  225. package/dist/presentation/cli/commands/trust-command.js.map +1 -0
  226. package/dist/presentation/cli/error-display.d.ts.map +1 -1
  227. package/dist/presentation/cli/error-display.js +17 -75
  228. package/dist/presentation/cli/error-display.js.map +1 -1
  229. package/dist/search.d.ts.map +1 -1
  230. package/dist/search.js +5 -18
  231. package/dist/search.js.map +1 -1
  232. package/dist/session.d.ts.map +1 -1
  233. package/dist/session.js +221 -57
  234. package/dist/session.js.map +1 -1
  235. package/dist/token-optimizer.d.ts.map +1 -1
  236. package/dist/token-optimizer.js +6 -1
  237. package/dist/token-optimizer.js.map +1 -1
  238. package/dist/tools/bash.d.ts.map +1 -1
  239. package/dist/tools/bash.js +0 -3
  240. package/dist/tools/bash.js.map +1 -1
  241. package/dist/tools/git-tool.js +7 -7
  242. package/dist/tools/git-tool.js.map +1 -1
  243. package/dist/ui.d.ts +0 -5
  244. package/dist/ui.d.ts.map +1 -1
  245. package/dist/ui.js +0 -19
  246. package/dist/ui.js.map +1 -1
  247. package/dist/utils/provider-check.d.ts +21 -0
  248. package/dist/utils/provider-check.d.ts.map +1 -0
  249. package/dist/utils/provider-check.js +124 -0
  250. package/dist/utils/provider-check.js.map +1 -0
  251. package/package.json +17 -14
  252. package/dist/application/agents/documentation-agent.d.ts +0 -24
  253. package/dist/application/agents/documentation-agent.d.ts.map +0 -1
  254. package/dist/application/agents/documentation-agent.js +0 -399
  255. package/dist/application/agents/documentation-agent.js.map +0 -1
  256. package/dist/application/agents/product-requirements-agent.d.ts +0 -21
  257. package/dist/application/agents/product-requirements-agent.d.ts.map +0 -1
  258. package/dist/application/agents/product-requirements-agent.js +0 -247
  259. package/dist/application/agents/product-requirements-agent.js.map +0 -1
  260. package/dist/application/reasoning/multi-model-planning-strategy.d.ts +0 -21
  261. package/dist/application/reasoning/multi-model-planning-strategy.d.ts.map +0 -1
  262. package/dist/application/reasoning/multi-model-planning-strategy.js +0 -158
  263. package/dist/application/reasoning/multi-model-planning-strategy.js.map +0 -1
  264. package/dist/application/reasoning/reasoning-config.d.ts +0 -15
  265. package/dist/application/reasoning/reasoning-config.d.ts.map +0 -1
  266. package/dist/application/reasoning/reasoning-config.js +0 -50
  267. package/dist/application/reasoning/reasoning-config.js.map +0 -1
  268. package/dist/application/reasoning/reasoning-orchestrator.d.ts +0 -18
  269. package/dist/application/reasoning/reasoning-orchestrator.d.ts.map +0 -1
  270. package/dist/application/reasoning/reasoning-orchestrator.js +0 -170
  271. package/dist/application/reasoning/reasoning-orchestrator.js.map +0 -1
  272. package/dist/application/reasoning/reasoning-strategy.interface.d.ts +0 -24
  273. package/dist/application/reasoning/reasoning-strategy.interface.d.ts.map +0 -1
  274. package/dist/application/reasoning/reasoning-strategy.interface.js +0 -6
  275. package/dist/application/reasoning/reasoning-strategy.interface.js.map +0 -1
  276. package/dist/application/reasoning/role-provider-resolver.d.ts +0 -36
  277. package/dist/application/reasoning/role-provider-resolver.d.ts.map +0 -1
  278. package/dist/application/reasoning/role-provider-resolver.js +0 -74
  279. package/dist/application/reasoning/role-provider-resolver.js.map +0 -1
  280. package/dist/application/reasoning/simple-planning-strategy.d.ts +0 -22
  281. package/dist/application/reasoning/simple-planning-strategy.d.ts.map +0 -1
  282. package/dist/application/reasoning/simple-planning-strategy.js +0 -217
  283. package/dist/application/reasoning/simple-planning-strategy.js.map +0 -1
  284. package/dist/application/reasoning/types.d.ts +0 -65
  285. package/dist/application/reasoning/types.d.ts.map +0 -1
  286. package/dist/application/reasoning/types.js +0 -6
  287. package/dist/application/reasoning/types.js.map +0 -1
  288. package/dist/application/reasoning/validator-strategy.d.ts +0 -56
  289. package/dist/application/reasoning/validator-strategy.d.ts.map +0 -1
  290. package/dist/application/reasoning/validator-strategy.js +0 -103
  291. package/dist/application/reasoning/validator-strategy.js.map +0 -1
  292. package/dist/domain/entities/documentation.d.ts +0 -35
  293. package/dist/domain/entities/documentation.d.ts.map +0 -1
  294. package/dist/domain/entities/documentation.js +0 -6
  295. package/dist/domain/entities/documentation.js.map +0 -1
  296. package/dist/domain/entities/product-requirements.d.ts +0 -50
  297. package/dist/domain/entities/product-requirements.d.ts.map +0 -1
  298. package/dist/domain/entities/product-requirements.js +0 -6
  299. package/dist/domain/entities/product-requirements.js.map +0 -1
  300. package/dist/domain/interfaces/agent.interface.d.ts +0 -15
  301. package/dist/domain/interfaces/agent.interface.d.ts.map +0 -1
  302. package/dist/domain/interfaces/agent.interface.js +0 -6
  303. package/dist/domain/interfaces/agent.interface.js.map +0 -1
  304. package/dist/infrastructure/ai/fake-ai-service.d.ts +0 -22
  305. package/dist/infrastructure/ai/fake-ai-service.d.ts.map +0 -1
  306. package/dist/infrastructure/ai/fake-ai-service.js +0 -59
  307. package/dist/infrastructure/ai/fake-ai-service.js.map +0 -1
  308. package/dist/infrastructure/completion/completion-generator.d.ts +0 -42
  309. package/dist/infrastructure/completion/completion-generator.d.ts.map +0 -1
  310. package/dist/infrastructure/completion/completion-generator.js +0 -184
  311. package/dist/infrastructure/completion/completion-generator.js.map +0 -1
  312. package/dist/infrastructure/security/network-guard.d.ts +0 -8
  313. package/dist/infrastructure/security/network-guard.d.ts.map +0 -1
  314. package/dist/infrastructure/security/network-guard.js +0 -70
  315. package/dist/infrastructure/security/network-guard.js.map +0 -1
  316. package/dist/infrastructure/security/offline.d.ts +0 -16
  317. package/dist/infrastructure/security/offline.d.ts.map +0 -1
  318. package/dist/infrastructure/security/offline.js +0 -24
  319. package/dist/infrastructure/security/offline.js.map +0 -1
  320. package/dist/infrastructure/storage/sqljs-init.d.ts +0 -8
  321. package/dist/infrastructure/storage/sqljs-init.d.ts.map +0 -1
  322. package/dist/infrastructure/storage/sqljs-init.js +0 -23
  323. package/dist/infrastructure/storage/sqljs-init.js.map +0 -1
  324. package/dist/infrastructure/ux/hitl-review-portal.d.ts +0 -47
  325. package/dist/infrastructure/ux/hitl-review-portal.d.ts.map +0 -1
  326. package/dist/infrastructure/ux/hitl-review-portal.js +0 -228
  327. package/dist/infrastructure/ux/hitl-review-portal.js.map +0 -1
  328. package/dist/infrastructure/ux/meta-query.d.ts +0 -9
  329. package/dist/infrastructure/ux/meta-query.d.ts.map +0 -1
  330. package/dist/infrastructure/ux/meta-query.js +0 -63
  331. package/dist/infrastructure/ux/meta-query.js.map +0 -1
  332. package/dist/infrastructure/ux/proportional-friction.d.ts +0 -73
  333. package/dist/infrastructure/ux/proportional-friction.d.ts.map +0 -1
  334. package/dist/infrastructure/ux/proportional-friction.js +0 -200
  335. package/dist/infrastructure/ux/proportional-friction.js.map +0 -1
  336. package/dist/infrastructure/ux/repo-fingerprint.d.ts +0 -10
  337. package/dist/infrastructure/ux/repo-fingerprint.d.ts.map +0 -1
  338. package/dist/infrastructure/ux/repo-fingerprint.js +0 -55
  339. package/dist/infrastructure/ux/repo-fingerprint.js.map +0 -1
  340. package/dist/infrastructure/validation/feedback-stats.d.ts +0 -99
  341. package/dist/infrastructure/validation/feedback-stats.d.ts.map +0 -1
  342. package/dist/infrastructure/validation/feedback-stats.js +0 -173
  343. package/dist/infrastructure/validation/feedback-stats.js.map +0 -1
  344. package/dist/infrastructure/validation/trust-config.d.ts +0 -27
  345. package/dist/infrastructure/validation/trust-config.d.ts.map +0 -1
  346. package/dist/infrastructure/validation/trust-config.js +0 -113
  347. package/dist/infrastructure/validation/trust-config.js.map +0 -1
  348. package/dist/presentation/cli/commands/memory-command.d.ts +0 -17
  349. package/dist/presentation/cli/commands/memory-command.d.ts.map +0 -1
  350. package/dist/presentation/cli/commands/memory-command.js +0 -252
  351. package/dist/presentation/cli/commands/memory-command.js.map +0 -1
  352. package/dist/presentation/cli/keyboard-shortcuts.d.ts +0 -27
  353. package/dist/presentation/cli/keyboard-shortcuts.d.ts.map +0 -1
  354. package/dist/presentation/cli/keyboard-shortcuts.js +0 -77
  355. package/dist/presentation/cli/keyboard-shortcuts.js.map +0 -1
  356. package/dist/test_cohere.d.ts +0 -2
  357. package/dist/test_cohere.d.ts.map +0 -1
  358. package/dist/test_cohere.js +0 -68
  359. package/dist/test_cohere.js.map +0 -1
  360. package/dist/test_env.d.ts +0 -2
  361. package/dist/test_env.d.ts.map +0 -1
  362. package/dist/test_env.js +0 -24
  363. package/dist/test_env.js.map +0 -1
  364. package/dist/test_retrieval.d.ts +0 -2
  365. package/dist/test_retrieval.d.ts.map +0 -1
  366. package/dist/test_retrieval.js +0 -84
  367. package/dist/test_retrieval.js.map +0 -1
  368. package/dist/tools/bash.d 2.ts +0 -53
  369. package/dist/tools/bash.js 2.map +0 -1
  370. package/dist/tools/edit 2.js +0 -235
  371. package/dist/tools/edit.d.ts 2.map +0 -1
  372. package/dist/utils/logger.d.ts +0 -34
  373. package/dist/utils/logger.d.ts.map +0 -1
  374. package/dist/utils/logger.js +0 -56
  375. package/dist/utils/logger.js.map +0 -1
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Direct Context Provider
3
+ * Reads code files directly without requiring embeddings index
4
+ * Used for "quick mode" - allows immediate queries without indexing
5
+ */
6
+ import { readFileSync, readdirSync, statSync } from 'fs';
7
+ import { join, extname, relative } from 'path';
8
+ // Supported code file extensions
9
+ const CODE_EXTENSIONS = new Set([
10
+ '.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs',
11
+ '.py', '.pyw',
12
+ '.java', '.kt', '.scala',
13
+ '.go',
14
+ '.rs',
15
+ '.rb',
16
+ '.php',
17
+ '.c', '.cpp', '.cc', '.h', '.hpp',
18
+ '.cs',
19
+ '.swift',
20
+ '.vue', '.svelte',
21
+ '.html', '.css', '.scss', '.sass', '.less',
22
+ '.json', '.yaml', '.yml', '.toml',
23
+ '.md', '.mdx',
24
+ '.sql',
25
+ '.sh', '.bash', '.zsh',
26
+ '.dockerfile', '.containerfile',
27
+ ]);
28
+ // Directories to skip
29
+ const SKIP_DIRS = new Set([
30
+ 'node_modules', '.git', 'dist', 'build', 'out', 'target',
31
+ '.next', '.nuxt', '.output', 'coverage', '__pycache__',
32
+ '.cache', '.turbo', '.vercel', '.netlify', 'vendor',
33
+ ]);
34
+ /**
35
+ * Get relevant code context without embeddings
36
+ * Uses keyword matching and file structure heuristics
37
+ */
38
+ export async function getDirectContext(query, options = {}) {
39
+ const { maxFiles = 20, maxFileSize = 50 * 1024, // 50KB per file
40
+ maxTotalSize = 200 * 1024, // 200KB total
41
+ rootDir = process.cwd(), } = options;
42
+ const keywords = extractKeywords(query);
43
+ const allFiles = collectCodeFiles(rootDir, maxFiles * 3); // Collect more, then filter
44
+ // Score files by relevance to query
45
+ const scoredFiles = allFiles.map(filepath => ({
46
+ filepath,
47
+ score: scoreFileRelevance(filepath, keywords),
48
+ }));
49
+ // Sort by score (highest first)
50
+ scoredFiles.sort((a, b) => b.score - a.score);
51
+ // Read top files until we hit limits
52
+ const chunks = [];
53
+ let totalSize = 0;
54
+ for (const { filepath, score } of scoredFiles) {
55
+ if (chunks.length >= maxFiles)
56
+ break;
57
+ if (totalSize >= maxTotalSize)
58
+ break;
59
+ try {
60
+ const stat = statSync(filepath);
61
+ if (stat.size > maxFileSize)
62
+ continue;
63
+ const content = readFileSync(filepath, 'utf-8');
64
+ totalSize += content.length;
65
+ const relPath = relative(rootDir, filepath);
66
+ chunks.push({
67
+ filepath: relPath,
68
+ content,
69
+ score: score,
70
+ lineStart: 1,
71
+ lineEnd: content.split('\n').length,
72
+ embedding: [], // Not used in quick mode
73
+ metadata: {
74
+ fileType: detectLanguage(filepath),
75
+ language: detectLanguage(filepath),
76
+ type: 'file',
77
+ },
78
+ });
79
+ }
80
+ catch {
81
+ // Skip files that can't be read
82
+ continue;
83
+ }
84
+ }
85
+ return chunks;
86
+ }
87
+ /**
88
+ * Extract search keywords from query
89
+ */
90
+ function extractKeywords(query) {
91
+ // Common stop words to ignore
92
+ const stopWords = new Set([
93
+ 'the', 'a', 'an', 'is', 'are', 'was', 'were', 'be', 'been', 'being',
94
+ 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could',
95
+ 'should', 'may', 'might', 'must', 'shall', 'can', 'need', 'dare',
96
+ 'this', 'that', 'these', 'those', 'what', 'which', 'who', 'whom',
97
+ 'how', 'where', 'when', 'why', 'all', 'each', 'every', 'both',
98
+ 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not',
99
+ 'only', 'own', 'same', 'so', 'than', 'too', 'very', 'just', 'about',
100
+ 'into', 'through', 'during', 'before', 'after', 'above', 'below',
101
+ 'to', 'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under',
102
+ 'again', 'further', 'then', 'once', 'here', 'there', 'any', 'and',
103
+ 'but', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by',
104
+ 'for', 'with', 'it', 'you', 'me', 'my', 'your', 'our', 'their',
105
+ ]);
106
+ // Extract words and filter
107
+ const words = query
108
+ .toLowerCase()
109
+ .replace(/[^\w\s]/g, ' ')
110
+ .split(/\s+/)
111
+ .filter(w => w.length > 2 && !stopWords.has(w));
112
+ // Also extract potential code identifiers (camelCase, PascalCase, snake_case)
113
+ const identifiers = query.match(/[A-Z][a-z]+(?:[A-Z][a-z]+)*|[a-z]+(?:_[a-z]+)+|[A-Z]+(?:_[A-Z]+)*/g) || [];
114
+ return [...new Set([...words, ...identifiers.map(i => i.toLowerCase())])];
115
+ }
116
+ /**
117
+ * Score a file's relevance to keywords
118
+ */
119
+ function scoreFileRelevance(filepath, keywords) {
120
+ const filename = filepath.toLowerCase();
121
+ let score = 0;
122
+ // Boost for important files
123
+ if (filename.includes('index'))
124
+ score += 2;
125
+ if (filename.includes('main'))
126
+ score += 2;
127
+ if (filename.includes('app'))
128
+ score += 2;
129
+ if (filename.includes('config'))
130
+ score += 1;
131
+ if (filename.includes('readme'))
132
+ score += 3;
133
+ if (filename.includes('package.json'))
134
+ score += 3;
135
+ // Boost for src directory
136
+ if (filename.includes('/src/'))
137
+ score += 1;
138
+ // Match keywords in filepath
139
+ for (const keyword of keywords) {
140
+ if (filename.includes(keyword)) {
141
+ score += 3;
142
+ }
143
+ }
144
+ // Penalize test files for general queries
145
+ if (filename.includes('test') || filename.includes('spec') || filename.includes('__')) {
146
+ score -= 1;
147
+ }
148
+ return score;
149
+ }
150
+ /**
151
+ * Collect all code files in directory (recursively)
152
+ */
153
+ function collectCodeFiles(dir, maxFiles) {
154
+ const files = [];
155
+ function walk(currentDir, depth = 0) {
156
+ if (files.length >= maxFiles)
157
+ return;
158
+ if (depth > 10)
159
+ return; // Max recursion depth
160
+ try {
161
+ const entries = readdirSync(currentDir, { withFileTypes: true });
162
+ for (const entry of entries) {
163
+ if (files.length >= maxFiles)
164
+ return;
165
+ const fullPath = join(currentDir, entry.name);
166
+ if (entry.isDirectory()) {
167
+ if (!SKIP_DIRS.has(entry.name) && !entry.name.startsWith('.')) {
168
+ walk(fullPath, depth + 1);
169
+ }
170
+ }
171
+ else if (entry.isFile()) {
172
+ const ext = extname(entry.name).toLowerCase();
173
+ if (CODE_EXTENSIONS.has(ext) || entry.name === 'Dockerfile' || entry.name === 'Makefile') {
174
+ files.push(fullPath);
175
+ }
176
+ }
177
+ }
178
+ }
179
+ catch {
180
+ // Skip directories we can't read
181
+ }
182
+ }
183
+ walk(dir);
184
+ return files;
185
+ }
186
+ /**
187
+ * Detect language from file extension
188
+ */
189
+ function detectLanguage(filepath) {
190
+ const ext = extname(filepath).toLowerCase();
191
+ const langMap = {
192
+ '.ts': 'typescript',
193
+ '.tsx': 'typescript',
194
+ '.js': 'javascript',
195
+ '.jsx': 'javascript',
196
+ '.py': 'python',
197
+ '.java': 'java',
198
+ '.go': 'go',
199
+ '.rs': 'rust',
200
+ '.rb': 'ruby',
201
+ '.php': 'php',
202
+ '.c': 'c',
203
+ '.cpp': 'cpp',
204
+ '.cs': 'csharp',
205
+ '.swift': 'swift',
206
+ '.kt': 'kotlin',
207
+ '.scala': 'scala',
208
+ '.vue': 'vue',
209
+ '.svelte': 'svelte',
210
+ '.html': 'html',
211
+ '.css': 'css',
212
+ '.scss': 'scss',
213
+ '.json': 'json',
214
+ '.yaml': 'yaml',
215
+ '.yml': 'yaml',
216
+ '.md': 'markdown',
217
+ '.sql': 'sql',
218
+ '.sh': 'bash',
219
+ };
220
+ return langMap[ext] || 'text';
221
+ }
222
+ //# sourceMappingURL=direct-context-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct-context-provider.js","sourceRoot":"","sources":["../../../src/infrastructure/context/direct-context-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Git Context Provider
3
+ * Provides context from git changes for more relevant AI responses
4
+ *
5
+ * Phase 1: v0.5.0-alpha.0
6
+ */
7
+ import { type GitStatus } from '../../git.js';
8
+ export interface GitContext {
9
+ status: GitStatus;
10
+ recentChanges: string[];
11
+ changedFilesContent: Array<{
12
+ file: string;
13
+ content: string;
14
+ diff?: string;
15
+ }>;
16
+ summary: string;
17
+ }
18
+ /**
19
+ * Get git context for AI prompts
20
+ */
21
+ export declare function getGitContext(cwd?: string, maxFiles?: number): GitContext;
22
+ /**
23
+ * Format git context for inclusion in AI prompts
24
+ */
25
+ export declare function formatGitContextForPrompt(context: GitContext): string;
26
+ /**
27
+ * Get quick git summary for display
28
+ */
29
+ export declare function getGitSummary(cwd?: string): string | null;
30
+ //# sourceMappingURL=git-context-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-context-provider.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/context/git-context-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAIxE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB,EAAE,KAAK,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAsB,EAAE,QAAQ,GAAE,MAAU,GAAG,UAAU,CAwD3F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAuBrE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAaxE"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Git Context Provider
3
+ * Provides context from git changes for more relevant AI responses
4
+ *
5
+ * Phase 1: v0.5.0-alpha.0
6
+ */
7
+ import { getGitStatus, getGitDiff } from '../../git.js';
8
+ import { readFileSync, existsSync } from 'fs';
9
+ import { join } from 'path';
10
+ /**
11
+ * Get git context for AI prompts
12
+ */
13
+ export function getGitContext(cwd = process.cwd(), maxFiles = 5) {
14
+ const status = getGitStatus(cwd);
15
+ if (!status.isRepo || !status.hasChanges) {
16
+ return {
17
+ status,
18
+ recentChanges: [],
19
+ changedFilesContent: [],
20
+ summary: status.isRepo ? 'No uncommitted changes' : 'Not a git repository',
21
+ };
22
+ }
23
+ const recentChanges = [];
24
+ const changedFilesContent = [];
25
+ // Prioritize modified files over untracked
26
+ const filesToProcess = [
27
+ ...status.modifiedFiles.slice(0, maxFiles),
28
+ ...status.untrackedFiles.slice(0, Math.max(0, maxFiles - status.modifiedFiles.length)),
29
+ ];
30
+ for (const file of filesToProcess) {
31
+ const fullPath = join(cwd, file);
32
+ // Skip binary files and large files
33
+ if (isBinaryFile(fullPath) || isLargeFile(fullPath)) {
34
+ recentChanges.push(`${file} (binary or too large)`);
35
+ continue;
36
+ }
37
+ try {
38
+ if (existsSync(fullPath)) {
39
+ const content = readFileSync(fullPath, 'utf-8');
40
+ const diff = status.modifiedFiles.includes(file) ? getGitDiff(file, cwd) : null;
41
+ changedFilesContent.push({
42
+ file,
43
+ content: truncateContent(content, 2000),
44
+ diff: diff?.changes?.join('\n') || undefined,
45
+ });
46
+ recentChanges.push(file);
47
+ }
48
+ }
49
+ catch {
50
+ recentChanges.push(`${file} (unreadable)`);
51
+ }
52
+ }
53
+ const summary = buildSummary(status, recentChanges);
54
+ return {
55
+ status,
56
+ recentChanges,
57
+ changedFilesContent,
58
+ summary,
59
+ };
60
+ }
61
+ /**
62
+ * Format git context for inclusion in AI prompts
63
+ */
64
+ export function formatGitContextForPrompt(context) {
65
+ if (!context.status.isRepo || context.changedFilesContent.length === 0) {
66
+ return '';
67
+ }
68
+ const parts = [];
69
+ parts.push(`Git Status: Branch "${context.status.branch || 'unknown'}" with ${context.recentChanges.length} changed files`);
70
+ if (context.changedFilesContent.length > 0) {
71
+ parts.push('\nRecently changed files:');
72
+ for (const { file, content, diff } of context.changedFilesContent) {
73
+ parts.push(`\n--- ${file} ---`);
74
+ if (diff) {
75
+ parts.push('Changes:');
76
+ parts.push(truncateContent(diff, 500));
77
+ }
78
+ parts.push('Current content (truncated):');
79
+ parts.push(truncateContent(content, 1000));
80
+ }
81
+ }
82
+ return parts.join('\n');
83
+ }
84
+ /**
85
+ * Get quick git summary for display
86
+ */
87
+ export function getGitSummary(cwd = process.cwd()) {
88
+ const status = getGitStatus(cwd);
89
+ if (!status.isRepo) {
90
+ return null;
91
+ }
92
+ if (!status.hasChanges) {
93
+ return `${status.branch || 'main'} (clean)`;
94
+ }
95
+ const totalChanges = status.modifiedFiles.length + status.untrackedFiles.length;
96
+ return `${status.branch || 'main'} (${totalChanges} changed)`;
97
+ }
98
+ // Helper functions
99
+ function isBinaryFile(filepath) {
100
+ const binaryExtensions = [
101
+ '.png', '.jpg', '.jpeg', '.gif', '.ico', '.svg',
102
+ '.pdf', '.doc', '.docx', '.xls', '.xlsx',
103
+ '.zip', '.tar', '.gz', '.rar',
104
+ '.exe', '.dll', '.so', '.dylib',
105
+ '.woff', '.woff2', '.ttf', '.eot',
106
+ '.mp3', '.mp4', '.avi', '.mov',
107
+ '.sqlite', '.db',
108
+ ];
109
+ return binaryExtensions.some(ext => filepath.toLowerCase().endsWith(ext));
110
+ }
111
+ function isLargeFile(filepath, maxSize = 50000) {
112
+ try {
113
+ if (!existsSync(filepath))
114
+ return false;
115
+ const { size } = require('fs').statSync(filepath);
116
+ return size > maxSize;
117
+ }
118
+ catch {
119
+ return false;
120
+ }
121
+ }
122
+ function truncateContent(content, maxLength) {
123
+ if (content.length <= maxLength)
124
+ return content;
125
+ return content.substring(0, maxLength) + '\n... [truncated]';
126
+ }
127
+ function buildSummary(status, changedFiles) {
128
+ const parts = [];
129
+ if (status.branch) {
130
+ parts.push(`Branch: ${status.branch}`);
131
+ }
132
+ if (status.modifiedFiles.length > 0) {
133
+ parts.push(`${status.modifiedFiles.length} modified`);
134
+ }
135
+ if (status.untrackedFiles.length > 0) {
136
+ parts.push(`${status.untrackedFiles.length} untracked`);
137
+ }
138
+ return parts.join(' • ');
139
+ }
140
+ //# sourceMappingURL=git-context-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-context-provider.js","sourceRoot":"","sources":["../../../src/infrastructure/context/git-context-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAkB,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAa5B;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE,EAAE,WAAmB,CAAC;IAC7E,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAEjC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACzC,OAAO;YACL,MAAM;YACN,aAAa,EAAE,EAAE;YACjB,mBAAmB,EAAE,EAAE;YACvB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,sBAAsB;SAC3E,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,mBAAmB,GAA4D,EAAE,CAAC;IAExF,2CAA2C;IAC3C,MAAM,cAAc,GAAG;QACrB,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;QAC1C,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;KACvF,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAEjC,oCAAoC;QACpC,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpD,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,wBAAwB,CAAC,CAAC;YACpD,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAChD,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAEhF,mBAAmB,CAAC,IAAI,CAAC;oBACvB,IAAI;oBACJ,OAAO,EAAE,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC;oBACvC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS;iBAC7C,CAAC,CAAC;gBAEH,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAEpD,OAAO;QACL,MAAM;QACN,aAAa;QACb,mBAAmB;QACnB,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAmB;IAC3D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,SAAS,UAAU,OAAO,CAAC,aAAa,CAAC,MAAM,gBAAgB,CAAC,CAAC;IAE5H,IAAI,OAAO,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;YAChC,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;YACzC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IACvD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAEjC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,UAAU,CAAC;IAC9C,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC;IAChF,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,KAAK,YAAY,WAAW,CAAC;AAChE,CAAC;AAED,mBAAmB;AAEnB,SAAS,YAAY,CAAC,QAAgB;IACpC,MAAM,gBAAgB,GAAG;QACvB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;QAC/C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;QACxC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;QAC7B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ;QAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;QACjC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;QAC9B,SAAS,EAAE,KAAK;KACjB,CAAC;IAEF,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,UAAkB,KAAK;IAC5D,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QACxC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAClD,OAAO,IAAI,GAAG,OAAO,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,SAAiB;IACzD,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,OAAO,CAAC;IAChD,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,mBAAmB,CAAC;AAC/D,CAAC;AAED,SAAS,YAAY,CAAC,MAAiB,EAAE,YAAsB;IAC7D,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,WAAW,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,MAAM,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Project Context Loader
3
+ * Loads CODEHERE.md or similar project context files
4
+ * Similar to how Claude Code uses CLAUDE.md
5
+ *
6
+ * Phase 1: v0.5.0-alpha.0
7
+ */
8
+ export interface ProjectContext {
9
+ raw: string;
10
+ projectName?: string;
11
+ description?: string;
12
+ techStack?: string[];
13
+ guidelines?: string[];
14
+ conventions?: string[];
15
+ importantFiles?: string[];
16
+ doNotModify?: string[];
17
+ customInstructions?: string;
18
+ }
19
+ /**
20
+ * Load project context from CODEHERE.md or similar files
21
+ */
22
+ export declare function loadProjectContext(cwd?: string): ProjectContext | null;
23
+ /**
24
+ * Format project context for inclusion in AI prompts
25
+ */
26
+ export declare function formatContextForPrompt(context: ProjectContext): string;
27
+ /**
28
+ * Check if a file is protected (should not be modified)
29
+ */
30
+ export declare function isFileProtected(filepath: string, context: ProjectContext | null): boolean;
31
+ /**
32
+ * Get context summary for display
33
+ */
34
+ export declare function getContextSummary(context: ProjectContext): string;
35
+ //# sourceMappingURL=project-context-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-context-loader.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/context/project-context-loader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAeD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAsB,GAAG,cAAc,GAAG,IAAI,CAcrF;AAgGD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAgCtE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,OAAO,CAezF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAoBjE"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Project Context Loader
3
+ * Loads CODEHERE.md or similar project context files
4
+ * Similar to how Claude Code uses CLAUDE.md
5
+ *
6
+ * Phase 1: v0.5.0-alpha.0
7
+ */
8
+ import { existsSync, readFileSync } from 'fs';
9
+ import { join } from 'path';
10
+ /**
11
+ * Supported context file names (in order of priority)
12
+ */
13
+ const CONTEXT_FILES = [
14
+ 'CODEHERE.md',
15
+ '.codehere/context.md',
16
+ 'codehere.md',
17
+ '.codehere.md',
18
+ // Also support Claude's format for compatibility
19
+ 'CLAUDE.md',
20
+ '.claude/context.md',
21
+ ];
22
+ /**
23
+ * Load project context from CODEHERE.md or similar files
24
+ */
25
+ export function loadProjectContext(cwd = process.cwd()) {
26
+ for (const fileName of CONTEXT_FILES) {
27
+ const filePath = join(cwd, fileName);
28
+ if (existsSync(filePath)) {
29
+ try {
30
+ const content = readFileSync(filePath, 'utf-8');
31
+ return parseProjectContext(content, fileName);
32
+ }
33
+ catch {
34
+ // Continue to next file if this one fails
35
+ continue;
36
+ }
37
+ }
38
+ }
39
+ return null;
40
+ }
41
+ /**
42
+ * Parse the context file content into structured data
43
+ */
44
+ function parseProjectContext(content, sourceFile) {
45
+ const context = {
46
+ raw: content,
47
+ };
48
+ // Extract project name from first H1
49
+ const h1Match = content.match(/^#\s+(.+)$/m);
50
+ if (h1Match) {
51
+ context.projectName = h1Match[1].trim();
52
+ }
53
+ // Extract description (first paragraph after H1 or start)
54
+ const descMatch = content.match(/^(?:#\s+.+\n+)?([^#\n][^\n]+)/m);
55
+ if (descMatch) {
56
+ context.description = descMatch[1].trim();
57
+ }
58
+ // Extract tech stack section
59
+ const techStackSection = extractSection(content, ['tech stack', 'technologies', 'stack']);
60
+ if (techStackSection) {
61
+ context.techStack = extractListItems(techStackSection);
62
+ }
63
+ // Extract guidelines section
64
+ const guidelinesSection = extractSection(content, ['guidelines', 'rules', 'principles']);
65
+ if (guidelinesSection) {
66
+ context.guidelines = extractListItems(guidelinesSection);
67
+ }
68
+ // Extract conventions section
69
+ const conventionsSection = extractSection(content, ['conventions', 'coding style', 'style guide']);
70
+ if (conventionsSection) {
71
+ context.conventions = extractListItems(conventionsSection);
72
+ }
73
+ // Extract important files section
74
+ const importantFilesSection = extractSection(content, ['important files', 'key files', 'critical files']);
75
+ if (importantFilesSection) {
76
+ context.importantFiles = extractListItems(importantFilesSection);
77
+ }
78
+ // Extract do not modify section
79
+ const doNotModifySection = extractSection(content, ['do not modify', 'protected files', 'do not touch', 'read only']);
80
+ if (doNotModifySection) {
81
+ context.doNotModify = extractListItems(doNotModifySection);
82
+ }
83
+ // Extract custom instructions (any section called "instructions" or "notes")
84
+ const instructionsSection = extractSection(content, ['instructions', 'notes', 'custom']);
85
+ if (instructionsSection) {
86
+ context.customInstructions = instructionsSection;
87
+ }
88
+ return context;
89
+ }
90
+ /**
91
+ * Extract a section by heading name (case-insensitive)
92
+ */
93
+ function extractSection(content, headingNames) {
94
+ for (const name of headingNames) {
95
+ // Match H2 or H3 with the section name
96
+ const regex = new RegExp(`^##?#?\\s*${name}[^\\n]*\\n([\\s\\S]*?)(?=^##|$)`, 'im');
97
+ const match = content.match(regex);
98
+ if (match) {
99
+ return match[1].trim();
100
+ }
101
+ }
102
+ return null;
103
+ }
104
+ /**
105
+ * Extract list items from a section
106
+ */
107
+ function extractListItems(section) {
108
+ const items = [];
109
+ // Match markdown list items (-, *, or numbered)
110
+ const listRegex = /^[\s]*[-*\d.]+\s+(.+)$/gm;
111
+ let match;
112
+ while ((match = listRegex.exec(section)) !== null) {
113
+ const item = match[1].trim();
114
+ if (item) {
115
+ items.push(item);
116
+ }
117
+ }
118
+ return items;
119
+ }
120
+ /**
121
+ * Format project context for inclusion in AI prompts
122
+ */
123
+ export function formatContextForPrompt(context) {
124
+ const parts = [];
125
+ if (context.projectName) {
126
+ parts.push(`Project: ${context.projectName}`);
127
+ }
128
+ if (context.description) {
129
+ parts.push(`Description: ${context.description}`);
130
+ }
131
+ if (context.techStack && context.techStack.length > 0) {
132
+ parts.push(`Tech Stack: ${context.techStack.join(', ')}`);
133
+ }
134
+ if (context.guidelines && context.guidelines.length > 0) {
135
+ parts.push(`Guidelines:\n${context.guidelines.map(g => `- ${g}`).join('\n')}`);
136
+ }
137
+ if (context.conventions && context.conventions.length > 0) {
138
+ parts.push(`Conventions:\n${context.conventions.map(c => `- ${c}`).join('\n')}`);
139
+ }
140
+ if (context.doNotModify && context.doNotModify.length > 0) {
141
+ parts.push(`DO NOT MODIFY these files:\n${context.doNotModify.map(f => `- ${f}`).join('\n')}`);
142
+ }
143
+ if (context.customInstructions) {
144
+ parts.push(`Special Instructions:\n${context.customInstructions}`);
145
+ }
146
+ return parts.join('\n\n');
147
+ }
148
+ /**
149
+ * Check if a file is protected (should not be modified)
150
+ */
151
+ export function isFileProtected(filepath, context) {
152
+ if (!context || !context.doNotModify) {
153
+ return false;
154
+ }
155
+ const normalizedPath = filepath.replace(/\\/g, '/');
156
+ return context.doNotModify.some(pattern => {
157
+ // Simple glob matching
158
+ if (pattern.includes('*')) {
159
+ const regex = new RegExp('^' + pattern.replace(/\*/g, '.*') + '$');
160
+ return regex.test(normalizedPath);
161
+ }
162
+ return normalizedPath.includes(pattern) || pattern.includes(normalizedPath);
163
+ });
164
+ }
165
+ /**
166
+ * Get context summary for display
167
+ */
168
+ export function getContextSummary(context) {
169
+ const parts = [];
170
+ if (context.projectName) {
171
+ parts.push(context.projectName);
172
+ }
173
+ if (context.techStack && context.techStack.length > 0) {
174
+ parts.push(`[${context.techStack.slice(0, 3).join(', ')}${context.techStack.length > 3 ? '...' : ''}]`);
175
+ }
176
+ if (context.guidelines && context.guidelines.length > 0) {
177
+ parts.push(`${context.guidelines.length} guidelines`);
178
+ }
179
+ if (context.doNotModify && context.doNotModify.length > 0) {
180
+ parts.push(`${context.doNotModify.length} protected files`);
181
+ }
182
+ return parts.join(' • ');
183
+ }
184
+ //# sourceMappingURL=project-context-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-context-loader.js","sourceRoot":"","sources":["../../../src/infrastructure/context/project-context-loader.ts"],"names":[],"mappings":"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"}