@mc1global/opencode-jarvis 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/LICENSE +10 -0
  2. package/README.md +171 -0
  3. package/dist/application/context-memory/dtos.d.ts +100 -0
  4. package/dist/application/context-memory/dtos.d.ts.map +1 -0
  5. package/dist/application/context-memory/dtos.js +11 -0
  6. package/dist/application/context-memory/dtos.js.map +1 -0
  7. package/dist/application/context-memory/note-use-cases.d.ts +22 -0
  8. package/dist/application/context-memory/note-use-cases.d.ts.map +1 -0
  9. package/dist/application/context-memory/note-use-cases.js +76 -0
  10. package/dist/application/context-memory/note-use-cases.js.map +1 -0
  11. package/dist/application/context-memory/session-use-cases.d.ts +23 -0
  12. package/dist/application/context-memory/session-use-cases.d.ts.map +1 -0
  13. package/dist/application/context-memory/session-use-cases.js +63 -0
  14. package/dist/application/context-memory/session-use-cases.js.map +1 -0
  15. package/dist/application/context-memory/todo-use-cases.d.ts +25 -0
  16. package/dist/application/context-memory/todo-use-cases.d.ts.map +1 -0
  17. package/dist/application/context-memory/todo-use-cases.js +100 -0
  18. package/dist/application/context-memory/todo-use-cases.js.map +1 -0
  19. package/dist/application/domain-map/dtos.d.ts +58 -0
  20. package/dist/application/domain-map/dtos.d.ts.map +1 -0
  21. package/dist/application/domain-map/dtos.js +11 -0
  22. package/dist/application/domain-map/dtos.js.map +1 -0
  23. package/dist/application/domain-map/use-cases.d.ts +64 -0
  24. package/dist/application/domain-map/use-cases.d.ts.map +1 -0
  25. package/dist/application/domain-map/use-cases.js +217 -0
  26. package/dist/application/domain-map/use-cases.js.map +1 -0
  27. package/dist/application/environment/dtos.d.ts +74 -0
  28. package/dist/application/environment/dtos.d.ts.map +1 -0
  29. package/dist/application/environment/dtos.js +10 -0
  30. package/dist/application/environment/dtos.js.map +1 -0
  31. package/dist/application/environment/use-cases.d.ts +29 -0
  32. package/dist/application/environment/use-cases.d.ts.map +1 -0
  33. package/dist/application/environment/use-cases.js +232 -0
  34. package/dist/application/environment/use-cases.js.map +1 -0
  35. package/dist/application/governance/validation-use-cases.d.ts +45 -0
  36. package/dist/application/governance/validation-use-cases.d.ts.map +1 -0
  37. package/dist/application/governance/validation-use-cases.js +51 -0
  38. package/dist/application/governance/validation-use-cases.js.map +1 -0
  39. package/dist/application/kanban/board-use-cases.d.ts +45 -0
  40. package/dist/application/kanban/board-use-cases.d.ts.map +1 -0
  41. package/dist/application/kanban/board-use-cases.js +124 -0
  42. package/dist/application/kanban/board-use-cases.js.map +1 -0
  43. package/dist/application/kanban/card-use-cases.d.ts +32 -0
  44. package/dist/application/kanban/card-use-cases.d.ts.map +1 -0
  45. package/dist/application/kanban/card-use-cases.js +204 -0
  46. package/dist/application/kanban/card-use-cases.js.map +1 -0
  47. package/dist/application/kanban/dtos.d.ts +165 -0
  48. package/dist/application/kanban/dtos.d.ts.map +1 -0
  49. package/dist/application/kanban/dtos.js +11 -0
  50. package/dist/application/kanban/dtos.js.map +1 -0
  51. package/dist/application/kanban/sprint-use-cases.d.ts +34 -0
  52. package/dist/application/kanban/sprint-use-cases.d.ts.map +1 -0
  53. package/dist/application/kanban/sprint-use-cases.js +243 -0
  54. package/dist/application/kanban/sprint-use-cases.js.map +1 -0
  55. package/dist/application/rag/dtos.d.ts +113 -0
  56. package/dist/application/rag/dtos.d.ts.map +1 -0
  57. package/dist/application/rag/dtos.js +11 -0
  58. package/dist/application/rag/dtos.js.map +1 -0
  59. package/dist/application/rag/oracle-use-cases.d.ts +30 -0
  60. package/dist/application/rag/oracle-use-cases.d.ts.map +1 -0
  61. package/dist/application/rag/oracle-use-cases.js +91 -0
  62. package/dist/application/rag/oracle-use-cases.js.map +1 -0
  63. package/dist/application/rag/use-cases.d.ts +34 -0
  64. package/dist/application/rag/use-cases.d.ts.map +1 -0
  65. package/dist/application/rag/use-cases.js +234 -0
  66. package/dist/application/rag/use-cases.js.map +1 -0
  67. package/dist/application/token-metrics/dtos.d.ts +126 -0
  68. package/dist/application/token-metrics/dtos.d.ts.map +1 -0
  69. package/dist/application/token-metrics/dtos.js +11 -0
  70. package/dist/application/token-metrics/dtos.js.map +1 -0
  71. package/dist/application/token-metrics/tracking-use-cases.d.ts +33 -0
  72. package/dist/application/token-metrics/tracking-use-cases.d.ts.map +1 -0
  73. package/dist/application/token-metrics/tracking-use-cases.js +220 -0
  74. package/dist/application/token-metrics/tracking-use-cases.js.map +1 -0
  75. package/dist/application/vault/dtos.d.ts +91 -0
  76. package/dist/application/vault/dtos.d.ts.map +1 -0
  77. package/dist/application/vault/dtos.js +11 -0
  78. package/dist/application/vault/dtos.js.map +1 -0
  79. package/dist/application/vault/use-cases.d.ts +30 -0
  80. package/dist/application/vault/use-cases.d.ts.map +1 -0
  81. package/dist/application/vault/use-cases.js +307 -0
  82. package/dist/application/vault/use-cases.js.map +1 -0
  83. package/dist/application/vault/vault-manager.d.ts +47 -0
  84. package/dist/application/vault/vault-manager.d.ts.map +1 -0
  85. package/dist/application/vault/vault-manager.js +272 -0
  86. package/dist/application/vault/vault-manager.js.map +1 -0
  87. package/dist/application/workspace-registry/dtos.d.ts +91 -0
  88. package/dist/application/workspace-registry/dtos.d.ts.map +1 -0
  89. package/dist/application/workspace-registry/dtos.js +11 -0
  90. package/dist/application/workspace-registry/dtos.js.map +1 -0
  91. package/dist/application/workspace-registry/use-cases.d.ts +29 -0
  92. package/dist/application/workspace-registry/use-cases.d.ts.map +1 -0
  93. package/dist/application/workspace-registry/use-cases.js +249 -0
  94. package/dist/application/workspace-registry/use-cases.js.map +1 -0
  95. package/dist/domain/context-memory/entities.d.ts +123 -0
  96. package/dist/domain/context-memory/entities.d.ts.map +1 -0
  97. package/dist/domain/context-memory/entities.js +229 -0
  98. package/dist/domain/context-memory/entities.js.map +1 -0
  99. package/dist/domain/context-memory/repositories.d.ts +46 -0
  100. package/dist/domain/context-memory/repositories.d.ts.map +1 -0
  101. package/dist/domain/context-memory/repositories.js +2 -0
  102. package/dist/domain/context-memory/repositories.js.map +1 -0
  103. package/dist/domain/context-memory/services.d.ts +62 -0
  104. package/dist/domain/context-memory/services.d.ts.map +1 -0
  105. package/dist/domain/context-memory/services.js +162 -0
  106. package/dist/domain/context-memory/services.js.map +1 -0
  107. package/dist/domain/context-memory/value-objects.d.ts +65 -0
  108. package/dist/domain/context-memory/value-objects.d.ts.map +1 -0
  109. package/dist/domain/context-memory/value-objects.js +105 -0
  110. package/dist/domain/context-memory/value-objects.js.map +1 -0
  111. package/dist/domain/domain-map/repositories.d.ts +126 -0
  112. package/dist/domain/domain-map/repositories.d.ts.map +1 -0
  113. package/dist/domain/domain-map/repositories.js +2 -0
  114. package/dist/domain/domain-map/repositories.js.map +1 -0
  115. package/dist/domain/domain-map/services.d.ts +108 -0
  116. package/dist/domain/domain-map/services.d.ts.map +1 -0
  117. package/dist/domain/domain-map/services.js +335 -0
  118. package/dist/domain/domain-map/services.js.map +1 -0
  119. package/dist/domain/domain-map/value-objects.d.ts +186 -0
  120. package/dist/domain/domain-map/value-objects.d.ts.map +1 -0
  121. package/dist/domain/domain-map/value-objects.js +215 -0
  122. package/dist/domain/domain-map/value-objects.js.map +1 -0
  123. package/dist/domain/environment/entities.d.ts +93 -0
  124. package/dist/domain/environment/entities.d.ts.map +1 -0
  125. package/dist/domain/environment/entities.js +207 -0
  126. package/dist/domain/environment/entities.js.map +1 -0
  127. package/dist/domain/environment/renderers.d.ts +30 -0
  128. package/dist/domain/environment/renderers.d.ts.map +1 -0
  129. package/dist/domain/environment/renderers.js +139 -0
  130. package/dist/domain/environment/renderers.js.map +1 -0
  131. package/dist/domain/environment/repositories.d.ts +73 -0
  132. package/dist/domain/environment/repositories.d.ts.map +1 -0
  133. package/dist/domain/environment/repositories.js +16 -0
  134. package/dist/domain/environment/repositories.js.map +1 -0
  135. package/dist/domain/environment/services.d.ts +62 -0
  136. package/dist/domain/environment/services.d.ts.map +1 -0
  137. package/dist/domain/environment/services.js +282 -0
  138. package/dist/domain/environment/services.js.map +1 -0
  139. package/dist/domain/environment/value-objects.d.ts +127 -0
  140. package/dist/domain/environment/value-objects.d.ts.map +1 -0
  141. package/dist/domain/environment/value-objects.js +179 -0
  142. package/dist/domain/environment/value-objects.js.map +1 -0
  143. package/dist/domain/governance/policies.d.ts +42 -0
  144. package/dist/domain/governance/policies.d.ts.map +1 -0
  145. package/dist/domain/governance/policies.js +304 -0
  146. package/dist/domain/governance/policies.js.map +1 -0
  147. package/dist/domain/governance/services.d.ts +38 -0
  148. package/dist/domain/governance/services.d.ts.map +1 -0
  149. package/dist/domain/governance/services.js +42 -0
  150. package/dist/domain/governance/services.js.map +1 -0
  151. package/dist/domain/kanban/entities.d.ts +105 -0
  152. package/dist/domain/kanban/entities.d.ts.map +1 -0
  153. package/dist/domain/kanban/entities.js +211 -0
  154. package/dist/domain/kanban/entities.js.map +1 -0
  155. package/dist/domain/kanban/grooming.d.ts +40 -0
  156. package/dist/domain/kanban/grooming.d.ts.map +1 -0
  157. package/dist/domain/kanban/grooming.js +50 -0
  158. package/dist/domain/kanban/grooming.js.map +1 -0
  159. package/dist/domain/kanban/repositories.d.ts +41 -0
  160. package/dist/domain/kanban/repositories.d.ts.map +1 -0
  161. package/dist/domain/kanban/repositories.js +2 -0
  162. package/dist/domain/kanban/repositories.js.map +1 -0
  163. package/dist/domain/kanban/services.d.ts +49 -0
  164. package/dist/domain/kanban/services.d.ts.map +1 -0
  165. package/dist/domain/kanban/services.js +154 -0
  166. package/dist/domain/kanban/services.js.map +1 -0
  167. package/dist/domain/kanban/sprint.d.ts +103 -0
  168. package/dist/domain/kanban/sprint.d.ts.map +1 -0
  169. package/dist/domain/kanban/sprint.js +192 -0
  170. package/dist/domain/kanban/sprint.js.map +1 -0
  171. package/dist/domain/kanban/value-objects.d.ts +91 -0
  172. package/dist/domain/kanban/value-objects.d.ts.map +1 -0
  173. package/dist/domain/kanban/value-objects.js +167 -0
  174. package/dist/domain/kanban/value-objects.js.map +1 -0
  175. package/dist/domain/rag/repositories.d.ts +152 -0
  176. package/dist/domain/rag/repositories.d.ts.map +1 -0
  177. package/dist/domain/rag/repositories.js +2 -0
  178. package/dist/domain/rag/repositories.js.map +1 -0
  179. package/dist/domain/rag/services.d.ts +57 -0
  180. package/dist/domain/rag/services.d.ts.map +1 -0
  181. package/dist/domain/rag/services.js +224 -0
  182. package/dist/domain/rag/services.js.map +1 -0
  183. package/dist/domain/rag/value-objects.d.ts +118 -0
  184. package/dist/domain/rag/value-objects.d.ts.map +1 -0
  185. package/dist/domain/rag/value-objects.js +114 -0
  186. package/dist/domain/rag/value-objects.js.map +1 -0
  187. package/dist/domain/shared/value-objects.d.ts +56 -0
  188. package/dist/domain/shared/value-objects.d.ts.map +1 -0
  189. package/dist/domain/shared/value-objects.js +89 -0
  190. package/dist/domain/shared/value-objects.js.map +1 -0
  191. package/dist/domain/token-metrics/entities.d.ts +90 -0
  192. package/dist/domain/token-metrics/entities.d.ts.map +1 -0
  193. package/dist/domain/token-metrics/entities.js +115 -0
  194. package/dist/domain/token-metrics/entities.js.map +1 -0
  195. package/dist/domain/token-metrics/repositories.d.ts +93 -0
  196. package/dist/domain/token-metrics/repositories.d.ts.map +1 -0
  197. package/dist/domain/token-metrics/repositories.js +2 -0
  198. package/dist/domain/token-metrics/repositories.js.map +1 -0
  199. package/dist/domain/token-metrics/value-objects.d.ts +81 -0
  200. package/dist/domain/token-metrics/value-objects.d.ts.map +1 -0
  201. package/dist/domain/token-metrics/value-objects.js +144 -0
  202. package/dist/domain/token-metrics/value-objects.js.map +1 -0
  203. package/dist/domain/vault/canvas.d.ts +70 -0
  204. package/dist/domain/vault/canvas.d.ts.map +1 -0
  205. package/dist/domain/vault/canvas.js +70 -0
  206. package/dist/domain/vault/canvas.js.map +1 -0
  207. package/dist/domain/vault/document.d.ts +71 -0
  208. package/dist/domain/vault/document.d.ts.map +1 -0
  209. package/dist/domain/vault/document.js +244 -0
  210. package/dist/domain/vault/document.js.map +1 -0
  211. package/dist/domain/vault/repositories.d.ts +35 -0
  212. package/dist/domain/vault/repositories.d.ts.map +1 -0
  213. package/dist/domain/vault/repositories.js +2 -0
  214. package/dist/domain/vault/repositories.js.map +1 -0
  215. package/dist/domain/vault/section.d.ts +33 -0
  216. package/dist/domain/vault/section.d.ts.map +1 -0
  217. package/dist/domain/vault/section.js +39 -0
  218. package/dist/domain/vault/section.js.map +1 -0
  219. package/dist/domain/vault/services.d.ts +48 -0
  220. package/dist/domain/vault/services.d.ts.map +1 -0
  221. package/dist/domain/vault/services.js +249 -0
  222. package/dist/domain/vault/services.js.map +1 -0
  223. package/dist/domain/vault/table.d.ts +58 -0
  224. package/dist/domain/vault/table.d.ts.map +1 -0
  225. package/dist/domain/vault/table.js +204 -0
  226. package/dist/domain/vault/table.js.map +1 -0
  227. package/dist/domain/vault/timeline.d.ts +53 -0
  228. package/dist/domain/vault/timeline.d.ts.map +1 -0
  229. package/dist/domain/vault/timeline.js +214 -0
  230. package/dist/domain/vault/timeline.js.map +1 -0
  231. package/dist/domain/vault/value-objects.d.ts +45 -0
  232. package/dist/domain/vault/value-objects.d.ts.map +1 -0
  233. package/dist/domain/vault/value-objects.js +89 -0
  234. package/dist/domain/vault/value-objects.js.map +1 -0
  235. package/dist/domain/workspace-registry/entities.d.ts +57 -0
  236. package/dist/domain/workspace-registry/entities.d.ts.map +1 -0
  237. package/dist/domain/workspace-registry/entities.js +148 -0
  238. package/dist/domain/workspace-registry/entities.js.map +1 -0
  239. package/dist/domain/workspace-registry/repositories.d.ts +57 -0
  240. package/dist/domain/workspace-registry/repositories.d.ts.map +1 -0
  241. package/dist/domain/workspace-registry/repositories.js +12 -0
  242. package/dist/domain/workspace-registry/repositories.js.map +1 -0
  243. package/dist/domain/workspace-registry/services.d.ts +56 -0
  244. package/dist/domain/workspace-registry/services.d.ts.map +1 -0
  245. package/dist/domain/workspace-registry/services.js +283 -0
  246. package/dist/domain/workspace-registry/services.js.map +1 -0
  247. package/dist/domain/workspace-registry/value-objects.d.ts +113 -0
  248. package/dist/domain/workspace-registry/value-objects.d.ts.map +1 -0
  249. package/dist/domain/workspace-registry/value-objects.js +235 -0
  250. package/dist/domain/workspace-registry/value-objects.js.map +1 -0
  251. package/dist/hooks/context-compacting.d.ts +35 -0
  252. package/dist/hooks/context-compacting.d.ts.map +1 -0
  253. package/dist/hooks/context-compacting.js +48 -0
  254. package/dist/hooks/context-compacting.js.map +1 -0
  255. package/dist/hooks/event-handlers.d.ts +39 -0
  256. package/dist/hooks/event-handlers.d.ts.map +1 -0
  257. package/dist/hooks/event-handlers.js +75 -0
  258. package/dist/hooks/event-handlers.js.map +1 -0
  259. package/dist/hooks/guardrails.d.ts +33 -0
  260. package/dist/hooks/guardrails.d.ts.map +1 -0
  261. package/dist/hooks/guardrails.js +22 -0
  262. package/dist/hooks/guardrails.js.map +1 -0
  263. package/dist/hooks/shell-env.d.ts +28 -0
  264. package/dist/hooks/shell-env.d.ts.map +1 -0
  265. package/dist/hooks/shell-env.js +17 -0
  266. package/dist/hooks/shell-env.js.map +1 -0
  267. package/dist/index.d.ts +16 -0
  268. package/dist/index.d.ts.map +1 -0
  269. package/dist/index.js +349 -0
  270. package/dist/index.js.map +1 -0
  271. package/dist/infrastructure/context-memory/note-repository.d.ts +26 -0
  272. package/dist/infrastructure/context-memory/note-repository.d.ts.map +1 -0
  273. package/dist/infrastructure/context-memory/note-repository.js +87 -0
  274. package/dist/infrastructure/context-memory/note-repository.js.map +1 -0
  275. package/dist/infrastructure/context-memory/search-repository.d.ts +20 -0
  276. package/dist/infrastructure/context-memory/search-repository.d.ts.map +1 -0
  277. package/dist/infrastructure/context-memory/search-repository.js +44 -0
  278. package/dist/infrastructure/context-memory/search-repository.js.map +1 -0
  279. package/dist/infrastructure/context-memory/session-repository.d.ts +26 -0
  280. package/dist/infrastructure/context-memory/session-repository.d.ts.map +1 -0
  281. package/dist/infrastructure/context-memory/session-repository.js +79 -0
  282. package/dist/infrastructure/context-memory/session-repository.js.map +1 -0
  283. package/dist/infrastructure/context-memory/todo-repository.d.ts +26 -0
  284. package/dist/infrastructure/context-memory/todo-repository.d.ts.map +1 -0
  285. package/dist/infrastructure/context-memory/todo-repository.js +105 -0
  286. package/dist/infrastructure/context-memory/todo-repository.js.map +1 -0
  287. package/dist/infrastructure/database/sqlite-adapter.d.ts +60 -0
  288. package/dist/infrastructure/database/sqlite-adapter.d.ts.map +1 -0
  289. package/dist/infrastructure/database/sqlite-adapter.js +93 -0
  290. package/dist/infrastructure/database/sqlite-adapter.js.map +1 -0
  291. package/dist/infrastructure/domain-map/llm-analyzer.d.ts +60 -0
  292. package/dist/infrastructure/domain-map/llm-analyzer.d.ts.map +1 -0
  293. package/dist/infrastructure/domain-map/llm-analyzer.js +249 -0
  294. package/dist/infrastructure/domain-map/llm-analyzer.js.map +1 -0
  295. package/dist/infrastructure/domain-map/lsp-adapter.d.ts +61 -0
  296. package/dist/infrastructure/domain-map/lsp-adapter.d.ts.map +1 -0
  297. package/dist/infrastructure/domain-map/lsp-adapter.js +210 -0
  298. package/dist/infrastructure/domain-map/lsp-adapter.js.map +1 -0
  299. package/dist/infrastructure/domain-map/lsp-configs.d.ts +53 -0
  300. package/dist/infrastructure/domain-map/lsp-configs.d.ts.map +1 -0
  301. package/dist/infrastructure/domain-map/lsp-configs.js +274 -0
  302. package/dist/infrastructure/domain-map/lsp-configs.js.map +1 -0
  303. package/dist/infrastructure/domain-map/lsp-json-rpc.d.ts +132 -0
  304. package/dist/infrastructure/domain-map/lsp-json-rpc.d.ts.map +1 -0
  305. package/dist/infrastructure/domain-map/lsp-json-rpc.js +320 -0
  306. package/dist/infrastructure/domain-map/lsp-json-rpc.js.map +1 -0
  307. package/dist/infrastructure/domain-map/project-scanner.d.ts +43 -0
  308. package/dist/infrastructure/domain-map/project-scanner.d.ts.map +1 -0
  309. package/dist/infrastructure/domain-map/project-scanner.js +193 -0
  310. package/dist/infrastructure/domain-map/project-scanner.js.map +1 -0
  311. package/dist/infrastructure/environment/environment-repository.d.ts +33 -0
  312. package/dist/infrastructure/environment/environment-repository.d.ts.map +1 -0
  313. package/dist/infrastructure/environment/environment-repository.js +161 -0
  314. package/dist/infrastructure/environment/environment-repository.js.map +1 -0
  315. package/dist/infrastructure/environment/scanner-adapter.d.ts +23 -0
  316. package/dist/infrastructure/environment/scanner-adapter.d.ts.map +1 -0
  317. package/dist/infrastructure/environment/scanner-adapter.js +102 -0
  318. package/dist/infrastructure/environment/scanner-adapter.js.map +1 -0
  319. package/dist/infrastructure/kanban/card-repository.d.ts +41 -0
  320. package/dist/infrastructure/kanban/card-repository.d.ts.map +1 -0
  321. package/dist/infrastructure/kanban/card-repository.js +185 -0
  322. package/dist/infrastructure/kanban/card-repository.js.map +1 -0
  323. package/dist/infrastructure/kanban/sprint-repository.d.ts +40 -0
  324. package/dist/infrastructure/kanban/sprint-repository.d.ts.map +1 -0
  325. package/dist/infrastructure/kanban/sprint-repository.js +186 -0
  326. package/dist/infrastructure/kanban/sprint-repository.js.map +1 -0
  327. package/dist/infrastructure/rag/file-discovery.d.ts +19 -0
  328. package/dist/infrastructure/rag/file-discovery.d.ts.map +1 -0
  329. package/dist/infrastructure/rag/file-discovery.js +201 -0
  330. package/dist/infrastructure/rag/file-discovery.js.map +1 -0
  331. package/dist/infrastructure/rag/ollama-embeddings.d.ts +18 -0
  332. package/dist/infrastructure/rag/ollama-embeddings.d.ts.map +1 -0
  333. package/dist/infrastructure/rag/ollama-embeddings.js +54 -0
  334. package/dist/infrastructure/rag/ollama-embeddings.js.map +1 -0
  335. package/dist/infrastructure/rag/text-splitter.d.ts +19 -0
  336. package/dist/infrastructure/rag/text-splitter.d.ts.map +1 -0
  337. package/dist/infrastructure/rag/text-splitter.js +38 -0
  338. package/dist/infrastructure/rag/text-splitter.js.map +1 -0
  339. package/dist/infrastructure/rag/vectra-adapter.d.ts +38 -0
  340. package/dist/infrastructure/rag/vectra-adapter.d.ts.map +1 -0
  341. package/dist/infrastructure/rag/vectra-adapter.js +275 -0
  342. package/dist/infrastructure/rag/vectra-adapter.js.map +1 -0
  343. package/dist/infrastructure/token-metrics/token-metrics-repository.d.ts +29 -0
  344. package/dist/infrastructure/token-metrics/token-metrics-repository.d.ts.map +1 -0
  345. package/dist/infrastructure/token-metrics/token-metrics-repository.js +254 -0
  346. package/dist/infrastructure/token-metrics/token-metrics-repository.js.map +1 -0
  347. package/dist/infrastructure/vault/markdown-parser.d.ts +35 -0
  348. package/dist/infrastructure/vault/markdown-parser.d.ts.map +1 -0
  349. package/dist/infrastructure/vault/markdown-parser.js +145 -0
  350. package/dist/infrastructure/vault/markdown-parser.js.map +1 -0
  351. package/dist/infrastructure/vault/vault-fs-adapter.d.ts +17 -0
  352. package/dist/infrastructure/vault/vault-fs-adapter.d.ts.map +1 -0
  353. package/dist/infrastructure/vault/vault-fs-adapter.js +105 -0
  354. package/dist/infrastructure/vault/vault-fs-adapter.js.map +1 -0
  355. package/dist/infrastructure/workspace-registry/dependency-repository.d.ts +27 -0
  356. package/dist/infrastructure/workspace-registry/dependency-repository.d.ts.map +1 -0
  357. package/dist/infrastructure/workspace-registry/dependency-repository.js +89 -0
  358. package/dist/infrastructure/workspace-registry/dependency-repository.js.map +1 -0
  359. package/dist/infrastructure/workspace-registry/workspace-repository.d.ts +28 -0
  360. package/dist/infrastructure/workspace-registry/workspace-repository.d.ts.map +1 -0
  361. package/dist/infrastructure/workspace-registry/workspace-repository.js +108 -0
  362. package/dist/infrastructure/workspace-registry/workspace-repository.js.map +1 -0
  363. package/dist/tools/agent-tools.d.ts +14 -0
  364. package/dist/tools/agent-tools.d.ts.map +1 -0
  365. package/dist/tools/agent-tools.js +238 -0
  366. package/dist/tools/agent-tools.js.map +1 -0
  367. package/dist/tools/context-memory-tools.d.ts +16 -0
  368. package/dist/tools/context-memory-tools.d.ts.map +1 -0
  369. package/dist/tools/context-memory-tools.js +242 -0
  370. package/dist/tools/context-memory-tools.js.map +1 -0
  371. package/dist/tools/data-tools.d.ts +3 -0
  372. package/dist/tools/data-tools.d.ts.map +1 -0
  373. package/dist/tools/data-tools.js +383 -0
  374. package/dist/tools/data-tools.js.map +1 -0
  375. package/dist/tools/domain-map-tools.d.ts +41 -0
  376. package/dist/tools/domain-map-tools.d.ts.map +1 -0
  377. package/dist/tools/domain-map-tools.js +134 -0
  378. package/dist/tools/domain-map-tools.js.map +1 -0
  379. package/dist/tools/environment-tools.d.ts +85 -0
  380. package/dist/tools/environment-tools.d.ts.map +1 -0
  381. package/dist/tools/environment-tools.js +223 -0
  382. package/dist/tools/environment-tools.js.map +1 -0
  383. package/dist/tools/governance-tools.d.ts +7 -0
  384. package/dist/tools/governance-tools.d.ts.map +1 -0
  385. package/dist/tools/governance-tools.js +73 -0
  386. package/dist/tools/governance-tools.js.map +1 -0
  387. package/dist/tools/kanban-board-tools.d.ts +11 -0
  388. package/dist/tools/kanban-board-tools.d.ts.map +1 -0
  389. package/dist/tools/kanban-board-tools.js +354 -0
  390. package/dist/tools/kanban-board-tools.js.map +1 -0
  391. package/dist/tools/kanban-card-tools.d.ts +11 -0
  392. package/dist/tools/kanban-card-tools.d.ts.map +1 -0
  393. package/dist/tools/kanban-card-tools.js +407 -0
  394. package/dist/tools/kanban-card-tools.js.map +1 -0
  395. package/dist/tools/rag-tools.d.ts +10 -0
  396. package/dist/tools/rag-tools.d.ts.map +1 -0
  397. package/dist/tools/rag-tools.js +279 -0
  398. package/dist/tools/rag-tools.js.map +1 -0
  399. package/dist/tools/token-metrics-tools.d.ts +98 -0
  400. package/dist/tools/token-metrics-tools.d.ts.map +1 -0
  401. package/dist/tools/token-metrics-tools.js +287 -0
  402. package/dist/tools/token-metrics-tools.js.map +1 -0
  403. package/dist/tools/vault-manage-tool.d.ts +7 -0
  404. package/dist/tools/vault-manage-tool.d.ts.map +1 -0
  405. package/dist/tools/vault-manage-tool.js +193 -0
  406. package/dist/tools/vault-manage-tool.js.map +1 -0
  407. package/dist/tools/vault-tools.d.ts +7 -0
  408. package/dist/tools/vault-tools.d.ts.map +1 -0
  409. package/dist/tools/vault-tools.js +348 -0
  410. package/dist/tools/vault-tools.js.map +1 -0
  411. package/dist/tools/workspace-registry-tools.d.ts +93 -0
  412. package/dist/tools/workspace-registry-tools.d.ts.map +1 -0
  413. package/dist/tools/workspace-registry-tools.js +217 -0
  414. package/dist/tools/workspace-registry-tools.js.map +1 -0
  415. package/package.json +59 -0
