@mc1global/opencode-jarvis 0.1.1 → 0.3.1

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 (299) hide show
  1. package/dist/application/agent-registry/dtos.d.ts +66 -0
  2. package/dist/application/agent-registry/dtos.d.ts.map +1 -0
  3. package/dist/application/agent-registry/dtos.js +11 -0
  4. package/dist/application/agent-registry/dtos.js.map +1 -0
  5. package/dist/application/agent-registry/use-cases.d.ts +39 -0
  6. package/dist/application/agent-registry/use-cases.d.ts.map +1 -0
  7. package/dist/application/agent-registry/use-cases.js +222 -0
  8. package/dist/application/agent-registry/use-cases.js.map +1 -0
  9. package/dist/application/azure-sync/dtos.d.ts +210 -0
  10. package/dist/application/azure-sync/dtos.d.ts.map +1 -0
  11. package/dist/application/azure-sync/dtos.js +11 -0
  12. package/dist/application/azure-sync/dtos.js.map +1 -0
  13. package/dist/application/azure-sync/field-builders.d.ts +54 -0
  14. package/dist/application/azure-sync/field-builders.d.ts.map +1 -0
  15. package/dist/application/azure-sync/field-builders.js +166 -0
  16. package/dist/application/azure-sync/field-builders.js.map +1 -0
  17. package/dist/application/azure-sync/index.d.ts +16 -0
  18. package/dist/application/azure-sync/index.d.ts.map +1 -0
  19. package/dist/application/azure-sync/index.js +10 -0
  20. package/dist/application/azure-sync/index.js.map +1 -0
  21. package/dist/application/azure-sync/pr-use-cases.d.ts +39 -0
  22. package/dist/application/azure-sync/pr-use-cases.d.ts.map +1 -0
  23. package/dist/application/azure-sync/pr-use-cases.js +192 -0
  24. package/dist/application/azure-sync/pr-use-cases.js.map +1 -0
  25. package/dist/application/azure-sync/pull-use-cases.d.ts +43 -0
  26. package/dist/application/azure-sync/pull-use-cases.d.ts.map +1 -0
  27. package/dist/application/azure-sync/pull-use-cases.js +322 -0
  28. package/dist/application/azure-sync/pull-use-cases.js.map +1 -0
  29. package/dist/application/azure-sync/push-use-cases.d.ts +53 -0
  30. package/dist/application/azure-sync/push-use-cases.d.ts.map +1 -0
  31. package/dist/application/azure-sync/push-use-cases.js +341 -0
  32. package/dist/application/azure-sync/push-use-cases.js.map +1 -0
  33. package/dist/application/azure-sync/reverse-field-builder.d.ts +52 -0
  34. package/dist/application/azure-sync/reverse-field-builder.d.ts.map +1 -0
  35. package/dist/application/azure-sync/reverse-field-builder.js +130 -0
  36. package/dist/application/azure-sync/reverse-field-builder.js.map +1 -0
  37. package/dist/application/azure-sync/task-push-use-cases.d.ts +68 -0
  38. package/dist/application/azure-sync/task-push-use-cases.d.ts.map +1 -0
  39. package/dist/application/azure-sync/task-push-use-cases.js +162 -0
  40. package/dist/application/azure-sync/task-push-use-cases.js.map +1 -0
  41. package/dist/application/config/config-service.d.ts +64 -0
  42. package/dist/application/config/config-service.d.ts.map +1 -0
  43. package/dist/application/config/config-service.js +110 -0
  44. package/dist/application/config/config-service.js.map +1 -0
  45. package/dist/application/config/index.d.ts +5 -0
  46. package/dist/application/config/index.d.ts.map +1 -0
  47. package/dist/application/config/index.js +5 -0
  48. package/dist/application/config/index.js.map +1 -0
  49. package/dist/application/kanban/board-use-cases.d.ts.map +1 -1
  50. package/dist/application/kanban/board-use-cases.js +14 -0
  51. package/dist/application/kanban/board-use-cases.js.map +1 -1
  52. package/dist/application/kanban/card-use-cases.d.ts +21 -2
  53. package/dist/application/kanban/card-use-cases.d.ts.map +1 -1
  54. package/dist/application/kanban/card-use-cases.js +180 -1
  55. package/dist/application/kanban/card-use-cases.js.map +1 -1
  56. package/dist/application/kanban/dtos.d.ts +59 -0
  57. package/dist/application/kanban/dtos.d.ts.map +1 -1
  58. package/dist/application/mcp/index.d.ts +10 -0
  59. package/dist/application/mcp/index.d.ts.map +1 -0
  60. package/dist/application/mcp/index.js +8 -0
  61. package/dist/application/mcp/index.js.map +1 -0
  62. package/dist/application/mcp/middleware.d.ts +91 -0
  63. package/dist/application/mcp/middleware.d.ts.map +1 -0
  64. package/dist/application/mcp/middleware.js +84 -0
  65. package/dist/application/mcp/middleware.js.map +1 -0
  66. package/dist/application/mcp/tool-adapter.d.ts +72 -0
  67. package/dist/application/mcp/tool-adapter.d.ts.map +1 -0
  68. package/dist/application/mcp/tool-adapter.js +132 -0
  69. package/dist/application/mcp/tool-adapter.js.map +1 -0
  70. package/dist/application/pipeline/dtos.d.ts +135 -0
  71. package/dist/application/pipeline/dtos.d.ts.map +1 -0
  72. package/dist/application/pipeline/dtos.js +11 -0
  73. package/dist/application/pipeline/dtos.js.map +1 -0
  74. package/dist/application/pipeline/index.d.ts +8 -0
  75. package/dist/application/pipeline/index.d.ts.map +1 -0
  76. package/dist/application/pipeline/index.js +7 -0
  77. package/dist/application/pipeline/index.js.map +1 -0
  78. package/dist/application/pipeline/use-cases.d.ts +67 -0
  79. package/dist/application/pipeline/use-cases.d.ts.map +1 -0
  80. package/dist/application/pipeline/use-cases.js +413 -0
  81. package/dist/application/pipeline/use-cases.js.map +1 -0
  82. package/dist/application/rag/use-cases.d.ts +3 -0
  83. package/dist/application/rag/use-cases.d.ts.map +1 -1
  84. package/dist/application/rag/use-cases.js +112 -34
  85. package/dist/application/rag/use-cases.js.map +1 -1
  86. package/dist/domain/agent-registry/entities.d.ts +68 -0
  87. package/dist/domain/agent-registry/entities.d.ts.map +1 -0
  88. package/dist/domain/agent-registry/entities.js +177 -0
  89. package/dist/domain/agent-registry/entities.js.map +1 -0
  90. package/dist/domain/agent-registry/repositories.d.ts +56 -0
  91. package/dist/domain/agent-registry/repositories.d.ts.map +1 -0
  92. package/dist/domain/agent-registry/repositories.js +12 -0
  93. package/dist/domain/agent-registry/repositories.js.map +1 -0
  94. package/dist/domain/agent-registry/services.d.ts +87 -0
  95. package/dist/domain/agent-registry/services.d.ts.map +1 -0
  96. package/dist/domain/agent-registry/services.js +188 -0
  97. package/dist/domain/agent-registry/services.js.map +1 -0
  98. package/dist/domain/agent-registry/value-objects.d.ts +145 -0
  99. package/dist/domain/agent-registry/value-objects.d.ts.map +1 -0
  100. package/dist/domain/agent-registry/value-objects.js +339 -0
  101. package/dist/domain/agent-registry/value-objects.js.map +1 -0
  102. package/dist/domain/azure-sync/entities.d.ts +165 -0
  103. package/dist/domain/azure-sync/entities.d.ts.map +1 -0
  104. package/dist/domain/azure-sync/entities.js +203 -0
  105. package/dist/domain/azure-sync/entities.js.map +1 -0
  106. package/dist/domain/azure-sync/index.d.ts +16 -0
  107. package/dist/domain/azure-sync/index.d.ts.map +1 -0
  108. package/dist/domain/azure-sync/index.js +14 -0
  109. package/dist/domain/azure-sync/index.js.map +1 -0
  110. package/dist/domain/azure-sync/ports.d.ts +117 -0
  111. package/dist/domain/azure-sync/ports.d.ts.map +1 -0
  112. package/dist/domain/azure-sync/ports.js +13 -0
  113. package/dist/domain/azure-sync/ports.js.map +1 -0
  114. package/dist/domain/azure-sync/repositories.d.ts +53 -0
  115. package/dist/domain/azure-sync/repositories.d.ts.map +1 -0
  116. package/dist/domain/azure-sync/repositories.js +11 -0
  117. package/dist/domain/azure-sync/repositories.js.map +1 -0
  118. package/dist/domain/azure-sync/services.d.ts +107 -0
  119. package/dist/domain/azure-sync/services.d.ts.map +1 -0
  120. package/dist/domain/azure-sync/services.js +316 -0
  121. package/dist/domain/azure-sync/services.js.map +1 -0
  122. package/dist/domain/azure-sync/value-objects.d.ts +129 -0
  123. package/dist/domain/azure-sync/value-objects.d.ts.map +1 -0
  124. package/dist/domain/azure-sync/value-objects.js +343 -0
  125. package/dist/domain/azure-sync/value-objects.js.map +1 -0
  126. package/dist/domain/config/index.d.ts +9 -0
  127. package/dist/domain/config/index.d.ts.map +1 -0
  128. package/dist/domain/config/index.js +7 -0
  129. package/dist/domain/config/index.js.map +1 -0
  130. package/dist/domain/config/repositories.d.ts +36 -0
  131. package/dist/domain/config/repositories.d.ts.map +1 -0
  132. package/dist/domain/config/repositories.js +12 -0
  133. package/dist/domain/config/repositories.js.map +1 -0
  134. package/dist/domain/config/value-objects.d.ts +112 -0
  135. package/dist/domain/config/value-objects.d.ts.map +1 -0
  136. package/dist/domain/config/value-objects.js +93 -0
  137. package/dist/domain/config/value-objects.js.map +1 -0
  138. package/dist/domain/governance/policies.d.ts.map +1 -1
  139. package/dist/domain/governance/policies.js +70 -0
  140. package/dist/domain/governance/policies.js.map +1 -1
  141. package/dist/domain/kanban/entities.d.ts +67 -15
  142. package/dist/domain/kanban/entities.d.ts.map +1 -1
  143. package/dist/domain/kanban/entities.js +177 -14
  144. package/dist/domain/kanban/entities.js.map +1 -1
  145. package/dist/domain/kanban/grooming.d.ts +27 -7
  146. package/dist/domain/kanban/grooming.d.ts.map +1 -1
  147. package/dist/domain/kanban/grooming.js +50 -12
  148. package/dist/domain/kanban/grooming.js.map +1 -1
  149. package/dist/domain/kanban/services.d.ts +16 -2
  150. package/dist/domain/kanban/services.d.ts.map +1 -1
  151. package/dist/domain/kanban/services.js +29 -2
  152. package/dist/domain/kanban/services.js.map +1 -1
  153. package/dist/domain/kanban/value-objects.d.ts +48 -0
  154. package/dist/domain/kanban/value-objects.d.ts.map +1 -1
  155. package/dist/domain/kanban/value-objects.js +53 -0
  156. package/dist/domain/kanban/value-objects.js.map +1 -1
  157. package/dist/domain/pipeline/gate.d.ts +75 -0
  158. package/dist/domain/pipeline/gate.d.ts.map +1 -0
  159. package/dist/domain/pipeline/gate.js +158 -0
  160. package/dist/domain/pipeline/gate.js.map +1 -0
  161. package/dist/domain/pipeline/index.d.ts +13 -0
  162. package/dist/domain/pipeline/index.d.ts.map +1 -0
  163. package/dist/domain/pipeline/index.js +14 -0
  164. package/dist/domain/pipeline/index.js.map +1 -0
  165. package/dist/domain/pipeline/pipeline.d.ts +99 -0
  166. package/dist/domain/pipeline/pipeline.d.ts.map +1 -0
  167. package/dist/domain/pipeline/pipeline.js +257 -0
  168. package/dist/domain/pipeline/pipeline.js.map +1 -0
  169. package/dist/domain/pipeline/ports.d.ts +120 -0
  170. package/dist/domain/pipeline/ports.d.ts.map +1 -0
  171. package/dist/domain/pipeline/ports.js +12 -0
  172. package/dist/domain/pipeline/ports.js.map +1 -0
  173. package/dist/domain/pipeline/repositories.d.ts +66 -0
  174. package/dist/domain/pipeline/repositories.d.ts.map +1 -0
  175. package/dist/domain/pipeline/repositories.js +11 -0
  176. package/dist/domain/pipeline/repositories.js.map +1 -0
  177. package/dist/domain/pipeline/services.d.ts +77 -0
  178. package/dist/domain/pipeline/services.d.ts.map +1 -0
  179. package/dist/domain/pipeline/services.js +156 -0
  180. package/dist/domain/pipeline/services.js.map +1 -0
  181. package/dist/domain/pipeline/value-objects.d.ts +117 -0
  182. package/dist/domain/pipeline/value-objects.d.ts.map +1 -0
  183. package/dist/domain/pipeline/value-objects.js +313 -0
  184. package/dist/domain/pipeline/value-objects.js.map +1 -0
  185. package/dist/domain/rag/value-objects.d.ts +9 -2
  186. package/dist/domain/rag/value-objects.d.ts.map +1 -1
  187. package/dist/domain/rag/value-objects.js +8 -2
  188. package/dist/domain/rag/value-objects.js.map +1 -1
  189. package/dist/hooks/event-handlers.d.ts +3 -0
  190. package/dist/hooks/event-handlers.d.ts.map +1 -1
  191. package/dist/hooks/event-handlers.js +4 -2
  192. package/dist/hooks/event-handlers.js.map +1 -1
  193. package/dist/hooks/logger.d.ts +46 -0
  194. package/dist/hooks/logger.d.ts.map +1 -0
  195. package/dist/hooks/logger.js +79 -0
  196. package/dist/hooks/logger.js.map +1 -0
  197. package/dist/index.d.ts.map +1 -1
  198. package/dist/index.js +152 -108
  199. package/dist/index.js.map +1 -1
  200. package/dist/infrastructure/agent-registry/agent-profile-repository.d.ts +29 -0
  201. package/dist/infrastructure/agent-registry/agent-profile-repository.d.ts.map +1 -0
  202. package/dist/infrastructure/agent-registry/agent-profile-repository.js +109 -0
  203. package/dist/infrastructure/agent-registry/agent-profile-repository.js.map +1 -0
  204. package/dist/infrastructure/agent-registry/agent-session-adapter.d.ts +28 -0
  205. package/dist/infrastructure/agent-registry/agent-session-adapter.d.ts.map +1 -0
  206. package/dist/infrastructure/agent-registry/agent-session-adapter.js +61 -0
  207. package/dist/infrastructure/agent-registry/agent-session-adapter.js.map +1 -0
  208. package/dist/infrastructure/agent-registry/built-in-profiles.d.ts +19 -0
  209. package/dist/infrastructure/agent-registry/built-in-profiles.d.ts.map +1 -0
  210. package/dist/infrastructure/agent-registry/built-in-profiles.js +210 -0
  211. package/dist/infrastructure/agent-registry/built-in-profiles.js.map +1 -0
  212. package/dist/infrastructure/azure-sync/azure-auth.d.ts +40 -0
  213. package/dist/infrastructure/azure-sync/azure-auth.d.ts.map +1 -0
  214. package/dist/infrastructure/azure-sync/azure-auth.js +94 -0
  215. package/dist/infrastructure/azure-sync/azure-auth.js.map +1 -0
  216. package/dist/infrastructure/azure-sync/azure-devops-client.d.ts +43 -0
  217. package/dist/infrastructure/azure-sync/azure-devops-client.d.ts.map +1 -0
  218. package/dist/infrastructure/azure-sync/azure-devops-client.js +296 -0
  219. package/dist/infrastructure/azure-sync/azure-devops-client.js.map +1 -0
  220. package/dist/infrastructure/azure-sync/index.d.ts +9 -0
  221. package/dist/infrastructure/azure-sync/index.d.ts.map +1 -0
  222. package/dist/infrastructure/azure-sync/index.js +12 -0
  223. package/dist/infrastructure/azure-sync/index.js.map +1 -0
  224. package/dist/infrastructure/azure-sync/sqlite-sync-repository.d.ts +39 -0
  225. package/dist/infrastructure/azure-sync/sqlite-sync-repository.d.ts.map +1 -0
  226. package/dist/infrastructure/azure-sync/sqlite-sync-repository.js +202 -0
  227. package/dist/infrastructure/azure-sync/sqlite-sync-repository.js.map +1 -0
  228. package/dist/infrastructure/config/index.d.ts +5 -0
  229. package/dist/infrastructure/config/index.d.ts.map +1 -0
  230. package/dist/infrastructure/config/index.js +5 -0
  231. package/dist/infrastructure/config/index.js.map +1 -0
  232. package/dist/infrastructure/config/yaml-config-repository.d.ts +22 -0
  233. package/dist/infrastructure/config/yaml-config-repository.d.ts.map +1 -0
  234. package/dist/infrastructure/config/yaml-config-repository.js +68 -0
  235. package/dist/infrastructure/config/yaml-config-repository.js.map +1 -0
  236. package/dist/infrastructure/domain-map/llm-prompt-factory.d.ts +21 -0
  237. package/dist/infrastructure/domain-map/llm-prompt-factory.d.ts.map +1 -0
  238. package/dist/infrastructure/domain-map/llm-prompt-factory.js +49 -0
  239. package/dist/infrastructure/domain-map/llm-prompt-factory.js.map +1 -0
  240. package/dist/infrastructure/kanban/card-repository.d.ts +6 -0
  241. package/dist/infrastructure/kanban/card-repository.d.ts.map +1 -1
  242. package/dist/infrastructure/kanban/card-repository.js +79 -7
  243. package/dist/infrastructure/kanban/card-repository.js.map +1 -1
  244. package/dist/infrastructure/pipeline/dagger-adapter.d.ts +50 -0
  245. package/dist/infrastructure/pipeline/dagger-adapter.d.ts.map +1 -0
  246. package/dist/infrastructure/pipeline/dagger-adapter.js +153 -0
  247. package/dist/infrastructure/pipeline/dagger-adapter.js.map +1 -0
  248. package/dist/infrastructure/pipeline/dagger-scaffold-generator.d.ts +35 -0
  249. package/dist/infrastructure/pipeline/dagger-scaffold-generator.d.ts.map +1 -0
  250. package/dist/infrastructure/pipeline/dagger-scaffold-generator.js +132 -0
  251. package/dist/infrastructure/pipeline/dagger-scaffold-generator.js.map +1 -0
  252. package/dist/infrastructure/pipeline/index.d.ts +20 -0
  253. package/dist/infrastructure/pipeline/index.d.ts.map +1 -0
  254. package/dist/infrastructure/pipeline/index.js +19 -0
  255. package/dist/infrastructure/pipeline/index.js.map +1 -0
  256. package/dist/infrastructure/pipeline/pipeline-template-registry.d.ts +23 -0
  257. package/dist/infrastructure/pipeline/pipeline-template-registry.d.ts.map +1 -0
  258. package/dist/infrastructure/pipeline/pipeline-template-registry.js +63 -0
  259. package/dist/infrastructure/pipeline/pipeline-template-registry.js.map +1 -0
  260. package/dist/infrastructure/pipeline/scaffold-templates-extra.d.ts +17 -0
  261. package/dist/infrastructure/pipeline/scaffold-templates-extra.d.ts.map +1 -0
  262. package/dist/infrastructure/pipeline/scaffold-templates-extra.js +467 -0
  263. package/dist/infrastructure/pipeline/scaffold-templates-extra.js.map +1 -0
  264. package/dist/infrastructure/pipeline/scaffold-templates.d.ts +23 -0
  265. package/dist/infrastructure/pipeline/scaffold-templates.d.ts.map +1 -0
  266. package/dist/infrastructure/pipeline/scaffold-templates.js +476 -0
  267. package/dist/infrastructure/pipeline/scaffold-templates.js.map +1 -0
  268. package/dist/infrastructure/pipeline/sqlite-pipeline-repository.d.ts +32 -0
  269. package/dist/infrastructure/pipeline/sqlite-pipeline-repository.d.ts.map +1 -0
  270. package/dist/infrastructure/pipeline/sqlite-pipeline-repository.js +197 -0
  271. package/dist/infrastructure/pipeline/sqlite-pipeline-repository.js.map +1 -0
  272. package/dist/mcp-server.d.ts +3 -0
  273. package/dist/mcp-server.d.ts.map +1 -0
  274. package/dist/mcp-server.js +300 -0
  275. package/dist/mcp-server.js.map +1 -0
  276. package/dist/tools/agent-registry-tools.d.ts +11 -0
  277. package/dist/tools/agent-registry-tools.d.ts.map +1 -0
  278. package/dist/tools/agent-registry-tools.js +208 -0
  279. package/dist/tools/agent-registry-tools.js.map +1 -0
  280. package/dist/tools/azure-sync-tools.d.ts +15 -0
  281. package/dist/tools/azure-sync-tools.d.ts.map +1 -0
  282. package/dist/tools/azure-sync-tools.js +332 -0
  283. package/dist/tools/azure-sync-tools.js.map +1 -0
  284. package/dist/tools/kanban-card-tools.d.ts.map +1 -1
  285. package/dist/tools/kanban-card-tools.js +41 -16
  286. package/dist/tools/kanban-card-tools.js.map +1 -1
  287. package/dist/tools/kanban-gate-tools.d.ts +7 -0
  288. package/dist/tools/kanban-gate-tools.d.ts.map +1 -0
  289. package/dist/tools/kanban-gate-tools.js +106 -0
  290. package/dist/tools/kanban-gate-tools.js.map +1 -0
  291. package/dist/tools/kanban-grooming-tools.d.ts +7 -0
  292. package/dist/tools/kanban-grooming-tools.d.ts.map +1 -0
  293. package/dist/tools/kanban-grooming-tools.js +180 -0
  294. package/dist/tools/kanban-grooming-tools.js.map +1 -0
  295. package/dist/tools/pipeline-tools.d.ts +15 -0
  296. package/dist/tools/pipeline-tools.d.ts.map +1 -0
  297. package/dist/tools/pipeline-tools.js +424 -0
  298. package/dist/tools/pipeline-tools.js.map +1 -0
  299. package/package.json +7 -2
