@schnick371/devsteps-shared 1.1.0-next.4 → 2.0.0-next.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 (1156) hide show
  1. package/LICENSE.md +115 -0
  2. package/README.md +12 -30
  3. package/dist/constants/index.d.ts +40 -56
  4. package/dist/constants/index.d.ts.map +1 -1
  5. package/dist/constants/index.js +7 -23
  6. package/dist/constants/index.js.map +1 -1
  7. package/dist/core/add-batch-input.d.ts +28 -0
  8. package/dist/core/add-batch-input.d.ts.map +1 -0
  9. package/dist/core/add-batch-input.js +106 -0
  10. package/dist/core/add-batch-input.js.map +1 -0
  11. package/dist/core/add-batch.d.ts +37 -0
  12. package/dist/core/add-batch.d.ts.map +1 -0
  13. package/dist/core/add-batch.js +219 -0
  14. package/dist/core/add-batch.js.map +1 -0
  15. package/dist/core/add-preparation.d.ts +40 -0
  16. package/dist/core/add-preparation.d.ts.map +1 -0
  17. package/dist/core/add-preparation.js +208 -0
  18. package/dist/core/add-preparation.js.map +1 -0
  19. package/dist/core/add.d.ts +29 -6
  20. package/dist/core/add.d.ts.map +1 -1
  21. package/dist/core/add.js +54 -64
  22. package/dist/core/add.js.map +1 -1
  23. package/dist/core/archive.d.ts +18 -3
  24. package/dist/core/archive.d.ts.map +1 -1
  25. package/dist/core/archive.js +80 -35
  26. package/dist/core/archive.js.map +1 -1
  27. package/dist/core/auto-migrate-detect.d.ts +51 -16
  28. package/dist/core/auto-migrate-detect.d.ts.map +1 -1
  29. package/dist/core/auto-migrate-detect.js +128 -29
  30. package/dist/core/auto-migrate-detect.js.map +1 -1
  31. package/dist/core/auto-migrate-folders.d.ts +35 -0
  32. package/dist/core/auto-migrate-folders.d.ts.map +1 -0
  33. package/dist/core/auto-migrate-folders.js +104 -0
  34. package/dist/core/auto-migrate-folders.js.map +1 -0
  35. package/dist/core/auto-migrate-impl.d.ts +12 -10
  36. package/dist/core/auto-migrate-impl.d.ts.map +1 -1
  37. package/dist/core/auto-migrate-impl.js +79 -64
  38. package/dist/core/auto-migrate-impl.js.map +1 -1
  39. package/dist/core/auto-migrate.d.ts +16 -20
  40. package/dist/core/auto-migrate.d.ts.map +1 -1
  41. package/dist/core/auto-migrate.js +65 -56
  42. package/dist/core/auto-migrate.js.map +1 -1
  43. package/dist/core/board.d.ts +34 -0
  44. package/dist/core/board.d.ts.map +1 -0
  45. package/dist/core/board.js +64 -0
  46. package/dist/core/board.js.map +1 -0
  47. package/dist/core/bulk-update.d.ts +2 -0
  48. package/dist/core/bulk-update.d.ts.map +1 -1
  49. package/dist/core/bulk-update.js +45 -76
  50. package/dist/core/bulk-update.js.map +1 -1
  51. package/dist/core/child-relations.d.ts +26 -0
  52. package/dist/core/child-relations.d.ts.map +1 -0
  53. package/dist/core/child-relations.js +50 -0
  54. package/dist/core/child-relations.js.map +1 -0
  55. package/dist/core/classification-defaults.d.ts +20 -0
  56. package/dist/core/classification-defaults.d.ts.map +1 -0
  57. package/dist/core/classification-defaults.js +253 -0
  58. package/dist/core/classification-defaults.js.map +1 -0
  59. package/dist/core/classification-exports.d.ts +16 -0
  60. package/dist/core/classification-exports.d.ts.map +1 -0
  61. package/dist/core/classification-exports.js +16 -0
  62. package/dist/core/classification-exports.js.map +1 -0
  63. package/dist/core/classification-gate.d.ts +86 -0
  64. package/dist/core/classification-gate.d.ts.map +1 -0
  65. package/dist/core/classification-gate.js +250 -0
  66. package/dist/core/classification-gate.js.map +1 -0
  67. package/dist/core/classification-leaf.d.ts +50 -0
  68. package/dist/core/classification-leaf.d.ts.map +1 -0
  69. package/dist/core/classification-leaf.js +134 -0
  70. package/dist/core/classification-leaf.js.map +1 -0
  71. package/dist/core/classification-registry-action.d.ts +34 -0
  72. package/dist/core/classification-registry-action.d.ts.map +1 -0
  73. package/dist/core/classification-registry-action.js +71 -0
  74. package/dist/core/classification-registry-action.js.map +1 -0
  75. package/dist/core/classification-registry-ops.d.ts +30 -0
  76. package/dist/core/classification-registry-ops.d.ts.map +1 -0
  77. package/dist/core/classification-registry-ops.js +122 -0
  78. package/dist/core/classification-registry-ops.js.map +1 -0
  79. package/dist/core/classification-registry.d.ts +132 -0
  80. package/dist/core/classification-registry.d.ts.map +1 -0
  81. package/dist/core/classification-registry.js +141 -0
  82. package/dist/core/classification-registry.js.map +1 -0
  83. package/dist/core/classification-resolve.d.ts +31 -0
  84. package/dist/core/classification-resolve.d.ts.map +1 -0
  85. package/dist/core/classification-resolve.js +69 -0
  86. package/dist/core/classification-resolve.js.map +1 -0
  87. package/dist/core/classification-score.d.ts +50 -0
  88. package/dist/core/classification-score.d.ts.map +1 -0
  89. package/dist/core/classification-score.js +107 -0
  90. package/dist/core/classification-score.js.map +1 -0
  91. package/dist/core/classification-snapshot.d.ts +55 -0
  92. package/dist/core/classification-snapshot.d.ts.map +1 -0
  93. package/dist/core/classification-snapshot.js +85 -0
  94. package/dist/core/classification-snapshot.js.map +1 -0
  95. package/dist/core/closeout-branch-record.d.ts +56 -0
  96. package/dist/core/closeout-branch-record.d.ts.map +1 -0
  97. package/dist/core/closeout-branch-record.js +201 -0
  98. package/dist/core/closeout-branch-record.js.map +1 -0
  99. package/dist/core/closeout-classify.d.ts +25 -0
  100. package/dist/core/closeout-classify.d.ts.map +1 -0
  101. package/dist/core/closeout-classify.js +271 -0
  102. package/dist/core/closeout-classify.js.map +1 -0
  103. package/dist/core/closeout-git.d.ts +52 -0
  104. package/dist/core/closeout-git.d.ts.map +1 -0
  105. package/dist/core/closeout-git.js +94 -0
  106. package/dist/core/closeout-git.js.map +1 -0
  107. package/dist/core/closeout-handover-draft.d.ts +19 -0
  108. package/dist/core/closeout-handover-draft.d.ts.map +1 -0
  109. package/dist/core/closeout-handover-draft.js +144 -0
  110. package/dist/core/closeout-handover-draft.js.map +1 -0
  111. package/dist/core/closeout-inventory.d.ts +18 -0
  112. package/dist/core/closeout-inventory.d.ts.map +1 -0
  113. package/dist/core/closeout-inventory.js +251 -0
  114. package/dist/core/closeout-inventory.js.map +1 -0
  115. package/dist/core/closeout-preserve.d.ts +23 -0
  116. package/dist/core/closeout-preserve.d.ts.map +1 -0
  117. package/dist/core/closeout-preserve.js +123 -0
  118. package/dist/core/closeout-preserve.js.map +1 -0
  119. package/dist/core/closeout-record-write.d.ts +29 -0
  120. package/dist/core/closeout-record-write.d.ts.map +1 -0
  121. package/dist/core/closeout-record-write.js +69 -0
  122. package/dist/core/closeout-record-write.js.map +1 -0
  123. package/dist/core/closeout-repository.d.ts +16 -0
  124. package/dist/core/closeout-repository.d.ts.map +1 -0
  125. package/dist/core/closeout-repository.js +84 -0
  126. package/dist/core/closeout-repository.js.map +1 -0
  127. package/dist/core/closeout-rescue-refs.d.ts +18 -0
  128. package/dist/core/closeout-rescue-refs.d.ts.map +1 -0
  129. package/dist/core/closeout-rescue-refs.js +90 -0
  130. package/dist/core/closeout-rescue-refs.js.map +1 -0
  131. package/dist/core/closeout-rescue-run.d.ts +29 -0
  132. package/dist/core/closeout-rescue-run.d.ts.map +1 -0
  133. package/dist/core/closeout-rescue-run.js +66 -0
  134. package/dist/core/closeout-rescue-run.js.map +1 -0
  135. package/dist/core/closeout-rescue.d.ts +66 -0
  136. package/dist/core/closeout-rescue.d.ts.map +1 -0
  137. package/dist/core/closeout-rescue.js +302 -0
  138. package/dist/core/closeout-rescue.js.map +1 -0
  139. package/dist/core/closeout-rows.d.ts +10 -0
  140. package/dist/core/closeout-rows.d.ts.map +1 -0
  141. package/dist/core/closeout-rows.js +103 -0
  142. package/dist/core/closeout-rows.js.map +1 -0
  143. package/dist/core/closeout-secrets.d.ts +20 -0
  144. package/dist/core/closeout-secrets.d.ts.map +1 -0
  145. package/dist/core/closeout-secrets.js +119 -0
  146. package/dist/core/closeout-secrets.js.map +1 -0
  147. package/dist/core/closeout-types.d.ts +140 -0
  148. package/dist/core/closeout-types.d.ts.map +1 -0
  149. package/dist/core/closeout-types.js +9 -0
  150. package/dist/core/closeout-types.js.map +1 -0
  151. package/dist/core/closeout-worktree-links.d.ts +27 -0
  152. package/dist/core/closeout-worktree-links.d.ts.map +1 -0
  153. package/dist/core/closeout-worktree-links.js +112 -0
  154. package/dist/core/closeout-worktree-links.js.map +1 -0
  155. package/dist/core/closeout-worktrees.d.ts +54 -0
  156. package/dist/core/closeout-worktrees.d.ts.map +1 -0
  157. package/dist/core/closeout-worktrees.js +250 -0
  158. package/dist/core/closeout-worktrees.js.map +1 -0
  159. package/dist/core/commit-hint.d.ts +30 -0
  160. package/dist/core/commit-hint.d.ts.map +1 -0
  161. package/dist/core/commit-hint.js +34 -0
  162. package/dist/core/commit-hint.js.map +1 -0
  163. package/dist/core/compass-chain.d.ts +32 -0
  164. package/dist/core/compass-chain.d.ts.map +1 -0
  165. package/dist/core/compass-chain.js +90 -0
  166. package/dist/core/compass-chain.js.map +1 -0
  167. package/dist/core/compass-render.d.ts +16 -0
  168. package/dist/core/compass-render.d.ts.map +1 -0
  169. package/dist/core/compass-render.js +87 -0
  170. package/dist/core/compass-render.js.map +1 -0
  171. package/dist/core/compass-types.d.ts +93 -0
  172. package/dist/core/compass-types.d.ts.map +1 -0
  173. package/dist/core/compass-types.js +12 -0
  174. package/dist/core/compass-types.js.map +1 -0
  175. package/dist/core/compass.d.ts +31 -0
  176. package/dist/core/compass.d.ts.map +1 -0
  177. package/dist/core/compass.js +207 -0
  178. package/dist/core/compass.js.map +1 -0
  179. package/dist/core/config.d.ts +11 -0
  180. package/dist/core/config.d.ts.map +1 -1
  181. package/dist/core/config.js +33 -0
  182. package/dist/core/config.js.map +1 -1
  183. package/dist/core/context-items.d.ts +61 -0
  184. package/dist/core/context-items.d.ts.map +1 -0
  185. package/dist/core/context-items.js +111 -0
  186. package/dist/core/context-items.js.map +1 -0
  187. package/dist/core/context-render.d.ts +23 -0
  188. package/dist/core/context-render.d.ts.map +1 -0
  189. package/dist/core/context-render.js +228 -0
  190. package/dist/core/context-render.js.map +1 -0
  191. package/dist/core/context.d.ts +5 -35
  192. package/dist/core/context.d.ts.map +1 -1
  193. package/dist/core/context.js +11 -316
  194. package/dist/core/context.js.map +1 -1
  195. package/dist/core/coord-handover-notice.d.ts +32 -0
  196. package/dist/core/coord-handover-notice.d.ts.map +1 -0
  197. package/dist/core/coord-handover-notice.js +66 -0
  198. package/dist/core/coord-handover-notice.js.map +1 -0
  199. package/dist/core/coord-input.d.ts +106 -0
  200. package/dist/core/coord-input.d.ts.map +1 -0
  201. package/dist/core/coord-input.js +142 -0
  202. package/dist/core/coord-input.js.map +1 -0
  203. package/dist/core/coord-journal.d.ts +28 -0
  204. package/dist/core/coord-journal.d.ts.map +1 -0
  205. package/dist/core/coord-journal.js +51 -0
  206. package/dist/core/coord-journal.js.map +1 -0
  207. package/dist/core/coord-paths.d.ts +30 -0
  208. package/dist/core/coord-paths.d.ts.map +1 -0
  209. package/dist/core/coord-paths.js +65 -0
  210. package/dist/core/coord-paths.js.map +1 -0
  211. package/dist/core/coord-read.d.ts +135 -0
  212. package/dist/core/coord-read.d.ts.map +1 -0
  213. package/dist/core/coord-read.js +154 -0
  214. package/dist/core/coord-read.js.map +1 -0
  215. package/dist/core/coord-store.d.ts +51 -0
  216. package/dist/core/coord-store.d.ts.map +1 -0
  217. package/dist/core/coord-store.js +188 -0
  218. package/dist/core/coord-store.js.map +1 -0
  219. package/dist/core/coord-summary.d.ts +23 -0
  220. package/dist/core/coord-summary.d.ts.map +1 -0
  221. package/dist/core/coord-summary.js +70 -0
  222. package/dist/core/coord-summary.js.map +1 -0
  223. package/dist/core/coord-sweep.d.ts +20 -0
  224. package/dist/core/coord-sweep.d.ts.map +1 -0
  225. package/dist/core/coord-sweep.js +60 -0
  226. package/dist/core/coord-sweep.js.map +1 -0
  227. package/dist/core/coord-target.d.ts +13 -0
  228. package/dist/core/coord-target.d.ts.map +1 -0
  229. package/dist/core/coord-target.js +20 -0
  230. package/dist/core/coord-target.js.map +1 -0
  231. package/dist/core/coord-write.d.ts +43 -0
  232. package/dist/core/coord-write.d.ts.map +1 -0
  233. package/dist/core/coord-write.js +210 -0
  234. package/dist/core/coord-write.js.map +1 -0
  235. package/dist/core/coordination-text.d.ts +49 -0
  236. package/dist/core/coordination-text.d.ts.map +1 -0
  237. package/dist/core/coordination-text.js +159 -0
  238. package/dist/core/coordination-text.js.map +1 -0
  239. package/dist/core/counter-lock-owner.d.ts +33 -0
  240. package/dist/core/counter-lock-owner.d.ts.map +1 -0
  241. package/dist/core/counter-lock-owner.js +129 -0
  242. package/dist/core/counter-lock-owner.js.map +1 -0
  243. package/dist/core/counter-lock-types.d.ts +39 -0
  244. package/dist/core/counter-lock-types.d.ts.map +1 -0
  245. package/dist/core/counter-lock-types.js +21 -0
  246. package/dist/core/counter-lock-types.js.map +1 -0
  247. package/dist/core/counter-lock.d.ts +33 -0
  248. package/dist/core/counter-lock.d.ts.map +1 -0
  249. package/dist/core/counter-lock.js +295 -0
  250. package/dist/core/counter-lock.js.map +1 -0
  251. package/dist/core/counters.d.ts +58 -0
  252. package/dist/core/counters.d.ts.map +1 -0
  253. package/dist/core/counters.js +244 -0
  254. package/dist/core/counters.js.map +1 -0
  255. package/dist/core/dashboard-insights.d.ts +101 -0
  256. package/dist/core/dashboard-insights.d.ts.map +1 -0
  257. package/dist/core/dashboard-insights.js +175 -0
  258. package/dist/core/dashboard-insights.js.map +1 -0
  259. package/dist/core/dashboard-model.d.ts +106 -0
  260. package/dist/core/dashboard-model.d.ts.map +1 -0
  261. package/dist/core/dashboard-model.js +176 -0
  262. package/dist/core/dashboard-model.js.map +1 -0
  263. package/dist/core/decision-count.d.ts +18 -0
  264. package/dist/core/decision-count.d.ts.map +1 -0
  265. package/dist/core/decision-count.js +74 -0
  266. package/dist/core/decision-count.js.map +1 -0
  267. package/dist/core/decision-question-status.d.ts +36 -0
  268. package/dist/core/decision-question-status.d.ts.map +1 -0
  269. package/dist/core/decision-question-status.js +106 -0
  270. package/dist/core/decision-question-status.js.map +1 -0
  271. package/dist/core/decision-question.d.ts +73 -0
  272. package/dist/core/decision-question.d.ts.map +1 -0
  273. package/dist/core/decision-question.js +203 -0
  274. package/dist/core/decision-question.js.map +1 -0
  275. package/dist/core/decision-round-actions.d.ts +49 -0
  276. package/dist/core/decision-round-actions.d.ts.map +1 -0
  277. package/dist/core/decision-round-actions.js +114 -0
  278. package/dist/core/decision-round-actions.js.map +1 -0
  279. package/dist/core/decision-round-owner.d.ts +29 -0
  280. package/dist/core/decision-round-owner.d.ts.map +1 -0
  281. package/dist/core/decision-round-owner.js +130 -0
  282. package/dist/core/decision-round-owner.js.map +1 -0
  283. package/dist/core/decision-round-text.d.ts +43 -0
  284. package/dist/core/decision-round-text.d.ts.map +1 -0
  285. package/dist/core/decision-round-text.js +146 -0
  286. package/dist/core/decision-round-text.js.map +1 -0
  287. package/dist/core/decision-round-types.d.ts +108 -0
  288. package/dist/core/decision-round-types.d.ts.map +1 -0
  289. package/dist/core/decision-round-types.js +11 -0
  290. package/dist/core/decision-round-types.js.map +1 -0
  291. package/dist/core/decision-round.d.ts +19 -0
  292. package/dist/core/decision-round.d.ts.map +1 -0
  293. package/dist/core/decision-round.js +166 -0
  294. package/dist/core/decision-round.js.map +1 -0
  295. package/dist/core/description-patch.d.ts +39 -0
  296. package/dist/core/description-patch.d.ts.map +1 -0
  297. package/dist/core/description-patch.js +107 -0
  298. package/dist/core/description-patch.js.map +1 -0
  299. package/dist/core/docs-assemble.d.ts +91 -0
  300. package/dist/core/docs-assemble.d.ts.map +1 -0
  301. package/dist/core/docs-assemble.js +210 -0
  302. package/dist/core/docs-assemble.js.map +1 -0
  303. package/dist/core/docs-map.d.ts +74 -0
  304. package/dist/core/docs-map.d.ts.map +1 -0
  305. package/dist/core/docs-map.js +247 -0
  306. package/dist/core/docs-map.js.map +1 -0
  307. package/dist/core/doctor-attachments.d.ts +29 -0
  308. package/dist/core/doctor-attachments.d.ts.map +1 -0
  309. package/dist/core/doctor-attachments.js +95 -0
  310. package/dist/core/doctor-attachments.js.map +1 -0
  311. package/dist/core/doctor-classification.d.ts +14 -0
  312. package/dist/core/doctor-classification.d.ts.map +1 -0
  313. package/dist/core/doctor-classification.js +55 -0
  314. package/dist/core/doctor-classification.js.map +1 -0
  315. package/dist/core/doctor-commit-evidence-git.d.ts +19 -0
  316. package/dist/core/doctor-commit-evidence-git.d.ts.map +1 -0
  317. package/dist/core/doctor-commit-evidence-git.js +278 -0
  318. package/dist/core/doctor-commit-evidence-git.js.map +1 -0
  319. package/dist/core/doctor-commit-evidence.d.ts +11 -0
  320. package/dist/core/doctor-commit-evidence.d.ts.map +1 -0
  321. package/dist/core/doctor-commit-evidence.js +139 -0
  322. package/dist/core/doctor-commit-evidence.js.map +1 -0
  323. package/dist/core/doctor-coordination.d.ts +20 -0
  324. package/dist/core/doctor-coordination.d.ts.map +1 -0
  325. package/dist/core/doctor-coordination.js +88 -0
  326. package/dist/core/doctor-coordination.js.map +1 -0
  327. package/dist/core/doctor-counters.d.ts +13 -0
  328. package/dist/core/doctor-counters.d.ts.map +1 -0
  329. package/dist/core/doctor-counters.js +46 -0
  330. package/dist/core/doctor-counters.js.map +1 -0
  331. package/dist/core/doctor-generated-files.d.ts +32 -0
  332. package/dist/core/doctor-generated-files.d.ts.map +1 -0
  333. package/dist/core/doctor-generated-files.js +178 -0
  334. package/dist/core/doctor-generated-files.js.map +1 -0
  335. package/dist/core/doctor-placeholders.d.ts +10 -0
  336. package/dist/core/doctor-placeholders.d.ts.map +1 -0
  337. package/dist/core/doctor-placeholders.js +49 -0
  338. package/dist/core/doctor-placeholders.js.map +1 -0
  339. package/dist/core/doctor-relations.d.ts +27 -0
  340. package/dist/core/doctor-relations.d.ts.map +1 -0
  341. package/dist/core/doctor-relations.js +179 -0
  342. package/dist/core/doctor-relations.js.map +1 -0
  343. package/dist/core/doctor-schema-normalize.d.ts +16 -0
  344. package/dist/core/doctor-schema-normalize.d.ts.map +1 -0
  345. package/dist/core/doctor-schema-normalize.js +63 -0
  346. package/dist/core/doctor-schema-normalize.js.map +1 -0
  347. package/dist/core/doctor-schema-repair-types.d.ts +37 -0
  348. package/dist/core/doctor-schema-repair-types.d.ts.map +1 -0
  349. package/dist/core/doctor-schema-repair-types.js +8 -0
  350. package/dist/core/doctor-schema-repair-types.js.map +1 -0
  351. package/dist/core/doctor-schema-repair.d.ts +17 -0
  352. package/dist/core/doctor-schema-repair.d.ts.map +1 -0
  353. package/dist/core/doctor-schema-repair.js +113 -0
  354. package/dist/core/doctor-schema-repair.js.map +1 -0
  355. package/dist/core/doctor-schema-set.d.ts +11 -0
  356. package/dist/core/doctor-schema-set.d.ts.map +1 -0
  357. package/dist/core/doctor-schema-set.js +57 -0
  358. package/dist/core/doctor-schema-set.js.map +1 -0
  359. package/dist/core/doctor-schema-tokens.d.ts +21 -0
  360. package/dist/core/doctor-schema-tokens.d.ts.map +1 -0
  361. package/dist/core/doctor-schema-tokens.js +88 -0
  362. package/dist/core/doctor-schema-tokens.js.map +1 -0
  363. package/dist/core/doctor-schema.d.ts +16 -0
  364. package/dist/core/doctor-schema.d.ts.map +1 -0
  365. package/dist/core/doctor-schema.js +59 -0
  366. package/dist/core/doctor-schema.js.map +1 -0
  367. package/dist/core/doctor-types.d.ts +23 -0
  368. package/dist/core/doctor-types.d.ts.map +1 -0
  369. package/dist/core/doctor-types.js +14 -0
  370. package/dist/core/doctor-types.js.map +1 -0
  371. package/dist/core/doctor.d.ts +17 -0
  372. package/dist/core/doctor.d.ts.map +1 -0
  373. package/dist/core/doctor.js +132 -0
  374. package/dist/core/doctor.js.map +1 -0
  375. package/dist/core/epic-sections.d.ts +39 -0
  376. package/dist/core/epic-sections.d.ts.map +1 -0
  377. package/dist/core/epic-sections.js +147 -0
  378. package/dist/core/epic-sections.js.map +1 -0
  379. package/dist/core/expedition-metadata.d.ts +42 -0
  380. package/dist/core/expedition-metadata.d.ts.map +1 -0
  381. package/dist/core/expedition-metadata.js +54 -0
  382. package/dist/core/expedition-metadata.js.map +1 -0
  383. package/dist/core/expedition-paths.d.ts +31 -0
  384. package/dist/core/expedition-paths.d.ts.map +1 -0
  385. package/dist/core/expedition-paths.js +52 -0
  386. package/dist/core/expedition-paths.js.map +1 -0
  387. package/dist/core/export-render.d.ts +29 -0
  388. package/dist/core/export-render.d.ts.map +1 -0
  389. package/dist/core/export-render.js +105 -0
  390. package/dist/core/export-render.js.map +1 -0
  391. package/dist/core/export.d.ts +24 -0
  392. package/dist/core/export.d.ts.map +1 -0
  393. package/dist/core/export.js +61 -0
  394. package/dist/core/export.js.map +1 -0
  395. package/dist/core/focus-work.d.ts +13 -0
  396. package/dist/core/focus-work.d.ts.map +1 -0
  397. package/dist/core/focus-work.js +13 -0
  398. package/dist/core/focus-work.js.map +1 -0
  399. package/dist/core/focus.d.ts +35 -0
  400. package/dist/core/focus.d.ts.map +1 -0
  401. package/dist/core/focus.js +60 -0
  402. package/dist/core/focus.js.map +1 -0
  403. package/dist/core/frontmatter.d.ts +58 -0
  404. package/dist/core/frontmatter.d.ts.map +1 -0
  405. package/dist/core/frontmatter.js +178 -0
  406. package/dist/core/frontmatter.js.map +1 -0
  407. package/dist/core/get-fields.d.ts +27 -0
  408. package/dist/core/get-fields.d.ts.map +1 -0
  409. package/dist/core/get-fields.js +60 -0
  410. package/dist/core/get-fields.js.map +1 -0
  411. package/dist/core/get.d.ts +36 -2
  412. package/dist/core/get.d.ts.map +1 -1
  413. package/dist/core/get.js +54 -12
  414. package/dist/core/get.js.map +1 -1
  415. package/dist/core/guide-acceptance.d.ts +21 -0
  416. package/dist/core/guide-acceptance.d.ts.map +1 -0
  417. package/dist/core/guide-acceptance.js +311 -0
  418. package/dist/core/guide-acceptance.js.map +1 -0
  419. package/dist/core/guide-step-list.d.ts +25 -0
  420. package/dist/core/guide-step-list.d.ts.map +1 -0
  421. package/dist/core/guide-step-list.js +91 -0
  422. package/dist/core/guide-step-list.js.map +1 -0
  423. package/dist/core/heuristic-classify.d.ts +44 -0
  424. package/dist/core/heuristic-classify.d.ts.map +1 -0
  425. package/dist/core/heuristic-classify.js +147 -0
  426. package/dist/core/heuristic-classify.js.map +1 -0
  427. package/dist/core/host-config.d.ts +80 -0
  428. package/dist/core/host-config.d.ts.map +1 -0
  429. package/dist/core/host-config.js +121 -0
  430. package/dist/core/host-config.js.map +1 -0
  431. package/dist/core/host-setup.d.ts +146 -0
  432. package/dist/core/host-setup.d.ts.map +1 -0
  433. package/dist/core/host-setup.js +277 -0
  434. package/dist/core/host-setup.js.map +1 -0
  435. package/dist/core/import-excerpt.d.ts +9 -0
  436. package/dist/core/import-excerpt.d.ts.map +1 -0
  437. package/dist/core/import-excerpt.js +17 -0
  438. package/dist/core/import-excerpt.js.map +1 -0
  439. package/dist/core/import-materialize.d.ts +66 -0
  440. package/dist/core/import-materialize.d.ts.map +1 -0
  441. package/dist/core/import-materialize.js +217 -0
  442. package/dist/core/import-materialize.js.map +1 -0
  443. package/dist/core/import-session.d.ts +85 -0
  444. package/dist/core/import-session.d.ts.map +1 -0
  445. package/dist/core/import-session.js +192 -0
  446. package/dist/core/import-session.js.map +1 -0
  447. package/dist/core/import-source.d.ts +15 -0
  448. package/dist/core/import-source.d.ts.map +1 -0
  449. package/dist/core/import-source.js +57 -0
  450. package/dist/core/import-source.js.map +1 -0
  451. package/dist/core/index-rebuild.js.map +1 -1
  452. package/dist/core/index-refs-core.d.ts +23 -0
  453. package/dist/core/index-refs-core.d.ts.map +1 -1
  454. package/dist/core/index-refs-core.js +54 -7
  455. package/dist/core/index-refs-core.js.map +1 -1
  456. package/dist/core/index-refs.d.ts +13 -0
  457. package/dist/core/index-refs.d.ts.map +1 -1
  458. package/dist/core/index-refs.js +42 -1
  459. package/dist/core/index-refs.js.map +1 -1
  460. package/dist/core/index.d.ts +90 -8
  461. package/dist/core/index.d.ts.map +1 -1
  462. package/dist/core/index.js +90 -10
  463. package/dist/core/index.js.map +1 -1
  464. package/dist/core/init-project.d.ts +69 -0
  465. package/dist/core/init-project.d.ts.map +1 -0
  466. package/dist/core/init-project.js +177 -0
  467. package/dist/core/init-project.js.map +1 -0
  468. package/dist/core/item-attachments-error.d.ts +22 -0
  469. package/dist/core/item-attachments-error.d.ts.map +1 -0
  470. package/dist/core/item-attachments-error.js +23 -0
  471. package/dist/core/item-attachments-error.js.map +1 -0
  472. package/dist/core/item-attachments-io.d.ts +37 -0
  473. package/dist/core/item-attachments-io.d.ts.map +1 -0
  474. package/dist/core/item-attachments-io.js +156 -0
  475. package/dist/core/item-attachments-io.js.map +1 -0
  476. package/dist/core/item-attachments-storage.d.ts +15 -0
  477. package/dist/core/item-attachments-storage.d.ts.map +1 -0
  478. package/dist/core/item-attachments-storage.js +81 -0
  479. package/dist/core/item-attachments-storage.js.map +1 -0
  480. package/dist/core/item-attachments.d.ts +58 -0
  481. package/dist/core/item-attachments.d.ts.map +1 -0
  482. package/dist/core/item-attachments.js +317 -0
  483. package/dist/core/item-attachments.js.map +1 -0
  484. package/dist/core/item-paths.d.ts +70 -0
  485. package/dist/core/item-paths.d.ts.map +1 -0
  486. package/dist/core/item-paths.js +135 -0
  487. package/dist/core/item-paths.js.map +1 -0
  488. package/dist/core/item-raw.d.ts +36 -0
  489. package/dist/core/item-raw.d.ts.map +1 -0
  490. package/dist/core/item-raw.js +98 -0
  491. package/dist/core/item-raw.js.map +1 -0
  492. package/dist/core/item-store.d.ts +120 -0
  493. package/dist/core/item-store.d.ts.map +1 -0
  494. package/dist/core/item-store.js +269 -0
  495. package/dist/core/item-store.js.map +1 -0
  496. package/dist/core/item-type-availability.d.ts +9 -0
  497. package/dist/core/item-type-availability.d.ts.map +1 -0
  498. package/dist/core/item-type-availability.js +29 -0
  499. package/dist/core/item-type-availability.js.map +1 -0
  500. package/dist/core/item-validation.d.ts +35 -0
  501. package/dist/core/item-validation.d.ts.map +1 -0
  502. package/dist/core/item-validation.js +99 -0
  503. package/dist/core/item-validation.js.map +1 -0
  504. package/dist/core/item-write-pair.d.ts +25 -0
  505. package/dist/core/item-write-pair.d.ts.map +1 -0
  506. package/dist/core/item-write-pair.js +71 -0
  507. package/dist/core/item-write-pair.js.map +1 -0
  508. package/dist/core/link-conflicts.d.ts +11 -0
  509. package/dist/core/link-conflicts.d.ts.map +1 -0
  510. package/dist/core/link-conflicts.js +45 -0
  511. package/dist/core/link-conflicts.js.map +1 -0
  512. package/dist/core/link-write.d.ts +15 -0
  513. package/dist/core/link-write.d.ts.map +1 -0
  514. package/dist/core/link-write.js +63 -0
  515. package/dist/core/link-write.js.map +1 -0
  516. package/dist/core/link.d.ts +10 -0
  517. package/dist/core/link.d.ts.map +1 -1
  518. package/dist/core/link.js +52 -65
  519. package/dist/core/link.js.map +1 -1
  520. package/dist/core/list-page.d.ts +42 -0
  521. package/dist/core/list-page.d.ts.map +1 -0
  522. package/dist/core/list-page.js +70 -0
  523. package/dist/core/list-page.js.map +1 -0
  524. package/dist/core/list.d.ts +36 -3
  525. package/dist/core/list.d.ts.map +1 -1
  526. package/dist/core/list.js +67 -107
  527. package/dist/core/list.js.map +1 -1
  528. package/dist/core/markdown-heading-ranges.d.ts +23 -0
  529. package/dist/core/markdown-heading-ranges.d.ts.map +1 -0
  530. package/dist/core/markdown-heading-ranges.js +163 -0
  531. package/dist/core/markdown-heading-ranges.js.map +1 -0
  532. package/dist/core/path-guard.d.ts +48 -0
  533. package/dist/core/path-guard.d.ts.map +1 -0
  534. package/dist/core/path-guard.js +120 -0
  535. package/dist/core/path-guard.js.map +1 -0
  536. package/dist/core/process-definition-hint.d.ts +16 -0
  537. package/dist/core/process-definition-hint.d.ts.map +1 -0
  538. package/dist/core/process-definition-hint.js +37 -0
  539. package/dist/core/process-definition-hint.js.map +1 -0
  540. package/dist/core/project-status.d.ts +56 -0
  541. package/dist/core/project-status.d.ts.map +1 -0
  542. package/dist/core/project-status.js +94 -0
  543. package/dist/core/project-status.js.map +1 -0
  544. package/dist/core/promote.d.ts +26 -0
  545. package/dist/core/promote.d.ts.map +1 -0
  546. package/dist/core/promote.js +62 -0
  547. package/dist/core/promote.js.map +1 -0
  548. package/dist/core/relationship-completeness.d.ts +32 -0
  549. package/dist/core/relationship-completeness.d.ts.map +1 -0
  550. package/dist/core/relationship-completeness.js +82 -0
  551. package/dist/core/relationship-completeness.js.map +1 -0
  552. package/dist/core/relationship-lock.d.ts +2 -0
  553. package/dist/core/relationship-lock.d.ts.map +1 -0
  554. package/dist/core/relationship-lock.js +32 -0
  555. package/dist/core/relationship-lock.js.map +1 -0
  556. package/dist/core/relationship-map.d.ts +10 -0
  557. package/dist/core/relationship-map.d.ts.map +1 -0
  558. package/dist/core/relationship-map.js +25 -0
  559. package/dist/core/relationship-map.js.map +1 -0
  560. package/dist/core/search.d.ts +53 -0
  561. package/dist/core/search.d.ts.map +1 -0
  562. package/dist/core/search.js +122 -0
  563. package/dist/core/search.js.map +1 -0
  564. package/dist/core/task-workflow-loader.d.ts +37 -0
  565. package/dist/core/task-workflow-loader.d.ts.map +1 -0
  566. package/dist/core/task-workflow-loader.js +162 -0
  567. package/dist/core/task-workflow-loader.js.map +1 -0
  568. package/dist/core/test-workflow-loader.d.ts +32 -0
  569. package/dist/core/test-workflow-loader.d.ts.map +1 -0
  570. package/dist/core/test-workflow-loader.js +98 -0
  571. package/dist/core/test-workflow-loader.js.map +1 -0
  572. package/dist/core/trace.d.ts +51 -0
  573. package/dist/core/trace.d.ts.map +1 -0
  574. package/dist/core/trace.js +193 -0
  575. package/dist/core/trace.js.map +1 -0
  576. package/dist/core/traceability-narrative.d.ts +67 -0
  577. package/dist/core/traceability-narrative.d.ts.map +1 -0
  578. package/dist/core/traceability-narrative.js +149 -0
  579. package/dist/core/traceability-narrative.js.map +1 -0
  580. package/dist/core/unlink.d.ts +4 -0
  581. package/dist/core/unlink.d.ts.map +1 -1
  582. package/dist/core/unlink.js +62 -56
  583. package/dist/core/unlink.js.map +1 -1
  584. package/dist/core/update-category-receipt.d.ts +19 -0
  585. package/dist/core/update-category-receipt.d.ts.map +1 -0
  586. package/dist/core/update-category-receipt.js +25 -0
  587. package/dist/core/update-category-receipt.js.map +1 -0
  588. package/dist/core/update-category.d.ts +12 -0
  589. package/dist/core/update-category.d.ts.map +1 -0
  590. package/dist/core/update-category.js +59 -0
  591. package/dist/core/update-category.js.map +1 -0
  592. package/dist/core/update-reminders.d.ts +30 -0
  593. package/dist/core/update-reminders.d.ts.map +1 -0
  594. package/dist/core/update-reminders.js +48 -0
  595. package/dist/core/update-reminders.js.map +1 -0
  596. package/dist/core/update.d.ts +46 -2
  597. package/dist/core/update.d.ts.map +1 -1
  598. package/dist/core/update.js +182 -28
  599. package/dist/core/update.js.map +1 -1
  600. package/dist/core/validation.d.ts +4 -2
  601. package/dist/core/validation.d.ts.map +1 -1
  602. package/dist/core/validation.js +61 -29
  603. package/dist/core/validation.js.map +1 -1
  604. package/dist/core/workflow-compiler-host-rules.d.ts +32 -0
  605. package/dist/core/workflow-compiler-host-rules.d.ts.map +1 -0
  606. package/dist/core/workflow-compiler-host-rules.js +266 -0
  607. package/dist/core/workflow-compiler-host-rules.js.map +1 -0
  608. package/dist/core/workflow-compiler-loop-rules.d.ts +13 -0
  609. package/dist/core/workflow-compiler-loop-rules.d.ts.map +1 -0
  610. package/dist/core/workflow-compiler-loop-rules.js +31 -0
  611. package/dist/core/workflow-compiler-loop-rules.js.map +1 -0
  612. package/dist/core/workflow-compiler-optional-rules.d.ts +14 -0
  613. package/dist/core/workflow-compiler-optional-rules.d.ts.map +1 -0
  614. package/dist/core/workflow-compiler-optional-rules.js +76 -0
  615. package/dist/core/workflow-compiler-optional-rules.js.map +1 -0
  616. package/dist/core/workflow-compiler-party-rules.d.ts +22 -0
  617. package/dist/core/workflow-compiler-party-rules.d.ts.map +1 -0
  618. package/dist/core/workflow-compiler-party-rules.js +146 -0
  619. package/dist/core/workflow-compiler-party-rules.js.map +1 -0
  620. package/dist/core/workflow-compiler-rules.d.ts +27 -0
  621. package/dist/core/workflow-compiler-rules.d.ts.map +1 -0
  622. package/dist/core/workflow-compiler-rules.js +284 -0
  623. package/dist/core/workflow-compiler-rules.js.map +1 -0
  624. package/dist/core/workflow-compiler-section-rules.d.ts +13 -0
  625. package/dist/core/workflow-compiler-section-rules.d.ts.map +1 -0
  626. package/dist/core/workflow-compiler-section-rules.js +57 -0
  627. package/dist/core/workflow-compiler-section-rules.js.map +1 -0
  628. package/dist/core/workflow-compiler-text-rules.d.ts +18 -0
  629. package/dist/core/workflow-compiler-text-rules.d.ts.map +1 -0
  630. package/dist/core/workflow-compiler-text-rules.js +82 -0
  631. package/dist/core/workflow-compiler-text-rules.js.map +1 -0
  632. package/dist/core/workflow-compiler.d.ts +52 -0
  633. package/dist/core/workflow-compiler.d.ts.map +1 -0
  634. package/dist/core/workflow-compiler.js +130 -0
  635. package/dist/core/workflow-compiler.js.map +1 -0
  636. package/dist/core/workflow-definition-facts.d.ts +32 -0
  637. package/dist/core/workflow-definition-facts.d.ts.map +1 -0
  638. package/dist/core/workflow-definition-facts.js +48 -0
  639. package/dist/core/workflow-definition-facts.js.map +1 -0
  640. package/dist/core/workflow-exports.d.ts +17 -0
  641. package/dist/core/workflow-exports.d.ts.map +1 -0
  642. package/dist/core/workflow-exports.js +17 -0
  643. package/dist/core/workflow-exports.js.map +1 -0
  644. package/dist/core/workflow-host-profiles.d.ts +44 -0
  645. package/dist/core/workflow-host-profiles.d.ts.map +1 -0
  646. package/dist/core/workflow-host-profiles.js +147 -0
  647. package/dist/core/workflow-host-profiles.js.map +1 -0
  648. package/dist/core/workflow-v2-authoring.d.ts +22 -0
  649. package/dist/core/workflow-v2-authoring.d.ts.map +1 -0
  650. package/dist/core/workflow-v2-authoring.js +88 -0
  651. package/dist/core/workflow-v2-authoring.js.map +1 -0
  652. package/dist/core/workflow-v2-loader.d.ts +26 -0
  653. package/dist/core/workflow-v2-loader.d.ts.map +1 -0
  654. package/dist/core/workflow-v2-loader.js +50 -0
  655. package/dist/core/workflow-v2-loader.js.map +1 -0
  656. package/dist/core/write-diagnostics.d.ts +69 -0
  657. package/dist/core/write-diagnostics.d.ts.map +1 -0
  658. package/dist/core/write-diagnostics.js +126 -0
  659. package/dist/core/write-diagnostics.js.map +1 -0
  660. package/dist/index.d.ts +7 -1
  661. package/dist/index.d.ts.map +1 -1
  662. package/dist/index.js +7 -1
  663. package/dist/index.js.map +1 -1
  664. package/dist/runtime/controls.d.ts +26 -0
  665. package/dist/runtime/controls.d.ts.map +1 -0
  666. package/dist/runtime/controls.js +54 -0
  667. package/dist/runtime/controls.js.map +1 -0
  668. package/dist/runtime/dispatcher.d.ts +73 -0
  669. package/dist/runtime/dispatcher.d.ts.map +1 -0
  670. package/dist/runtime/dispatcher.js +178 -0
  671. package/dist/runtime/dispatcher.js.map +1 -0
  672. package/dist/runtime/event-log.d.ts +65 -0
  673. package/dist/runtime/event-log.d.ts.map +1 -0
  674. package/dist/runtime/event-log.js +189 -0
  675. package/dist/runtime/event-log.js.map +1 -0
  676. package/dist/runtime/evidence.d.ts +72 -0
  677. package/dist/runtime/evidence.d.ts.map +1 -0
  678. package/dist/runtime/evidence.js +80 -0
  679. package/dist/runtime/evidence.js.map +1 -0
  680. package/dist/runtime/guide-catalog.d.ts +70 -0
  681. package/dist/runtime/guide-catalog.d.ts.map +1 -0
  682. package/dist/runtime/guide-catalog.js +132 -0
  683. package/dist/runtime/guide-catalog.js.map +1 -0
  684. package/dist/runtime/human-checkpoint.d.ts +45 -0
  685. package/dist/runtime/human-checkpoint.d.ts.map +1 -0
  686. package/dist/runtime/human-checkpoint.js +73 -0
  687. package/dist/runtime/human-checkpoint.js.map +1 -0
  688. package/dist/runtime/index.d.ts +201 -0
  689. package/dist/runtime/index.d.ts.map +1 -0
  690. package/dist/runtime/index.js +171 -0
  691. package/dist/runtime/index.js.map +1 -0
  692. package/dist/runtime/json-path.d.ts +31 -0
  693. package/dist/runtime/json-path.d.ts.map +1 -0
  694. package/dist/runtime/json-path.js +120 -0
  695. package/dist/runtime/json-path.js.map +1 -0
  696. package/dist/runtime/predicates.d.ts +37 -0
  697. package/dist/runtime/predicates.d.ts.map +1 -0
  698. package/dist/runtime/predicates.js +185 -0
  699. package/dist/runtime/predicates.js.map +1 -0
  700. package/dist/runtime/process-report-render.d.ts +10 -0
  701. package/dist/runtime/process-report-render.d.ts.map +1 -0
  702. package/dist/runtime/process-report-render.js +93 -0
  703. package/dist/runtime/process-report-render.js.map +1 -0
  704. package/dist/runtime/process-report.d.ts +78 -0
  705. package/dist/runtime/process-report.d.ts.map +1 -0
  706. package/dist/runtime/process-report.js +228 -0
  707. package/dist/runtime/process-report.js.map +1 -0
  708. package/dist/runtime/reconciliation.d.ts +31 -0
  709. package/dist/runtime/reconciliation.d.ts.map +1 -0
  710. package/dist/runtime/reconciliation.js +42 -0
  711. package/dist/runtime/reconciliation.js.map +1 -0
  712. package/dist/runtime/redaction.d.ts +19 -0
  713. package/dist/runtime/redaction.d.ts.map +1 -0
  714. package/dist/runtime/redaction.js +80 -0
  715. package/dist/runtime/redaction.js.map +1 -0
  716. package/dist/runtime/run-catalog.d.ts +65 -0
  717. package/dist/runtime/run-catalog.d.ts.map +1 -0
  718. package/dist/runtime/run-catalog.js +218 -0
  719. package/dist/runtime/run-catalog.js.map +1 -0
  720. package/dist/runtime/run-event-payload.d.ts +52 -0
  721. package/dist/runtime/run-event-payload.d.ts.map +1 -0
  722. package/dist/runtime/run-event-payload.js +60 -0
  723. package/dist/runtime/run-event-payload.js.map +1 -0
  724. package/dist/runtime/run-history.d.ts +80 -0
  725. package/dist/runtime/run-history.d.ts.map +1 -0
  726. package/dist/runtime/run-history.js +222 -0
  727. package/dist/runtime/run-history.js.map +1 -0
  728. package/dist/runtime/run-store.d.ts +60 -0
  729. package/dist/runtime/run-store.d.ts.map +1 -0
  730. package/dist/runtime/run-store.js +233 -0
  731. package/dist/runtime/run-store.js.map +1 -0
  732. package/dist/runtime/run-trail.d.ts +112 -0
  733. package/dist/runtime/run-trail.d.ts.map +1 -0
  734. package/dist/runtime/run-trail.js +187 -0
  735. package/dist/runtime/run-trail.js.map +1 -0
  736. package/dist/runtime/state-machine.d.ts +30 -0
  737. package/dist/runtime/state-machine.d.ts.map +1 -0
  738. package/dist/runtime/state-machine.js +170 -0
  739. package/dist/runtime/state-machine.js.map +1 -0
  740. package/dist/runtime/workflow-contract.d.ts +60 -0
  741. package/dist/runtime/workflow-contract.d.ts.map +1 -0
  742. package/dist/runtime/workflow-contract.js +142 -0
  743. package/dist/runtime/workflow-contract.js.map +1 -0
  744. package/dist/runtime/workflow-response.d.ts +27 -0
  745. package/dist/runtime/workflow-response.d.ts.map +1 -0
  746. package/dist/runtime/workflow-response.js +41 -0
  747. package/dist/runtime/workflow-response.js.map +1 -0
  748. package/dist/runtime/workflow-template.d.ts +18 -0
  749. package/dist/runtime/workflow-template.d.ts.map +1 -0
  750. package/dist/runtime/workflow-template.js +65 -0
  751. package/dist/runtime/workflow-template.js.map +1 -0
  752. package/dist/runtime/workflow-v1-cancel.d.ts +30 -0
  753. package/dist/runtime/workflow-v1-cancel.d.ts.map +1 -0
  754. package/dist/runtime/workflow-v1-cancel.js +89 -0
  755. package/dist/runtime/workflow-v1-cancel.js.map +1 -0
  756. package/dist/runtime/workflow-v2-context.d.ts +27 -0
  757. package/dist/runtime/workflow-v2-context.d.ts.map +1 -0
  758. package/dist/runtime/workflow-v2-context.js +62 -0
  759. package/dist/runtime/workflow-v2-context.js.map +1 -0
  760. package/dist/runtime/workflow-v2-continuation.d.ts +23 -0
  761. package/dist/runtime/workflow-v2-continuation.d.ts.map +1 -0
  762. package/dist/runtime/workflow-v2-continuation.js +36 -0
  763. package/dist/runtime/workflow-v2-continuation.js.map +1 -0
  764. package/dist/runtime/workflow-v2-dispatch.d.ts +58 -0
  765. package/dist/runtime/workflow-v2-dispatch.d.ts.map +1 -0
  766. package/dist/runtime/workflow-v2-dispatch.js +125 -0
  767. package/dist/runtime/workflow-v2-dispatch.js.map +1 -0
  768. package/dist/runtime/workflow-v2-engine.d.ts +28 -0
  769. package/dist/runtime/workflow-v2-engine.d.ts.map +1 -0
  770. package/dist/runtime/workflow-v2-engine.js +166 -0
  771. package/dist/runtime/workflow-v2-engine.js.map +1 -0
  772. package/dist/runtime/workflow-v2-failure-route.d.ts +28 -0
  773. package/dist/runtime/workflow-v2-failure-route.d.ts.map +1 -0
  774. package/dist/runtime/workflow-v2-failure-route.js +101 -0
  775. package/dist/runtime/workflow-v2-failure-route.js.map +1 -0
  776. package/dist/runtime/workflow-v2-fields.d.ts +40 -0
  777. package/dist/runtime/workflow-v2-fields.d.ts.map +1 -0
  778. package/dist/runtime/workflow-v2-fields.js +112 -0
  779. package/dist/runtime/workflow-v2-fields.js.map +1 -0
  780. package/dist/runtime/workflow-v2-finalize.d.ts +29 -0
  781. package/dist/runtime/workflow-v2-finalize.d.ts.map +1 -0
  782. package/dist/runtime/workflow-v2-finalize.js +167 -0
  783. package/dist/runtime/workflow-v2-finalize.js.map +1 -0
  784. package/dist/runtime/workflow-v2-handover.d.ts +43 -0
  785. package/dist/runtime/workflow-v2-handover.d.ts.map +1 -0
  786. package/dist/runtime/workflow-v2-handover.js +124 -0
  787. package/dist/runtime/workflow-v2-handover.js.map +1 -0
  788. package/dist/runtime/workflow-v2-human-response.d.ts +17 -0
  789. package/dist/runtime/workflow-v2-human-response.d.ts.map +1 -0
  790. package/dist/runtime/workflow-v2-human-response.js +133 -0
  791. package/dist/runtime/workflow-v2-human-response.js.map +1 -0
  792. package/dist/runtime/workflow-v2-human.d.ts +46 -0
  793. package/dist/runtime/workflow-v2-human.d.ts.map +1 -0
  794. package/dist/runtime/workflow-v2-human.js +132 -0
  795. package/dist/runtime/workflow-v2-human.js.map +1 -0
  796. package/dist/runtime/workflow-v2-labels.d.ts +26 -0
  797. package/dist/runtime/workflow-v2-labels.d.ts.map +1 -0
  798. package/dist/runtime/workflow-v2-labels.js +75 -0
  799. package/dist/runtime/workflow-v2-labels.js.map +1 -0
  800. package/dist/runtime/workflow-v2-notes.d.ts +58 -0
  801. package/dist/runtime/workflow-v2-notes.d.ts.map +1 -0
  802. package/dist/runtime/workflow-v2-notes.js +124 -0
  803. package/dist/runtime/workflow-v2-notes.js.map +1 -0
  804. package/dist/runtime/workflow-v2-observation.d.ts +22 -0
  805. package/dist/runtime/workflow-v2-observation.d.ts.map +1 -0
  806. package/dist/runtime/workflow-v2-observation.js +163 -0
  807. package/dist/runtime/workflow-v2-observation.js.map +1 -0
  808. package/dist/runtime/workflow-v2-operator-words.d.ts +50 -0
  809. package/dist/runtime/workflow-v2-operator-words.d.ts.map +1 -0
  810. package/dist/runtime/workflow-v2-operator-words.js +93 -0
  811. package/dist/runtime/workflow-v2-operator-words.js.map +1 -0
  812. package/dist/runtime/workflow-v2-parties.d.ts +60 -0
  813. package/dist/runtime/workflow-v2-parties.d.ts.map +1 -0
  814. package/dist/runtime/workflow-v2-parties.js +115 -0
  815. package/dist/runtime/workflow-v2-parties.js.map +1 -0
  816. package/dist/runtime/workflow-v2-party-state.d.ts +75 -0
  817. package/dist/runtime/workflow-v2-party-state.d.ts.map +1 -0
  818. package/dist/runtime/workflow-v2-party-state.js +98 -0
  819. package/dist/runtime/workflow-v2-party-state.js.map +1 -0
  820. package/dist/runtime/workflow-v2-receipt.d.ts +54 -0
  821. package/dist/runtime/workflow-v2-receipt.d.ts.map +1 -0
  822. package/dist/runtime/workflow-v2-receipt.js +252 -0
  823. package/dist/runtime/workflow-v2-receipt.js.map +1 -0
  824. package/dist/runtime/workflow-v2-reply.d.ts +30 -0
  825. package/dist/runtime/workflow-v2-reply.d.ts.map +1 -0
  826. package/dist/runtime/workflow-v2-reply.js +52 -0
  827. package/dist/runtime/workflow-v2-reply.js.map +1 -0
  828. package/dist/runtime/workflow-v2-report-events.d.ts +70 -0
  829. package/dist/runtime/workflow-v2-report-events.d.ts.map +1 -0
  830. package/dist/runtime/workflow-v2-report-events.js +97 -0
  831. package/dist/runtime/workflow-v2-report-events.js.map +1 -0
  832. package/dist/runtime/workflow-v2-report-render.d.ts +18 -0
  833. package/dist/runtime/workflow-v2-report-render.d.ts.map +1 -0
  834. package/dist/runtime/workflow-v2-report-render.js +248 -0
  835. package/dist/runtime/workflow-v2-report-render.js.map +1 -0
  836. package/dist/runtime/workflow-v2-report.d.ts +134 -0
  837. package/dist/runtime/workflow-v2-report.d.ts.map +1 -0
  838. package/dist/runtime/workflow-v2-report.js +206 -0
  839. package/dist/runtime/workflow-v2-report.js.map +1 -0
  840. package/dist/runtime/workflow-v2-revise-open.d.ts +27 -0
  841. package/dist/runtime/workflow-v2-revise-open.d.ts.map +1 -0
  842. package/dist/runtime/workflow-v2-revise-open.js +79 -0
  843. package/dist/runtime/workflow-v2-revise-open.js.map +1 -0
  844. package/dist/runtime/workflow-v2-revise.d.ts +24 -0
  845. package/dist/runtime/workflow-v2-revise.d.ts.map +1 -0
  846. package/dist/runtime/workflow-v2-revise.js +192 -0
  847. package/dist/runtime/workflow-v2-revise.js.map +1 -0
  848. package/dist/runtime/workflow-v2-routing.d.ts +43 -0
  849. package/dist/runtime/workflow-v2-routing.d.ts.map +1 -0
  850. package/dist/runtime/workflow-v2-routing.js +123 -0
  851. package/dist/runtime/workflow-v2-routing.js.map +1 -0
  852. package/dist/runtime/workflow-v2-run-events.d.ts +49 -0
  853. package/dist/runtime/workflow-v2-run-events.d.ts.map +1 -0
  854. package/dist/runtime/workflow-v2-run-events.js +85 -0
  855. package/dist/runtime/workflow-v2-run-events.js.map +1 -0
  856. package/dist/runtime/workflow-v2-run.d.ts +80 -0
  857. package/dist/runtime/workflow-v2-run.d.ts.map +1 -0
  858. package/dist/runtime/workflow-v2-run.js +137 -0
  859. package/dist/runtime/workflow-v2-run.js.map +1 -0
  860. package/dist/runtime/workflow-v2-runtime-steps.d.ts +35 -0
  861. package/dist/runtime/workflow-v2-runtime-steps.d.ts.map +1 -0
  862. package/dist/runtime/workflow-v2-runtime-steps.js +138 -0
  863. package/dist/runtime/workflow-v2-runtime-steps.js.map +1 -0
  864. package/dist/runtime/workflow-v2-skip.d.ts +20 -0
  865. package/dist/runtime/workflow-v2-skip.d.ts.map +1 -0
  866. package/dist/runtime/workflow-v2-skip.js +77 -0
  867. package/dist/runtime/workflow-v2-skip.js.map +1 -0
  868. package/dist/runtime/workflow-v2-step-text.d.ts +23 -0
  869. package/dist/runtime/workflow-v2-step-text.d.ts.map +1 -0
  870. package/dist/runtime/workflow-v2-step-text.js +34 -0
  871. package/dist/runtime/workflow-v2-step-text.js.map +1 -0
  872. package/dist/runtime/workflow-v2-submission.d.ts +64 -0
  873. package/dist/runtime/workflow-v2-submission.d.ts.map +1 -0
  874. package/dist/runtime/workflow-v2-submission.js +99 -0
  875. package/dist/runtime/workflow-v2-submission.js.map +1 -0
  876. package/dist/runtime/workflow-v2-types.d.ts +208 -0
  877. package/dist/runtime/workflow-v2-types.d.ts.map +1 -0
  878. package/dist/runtime/workflow-v2-types.js +140 -0
  879. package/dist/runtime/workflow-v2-types.js.map +1 -0
  880. package/dist/runtime/workflow-v2-variables.d.ts +11 -0
  881. package/dist/runtime/workflow-v2-variables.d.ts.map +1 -0
  882. package/dist/runtime/workflow-v2-variables.js +63 -0
  883. package/dist/runtime/workflow-v2-variables.js.map +1 -0
  884. package/dist/runtime/workflow-v2-wait.d.ts +34 -0
  885. package/dist/runtime/workflow-v2-wait.d.ts.map +1 -0
  886. package/dist/runtime/workflow-v2-wait.js +53 -0
  887. package/dist/runtime/workflow-v2-wait.js.map +1 -0
  888. package/dist/runtime/workspace-fingerprint.d.ts +15 -0
  889. package/dist/runtime/workspace-fingerprint.d.ts.map +1 -0
  890. package/dist/runtime/workspace-fingerprint.js +36 -0
  891. package/dist/runtime/workspace-fingerprint.js.map +1 -0
  892. package/dist/schemas/coord.d.ts +246 -0
  893. package/dist/schemas/coord.d.ts.map +1 -0
  894. package/dist/schemas/coord.js +122 -0
  895. package/dist/schemas/coord.js.map +1 -0
  896. package/dist/schemas/counters.schema.d.ts +10 -0
  897. package/dist/schemas/counters.schema.d.ts.map +1 -0
  898. package/dist/schemas/counters.schema.js +13 -0
  899. package/dist/schemas/counters.schema.js.map +1 -0
  900. package/dist/schemas/expedition.d.ts +52 -0
  901. package/dist/schemas/expedition.d.ts.map +1 -0
  902. package/dist/schemas/expedition.js +45 -0
  903. package/dist/schemas/expedition.js.map +1 -0
  904. package/dist/schemas/guide-acceptance.d.ts +170 -0
  905. package/dist/schemas/guide-acceptance.d.ts.map +1 -0
  906. package/dist/schemas/guide-acceptance.js +93 -0
  907. package/dist/schemas/guide-acceptance.js.map +1 -0
  908. package/dist/schemas/index-refs.schema.d.ts +12 -11
  909. package/dist/schemas/index-refs.schema.d.ts.map +1 -1
  910. package/dist/schemas/index-refs.schema.js +13 -6
  911. package/dist/schemas/index-refs.schema.js.map +1 -1
  912. package/dist/schemas/index.d.ts +118 -81
  913. package/dist/schemas/index.d.ts.map +1 -1
  914. package/dist/schemas/index.js +83 -27
  915. package/dist/schemas/index.js.map +1 -1
  916. package/dist/schemas/item-id.d.ts +15 -0
  917. package/dist/schemas/item-id.d.ts.map +1 -0
  918. package/dist/schemas/item-id.js +29 -0
  919. package/dist/schemas/item-id.js.map +1 -0
  920. package/dist/schemas/relationships.d.ts +6 -7
  921. package/dist/schemas/relationships.d.ts.map +1 -1
  922. package/dist/schemas/relationships.js +11 -11
  923. package/dist/schemas/relationships.js.map +1 -1
  924. package/dist/schemas/task-workflow.d.ts +206 -0
  925. package/dist/schemas/task-workflow.d.ts.map +1 -0
  926. package/dist/schemas/task-workflow.js +102 -0
  927. package/dist/schemas/task-workflow.js.map +1 -0
  928. package/dist/schemas/test-profile.d.ts +13 -0
  929. package/dist/schemas/test-profile.d.ts.map +1 -0
  930. package/dist/schemas/test-profile.js +9 -0
  931. package/dist/schemas/test-profile.js.map +1 -0
  932. package/dist/schemas/test-workflow.d.ts +117 -0
  933. package/dist/schemas/test-workflow.d.ts.map +1 -0
  934. package/dist/schemas/test-workflow.js +69 -0
  935. package/dist/schemas/test-workflow.js.map +1 -0
  936. package/dist/schemas/workflow-definition-v2.d.ts +554 -0
  937. package/dist/schemas/workflow-definition-v2.d.ts.map +1 -0
  938. package/dist/schemas/workflow-definition-v2.js +161 -0
  939. package/dist/schemas/workflow-definition-v2.js.map +1 -0
  940. package/dist/schemas/workflow-graph.d.ts +29 -0
  941. package/dist/schemas/workflow-graph.d.ts.map +1 -0
  942. package/dist/schemas/workflow-graph.js +83 -0
  943. package/dist/schemas/workflow-graph.js.map +1 -0
  944. package/dist/schemas/workflow-v2-contracts.d.ts +248 -0
  945. package/dist/schemas/workflow-v2-contracts.d.ts.map +1 -0
  946. package/dist/schemas/workflow-v2-contracts.js +236 -0
  947. package/dist/schemas/workflow-v2-contracts.js.map +1 -0
  948. package/dist/schemas/workflow-v2-vocabulary.d.ts +93 -0
  949. package/dist/schemas/workflow-v2-vocabulary.d.ts.map +1 -0
  950. package/dist/schemas/workflow-v2-vocabulary.js +89 -0
  951. package/dist/schemas/workflow-v2-vocabulary.js.map +1 -0
  952. package/dist/templates/diataxis.d.ts +20 -0
  953. package/dist/templates/diataxis.d.ts.map +1 -0
  954. package/dist/templates/diataxis.js +176 -0
  955. package/dist/templates/diataxis.js.map +1 -0
  956. package/dist/templates/epic.d.ts +27 -0
  957. package/dist/templates/epic.d.ts.map +1 -0
  958. package/dist/templates/epic.js +67 -0
  959. package/dist/templates/epic.js.map +1 -0
  960. package/dist/templates/madr.d.ts +17 -0
  961. package/dist/templates/madr.d.ts.map +1 -0
  962. package/dist/templates/madr.js +61 -0
  963. package/dist/templates/madr.js.map +1 -0
  964. package/dist/templates/reminders.d.ts +28 -0
  965. package/dist/templates/reminders.d.ts.map +1 -0
  966. package/dist/templates/reminders.js +54 -0
  967. package/dist/templates/reminders.js.map +1 -0
  968. package/dist/templates/story.d.ts +24 -0
  969. package/dist/templates/story.d.ts.map +1 -0
  970. package/dist/templates/story.js +36 -0
  971. package/dist/templates/story.js.map +1 -0
  972. package/dist/templates/task-workflow.d.ts +9 -0
  973. package/dist/templates/task-workflow.d.ts.map +1 -0
  974. package/dist/templates/task-workflow.js +39 -0
  975. package/dist/templates/task-workflow.js.map +1 -0
  976. package/dist/templates/test-workflow.d.ts +9 -0
  977. package/dist/templates/test-workflow.d.ts.map +1 -0
  978. package/dist/templates/test-workflow.js +36 -0
  979. package/dist/templates/test-workflow.js.map +1 -0
  980. package/dist/types/commands.d.ts +1 -0
  981. package/dist/types/commands.d.ts.map +1 -1
  982. package/dist/types/commands.js +3 -0
  983. package/dist/types/commands.js.map +1 -1
  984. package/dist/types/docs-map.d.ts +110 -0
  985. package/dist/types/docs-map.d.ts.map +1 -0
  986. package/dist/types/docs-map.js +15 -0
  987. package/dist/types/docs-map.js.map +1 -0
  988. package/dist/types/index-refs.types.d.ts.map +1 -1
  989. package/dist/types/index-refs.types.js +1 -0
  990. package/dist/types/index-refs.types.js.map +1 -1
  991. package/dist/types/index.d.ts +2 -3
  992. package/dist/types/index.d.ts.map +1 -1
  993. package/dist/types/index.js +1 -1
  994. package/dist/types/index.js.map +1 -1
  995. package/dist/utils/agent-files-payload.d.ts +66 -0
  996. package/dist/utils/agent-files-payload.d.ts.map +1 -0
  997. package/dist/utils/agent-files-payload.js +153 -0
  998. package/dist/utils/agent-files-payload.js.map +1 -0
  999. package/dist/utils/agent-files-prune.d.ts +49 -0
  1000. package/dist/utils/agent-files-prune.d.ts.map +1 -0
  1001. package/dist/utils/agent-files-prune.js +164 -0
  1002. package/dist/utils/agent-files-prune.js.map +1 -0
  1003. package/dist/utils/agent-files-snapshot.d.ts +31 -0
  1004. package/dist/utils/agent-files-snapshot.d.ts.map +1 -0
  1005. package/dist/utils/agent-files-snapshot.js +128 -0
  1006. package/dist/utils/agent-files-snapshot.js.map +1 -0
  1007. package/dist/utils/atomic-write.d.ts +56 -0
  1008. package/dist/utils/atomic-write.d.ts.map +1 -0
  1009. package/dist/utils/atomic-write.js +129 -0
  1010. package/dist/utils/atomic-write.js.map +1 -0
  1011. package/dist/utils/backup-github-files.d.ts +7 -26
  1012. package/dist/utils/backup-github-files.d.ts.map +1 -1
  1013. package/dist/utils/backup-github-files.js +36 -113
  1014. package/dist/utils/backup-github-files.js.map +1 -1
  1015. package/dist/utils/cache.d.ts.map +1 -1
  1016. package/dist/utils/claude-host.d.ts +48 -0
  1017. package/dist/utils/claude-host.d.ts.map +1 -0
  1018. package/dist/utils/claude-host.js +72 -0
  1019. package/dist/utils/claude-host.js.map +1 -0
  1020. package/dist/utils/codex-config.d.ts +14 -0
  1021. package/dist/utils/codex-config.d.ts.map +1 -0
  1022. package/dist/utils/codex-config.js +93 -0
  1023. package/dist/utils/codex-config.js.map +1 -0
  1024. package/dist/utils/codex-ignore.d.ts +19 -0
  1025. package/dist/utils/codex-ignore.d.ts.map +1 -0
  1026. package/dist/utils/codex-ignore.js +92 -0
  1027. package/dist/utils/codex-ignore.js.map +1 -0
  1028. package/dist/utils/codex-manifest.d.ts +72 -0
  1029. package/dist/utils/codex-manifest.d.ts.map +1 -0
  1030. package/dist/utils/codex-manifest.js +63 -0
  1031. package/dist/utils/codex-manifest.js.map +1 -0
  1032. package/dist/utils/codex-mcp-input.d.ts +7 -0
  1033. package/dist/utils/codex-mcp-input.d.ts.map +1 -0
  1034. package/dist/utils/codex-mcp-input.js +14 -0
  1035. package/dist/utils/codex-mcp-input.js.map +1 -0
  1036. package/dist/utils/codex-payload.d.ts +19 -0
  1037. package/dist/utils/codex-payload.d.ts.map +1 -0
  1038. package/dist/utils/codex-payload.js +133 -0
  1039. package/dist/utils/codex-payload.js.map +1 -0
  1040. package/dist/utils/codex-plan.d.ts +8 -0
  1041. package/dist/utils/codex-plan.d.ts.map +1 -0
  1042. package/dist/utils/codex-plan.js +137 -0
  1043. package/dist/utils/codex-plan.js.map +1 -0
  1044. package/dist/utils/codex-setup.d.ts +12 -0
  1045. package/dist/utils/codex-setup.d.ts.map +1 -0
  1046. package/dist/utils/codex-setup.js +130 -0
  1047. package/dist/utils/codex-setup.js.map +1 -0
  1048. package/dist/utils/codex-spans.d.ts +27 -0
  1049. package/dist/utils/codex-spans.d.ts.map +1 -0
  1050. package/dist/utils/codex-spans.js +69 -0
  1051. package/dist/utils/codex-spans.js.map +1 -0
  1052. package/dist/utils/codex-state.d.ts +14 -0
  1053. package/dist/utils/codex-state.d.ts.map +1 -0
  1054. package/dist/utils/codex-state.js +64 -0
  1055. package/dist/utils/codex-state.js.map +1 -0
  1056. package/dist/utils/codex-types.d.ts +49 -0
  1057. package/dist/utils/codex-types.d.ts.map +1 -0
  1058. package/dist/utils/codex-types.js +46 -0
  1059. package/dist/utils/codex-types.js.map +1 -0
  1060. package/dist/utils/contract-block.d.ts +79 -0
  1061. package/dist/utils/contract-block.d.ts.map +1 -0
  1062. package/dist/utils/contract-block.js +153 -0
  1063. package/dist/utils/contract-block.js.map +1 -0
  1064. package/dist/utils/contract-staleness.d.ts +22 -0
  1065. package/dist/utils/contract-staleness.d.ts.map +1 -0
  1066. package/dist/utils/contract-staleness.js +67 -0
  1067. package/dist/utils/contract-staleness.js.map +1 -0
  1068. package/dist/utils/index.d.ts +14 -37
  1069. package/dist/utils/index.d.ts.map +1 -1
  1070. package/dist/utils/index.js +68 -120
  1071. package/dist/utils/index.js.map +1 -1
  1072. package/dist/utils/init-helpers.d.ts +8 -6
  1073. package/dist/utils/init-helpers.d.ts.map +1 -1
  1074. package/dist/utils/init-helpers.js +54 -102
  1075. package/dist/utils/init-helpers.js.map +1 -1
  1076. package/dist/utils/mcp-tool-groups.d.ts +101 -0
  1077. package/dist/utils/mcp-tool-groups.d.ts.map +1 -0
  1078. package/dist/utils/mcp-tool-groups.js +117 -0
  1079. package/dist/utils/mcp-tool-groups.js.map +1 -0
  1080. package/dist/utils/packaged-github.d.ts +23 -0
  1081. package/dist/utils/packaged-github.d.ts.map +1 -0
  1082. package/dist/utils/packaged-github.js +38 -0
  1083. package/dist/utils/packaged-github.js.map +1 -0
  1084. package/dist/utils/setup-guide.d.ts +7 -0
  1085. package/dist/utils/setup-guide.d.ts.map +1 -0
  1086. package/dist/utils/setup-guide.js +87 -0
  1087. package/dist/utils/setup-guide.js.map +1 -0
  1088. package/dist/utils/snapshot-manifest.d.ts +36 -0
  1089. package/dist/utils/snapshot-manifest.d.ts.map +1 -0
  1090. package/dist/utils/snapshot-manifest.js +116 -0
  1091. package/dist/utils/snapshot-manifest.js.map +1 -0
  1092. package/dist/utils/snapshot-paths.d.ts +21 -0
  1093. package/dist/utils/snapshot-paths.d.ts.map +1 -0
  1094. package/dist/utils/snapshot-paths.js +111 -0
  1095. package/dist/utils/snapshot-paths.js.map +1 -0
  1096. package/dist/utils/snapshot-retention.d.ts +12 -0
  1097. package/dist/utils/snapshot-retention.d.ts.map +1 -0
  1098. package/dist/utils/snapshot-retention.js +71 -0
  1099. package/dist/utils/snapshot-retention.js.map +1 -0
  1100. package/dist/utils/text-file.d.ts +13 -0
  1101. package/dist/utils/text-file.d.ts.map +1 -0
  1102. package/dist/utils/text-file.js +19 -0
  1103. package/dist/utils/text-file.js.map +1 -0
  1104. package/dist/utils/update-agent-files.d.ts +63 -0
  1105. package/dist/utils/update-agent-files.d.ts.map +1 -0
  1106. package/dist/utils/update-agent-files.js +248 -0
  1107. package/dist/utils/update-agent-files.js.map +1 -0
  1108. package/dist/utils/update-copilot-files.d.ts +4 -2
  1109. package/dist/utils/update-copilot-files.d.ts.map +1 -1
  1110. package/dist/utils/update-copilot-files.js +52 -12
  1111. package/dist/utils/update-copilot-files.js.map +1 -1
  1112. package/package.json +14 -10
  1113. package/dist/agents.test.d.ts +0 -18
  1114. package/dist/agents.test.d.ts.map +0 -1
  1115. package/dist/agents.test.js +0 -96
  1116. package/dist/agents.test.js.map +0 -1
  1117. package/dist/core/auto-migrate.test.d.ts +0 -7
  1118. package/dist/core/auto-migrate.test.d.ts.map +0 -1
  1119. package/dist/core/auto-migrate.test.js +0 -368
  1120. package/dist/core/auto-migrate.test.js.map +0 -1
  1121. package/dist/core/context.test.d.ts +0 -10
  1122. package/dist/core/context.test.d.ts.map +0 -1
  1123. package/dist/core/context.test.js +0 -239
  1124. package/dist/core/context.test.js.map +0 -1
  1125. package/dist/core/index-rebuild.test.d.ts +0 -8
  1126. package/dist/core/index-rebuild.test.d.ts.map +0 -1
  1127. package/dist/core/index-rebuild.test.js +0 -563
  1128. package/dist/core/index-rebuild.test.js.map +0 -1
  1129. package/dist/core/index-refs.test.d.ts +0 -7
  1130. package/dist/core/index-refs.test.d.ts.map +0 -1
  1131. package/dist/core/index-refs.test.js +0 -367
  1132. package/dist/core/index-refs.test.js.map +0 -1
  1133. package/dist/schemas/analysis.d.ts +0 -206
  1134. package/dist/schemas/analysis.d.ts.map +0 -1
  1135. package/dist/schemas/analysis.js +0 -138
  1136. package/dist/schemas/analysis.js.map +0 -1
  1137. package/dist/schemas/cbp-loops.d.ts +0 -154
  1138. package/dist/schemas/cbp-loops.d.ts.map +0 -1
  1139. package/dist/schemas/cbp-loops.js +0 -160
  1140. package/dist/schemas/cbp-loops.js.map +0 -1
  1141. package/dist/schemas/cbp-loops.test.d.ts +0 -10
  1142. package/dist/schemas/cbp-loops.test.d.ts.map +0 -1
  1143. package/dist/schemas/cbp-loops.test.js +0 -268
  1144. package/dist/schemas/cbp-loops.test.js.map +0 -1
  1145. package/dist/schemas/cbp-mandate.d.ts +0 -242
  1146. package/dist/schemas/cbp-mandate.d.ts.map +0 -1
  1147. package/dist/schemas/cbp-mandate.js +0 -210
  1148. package/dist/schemas/cbp-mandate.js.map +0 -1
  1149. package/dist/schemas/cbp-mandate.test.d.ts +0 -11
  1150. package/dist/schemas/cbp-mandate.test.d.ts.map +0 -1
  1151. package/dist/schemas/cbp-mandate.test.js +0 -312
  1152. package/dist/schemas/cbp-mandate.test.js.map +0 -1
  1153. package/dist/utils/normalize.test.d.ts +0 -15
  1154. package/dist/utils/normalize.test.d.ts.map +0 -1
  1155. package/dist/utils/normalize.test.js +0 -101
  1156. package/dist/utils/normalize.test.js.map +0 -1
