@lwelliott/cortex-cli 1.0.3

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 (335) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +159 -0
  3. package/dist/cli/audit.d.ts +3 -0
  4. package/dist/cli/audit.d.ts.map +1 -0
  5. package/dist/cli/audit.js +78 -0
  6. package/dist/cli/audit.js.map +1 -0
  7. package/dist/cli/doc.d.ts +3 -0
  8. package/dist/cli/doc.d.ts.map +1 -0
  9. package/dist/cli/doc.js +291 -0
  10. package/dist/cli/doc.js.map +1 -0
  11. package/dist/cli/entity.d.ts +3 -0
  12. package/dist/cli/entity.d.ts.map +1 -0
  13. package/dist/cli/entity.js +135 -0
  14. package/dist/cli/entity.js.map +1 -0
  15. package/dist/cli/format-selector.d.ts +30 -0
  16. package/dist/cli/format-selector.d.ts.map +1 -0
  17. package/dist/cli/format-selector.js +101 -0
  18. package/dist/cli/format-selector.js.map +1 -0
  19. package/dist/cli/formatters/audit-formatter.d.ts +33 -0
  20. package/dist/cli/formatters/audit-formatter.d.ts.map +1 -0
  21. package/dist/cli/formatters/audit-formatter.js +204 -0
  22. package/dist/cli/formatters/audit-formatter.js.map +1 -0
  23. package/dist/cli/formatters/json.d.ts +10 -0
  24. package/dist/cli/formatters/json.d.ts.map +1 -0
  25. package/dist/cli/formatters/json.js +31 -0
  26. package/dist/cli/formatters/json.js.map +1 -0
  27. package/dist/cli/formatters/markdown.d.ts +12 -0
  28. package/dist/cli/formatters/markdown.d.ts.map +1 -0
  29. package/dist/cli/formatters/markdown.js +341 -0
  30. package/dist/cli/formatters/markdown.js.map +1 -0
  31. package/dist/cli/formatters/quiet.d.ts +15 -0
  32. package/dist/cli/formatters/quiet.d.ts.map +1 -0
  33. package/dist/cli/formatters/quiet.js +75 -0
  34. package/dist/cli/formatters/quiet.js.map +1 -0
  35. package/dist/cli/formatters/table.d.ts +11 -0
  36. package/dist/cli/formatters/table.d.ts.map +1 -0
  37. package/dist/cli/formatters/table.js +726 -0
  38. package/dist/cli/formatters/table.js.map +1 -0
  39. package/dist/cli/graph.d.ts +3 -0
  40. package/dist/cli/graph.d.ts.map +1 -0
  41. package/dist/cli/graph.js +209 -0
  42. package/dist/cli/graph.js.map +1 -0
  43. package/dist/cli/index.d.ts +3 -0
  44. package/dist/cli/index.d.ts.map +1 -0
  45. package/dist/cli/index.js +144 -0
  46. package/dist/cli/index.js.map +1 -0
  47. package/dist/cli/lesson.d.ts +3 -0
  48. package/dist/cli/lesson.d.ts.map +1 -0
  49. package/dist/cli/lesson.js +85 -0
  50. package/dist/cli/lesson.js.map +1 -0
  51. package/dist/cli/project-resolver.d.ts +17 -0
  52. package/dist/cli/project-resolver.d.ts.map +1 -0
  53. package/dist/cli/project-resolver.js +25 -0
  54. package/dist/cli/project-resolver.js.map +1 -0
  55. package/dist/cli/project.d.ts +12 -0
  56. package/dist/cli/project.d.ts.map +1 -0
  57. package/dist/cli/project.js +169 -0
  58. package/dist/cli/project.js.map +1 -0
  59. package/dist/cli/relation.d.ts +3 -0
  60. package/dist/cli/relation.d.ts.map +1 -0
  61. package/dist/cli/relation.js +128 -0
  62. package/dist/cli/relation.js.map +1 -0
  63. package/dist/cli/review.d.ts +3 -0
  64. package/dist/cli/review.d.ts.map +1 -0
  65. package/dist/cli/review.js +131 -0
  66. package/dist/cli/review.js.map +1 -0
  67. package/dist/cli/router.d.ts +38 -0
  68. package/dist/cli/router.d.ts.map +1 -0
  69. package/dist/cli/router.js +49 -0
  70. package/dist/cli/router.js.map +1 -0
  71. package/dist/cli/schema.d.ts +3 -0
  72. package/dist/cli/schema.d.ts.map +1 -0
  73. package/dist/cli/schema.js +94 -0
  74. package/dist/cli/schema.js.map +1 -0
  75. package/dist/cli/sprint.d.ts +12 -0
  76. package/dist/cli/sprint.d.ts.map +1 -0
  77. package/dist/cli/sprint.js +200 -0
  78. package/dist/cli/sprint.js.map +1 -0
  79. package/dist/cli/task.d.ts +12 -0
  80. package/dist/cli/task.d.ts.map +1 -0
  81. package/dist/cli/task.js +252 -0
  82. package/dist/cli/task.js.map +1 -0
  83. package/dist/cli/test-report.d.ts +3 -0
  84. package/dist/cli/test-report.d.ts.map +1 -0
  85. package/dist/cli/test-report.js +134 -0
  86. package/dist/cli/test-report.js.map +1 -0
  87. package/dist/cli/validate.d.ts +8 -0
  88. package/dist/cli/validate.d.ts.map +1 -0
  89. package/dist/cli/validate.js +86 -0
  90. package/dist/cli/validate.js.map +1 -0
  91. package/dist/config/config.d.ts +18 -0
  92. package/dist/config/config.d.ts.map +1 -0
  93. package/dist/config/config.js +70 -0
  94. package/dist/config/config.js.map +1 -0
  95. package/dist/config/registry.d.ts +52 -0
  96. package/dist/config/registry.d.ts.map +1 -0
  97. package/dist/config/registry.js +193 -0
  98. package/dist/config/registry.js.map +1 -0
  99. package/dist/config/resolver.d.ts +26 -0
  100. package/dist/config/resolver.d.ts.map +1 -0
  101. package/dist/config/resolver.js +87 -0
  102. package/dist/config/resolver.js.map +1 -0
  103. package/dist/db/builtin-schema-constants.d.ts +109 -0
  104. package/dist/db/builtin-schema-constants.d.ts.map +1 -0
  105. package/dist/db/builtin-schema-constants.js +32 -0
  106. package/dist/db/builtin-schema-constants.js.map +1 -0
  107. package/dist/db/connection.d.ts +34 -0
  108. package/dist/db/connection.d.ts.map +1 -0
  109. package/dist/db/connection.js +140 -0
  110. package/dist/db/connection.js.map +1 -0
  111. package/dist/db/generated/schema-types.d.ts +134 -0
  112. package/dist/db/generated/schema-types.d.ts.map +1 -0
  113. package/dist/db/generated/schema-types.js +31 -0
  114. package/dist/db/generated/schema-types.js.map +1 -0
  115. package/dist/db/locks.d.ts +106 -0
  116. package/dist/db/locks.d.ts.map +1 -0
  117. package/dist/db/locks.js +211 -0
  118. package/dist/db/locks.js.map +1 -0
  119. package/dist/db/migration.d.ts +65 -0
  120. package/dist/db/migration.d.ts.map +1 -0
  121. package/dist/db/migration.js +233 -0
  122. package/dist/db/migration.js.map +1 -0
  123. package/dist/db/retry.d.ts +26 -0
  124. package/dist/db/retry.d.ts.map +1 -0
  125. package/dist/db/retry.js +71 -0
  126. package/dist/db/retry.js.map +1 -0
  127. package/dist/db/schema.d.ts +21 -0
  128. package/dist/db/schema.d.ts.map +1 -0
  129. package/dist/db/schema.js +830 -0
  130. package/dist/db/schema.js.map +1 -0
  131. package/dist/models/common.d.ts +27 -0
  132. package/dist/models/common.d.ts.map +1 -0
  133. package/dist/models/common.js +4 -0
  134. package/dist/models/common.js.map +1 -0
  135. package/dist/models/document.d.ts +89 -0
  136. package/dist/models/document.d.ts.map +1 -0
  137. package/dist/models/document.js +5 -0
  138. package/dist/models/document.js.map +1 -0
  139. package/dist/models/entity-model.d.ts +30 -0
  140. package/dist/models/entity-model.d.ts.map +1 -0
  141. package/dist/models/entity-model.js +99 -0
  142. package/dist/models/entity-model.js.map +1 -0
  143. package/dist/models/entity.d.ts +88 -0
  144. package/dist/models/entity.d.ts.map +1 -0
  145. package/dist/models/entity.js +5 -0
  146. package/dist/models/entity.js.map +1 -0
  147. package/dist/models/graph-schema.d.ts +43 -0
  148. package/dist/models/graph-schema.d.ts.map +1 -0
  149. package/dist/models/graph-schema.js +76 -0
  150. package/dist/models/graph-schema.js.map +1 -0
  151. package/dist/models/project.d.ts +49 -0
  152. package/dist/models/project.d.ts.map +1 -0
  153. package/dist/models/project.js +18 -0
  154. package/dist/models/project.js.map +1 -0
  155. package/dist/models/relation.d.ts +35 -0
  156. package/dist/models/relation.d.ts.map +1 -0
  157. package/dist/models/relation.js +212 -0
  158. package/dist/models/relation.js.map +1 -0
  159. package/dist/models/review.d.ts +86 -0
  160. package/dist/models/review.d.ts.map +1 -0
  161. package/dist/models/review.js +5 -0
  162. package/dist/models/review.js.map +1 -0
  163. package/dist/models/sprint.d.ts +38 -0
  164. package/dist/models/sprint.d.ts.map +1 -0
  165. package/dist/models/sprint.js +4 -0
  166. package/dist/models/sprint.js.map +1 -0
  167. package/dist/models/task.d.ts +75 -0
  168. package/dist/models/task.d.ts.map +1 -0
  169. package/dist/models/task.js +4 -0
  170. package/dist/models/task.js.map +1 -0
  171. package/dist/models/validation.d.ts +25 -0
  172. package/dist/models/validation.d.ts.map +1 -0
  173. package/dist/models/validation.js +4 -0
  174. package/dist/models/validation.js.map +1 -0
  175. package/dist/services/audit-check-service.d.ts +16 -0
  176. package/dist/services/audit-check-service.d.ts.map +1 -0
  177. package/dist/services/audit-check-service.js +137 -0
  178. package/dist/services/audit-check-service.js.map +1 -0
  179. package/dist/services/audit-checks/dangling-relations-check.d.ts +7 -0
  180. package/dist/services/audit-checks/dangling-relations-check.d.ts.map +1 -0
  181. package/dist/services/audit-checks/dangling-relations-check.js +52 -0
  182. package/dist/services/audit-checks/dangling-relations-check.js.map +1 -0
  183. package/dist/services/audit-checks/duplicate-ids-check.d.ts +4 -0
  184. package/dist/services/audit-checks/duplicate-ids-check.d.ts.map +1 -0
  185. package/dist/services/audit-checks/duplicate-ids-check.js +49 -0
  186. package/dist/services/audit-checks/duplicate-ids-check.js.map +1 -0
  187. package/dist/services/audit-checks/fix-engine.d.ts +24 -0
  188. package/dist/services/audit-checks/fix-engine.d.ts.map +1 -0
  189. package/dist/services/audit-checks/fix-engine.js +114 -0
  190. package/dist/services/audit-checks/fix-engine.js.map +1 -0
  191. package/dist/services/audit-checks/fr-nfr-to-fs-nfs-check.d.ts +9 -0
  192. package/dist/services/audit-checks/fr-nfr-to-fs-nfs-check.d.ts.map +1 -0
  193. package/dist/services/audit-checks/fr-nfr-to-fs-nfs-check.js +56 -0
  194. package/dist/services/audit-checks/fr-nfr-to-fs-nfs-check.js.map +1 -0
  195. package/dist/services/audit-checks/fs-nfs-to-sad-ad-qa-check.d.ts +10 -0
  196. package/dist/services/audit-checks/fs-nfs-to-sad-ad-qa-check.d.ts.map +1 -0
  197. package/dist/services/audit-checks/fs-nfs-to-sad-ad-qa-check.js +57 -0
  198. package/dist/services/audit-checks/fs-nfs-to-sad-ad-qa-check.js.map +1 -0
  199. package/dist/services/audit-checks/fs-nfs-to-ts-check.d.ts +9 -0
  200. package/dist/services/audit-checks/fs-nfs-to-ts-check.d.ts.map +1 -0
  201. package/dist/services/audit-checks/fs-nfs-to-ts-check.js +56 -0
  202. package/dist/services/audit-checks/fs-nfs-to-ts-check.js.map +1 -0
  203. package/dist/services/audit-checks/inverse-consistency-check.d.ts +7 -0
  204. package/dist/services/audit-checks/inverse-consistency-check.d.ts.map +1 -0
  205. package/dist/services/audit-checks/inverse-consistency-check.js +54 -0
  206. package/dist/services/audit-checks/inverse-consistency-check.js.map +1 -0
  207. package/dist/services/audit-checks/mapping-check.d.ts +4 -0
  208. package/dist/services/audit-checks/mapping-check.d.ts.map +1 -0
  209. package/dist/services/audit-checks/mapping-check.js +74 -0
  210. package/dist/services/audit-checks/mapping-check.js.map +1 -0
  211. package/dist/services/audit-checks/orphan-documents-check.d.ts +9 -0
  212. package/dist/services/audit-checks/orphan-documents-check.d.ts.map +1 -0
  213. package/dist/services/audit-checks/orphan-documents-check.js +54 -0
  214. package/dist/services/audit-checks/orphan-documents-check.js.map +1 -0
  215. package/dist/services/audit-checks/orphan-entities-check.d.ts +4 -0
  216. package/dist/services/audit-checks/orphan-entities-check.d.ts.map +1 -0
  217. package/dist/services/audit-checks/orphan-entities-check.js +39 -0
  218. package/dist/services/audit-checks/orphan-entities-check.js.map +1 -0
  219. package/dist/services/audit-checks/sad-ad-qa-tc-to-src-check.d.ts +9 -0
  220. package/dist/services/audit-checks/sad-ad-qa-tc-to-src-check.d.ts.map +1 -0
  221. package/dist/services/audit-checks/sad-ad-qa-tc-to-src-check.js +56 -0
  222. package/dist/services/audit-checks/sad-ad-qa-tc-to-src-check.js.map +1 -0
  223. package/dist/services/audit-checks/sprint-consistency-check.d.ts +4 -0
  224. package/dist/services/audit-checks/sprint-consistency-check.d.ts.map +1 -0
  225. package/dist/services/audit-checks/sprint-consistency-check.js +80 -0
  226. package/dist/services/audit-checks/sprint-consistency-check.js.map +1 -0
  227. package/dist/services/audit-checks/src-filesystem-only-check.d.ts +10 -0
  228. package/dist/services/audit-checks/src-filesystem-only-check.d.ts.map +1 -0
  229. package/dist/services/audit-checks/src-filesystem-only-check.js +106 -0
  230. package/dist/services/audit-checks/src-filesystem-only-check.js.map +1 -0
  231. package/dist/services/audit-checks/ts-to-tc-check.d.ts +10 -0
  232. package/dist/services/audit-checks/ts-to-tc-check.d.ts.map +1 -0
  233. package/dist/services/audit-checks/ts-to-tc-check.js +58 -0
  234. package/dist/services/audit-checks/ts-to-tc-check.js.map +1 -0
  235. package/dist/services/audit-checks/type-mismatch-check.d.ts +4 -0
  236. package/dist/services/audit-checks/type-mismatch-check.d.ts.map +1 -0
  237. package/dist/services/audit-checks/type-mismatch-check.js +55 -0
  238. package/dist/services/audit-checks/type-mismatch-check.js.map +1 -0
  239. package/dist/services/audit-checks/types.d.ts +66 -0
  240. package/dist/services/audit-checks/types.d.ts.map +1 -0
  241. package/dist/services/audit-checks/types.js +30 -0
  242. package/dist/services/audit-checks/types.js.map +1 -0
  243. package/dist/services/audit-checks/us-to-fr-nfr-check.d.ts +9 -0
  244. package/dist/services/audit-checks/us-to-fr-nfr-check.d.ts.map +1 -0
  245. package/dist/services/audit-checks/us-to-fr-nfr-check.js +56 -0
  246. package/dist/services/audit-checks/us-to-fr-nfr-check.js.map +1 -0
  247. package/dist/services/doc-entity-mapping.d.ts +19 -0
  248. package/dist/services/doc-entity-mapping.d.ts.map +1 -0
  249. package/dist/services/doc-entity-mapping.js +35 -0
  250. package/dist/services/doc-entity-mapping.js.map +1 -0
  251. package/dist/services/document-service.d.ts +58 -0
  252. package/dist/services/document-service.d.ts.map +1 -0
  253. package/dist/services/document-service.js +409 -0
  254. package/dist/services/document-service.js.map +1 -0
  255. package/dist/services/graph-export-service.d.ts +12 -0
  256. package/dist/services/graph-export-service.d.ts.map +1 -0
  257. package/dist/services/graph-export-service.js +112 -0
  258. package/dist/services/graph-export-service.js.map +1 -0
  259. package/dist/services/graph-service.d.ts +21 -0
  260. package/dist/services/graph-service.d.ts.map +1 -0
  261. package/dist/services/graph-service.js +49 -0
  262. package/dist/services/graph-service.js.map +1 -0
  263. package/dist/services/graph-validation-service.d.ts +13 -0
  264. package/dist/services/graph-validation-service.d.ts.map +1 -0
  265. package/dist/services/graph-validation-service.js +171 -0
  266. package/dist/services/graph-validation-service.js.map +1 -0
  267. package/dist/services/project.d.ts +80 -0
  268. package/dist/services/project.d.ts.map +1 -0
  269. package/dist/services/project.js +256 -0
  270. package/dist/services/project.js.map +1 -0
  271. package/dist/services/review-service.d.ts +81 -0
  272. package/dist/services/review-service.d.ts.map +1 -0
  273. package/dist/services/review-service.js +242 -0
  274. package/dist/services/review-service.js.map +1 -0
  275. package/dist/services/schema-migration-service.d.ts +44 -0
  276. package/dist/services/schema-migration-service.d.ts.map +1 -0
  277. package/dist/services/schema-migration-service.js +894 -0
  278. package/dist/services/schema-migration-service.js.map +1 -0
  279. package/dist/services/sprint.d.ts +71 -0
  280. package/dist/services/sprint.d.ts.map +1 -0
  281. package/dist/services/sprint.js +238 -0
  282. package/dist/services/sprint.js.map +1 -0
  283. package/dist/services/stage-validator.d.ts +36 -0
  284. package/dist/services/stage-validator.d.ts.map +1 -0
  285. package/dist/services/stage-validator.js +78 -0
  286. package/dist/services/stage-validator.js.map +1 -0
  287. package/dist/services/task.d.ts +75 -0
  288. package/dist/services/task.d.ts.map +1 -0
  289. package/dist/services/task.js +487 -0
  290. package/dist/services/task.js.map +1 -0
  291. package/dist/services/validation.d.ts +24 -0
  292. package/dist/services/validation.d.ts.map +1 -0
  293. package/dist/services/validation.js +53 -0
  294. package/dist/services/validation.js.map +1 -0
  295. package/dist/state-machines/sprint-state.d.ts +25 -0
  296. package/dist/state-machines/sprint-state.d.ts.map +1 -0
  297. package/dist/state-machines/sprint-state.js +64 -0
  298. package/dist/state-machines/sprint-state.js.map +1 -0
  299. package/dist/state-machines/task-state.d.ts +31 -0
  300. package/dist/state-machines/task-state.d.ts.map +1 -0
  301. package/dist/state-machines/task-state.js +83 -0
  302. package/dist/state-machines/task-state.js.map +1 -0
  303. package/dist/utils/errors.d.ts +673 -0
  304. package/dist/utils/errors.d.ts.map +1 -0
  305. package/dist/utils/errors.js +1447 -0
  306. package/dist/utils/errors.js.map +1 -0
  307. package/dist/utils/format.d.ts +52 -0
  308. package/dist/utils/format.d.ts.map +1 -0
  309. package/dist/utils/format.js +65 -0
  310. package/dist/utils/format.js.map +1 -0
  311. package/dist/validators/board-integrity.d.ts +25 -0
  312. package/dist/validators/board-integrity.d.ts.map +1 -0
  313. package/dist/validators/board-integrity.js +102 -0
  314. package/dist/validators/board-integrity.js.map +1 -0
  315. package/dist/validators/board-shape.d.ts +13 -0
  316. package/dist/validators/board-shape.d.ts.map +1 -0
  317. package/dist/validators/board-shape.js +74 -0
  318. package/dist/validators/board-shape.js.map +1 -0
  319. package/dist/validators/owner-validator.d.ts +30 -0
  320. package/dist/validators/owner-validator.d.ts.map +1 -0
  321. package/dist/validators/owner-validator.js +70 -0
  322. package/dist/validators/owner-validator.js.map +1 -0
  323. package/dist/validators/spawn-legality.d.ts +19 -0
  324. package/dist/validators/spawn-legality.d.ts.map +1 -0
  325. package/dist/validators/spawn-legality.js +77 -0
  326. package/dist/validators/spawn-legality.js.map +1 -0
  327. package/dist/validators/state-field-checker.d.ts +8 -0
  328. package/dist/validators/state-field-checker.d.ts.map +1 -0
  329. package/dist/validators/state-field-checker.js +47 -0
  330. package/dist/validators/state-field-checker.js.map +1 -0
  331. package/dist/validators/state-field-recorder.d.ts +39 -0
  332. package/dist/validators/state-field-recorder.d.ts.map +1 -0
  333. package/dist/validators/state-field-recorder.js +62 -0
  334. package/dist/validators/state-field-recorder.js.map +1 -0
  335. package/package.json +53 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-migration-service.js","sourceRoot":"","sources":["../../src/services/schema-migration-service.ts"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,wFAAwF;AACxF,8EAA8E;AAC9E,qFAAqF;;AAu6BrF,gDAEC;AAKD,4BAMC;AAWD,oCAmEC;AAMD,oDAkBC;AAKD,sDA8CC;AA1kCD,2BAA8C;AAC9C,+BAA+B;AAC/B,iDAAyC;AACzC,uCAA8C;AAC9C,4CAGyB;AAyBzB,4BAA4B;AAE5B,SAAS,cAAc,CAAC,EAAc;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACtC,EAAE,EAAE,CAAC;IACL,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACpC,OAAO,MAAM,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,QAAU,CAAC,CAAC;AAC5C,CAAC;AAED,sEAAsE;AAEtE,0EAA0E;AAC1E,MAAM,kBAAkB,GAInB;IACH,wBAAwB;IACxB,aAAa,EAAG,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE;IAC/E,UAAU,EAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE;IAC/E,YAAY,EAAI,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE;IACxE,YAAY,EAAI,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE;IACxE,YAAY,EAAI,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE;IAChF,QAAQ,EAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE;IAChF,WAAW,EAAK,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE;IACzE,QAAQ,EAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE;CAC1E,CAAC;AAEF,oEAAoE;AACpE,MAAM,iBAAiB,GAIlB;IACH,YAAY,EAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE;IACtF,QAAQ,EAAQ,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE;IACtF,UAAU,EAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE;IAC7F,MAAM,EAAU,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE;IAC7F,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE;IACvF,UAAU,EAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE;IACvF,WAAW,EAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE;IAChF,QAAQ,EAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE;IAChF,yDAAyD;CAC1D,CAAC;AAEF,0FAA0F;AAC1F,MAAM,mBAAmB,GAAG,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAE7D,2DAA2D;AAC3D,MAAM,sBAAsB,GAAG;IAC7B,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,kBAAkB;IAC1D,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe;IAC3D,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa;IACzD,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW;CACnE,CAAC;AAEF,uCAAuC;AACvC,MAAM,yBAAyB,GAAG;IAChC,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;IAClC,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACjC,GAAG,mBAAmB;CACvB,CAAC;AAEF,2CAA2C;AAE3C,SAAS,cAAc,CAAC,EAAqB;IAC3C,MAAM,OAAO,GAA2B,EAAE,uBAAuB,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC,EAAE,CAAC;IAElG,qCAAqC;IACrC,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,2EAA2E,CAC5E,CAAC,GAAG,EAAE,CAAC;IAER,IAAI,WAAW,EAAE,CAAC;QAChB,uDAAuD;QACvD,wEAAwE;QACxE,yEAAyE;QACzE,4DAA4D;QAC5D,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;KAYP,CAAC,CAAC;QACH,OAAO,CAAC,sBAAsB,GAAG,CAAC,CAAC;QAEnC,EAAE,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAC7C,OAAO,CAAC,uBAAuB,GAAG,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,uBAAuB,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,sBAAsB,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAqB;IAC/C,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,2EAA2E,CAC5E,CAAC,GAAG,EAAE,CAAC;IACR,OAAO,CAAC,CAAC,WAAW,CAAC;AACvB,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAqB;IAChD,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,2EAA2E,CAC5E,CAAC,GAAG,EAAE,CAAC;IACR,OAAO,CAAC,WAAW,CAAC;AACtB,CAAC;AAED,0DAA0D;AAE1D,SAAS,cAAc,CAAC,EAAqB;IAC3C,MAAM,OAAO,GAA2B,EAAE,iBAAiB,EAAE,CAAC,EAAE,kBAAkB,EAAE,CAAC,EAAE,uBAAuB,EAAE,CAAC,EAAE,CAAC;IAEpH,oBAAoB;IACpB,MAAM,aAAa,GAAI,EAAE,CAAC,OAAO,CAC/B,6DAA6D,CAC9D,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;IAEhC,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,CAAC,6BAA6B;IAC/C,CAAC;IAED,+CAA+C;IAC/C,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC3B,sJAAsJ,CACvJ,CAAC,GAAG,EAAE,CAAC;IACR,OAAO,CAAC,kBAAkB,GAAG,UAAU,CAAC,OAAO,CAAC;IAEhD,0DAA0D;IAC1D,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,gDAAgD,CACjD,CAAC,GAAG,EAA2B,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,qBAAqB;IACrB,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAC7B,6CAA6C,CAC9C,CAAC,GAAG,EAAE,CAAC;IACR,OAAO,CAAC,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC;IAEjD,oCAAoC;IACpC,MAAM,eAAe,GAAI,EAAE,CAAC,OAAO,CACjC,0CAA0C,CAC3C,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;IAChC,OAAO,CAAC,wBAAwB,GAAG,eAAe,CAAC;IAEnD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAqB;IAC/C,MAAM,OAAO,GAAI,EAAE,CAAC,OAAO,CACzB,6DAA6D,CAC9D,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;IAChC,OAAO,OAAO,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAqB;IAChD,MAAM,OAAO,GAAI,EAAE,CAAC,OAAO,CACzB,6DAA6D,CAC9D,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;IAChC,OAAO,OAAO,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,sDAAsD;AAEtD,SAAS,2BAA2B,CAAC,KAAa,EAAE,OAAsB;IACxE,MAAM,UAAU,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/C,MAAM,YAAY,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAEnD,uDAAuD;IACvD,IAAI,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC9E,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5D,YAAY,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACnD,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC;QAClC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;QACnE,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gDAAgD;IAChD,IAAI,UAAU,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QAC7C,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC1D,YAAY,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QAC/C,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC1D,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;QACjE,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oCAAoC;IACpC,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;QACrE,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gEAAgE;IAChE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,EAAqB,EAAE,YAAoB;IACjE,MAAM,OAAO,GAA2B;QACtC,eAAe,EAAE,CAAC;QAClB,YAAY,EAAE,CAAC;QACf,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;KACjB,CAAC;IAEF,yBAAyB;IACzB,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CACxB,oEAAoE,CACrE,CAAC,GAAG,EAAwD,CAAC;IAE9D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,CAAC,6BAA6B;IAC/C,CAAC;IAED,yDAAyD;IACzD,EAAE,CAAC,OAAO,CAAC,wJAAwJ,CAAC,CAAC,GAAG,EAAE,CAAC;IAC3K,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC,GAAG,EAA2B,CAAC;IACjH,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAAE,CAAC;IAEjE,8DAA8D;IAC9D,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC3B,6DAA6D,CAC9D,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAoC,CAAC;QAEjD,MAAM,eAAe,GAAG,2BAA2B,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;QAE5F,kEAAkE;QAClE,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CACzB,qGAAqG,CACtG,CAAC,GAAG,CAAC,eAAe,CAA0C,CAAC;QAChE,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,GAAG,eAAe,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAEvE,8BAA8B;QAC9B,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACrG,oBAAoB;QACpB,EAAE,CAAC,OAAO,CAAC,oEAAoE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAEpG,OAAO,CAAC,eAAe,EAAE,CAAC;QAC1B,IAAI,eAAe,KAAK,IAAI;YAAE,OAAO,CAAC,YAAY,EAAE,CAAC;aAChD,IAAI,eAAe,KAAK,IAAI;YAAE,OAAO,CAAC,YAAY,EAAE,CAAC;;YACrD,OAAO,CAAC,aAAa,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAqB;IAC/C,MAAM,QAAQ,GAAI,EAAE,CAAC,OAAO,CAC1B,0DAA0D,CAC3D,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;IAChC,OAAO,QAAQ,GAAG,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAqB;IAChD,MAAM,QAAQ,GAAI,EAAE,CAAC,OAAO,CAC1B,0DAA0D,CAC3D,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;IAChC,OAAO,QAAQ,KAAK,CAAC,CAAC;AACxB,CAAC;AAED,uDAAuD;AAEvD,SAAS,cAAc,CAAC,EAAqB;IAC3C,MAAM,OAAO,GAA2B,EAAE,qBAAqB,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;IACxF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxF,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,cAAc,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QACD,EAAE,CAAC,OAAO,CAAC;;;KAGV,CAAC,CAAC,GAAG,CACJ,IAAI,EACJ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EACxB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EACtB,GAAG,CAAC,WAAW,EACf,IAAI,EACJ,EAAE,EACF,GAAG,EACH,GAAG,CACJ,CAAC;QACF,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAClC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAqB;IAC/C,yCAAyC;IACzC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtF,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;IACzB,CAAC;IACD,OAAO,OAAO,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAqB;IAChD,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtF,IAAI,CAAC,MAAM;YAAE,UAAU,GAAG,KAAK,CAAC;IAClC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,gEAAgE;AAEhE,SAAS,cAAc,CAAC,EAAqB;IAC3C,MAAM,OAAO,GAA2B,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAC;IAEpE,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CACzB,mFAAmF,CACpF,CAAC,GAAG,CAAC,IAAI,CAA4F,CAAC;QAEvG,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAErC,IAAI,QAAQ,CAAC,UAAU,KAAK,OAAO,IAAI,QAAQ,CAAC,QAAQ,KAAK,KAAK,IAAI,QAAQ,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;YAC/G,EAAE,CAAC,OAAO,CACR,wFAAwF,CACzF,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC7C,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAsB;IAChD,6BAA6B;IAC7B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAqB;IAChD,wDAAwD;IACxD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAC5D,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CACpB,gEAAgE,CACjE,CAAC,GAAG,CAAC,IAAI,CAAyD,CAAC;QACpE,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QACvB,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC9D,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;IAC5D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uDAAuD;AAEvD,SAAS,cAAc,CAAC,EAAqB;IAC3C,MAAM,OAAO,GAA2B;QACtC,kBAAkB,EAAE,CAAC;QACrB,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,CAAC;QACpB,eAAe,EAAE,CAAC;QAClB,YAAY,EAAE,CAAC;KAChB,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAErC,4FAA4F;IAC5F,+CAA+C;IAC/C,MAAM,iBAAiB,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;GAOpC,CAAC,CAAC,GAAG,EAAmF,CAAC;IAC1F,OAAO,CAAC,YAAY,IAAI,iBAAiB,CAAC,MAAM,CAAC;IAEjD,4DAA4D;IAC5D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACrC,IAAI,IAAI,GAAkB,IAAI,CAAC;QAC/B,IAAI,OAAO,GAAkB,IAAI,CAAC;QAElC,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE,CAAC;YACjF,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;YACpB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,EAAE,CAAC;YAC1F,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YAClB,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QACzB,CAAC;QAED,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,aAAa,IAAI,KAAK,OAAO,EAAE,CAAC;YAChD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAE5B,uCAAuC;gBACvC,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC3B,wFAAwF,CACzF,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACrB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,EAAE,CAAC,OAAO,CAAC;;;WAGV,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;oBACjD,OAAO,CAAC,kBAAkB,EAAE,CAAC;gBAC/B,CAAC;gBAED,mCAAmC;gBACnC,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC3B,oFAAoF,CACrF,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACrB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,EAAE,CAAC,OAAO,CAAC;;;WAGV,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC7C,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,uFAAuF;IACvF,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;GAOhC,CAAC,CAAC,GAAG,EAAmF,CAAC;IAC1F,OAAO,CAAC,YAAY,IAAI,aAAa,CAAC,MAAM,CAAC;IAE7C,0DAA0D;IAC1D,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,IAAI,IAAI,GAAkB,IAAI,CAAC;QAC/B,IAAI,IAAI,GAAkB,IAAI,CAAC;QAE/B,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACrD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;YACpB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC5D,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YAClB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;aAAM,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE,CAAC;YACxF,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;YACpB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,EAAE,CAAC;YAC1F,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YAClB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QAED,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,YAAY,IAAI,KAAK,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAE3B,sCAAsC;gBACtC,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC3B,uFAAuF,CACxF,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAClB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,EAAE,CAAC,OAAO,CAAC;;;WAGV,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC7C,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBAC9B,CAAC;gBAED,mCAAmC;gBACnC,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC3B,oFAAoF,CACrF,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAClB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,EAAE,CAAC,OAAO,CAAC;;;WAGV,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC1C,OAAO,CAAC,eAAe,EAAE,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAqB;IAC/C,uEAAuE;IACvE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtF,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB;IAC1B,8BAA8B;IAC9B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gDAAgD;AAEhD,SAAS,cAAc,CAAC,EAAqB;IAC3C,MAAM,OAAO,GAA2B,EAAE,oBAAoB,EAAE,CAAC,EAAE,wBAAwB,EAAE,CAAC,EAAE,yBAAyB,EAAE,CAAC,EAAE,CAAC;IAE/H,kFAAkF;IAClF,8EAA8E;IAC9E,8DAA8D;IAC9D,MAAM,oBAAoB,GAAG,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC,GAAG,EAAmE,CAAC;IACxK,KAAK,MAAM,EAAE,IAAI,oBAAoB,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAa,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAa,CAAC;QACtD,gEAAgE;QAChE,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC;;0EAEqC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KACzG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC;QAChC,OAAO,CAAC,yBAAyB,IAAI,aAAa,CAAC,OAAO,CAAC;QAC3D,4DAA4D;QAC5D,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC;;wEAEqC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KACrG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC;QAC9B,OAAO,CAAC,yBAAyB,IAAI,WAAW,CAAC,OAAO,CAAC;IAC3D,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,sBAAsB,EAAE,CAAC;QAC9C,qDAAqD;QACrD,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxF,OAAO,CAAC,wBAAwB,IAAI,UAAU,CAAC,OAAO,CAAC;QAEvD,8CAA8C;QAC9C,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzF,IAAI,UAAU,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,oBAAoB,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAqB;IAC/C,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,IAAI,IAAI,sBAAsB,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtF,IAAI,MAAM;YAAE,SAAS,EAAE,CAAC;IAC1B,CAAC;IACD,OAAO,SAAS,GAAG,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAqB;IAChD,KAAK,MAAM,IAAI,IAAI,sBAAsB,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtF,IAAI,MAAM;YAAE,OAAO,KAAK,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qCAAqC;AAErC,oFAAoF;AAEpF,SAAS,cAAc,CAAC,EAAqB,EAAE,WAAmB;IAChE,MAAM,OAAO,GAAoC,EAAE,CAAC;IAEpD,qCAAqC;IACrC,MAAM,OAAO,GAAI,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;IACxG,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC;IAEpC,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,IAAA,cAAO,EAAC,WAAW,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACrE,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,gCAAuB,CAAC,0BAA0B,EAAE,uDAAuD,CAAC,CAAC;IACzH,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACpD,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC;IAChC,OAAO,CAAC,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC;IAE3C,8DAA8D;IAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAkG,CAAC;IACxI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACtC,MAAM,IAAI,iCAAwB,CAAC,wCAAwC,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAC3B,sHAAsH,CACvH,CAAC;IAEF,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,GAAG,EAAE,WAAW,IAAI,cAAc,CAAC;QACvD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QACrE,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC;YAAE,WAAW,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,CAAC,mBAAmB,GAAG,WAAW,CAAC;IAE1C,8EAA8E;IAC9E,MAAM,UAAU,GAAG,IAAA,cAAO,EAAC,WAAW,EAAE,SAAS,EAAE,0BAA0B,CAAC,CAAC;IAC/E,IAAI,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,QAAQ,UAAU,EAAE,EAAE;gBAC5C,GAAG,EAAE,WAAW;gBAChB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,MAAM;aAChB,CAAC,CAAC;YACH,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,8DAA8D;YAC9D,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,YAAY,GAAG,6CAA6C,GAAG,EAAE,CAAC;QAC5E,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,YAAY,GAAG,8CAA8C,CAAC;IACxE,CAAC;IAED,sDAAsD;IACtD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAAE,CAAC;IAC7C,EAAE,CAAC,OAAO,CACR,gGAAgG,CACjG,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC/C,OAAO,CAAC,aAAa,GAAG,aAAa,CAAC;IAEtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAqB;IAC/C,MAAM,OAAO,GAAI,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;IACxG,OAAO,OAAO,KAAK,EAAE,CAAC;AACxB,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAsB;IACjD,OAAO,IAAI,CAAC,CAAC,sBAAsB;AACrC,CAAC;AAED,gCAAgC;AAEhC,SAAS,cAAc,CAAC,EAAqB;IAC3C,MAAM,OAAO,GAAoC,EAAE,CAAC;IAEpD,2EAA2E;IAC3E,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAEpC,+BAA+B;IAC/B,MAAM,OAAO,GAAI,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;IACxG,OAAO,CAAC,iBAAiB,GAAG,OAAO,CAAC;IAEpC,wCAAwC;IACxC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CACxB,2EAA2E,CAC5E,CAAC,GAAG,EAAE,CAAC;IACR,OAAO,CAAC,sBAAsB,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAExD,8CAA8C;IAC9C,MAAM,QAAQ,GAAI,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;IACpG,OAAO,CAAC,0BAA0B,GAAG,QAAQ,CAAC;IAE9C,kDAAkD;IAClD,IAAI,mBAAmB,GAAG,CAAC,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,sBAAsB,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtF,IAAI,MAAM;YAAE,mBAAmB,EAAE,CAAC;IACpC,CAAC;IACD,OAAO,CAAC,wBAAwB,GAAG,mBAAmB,CAAC;IAEvD,wCAAwC;IACxC,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,yBAAyB,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtF,IAAI,MAAM;YAAE,iBAAiB,EAAE,CAAC;IAClC,CAAC;IACD,OAAO,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAE9C,+BAA+B;IAC/B,MAAM,QAAQ,GAAI,EAAE,CAAC,OAAO,CAC1B,0DAA0D,CAC3D,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;IAChC,OAAO,CAAC,gBAAgB,GAAG,QAAQ,CAAC;IAEpC,6BAA6B;IAC7B,MAAM,OAAO,GAAI,EAAE,CAAC,OAAO,CACzB,6DAA6D,CAC9D,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;IAChC,OAAO,CAAC,mBAAmB,GAAG,OAAO,CAAC;IAEtC,8BAA8B;IAC9B,MAAM,aAAa,GAAI,EAAE,CAAC,OAAO,CAAC;;;;;GAKjC,CAAC,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;IACjC,OAAO,CAAC,iBAAiB,GAAG,aAAa,CAAC;IAE1C,oBAAoB;IACpB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAI,OAAO,KAAK,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,uBAAuB,OAAO,QAAQ,CAAC,CAAC;IACxE,IAAI,OAAO;QAAE,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC5D,IAAI,mBAAmB,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,mBAAmB,8BAA8B,CAAC,CAAC;IAC/F,IAAI,iBAAiB,KAAK,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,iBAAiB,yBAAyB,CAAC,CAAC;IAC9F,IAAI,QAAQ,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,qBAAqB,CAAC,CAAC;IAChE,IAAI,OAAO,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,wBAAwB,CAAC,CAAC;IACjE,IAAI,aAAa,GAAG,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,qBAAqB,CAAC,CAAC;IAE1E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,iCAAwB,CAAC,wBAAwB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC;IACzB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAsB;IAChD,OAAO,IAAI,CAAC,CAAC,kBAAkB;AACjC,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAsB;IACjD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yBAAyB;AAEzB,MAAM,MAAM,GAAqB;IAC/B;QACE,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACjB,MAAM,MAAM,GAAgB,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACtF,IAAI,CAAC;gBACH,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE;oBACrC,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,mBAAmB;KAClC;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACjB,MAAM,MAAM,GAAgB,EAAE,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACzF,IAAI,CAAC;gBACH,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE;oBACrC,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,mBAAmB;KAClC;IACD;QACE,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAgB,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YAClF,IAAI,CAAC;gBACH,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE;oBACrC,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,mBAAmB;KAClC;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACjB,MAAM,MAAM,GAAgB,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACtF,IAAI,CAAC;gBACH,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE;oBACrC,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,mBAAmB;KAClC;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACjB,MAAM,MAAM,GAAgB,EAAE,KAAK,EAAE,4BAA4B,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YAC/F,IAAI,CAAC;gBACH,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE;oBACrC,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,mBAAmB;KAClC;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACjB,MAAM,MAAM,GAAgB,EAAE,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACzF,IAAI,CAAC;gBACH,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE;oBACrC,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,CAAC,GAAsB,EAAE,EAAE,CAAC,mBAAmB,EAAE;KAChE;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACjB,MAAM,MAAM,GAAgB,EAAE,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACzF,IAAI,CAAC;gBACH,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE;oBACrC,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,mBAAmB;KAClC;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAgB,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACtF,IAAI,CAAC;gBACH,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE;oBACrC,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,mBAAmB;KAClC;IACD;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACjB,MAAM,MAAM,GAAgB,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACjF,IAAI,CAAC;gBACH,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE;oBACrC,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClE,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,mBAAmB;KAClC;CACF,CAAC;AAEF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7D,qBAAqB;AAErB,SAAgB,kBAAkB;IAChC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,EAAqB,EAAE,SAAiB,EAAE,WAAmB;IACpF,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,4BAA4B,SAAS,mBAAmB,kBAAkB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7G,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,YAAY,CAAC,EAAqB,EAAE,WAAmB;IACrE,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IAE3C,uEAAuE;IACvE,oEAAoE;IACpE,iEAAiE;IACjE,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAErC,+DAA+D;IAC/D,8BAA8B;IAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QAE7B,sDAAsD;QACtD,sEAAsE;QACtE,2DAA2D;QAE3D,IAAI,CAAC;YACH,iCAAiC;YACjC,IAAA,uBAAe,EAAC,EAAE,EAAE,GAAG,EAAE;gBACvB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;gBAC9C,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,2BAA2B;gBACrD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEpB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACjB,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/C,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,SAAS,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;gBAC3D,CAAC;gBAED,kBAAkB;gBAClB,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;oBAC7C,MAAM,GAAG,GAAG,oCAAoC,SAAS,EAAE,CAAC;oBAC5D,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC;gBACV,KAAK,EAAE,SAAS;gBAChB,SAAS,EAAE,CAAC;gBACZ,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,GAAG;aACX,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,KAAK,GAAG,EAAE,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,SAAS,SAAS,YAAY,GAAG,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,yCAAyC;QACzC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACpC,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,QAAU,CAAC,CAAC;YACjF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,QAAU,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,yBAAyB,YAAY,IAAI,CAAC,CAAC;IAEvD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC5B,MAAM;QACN,cAAc,EAAE,YAAY;QAC5B,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,EAAqB;IACxD,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAChC,2EAA2E,CAC5E,CAAC,GAAG,EAAE,CAAC;IAER,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,eAAe,GAAI,EAAE,CAAC,OAAO,CACjC,0CAA0C,CAC3C,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,kDAAkD,eAAe,QAAQ,CAAC,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,iBAAiB,GAAI,EAAE,CAAC,OAAO,CACnC,4CAA4C,CAC7C,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,kBAAkB,iBAAiB,yBAAyB,CAAC,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,EAAqB;IACzD,uCAAuC;IACvC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CACxB,2EAA2E,CAC5E,CAAC,GAAG,EAAE,CAAC;IACR,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,iCAAwB,CAChC,mEAAmE,CACpE,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,MAAM,OAAO,GAAI,EAAE,CAAC,OAAO,CACzB,4CAA4C,CAC7C,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;IAChC,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,iCAAwB,CAChC,uEAAuE,OAAO,EAAE,CACjF,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,KAAK,MAAM,OAAO,IAAI,sBAAsB,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,gDAAgD,CACjD,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,iCAAwB,CAChC,4DAA4D,OAAO,gBAAgB,CACpF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,KAAK,MAAM,IAAI,IAAI,yBAAyB,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,gDAAgD,CACjD,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,iCAAwB,CAChC,6DAA6D,IAAI,aAAa,CAC/E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,71 @@