@@ -1 +1 @@
1
- {"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../../src/domain/governance/policies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,0CAA0C;AAC1C,oBAAY,iBAAiB;IAC3B,qCAAqC;IACrC,KAAK,UAAU;IACf,+CAA+C;IAC/C,OAAO,YAAY;CACpB;AAED,4CAA4C;AAC5C,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;CACtC;AAED,iEAAiE;AACjE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED,qEAAqE;AACrE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,SAAS,GAAG,IAAI,CAAC;CACrE;AAuRD,wCAAwC;AACxC,eAAO,MAAM,gBAAgB,EAAE,SAAS,UAAU,EAcjD,CAAC"}
1
+ {"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../../src/domain/governance/policies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,0CAA0C;AAC1C,oBAAY,iBAAiB;IAC3B,qCAAqC;IACrC,KAAK,UAAU;IACf,+CAA+C;IAC/C,OAAO,YAAY;CACpB;AAED,4CAA4C;AAC5C,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;CACtC;AAED,iEAAiE;AACjE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED,qEAAqE;AACrE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,SAAS,GAAG,IAAI,CAAC;CACrE;AA+VD,wCAAwC;AACxC,eAAO,MAAM,gBAAgB,EAAE,SAAS,UAAU,EAmBjD,CAAC"}
@@ -284,6 +284,71 @@ const blockShellSensitiveFileRead = {
284
284
  return null;
285
285
  },