@@ -0,0 +1,186 @@
1
+ import { Sprint, Epic } from "../../domain/kanban/sprint.js";
2
+ import { SprintId, SprintStatus, EpicId, EpicStatus, Priority, } from "../../domain/kanban/value-objects.js";
3
+ import { WorkspaceId, Timestamp } from "../../domain/shared/value-objects.js";
4
+ // ── Sprint Repository ─────────────────────────────────────────────────
5
+ const SPRINT_SCHEMA_KEY = "kanban_sprints";
6
+ const SPRINT_DDL = `
7
+ CREATE TABLE IF NOT EXISTS sprints (
8
+ id TEXT PRIMARY KEY,
9
+ workspace TEXT NOT NULL,
10
+ name TEXT NOT NULL,
11
+ status TEXT NOT NULL DEFAULT 'planning',
12
+ goal TEXT,
13
+ start_date TEXT,
14
+ end_date TEXT,
15
+ velocity_planned INTEGER,
16
+ velocity_actual INTEGER,
17
+ created_at TEXT NOT NULL
18
+ );
19
+ CREATE INDEX IF NOT EXISTS idx_sprints_workspace ON sprints(workspace);
20
+ CREATE INDEX IF NOT EXISTS idx_sprints_status ON sprints(status);
21
+ CREATE INDEX IF NOT EXISTS idx_sprints_workspace_status
22
+ ON sprints(workspace, status);
23
+ `;
24
+ export class SqliteSprintRepository {
25
+ db;
26
+ constructor(db) {
27
+ this.db = db;
28
+ this.db.ensureSchema(SPRINT_SCHEMA_KEY, SPRINT_DDL);
29
+ }
30
+ async save(sprint) {
31
+ const sql = `
32
+ INSERT INTO sprints (
33
+ id, workspace, name, status, goal,
34
+ start_date, end_date, velocity_planned, velocity_actual, created_at
35
+ ) VALUES (
36
+ @id, @workspace, @name, @status, @goal,
37
+ @start_date, @end_date, @velocity_planned, @velocity_actual, @created_at
38
+ )
39
+ ON CONFLICT(id) DO UPDATE SET
40
+ status = @status,
41
+ goal = @goal,
42
+ start_date = @start_date,
43
+ end_date = @end_date,
44
+ velocity_planned = @velocity_planned,
45
+ velocity_actual = @velocity_actual
46
+ `;
47
+ this.db.execute(sql, {
48
+ id: sprint.id.value,
49
+ workspace: sprint.workspace.value,
50
+ name: sprint.name,
51
+ status: sprint.status,
52
+ goal: sprint.goal ?? null,
53
+ start_date: sprint.startDate?.toISO() ?? null,
54
+ end_date: sprint.endDate?.toISO() ?? null,
55
+ velocity_planned: sprint.velocityPlanned ?? null,
56
+ velocity_actual: sprint.velocityActual ?? null,
57
+ created_at: sprint.createdAt.toISO(),
58
+ });
59
+ }
60
+ async findById(id) {
61
+ const row = this.db.queryOne("SELECT * FROM sprints WHERE id = @id", { id: id.value });
62
+ return row ? this.toDomain(row) : null;
63
+ }
64
+ async findByWorkspace(workspace) {
65
+ const rows = this.db.queryAll(`SELECT * FROM sprints
66
+ WHERE workspace = @workspace
67
+ ORDER BY created_at DESC`, { workspace: workspace.value });
68
+ return rows.map((row) => this.toDomain(row));
69
+ }
70
+ async findActive(workspace) {
71
+ const row = this.db.queryOne(`SELECT * FROM sprints
72
+ WHERE workspace = @workspace AND status = 'active'
73
+ ORDER BY created_at DESC LIMIT 1`, { workspace: workspace.value });
74
+ return row ? this.toDomain(row) : null;
75
+ }
76
+ async nextSequence(workspace) {
77
+ const row = this.db.queryOne(`SELECT MAX(CAST(SUBSTR(id, 4) AS INTEGER)) as max_seq
78
+ FROM sprints WHERE workspace = @workspace`, { workspace: workspace.value });
79
+ return (row?.max_seq ?? 0) + 1;
80
+ }
81
+ async delete(id) {
82
+ this.db.execute("DELETE FROM sprints WHERE id = @id", { id: id.value });
83
+ }
84
+ toDomain(row) {
85
+ const props = {
86
+ id: SprintId.from(row.id),
87
+ workspace: WorkspaceId.from(row.workspace),
88
+ name: row.name,
89
+ status: row.status,
90
+ ...(row.goal !== null ? { goal: row.goal } : {}),
91
+ ...(row.start_date !== null
92
+ ? { startDate: Timestamp.fromISO(row.start_date) }
93
+ : {}),
94
+ ...(row.end_date !== null
95
+ ? { endDate: Timestamp.fromISO(row.end_date) }
96
+ : {}),
97
+ ...(row.velocity_planned !== null
98
+ ? { velocityPlanned: row.velocity_planned }
99
+ : {}),
100
+ ...(row.velocity_actual !== null
101
+ ? { velocityActual: row.velocity_actual }
102
+ : {}),
103
+ createdAt: Timestamp.fromISO(row.created_at),
104
+ };
105
+ return Sprint.reconstitute(props);
106
+ }
107
+ }
108
+ // ── Epic Repository ───────────────────────────────────────────────────
109
+ const EPIC_SCHEMA_KEY = "kanban_epics";
110
+ const EPIC_DDL = `
111
+ CREATE TABLE IF NOT EXISTS epics (
112
+ id TEXT PRIMARY KEY,
113
+ workspace TEXT NOT NULL,
114
+ title TEXT NOT NULL,
115
+ status TEXT NOT NULL DEFAULT 'backlog',
116
+ priority TEXT NOT NULL DEFAULT 'medium',
117
+ description TEXT,
118
+ owner TEXT,
119
+ created_at TEXT NOT NULL
120
+ );
121
+ CREATE INDEX IF NOT EXISTS idx_epics_workspace ON epics(workspace);
122
+ CREATE INDEX IF NOT EXISTS idx_epics_status ON epics(status);
123
+ `;
124
+ export class SqliteEpicRepository {
125
+ db;
126
+ constructor(db) {
127
+ this.db = db;
128
+ this.db.ensureSchema(EPIC_SCHEMA_KEY, EPIC_DDL);
129
+ }
130
+ async save(epic) {
131
+ const sql = `
132
+ INSERT INTO epics (
133
+ id, workspace, title, status, priority, description, owner, created_at
134
+ ) VALUES (
135
+ @id, @workspace, @title, @status, @priority, @description, @owner, @created_at
136
+ )
137
+ ON CONFLICT(id) DO UPDATE SET
138
+ status = @status,
139
+ priority = @priority,
140
+ description = @description,
141
+ owner = @owner
142
+ `;
143
+ this.db.execute(sql, {
144
+ id: epic.id.value,
145
+ workspace: epic.workspace.value,
146
+ title: epic.title,
147
+ status: epic.status,
148
+ priority: epic.priority,
149
+ description: epic.description ?? null,
150
+ owner: epic.owner ?? null,
151
+ created_at: epic.createdAt.toISO(),
152
+ });
153
+ }
154
+ async findById(id) {
155
+ const row = this.db.queryOne("SELECT * FROM epics WHERE id = @id", { id: id.value });
156
+ return row ? this.toDomain(row) : null;
157
+ }
158
+ async findByWorkspace(workspace) {
159
+ const rows = this.db.queryAll(`SELECT * FROM epics
160
+ WHERE workspace = @workspace
161
+ ORDER BY created_at DESC`, { workspace: workspace.value });
162
+ return rows.map((row) => this.toDomain(row));
163
+ }
164
+ async nextSequence(workspace) {
165
+ const row = this.db.queryOne(`SELECT MAX(CAST(SUBSTR(id, 4) AS INTEGER)) as max_seq
166
+ FROM epics WHERE workspace = @workspace`, { workspace: workspace.value });
167
+ return (row?.max_seq ?? 0) + 1;
168
+ }
169
+ async delete(id) {
170
+ this.db.execute("DELETE FROM epics WHERE id = @id", { id: id.value });
171
+ }
172
+ toDomain(row) {
173
+ const props = {
174
+ id: EpicId.from(row.id),
175
+ workspace: WorkspaceId.from(row.workspace),
176
+ title: row.title,
177
+ status: row.status,
178
+ priority: row.priority,
179
+ ...(row.description !== null ? { description: row.description } : {}),
180
+ ...(row.owner !== null ? { owner: row.owner } : {}),
181
+ createdAt: Timestamp.fromISO(row.created_at),
182
+ };
183
+ return Epic.reconstitute(props);
184
+ }
185
+ }
186
+ //# sourceMappingURL=sprint-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprint-repository.js","sourceRoot":"","sources":["../../../src/infrastructure/kanban/sprint-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { FileDiscoveryPort, ProjectAnalysis } from "../../domain/rag/repositories.js";
2
+ /**
3
+ * Node.js file system implementation of FileDiscoveryPort.
4
+ *
5
+ * Walks directories recursively, applying:
6
+ * 1. SKIP_DIRECTORIES (hardcoded domain list)
7
+ * 2. BINARY_EXTENSIONS (hardcoded domain list)
8
+ * 3. .ragignore patterns (if file exists in root)
9
+ * 4. Size limit filtering (files > 1MB skipped)
10
+ */
11
+ export declare class FileSystemDiscovery implements FileDiscoveryPort {
12
+ private static readonly MAX_FILE_SIZE;
13
+ discover(directory: string): Promise<ProjectAnalysis>;
14
+ readFile(absolutePath: string): Promise<string | null>;
15
+ createRagignore(directory: string, projectType: string): Promise<void>;
16
+ private loadRagignoreRules;
17
+ private walkDirectory;
18
+ }
19
+ //# sourceMappingURL=file-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-discovery.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/rag/file-discovery.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,iBAAiB,EAEjB,eAAe,EAChB,MAAM,kCAAkC,CAAC;AA8D1C;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,YAAW,iBAAiB;IAC3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAa;IAE5C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA6CrD,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQtD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YA6B9D,kBAAkB;YAYlB,aAAa;CAsE5B"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * RAG Infrastructure — File System Discovery
3
+ *
4
+ * Implements FileDiscoveryPort using Node.js fs operations.
5
+ * Discovers indexable files, applies .ragignore patterns,
6
+ * filters binaries and skip directories.
7
+ *
8
+ * SOLID: SRP — file discovery and filtering only
9
+ * SOLID: DIP — implements domain FileDiscoveryPort interface
10
+ * DDD: Infrastructure adapter for file system access
11
+ */
12
+ import { readdir, readFile, stat, writeFile, access } from "node:fs/promises";
13
+ import { join, relative, extname } from "node:path";
14
+ import { BINARY_EXTENSIONS, SKIP_DIRECTORIES, } from "../../domain/rag/value-objects.js";
15
+ import { detectProjectType, UNIVERSAL_RAGIGNORE, PROJECT_RAGIGNORE, } from "../../domain/rag/services.js";
16
+ function parseRagignoreRules(patterns) {
17
+ return patterns
18
+ .filter((p) => p.trim().length > 0 && !p.startsWith("#"))
19
+ .map((pattern) => {
20
+ const trimmed = pattern.trim();
21
+ const isDirectory = trimmed.endsWith("/");
22
+ const isGlob = trimmed.startsWith("*.");
23
+ const extension = isGlob ? trimmed.slice(1) : "";
24
+ return { pattern: trimmed, isDirectory, isGlob, extension };
25
+ });
26
+ }
27
+ function isExcludedByRules(relativePath, fileName, isDir, rules) {
28
+ for (const rule of rules) {
29
+ if (rule.isDirectory) {
30
+ const dirName = rule.pattern.slice(0, -1);
31
+ if (isDir && fileName === dirName)
32
+ return true;
33
+ if (relativePath.includes(`/${dirName}/`) || relativePath.startsWith(`${dirName}/`)) {
34
+ return true;
35
+ }
36
+ }
37
+ else if (rule.isGlob) {
38
+ if (fileName.endsWith(rule.extension))
39
+ return true;
40
+ }
41
+ else {
42
+ if (fileName === rule.pattern)
43
+ return true;
44
+ }
45
+ }
46
+ return false;
47
+ }
48
+ // ── Implementation ────────────────────────────────────────────────────
49
+ /**
50
+ * Node.js file system implementation of FileDiscoveryPort.
51
+ *
52
+ * Walks directories recursively, applying:
53
+ * 1. SKIP_DIRECTORIES (hardcoded domain list)
54
+ * 2. BINARY_EXTENSIONS (hardcoded domain list)
55
+ * 3. .ragignore patterns (if file exists in root)
56
+ * 4. Size limit filtering (files > 1MB skipped)
57
+ */
58
+ export class FileSystemDiscovery {
59
+ static MAX_FILE_SIZE = 1_048_576; // 1 MB
60
+ async discover(directory) {
61
+ const ragignoreRules = await this.loadRagignoreRules(directory);
62
+ const rootFiles = new Set();
63
+ const files = [];
64
+ let excludedCount = 0;
65
+ let totalSizeBytes = 0;
66
+ // Collect root file names for project type detection
67
+ try {
68
+ const rootEntries = await readdir(directory, { withFileTypes: true });
69
+ for (const entry of rootEntries) {
70
+ if (entry.isFile()) {
71
+ rootFiles.add(entry.name);
72
+ }
73
+ }
74
+ }
75
+ catch {
76
+ // Directory unreadable
77
+ }
78
+ const projectType = detectProjectType(rootFiles);
79
+ // Recursive walk
80
+ const walkResult = await this.walkDirectory(directory, directory, ragignoreRules);
81
+ for (const result of walkResult) {
82
+ if (result.excluded) {
83
+ excludedCount++;
84
+ }
85
+ else {
86
+ files.push(result.file);
87
+ totalSizeBytes += result.file.sizeBytes;
88
+ }
89
+ }
90
+ return {
91
+ projectType,
92
+ files,
93
+ excludedCount,
94
+ totalSizeMb: Math.round((totalSizeBytes / 1_048_576) * 100) / 100,
95
+ };
96
+ }
97
+ async readFile(absolutePath) {
98
+ try {
99
+ return await readFile(absolutePath, "utf-8");
100
+ }
101
+ catch {
102
+ return null;
103
+ }
104
+ }
105
+ async createRagignore(directory, projectType) {
106
+ const ragignorePath = join(directory, ".ragignore");
107
+ // Don't overwrite existing .ragignore
108
+ try {
109
+ await access(ragignorePath);
110
+ return; // File already exists
111
+ }
112
+ catch {
113
+ // File doesn't exist, continue
114
+ }
115
+ const lines = [
116
+ "# RAG Indexing Ignore File",
117
+ "# Patterns follow .gitignore-like syntax",
118
+ "",
119
+ "# Universal patterns",
120
+ ...UNIVERSAL_RAGIGNORE,
121
+ ];
122
+ const projectPatterns = PROJECT_RAGIGNORE.get(projectType);
123
+ if (projectPatterns !== undefined) {
124
+ lines.push("", `# ${projectType}-specific patterns`, ...projectPatterns);
125
+ }
126
+ await writeFile(ragignorePath, lines.join("\n") + "\n", "utf-8");
127
+ }
128
+ // ── Private Helpers ───────────────────────────────────────────
129
+ async loadRagignoreRules(directory) {
130
+ const ragignorePath = join(directory, ".ragignore");
131
+ try {
132
+ const content = await readFile(ragignorePath, "utf-8");
133
+ return parseRagignoreRules(content.split("\n"));
134
+ }
135
+ catch {
136
+ return [];
137
+ }
138
+ }
139
+ async walkDirectory(rootDir, currentDir, rules) {
140
+ const results = [];
141
+ let entries;
142
+ try {
143
+ entries = await readdir(currentDir, { withFileTypes: true });
144
+ }
145
+ catch {
146
+ return results;
147
+ }
148
+ for (const entry of entries) {
149
+ const absolutePath = join(currentDir, entry.name);
150
+ const relPath = relative(rootDir, absolutePath);
151
+ if (entry.isDirectory()) {
152
+ // Skip known directories
153
+ if (SKIP_DIRECTORIES.has(entry.name)) {
154
+ continue;
155
+ }
156
+ // Skip ragignore-excluded directories
157
+ if (isExcludedByRules(relPath, entry.name, true, rules)) {
158
+ continue;
159
+ }
160
+ // Recurse
161
+ const subResults = await this.walkDirectory(rootDir, absolutePath, rules);
162
+ results.push(...subResults);
163
+ }
164
+ else if (entry.isFile()) {
165
+ const ext = extname(entry.name).toLowerCase();
166
+ // Skip binary extensions
167
+ if (BINARY_EXTENSIONS.has(ext)) {
168
+ results.push({ excluded: true, file: null });
169
+ continue;
170
+ }
171
+ // Skip ragignore-excluded files
172
+ if (isExcludedByRules(relPath, entry.name, false, rules)) {
173
+ results.push({ excluded: true, file: null });
174
+ continue;
175
+ }
176
+ // Get file stats for size check
177
+ try {
178
+ const fileStat = await stat(absolutePath);
179
+ if (fileStat.size > FileSystemDiscovery.MAX_FILE_SIZE) {
180
+ results.push({ excluded: true, file: null });
181
+ continue;
182
+ }
183
+ results.push({
184
+ excluded: false,
185
+ file: {
186
+ absolutePath,
187
+ relativePath: relPath,
188
+ extension: ext,
189
+ sizeBytes: fileStat.size,
190
+ },
191
+ });
192
+ }
193
+ catch {
194
+ results.push({ excluded: true, file: null });
195
+ }
196
+ }
197
+ }
198
+ return results;
199
+ }
200
+ }
201
+ //# sourceMappingURL=file-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-discovery.js","sourceRoot":"","sources":["../../../src/infrastructure/rag/file-discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { EmbeddingProvider } from "../../domain/rag/repositories.js";
2
+ /**
3
+ * Ollama-backed implementation of the EmbeddingProvider port.
4
+ *
5
+ * Uses the `embed` endpoint (not the deprecated `embeddings`).
6
+ * The `embed` endpoint supports batch input: `input: string | string[]`.
7
+ *
8
+ * Default model: `embeddinggemma` (768 dimensions).
9
+ */
10
+ export declare class OllamaEmbeddingProvider implements EmbeddingProvider {
11
+ private readonly model;
12
+ private readonly client;
13
+ readonly dimensions: number;
14
+ constructor(ollamaUrl: string, model: string, dimensions: number);
15
+ embed(text: string): Promise<readonly number[]>;
16
+ embedBatch(texts: readonly string[]): Promise<readonly (readonly number[])[]>;
17
+ }
18
+ //# sourceMappingURL=ollama-embeddings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama-embeddings.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/rag/ollama-embeddings.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1E;;;;;;;GAOG;AACH,qBAAa,uBAAwB,YAAW,iBAAiB;IAO7D,OAAO,CAAC,QAAQ,CAAC,KAAK;IANxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAG1B,SAAS,EAAE,MAAM,EACA,KAAK,EAAE,MAAM,EAC9B,UAAU,EAAE,MAAM;IAMd,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC;IAgB/C,UAAU,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;CAiBpF"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * RAG Infrastructure — Ollama Embedding Provider
3
+ *
4
+ * Implements EmbeddingProvider using the official Ollama JS client.
5
+ * Wraps ollama.embed() for single and batch embedding generation.
6
+ *
7
+ * SOLID: SRP — embedding generation only
8
+ * SOLID: DIP — implements domain EmbeddingProvider interface
9
+ * DDD: Infrastructure adapter for external service (Ollama)
10
+ */
11
+ import { Ollama } from "ollama";
12
+ /**
13
+ * Ollama-backed implementation of the EmbeddingProvider port.
14
+ *
15
+ * Uses the `embed` endpoint (not the deprecated `embeddings`).
16
+ * The `embed` endpoint supports batch input: `input: string | string[]`.
17
+ *
18
+ * Default model: `embeddinggemma` (768 dimensions).
19
+ */
20
+ export class OllamaEmbeddingProvider {
21
+ model;
22
+ client;
23
+ dimensions;
24
+ constructor(ollamaUrl, model, dimensions) {
25
+ this.model = model;
26
+ this.client = new Ollama({ host: ollamaUrl });
27
+ this.dimensions = dimensions;
28
+ }
29
+ async embed(text) {
30
+ const response = await this.client.embed({
31
+ model: this.model,
32
+ input: text,
33
+ });
34
+ const vector = response.embeddings[0];
35
+ if (vector === undefined) {
36
+ throw new Error(`OllamaEmbeddingProvider: embed returned no vectors for model "${this.model}"`);
37
+ }
38
+ return vector;
39
+ }
40
+ async embedBatch(texts) {
41
+ if (texts.length === 0)
42
+ return [];
43
+ const response = await this.client.embed({
44
+ model: this.model,
45
+ input: [...texts],
46
+ });
47
+ if (response.embeddings.length !== texts.length) {
48
+ throw new Error(`OllamaEmbeddingProvider: expected ${texts.length} embeddings, ` +
49
+ `got ${response.embeddings.length}`);
50
+ }
51
+ return response.embeddings;
52
+ }
53
+ }
54
+ //# sourceMappingURL=ollama-embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama-embeddings.js","sourceRoot":"","sources":["../../../src/infrastructure/rag/ollama-embeddings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC;;;;;;;GAOG;AACH,MAAM,OAAO,uBAAuB;IAOf;IANF,MAAM,CAAS;IAEvB,UAAU,CAAS;IAE5B,YACE,SAAiB,EACA,KAAa,EAC9B,UAAkB;QADD,UAAK,GAAL,KAAK,CAAQ;QAG9B,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACvC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,iEAAiE,IAAI,CAAC,KAAK,GAAG,CAC/E,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAwB;QACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACvC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC;SAClB,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,qCAAqC,KAAK,CAAC,MAAM,eAAe;gBAChE,OAAO,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,CACpC,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC,UAAU,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import type { TextSplitterPort, TextChunk } from "../../domain/rag/repositories.js";
2
+ import type { ChunkConfig, SupportedLanguage } from "../../domain/rag/value-objects.js";
3
+ /**
4
+ * @langchain/textsplitters-backed implementation of the TextSplitterPort.
5
+ *
6
+ * Uses RecursiveCharacterTextSplitter.fromLanguage() for code-aware
7
+ * splitting, and delegates markdown header splitting to the domain
8
+ * service splitMarkdownByHeaders().
9
+ */
10
+ export declare class LangchainTextSplitter implements TextSplitterPort {
11
+ split(text: string, language: SupportedLanguage | undefined, config: ChunkConfig): Promise<readonly TextChunk[]>;
12
+ splitByHeaders(text: string): readonly {
13
+ readonly content: string;
14
+ readonly header1: string;
15
+ readonly header2: string;
16
+ readonly header3: string;
17
+ }[];
18
+ }
19
+ //# sourceMappingURL=text-splitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-splitter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/rag/text-splitter.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAGxF;;;;;;GAMG;AACH,qBAAa,qBAAsB,YAAW,gBAAgB;IACtD,KAAK,CACT,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,iBAAiB,GAAG,SAAS,EACvC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC;IAmBhC,cAAc,CACZ,IAAI,EAAE,MAAM,GACX,SAAS;QACV,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,EAAE;CAGJ"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * RAG Infrastructure — LangChain Text Splitter Adapter
3
+ *
4
+ * Implements TextSplitterPort using @langchain/textsplitters.
5
+ * Provides language-aware code splitting and markdown header splitting.
6
+ *
7
+ * SOLID: SRP — text splitting only
8
+ * SOLID: DIP — implements domain TextSplitterPort interface
9
+ * DDD: Infrastructure adapter for text processing library
10
+ */
11
+ import { RecursiveCharacterTextSplitter } from "@langchain/textsplitters";
12
+ import { splitMarkdownByHeaders } from "../../domain/rag/services.js";
13
+ /**
14
+ * @langchain/textsplitters-backed implementation of the TextSplitterPort.
15
+ *
16
+ * Uses RecursiveCharacterTextSplitter.fromLanguage() for code-aware
17
+ * splitting, and delegates markdown header splitting to the domain
18
+ * service splitMarkdownByHeaders().
19
+ */
20
+ export class LangchainTextSplitter {
21
+ async split(text, language, config) {
22
+ const splitter = language !== undefined
23
+ ? RecursiveCharacterTextSplitter.fromLanguage(language, { chunkSize: config.chunkSize, chunkOverlap: config.chunkOverlap })
24
+ : new RecursiveCharacterTextSplitter({
25
+ chunkSize: config.chunkSize,
26
+ chunkOverlap: config.chunkOverlap,
27
+ });
28
+ const rawChunks = await splitter.splitText(text);
29
+ return rawChunks.map((content, index) => ({
30
+ content,
31
+ index,
32
+ }));
33
+ }
34
+ splitByHeaders(text) {
35
+ return splitMarkdownByHeaders(text);
36
+ }
37
+ }
38
+ //# sourceMappingURL=text-splitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-splitter.js","sourceRoot":"","sources":["../../../src/infrastructure/rag/text-splitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAI1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE;;;;;;GAMG;AACH,MAAM,OAAO,qBAAqB;IAChC,KAAK,CAAC,KAAK,CACT,IAAY,EACZ,QAAuC,EACvC,MAAmB;QAEnB,MAAM,QAAQ,GAAG,QAAQ,KAAK,SAAS;YACrC,CAAC,CAAC,8BAA8B,CAAC,YAAY,CACzC,QAAyC,EACzC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CACnE;YACH,CAAC,CAAC,IAAI,8BAA8B,CAAC;gBACjC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,YAAY,EAAE,MAAM,CAAC,YAAY;aAClC,CAAC,CAAC;QAEP,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEjD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACxC,OAAO;YACP,KAAK;SACN,CAAC,CAAC,CAAC;IACN,CAAC;IAED,cAAc,CACZ,IAAY;QAOZ,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACF"}
@@ -0,0 +1,38 @@
1
+ import type { VectorRepository, SearchOptions, OracleSearchOptions } from "../../domain/rag/repositories.js";
2
+ import type { ChunkMetadata, OracleChunkMetadata, SearchResult, OracleSearchResult, IndexStats } from "../../domain/rag/value-objects.js";
3
+ /**
4
+ * Vectra-backed implementation of the VectorRepository port.
5
+ *
6
+ * Index layout on disk:
7
+ * {persistRoot}/{workspace}/ → workspace index
8
+ * {persistRoot}/ORACLE/ → shared Oracle index
9
+ */
10
+ export declare class VectraVectorRepository implements VectorRepository {
11
+ private readonly persistRoot;
12
+ private readonly embeddingModel;
13
+ private readonly indexes;
14
+ private oracleIndex;
15
+ constructor(persistRoot: string, embeddingModel: string);
16
+ private getIndex;
17
+ private getOracleIndex;
18
+ private buildWorkspaceFilter;
19
+ ensureIndex(workspace: string): Promise<void>;
20
+ addChunks(workspace: string, chunks: readonly {
21
+ readonly vector: readonly number[];
22
+ readonly metadata: ChunkMetadata;
23
+ }[]): Promise<void>;
24
+ deleteBySource(workspace: string, source: string): Promise<number>;
25
+ search(vector: readonly number[], options: SearchOptions): Promise<readonly SearchResult[]>;
26
+ getStats(workspace: string): Promise<IndexStats>;
27
+ clearIndex(workspace: string): Promise<void>;
28
+ ensureOracleIndex(): Promise<void>;
29
+ addOracleChunks(chunks: readonly {
30
+ readonly vector: readonly number[];
31
+ readonly metadata: OracleChunkMetadata;
32
+ }[]): Promise<void>;
33
+ searchOracle(vector: readonly number[], options: OracleSearchOptions): Promise<readonly OracleSearchResult[]>;
34
+ getOracleStats(): Promise<IndexStats>;
35
+ clearOracleIndex(): Promise<void>;
36
+ oracleIndexExists(): Promise<boolean>;
37
+ }
38
+ //# sourceMappingURL=vectra-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectra-adapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/rag/vectra-adapter.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACX,MAAM,mCAAmC,CAAC;AAyC3C;;;;;;GAMG;AACH,qBAAa,sBAAuB,YAAW,gBAAgB;IAK3D,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc;IALjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsD;IAC9E,OAAO,CAAC,WAAW,CAA+C;gBAG/C,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM;IAKzC,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,oBAAoB;IAoBtB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7C,SAAS,CACb,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,SAAS;QACf,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;QACnC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;KAClC,EAAE,GACF,OAAO,CAAC,IAAI,CAAC;IA6BV,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBlE,MAAM,CACV,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;IA2B7B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAqBhD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5C,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWlC,eAAe,CACnB,MAAM,EAAE,SAAS;QACf,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;QACnC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;KACxC,EAAE,GACF,OAAO,CAAC,IAAI,CAAC;IA4BV,YAAY,CAChB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC;IA4BnC,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC;IAqBrC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;CAQ5C"}