1
+ import type Database from 'better-sqlite3';
2
+ import type { Sprint, SprintResult, SprintOverview } from '../models/sprint';
3
+ import type { SprintStatus } from '../models/common';
4
+ /**
5
+ * Create a new sprint.
6
+ *
7
+ * @param db - Database connection
8
+ * @param id - Sprint ID (unique)
9
+ * @param name - Optional sprint name
10
+ * @param goal - Optional sprint goal
11
+ * @returns The created sprint result
12
+ * @throws SprintInvalidError if ID is empty
13
+ * @throws SprintDuplicateError if ID already exists
14
+ */
15
+ export declare function createSprint(db: Database.Database, id: string, name?: string, goal?: string): SprintResult;
16
+ /**
17
+ * Get a sprint overview with task counts by status.
18
+ *
19
+ * @param db - Database connection
20
+ * @param sprintId - Optional sprint ID (resolves default if omitted)
21
+ * @returns Sprint overview with task counts
22
+ * @throws SprintNotFoundError if sprint doesn't exist
23
+ * @throws SprintNoneError if no sprintId and no sprints exist
24
+ */
25
+ export declare function getSprintOverview(db: Database.Database, sprintId?: string): SprintOverview;
26
+ /**
27
+ * Get active (non-Done, non-Dropped) tasks for a sprint.
28
+ */
29
+ export declare function getSprintActiveTasks(db: Database.Database, sprintId?: string): Array<Record<string, unknown>>;
30
+ /**
31
+ * List sprints with optional filters.
32
+ */
33
+ export declare function listSprints(db: Database.Database, filters?: {
34
+ status?: SprintStatus;
35
+ }): Sprint[];
36
+ /**
37
+ * Transition a sprint from one status to another.
38
+ *
39
+ * @param db - Database connection
40
+ * @param id - Sprint ID
41
+ * @param target - Target sprint status
42
+ * @returns Updated sprint result
43
+ * @throws SprintNotFoundError if sprint doesn't exist
44
+ * @throws SprintBadStatusError if target is not a valid sprint status
45
+ * @throws SprintTransitionError if transition is not allowed
46
+ */
47
+ export declare function transitionSprintStatus(db: Database.Database, id: string, target: string): SprintResult;
48
+ /**
49
+ * Update a sprint's mutable properties (name, goal).
50
+ * Uses per-sprint advisory locking (kanban:sprint{<id>}) following AD-0015.
51
+ *
52
+ * @param db - Database connection
53
+ * @param id - Sprint ID
54
+ * @param updates - Partial update; absent fields are unchanged, empty string replaces
55
+ * @returns Updated sprint result
56
+ * @throws SprintNotFoundError if sprint doesn't exist
57
+ * @throws LockTimeoutError if lock cannot be acquired
58
+ */
59
+ export declare function updateSprint(db: Database.Database, id: string, updates: {
60
+ name?: string;
61
+ goal?: string;
62
+ }): SprintResult;
63
+ /**
64
+ * Resolve the default sprint (most recently created non-CLOSED sprint).
65
+ * Implements AD-0010: Default Sprint Resolution by Recency.
66
+ *
67
+ * @throws SprintNoneError if no sprints exist
68
+ * @throws SprintNotFoundError if a specific ID was given but not found
69
+ */
70
+ export declare function resolveSprint(db: Database.Database, sprintId?: string): Sprint;
71
+ //# sourceMappingURL=sprint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprint.d.ts","sourceRoot":"","sources":["../../src/services/sprint.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,kBAAkB,CAAC;AAkBjE;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,YAAY,CAiCd;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,cAAc,CAuChB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAShC;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,YAAY,CAAA;CAAE,GAClC,MAAM,EAAE,CAYV;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,GACb,YAAY,CAkDd;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,YAAY,CA4Bd;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAmB9E"}
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ // Sprint service: orchestrates sprint lifecycle (create, overview, list, status transitions, resolution)
3
+ // Implements AD-0008: Centralized State Machines + Owner Validation
4
+ // + AD-0010: Default Sprint Resolution by Recency
5
+ // + FS-SS-004-0001..0008
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.createSprint = createSprint;
8
+ exports.getSprintOverview = getSprintOverview;
9
+ exports.getSprintActiveTasks = getSprintActiveTasks;
10
+ exports.listSprints = listSprints;
11
+ exports.transitionSprintStatus = transitionSprintStatus;
12
+ exports.updateSprint = updateSprint;
13
+ exports.resolveSprint = resolveSprint;
14
+ const errors_1 = require("../utils/errors");
15
+ const sprint_state_1 = require("../state-machines/sprint-state");
16
+ const locks_1 = require("../db/locks");
17
+ const retry_1 = require("../db/retry");
18
+ /**
19
+ * Create a new sprint.
20
+ *
21
+ * @param db - Database connection
22
+ * @param id - Sprint ID (unique)
23
+ * @param name - Optional sprint name
24
+ * @param goal - Optional sprint goal
25
+ * @returns The created sprint result
26
+ * @throws SprintInvalidError if ID is empty
27
+ * @throws SprintDuplicateError if ID already exists
28
+ */
29
+ function createSprint(db, id, name, goal) {
30
+ if (!id || id.trim().length === 0) {
31
+ throw new errors_1.SprintInvalidError('Sprint ID cannot be empty');
32
+ }
33
+ const sprintName = name && name.trim().length > 0 ? name.trim() : id;
34
+ const sprintGoal = goal && goal.trim().length > 0 ? goal.trim() : null;
35
+ const lockName = `sprint:${id.trim()}`;
36
+ const owner = (0, locks_1.generateLockOwner)();
37
+ return (0, locks_1.withLock)(db, { name: lockName, owner }, () => {
38
+ // Check for duplicate
39
+ const existing = db.prepare('SELECT id FROM sprints WHERE id = ?').get(id.trim());
40
+ if (existing) {
41
+ throw new errors_1.SprintDuplicateError(id.trim());
42
+ }
43
+ const now = new Date().toISOString();
44
+ db.prepare(`
45
+ INSERT INTO sprints (id, name, status, goal, created_at, updated_at)
46
+ VALUES (?, ?, 'PLANNING', ?, ?, ?)
47
+ `).run(id.trim(), sprintName, sprintGoal, now, now);
48
+ return {
49
+ id: id.trim(),
50
+ name: sprintName,
51
+ goal: sprintGoal,
52
+ status: 'PLANNING',
53
+ created_at: now,
54
+ };
55
+ });
56
+ }
57
+ /**
58
+ * Get a sprint overview with task counts by status.
59
+ *
60
+ * @param db - Database connection
61
+ * @param sprintId - Optional sprint ID (resolves default if omitted)
62
+ * @returns Sprint overview with task counts
63
+ * @throws SprintNotFoundError if sprint doesn't exist
64
+ * @throws SprintNoneError if no sprintId and no sprints exist
65
+ */
66
+ function getSprintOverview(db, sprintId) {
67
+ const sprint = resolveSprint(db, sprintId);
68
+ // Count tasks by status
69
+ const taskCounts = db.prepare(`
70
+ SELECT status, COUNT(*) as count
71
+ FROM tasks
72
+ WHERE sprint_id = ? AND removed_at IS NULL
73
+ GROUP BY status
74
+ `).all(sprint.id);
75
+ const counts = {
76
+ 'Backlog': 0,
77
+ 'To Do': 0,
78
+ 'In Progress': 0,
79
+ 'In Review': 0,
80
+ 'Done': 0,
81
+ 'Dropped': 0,
82
+ };
83
+ for (const row of taskCounts) {
84
+ if (row.status in counts) {
85
+ counts[row.status] = row.count;
86
+ }
87
+ }
88
+ const totalTasks = Object.values(counts).reduce((sum, c) => sum + (c ?? 0), 0);
89
+ return {
90
+ id: sprint.id,
91
+ name: sprint.name,
92
+ goal: sprint.goal,
93
+ status: sprint.status,
94
+ taskCounts: counts,
95
+ totalTasks,
96
+ created_at: sprint.created_at,
97
+ updated_at: sprint.updated_at,
98
+ closed_at: sprint.closed_at,
99
+ };
100
+ }
101
+ /**
102
+ * Get active (non-Done, non-Dropped) tasks for a sprint.
103
+ */
104
+ function getSprintActiveTasks(db, sprintId) {
105
+ const sprint = resolveSprint(db, sprintId);
106
+ return db.prepare(`
107
+ SELECT id, description, status, owner, task_type, priority, points, created_at, updated_at
108
+ FROM tasks
109
+ WHERE sprint_id = ? AND status NOT IN ('Done', 'Dropped') AND removed_at IS NULL
110
+ ORDER BY status, created_at
111
+ `).all(sprint.id);
112
+ }
113
+ /**
114
+ * List sprints with optional filters.
115
+ */
116
+ function listSprints(db, filters) {
117
+ let sql = 'SELECT * FROM sprints';
118
+ const params = [];
119
+ if (filters?.status) {
120
+ sql += ' WHERE status = ?';
121
+ params.push(filters.status);
122
+ }
123
+ sql += ' ORDER BY created_at DESC';
124
+ return db.prepare(sql).all(...params);
125
+ }
126
+ /**
127
+ * Transition a sprint from one status to another.
128
+ *
129
+ * @param db - Database connection
130
+ * @param id - Sprint ID
131
+ * @param target - Target sprint status
132
+ * @returns Updated sprint result
133
+ * @throws SprintNotFoundError if sprint doesn't exist
134
+ * @throws SprintBadStatusError if target is not a valid sprint status
135
+ * @throws SprintTransitionError if transition is not allowed
136
+ */
137
+ function transitionSprintStatus(db, id, target) {
138
+ if (!(0, sprint_state_1.isValidSprintStatus)(target)) {
139
+ throw new errors_1.SprintBadStatusError(target);
140
+ }
141
+ const lockName = `sprint:${id}`;
142
+ const owner = (0, locks_1.generateLockOwner)();
143
+ return (0, locks_1.withLock)(db, { name: lockName, owner }, () => {
144
+ return (0, retry_1.withTransaction)(db, () => {
145
+ const sprint = db.prepare('SELECT * FROM sprints WHERE id = ?').get(id);
146
+ if (!sprint) {
147
+ throw new errors_1.SprintNotFoundError(id);
148
+ }
149
+ // Validate transition
150
+ if (!(0, sprint_state_1.isValidSprintTransition)(sprint.status, target)) {
151
+ const allowed = (0, sprint_state_1.getAllowedSprintTransitions)(sprint.status).map(s => s);
152
+ throw new errors_1.SprintTransitionError(sprint.status, target, allowed);
153
+ }
154
+ // Auto-timestamps
155
+ const timestamps = (0, sprint_state_1.getSprintAutoTimestamps)(sprint.status, target);
156
+ const now = new Date().toISOString();
157
+ const updates = ['status = ?', 'updated_at = ?'];
158
+ const params = [target, now];
159
+ if (timestamps.started_at) {
160
+ updates.push('started_at = ?');
161
+ params.push(timestamps.started_at);
162
+ }
163
+ if (timestamps.closed_at) {
164
+ updates.push('closed_at = ?');
165
+ params.push(timestamps.closed_at);
166
+ }
167
+ params.push(id);
168
+ db.prepare(`UPDATE sprints SET ${updates.join(', ')} WHERE id = ?`).run(...params);
169
+ return {
170
+ id: sprint.id,
171
+ name: sprint.name,
172
+ goal: sprint.goal,
173
+ status: target,
174
+ created_at: sprint.created_at,
175
+ };
176
+ });
177
+ });
178
+ }
179
+ /**
180
+ * Update a sprint's mutable properties (name, goal).
181
+ * Uses per-sprint advisory locking (kanban:sprint{<id>}) following AD-0015.
182
+ *
183
+ * @param db - Database connection
184
+ * @param id - Sprint ID
185
+ * @param updates - Partial update; absent fields are unchanged, empty string replaces
186
+ * @returns Updated sprint result
187
+ * @throws SprintNotFoundError if sprint doesn't exist
188
+ * @throws LockTimeoutError if lock cannot be acquired
189
+ */
190
+ function updateSprint(db, id, updates) {
191
+ const lockName = `sprint:${id}`;
192
+ const owner = (0, locks_1.generateLockOwner)();
193
+ return (0, locks_1.withLock)(db, { name: lockName, owner }, () => {
194
+ const sprint = db.prepare('SELECT * FROM sprints WHERE id = ?').get(id);
195
+ if (!sprint) {
196
+ throw new errors_1.SprintNotFoundError(id);
197
+ }
198
+ // Partial update: COALESCE means undefined fields are skipped, empty string is a value
199
+ const now = new Date().toISOString();
200
+ db.prepare(`
201
+ UPDATE sprints
202
+ SET name = COALESCE(?, name),
203
+ goal = COALESCE(?, goal),
204
+ updated_at = ?
205
+ WHERE id = ?
206
+ `).run(updates.name ?? null, updates.goal ?? null, now, id);
207
+ return {
208
+ id: sprint.id,
209
+ name: updates.name !== undefined ? updates.name : sprint.name,
210
+ goal: updates.goal !== undefined ? updates.goal : sprint.goal,
211
+ status: sprint.status,
212
+ created_at: sprint.created_at,
213
+ };
214
+ });
215
+ }
216
+ /**
217
+ * Resolve the default sprint (most recently created non-CLOSED sprint).
218
+ * Implements AD-0010: Default Sprint Resolution by Recency.
219
+ *
220
+ * @throws SprintNoneError if no sprints exist
221
+ * @throws SprintNotFoundError if a specific ID was given but not found
222
+ */
223
+ function resolveSprint(db, sprintId) {
224
+ if (sprintId) {
225
+ const sprint = db.prepare('SELECT * FROM sprints WHERE id = ?').get(sprintId);
226
+ if (!sprint) {
227
+ throw new errors_1.SprintNotFoundError(sprintId);
228
+ }
229
+ return sprint;
230
+ }
231
+ // AD-0010: resolve by recency — most recently created non-CLOSED sprint
232
+ const sprint = db.prepare("SELECT * FROM sprints WHERE status != 'CLOSED' ORDER BY created_at DESC LIMIT 1").get();
233
+ if (!sprint) {
234
+ throw new errors_1.SprintNoneError();
235
+ }
236
+ return sprint;
237
+ }
238
+ //# sourceMappingURL=sprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprint.js","sourceRoot":"","sources":["../../src/services/sprint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { TaskStage } from '../models/common';
2
+ /** Canonical stage sequence in forward order */
3
+ export declare const CANONICAL_STAGES: TaskStage[];
4
+ /**
5
+ * Check if a given string is a valid stage value.
6
+ */
7
+ export declare function isValidStage(stage: string): stage is TaskStage;
8
+ /**
9
+ * Return the canonical stage sequence.
10
+ */
11
+ export declare function getValidStages(): TaskStage[];
12
+ /**
13
+ * Check if target stage is strictly forward of current stage in the canonical sequence.
14
+ * Returns true if target position > current position (allows skipping).
15
+ */
16
+ export declare function isForward(current: TaskStage, target: TaskStage): boolean;
17
+ /**
18
+ * Validate that a stage progression is valid.
19
+ *
20
+ * Rules (FS-SS-030-0001):
21
+ * - SR-001: Only forward progression (never backward)
22
+ * - SR-002: Intermediate stages may be skipped
23
+ * - SR-003: Release is the final stage
24
+ * - SR-004: Dropped status locks the task — no stage changes
25
+ * - SR-005: Same-stage transitions are rejected
26
+ *
27
+ * @param currentStage - The task's current stage
28
+ * @param targetStage - The desired target stage
29
+ * @param taskStatus - The task's current status (to check Dropped lock)
30
+ * @throws StageInvalidError if target is not a valid stage
31
+ * @throws StageLockedError if task is Dropped
32
+ * @throws StageNoProgressError if target is same as current
33
+ * @throws StageBackwardError if target is backward of current
34
+ */
35
+ export declare function validateProgression(currentStage: TaskStage, targetStage: TaskStage, taskStatus: string): void;
36
+ //# sourceMappingURL=stage-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage-validator.d.ts","sourceRoot":"","sources":["../../src/services/stage-validator.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAOlD,gDAAgD;AAChD,eAAO,MAAM,gBAAgB,EAAE,SAAS,EASvC,CAAC;AAEF;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,SAAS,EAAE,CAE5C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAIxE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,SAAS,EACvB,WAAW,EAAE,SAAS,EACtB,UAAU,EAAE,MAAM,GACjB,IAAI,CAeN"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ // Stage progression validator
3
+ // Pure function module — validates one-way forward stage progression
4
+ // Implements AD-0031: Stage-Driven Workflow Engine
5
+ // + FS-SS-030-0001 (stage progression engine)
6
+ // + FS-SS-030-0003 (task stage assignment)
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.CANONICAL_STAGES = void 0;
9
+ exports.isValidStage = isValidStage;
10
+ exports.getValidStages = getValidStages;
11
+ exports.isForward = isForward;
12
+ exports.validateProgression = validateProgression;
13
+ const errors_1 = require("../utils/errors");
14
+ /** Canonical stage sequence in forward order */
15
+ exports.CANONICAL_STAGES = [
16
+ 'Planning',
17
+ 'Requirement',
18
+ 'Specification',
19
+ 'Design',
20
+ 'Test Plan',
21
+ 'Implementation',
22
+ 'Testing',
23
+ 'Release',
24
+ ];
25
+ /**
26
+ * Check if a given string is a valid stage value.
27
+ */
28
+ function isValidStage(stage) {
29
+ return exports.CANONICAL_STAGES.includes(stage);
30
+ }
31
+ /**
32
+ * Return the canonical stage sequence.
33
+ */
34
+ function getValidStages() {
35
+ return [...exports.CANONICAL_STAGES];
36
+ }
37
+ /**
38
+ * Check if target stage is strictly forward of current stage in the canonical sequence.
39
+ * Returns true if target position > current position (allows skipping).
40
+ */
41
+ function isForward(current, target) {
42
+ const currentIdx = exports.CANONICAL_STAGES.indexOf(current);
43
+ const targetIdx = exports.CANONICAL_STAGES.indexOf(target);
44
+ return targetIdx > currentIdx;
45
+ }
46
+ /**
47
+ * Validate that a stage progression is valid.
48
+ *
49
+ * Rules (FS-SS-030-0001):
50
+ * - SR-001: Only forward progression (never backward)
51
+ * - SR-002: Intermediate stages may be skipped
52
+ * - SR-003: Release is the final stage
53
+ * - SR-004: Dropped status locks the task — no stage changes
54
+ * - SR-005: Same-stage transitions are rejected
55
+ *
56
+ * @param currentStage - The task's current stage
57
+ * @param targetStage - The desired target stage
58
+ * @param taskStatus - The task's current status (to check Dropped lock)
59
+ * @throws StageInvalidError if target is not a valid stage
60
+ * @throws StageLockedError if task is Dropped
61
+ * @throws StageNoProgressError if target is same as current
62
+ * @throws StageBackwardError if target is backward of current
63
+ */
64
+ function validateProgression(currentStage, targetStage, taskStatus) {
65
+ // Check Dropped lock first
66
+ if (taskStatus === 'Dropped') {
67
+ throw new errors_1.StageLockedError('(task)');
68
+ }
69
+ // Check same-stage no-op
70
+ if (currentStage === targetStage) {
71
+ throw new errors_1.StageNoProgressError('(task)', currentStage);
72
+ }
73
+ // Check forward progression
74
+ if (!isForward(currentStage, targetStage)) {
75
+ throw new errors_1.StageBackwardError(currentStage, targetStage);
76
+ }
77
+ }
78
+ //# sourceMappingURL=stage-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stage-validator.js","sourceRoot":"","sources":["../../src/services/stage-validator.ts"],"names":[],"mappings":";AAAA,8BAA8B;AAC9B,qEAAqE;AACrE,mDAAmD;AACnD,8CAA8C;AAC9C,2CAA2C;;;AAwB3C,oCAEC;AAKD,wCAEC;AAMD,8BAIC;AAoBD,kDAmBC;AA/ED,4CAIyB;AAEzB,gDAAgD;AACnC,QAAA,gBAAgB,GAAgB;IAC3C,UAAU;IACV,aAAa;IACb,eAAe;IACf,QAAQ;IACR,WAAW;IACX,gBAAgB;IAChB,SAAS;IACT,SAAS;CACV,CAAC;AAEF;;GAEG;AACH,SAAgB,YAAY,CAAC,KAAa;IACxC,OAAQ,wBAAsC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc;IAC5B,OAAO,CAAC,GAAG,wBAAgB,CAAC,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,OAAkB,EAAE,MAAiB;IAC7D,MAAM,UAAU,GAAG,wBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,wBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,SAAS,GAAG,UAAU,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,mBAAmB,CACjC,YAAuB,EACvB,WAAsB,EACtB,UAAkB;IAElB,2BAA2B;IAC3B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,yBAAgB,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,yBAAyB;IACzB,IAAI,YAAY,KAAK,WAAW,EAAE,CAAC;QACjC,MAAM,IAAI,6BAAoB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACzD,CAAC;IAED,4BAA4B;IAC5B,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,2BAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC"}
@@ -0,0 +1,75 @@
1
+ import type Database from 'better-sqlite3';
2
+ import type { Task, TaskResult, TaskDetail, TaskAddOptions, TaskMoveContext, TaskUpdateFields } from '../models/task';
3
+ import type { TaskStatus } from '../models/common';
4
+ import { validateOwnerRole, isValidRole } from '../validators/owner-validator';
5
+ /**
6
+ * Add a new task to a sprint.
7
+ *
8
+ * @param db - Database connection
9
+ * @param sprintId - Sprint ID
10
+ * @param description - Task description
11
+ * @param owner - Owner role (must be valid, captain-only for Backlog)
12
+ * @param opts - Optional task properties
13
+ * @returns The created task result
14
+ * @throws TaskBadSprintError if sprint doesn't exist or is closed
15
+ * @throws TaskOwnerRequiredError if owner is empty
16
+ * @throws various owner validation errors
17
+ */
18
+ export declare function addTask(db: Database.Database, sprintId: string, description: string, owner: string, opts?: TaskAddOptions): TaskResult;
19
+ /**
20
+ * Move a task: status transition, stage transition, or combined.
21
+ *
22
+ * Per AD-0039: stage validation runs before status validation in combined moves.
23
+ * Per FR-URD-034-0004: active sprint is required — no --sprint override.
24
+ *
25
+ * @param db - Database connection
26
+ * @param taskId - Task ID (4-digit NNNN)
27
+ * @param opts - Move options: targetStatus, targetStage, context
28
+ * @returns Updated task result
29
+ */
30
+ export declare function moveTask(db: Database.Database, taskId: string, opts: {
31
+ targetStatus?: string;
32
+ targetStage?: string;
33
+ context?: TaskMoveContext;
34
+ sprintId?: string;
35
+ }): TaskResult;
36
+ /**
37
+ * Update task metadata (description, type, priority, points, scope, acceptance).
38
+ * Does NOT change task status, stage, owner, or sprint — use moveTask for those.
39
+ *
40
+ * Per AD-0038: rejects stage, owner, sprint fields at the service layer.
41
+ *
42
+ * @throws TaskNotFoundError if task doesn't exist
43
+ * @throws TaskInvalidFieldError if prohibited fields are present
44
+ */
45
+ export declare function updateTask(db: Database.Database, taskId: string, fields: TaskUpdateFields, sprintId?: string): TaskResult;
46
+ /**
47
+ * Remove a task (soft delete by default per AD-0011).
48
+ *
49
+ * @param db - Database connection
50
+ * @param taskId - Task ID
51
+ * @throws TaskNotFoundError if task doesn't exist
52
+ */
53
+ export declare function removeTask(db: Database.Database, taskId: string, sprintId?: string): void;
54
+ /**
55
+ * Show detailed task information including sprint name and parent description.
56
+ *
57
+ * @param db - Database connection
58
+ * @param taskId - Task ID
59
+ * @param sprintId - Sprint ID (required for sprint-scoped lookup per URD-026)
60
+ * @throws TaskNotFoundError if task doesn't exist or is not in the specified sprint
61
+ */
62
+ export declare function showTask(db: Database.Database, taskId: string, sprintId?: string): TaskDetail;
63
+ /**
64
+ * List tasks for a sprint with optional filters.
65
+ */
66
+ export declare function listTasks(db: Database.Database, sprintId: string, filters?: {
67
+ status?: TaskStatus;
68
+ owner?: string;
69
+ }): Task[];
70
+ /**
71
+ * Get task status counts for a sprint.
72
+ */
73
+ export declare function getTaskStatusCounts(db: Database.Database, sprintId: string): Record<string, number>;
74
+ export { isValidRole, validateOwnerRole };
75
+ //# sourceMappingURL=task.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/services/task.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtH,OAAO,KAAK,EAAE,UAAU,EAA+C,MAAM,kBAAkB,CAAC;AAwBhG,OAAO,EAAyB,iBAAiB,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AA4DtG;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CACrB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,cAAc,GACpB,UAAU,CAoGZ;AAmBD;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CACtB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IACJ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,UAAU,CAmHZ;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,EACxB,QAAQ,CAAC,EAAE,MAAM,GAChB,UAAU,CA6HZ;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAgCN;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CAwB7F;AAED;;GAEG;AACH,wBAAgB,SAAS,CACvB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,IAAI,EAAE,CAuBR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxB;AAGD,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC"}