@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,154 @@
1
+ import { ok, fail } from "../shared/value-objects.js";
2
+ import { CardStatus, DEFAULT_WIP_LIMITS } from "./value-objects.js";
3
+ import { GroomingValidator } from "./grooming.js";
4
+ /**
5
+ * Orchestrates card lifecycle operations with cross-cutting validations.
6
+ */
7
+ export class CardDomainService {
8
+ cardRepo;
9
+ groomingValidator = new GroomingValidator();
10
+ constructor(cardRepo) {
11
+ this.cardRepo = cardRepo;
12
+ }
13
+ /**
14
+ * Move a card to a new status with full validation:
15
+ * - State machine transition
16
+ * - WIP limits
17
+ * - Grooming validation (grooming -> ready)
18
+ * - Sprint/agent assignment checks
19
+ */
20
+ async moveCard(cardId, targetStatus) {
21
+ try {
22
+ const card = await this.cardRepo.findById(cardId);
23
+ if (card === null) {
24
+ return fail(`Card not found: ${cardId.value}`);
25
+ }
26
+ // Grooming validation: grooming -> ready requires passing validation
27
+ if (card.status === CardStatus.Grooming &&
28
+ targetStatus === CardStatus.Ready) {
29
+ const groomingResult = this.groomingValidator.validate(card);
30
+ if (!groomingResult.valid) {
31
+ return fail(`Grooming incomplete: ${groomingResult.errors.join("; ")}`);
32
+ }
33
+ card.completeGrooming();
34
+ }
35
+ // Ready -> Doing requires sprint and agent assignment
36
+ if (card.status === CardStatus.Ready &&
37
+ targetStatus === CardStatus.Doing) {
38
+ if (card.sprintId === undefined) {
39
+ return fail("Card must be assigned to a sprint before doing");
40
+ }
41
+ if (card.assignedAgent === undefined) {
42
+ return fail("Card must have an assigned agent before doing");
43
+ }
44
+ }
45
+ // WIP limit check for the target column
46
+ const wipLimit = DEFAULT_WIP_LIMITS[targetStatus];
47
+ if (wipLimit !== null) {
48
+ const currentCount = await this.cardRepo.countByStatus(card.workspace, targetStatus);
49
+ if (currentCount >= wipLimit) {
50
+ return fail(`WIP limit reached for "${targetStatus}": ${currentCount}/${wipLimit}`);
51
+ }
52
+ }
53
+ // Execute the transition (entity enforces state machine)
54
+ card.moveTo(targetStatus);
55
+ await this.cardRepo.save(card);
56
+ return ok(card);
57
+ }
58
+ catch (error) {
59
+ return fail(`Failed to move card: ${String(error)}`);
60
+ }
61
+ }
62
+ /** Assign card to an epic. */
63
+ async assignToEpic(cardId, epicId) {
64
+ try {
65
+ const card = await this.cardRepo.findById(cardId);
66
+ if (card === null)
67
+ return fail(`Card not found: ${cardId.value}`);
68
+ card.assignToEpic(epicId);
69
+ await this.cardRepo.save(card);
70
+ return ok(card);
71
+ }
72
+ catch (error) {
73
+ return fail(`Failed to assign epic: ${String(error)}`);
74
+ }
75
+ }
76
+ /** Assign card to a sprint. */
77
+ async assignToSprint(cardId, sprintId) {
78
+ try {
79
+ const card = await this.cardRepo.findById(cardId);
80
+ if (card === null)
81
+ return fail(`Card not found: ${cardId.value}`);
82
+ card.assignToSprint(sprintId);
83
+ await this.cardRepo.save(card);
84
+ return ok(card);
85
+ }
86
+ catch (error) {
87
+ return fail(`Failed to assign sprint: ${String(error)}`);
88
+ }
89
+ }
90
+ /** Set story points on a card. */
91
+ async setStoryPoints(cardId, points) {
92
+ try {
93
+ const card = await this.cardRepo.findById(cardId);
94
+ if (card === null)
95
+ return fail(`Card not found: ${cardId.value}`);
96
+ card.setStoryPoints(points);
97
+ await this.cardRepo.save(card);
98
+ return ok(card);
99
+ }
100
+ catch (error) {
101
+ return fail(`Failed to set story points: ${String(error)}`);
102
+ }
103
+ }
104
+ /** Assign an agent to a card. */
105
+ async assignAgent(cardId, agent) {
106
+ try {
107
+ const card = await this.cardRepo.findById(cardId);
108
+ if (card === null)
109
+ return fail(`Card not found: ${cardId.value}`);
110
+ card.assignAgent(agent);
111
+ await this.cardRepo.save(card);
112
+ return ok(card);
113
+ }
114
+ catch (error) {
115
+ return fail(`Failed to assign agent: ${String(error)}`);
116
+ }
117
+ }
118
+ /** List cards by workspace with optional status filter. */
119
+ async listCards(workspace, status) {
120
+ try {
121
+ const cards = await this.cardRepo.findByWorkspace(workspace, status);
122
+ return ok(cards);
123
+ }
124
+ catch (error) {
125
+ return fail(`Failed to list cards: ${String(error)}`);
126
+ }
127
+ }
128
+ /** Get a single card by ID. */
129
+ async getCard(cardId) {
130
+ try {
131
+ const card = await this.cardRepo.findById(cardId);
132
+ return ok(card);
133
+ }
134
+ catch (error) {
135
+ return fail(`Failed to get card: ${String(error)}`);
136
+ }
137
+ }
138
+ /**
139
+ * Get board statistics: card count per status column.
140
+ */
141
+ async getBoardStats(workspace) {
142
+ try {
143
+ const stats = {};
144
+ for (const status of Object.values(CardStatus)) {
145
+ stats[status] = await this.cardRepo.countByStatus(workspace, status);
146
+ }
147
+ return ok(stats);
148
+ }
149
+ catch (error) {
150
+ return fail(`Failed to get board stats: ${String(error)}`);
151
+ }
152
+ }
153
+ }
154
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../../src/domain/kanban/services.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Sprint and Epic Entities
3
+ *
4
+ * Separate aggregate roots for sprint and epic management.
5
+ * Sprints are 2-week iterations containing cards.
6
+ * Epics are feature-level groupings spanning multiple sprints.
7
+ *
8
+ * DDD: Aggregate roots with their own lifecycle
9
+ * SOLID: SRP - sprint and epic lifecycle, split from Card (entities.ts)
10
+ */
11
+ import { WorkspaceId, Timestamp } from "../shared/value-objects.js";
12
+ import { SprintId, SprintStatus, EpicId, EpicStatus, Priority } from "./value-objects.js";
13
+ export { SprintId, SprintStatus, EpicId, EpicStatus, Priority, WorkspaceId };
14
+ export interface SprintProps {
15
+ readonly id: SprintId;
16
+ readonly workspace: WorkspaceId;
17
+ readonly name: string;
18
+ readonly status: SprintStatus;
19
+ readonly goal?: string;
20
+ readonly startDate?: Timestamp;
21
+ readonly endDate?: Timestamp;
22
+ readonly velocityPlanned?: number;
23
+ readonly velocityActual?: number;
24
+ readonly createdAt: Timestamp;
25
+ }
26
+ export declare class Sprint {
27
+ readonly id: SprintId;
28
+ readonly workspace: WorkspaceId;
29
+ readonly name: string;
30
+ readonly createdAt: Timestamp;
31
+ private _status;
32
+ private _goal;
33
+ private _startDate;
34
+ private _endDate;
35
+ private _velocityPlanned;
36
+ private _velocityActual;
37
+ private constructor();
38
+ get status(): SprintStatus;
39
+ get goal(): string | undefined;
40
+ get startDate(): Timestamp | undefined;
41
+ get endDate(): Timestamp | undefined;
42
+ get velocityPlanned(): number | undefined;
43
+ get velocityActual(): number | undefined;
44
+ static create(params: {
45
+ id: SprintId;
46
+ workspace: WorkspaceId;
47
+ name: string;
48
+ goal?: string;
49
+ velocityPlanned?: number;
50
+ }): Sprint;
51
+ static reconstitute(props: SprintProps): Sprint;
52
+ /** Activate the sprint. Sets start date. */
53
+ activate(): void;
54
+ /** Close the sprint. Sets end date and actual velocity. */
55
+ close(velocityActual?: number): void;
56
+ /** Cancel the sprint. */
57
+ cancel(): void;
58
+ setGoal(goal: string): void;
59
+ setPlannedVelocity(velocity: number): void;
60
+ get isActive(): boolean;
61
+ get isTerminal(): boolean;
62
+ private transitionTo;
63
+ }
64
+ export interface EpicProps {
65
+ readonly id: EpicId;
66
+ readonly workspace: WorkspaceId;
67
+ readonly title: string;
68
+ readonly status: EpicStatus;
69
+ readonly priority: Priority;
70
+ readonly description?: string;
71
+ readonly owner?: string;
72
+ readonly createdAt: Timestamp;
73
+ }
74
+ export declare class Epic {
75
+ readonly id: EpicId;
76
+ readonly workspace: WorkspaceId;
77
+ readonly title: string;
78
+ readonly createdAt: Timestamp;
79
+ private _status;
80
+ private _priority;
81
+ private _description;
82
+ private _owner;
83
+ private constructor();
84
+ get status(): EpicStatus;
85
+ get priority(): Priority;
86
+ get description(): string | undefined;
87
+ get owner(): string | undefined;
88
+ static create(params: {
89
+ id: EpicId;
90
+ workspace: WorkspaceId;
91
+ title: string;
92
+ priority?: Priority;
93
+ description?: string;
94
+ owner?: string;
95
+ }): Epic;
96
+ static reconstitute(props: EpicProps): Epic;
97
+ startWork(): void;
98
+ complete(): void;
99
+ setDescription(description: string): void;
100
+ setOwner(owner: string): void;
101
+ setPriority(priority: Priority): void;
102
+ }
103
+ //# sourceMappingURL=sprint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprint.d.ts","sourceRoot":"","sources":["../../../src/domain/kanban/sprint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Sprint and Epic Entities
3
+ *
4
+ * Separate aggregate roots for sprint and epic management.
5
+ * Sprints are 2-week iterations containing cards.
6
+ * Epics are feature-level groupings spanning multiple sprints.
7
+ *
8
+ * DDD: Aggregate roots with their own lifecycle
9
+ * SOLID: SRP - sprint and epic lifecycle, split from Card (entities.ts)
10
+ */
11
+ import { WorkspaceId, Timestamp } from "../shared/value-objects.js";
12
+ import { SprintId, SprintStatus, SPRINT_TRANSITIONS, EpicId, EpicStatus, Priority, } from "./value-objects.js";
13
+ // Re-export for convenience
14
+ export { SprintId, SprintStatus, EpicId, EpicStatus, Priority, WorkspaceId };
15
+ export class Sprint {
16
+ id;
17
+ workspace;
18
+ name;
19
+ createdAt;
20
+ _status;
21
+ _goal;
22
+ _startDate;
23
+ _endDate;
24
+ _velocityPlanned;
25
+ _velocityActual;
26
+ constructor(props) {
27
+ this.id = props.id;
28
+ this.workspace = props.workspace;
29
+ this.name = props.name;
30
+ this._status = props.status;
31
+ this._goal = props.goal;
32
+ this._startDate = props.startDate;
33
+ this._endDate = props.endDate;
34
+ this._velocityPlanned = props.velocityPlanned;
35
+ this._velocityActual = props.velocityActual;
36
+ this.createdAt = props.createdAt;
37
+ }
38
+ get status() {
39
+ return this._status;
40
+ }
41
+ get goal() {
42
+ return this._goal;
43
+ }
44
+ get startDate() {
45
+ return this._startDate;
46
+ }
47
+ get endDate() {
48
+ return this._endDate;
49
+ }
50
+ get velocityPlanned() {
51
+ return this._velocityPlanned;
52
+ }
53
+ get velocityActual() {
54
+ return this._velocityActual;
55
+ }
56
+ static create(params) {
57
+ const trimmed = params.name.trim();
58
+ if (trimmed.length === 0) {
59
+ throw new Error("Sprint: name cannot be empty");
60
+ }
61
+ return new Sprint({
62
+ id: params.id,
63
+ workspace: params.workspace,
64
+ name: trimmed,
65
+ status: SprintStatus.Planning,
66
+ ...(params.goal !== undefined ? { goal: params.goal } : {}),
67
+ ...(params.velocityPlanned !== undefined
68
+ ? { velocityPlanned: params.velocityPlanned }
69
+ : {}),
70
+ createdAt: Timestamp.now(),
71
+ });
72
+ }
73
+ static reconstitute(props) {
74
+ return new Sprint(props);
75
+ }
76
+ /** Activate the sprint. Sets start date. */
77
+ activate() {
78
+ this.transitionTo(SprintStatus.Active);
79
+ this._startDate = Timestamp.now();
80
+ }
81
+ /** Close the sprint. Sets end date and actual velocity. */
82
+ close(velocityActual) {
83
+ this.transitionTo(SprintStatus.Closed);
84
+ this._endDate = Timestamp.now();
85
+ if (velocityActual !== undefined) {
86
+ this._velocityActual = velocityActual;
87
+ }
88
+ }
89
+ /** Cancel the sprint. */
90
+ cancel() {
91
+ this.transitionTo(SprintStatus.Cancelled);
92
+ this._endDate = Timestamp.now();
93
+ }
94
+ setGoal(goal) {
95
+ this._goal = goal.trim();
96
+ }
97
+ setPlannedVelocity(velocity) {
98
+ if (velocity < 0) {
99
+ throw new Error("Sprint: velocity cannot be negative");
100
+ }
101
+ this._velocityPlanned = velocity;
102
+ }
103
+ get isActive() {
104
+ return this._status === SprintStatus.Active;
105
+ }
106
+ get isTerminal() {
107
+ return (this._status === SprintStatus.Closed ||
108
+ this._status === SprintStatus.Cancelled);
109
+ }
110
+ transitionTo(newStatus) {
111
+ const allowed = SPRINT_TRANSITIONS[this._status];
112
+ if (!allowed.includes(newStatus)) {
113
+ throw new Error(`Sprint: invalid transition from "${this._status}" to "${newStatus}"`);
114
+ }
115
+ this._status = newStatus;
116
+ }
117
+ }
118
+ export class Epic {
119
+ id;
120
+ workspace;
121
+ title;
122
+ createdAt;
123
+ _status;
124
+ _priority;
125
+ _description;
126
+ _owner;
127
+ constructor(props) {
128
+ this.id = props.id;
129
+ this.workspace = props.workspace;
130
+ this.title = props.title;
131
+ this._status = props.status;
132
+ this._priority = props.priority;
133
+ this._description = props.description;
134
+ this._owner = props.owner;
135
+ this.createdAt = props.createdAt;
136
+ }
137
+ get status() {
138
+ return this._status;
139
+ }
140
+ get priority() {
141
+ return this._priority;
142
+ }
143
+ get description() {
144
+ return this._description;
145
+ }
146
+ get owner() {
147
+ return this._owner;
148
+ }
149
+ static create(params) {
150
+ const trimmed = params.title.trim();
151
+ if (trimmed.length === 0) {
152
+ throw new Error("Epic: title cannot be empty");
153
+ }
154
+ return new Epic({
155
+ id: params.id,
156
+ workspace: params.workspace,
157
+ title: trimmed,
158
+ status: EpicStatus.Backlog,
159
+ priority: params.priority ?? Priority.Medium,
160
+ ...(params.description !== undefined
161
+ ? { description: params.description }
162
+ : {}),
163
+ ...(params.owner !== undefined ? { owner: params.owner } : {}),
164
+ createdAt: Timestamp.now(),
165
+ });
166
+ }
167
+ static reconstitute(props) {
168
+ return new Epic(props);
169
+ }
170
+ startWork() {
171
+ if (this._status !== EpicStatus.Backlog) {
172
+ throw new Error(`Epic: can only start work from backlog, current: "${this._status}"`);
173
+ }
174
+ this._status = EpicStatus.InProgress;
175
+ }
176
+ complete() {
177
+ if (this._status !== EpicStatus.InProgress) {
178
+ throw new Error(`Epic: can only complete from in_progress, current: "${this._status}"`);
179
+ }
180
+ this._status = EpicStatus.Done;
181
+ }
182
+ setDescription(description) {
183
+ this._description = description.trim();
184
+ }
185
+ setOwner(owner) {
186
+ this._owner = owner.trim();
187
+ }
188
+ setPriority(priority) {
189
+ this._priority = priority;
190
+ }
191
+ }
192
+ //# sourceMappingURL=sprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprint.js","sourceRoot":"","sources":["../../../src/domain/kanban/sprint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Kanban Value Objects
3
+ *
4
+ * Identity types and enums for the kanban bounded context.
5
+ * All are immutable, compared by value.
6
+ *
7
+ * DDD: Value Objects - no identity lifecycle, equality by value
8
+ * SOLID: SRP - each type handles one concern
9
+ */
10
+ import { EntityId } from "../shared/value-objects.js";
11
+ /**
12
+ * Card status in the kanban pipeline.
13
+ *
14
+ * State machine:
15
+ * backlog -> grooming
16
+ * grooming -> ready, backlog (rejected)
17
+ * ready -> doing
18
+ * doing -> review, blocked
19
+ * blocked -> doing, backlog
20
+ * review -> tested, doing (changes requested, max 4 iterations)
21
+ * tested -> done, review (test failed)
22
+ * done -> (terminal)
23
+ */
24
+ export declare enum CardStatus {
25
+ Backlog = "backlog",
26
+ Grooming = "grooming",
27
+ Ready = "ready",
28
+ Doing = "doing",
29
+ Review = "review",
30
+ Blocked = "blocked",
31
+ Tested = "tested",
32
+ Done = "done"
33
+ }
34
+ /** Valid card status transitions. */
35
+ export declare const CARD_TRANSITIONS: Record<CardStatus, readonly CardStatus[]>;
36
+ export declare enum SprintStatus {
37
+ Planning = "planning",
38
+ Active = "active",
39
+ Closed = "closed",
40
+ Cancelled = "cancelled"
41
+ }
42
+ /** Valid sprint status transitions. */
43
+ export declare const SPRINT_TRANSITIONS: Record<SprintStatus, readonly SprintStatus[]>;
44
+ export declare enum EpicStatus {
45
+ Backlog = "backlog",
46
+ InProgress = "in_progress",
47
+ Done = "done"
48
+ }
49
+ /** Valid epic status transitions. */
50
+ export declare const EPIC_TRANSITIONS: Record<EpicStatus, readonly EpicStatus[]>;
51
+ export declare enum Priority {
52
+ High = "high",
53
+ Medium = "medium",
54
+ Low = "low"
55
+ }
56
+ /** Valid Fibonacci-based story points. */
57
+ export declare const VALID_STORY_POINTS: readonly [1, 2, 3, 5, 8, 13, 21];
58
+ export type StoryPoints = (typeof VALID_STORY_POINTS)[number];
59
+ export declare function isValidStoryPoints(value: number): value is StoryPoints;
60
+ /** Maximum number of review iterations before escalation. */
61
+ export declare const MAX_REVIEW_ITERATIONS = 4;
62
+ /** Default WIP limits per column. null = no limit. */
63
+ export declare const DEFAULT_WIP_LIMITS: Record<CardStatus, number | null>;
64
+ /**
65
+ * Card identifier. Format: CD-{NNN}
66
+ */
67
+ export declare class CardId extends EntityId {
68
+ private constructor();
69
+ static create(sequence: number): CardId;
70
+ static from(value: string): CardId;
71
+ get sequence(): number;
72
+ }
73
+ /**
74
+ * Sprint identifier. Format: SP-{NNN}
75
+ */
76
+ export declare class SprintId extends EntityId {
77
+ private constructor();
78
+ static create(sequence: number): SprintId;
79
+ static from(value: string): SprintId;
80
+ get sequence(): number;
81
+ }
82
+ /**
83
+ * Epic identifier. Format: EP-{NNN}
84
+ */
85
+ export declare class EpicId extends EntityId {
86
+ private constructor();
87
+ static create(sequence: number): EpicId;
88
+ static from(value: string): EpicId;
89
+ get sequence(): number;
90
+ }
91
+ //# sourceMappingURL=value-objects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-objects.d.ts","sourceRoot":"","sources":["../../../src/domain/kanban/value-objects.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAItD;;;;;;;;;;;;GAYG;AACH,oBAAY,UAAU;IACpB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAED,qCAAqC;AACrC,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,UAAU,EAAE,CAStE,CAAC;AAIF,oBAAY,YAAY;IACtB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,SAAS,cAAc;CACxB;AAED,uCAAuC;AACvC,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,YAAY,EAAE,CAM1E,CAAC;AAIJ,oBAAY,UAAU;IACpB,OAAO,YAAY;IACnB,UAAU,gBAAgB;IAC1B,IAAI,SAAS;CACd;AAED,qCAAqC;AACrC,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,UAAU,EAAE,CAItE,CAAC;AAIF,oBAAY,QAAQ;IAClB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,GAAG,QAAQ;CACZ;AAID,0CAA0C;AAC1C,eAAO,MAAM,kBAAkB,kCAAmC,CAAC;AACnE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,WAAW,CAEtE;AAID,6DAA6D;AAC7D,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAIvC,sDAAsD;AACtD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAShE,CAAC;AAIF;;GAEG;AACH,qBAAa,MAAO,SAAQ,QAAQ;IAClC,OAAO;IAIP,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAOvC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIlC,IAAI,QAAQ,IAAI,MAAM,CAGrB;CACF;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,QAAQ;IACpC,OAAO;IAIP,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAOzC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;IAIpC,IAAI,QAAQ,IAAI,MAAM,CAGrB;CACF;AAED;;GAEG;AACH,qBAAa,MAAO,SAAQ,QAAQ;IAClC,OAAO;IAIP,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAOvC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIlC,IAAI,QAAQ,IAAI,MAAM,CAGrB;CACF"}