@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,234 @@
1
+ import { ok, fail } from "../../domain/shared/value-objects.js";
2
+ import { EXTENSION_LANGUAGE_MAP, DEFAULT_CHUNK_CONFIGS, inferDomain, } from "../../domain/rag/value-objects.js";
3
+ import { extractSnippet } from "../../domain/rag/services.js";
4
+ import { extname } from "node:path";
5
+ // ── Use Cases ─────────────────────────────────────────────────────────
6
+ export class RagUseCases {
7
+ embedding;
8
+ vectors;
9
+ splitter;
10
+ files;
11
+ constructor(deps) {
12
+ this.embedding = deps.embeddingProvider;
13
+ this.vectors = deps.vectorRepository;
14
+ this.splitter = deps.textSplitter;
15
+ this.files = deps.fileDiscovery;
16
+ }
17
+ // ── Search ──────────────────────────────────────────────────────
18
+ async search(request) {
19
+ try {
20
+ const queryVector = await this.embedding.embed(request.query);
21
+ const results = await this.vectors.search(queryVector, {
22
+ topK: request.topK ?? 5,
23
+ workspace: request.workspace,
24
+ ...(request.domainFilter !== undefined
25
+ ? { domainFilter: request.domainFilter }
26
+ : {}),
27
+ ...(request.typeFilter !== undefined
28
+ ? { typeFilter: request.typeFilter }
29
+ : {}),
30
+ });
31
+ return ok({
32
+ results: results.map((r) => ({
33
+ score: r.score,
34
+ source: r.source,
35
+ domain: r.domain,
36
+ fileType: r.fileType,
37
+ content: r.content,
38
+ })),
39
+ workspace: request.workspace,
40
+ query: request.query,
41
+ });
42
+ }
43
+ catch (error) {
44
+ return fail(`RAG search failed: ${String(error)}`);
45
+ }
46
+ }
47
+ // ── Index ───────────────────────────────────────────────────────
48
+ async index(request) {
49
+ try {
50
+ const workspace = request.workspace.toLowerCase();
51
+ // Discover files
52
+ const analysis = await this.files.discover(request.directory);
53
+ // Clear if requested
54
+ if (request.clear === true) {
55
+ await this.vectors.clearIndex(workspace);
56
+ }
57
+ // Ensure index exists
58
+ await this.vectors.ensureIndex(workspace);
59
+ // Create .ragignore if not present
60
+ await this.files.createRagignore(request.directory, analysis.projectType);
61
+ let totalChunks = 0;
62
+ // Process each file
63
+ for (const file of analysis.files) {
64
+ const content = await this.files.readFile(file.absolutePath);
65
+ if (content === null || content.trim().length === 0)
66
+ continue;
67
+ const ext = extname(file.absolutePath).toLowerCase();
68
+ const language = EXTENSION_LANGUAGE_MAP.get(ext);
69
+ const config = DEFAULT_CHUNK_CONFIGS.get(language ?? "default") ??
70
+ DEFAULT_CHUNK_CONFIGS.get("default");
71
+ const textChunks = await this.splitter.split(content, language, config);
72
+ if (textChunks.length === 0)
73
+ continue;
74
+ // Generate embeddings in batch
75
+ const texts = textChunks.map((c) => c.content);
76
+ const vectors = await this.embedding.embedBatch(texts);
77
+ const domain = inferDomain(file.relativePath);
78
+ const fileType = ext.startsWith(".") ? ext.slice(1) : ext;
79
+ const chunks = textChunks.map((chunk, i) => ({
80
+ vector: vectors[i],
81
+ metadata: {
82
+ source: file.absolutePath,
83
+ workspace,
84
+ domain,
85
+ fileType,
86
+ chunkIndex: chunk.index,
87
+ totalChunks: textChunks.length,
88
+ content: chunk.content,
89
+ },
90
+ }));
91
+ await this.vectors.addChunks(workspace, chunks);
92
+ totalChunks += chunks.length;
93
+ }
94
+ return ok({
95
+ workspace,
96
+ projectType: analysis.projectType,
97
+ filesIndexed: analysis.files.length,
98
+ chunksCreated: totalChunks,
99
+ excludedFiles: analysis.excludedCount,
100
+ totalSizeMb: analysis.totalSizeMb,
101
+ });
102
+ }
103
+ catch (error) {
104
+ return fail(`RAG index failed: ${String(error)}`);
105
+ }
106
+ }
107
+ // ── Snippet ─────────────────────────────────────────────────────
108
+ async snippet(request) {
109
+ try {
110
+ const queryVector = await this.embedding.embed(request.query);
111
+ const results = await this.vectors.search(queryVector, {
112
+ topK: request.topK ?? 5,
113
+ workspace: request.workspace,
114
+ });
115
+ const contextLines = request.contextLines ?? 50;
116
+ const snippetResults = await Promise.all(results.map(async (r) => {
117
+ const fileContent = await this.files.readFile(r.source);
118
+ const snippet = fileContent !== null
119
+ ? extractSnippet(fileContent, r.content, contextLines)
120
+ : r.content;
121
+ return {
122
+ score: r.score,
123
+ source: r.source,
124
+ snippet,
125
+ };
126
+ }));
127
+ return ok({
128
+ results: snippetResults,
129
+ workspace: request.workspace,
130
+ });
131
+ }
132
+ catch (error) {
133
+ return fail(`RAG snippet failed: ${String(error)}`);
134
+ }
135
+ }
136
+ // ── Update (re-index single file) ───────────────────────────────
137
+ async update(request) {
138
+ try {
139
+ const workspace = request.workspace.toLowerCase();
140
+ // Delete existing chunks for this file
141
+ await this.vectors.ensureIndex(workspace);
142
+ const removed = await this.vectors.deleteBySource(workspace, request.filePath);
143
+ // Read and re-index the file
144
+ const content = await this.files.readFile(request.filePath);
145
+ if (content === null || content.trim().length === 0) {
146
+ return ok({
147
+ workspace,
148
+ filePath: request.filePath,
149
+ chunksRemoved: removed,
150
+ chunksAdded: 0,
151
+ });
152
+ }
153
+ const ext = extname(request.filePath).toLowerCase();
154
+ const language = EXTENSION_LANGUAGE_MAP.get(ext);
155
+ const config = DEFAULT_CHUNK_CONFIGS.get(language ?? "default") ??
156
+ DEFAULT_CHUNK_CONFIGS.get("default");
157
+ const textChunks = await this.splitter.split(content, language, config);
158
+ if (textChunks.length === 0) {
159
+ return ok({
160
+ workspace,
161
+ filePath: request.filePath,
162
+ chunksRemoved: removed,
163
+ chunksAdded: 0,
164
+ });
165
+ }
166
+ const texts = textChunks.map((c) => c.content);
167
+ const vectors = await this.embedding.embedBatch(texts);
168
+ const domain = inferDomain(request.filePath);
169
+ const fileType = ext.startsWith(".") ? ext.slice(1) : ext;
170
+ const chunks = textChunks.map((chunk, i) => ({
171
+ vector: vectors[i],
172
+ metadata: {
173
+ source: request.filePath,
174
+ workspace,
175
+ domain,
176
+ fileType,
177
+ chunkIndex: chunk.index,
178
+ totalChunks: textChunks.length,
179
+ content: chunk.content,
180
+ },
181
+ }));
182
+ await this.vectors.addChunks(workspace, chunks);
183
+ return ok({
184
+ workspace,
185
+ filePath: request.filePath,
186
+ chunksRemoved: removed,
187
+ chunksAdded: chunks.length,
188
+ });
189
+ }
190
+ catch (error) {
191
+ return fail(`RAG update failed: ${String(error)}`);
192
+ }
193
+ }
194
+ // ── Delete ──────────────────────────────────────────────────────
195
+ async delete(request) {
196
+ try {
197
+ const workspace = request.workspace.toLowerCase();
198
+ await this.vectors.ensureIndex(workspace);
199
+ const removed = await this.vectors.deleteBySource(workspace, request.filePath);
200
+ return ok({
201
+ workspace,
202
+ filePath: request.filePath,
203
+ chunksRemoved: removed,
204
+ });
205
+ }
206
+ catch (error) {
207
+ return fail(`RAG delete failed: ${String(error)}`);
208
+ }
209
+ }
210
+ // ── Status ──────────────────────────────────────────────────────
211
+ async status(request) {
212
+ try {
213
+ const stats = await this.vectors.getStats(request.workspace);
214
+ const response = {
215
+ workspace: stats.workspace,
216
+ documentCount: stats.documentCount,
217
+ embeddingModel: stats.embeddingModel,
218
+ storeType: stats.storeType,
219
+ };
220
+ if (request.includeOracle === true) {
221
+ const oracleStats = await this.vectors.getOracleStats();
222
+ return ok({
223
+ ...response,
224
+ oracleDocumentCount: oracleStats.documentCount,
225
+ });
226
+ }
227
+ return ok(response);
228
+ }
229
+ catch (error) {
230
+ return fail(`RAG status failed: ${String(error)}`);
231
+ }
232
+ }
233
+ }
234
+ //# sourceMappingURL=use-cases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-cases.js","sourceRoot":"","sources":["../../../src/application/rag/use-cases.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Token Metrics DTOs (Data Transfer Objects)
3
+ *
4
+ * Plain objects for crossing layer boundaries in the token-metrics context.
5
+ * Tools/Hooks -> Use Cases (request DTOs), Use Cases -> Tools (response DTOs).
6
+ *
7
+ * SOLID: SRP - DTOs carry data, no logic
8
+ * DDD: Application layer boundary objects
9
+ */
10
+ export interface RecordUsageRequest {
11
+ readonly workspace: string;
12
+ readonly toolName: string;
13
+ readonly agent: string;
14
+ readonly operation?: string;
15
+ readonly inputTokens: number;
16
+ readonly outputTokens: number;
17
+ readonly model: string;
18
+ readonly cardId?: string;
19
+ readonly sprintId?: string;
20
+ readonly sessionId?: string;
21
+ readonly metadata?: Record<string, unknown>;
22
+ }
23
+ export interface GetUsageHistoryRequest {
24
+ readonly workspace: string;
25
+ readonly agent?: string;
26
+ readonly cardId?: string;
27
+ readonly sprintId?: string;
28
+ readonly operation?: string;
29
+ readonly sessionId?: string;
30
+ readonly limit?: number;
31
+ }
32
+ export interface GetAgentReportRequest {
33
+ readonly workspace: string;
34
+ readonly agent?: string;
35
+ }
36
+ export interface GetCardReportRequest {
37
+ readonly workspace: string;
38
+ readonly cardId?: string;
39
+ }
40
+ export interface GetSprintReportRequest {
41
+ readonly workspace: string;
42
+ readonly sprintId?: string;
43
+ }
44
+ export interface GetWorkspaceSummaryRequest {
45
+ readonly workspace: string;
46
+ }
47
+ export interface EstimateCostRequest {
48
+ readonly inputTokens: number;
49
+ readonly outputTokens: number;
50
+ readonly model: string;
51
+ }
52
+ export interface TokenUsageResponse {
53
+ readonly id: string;
54
+ readonly workspace: string;
55
+ readonly toolName: string;
56
+ readonly agent: string;
57
+ readonly operation: string;
58
+ readonly inputTokens: number;
59
+ readonly outputTokens: number;
60
+ readonly totalTokens: number;
61
+ readonly model: string;
62
+ readonly costUsd: number;
63
+ readonly costTier: string;
64
+ readonly cardId: string | undefined;
65
+ readonly sprintId: string | undefined;
66
+ readonly sessionId: string | undefined;
67
+ readonly createdAt: string;
68
+ }
69
+ export interface AgentReportResponse {
70
+ readonly agent: string;
71
+ readonly totalInputTokens: number;
72
+ readonly totalOutputTokens: number;
73
+ readonly totalTokens: number;
74
+ readonly totalCostUsd: number;
75
+ readonly recordCount: number;
76
+ readonly dominantOperation: string;
77
+ }
78
+ export interface CardReportResponse {
79
+ readonly cardId: string;
80
+ readonly totalInputTokens: number;
81
+ readonly totalOutputTokens: number;
82
+ readonly totalTokens: number;
83
+ readonly totalCostUsd: number;
84
+ readonly recordCount: number;
85
+ readonly agentCount: number;
86
+ }
87
+ export interface SprintReportResponse {
88
+ readonly sprintId: string;
89
+ readonly totalInputTokens: number;
90
+ readonly totalOutputTokens: number;
91
+ readonly totalTokens: number;
92
+ readonly totalCostUsd: number;
93
+ readonly recordCount: number;
94
+ readonly cardCount: number;
95
+ readonly agentCount: number;
96
+ readonly tokensPerCard: number;
97
+ }
98
+ export interface WorkspaceSummaryResponse {
99
+ readonly workspace: string;
100
+ readonly totalInputTokens: number;
101
+ readonly totalOutputTokens: number;
102
+ readonly totalTokens: number;
103
+ readonly totalCostUsd: number;
104
+ readonly recordCount: number;
105
+ readonly byOperation: ReadonlyArray<{
106
+ readonly operation: string;
107
+ readonly totalTokens: number;
108
+ readonly totalCostUsd: number;
109
+ readonly count: number;
110
+ }>;
111
+ readonly topAgents: ReadonlyArray<{
112
+ readonly agent: string;
113
+ readonly totalTokens: number;
114
+ readonly totalCostUsd: number;
115
+ }>;
116
+ readonly recommendations: readonly string[];
117
+ }
118
+ export interface CostEstimateResponse {
119
+ readonly inputTokens: number;
120
+ readonly outputTokens: number;
121
+ readonly totalTokens: number;
122
+ readonly model: string;
123
+ readonly costUsd: number;
124
+ readonly costTier: string;
125
+ }
126
+ //# sourceMappingURL=dtos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dtos.d.ts","sourceRoot":"","sources":["../../../src/application/token-metrics/dtos.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Token Metrics DTOs (Data Transfer Objects)
3
+ *
4
+ * Plain objects for crossing layer boundaries in the token-metrics context.
5
+ * Tools/Hooks -> Use Cases (request DTOs), Use Cases -> Tools (response DTOs).
6
+ *
7
+ * SOLID: SRP - DTOs carry data, no logic
8
+ * DDD: Application layer boundary objects
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=dtos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dtos.js","sourceRoot":"","sources":["../../../src/application/token-metrics/dtos.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Token Metrics Use Cases
3
+ *
4
+ * Application layer orchestration for token usage tracking.
5
+ * Records usage, generates reports, estimates costs, and produces
6
+ * actionable recommendations based on spending patterns.
7
+ *
8
+ * SOLID: SRP - token metrics operations only
9
+ * SOLID: DIP - depends on repository interface, not implementation
10
+ * DDD: Application Service pattern
11
+ */
12
+ import type { Result } from "../../domain/shared/value-objects.js";
13
+ import type { TokenMetricsRepository } from "../../domain/token-metrics/repositories.js";
14
+ import type { RecordUsageRequest, GetUsageHistoryRequest, GetAgentReportRequest, GetCardReportRequest, GetSprintReportRequest, GetWorkspaceSummaryRequest, EstimateCostRequest, TokenUsageResponse, AgentReportResponse, CardReportResponse, SprintReportResponse, WorkspaceSummaryResponse, CostEstimateResponse } from "./dtos.js";
15
+ export declare class TokenMetricsUseCases {
16
+ private readonly repo;
17
+ constructor(repo: TokenMetricsRepository);
18
+ /** Record a token usage event. */
19
+ recordUsage(req: RecordUsageRequest): Promise<Result<TokenUsageResponse>>;
20
+ /** Get usage history with optional filters. */
21
+ getUsageHistory(req: GetUsageHistoryRequest): Promise<Result<readonly TokenUsageResponse[]>>;
22
+ /** Get aggregated report by agent. */
23
+ getAgentReport(req: GetAgentReportRequest): Promise<Result<readonly AgentReportResponse[]>>;
24
+ /** Get aggregated report by card. */
25
+ getCardReport(req: GetCardReportRequest): Promise<Result<readonly CardReportResponse[]>>;
26
+ /** Get aggregated report by sprint. */
27
+ getSprintReport(req: GetSprintReportRequest): Promise<Result<readonly SprintReportResponse[]>>;
28
+ /** Get workspace-wide summary with recommendations. */
29
+ getWorkspaceSummary(req: GetWorkspaceSummaryRequest): Promise<Result<WorkspaceSummaryResponse>>;
30
+ /** Estimate cost for a hypothetical token usage (no persistence). */
31
+ estimateCost(req: EstimateCostRequest): CostEstimateResponse;
32
+ }
33
+ //# sourceMappingURL=tracking-use-cases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracking-use-cases.d.ts","sourceRoot":"","sources":["../../../src/application/token-metrics/tracking-use-cases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AASnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,WAAW,CAAC;AAwFnB,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,sBAAsB;IAEzD,kCAAkC;IAC5B,WAAW,CACf,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IA+BtC,+CAA+C;IACzC,eAAe,CACnB,GAAG,EAAE,sBAAsB,GAC1B,OAAO,CAAC,MAAM,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;IAmBjD,sCAAsC;IAChC,cAAc,CAClB,GAAG,EAAE,qBAAqB,GACzB,OAAO,CAAC,MAAM,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAAC;IAuBlD,qCAAqC;IAC/B,aAAa,CACjB,GAAG,EAAE,oBAAoB,GACxB,OAAO,CAAC,MAAM,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;IAuBjD,uCAAuC;IACjC,eAAe,CACnB,GAAG,EAAE,sBAAsB,GAC1B,OAAO,CAAC,MAAM,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAAC;IA0BnD,uDAAuD;IACjD,mBAAmB,CACvB,GAAG,EAAE,0BAA0B,GAC9B,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAqC5C,qEAAqE;IACrE,YAAY,CAAC,GAAG,EAAE,mBAAmB,GAAG,oBAAoB;CAiB7D"}
@@ -0,0 +1,220 @@
1
+ import { WorkspaceId, ok, fail } from "../../domain/shared/value-objects.js";
2
+ import { TokenUsage } from "../../domain/token-metrics/entities.js";
3
+ import { TokenUsageId, parseOperationType, calculateCost, getModelCostTier, } from "../../domain/token-metrics/value-objects.js";
4
+ /** Map TokenUsage entity to response DTO. */
5
+ function toUsageResponse(usage) {
6
+ return {
7
+ id: usage.id.value,
8
+ workspace: usage.workspace.value,
9
+ toolName: usage.toolName,
10
+ agent: usage.agent,
11
+ operation: usage.operation,
12
+ inputTokens: usage.inputTokens,
13
+ outputTokens: usage.outputTokens,
14
+ totalTokens: usage.totalTokens,
15
+ model: usage.model,
16
+ costUsd: usage.costUsd,
17
+ costTier: usage.costTier,
18
+ cardId: usage.cardId,
19
+ sprintId: usage.sprintId,
20
+ sessionId: usage.sessionId,
21
+ createdAt: usage.createdAt.toISO(),
22
+ };
23
+ }
24
+ /**
25
+ * Generate recommendations based on workspace summary data.
26
+ * Flags anomalies and suggests optimizations.
27
+ */
28
+ function generateRecommendations(totalCostUsd, recordCount, byOperation, topAgents) {
29
+ const recs = [];
30
+ // Cost threshold alert
31
+ if (totalCostUsd > 10) {
32
+ recs.push(`High cost alert: $${totalCostUsd.toFixed(2)} total. Consider routing more operations to local models.`);
33
+ }
34
+ else if (totalCostUsd > 1) {
35
+ recs.push(`Cost notice: $${totalCostUsd.toFixed(2)} total. Monitor for trends.`);
36
+ }
37
+ // Fix-heavy pattern detection
38
+ const fixOps = byOperation.find((o) => o.operation === "fix");
39
+ const implOps = byOperation.find((o) => o.operation === "implementation");
40
+ if (fixOps && implOps && fixOps.count > implOps.count * 0.5) {
41
+ recs.push("High fix-to-implementation ratio detected. Consider improving grooming/review processes.");
42
+ }
43
+ // Review overhead detection
44
+ const reviewOps = byOperation.find((o) => o.operation === "review");
45
+ if (reviewOps && recordCount > 0 && reviewOps.count / recordCount > 0.4) {
46
+ recs.push("Review operations exceed 40% of total. Consider streamlining review workflow.");
47
+ }
48
+ // Agent concentration
49
+ if (topAgents.length > 0) {
50
+ const totalAllAgents = topAgents.reduce((s, a) => s + a.totalTokens, 0);
51
+ const topAgent = topAgents[0];
52
+ if (totalAllAgents > 0 && topAgent.totalTokens / totalAllAgents > 0.7) {
53
+ recs.push(`Agent "${topAgent.agent}" consumes ${Math.round((topAgent.totalTokens / totalAllAgents) * 100)}% of tokens. Consider distributing work.`);
54
+ }
55
+ }
56
+ if (recs.length === 0) {
57
+ recs.push("Token usage within normal parameters.");
58
+ }
59
+ return recs;
60
+ }
61
+ export class TokenMetricsUseCases {
62
+ repo;
63
+ constructor(repo) {
64
+ this.repo = repo;
65
+ }
66
+ /** Record a token usage event. */
67
+ async recordUsage(req) {
68
+ try {
69
+ const workspace = WorkspaceId.create(req.workspace);
70
+ const sequence = await this.repo.nextSequence(workspace);
71
+ const id = TokenUsageId.create(sequence);
72
+ const operation = req.operation
73
+ ? parseOperationType(req.operation)
74
+ : undefined;
75
+ const usage = TokenUsage.create({
76
+ id,
77
+ workspace,
78
+ toolName: req.toolName,
79
+ agent: req.agent,
80
+ inputTokens: req.inputTokens,
81
+ outputTokens: req.outputTokens,
82
+ model: req.model,
83
+ ...(operation !== undefined ? { operation } : {}),
84
+ ...(req.cardId !== undefined ? { cardId: req.cardId } : {}),
85
+ ...(req.sprintId !== undefined ? { sprintId: req.sprintId } : {}),
86
+ ...(req.sessionId !== undefined ? { sessionId: req.sessionId } : {}),
87
+ ...(req.metadata !== undefined ? { metadata: req.metadata } : {}),
88
+ });
89
+ await this.repo.save(usage);
90
+ return ok(toUsageResponse(usage));
91
+ }
92
+ catch (e) {
93
+ return fail(e instanceof Error ? e.message : String(e));
94
+ }
95
+ }
96
+ /** Get usage history with optional filters. */
97
+ async getUsageHistory(req) {
98
+ try {
99
+ const workspace = WorkspaceId.create(req.workspace);
100
+ const records = await this.repo.findByWorkspace(workspace, {
101
+ ...(req.agent !== undefined ? { agent: req.agent } : {}),
102
+ ...(req.cardId !== undefined ? { cardId: req.cardId } : {}),
103
+ ...(req.sprintId !== undefined ? { sprintId: req.sprintId } : {}),
104
+ ...(req.operation !== undefined
105
+ ? { operation: parseOperationType(req.operation) }
106
+ : {}),
107
+ ...(req.sessionId !== undefined ? { sessionId: req.sessionId } : {}),
108
+ ...(req.limit !== undefined ? { limit: req.limit } : {}),
109
+ });
110
+ return ok(records.map(toUsageResponse));
111
+ }
112
+ catch (e) {
113
+ return fail(e instanceof Error ? e.message : String(e));
114
+ }
115
+ }
116
+ /** Get aggregated report by agent. */
117
+ async getAgentReport(req) {
118
+ try {
119
+ const workspace = WorkspaceId.create(req.workspace);
120
+ const metrics = await this.repo.getMetricsByAgent(workspace, req.agent);
121
+ return ok(metrics.map((m) => ({
122
+ agent: m.agent,
123
+ totalInputTokens: m.totalInputTokens,
124
+ totalOutputTokens: m.totalOutputTokens,
125
+ totalTokens: m.totalTokens,
126
+ totalCostUsd: m.totalCostUsd,
127
+ recordCount: m.recordCount,
128
+ dominantOperation: m.dominantOperation,
129
+ })));
130
+ }
131
+ catch (e) {
132
+ return fail(e instanceof Error ? e.message : String(e));
133
+ }
134
+ }
135
+ /** Get aggregated report by card. */
136
+ async getCardReport(req) {
137
+ try {
138
+ const workspace = WorkspaceId.create(req.workspace);
139
+ const metrics = await this.repo.getMetricsByCard(workspace, req.cardId);
140
+ return ok(metrics.map((m) => ({
141
+ cardId: m.cardId,
142
+ totalInputTokens: m.totalInputTokens,
143
+ totalOutputTokens: m.totalOutputTokens,
144
+ totalTokens: m.totalTokens,
145
+ totalCostUsd: m.totalCostUsd,
146
+ recordCount: m.recordCount,
147
+ agentCount: m.agentCount,
148
+ })));
149
+ }
150
+ catch (e) {
151
+ return fail(e instanceof Error ? e.message : String(e));
152
+ }
153
+ }
154
+ /** Get aggregated report by sprint. */
155
+ async getSprintReport(req) {
156
+ try {
157
+ const workspace = WorkspaceId.create(req.workspace);
158
+ const metrics = await this.repo.getMetricsBySprint(workspace, req.sprintId);
159
+ return ok(metrics.map((m) => ({
160
+ sprintId: m.sprintId,
161
+ totalInputTokens: m.totalInputTokens,
162
+ totalOutputTokens: m.totalOutputTokens,
163
+ totalTokens: m.totalTokens,
164
+ totalCostUsd: m.totalCostUsd,
165
+ recordCount: m.recordCount,
166
+ cardCount: m.cardCount,
167
+ agentCount: m.agentCount,
168
+ tokensPerCard: m.cardCount > 0 ? Math.round(m.totalTokens / m.cardCount) : 0,
169
+ })));
170
+ }
171
+ catch (e) {
172
+ return fail(e instanceof Error ? e.message : String(e));
173
+ }
174
+ }
175
+ /** Get workspace-wide summary with recommendations. */
176
+ async getWorkspaceSummary(req) {
177
+ try {
178
+ const workspace = WorkspaceId.create(req.workspace);
179
+ const summary = await this.repo.getWorkspaceSummary(workspace);
180
+ const recommendations = generateRecommendations(summary.totalCostUsd, summary.recordCount, summary.byOperation, summary.topAgents);
181
+ return ok({
182
+ workspace: req.workspace,
183
+ totalInputTokens: summary.totalInputTokens,
184
+ totalOutputTokens: summary.totalOutputTokens,
185
+ totalTokens: summary.totalTokens,
186
+ totalCostUsd: summary.totalCostUsd,
187
+ recordCount: summary.recordCount,
188
+ byOperation: summary.byOperation.map((o) => ({
189
+ operation: o.operation,
190
+ totalTokens: o.totalTokens,
191
+ totalCostUsd: o.totalCostUsd,
192
+ count: o.count,
193
+ })),
194
+ topAgents: summary.topAgents.map((a) => ({
195
+ agent: a.agent,
196
+ totalTokens: a.totalTokens,
197
+ totalCostUsd: a.totalCostUsd,
198
+ })),
199
+ recommendations,
200
+ });
201
+ }
202
+ catch (e) {
203
+ return fail(e instanceof Error ? e.message : String(e));
204
+ }
205
+ }
206
+ /** Estimate cost for a hypothetical token usage (no persistence). */
207
+ estimateCost(req) {
208
+ const cost = calculateCost(req.inputTokens, req.outputTokens, req.model);
209
+ const tier = getModelCostTier(req.model);
210
+ return {
211
+ inputTokens: req.inputTokens,
212
+ outputTokens: req.outputTokens,
213
+ totalTokens: req.inputTokens + req.outputTokens,
214
+ model: req.model,
215
+ costUsd: cost,
216
+ costTier: tier,
217
+ };
218
+ }
219
+ }
220
+ //# sourceMappingURL=tracking-use-cases.js.map