@@ -0,0 +1,244 @@
1
+ /**
2
+ * Copyright © 2026 Thomas Hertel (the@devsteps.dev)
3
+ * Licensed under the Apache License, Version 2.0
4
+ *
5
+ * ID counters — the one file under `.devsteps/index/` that is a source of truth.
6
+ *
7
+ * Every other index is derived from the item files by the item store (STORY-426).
8
+ * The counters cannot be: an ID handed out for a purged item must never be reused,
9
+ * so the high-water mark per type prefix is persisted here and committed. What can
10
+ * be derived is a lower bound — the highest ID on disk — and `add` never allocates
11
+ * below it, so a counter that fell behind after a branch merge heals itself.
12
+ */
13
+ import { existsSync, lstatSync, readFileSync } from 'node:fs';
14
+ import { join } from 'node:path';
15
+ import { validateCounters } from '../schemas/counters.schema.js';
16
+ import { ItemType } from '../schemas/index.js';
17
+ import { writeFileAtomic } from '../utils/atomic-write.js';
18
+ import { getTypePrefix, parseItemId, TYPE_TO_DIRECTORY } from '../utils/index.js';
19
+ import { acquireCounterLock, assertCounterLockHeld, counterLockStatus, releaseCounterLock, } from './counter-lock.js';
20
+ import { CounterLockError } from './counter-lock-types.js';
21
+ import { archivedTypeDirectory, claimItemFolder, listItemFolders, typeDirectory, } from './item-paths.js';
22
+ export function getCountersPath(devstepsDir) {
23
+ return join(devstepsDir, 'index', 'counters.json');
24
+ }
25
+ /** Load ID generation counters; an absent file is an empty set of counters. */
26
+ export function loadCounters(devstepsDir) {
27
+ const countersPath = getCountersPath(devstepsDir);
28
+ if (!existsSync(countersPath))
29
+ return {};
30
+ return validateCounters(JSON.parse(readFileSync(countersPath, 'utf-8')));
31
+ }
32
+ /** lstat also sees dangling links; never derive allocations from an unsafe counter path. */
33
+ function assertCounterFileSafe(devstepsDir) {
34
+ const path = getCountersPath(devstepsDir);
35
+ let stat;
36
+ try {
37
+ stat = lstatSync(path);
38
+ }
39
+ catch (error) {
40
+ if (error.code === 'ENOENT')
41
+ return;
42
+ throw error;
43
+ }
44
+ if (!stat || stat.isSymbolicLink() || !stat.isFile() || stat.nlink !== 1)
45
+ throw new Error(`Unsafe counter file: ${path}`);
46
+ }
47
+ /** The only raw replacement is private and guarded through the actual atomic write. */
48
+ function mergeCountersHeld(devstepsDir, proposed, context) {
49
+ const guard = () => {
50
+ assertCounterLockHeld(context, devstepsDir);
51
+ assertCounterFileSafe(devstepsDir);
52
+ };
53
+ guard();
54
+ const current = loadCounters(devstepsDir);
55
+ const merged = Object.fromEntries(Object.entries(current));
56
+ let changed = !existsSync(getCountersPath(devstepsDir));
57
+ for (const [prefix, number] of Object.entries(validateCounters(proposed))) {
58
+ const previous = Object.hasOwn(current, prefix) ? current[prefix] : undefined;
59
+ if (number > (previous ?? -1))
60
+ changed = true;
61
+ Object.defineProperty(merged, prefix, {
62
+ value: Math.max(previous ?? 0, number),
63
+ enumerable: true,
64
+ writable: true,
65
+ configurable: true,
66
+ });
67
+ }
68
+ if (changed)
69
+ writeFileAtomic(getCountersPath(devstepsDir), JSON.stringify(merged, null, 2), {
70
+ beforeWrite: guard,
71
+ beforeRename: guard,
72
+ });
73
+ guard();
74
+ return { counters: merged, changed, warnings: [] };
75
+ }
76
+ /** Serialize fresh max-merge and atomic replacement across every managed writer. */
77
+ export function updateCounters(devstepsDir, counters) {
78
+ const proposed = validateCounters(counters);
79
+ const context = acquireCounterLock(devstepsDir);
80
+ let result;
81
+ let failure;
82
+ try {
83
+ result = mergeCountersHeld(devstepsDir, proposed, context);
84
+ }
85
+ catch (error) {
86
+ failure = error;
87
+ }
88
+ try {
89
+ const warnings = releaseCounterLock(context, devstepsDir);
90
+ if (result)
91
+ result.warnings.push(...warnings);
92
+ }
93
+ catch (error) {
94
+ if (error instanceof CounterLockError)
95
+ error.countersPersisted = result !== undefined;
96
+ if (failure === undefined)
97
+ failure = error;
98
+ else
99
+ failure = new AggregateError([failure, error], 'Counter persistence and ownership release both failed');
100
+ }
101
+ if (failure !== undefined)
102
+ throw failure;
103
+ if (!result)
104
+ throw new Error('Counter update returned no result');
105
+ return result;
106
+ }
107
+ /** Initialization participates in the same monotonic protocol, including existing stores. */
108
+ export function initializeCounters(devstepsDir, initial = {}) {
109
+ return updateCounters(devstepsDir, initial);
110
+ }
111
+ export class ItemReservationError extends Error {
112
+ code = 'ITEM_RESERVATION_FAILED';
113
+ reservation;
114
+ constructor(cause, reservation) {
115
+ super(`Item reservation failed during ${reservation.phase}: ${cause instanceof Error ? cause.message : String(cause)}. Actual claimed IDs remain reserved; inspect them before retrying.`, { cause });
116
+ this.name = 'ItemReservationError';
117
+ this.reservation = reservation;
118
+ }
119
+ }
120
+ function assertReservationRequests(requests) {
121
+ if (!Array.isArray(requests) || requests.length < 1 || requests.length > 50)
122
+ throw new Error('Reservation requires 1 to 50 requests');
123
+ const seen = new Set();
124
+ for (const request of requests) {
125
+ if (!request ||
126
+ typeof request.key !== 'string' ||
127
+ !/^[a-z][A-Za-z0-9_-]{0,63}$/.test(request.key) ||
128
+ seen.has(request.key))
129
+ throw new Error('Reservation keys must be unique valid local keys');
130
+ ItemType.parse(request.type);
131
+ seen.add(request.key);
132
+ }
133
+ }
134
+ function claimReservationRequests(devstepsDir, requests, context, claims, maxima, onKey) {
135
+ for (const request of requests) {
136
+ onKey(request.key);
137
+ assertCounterLockHeld(context, devstepsDir);
138
+ assertCounterFileSafe(devstepsDir);
139
+ const prefix = getTypePrefix(request.type);
140
+ const from = Math.max(loadCounters(devstepsDir)[prefix] ?? 0, highestIdOnDisk(devstepsDir, request.type), maxima[prefix] ?? 0);
141
+ assertCounterLockHeld(context, devstepsDir);
142
+ const claim = claimItemFolder(devstepsDir, request.type, from);
143
+ claims.set(request.key, claim);
144
+ maxima[prefix] = Math.max(maxima[prefix] ?? 0, claim.number);
145
+ }
146
+ }
147
+ /** Fresh floors → actual claims → confirmed counter reservation, in one synchronous lease. */
148
+ export function reserveItemFolders(devstepsDir, requests) {
149
+ assertReservationRequests(requests);
150
+ const claims = new Map();
151
+ const maxima = {};
152
+ let context;
153
+ let phase = 'claim';
154
+ let failedKey;
155
+ let countersPersisted = false;
156
+ let countersRaised = false;
157
+ let failure;
158
+ let lock;
159
+ const warnings = [];
160
+ const persist = () => {
161
+ if (!context)
162
+ throw new Error('Reservation has no counter ownership');
163
+ const result = mergeCountersHeld(devstepsDir, maxima, context);
164
+ countersPersisted = true;
165
+ countersRaised = result.changed;
166
+ };
167
+ try {
168
+ context = acquireCounterLock(devstepsDir);
169
+ claimReservationRequests(devstepsDir, requests, context, claims, maxima, (key) => {
170
+ failedKey = key;
171
+ });
172
+ phase = 'counters';
173
+ failedKey = undefined;
174
+ persist();
175
+ }
176
+ catch (error) {
177
+ failure = error;
178
+ if (error instanceof CounterLockError)
179
+ lock = error.lock;
180
+ if (context && claims.size > 0 && phase === 'claim') {
181
+ try {
182
+ persist();
183
+ }
184
+ catch (persistError) {
185
+ if (persistError instanceof CounterLockError)
186
+ lock = persistError.lock;
187
+ failure = new AggregateError([error, persistError], 'Claim failed and claimed maxima could not be confirmed persisted');
188
+ }
189
+ }
190
+ }
191
+ if (context) {
192
+ try {
193
+ warnings.push(...releaseCounterLock(context, devstepsDir));
194
+ }
195
+ catch (error) {
196
+ if (error instanceof CounterLockError)
197
+ lock = error.lock;
198
+ if (failure === undefined) {
199
+ phase = 'release';
200
+ failure = error;
201
+ }
202
+ else
203
+ failure = new AggregateError([failure, error], 'Reservation and ownership release both failed');
204
+ }
205
+ }
206
+ const keyToId = Object.fromEntries([...claims].map(([key, claim]) => [key, claim.itemId]));
207
+ if (failure !== undefined && warnings.length > 0) {
208
+ lock ??= counterLockStatus(devstepsDir);
209
+ lock.issues = [...lock.issues, ...warnings].slice(0, 4);
210
+ }
211
+ if (failure !== undefined)
212
+ throw new ItemReservationError(failure, {
213
+ phase,
214
+ keyToId,
215
+ reservedKeys: [...claims.keys()],
216
+ ...(failedKey !== undefined ? { failedKey } : {}),
217
+ countersPersisted,
218
+ ...(lock !== undefined ? { lock } : {}),
219
+ });
220
+ return { claims, keyToId, countersRaised, warnings };
221
+ }
222
+ /** Highest ID number of one type on disk — live items and archived ones. */
223
+ export function highestIdOnDisk(devstepsDir, type) {
224
+ let highest = 0;
225
+ for (const dir of [typeDirectory(devstepsDir, type), archivedTypeDirectory(devstepsDir, type)]) {
226
+ for (const id of listItemFolders(dir, type)) {
227
+ const number = parseItemId(id)?.number ?? 0;
228
+ if (number > highest)
229
+ highest = number;
230
+ }
231
+ }
232
+ return highest;
233
+ }
234
+ /** The counters file as the items on disk imply it — per type prefix, types without items left out. */
235
+ export function deriveCounters(devstepsDir) {
236
+ const counters = {};
237
+ for (const type of Object.keys(TYPE_TO_DIRECTORY)) {
238
+ const highest = highestIdOnDisk(devstepsDir, type);
239
+ if (highest > 0)
240
+ counters[getTypePrefix(type)] = highest;
241
+ }
242
+ return counters;
243
+ }
244
+ //# sourceMappingURL=counters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"counters.js","sourceRoot":"","sources":["../../src/core/counters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Copyright © 2026 Thomas Hertel (the@devsteps.dev)
3
+ * Licensed under the Apache License, Version 2.0
4
+ *
5
+ * Dashboard insights projection: open work items over time, epic progress and recent activity.
6
+ *
7
+ * The open series is honest about its approximation. An item counts as open at the end of day D
8
+ * when it was created by then and was not closed by then; the close date is the `updated` of a
9
+ * closed item (done, obsolete, cancelled), because items carry no completion stamp. A closed item
10
+ * whose `updated` predates its `created` was never open. Only work types count: doc, decision and
11
+ * question items do not close in that sense. Days are UTC days, and the window ends today.
12
+ *
13
+ * Archived work items take part in the series and the epic table: they were real work, and
14
+ * leaving them out would lower the past curve and the closed counts. Archiving takes an item out
15
+ * of the project, so an archived item counts as closed at its `updated` whatever its status.
16
+ * Recent activity shows active items only, as the search does (DEC-012).
17
+ *
18
+ * @see STORY-365 TASK-848
19
+ */
20
+ import { ItemMetadata, type ItemStatus, type ItemType } from '../schemas/index.js';
21
+ import { type Bounded, type DashboardItem, type DashboardItems, type DashboardModelOptions } from './dashboard-model.js';
22
+ /** Daily points of the open series: twelve weeks. */
23
+ export declare const OPEN_SERIES_DAYS = 84;
24
+ /** Rows of the recent-activity list. */
25
+ export declare const DASHBOARD_ACTIVITY_LIMIT = 20;
26
+ /** Rows of the epic table. */
27
+ export declare const DASHBOARD_EPIC_LIMIT = 200;
28
+ /** The types the open series and the epic table count. */
29
+ export declare const DASHBOARD_WORK_TYPES: readonly ItemType[];
30
+ export interface OpenSeriesPoint {
31
+ /** UTC day, `YYYY-MM-DD`; `open` is the count at its end. */
32
+ date: string;
33
+ open: number;
34
+ }
35
+ export interface OpenSummary {
36
+ /** Open at the start of the window. */
37
+ from: number;
38
+ /** Open at the end of the window; always `from + opened - closed`. */
39
+ to: number;
40
+ opened: number;
41
+ closed: number;
42
+ weeks: number;
43
+ }
44
+ export interface WeeklyOpenRow {
45
+ week_start: string;
46
+ opened: number;
47
+ closed: number;
48
+ open_end: number;
49
+ }
50
+ export interface EpicProgressRow {
51
+ id: string;
52
+ title: string;
53
+ status: ItemStatus;
54
+ /** Direct children (work types that `implements` the epic) not closed. */
55
+ open: number;
56
+ /** Direct children with status done; obsolete and cancelled children count in neither. */
57
+ done: number;
58
+ /** `open + done`, the denominator of the progress bar. */
59
+ total: number;
60
+ }
61
+ export interface DashboardInsights {
62
+ generated_at: string;
63
+ /** `OPEN_SERIES_DAYS` daily points, oldest first. */
64
+ open_series: OpenSeriesPoint[];
65
+ open_summary: OpenSummary;
66
+ weekly: WeeklyOpenRow[];
67
+ /** Most open children first, then by ID. */
68
+ epics: Bounded<EpicProgressRow>;
69
+ /** Latest updates of any type, active items only. */
70
+ activity: Bounded<DashboardItem>;
71
+ unreadable: string[];
72
+ }
73
+ /** Archived work items, every one marked closed; IDs that do not parse go to `unreadable`. */
74
+ export interface ArchivedWorkItems {
75
+ items: ItemMetadata[];
76
+ unreadable: string[];
77
+ }
78
+ /** Start of the UTC day that holds `ms`. */
79
+ export declare function utcDayStart(ms: number): number;
80
+ interface OpenProjection {
81
+ open_series: OpenSeriesPoint[];
82
+ open_summary: OpenSummary;
83
+ weekly: WeeklyOpenRow[];
84
+ }
85
+ /** The open series, its summary and its weekly table over `days` UTC days ending today. */
86
+ export declare function projectOpenSeries(items: readonly ItemMetadata[], nowMs: number, days?: number): OpenProjection;
87
+ /**
88
+ * Per-epic counts of direct children; one pass over the items. Rows come from the active epics,
89
+ * children from the active items plus `archivedChildren`.
90
+ */
91
+ export declare function projectEpicProgress(items: readonly ItemMetadata[], archivedChildren?: readonly ItemMetadata[]): EpicProgressRow[];
92
+ /**
93
+ * Read the archived work items. The archive is outside the item store and small, so it is read
94
+ * from disk on each call. A closed status keeps its meaning; any other counts as closed.
95
+ */
96
+ export declare function readArchivedWorkItems(devstepsDir: string): ArchivedWorkItems;
97
+ /** Project Insights from item metadata; pure, so tests need no disk. */
98
+ export declare function projectDashboardInsights(source: DashboardItems, opts?: DashboardModelOptions, archived?: ArchivedWorkItems): DashboardInsights;
99
+ export declare function buildDashboardInsights(devstepsDir: string, opts?: DashboardModelOptions): DashboardInsights;
100
+ export {};
101
+ //# sourceMappingURL=dashboard-insights.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-insights.d.ts","sourceRoot":"","sources":["../../src/core/dashboard-insights.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Copyright © 2026 Thomas Hertel (the@devsteps.dev)
3
+ * Licensed under the Apache License, Version 2.0
4
+ *
5
+ * Dashboard insights projection: open work items over time, epic progress and recent activity.
6
+ *
7
+ * The open series is honest about its approximation. An item counts as open at the end of day D
8
+ * when it was created by then and was not closed by then; the close date is the `updated` of a
9
+ * closed item (done, obsolete, cancelled), because items carry no completion stamp. A closed item
10
+ * whose `updated` predates its `created` was never open. Only work types count: doc, decision and
11
+ * question items do not close in that sense. Days are UTC days, and the window ends today.
12
+ *
13
+ * Archived work items take part in the series and the epic table: they were real work, and
14
+ * leaving them out would lower the past curve and the closed counts. Archiving takes an item out
15
+ * of the project, so an archived item counts as closed at its `updated` whatever its status.
16
+ * Recent activity shows active items only, as the search does (DEC-012).
17
+ *
18
+ * @see STORY-365 TASK-848
19
+ */
20
+ import { ItemMetadata } from '../schemas/index.js';
21
+ import { readTextFile } from '../utils/text-file.js';
22
+ import { boundedRows, DAY_MS, isClosedStatus, newestFirst, readDashboardItems, } from './dashboard-model.js';
23
+ import { archivedItemPaths, archivedTypeDirectory, listItemFolders } from './item-paths.js';
24
+ /** Daily points of the open series: twelve weeks. */
25
+ export const OPEN_SERIES_DAYS = 84;
26
+ /** Rows of the recent-activity list. */
27
+ export const DASHBOARD_ACTIVITY_LIMIT = 20;
28
+ /** Rows of the epic table. */
29
+ export const DASHBOARD_EPIC_LIMIT = 200;
30
+ /** The types the open series and the epic table count. */
31
+ export const DASHBOARD_WORK_TYPES = [
32
+ 'epic',
33
+ 'story',
34
+ 'task',
35
+ 'requirement',
36
+ 'feature',
37
+ 'bug',
38
+ 'spike',
39
+ 'test',
40
+ ];
41
+ const isWorkType = (item) => DASHBOARD_WORK_TYPES.includes(item.type);
42
+ const ARCHIVED_STATUS = 'obsolete';
43
+ const dayLabel = (ms) => new Date(ms).toISOString().slice(0, 10);
44
+ /** Start of the UTC day that holds `ms`. */
45
+ export function utcDayStart(ms) {
46
+ return Math.floor(ms / DAY_MS) * DAY_MS;
47
+ }
48
+ /** The open series, its summary and its weekly table over `days` UTC days ending today. */
49
+ export function projectOpenSeries(items, nowMs, days = OPEN_SERIES_DAYS) {
50
+ const windowEnd = utcDayStart(nowMs) + DAY_MS;
51
+ const windowStart = windowEnd - days * DAY_MS;
52
+ const opened = new Array(days).fill(0);
53
+ const closed = new Array(days).fill(0);
54
+ const dayOf = (ms) => Math.floor((ms - windowStart) / DAY_MS);
55
+ let from = 0;
56
+ for (const item of items) {
57
+ if (!isWorkType(item))
58
+ continue;
59
+ const createdMs = Date.parse(item.created);
60
+ const closedMs = isClosedStatus(item.status) ? Date.parse(item.updated) : Infinity;
61
+ if (closedMs < createdMs || createdMs >= windowEnd)
62
+ continue;
63
+ if (createdMs < windowStart) {
64
+ if (closedMs >= windowStart)
65
+ from += 1;
66
+ }
67
+ else {
68
+ opened[dayOf(createdMs)] += 1;
69
+ }
70
+ if (closedMs >= windowStart && closedMs < windowEnd)
71
+ closed[dayOf(closedMs)] += 1;
72
+ }
73
+ const series = [];
74
+ let open = from;
75
+ for (let day = 0; day < days; day++) {
76
+ open += opened[day] - closed[day];
77
+ series.push({ date: dayLabel(windowStart + day * DAY_MS), open });
78
+ }
79
+ const weekly = [];
80
+ for (let start = 0; start < days; start += 7) {
81
+ const end = Math.min(start + 7, days);
82
+ const sum = (counts) => counts.slice(start, end).reduce((a, b) => a + b, 0);
83
+ weekly.push({
84
+ week_start: series[start].date,
85
+ opened: sum(opened),
86
+ closed: sum(closed),
87
+ open_end: series[end - 1].open,
88
+ });
89
+ }
90
+ const total = (counts) => counts.reduce((a, b) => a + b, 0);
91
+ return {
92
+ open_series: series,
93
+ open_summary: {
94
+ from,
95
+ to: open,
96
+ opened: total(opened),
97
+ closed: total(closed),
98
+ weeks: Math.ceil(days / 7),
99
+ },
100
+ weekly,
101
+ };
102
+ }
103
+ /**
104
+ * Per-epic counts of direct children; one pass over the items. Rows come from the active epics,
105
+ * children from the active items plus `archivedChildren`.
106
+ */
107
+ export function projectEpicProgress(items, archivedChildren = []) {
108
+ const rows = new Map();
109
+ for (const item of items) {
110
+ if (item.type === 'epic') {
111
+ rows.set(item.id, {
112
+ id: item.id,
113
+ title: item.title,
114
+ status: item.status,
115
+ open: 0,
116
+ done: 0,
117
+ total: 0,
118
+ });
119
+ }
120
+ }
121
+ for (const item of [...items, ...archivedChildren]) {
122
+ if (!isWorkType(item))
123
+ continue;
124
+ for (const parent of new Set(item.linked_items.implements)) {
125
+ const row = rows.get(parent);
126
+ if (!row)
127
+ continue;
128
+ if (item.status === 'done')
129
+ row.done += 1;
130
+ else if (!isClosedStatus(item.status))
131
+ row.open += 1;
132
+ row.total = row.open + row.done;
133
+ }
134
+ }
135
+ return [...rows.values()].sort((a, b) => b.open - a.open || a.id.localeCompare(b.id, 'en', { numeric: true }));
136
+ }
137
+ /**
138
+ * Read the archived work items. The archive is outside the item store and small, so it is read
139
+ * from disk on each call. A closed status keeps its meaning; any other counts as closed.
140
+ */
141
+ export function readArchivedWorkItems(devstepsDir) {
142
+ const items = [];
143
+ const unreadable = [];
144
+ for (const type of DASHBOARD_WORK_TYPES) {
145
+ for (const id of listItemFolders(archivedTypeDirectory(devstepsDir, type), type)) {
146
+ try {
147
+ const metadata = ItemMetadata.parse(JSON.parse(readTextFile(archivedItemPaths(devstepsDir, id).metadata)));
148
+ const closed = isClosedStatus(metadata.status);
149
+ items.push(closed ? metadata : { ...metadata, status: ARCHIVED_STATUS });
150
+ }
151
+ catch {
152
+ unreadable.push(id);
153
+ }
154
+ }
155
+ }
156
+ return { items, unreadable };
157
+ }
158
+ /** Project Insights from item metadata; pure, so tests need no disk. */
159
+ export function projectDashboardInsights(source, opts = {}, archived = { items: [], unreadable: [] }) {
160
+ const now = opts.now ?? new Date();
161
+ const nowMs = now.getTime();
162
+ const epics = projectEpicProgress(source.items, archived.items);
163
+ const latest = [...source.items].sort(newestFirst);
164
+ return {
165
+ generated_at: now.toISOString(),
166
+ ...projectOpenSeries([...source.items, ...archived.items], nowMs),
167
+ epics: { total: epics.length, items: epics.slice(0, DASHBOARD_EPIC_LIMIT) },
168
+ activity: boundedRows(latest, DASHBOARD_ACTIVITY_LIMIT, nowMs),
169
+ unreadable: [...source.unreadable, ...archived.unreadable],
170
+ };
171
+ }
172
+ export function buildDashboardInsights(devstepsDir, opts = {}) {
173
+ return projectDashboardInsights(readDashboardItems(devstepsDir), opts, readArchivedWorkItems(devstepsDir));
174
+ }
175
+ //# sourceMappingURL=dashboard-insights.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-insights.js","sourceRoot":"","sources":["../../src/core/dashboard-insights.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Copyright © 2026 Thomas Hertel (the@devsteps.dev)
3
+ * Licensed under the Apache License, Version 2.0
4
+ *
5
+ * Dashboard overview projection: what the dashboard's Overview tab, its trace search and its
6
+ * agent handoff read, computed in one pass over the item store.
7
+ *
8
+ * `listItems` carries neither `created` nor `affected_paths`, and widening it would raise the
9
+ * cost of every MCP `list` answer, so the dashboard reads `readAllItemMetadata` itself. The board
10
+ * lanes follow `getBoard` exactly: tag membership, store order and `WIP_LIMIT`; a test holds the
11
+ * two together. Every list is bounded: `total` is the true count and `items` holds at most the
12
+ * limit, so a project of 10K items never reaches the webview whole.
13
+ *
14
+ * @see STORY-365 TASK-846 STORY-422
15
+ */
16
+ import type { EisenhowerQuadrant, ItemMetadata, ItemStatus, ItemType } from '../schemas/index.js';
17
+ /** Rows per live list (in progress, blocked, stale, delivered, lanes). */
18
+ export declare const DASHBOARD_LIST_LIMIT = 50;
19
+ /** Rows per Next-up quadrant. */
20
+ export declare const DASHBOARD_NEXT_UP_LIMIT = 100;
21
+ /** Hits the trace search returns. */
22
+ export declare const DASHBOARD_TRACE_HIT_LIMIT = 30;
23
+ /** Affected paths a row carries; the rest is counted in `affected_paths_total`. */
24
+ export declare const DASHBOARD_PATH_LIMIT = 2;
25
+ export declare const DAY_MS: number;
26
+ /** A count that is always true, and the first items of what it counts. */
27
+ export interface Bounded<T> {
28
+ total: number;
29
+ items: T[];
30
+ }
31
+ export interface DashboardItem {
32
+ id: string;
33
+ type: ItemType;
34
+ title: string;
35
+ status: ItemStatus;
36
+ eisenhower: EisenhowerQuadrant;
37
+ updated: string;
38
+ days_since_update: number;
39
+ /** The first `DASHBOARD_PATH_LIMIT` affected paths. */
40
+ affected_paths: string[];
41
+ affected_paths_total: number;
42
+ }
43
+ export type QuadrantKey = 'Q1' | 'Q2' | 'Q3' | 'Q4';
44
+ export declare const QUADRANT_OF: Record<EisenhowerQuadrant, QuadrantKey>;
45
+ export interface DashboardOverview {
46
+ generated_at: string;
47
+ pulse: {
48
+ in_progress: number;
49
+ blocked: number;
50
+ stale: number;
51
+ delivered_7d: number;
52
+ wip: {
53
+ now: number;
54
+ limit: number;
55
+ violated: boolean;
56
+ };
57
+ };
58
+ in_progress: Bounded<DashboardItem>;
59
+ blocked: Bounded<DashboardItem>;
60
+ /** In-progress items untouched for longer than `STALE_AFTER_DAYS`, the oldest first. */
61
+ stale: Bounded<DashboardItem>;
62
+ delivered_7d: Bounded<DashboardItem>;
63
+ /** The focus board in `getBoard` order. */
64
+ lanes: {
65
+ now: Bounded<DashboardItem>;
66
+ next: Bounded<DashboardItem>;
67
+ later_count: number;
68
+ };
69
+ /** Open stories (draft, planned, review) by Eisenhower quadrant, newest update first. */
70
+ next_up: Record<QuadrantKey, Bounded<DashboardItem>>;
71
+ /** IDs whose metadata could not be read; they are counted nowhere else. */
72
+ unreadable: string[];
73
+ }
74
+ export interface DashboardModelOptions {
75
+ now?: Date;
76
+ listLimit?: number;
77
+ nextUpLimit?: number;
78
+ }
79
+ /** What every dashboard projection starts from: the metadata of every readable item. */
80
+ export interface DashboardItems {
81
+ items: ItemMetadata[];
82
+ unreadable: string[];
83
+ }
84
+ /** Read the store once for the dashboard projections. */
85
+ export declare function readDashboardItems(devstepsDir: string): DashboardItems;
86
+ export declare function isClosedStatus(status: string): boolean;
87
+ export declare function toDashboardItem(metadata: ItemMetadata, nowMs: number): DashboardItem;
88
+ export declare const newestFirst: (a: ItemMetadata, b: ItemMetadata) => number;
89
+ /** The first `limit` items as dashboard rows, with the true total. */
90
+ export declare function boundedRows(items: readonly ItemMetadata[], limit: number, nowMs: number): Bounded<DashboardItem>;
91
+ /** Project the Overview from item metadata; pure, so tests need no disk. */
92
+ export declare function projectDashboardOverview(source: DashboardItems, opts?: DashboardModelOptions): DashboardOverview;
93
+ export declare function buildDashboardOverview(devstepsDir: string, opts?: DashboardModelOptions): DashboardOverview;
94
+ /**
95
+ * Trace-search hits: the exact ID first, then ID-prefix matches in ID order, then items whose
96
+ * ID and title together hold every query word ("STORY-365 dashboard"), newest update first. Every active item takes part, whatever its
97
+ * status; archived items are outside the store and outside the search (DEC-012).
98
+ */
99
+ export declare function searchDashboardItems(items: readonly ItemMetadata[], query: string, limit?: number, nowMs?: number): DashboardItem[];
100
+ export declare function findDashboardItems(devstepsDir: string, query: string, limit?: number): DashboardItem[];
101
+ /**
102
+ * IDs of the focus:now lane in board order. Work-the-board reads them at click time, so the
103
+ * prompt never trusts a list the webview sent.
104
+ */
105
+ export declare function nowLaneIds(devstepsDir: string): string[];
106
+ //# sourceMappingURL=dashboard-model.d.ts.map