@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,118 @@
1
+ /**
2
+ * RAG Domain — Value Objects
3
+ *
4
+ * Immutable value objects for the RAG bounded context.
5
+ * Zero external dependencies (pure domain).
6
+ *
7
+ * SOLID: SRP — value object definitions only
8
+ * DDD: Value Objects compared by value, no identity
9
+ */
10
+ /**
11
+ * Languages supported by the code-aware text splitter.
12
+ * Maps to @langchain/textsplitters language keys in infrastructure.
13
+ */
14
+ export type SupportedLanguage = "python" | "js" | "go" | "java" | "rust" | "swift" | "markdown" | "cpp" | "ruby" | "scala" | "php" | "html";
15
+ /** Extension → language mapping for code-aware splitting. */
16
+ export declare const EXTENSION_LANGUAGE_MAP: ReadonlyMap<string, SupportedLanguage>;
17
+ /** Configuration for text splitting per language. */
18
+ export interface ChunkConfig {
19
+ readonly chunkSize: number;
20
+ readonly chunkOverlap: number;
21
+ }
22
+ /** Default chunk configurations matching Python RAG behavior. */
23
+ export declare const DEFAULT_CHUNK_CONFIGS: ReadonlyMap<SupportedLanguage | "default", ChunkConfig>;
24
+ /**
25
+ * Metadata attached to each document chunk in the vector store.
26
+ * Stored alongside the embedding vector for filtering and retrieval.
27
+ */
28
+ export interface ChunkMetadata {
29
+ /** Absolute path of the source file. */
30
+ readonly source: string;
31
+ /** Workspace name (lowercased). */
32
+ readonly workspace: string;
33
+ /** DDD domain inferred from file path. */
34
+ readonly domain: string;
35
+ /** File extension without dot. */
36
+ readonly fileType: string;
37
+ /** 0-based index of this chunk within the file. */
38
+ readonly chunkIndex: number;
39
+ /** Total number of chunks produced from this file. */
40
+ readonly totalChunks: number;
41
+ /** The raw text content of this chunk. */
42
+ readonly content: string;
43
+ }
44
+ /**
45
+ * Oracle-specific metadata for governance documentation chunks.
46
+ */
47
+ export interface OracleChunkMetadata {
48
+ /** Absolute path of the source markdown file. */
49
+ readonly source: string;
50
+ /** Oracle domain: governance, workflows, patterns, quick_reference. */
51
+ readonly oracleDomain: string;
52
+ /** H1 heading context (if available). */
53
+ readonly header1: string;
54
+ /** H2 heading context (if available). */
55
+ readonly header2: string;
56
+ /** H3 heading context (if available). */
57
+ readonly header3: string;
58
+ /** The raw text content of this chunk. */
59
+ readonly content: string;
60
+ }
61
+ /**
62
+ * A single search result from the vector store.
63
+ * Score is cosine similarity (0-1, higher = more similar).
64
+ */
65
+ export interface SearchResult {
66
+ readonly score: number;
67
+ readonly source: string;
68
+ readonly domain: string;
69
+ readonly fileType: string;
70
+ readonly content: string;
71
+ }
72
+ /** Oracle search result with heading context. */
73
+ export interface OracleSearchResult {
74
+ readonly score: number;
75
+ readonly source: string;
76
+ readonly oracleDomain: string;
77
+ readonly header1: string;
78
+ readonly header2: string;
79
+ readonly header3: string;
80
+ readonly content: string;
81
+ }
82
+ /** Statistics for a RAG index. */
83
+ export interface IndexStats {
84
+ readonly workspace: string;
85
+ readonly documentCount: number;
86
+ readonly embeddingModel: string;
87
+ readonly storeType: string;
88
+ }
89
+ /**
90
+ * Configuration for the RAG system.
91
+ * Passed at initialization, overridable per operation.
92
+ */
93
+ export interface RagConfig {
94
+ /** Ollama server URL (default: http://localhost:11434). */
95
+ readonly ollamaUrl: string;
96
+ /** Embedding model name (default: embeddinggemma). */
97
+ readonly embeddingModel: string;
98
+ /** Root directory for vector store persistence. */
99
+ readonly persistRoot: string;
100
+ }
101
+ /** Default RAG configuration matching current Python behavior. */
102
+ export declare const DEFAULT_RAG_CONFIG: RagConfig;
103
+ /** File extensions that should always be skipped during indexing. */
104
+ export declare const BINARY_EXTENSIONS: ReadonlySet<string>;
105
+ /** Directories that should always be skipped during indexing. */
106
+ export declare const SKIP_DIRECTORIES: ReadonlySet<string>;
107
+ /**
108
+ * Infer DDD domain from a file path.
109
+ * Looks for known directory segments in the path.
110
+ * e.g., "src/domain/kanban/entities.ts" → "kanban"
111
+ */
112
+ export declare function inferDomain(filePath: string): string;
113
+ /**
114
+ * Infer Oracle domain from a file path.
115
+ * Looks for governance, workflows, patterns, quick_reference in the path.
116
+ */
117
+ export declare function inferOracleDomain(filePath: string): string;
118
+ //# sourceMappingURL=value-objects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-objects.d.ts","sourceRoot":"","sources":["../../../src/domain/rag/value-objects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * RAG Domain — Value Objects
3
+ *
4
+ * Immutable value objects for the RAG bounded context.
5
+ * Zero external dependencies (pure domain).
6
+ *
7
+ * SOLID: SRP — value object definitions only
8
+ * DDD: Value Objects compared by value, no identity
9
+ */
10
+ /** Extension → language mapping for code-aware splitting. */
11
+ export const EXTENSION_LANGUAGE_MAP = new Map([
12
+ [".py", "python"],
13
+ [".ts", "js"],
14
+ [".tsx", "js"],
15
+ [".js", "js"],
16
+ [".jsx", "js"],
17
+ [".mjs", "js"],
18
+ [".cjs", "js"],
19
+ [".go", "go"],
20
+ [".java", "java"],
21
+ [".rs", "rust"],
22
+ [".swift", "swift"],
23
+ [".md", "markdown"],
24
+ [".mdx", "markdown"],
25
+ [".cpp", "cpp"],
26
+ [".cc", "cpp"],
27
+ [".c", "cpp"],
28
+ [".h", "cpp"],
29
+ [".hpp", "cpp"],
30
+ [".rb", "ruby"],
31
+ [".scala", "scala"],
32
+ [".php", "php"],
33
+ [".html", "html"],
34
+ [".htm", "html"],
35
+ ]);
36
+ /** Default chunk configurations matching Python RAG behavior. */
37
+ export const DEFAULT_CHUNK_CONFIGS = new Map([
38
+ ["python", { chunkSize: 900, chunkOverlap: 120 }],
39
+ ["js", { chunkSize: 900, chunkOverlap: 120 }],
40
+ ["go", { chunkSize: 900, chunkOverlap: 120 }],
41
+ ["java", { chunkSize: 950, chunkOverlap: 130 }],
42
+ ["rust", { chunkSize: 850, chunkOverlap: 110 }],
43
+ ["swift", { chunkSize: 850, chunkOverlap: 110 }],
44
+ ["markdown", { chunkSize: 300, chunkOverlap: 40 }],
45
+ ["cpp", { chunkSize: 900, chunkOverlap: 120 }],
46
+ ["ruby", { chunkSize: 900, chunkOverlap: 120 }],
47
+ ["scala", { chunkSize: 900, chunkOverlap: 120 }],
48
+ ["php", { chunkSize: 900, chunkOverlap: 120 }],
49
+ ["html", { chunkSize: 800, chunkOverlap: 100 }],
50
+ ["default", { chunkSize: 500, chunkOverlap: 50 }],
51
+ ]);
52
+ /** Default RAG configuration matching current Python behavior. */
53
+ export const DEFAULT_RAG_CONFIG = {
54
+ ollamaUrl: "http://localhost:11434",
55
+ embeddingModel: "embeddinggemma",
56
+ persistRoot: ".jarvis/rag",
57
+ };
58
+ // ── File Filtering ────────────────────────────────────────────────────
59
+ /** File extensions that should always be skipped during indexing. */
60
+ export const BINARY_EXTENSIONS = new Set([
61
+ ".pyc", ".pyo", ".class", ".o", ".so", ".dylib", ".exe", ".bin",
62
+ ".png", ".jpg", ".jpeg", ".gif", ".ico", ".svg", ".webp", ".bmp",
63
+ ".woff", ".woff2", ".ttf", ".eot",
64
+ ".lock", ".map",
65
+ ".zip", ".tar", ".gz", ".rar", ".7z",
66
+ ".mp4", ".avi", ".mov", ".mp3", ".wav",
67
+ ".pdf", ".doc", ".docx", ".xls", ".xlsx",
68
+ ".mlmodel", ".mlpackage", ".pb", ".h5",
69
+ ".db", ".sqlite",
70
+ ]);
71
+ /** Directories that should always be skipped during indexing. */
72
+ export const SKIP_DIRECTORIES = new Set([
73
+ "node_modules", "__pycache__", ".git", "dist", "build", ".next",
74
+ "venv", ".venv", "target", ".tox", "coverage", ".nyc_output",
75
+ ".jarvis", ".obsidian",
76
+ ]);
77
+ // ── Domain Inference ──────────────────────────────────────────────────
78
+ /** Known DDD domain segments for metadata tagging. */
79
+ const DOMAIN_SEGMENTS = [
80
+ "domain", "application", "infrastructure", "tools", "hooks",
81
+ ];
82
+ /**
83
+ * Infer DDD domain from a file path.
84
+ * Looks for known directory segments in the path.
85
+ * e.g., "src/domain/kanban/entities.ts" → "kanban"
86
+ */
87
+ export function inferDomain(filePath) {
88
+ const normalized = filePath.replace(/\\/g, "/").toLowerCase();
89
+ const parts = normalized.split("/");
90
+ for (const segment of DOMAIN_SEGMENTS) {
91
+ const idx = parts.indexOf(segment);
92
+ if (idx !== -1 && idx + 1 < parts.length) {
93
+ return parts[idx + 1];
94
+ }
95
+ }
96
+ return "general";
97
+ }
98
+ /**
99
+ * Infer Oracle domain from a file path.
100
+ * Looks for governance, workflows, patterns, quick_reference in the path.
101
+ */
102
+ export function inferOracleDomain(filePath) {
103
+ const lower = filePath.toLowerCase();
104
+ if (lower.includes("governance"))
105
+ return "governance";
106
+ if (lower.includes("workflows"))
107
+ return "workflows";
108
+ if (lower.includes("patterns"))
109
+ return "patterns";
110
+ if (lower.includes("quick_reference") || lower.includes("quick-reference"))
111
+ return "quick_reference";
112
+ return "other";
113
+ }
114
+ //# sourceMappingURL=value-objects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-objects.js","sourceRoot":"","sources":["../../../src/domain/rag/value-objects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Shared Value Objects
3
+ *
4
+ * Cross-context value objects used by multiple bounded contexts.
5
+ * All value objects are immutable with value-based equality.
6
+ *
7
+ * SOLID: SRP - each class has one reason to change
8
+ * DDD: Value Objects have no identity, compared by value
9
+ */
10
+ /** Base class for string-based entity identifiers. */
11
+ export declare abstract class EntityId {
12
+ readonly value: string;
13
+ protected constructor(value: string);
14
+ equals(other: EntityId): boolean;
15
+ toString(): string;
16
+ }
17
+ /**
18
+ * Workspace identifier.
19
+ * Workspaces scope all operations (sessions, todos, cards, RAG indexes).
20
+ * Convention: uppercase string (e.g., "JARVIS", "MENU_OCR").
21
+ */
22
+ export declare class WorkspaceId extends EntityId {
23
+ private constructor();
24
+ static create(name: string): WorkspaceId;
25
+ static from(value: string): WorkspaceId;
26
+ }
27
+ /**
28
+ * Timestamp value object for consistent date handling across entities.
29
+ * Wraps Date to ensure immutability and provide domain-specific formatting.
30
+ */
31
+ export declare class Timestamp {
32
+ readonly value: Date;
33
+ private constructor();
34
+ static now(): Timestamp;
35
+ static from(date: Date): Timestamp;
36
+ static fromISO(iso: string): Timestamp;
37
+ /** Format as YYYYMMDD_HHMMSS_mmm (used in session IDs). Includes milliseconds for uniqueness. */
38
+ toCompactString(): string;
39
+ toISO(): string;
40
+ equals(other: Timestamp): boolean;
41
+ }
42
+ /**
43
+ * Result type for operations that can succeed or fail.
44
+ * Avoids throwing exceptions for expected failure paths.
45
+ * DDD: used in application layer use cases.
46
+ */
47
+ export type Result<T> = {
48
+ readonly success: true;
49
+ readonly data: T;
50
+ } | {
51
+ readonly success: false;
52
+ readonly error: string;
53
+ };
54
+ export declare function ok<T>(data: T): Result<T>;
55
+ export declare function fail<T>(error: string): Result<T>;
56
+ //# sourceMappingURL=value-objects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-objects.d.ts","sourceRoot":"","sources":["../../../src/domain/shared/value-objects.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sDAAsD;AACtD,8BAAsB,QAAQ;aACU,KAAK,EAAE,MAAM;IAAnD,SAAS,aAA6B,KAAK,EAAE,MAAM;IAMnD,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO;IAIhC,QAAQ,IAAI,MAAM;CAGnB;AAED;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,QAAQ;IACvC,OAAO;IAIP,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAOxC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;CAGxC;AAED;;;GAGG;AACH,qBAAa,SAAS;aACgB,KAAK,EAAE,IAAI;IAA/C,OAAO;IAEP,MAAM,CAAC,GAAG,IAAI,SAAS;IAIvB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS;IAIlC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IAQtC,iGAAiG;IACjG,eAAe,IAAI,MAAM;IAWzB,KAAK,IAAI,MAAM;IAIf,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;CAGlC;AAED;;;;GAIG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,IAChB;IAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC5C;IAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,wBAAgB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAExC;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAEhD"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Shared Value Objects
3
+ *
4
+ * Cross-context value objects used by multiple bounded contexts.
5
+ * All value objects are immutable with value-based equality.
6
+ *
7
+ * SOLID: SRP - each class has one reason to change
8
+ * DDD: Value Objects have no identity, compared by value
9
+ */
10
+ /** Base class for string-based entity identifiers. */
11
+ export class EntityId {
12
+ value;
13
+ constructor(value) {
14
+ this.value = value;
15
+ if (!value || value.trim().length === 0) {
16
+ throw new Error(`${this.constructor.name}: value cannot be empty`);
17
+ }
18
+ }
19
+ equals(other) {
20
+ return this.constructor === other.constructor && this.value === other.value;
21
+ }
22
+ toString() {
23
+ return this.value;
24
+ }
25
+ }
26
+ /**
27
+ * Workspace identifier.
28
+ * Workspaces scope all operations (sessions, todos, cards, RAG indexes).
29
+ * Convention: uppercase string (e.g., "JARVIS", "MENU_OCR").
30
+ */
31
+ export class WorkspaceId extends EntityId {
32
+ constructor(value) {
33
+ super(value);
34
+ }
35
+ static create(name) {
36
+ if (!name || name.trim().length === 0) {
37
+ throw new Error("WorkspaceId: name cannot be empty");
38
+ }
39
+ return new WorkspaceId(name.trim().toUpperCase());
40
+ }
41
+ static from(value) {
42
+ return new WorkspaceId(value);
43
+ }
44
+ }
45
+ /**
46
+ * Timestamp value object for consistent date handling across entities.
47
+ * Wraps Date to ensure immutability and provide domain-specific formatting.
48
+ */
49
+ export class Timestamp {
50
+ value;
51
+ constructor(value) {
52
+ this.value = value;
53
+ }
54
+ static now() {
55
+ return new Timestamp(new Date());
56
+ }
57
+ static from(date) {
58
+ return new Timestamp(new Date(date.getTime()));
59
+ }
60
+ static fromISO(iso) {
61
+ const date = new Date(iso);
62
+ if (isNaN(date.getTime())) {
63
+ throw new Error(`Timestamp: invalid ISO string "${iso}"`);
64
+ }
65
+ return new Timestamp(date);
66
+ }
67
+ /** Format as YYYYMMDD_HHMMSS_mmm (used in session IDs). Includes milliseconds for uniqueness. */
68
+ toCompactString() {
69
+ const d = this.value;
70
+ const pad = (n) => String(n).padStart(2, "0");
71
+ const pad3 = (n) => String(n).padStart(3, "0");
72
+ return (`${d.getFullYear()}${pad(d.getMonth() + 1)}${pad(d.getDate())}` +
73
+ `_${pad(d.getHours())}${pad(d.getMinutes())}${pad(d.getSeconds())}` +
74
+ `_${pad3(d.getMilliseconds())}`);
75
+ }
76
+ toISO() {
77
+ return this.value.toISOString();
78
+ }
79
+ equals(other) {
80
+ return this.value.getTime() === other.value.getTime();
81
+ }
82
+ }
83
+ export function ok(data) {
84
+ return { success: true, data };
85
+ }
86
+ export function fail(error) {
87
+ return { success: false, error };
88
+ }
89
+ //# sourceMappingURL=value-objects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-objects.js","sourceRoot":"","sources":["../../../src/domain/shared/value-objects.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sDAAsD;AACtD,MAAM,OAAgB,QAAQ;IACU;IAAtC,YAAsC,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QACjD,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,yBAAyB,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAe;QACpB,OAAO,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;IAC9E,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,WAAY,SAAQ,QAAQ;IACvC,YAAoB,KAAa;QAC/B,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,IAAY;QACxB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,KAAa;QACvB,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,SAAS;IACgB;IAApC,YAAoC,KAAW;QAAX,UAAK,GAAL,KAAK,CAAM;IAAG,CAAC;IAEnD,MAAM,CAAC,GAAG;QACR,OAAO,IAAI,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAU;QACpB,OAAO,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAW;QACxB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,GAAG,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,iGAAiG;IACjG,eAAe;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACrB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/D,OAAO,CACL,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE;YAC/D,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE;YACnE,IAAI,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,EAAE,CAChC,CAAC;IACJ,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,KAAgB;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC;CACF;AAWD,MAAM,UAAU,EAAE,CAAI,IAAO;IAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,IAAI,CAAI,KAAa;IACnC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Token Metrics Entities
3
+ *
4
+ * TokenUsage is the aggregate root for recording token consumption.
5
+ * Each record captures a single tool invocation's token cost,
6
+ * linked to the agent, card, sprint, and session context.
7
+ *
8
+ * This is the "payroll record" for AI agents — just as human
9
+ * workforce accounting tracks hours per task, this tracks tokens
10
+ * per operation.
11
+ *
12
+ * DDD: Aggregate Root with invariants
13
+ * SOLID: SRP - token usage recording only
14
+ */
15
+ import { WorkspaceId, Timestamp } from "../shared/value-objects.js";
16
+ import { TokenUsageId, OperationType } from "./value-objects.js";
17
+ import type { CostTier } from "./value-objects.js";
18
+ export interface TokenUsageProps {
19
+ readonly id: TokenUsageId;
20
+ readonly workspace: WorkspaceId;
21
+ readonly toolName: string;
22
+ readonly agent: string;
23
+ readonly operation: OperationType;
24
+ readonly inputTokens: number;
25
+ readonly outputTokens: number;
26
+ readonly model: string;
27
+ readonly costUsd: number;
28
+ readonly costTier: CostTier;
29
+ readonly cardId: string | undefined;
30
+ readonly sprintId: string | undefined;
31
+ readonly sessionId: string | undefined;
32
+ readonly metadata: Record<string, unknown>;
33
+ readonly createdAt: Timestamp;
34
+ }
35
+ export interface CreateTokenUsageParams {
36
+ readonly id: TokenUsageId;
37
+ readonly workspace: WorkspaceId;
38
+ readonly toolName: string;
39
+ readonly agent: string;
40
+ readonly operation?: OperationType;
41
+ readonly inputTokens: number;
42
+ readonly outputTokens: number;
43
+ readonly model: string;
44
+ readonly cardId?: string;
45
+ readonly sprintId?: string;
46
+ readonly sessionId?: string;
47
+ readonly metadata?: Record<string, unknown>;
48
+ }
49
+ /**
50
+ * TokenUsage — aggregate root.
51
+ *
52
+ * Immutable record of token consumption for a single operation.
53
+ * Cost is calculated at creation time based on model pricing.
54
+ * Total tokens is a derived value (input + output).
55
+ */
56
+ export declare class TokenUsage {
57
+ readonly id: TokenUsageId;
58
+ readonly workspace: WorkspaceId;
59
+ readonly toolName: string;
60
+ readonly agent: string;
61
+ readonly operation: OperationType;
62
+ readonly inputTokens: number;
63
+ readonly outputTokens: number;
64
+ readonly model: string;
65
+ readonly costUsd: number;
66
+ readonly costTier: CostTier;
67
+ readonly cardId: string | undefined;
68
+ readonly sprintId: string | undefined;
69
+ readonly sessionId: string | undefined;
70
+ readonly metadata: Record<string, unknown>;
71
+ readonly createdAt: Timestamp;
72
+ private constructor();
73
+ /** Total tokens consumed (input + output). */
74
+ get totalTokens(): number;
75
+ /** Efficiency ratio: output / input. Higher = more output per input. */
76
+ get efficiencyRatio(): number;
77
+ /**
78
+ * Create a new TokenUsage record.
79
+ * Enforces invariants:
80
+ * - Input and output tokens must be non-negative
81
+ * - Tool name and agent must not be empty
82
+ * - Cost is auto-calculated from model pricing
83
+ */
84
+ static create(params: CreateTokenUsageParams): TokenUsage;
85
+ /**
86
+ * Reconstitute from persistence (no validation, no cost recalculation).
87
+ */
88
+ static reconstitute(props: TokenUsageProps): TokenUsage;
89
+ }
90
+ //# sourceMappingURL=entities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/domain/token-metrics/entities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Token Metrics Entities
3
+ *
4
+ * TokenUsage is the aggregate root for recording token consumption.
5
+ * Each record captures a single tool invocation's token cost,
6
+ * linked to the agent, card, sprint, and session context.
7
+ *
8
+ * This is the "payroll record" for AI agents — just as human
9
+ * workforce accounting tracks hours per task, this tracks tokens
10
+ * per operation.
11
+ *
12
+ * DDD: Aggregate Root with invariants
13
+ * SOLID: SRP - token usage recording only
14
+ */
15
+ import { WorkspaceId, Timestamp } from "../shared/value-objects.js";
16
+ import { TokenUsageId, OperationType, calculateCost, getModelCostTier, } from "./value-objects.js";
17
+ // ── Token Usage Entity ────────────────────────────────────────────────
18
+ /**
19
+ * TokenUsage — aggregate root.
20
+ *
21
+ * Immutable record of token consumption for a single operation.
22
+ * Cost is calculated at creation time based on model pricing.
23
+ * Total tokens is a derived value (input + output).
24
+ */
25
+ export class TokenUsage {
26
+ id;
27
+ workspace;
28
+ toolName;
29
+ agent;
30
+ operation;
31
+ inputTokens;
32
+ outputTokens;
33
+ model;
34
+ costUsd;
35
+ costTier;
36
+ cardId;
37
+ sprintId;
38
+ sessionId;
39
+ metadata;
40
+ createdAt;
41
+ constructor(props) {
42
+ this.id = props.id;
43
+ this.workspace = props.workspace;
44
+ this.toolName = props.toolName;
45
+ this.agent = props.agent;
46
+ this.operation = props.operation;
47
+ this.inputTokens = props.inputTokens;
48
+ this.outputTokens = props.outputTokens;
49
+ this.model = props.model;
50
+ this.costUsd = props.costUsd;
51
+ this.costTier = props.costTier;
52
+ this.cardId = props.cardId;
53
+ this.sprintId = props.sprintId;
54
+ this.sessionId = props.sessionId;
55
+ this.metadata = props.metadata;
56
+ this.createdAt = props.createdAt;
57
+ }
58
+ /** Total tokens consumed (input + output). */
59
+ get totalTokens() {
60
+ return this.inputTokens + this.outputTokens;
61
+ }
62
+ /** Efficiency ratio: output / input. Higher = more output per input. */
63
+ get efficiencyRatio() {
64
+ if (this.inputTokens === 0)
65
+ return 0;
66
+ return Math.round((this.outputTokens / this.inputTokens) * 100) / 100;
67
+ }
68
+ /**
69
+ * Create a new TokenUsage record.
70
+ * Enforces invariants:
71
+ * - Input and output tokens must be non-negative
72
+ * - Tool name and agent must not be empty
73
+ * - Cost is auto-calculated from model pricing
74
+ */
75
+ static create(params) {
76
+ if (params.inputTokens < 0) {
77
+ throw new Error("TokenUsage: inputTokens must be non-negative");
78
+ }
79
+ if (params.outputTokens < 0) {
80
+ throw new Error("TokenUsage: outputTokens must be non-negative");
81
+ }
82
+ if (!params.toolName || params.toolName.trim().length === 0) {
83
+ throw new Error("TokenUsage: toolName cannot be empty");
84
+ }
85
+ if (!params.agent || params.agent.trim().length === 0) {
86
+ throw new Error("TokenUsage: agent cannot be empty");
87
+ }
88
+ const costUsd = calculateCost(params.inputTokens, params.outputTokens, params.model);
89
+ const costTier = getModelCostTier(params.model);
90
+ return new TokenUsage({
91
+ id: params.id,
92
+ workspace: params.workspace,
93
+ toolName: params.toolName,
94
+ agent: params.agent,
95
+ operation: params.operation ?? OperationType.Other,
96
+ inputTokens: params.inputTokens,
97
+ outputTokens: params.outputTokens,
98
+ model: params.model,
99
+ costUsd,
100
+ costTier,
101
+ cardId: params.cardId,
102
+ sprintId: params.sprintId,
103
+ sessionId: params.sessionId,
104
+ metadata: params.metadata ?? {},
105
+ createdAt: Timestamp.now(),
106
+ });
107
+ }
108
+ /**
109
+ * Reconstitute from persistence (no validation, no cost recalculation).
110
+ */
111
+ static reconstitute(props) {
112
+ return new TokenUsage(props);
113
+ }
114
+ }
115
+ //# sourceMappingURL=entities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../src/domain/token-metrics/entities.ts"],"names":[],"mappings":"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"}