286
286
  };
287
+ // ── Pipeline Governance ───────────────────────────────────────────────
288
+ /** Warn when pipeline-init is called without a card_id argument. */
289
+ const warnPipelineNoCard = {
290
+ id: "pipeline.warn-no-card",
291
+ description: "Warns when creating a pipeline without linking it to a kanban card. " +
292
+ "Pipelines should be linked to cards for traceability.",
293
+ evaluate(ctx) {
294
+ if (ctx.toolName !== "pipeline-init")
295
+ return null;
296
+ const cardId = ctx.args["card_id"];
297
+ if (cardId === undefined || cardId === null || cardId === "") {
298
+ return {
299
+ rule: "pipeline.warn-no-card",
300
+ message: "Pipeline created without a linked card. Consider providing " +
301
+ "card_id for traceability and governance enforcement.",
302
+ severity: ViolationSeverity.Warning,
303
+ };
304
+ }
305
+ return null;
306
+ },
307
+ };
308
+ // ── Kanban Governance ─────────────────────────────────────────────────
309
+ /**
310
+ * Block card transitions when required gate tasks are not met.
311
+ * Evaluates on kanban-card-move tool invocations.
312
+ * Note: actual gate enforcement is in CardDomainService — this policy
313
+ * provides an additional layer of visibility at the governance level.
314
+ */
315
+ const requireGatesBeforeMove = {
316
+ id: "kanban.require-gates-before-move",
317
+ description: "Warn when moving a card — gate tasks should be verified before transitions. " +
318
+ "Actual enforcement is in the domain service.",
319
+ evaluate(ctx) {
320
+ if (ctx.toolName !== "kanban-card-move")
321
+ return null;
322
+ const status = ctx.args["status"];
323
+ // Warn on all forward moves to gated destinations
324
+ if (status === "review" || status === "tested" || status === "done") {
325
+ return {
326
+ rule: "kanban.require-gates-before-move",
327
+ message: `Moving card to "${String(status)}". Ensure all required gate tasks ` +
328
+ `are met. Use kanban-card-gate to verify before moving.`,
329
+ severity: ViolationSeverity.Warning,
330
+ };
331
+ }
332
+ return null;
333
+ },
334
+ };
335
+ /**
336
+ * Warn on rapid successive card transitions.
337
+ * Actual interval enforcement is in CardDomainService,
338
+ * but this governance policy surfaces it as an advisory.
339
+ */
340
+ const warnRapidTransitions = {
341
+ id: "kanban.warn-rapid-transitions",
342
+ description: "Warn when moving cards — rapid successive transitions may indicate " +
343
+ "rubber-stamping. Domain service enforces minimum interval.",
344
+ evaluate(ctx) {
345
+ if (ctx.toolName !== "kanban-card-move")
346
+ return null;
347
+ // This is advisory only — the domain service has the actual timestamp data
348
+ // and will reject transitions that are too fast.
349
+ return null;
350
+ },
351
+ };
287
352
  // ── Default Policy Set ────────────────────────────────────────────────
288
353
  /** All built-in governance policies. */
289
354
  export const DEFAULT_POLICIES = [
@@ -300,5 +365,10 @@ export const DEFAULT_POLICIES = [
300
365
  blockShellEnvFileRead,
301
366
  blockSensitiveFileRead,
302
367
  blockShellSensitiveFileRead,
368
+ // Pipeline governance
369
+ warnPipelineNoCard,
370
+ // Kanban governance
371
+ requireGatesBeforeMove,
372
+ warnRapidTransitions,
303
373
  ];
304
374
  //# sourceMappingURL=policies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"policies.js","sourceRoot":"","sources":["../../../src/domain/governance/policies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policies.js","sourceRoot":"","sources":["../../../src/domain/governance/policies.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,18 @@
1
1
  /**
2
2
  * Card Entity - Kanban Aggregate Root
3
3
  *
4
- * The primary work unit in the kanban system. Tracks a single executable
5
- * task through the pipeline: backlog -> grooming -> ready -> doing ->
6
- * review -> tested -> done.
7
- *
8
- * Includes: state machine enforcement, review iteration tracking,
9
- * blocking/unblocking with previous status restoration.
4
+ * Primary work unit: backlog -> grooming -> ready -> doing ->
5
+ * review -> tested -> done. State machine enforcement, review
6
+ * iteration tracking, gate tasks, blocking/unblocking.
10
7
  *
11
8
  * DDD: Aggregate Root with state machine invariants
12
9
  * SOLID: SRP - card lifecycle management only
13
10
  */
14
11
  import { WorkspaceId, Timestamp } from "../shared/value-objects.js";
15
- import { CardId, CardStatus, CARD_TRANSITIONS, Priority, EpicId, SprintId } from "./value-objects.js";
16
- import type { StoryPoints } from "./value-objects.js";
17
- export { CardId, CardStatus, Priority, EpicId, SprintId, WorkspaceId, CARD_TRANSITIONS, };
12
+ import { CardId, CardStatus, CARD_TRANSITIONS, Priority, EpicId, SprintId, ScopeDocPath, GATED_PHASES } from "./value-objects.js";
13
+ import type { StoryPoints, GateTask, GateTaskDefinition } from "./value-objects.js";
14
+ export { CardId, CardStatus, Priority, EpicId, SprintId, ScopeDocPath, WorkspaceId, CARD_TRANSITIONS, GATED_PHASES, };
15
+ export type { GateTask, GateTaskDefinition };
18
16
  export interface AcceptanceCriterion {
19
17
  readonly description: string;
20
18
  readonly met: boolean;
@@ -31,12 +29,18 @@ export interface CardProps {
31
29
  readonly storyPoints?: StoryPoints;
32
30
  readonly assignedAgent?: string;
33
31
  readonly acceptanceCriteria: readonly AcceptanceCriterion[];
32
+ readonly dependsOn: readonly CardId[];
33
+ readonly blockedBy: readonly CardId[];
34
+ readonly scopeDocPath?: ScopeDocPath;
34
35
  readonly reviewIterations: number;
35
36
  readonly previousStatus?: CardStatus;
36
37
  readonly groomingCompleted: boolean;
37
38
  readonly createdAt: Timestamp;
38
39
  readonly startedAt?: Timestamp;
39
40
  readonly completedAt?: Timestamp;
41
+ readonly pipelineId?: string;
42
+ readonly gateTasks: readonly GateTask[];
43
+ readonly lastTransitionAt?: Timestamp;
40
44
  }
41
45
  export declare class Card {
42
46
  readonly id: CardId;
@@ -51,11 +55,17 @@ export declare class Card {
51
55
  private _storyPoints;
52
56
  private _assignedAgent;
53
57
  private _acceptanceCriteria;
58
+ private _dependsOn;
59
+ private _blockedBy;
60
+ private _scopeDocPath;
54
61
  private _reviewIterations;
55
62
  private _previousStatus;
56
63
  private _groomingCompleted;
57
64
  private _startedAt;
58
65
  private _completedAt;
66
+ private _pipelineId;
67
+ private _gateTasks;
68
+ private _lastTransitionAt;
59
69
  private constructor();
60
70
  get status(): CardStatus;
61
71
  get priority(): Priority;
@@ -65,11 +75,22 @@ export declare class Card {
65
75
  get storyPoints(): StoryPoints | undefined;
66
76
  get assignedAgent(): string | undefined;
67
77
  get acceptanceCriteria(): readonly AcceptanceCriterion[];
78
+ get dependsOn(): readonly CardId[];
79
+ get blockedBy(): readonly CardId[];
80
+ get scopeDocPath(): ScopeDocPath | undefined;
68
81
  get reviewIterations(): number;
69
82
  get previousStatus(): CardStatus | undefined;
70
83
  get groomingCompleted(): boolean;
71
84
  get startedAt(): Timestamp | undefined;
72
85
  get completedAt(): Timestamp | undefined;
86
+ /** Optional linked pipeline identifier. */
87
+ get pipelineId(): string | undefined;
88
+ /** Current gate tasks for the card's active phase. */
89
+ get gateTasks(): readonly GateTask[];
90
+ /** Timestamp of the last status transition (for cooldown enforcement). */
91
+ get lastTransitionAt(): Timestamp | undefined;
92
+ /** Link this card to a pipeline run. */
93
+ linkPipeline(pipelineId: string): void;
73
94
  /** Create a new card in Backlog status. */
74
95
  static create(params: {
75
96
  id: CardId;
@@ -81,21 +102,52 @@ export declare class Card {
81
102
  }): Card;
82
103
  /** Reconstitute from persistence. */
83
104
  static reconstitute(props: CardProps): Card;
84
- /**
85
- * Move card to a new status.
86
- * Enforces the state machine transition rules.
87
- * Special handling for blocked (saves previous status) and
88
- * review (tracks iteration count).
89
- */
105
+ /** Move card to a new status. Enforces state machine, review iterations, blocking. */
90
106
  moveTo(newStatus: CardStatus): void;
91
107
  /** Mark grooming as completed. Must be in Grooming status. */
92
108
  completeGrooming(): void;
109
+ /**
110
+ * Initialize gate tasks from definitions for the current phase.
111
+ * Called when a card enters a gated phase (doing, review, tested).
112
+ * Replaces any existing gate tasks.
113
+ */
114
+ initGateTasks(definitions: readonly GateTaskDefinition[]): void;
115
+ /**
116
+ * Mark a gate task as met with evidence.
117
+ * @param index 0-based index into the gateTasks array
118
+ * @param evidence Description of evidence (commit hash, test output, etc.)
119
+ */
120
+ meetGateTask(index: number, evidence: string): void;
121
+ /**
122
+ * Auto-verify gate tasks that support automatic checking.
123
+ * Currently supports "ac-met" — checks if all acceptance criteria are met.
124
+ */
125
+ autoVerifyGates(): void;
126
+ /**
127
+ * Check if all required gate tasks for the current phase are met.
128
+ * Returns true if there are no gate tasks or all required ones are met.
129
+ */
130
+ allRequiredGatesMet(): boolean;
131
+ /**
132
+ * Get list of unmet required gate tasks (for error messaging).
133
+ */
134
+ unmetRequiredGates(): readonly GateTask[];
93
135
  setDescription(description: string): void;
94
136
  assignToEpic(epicId: EpicId): void;
95
137
  assignToSprint(sprintId: SprintId): void;
96
138
  setStoryPoints(points: StoryPoints): void;
97
139
  assignAgent(agent: string): void;
98
140
  setPriority(priority: Priority): void;
141
+ /** Link this card's scope document in the vault. */
142
+ setScopeDocPath(path: ScopeDocPath): void;
143
+ /** Add a dependency: this card depends on the given card. */
144
+ addDependsOn(cardId: CardId): void;
145
+ /** Remove a dependency. */
146
+ removeDependsOn(cardId: CardId): void;
147
+ /** Mark this card as blocked by another card. */
148
+ addBlockedBy(cardId: CardId): void;
149
+ /** Remove a blocker. */
150
+ removeBlockedBy(cardId: CardId): void;
99
151
  addAcceptanceCriterion(description: string): void;
100
152
  meetAcceptanceCriterion(index: number): void;
101
153
  get isTerminal(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/domain/kanban/entities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../../src/domain/kanban/entities.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,17 @@
1
1
  /**
2
2
  * Card Entity - Kanban Aggregate Root
3
3
  *
4
- * The primary work unit in the kanban system. Tracks a single executable
5
- * task through the pipeline: backlog -> grooming -> ready -> doing ->
6
- * review -> tested -> done.
7
- *
8
- * Includes: state machine enforcement, review iteration tracking,
9
- * blocking/unblocking with previous status restoration.
4
+ * Primary work unit: backlog -> grooming -> ready -> doing ->
5
+ * review -> tested -> done. State machine enforcement, review
6
+ * iteration tracking, gate tasks, blocking/unblocking.
10
7
  *
11
8
  * DDD: Aggregate Root with state machine invariants
12
9
  * SOLID: SRP - card lifecycle management only
13
10
  */
14
11
  import { WorkspaceId, Timestamp } from "../shared/value-objects.js";
15
- import { CardId, CardStatus, CARD_TRANSITIONS, MAX_REVIEW_ITERATIONS, Priority, EpicId, SprintId, } from "./value-objects.js";
12
+ import { CardId, CardStatus, CARD_TRANSITIONS, MAX_REVIEW_ITERATIONS, Priority, EpicId, SprintId, ScopeDocPath, GATED_PHASES, } from "./value-objects.js";
16
13
  // Re-export for convenience (consumers import from entities)
17
- export { CardId, CardStatus, Priority, EpicId, SprintId, WorkspaceId, CARD_TRANSITIONS, };
14
+ export { CardId, CardStatus, Priority, EpicId, SprintId, ScopeDocPath, WorkspaceId, CARD_TRANSITIONS, GATED_PHASES, };
18
15
  export class Card {
19
16
  id;
20
17
  workspace;
@@ -28,11 +25,17 @@ export class Card {
28
25
  _storyPoints;
29
26
  _assignedAgent;
30
27
  _acceptanceCriteria;
28
+ _dependsOn;
29
+ _blockedBy;
30
+ _scopeDocPath;
31
31
  _reviewIterations;
32
32
  _previousStatus;
33
33
  _groomingCompleted;
34
34
  _startedAt;
35
35
  _completedAt;
36
+ _pipelineId;
37
+ _gateTasks;
38
+ _lastTransitionAt;
36
39
  constructor(props) {
37
40
  this.id = props.id;
38
41
  this.workspace = props.workspace;
@@ -45,12 +48,18 @@ export class Card {
45
48
  this._storyPoints = props.storyPoints;
46
49
  this._assignedAgent = props.assignedAgent;
47
50
  this._acceptanceCriteria = [...props.acceptanceCriteria];
51
+ this._dependsOn = [...props.dependsOn];
52
+ this._blockedBy = [...props.blockedBy];
53
+ this._scopeDocPath = props.scopeDocPath;
48
54
  this._reviewIterations = props.reviewIterations;
49
55
  this._previousStatus = props.previousStatus;
50
56
  this._groomingCompleted = props.groomingCompleted;
51
57
  this.createdAt = props.createdAt;
52
58
  this._startedAt = props.startedAt;
53
59
  this._completedAt = props.completedAt;
60
+ this._pipelineId = props.pipelineId;
61
+ this._gateTasks = [...props.gateTasks];
62
+ this._lastTransitionAt = props.lastTransitionAt;
54
63
  }
55
64
  // ── Getters ─────────────────────────────────────────────────────
56
65
  get status() {
@@ -77,6 +86,15 @@ export class Card {
77
86
  get acceptanceCriteria() {
78
87
  return this._acceptanceCriteria;
79
88
  }
89
+ get dependsOn() {
90
+ return this._dependsOn;
91
+ }
92
+ get blockedBy() {
93
+ return this._blockedBy;
94
+ }
95
+ get scopeDocPath() {
96
+ return this._scopeDocPath;
97
+ }
80
98
  get reviewIterations() {
81
99
  return this._reviewIterations;
82
100
  }
@@ -92,6 +110,22 @@ export class Card {
92
110
  get completedAt() {
93
111
  return this._completedAt;
94
112
  }
113
+ /** Optional linked pipeline identifier. */
114
+ get pipelineId() {
115
+ return this._pipelineId;
116
+ }
117
+ /** Current gate tasks for the card's active phase. */
118
+ get gateTasks() {
119
+ return this._gateTasks;
120
+ }
121
+ /** Timestamp of the last status transition (for cooldown enforcement). */
122
+ get lastTransitionAt() {
123
+ return this._lastTransitionAt;
124
+ }
125
+ /** Link this card to a pipeline run. */
126
+ linkPipeline(pipelineId) {
127
+ this._pipelineId = pipelineId;
128
+ }
95
129
  // ── Factory Methods ─────────────────────────────────────────────
96
130
  /** Create a new card in Backlog status. */
97
131
  static create(params) {
@@ -110,6 +144,9 @@ export class Card {
110
144
  : {}),
111
145
  ...(params.epicId !== undefined ? { epicId: params.epicId } : {}),
112
146
  acceptanceCriteria: [],
147
+ dependsOn: [],
148
+ blockedBy: [],
149
+ gateTasks: [],
113
150
  reviewIterations: 0,
114
151
  groomingCompleted: false,
115
152
  createdAt: Timestamp.now(),
@@ -120,12 +157,7 @@ export class Card {
120
157
  return new Card(props);
121
158
  }
122
159
  // ── State Transitions ───────────────────────────────────────────
123
- /**
124
- * Move card to a new status.
125
- * Enforces the state machine transition rules.
126
- * Special handling for blocked (saves previous status) and
127
- * review (tracks iteration count).
128
- */
160
+ /** Move card to a new status. Enforces state machine, review iterations, blocking. */
129
161
  moveTo(newStatus) {
130
162
  const allowed = CARD_TRANSITIONS[this._status];
131
163
  if (!allowed.includes(newStatus)) {
@@ -142,6 +174,10 @@ export class Card {
142
174
  if (newStatus === CardStatus.Blocked) {
143
175
  this._previousStatus = this._status;
144
176
  }
177
+ // Reset grooming when card returns to backlog (needs re-grooming)
178
+ if (newStatus === CardStatus.Backlog) {
179
+ this._groomingCompleted = false;
180
+ }
145
181
  // Track lifecycle timestamps
146
182
  if (newStatus === CardStatus.Doing && this._startedAt === undefined) {
147
183
  this._startedAt = Timestamp.now();
@@ -150,6 +186,7 @@ export class Card {
150
186
  this._completedAt = Timestamp.now();
151
187
  }
152
188
  this._status = newStatus;
189
+ this._lastTransitionAt = Timestamp.now();
153
190
  }
154
191
  /** Mark grooming as completed. Must be in Grooming status. */
155
192
  completeGrooming() {
@@ -158,6 +195,83 @@ export class Card {
158
195
  }
159
196
  this._groomingCompleted = true;
160
197
  }
198
+ // ── Gate Task Operations ─────────────────────────────────────────
199
+ /**
200
+ * Initialize gate tasks from definitions for the current phase.
201
+ * Called when a card enters a gated phase (doing, review, tested).
202
+ * Replaces any existing gate tasks.
203
+ */
204
+ initGateTasks(definitions) {
205
+ this._gateTasks = definitions.map((def) => ({
206
+ description: def.description,
207
+ phase: this._status,
208
+ required: def.required,
209
+ autoVerify: def.autoVerify,
210
+ met: false,
211
+ evidence: undefined,
212
+ metAt: undefined,
213
+ }));
214
+ }
215
+ /**
216
+ * Mark a gate task as met with evidence.
217
+ * @param index 0-based index into the gateTasks array
218
+ * @param evidence Description of evidence (commit hash, test output, etc.)
219
+ */
220
+ meetGateTask(index, evidence) {
221
+ const gate = this._gateTasks[index];
222
+ if (gate === undefined) {
223
+ throw new Error(`Card: gate task at index ${index} not found`);
224
+ }
225
+ if (gate.met) {
226
+ throw new Error(`Card: gate task at index ${index} is already met`);
227
+ }
228
+ const trimmed = evidence.trim();
229
+ if (trimmed.length === 0) {
230
+ throw new Error("Card: gate task evidence cannot be empty");
231
+ }
232
+ this._gateTasks[index] = {
233
+ ...gate,
234
+ met: true,
235
+ evidence: trimmed,
236
+ metAt: new Date().toISOString(),
237
+ };
238
+ }
239
+ /**
240
+ * Auto-verify gate tasks that support automatic checking.
241
+ * Currently supports "ac-met" — checks if all acceptance criteria are met.
242
+ */
243
+ autoVerifyGates() {
244
+ const allAcMet = this._acceptanceCriteria.length > 0 &&
245
+ this._acceptanceCriteria.every((ac) => ac.met);
246
+ for (let i = 0; i < this._gateTasks.length; i++) {
247
+ const gate = this._gateTasks[i];
248
+ if (gate === undefined || gate.met)
249
+ continue;
250
+ if (gate.autoVerify === "ac-met" && allAcMet) {
251
+ this._gateTasks[i] = {
252
+ ...gate,
253
+ met: true,
254
+ evidence: "Auto-verified: all acceptance criteria met",
255
+ metAt: new Date().toISOString(),
256
+ };
257
+ }
258
+ }
259
+ }
260
+ /**
261
+ * Check if all required gate tasks for the current phase are met.
262
+ * Returns true if there are no gate tasks or all required ones are met.
263
+ */
264
+ allRequiredGatesMet() {
265
+ return this._gateTasks
266
+ .filter((g) => g.required)
267
+ .every((g) => g.met);
268
+ }
269
+ /**
270
+ * Get list of unmet required gate tasks (for error messaging).
271
+ */
272
+ unmetRequiredGates() {
273
+ return this._gateTasks.filter((g) => g.required && !g.met);
274
+ }
161
275
  // ── Mutators ────────────────────────────────────────────────────
162
276
  setDescription(description) {
163
277
  this._description = description.trim();
@@ -181,6 +295,46 @@ export class Card {
181
295
  setPriority(priority) {
182
296
  this._priority = priority;
183
297
  }
298
+ /** Link this card's scope document in the vault. */
299
+ setScopeDocPath(path) {
300
+ this._scopeDocPath = path;
301
+ }
302
+ /** Add a dependency: this card depends on the given card. */
303
+ addDependsOn(cardId) {
304
+ if (cardId.equals(this.id)) {
305
+ throw new Error("Card: cannot depend on itself");
306
+ }
307
+ if (this._dependsOn.some((id) => id.equals(cardId))) {
308
+ throw new Error(`Card: already depends on ${cardId.value}`);
309
+ }
310
+ this._dependsOn.push(cardId);
311
+ }
312
+ /** Remove a dependency. */
313
+ removeDependsOn(cardId) {
314
+ const index = this._dependsOn.findIndex((id) => id.equals(cardId));
315
+ if (index === -1) {
316
+ throw new Error(`Card: dependency on ${cardId.value} not found`);
317
+ }
318
+ this._dependsOn.splice(index, 1);
319
+ }
320
+ /** Mark this card as blocked by another card. */
321
+ addBlockedBy(cardId) {
322
+ if (cardId.equals(this.id)) {
323
+ throw new Error("Card: cannot be blocked by itself");
324
+ }
325
+ if (this._blockedBy.some((id) => id.equals(cardId))) {
326
+ throw new Error(`Card: already blocked by ${cardId.value}`);
327
+ }
328
+ this._blockedBy.push(cardId);
329
+ }
330
+ /** Remove a blocker. */
331
+ removeBlockedBy(cardId) {
332
+ const index = this._blockedBy.findIndex((id) => id.equals(cardId));
333
+ if (index === -1) {
334
+ throw new Error(`Card: blocker ${cardId.value} not found`);
335
+ }
336
+ this._blockedBy.splice(index, 1);
337
+ }
184
338
  addAcceptanceCriterion(description) {
185
339
  const trimmed = description.trim();
186
340
  if (trimmed.length === 0) {
@@ -189,6 +343,15 @@ export class Card {
189
343
  this._acceptanceCriteria.push({ description: trimmed, met: false });
190
344
  }
191
345
  meetAcceptanceCriterion(index) {
346
+ const allowedStatuses = [
347
+ CardStatus.Doing,
348
+ CardStatus.Review,
349
+ CardStatus.Tested,
350
+ ];
351
+ if (!allowedStatuses.includes(this._status)) {
352
+ throw new Error(`Card: acceptance criteria can only be met in doing/review/tested status, ` +
353
+ `current: "${this._status}"`);
354
+ }
192
355
  const criterion = this._acceptanceCriteria[index];
193
356
  if (criterion === undefined) {
194
357
  throw new Error(`Card: acceptance criterion at index ${index} not found`);
@@ -1 +1 @@
1
- {"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../src/domain/kanban/entities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../src/domain/kanban/entities.ts"],"names":[],"mappings":"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"}