@schnick371/devsteps-shared 1.1.0-next.3 → 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 (1152) hide show
  1. package/LICENSE.md +115 -0
  2. package/README.md +14 -3
  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/core/auto-migrate.test.d.ts +0 -7
  1114. package/dist/core/auto-migrate.test.d.ts.map +0 -1
  1115. package/dist/core/auto-migrate.test.js +0 -368
  1116. package/dist/core/auto-migrate.test.js.map +0 -1
  1117. package/dist/core/context.test.d.ts +0 -10
  1118. package/dist/core/context.test.d.ts.map +0 -1
  1119. package/dist/core/context.test.js +0 -239
  1120. package/dist/core/context.test.js.map +0 -1
  1121. package/dist/core/index-rebuild.test.d.ts +0 -8
  1122. package/dist/core/index-rebuild.test.d.ts.map +0 -1
  1123. package/dist/core/index-rebuild.test.js +0 -563
  1124. package/dist/core/index-rebuild.test.js.map +0 -1
  1125. package/dist/core/index-refs.test.d.ts +0 -7
  1126. package/dist/core/index-refs.test.d.ts.map +0 -1
  1127. package/dist/core/index-refs.test.js +0 -367
  1128. package/dist/core/index-refs.test.js.map +0 -1
  1129. package/dist/schemas/analysis.d.ts +0 -206
  1130. package/dist/schemas/analysis.d.ts.map +0 -1
  1131. package/dist/schemas/analysis.js +0 -138
  1132. package/dist/schemas/analysis.js.map +0 -1
  1133. package/dist/schemas/cbp-loops.d.ts +0 -154
  1134. package/dist/schemas/cbp-loops.d.ts.map +0 -1
  1135. package/dist/schemas/cbp-loops.js +0 -160
  1136. package/dist/schemas/cbp-loops.js.map +0 -1
  1137. package/dist/schemas/cbp-loops.test.d.ts +0 -10
  1138. package/dist/schemas/cbp-loops.test.d.ts.map +0 -1
  1139. package/dist/schemas/cbp-loops.test.js +0 -268
  1140. package/dist/schemas/cbp-loops.test.js.map +0 -1
  1141. package/dist/schemas/cbp-mandate.d.ts +0 -107
  1142. package/dist/schemas/cbp-mandate.d.ts.map +0 -1
  1143. package/dist/schemas/cbp-mandate.js +0 -107
  1144. package/dist/schemas/cbp-mandate.js.map +0 -1
  1145. package/dist/schemas/cbp-mandate.test.d.ts +0 -10
  1146. package/dist/schemas/cbp-mandate.test.d.ts.map +0 -1
  1147. package/dist/schemas/cbp-mandate.test.js +0 -188
  1148. package/dist/schemas/cbp-mandate.test.js.map +0 -1
  1149. package/dist/utils/normalize.test.d.ts +0 -15
  1150. package/dist/utils/normalize.test.d.ts.map +0 -1
  1151. package/dist/utils/normalize.test.js +0 -101
  1152. package/dist/utils/normalize.test.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"description-patch.js","sourceRoot":"","sources":["../../src/core/description-patch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Copyright © 2025 Thomas Hertel (the@devsteps.dev)
3
+ * Licensed under the Apache License, Version 2.0
4
+ *
5
+ * docs-assemble — generic BOM-to-Markdown assembler.
6
+ *
7
+ * Reads docs-map.json, walks the BOM tree depth-first, and concatenates
8
+ * each node's DOC item content into a single coherent Markdown document.
9
+ *
10
+ * Design decisions:
11
+ * - Uses sync fs calls (same pattern as docs-map.ts) to keep this pure/sync.
12
+ * - Heading shift rule: node at depth D shifts all headings by D.
13
+ * (root depth=0 → no shift; L1 depth=1 → H1→H2; L2 depth=2 → H1→H3)
14
+ * - Missing DOC items are silently skipped with a comment placeholder.
15
+ * - BOM node order within siblings is determined by `node.order` (ascending).
16
+ *
17
+ * @see STORY-298
18
+ */
19
+ /**
20
+ * Thrown when a circular parent_id reference is detected in the BOM tree.
21
+ * This prevents infinite recursion and stack overflow (TASK-564).
22
+ */
23
+ export declare class CircularBOMError extends Error {
24
+ constructor(nodeId: string, path: string[]);
25
+ }
26
+ /**
27
+ * Thrown when a doc_id fails path traversal validation.
28
+ * Prevents directory traversal attacks (TASK-565).
29
+ */
30
+ export declare class PathTraversalError extends Error {
31
+ constructor(docId: string);
32
+ }
33
+ /**
34
+ * Thrown when strict mode is enabled and missing DOC items are found (TASK-566).
35
+ */
36
+ export declare class MissingDocItemsError extends Error {
37
+ constructor(missingNodes: string[]);
38
+ }
39
+ export interface AssembleOptions {
40
+ /** .devsteps directory path (absolute) */
41
+ devstepsDir: string;
42
+ /**
43
+ * ARCH-NNN node id to start assembly from.
44
+ * Defaults to all root nodes (parent_id === null), assembled in order.
45
+ */
46
+ rootId?: string;
47
+ /**
48
+ * If provided, write the assembled markdown to this file path (absolute or
49
+ * relative to cwd). Parent directories are created if missing.
50
+ */
51
+ outputPath?: string;
52
+ /**
53
+ * Return the assembled text in the result object (default: true).
54
+ * Set to false for large documents when you only need the file output.
55
+ */
56
+ returnContent?: boolean;
57
+ /**
58
+ * Strip YAML frontmatter from each DOC item fragment (default: false).
59
+ * When false, frontmatter blocks are preserved in the output.
60
+ */
61
+ includeFrontmatter?: boolean;
62
+ /**
63
+ * Maximum BOM tree depth to traverse (1 = root only, 2 = root + L1, …).
64
+ * Absent or 0 = unlimited depth.
65
+ */
66
+ maxDepth?: number;
67
+ /**
68
+ * Strict mode: fail when missing DOC items are found (default: true).
69
+ * When true, throws MissingDocItemsError if any nodes lack doc_id or .md files.
70
+ * Set to false to allow placeholder comments for missing items (TASK-566).
71
+ */
72
+ strict?: boolean;
73
+ }
74
+ export interface AssembleResult {
75
+ /** Assembled markdown (undefined when returnContent is false) */
76
+ content?: string;
77
+ /** Number of BOM nodes processed */
78
+ nodesProcessed: number;
79
+ /** Node IDs that could not be resolved (missing doc_id or missing .md file) */
80
+ missingNodes: string[];
81
+ /** File path written to (if outputPath was given) */
82
+ outputPath?: string;
83
+ }
84
+ /**
85
+ * Assemble a BOM tree (or sub-tree) into a single Markdown document.
86
+ *
87
+ * @param opts - Assembly options (see AssembleOptions)
88
+ * @returns AssembleResult with content, stats, and missing-node list
89
+ */
90
+ export declare function assembleDocument(opts: AssembleOptions): AssembleResult;
91
+ //# sourceMappingURL=docs-assemble.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-assemble.d.ts","sourceRoot":"","sources":["../../src/core/docs-assemble.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAwBH;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,YAAY,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAKzC;CACF;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,KAAK,EAAE,MAAM,EAKxB;CACF;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,YAAY,EAAE,MAAM,EAAE,EAKjC;CACF;AAMD,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAwDD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG,cAAc,CA+GtE"}
@@ -0,0 +1,210 @@
1
+ /**
2
+ * Copyright © 2025 Thomas Hertel (the@devsteps.dev)
3
+ * Licensed under the Apache License, Version 2.0
4
+ *
5
+ * docs-assemble — generic BOM-to-Markdown assembler.
6
+ *
7
+ * Reads docs-map.json, walks the BOM tree depth-first, and concatenates
8
+ * each node's DOC item content into a single coherent Markdown document.
9
+ *
10
+ * Design decisions:
11
+ * - Uses sync fs calls (same pattern as docs-map.ts) to keep this pure/sync.
12
+ * - Heading shift rule: node at depth D shifts all headings by D.
13
+ * (root depth=0 → no shift; L1 depth=1 → H1→H2; L2 depth=2 → H1→H3)
14
+ * - Missing DOC items are silently skipped with a comment placeholder.
15
+ * - BOM node order within siblings is determined by `node.order` (ascending).
16
+ *
17
+ * @see STORY-298
18
+ */
19
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
20
+ import { dirname } from 'node:path';
21
+ import { readTextFile } from '../utils/text-file.js';
22
+ import { readDocsMap } from './docs-map.js';
23
+ import { extractFrontmatter } from './frontmatter.js';
24
+ import { itemPaths } from './item-paths.js';
25
+ // ---------------------------------------------------------------------------
26
+ // Constants
27
+ // ---------------------------------------------------------------------------
28
+ /**
29
+ * Valid DevSteps work item ID pattern.
30
+ * Used for path traversal defense (TASK-565).
31
+ */
32
+ const WORK_ITEM_ID_PATTERN = /^(EPIC|STORY|TASK|REQ|FEAT|BUG|SPIKE|TEST|DOC)-\d{3,}$/;
33
+ // ---------------------------------------------------------------------------
34
+ // Custom Errors
35
+ // ---------------------------------------------------------------------------
36
+ /**
37
+ * Thrown when a circular parent_id reference is detected in the BOM tree.
38
+ * This prevents infinite recursion and stack overflow (TASK-564).
39
+ */
40
+ export class CircularBOMError extends Error {
41
+ constructor(nodeId, path) {
42
+ super(`Circular BOM reference detected: node "${nodeId}" is already in the traversal path [${path.join(' → ')}]`);
43
+ this.name = 'CircularBOMError';
44
+ }
45
+ }
46
+ /**
47
+ * Thrown when a doc_id fails path traversal validation.
48
+ * Prevents directory traversal attacks (TASK-565).
49
+ */
50
+ export class PathTraversalError extends Error {
51
+ constructor(docId) {
52
+ super(`Path traversal detected: doc_id "${docId}" does not match required pattern ${WORK_ITEM_ID_PATTERN.source}`);
53
+ this.name = 'PathTraversalError';
54
+ }
55
+ }
56
+ /**
57
+ * Thrown when strict mode is enabled and missing DOC items are found (TASK-566).
58
+ */
59
+ export class MissingDocItemsError extends Error {
60
+ constructor(missingNodes) {
61
+ super(`Strict mode: ${missingNodes.length} missing DOC item(s) detected: ${missingNodes.join(', ')}`);
62
+ this.name = 'MissingDocItemsError';
63
+ }
64
+ }
65
+ // ---------------------------------------------------------------------------
66
+ // Private helpers
67
+ // ---------------------------------------------------------------------------
68
+ /**
69
+ * Shift all ATX heading levels in a markdown string by `shift` positions.
70
+ * Headings that would exceed H6 are clamped to H6.
71
+ * Only shifts lines that start with `#` followed by a space (ATX style).
72
+ */
73
+ function shiftHeadings(markdown, shift) {
74
+ if (shift === 0)
75
+ return markdown;
76
+ return markdown.replace(/^(#{1,6})( )/gm, (_match, hashes, space) => {
77
+ const newLevel = Math.min(hashes.length + shift, 6);
78
+ return '#'.repeat(newLevel) + space;
79
+ });
80
+ }
81
+ /**
82
+ * Build a child-lookup map from a flat adjacency list.
83
+ * Returns Map<parentId|null, sortedChildren>.
84
+ */
85
+ function buildChildMap(nodes) {
86
+ const map = new Map();
87
+ for (const node of nodes) {
88
+ const key = node.parent_id;
89
+ if (!map.has(key))
90
+ map.set(key, []);
91
+ // biome-ignore lint/style/noNonNullAssertion: key was just set
92
+ map.get(key).push(node);
93
+ }
94
+ // Sort each sibling group by `order` ascending
95
+ for (const siblings of map.values()) {
96
+ siblings.sort((a, b) => a.order - b.order);
97
+ }
98
+ return map;
99
+ }
100
+ /**
101
+ * Resolve the filesystem path to a DOC item's master document.
102
+ * Pattern: `{devstepsDir}/items/docs/{docId}/{docId}.md` (STORY-427)
103
+ *
104
+ * SECURITY (TASK-565): Validates doc_id matches WORK_ITEM_ID_PATTERN
105
+ * to prevent path traversal attacks (e.g., "../../../secrets").
106
+ */
107
+ function docItemMdPath(devstepsDir, docId) {
108
+ if (!WORK_ITEM_ID_PATTERN.test(docId)) {
109
+ throw new PathTraversalError(docId);
110
+ }
111
+ return itemPaths(devstepsDir, docId).description;
112
+ }
113
+ // ---------------------------------------------------------------------------
114
+ // Core assembler
115
+ // ---------------------------------------------------------------------------
116
+ /**
117
+ * Assemble a BOM tree (or sub-tree) into a single Markdown document.
118
+ *
119
+ * @param opts - Assembly options (see AssembleOptions)
120
+ * @returns AssembleResult with content, stats, and missing-node list
121
+ */
122
+ export function assembleDocument(opts) {
123
+ const { devstepsDir, rootId, outputPath, returnContent = true, includeFrontmatter = false, maxDepth, strict = true, } = opts;
124
+ const docsMap = readDocsMap(devstepsDir);
125
+ const childMap = buildChildMap(docsMap.nodes);
126
+ const fragments = [];
127
+ const missingNodes = [];
128
+ let nodesProcessed = 0;
129
+ /**
130
+ * DFS traversal. `depth` tracks distance from the assembly root (0-based).
131
+ * TASK-564: Added cycle detection via path tracking.
132
+ * TASK-569: Fixed to use path-scoped detection (not global visited Set).
133
+ */
134
+ function visit(node, depth, path) {
135
+ // TASK-569: Path-scoped cycle detection (prevents false positives on diamond patterns)
136
+ if (path.includes(node.id)) {
137
+ throw new CircularBOMError(node.id, path);
138
+ }
139
+ // Respect maxDepth (0 or absent = unlimited)
140
+ if (maxDepth && maxDepth > 0 && depth >= maxDepth)
141
+ return;
142
+ nodesProcessed++;
143
+ let fragment;
144
+ if (!node.doc_id) {
145
+ // BOM structural node without a DOC item — emit a comment placeholder
146
+ missingNodes.push(node.id);
147
+ fragment = `<!-- no-doc: ${node.id} (${node.title}) -->`;
148
+ }
149
+ else {
150
+ const mdPath = docItemMdPath(devstepsDir, node.doc_id);
151
+ if (!existsSync(mdPath)) {
152
+ missingNodes.push(node.id);
153
+ fragment = `<!-- missing: ${node.doc_id} (${node.title}) -->`;
154
+ }
155
+ else {
156
+ let raw = readTextFile(mdPath);
157
+ if (!includeFrontmatter) {
158
+ const parsed = extractFrontmatter(raw);
159
+ raw = parsed.body;
160
+ }
161
+ fragment = shiftHeadings(raw.trimEnd(), depth);
162
+ }
163
+ }
164
+ if (fragment)
165
+ fragments.push(fragment);
166
+ // Recurse into children (TASK-564: pass updated path for cycle detection)
167
+ const children = childMap.get(node.id) ?? [];
168
+ for (const child of children) {
169
+ visit(child, depth + 1, [...path, node.id]);
170
+ }
171
+ }
172
+ // Determine starting nodes
173
+ let startNodes;
174
+ if (rootId) {
175
+ const rootNode = docsMap.nodes.find((n) => n.id === rootId);
176
+ if (!rootNode) {
177
+ throw new Error(`docs_assemble: unknown root_id "${rootId}". ` +
178
+ `Available node IDs: ${docsMap.nodes.map((n) => n.id).join(', ') || '(none)'}`);
179
+ }
180
+ startNodes = [rootNode];
181
+ }
182
+ else {
183
+ // All root-level nodes (parent_id === null), sorted by order
184
+ startNodes = childMap.get(null) ?? [];
185
+ }
186
+ // TASK-568: Pre-flight root node check (detects fully-circular BOMs)
187
+ if (startNodes.length === 0 && docsMap.nodes.length > 0) {
188
+ throw new CircularBOMError('(no root nodes)', docsMap.nodes.map((n) => n.id));
189
+ }
190
+ for (const node of startNodes) {
191
+ visit(node, 0, []); // TASK-564: pass empty path array for cycle detection
192
+ }
193
+ const assembled = fragments.join('\n\n');
194
+ // TASK-566: Strict mode validation
195
+ if (strict && missingNodes.length > 0) {
196
+ throw new MissingDocItemsError(missingNodes);
197
+ }
198
+ // Write to file if requested
199
+ if (outputPath) {
200
+ mkdirSync(dirname(outputPath), { recursive: true });
201
+ writeFileSync(outputPath, assembled, 'utf-8');
202
+ }
203
+ return {
204
+ content: returnContent ? assembled : undefined,
205
+ nodesProcessed,
206
+ missingNodes,
207
+ outputPath: outputPath ?? undefined,
208
+ };
209
+ }
210
+ //# sourceMappingURL=docs-assemble.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-assemble.js","sourceRoot":"","sources":["../../src/core/docs-assemble.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Copyright © 2025 Thomas Hertel (the@devsteps.dev)
3
+ * Licensed under the Apache License, Version 2.0
4
+ *
5
+ * Core docs-map module — read/write/append/rebuild-shadow API for docs-map.json.
6
+ *
7
+ * Design decisions: SPIKE-036, ADR-007
8
+ * - ADR-S2-10: docs-map.json lives at .devsteps/docs-map.json
9
+ * - ADR-S2-11: Atomic dual-write (JSON primary + JSON shadow) via .tmp → rename
10
+ * - ADR-007: JSON adjacency list format (parent_id + order replace children[])
11
+ * - ADR-S2-06/07: position and level are derived at runtime, never stored
12
+ */
13
+ import type { DocsMapDocument, DocsMapNode, DocsMapNodeUpsert } from '../types/docs-map.js';
14
+ /**
15
+ * Read docs-map.json from .devsteps/docs-map.json.
16
+ * Returns an empty document if the file does not exist yet.
17
+ */
18
+ export declare function readDocsMap(devstepsDir: string): DocsMapDocument;
19
+ /**
20
+ * Atomic dual-write: persist docs-map.json + rebuild JSON shadow.
21
+ * Uses .tmp → rename to prevent partial writes (ADR-S2-11).
22
+ */
23
+ export declare function writeDocsMap(devstepsDir: string, document: DocsMapDocument): void;
24
+ /**
25
+ * Append a new node to the adjacency list.
26
+ * If parentId is not null, validates that the parent exists before appending.
27
+ * The node must already have parent_id set (should match parentId parameter).
28
+ * Performs atomic dual-write after mutation.
29
+ *
30
+ * @returns true if the node was appended, false if parentId was not found.
31
+ */
32
+ export declare function appendDocsMapNode(devstepsDir: string, parentId: string | null, node: DocsMapNode): boolean;
33
+ /**
34
+ * Insert or update a node in the adjacency list by its `id`.
35
+ * - If a node with `node.id` already exists: sets the supplied fields and keeps every omitted
36
+ * one (title, order, doc_id, description, devsteps_items) as stored (BUG-168).
37
+ * - If no node with `node.id` exists: appends it, with order 0, its id as title and no items
38
+ * where the input names none.
39
+ * A non-null parent must be another node of the map; `""`, the node itself or an unknown id is
40
+ * refused, and `null` makes the node a root. Performs atomic dual-write after mutation.
41
+ *
42
+ * @returns `{ action: 'updated' | 'created', found }`, or `{ action: 'error', found }` when the
43
+ * parent is refused.
44
+ */
45
+ export declare function upsertDocsMapNode(devstepsDir: string, node: DocsMapNodeUpsert): {
46
+ action: 'updated' | 'created' | 'error';
47
+ found: boolean;
48
+ };
49
+ /**
50
+ * Remove a node from the adjacency list, never its referenced DOC items or source files.
51
+ * Legacy two-argument calls remove descendants; public consumers explicitly default recursive
52
+ * to false. A dry run returns the same IDs without writing the map or its positions shadow.
53
+ *
54
+ * @returns IDs of all removed nodes (root + children).
55
+ */
56
+ export declare function removeDocsMapNode(devstepsDir: string, id: string, options?: {
57
+ recursive?: boolean;
58
+ dryRun?: boolean;
59
+ }): string[];
60
+ /**
61
+ * Update the `devsteps_items` array on an existing node.
62
+ * - mode 'replace': replaces the array entirely.
63
+ * - mode 'append': adds new IDs (deduplicates).
64
+ * Performs atomic dual-write after mutation.
65
+ *
66
+ * @returns true if the node was found and updated, false if not found.
67
+ */
68
+ export declare function patchDocsMapNodeItems(devstepsDir: string, id: string, itemIds: string[], mode?: 'replace' | 'append'): boolean;
69
+ /**
70
+ * Rebuild the JSON shadow from the current docs-map.json without rewriting the primary file.
71
+ * Use this for index recovery or after external edits to docs-map.json.
72
+ */
73
+ export declare function rebuildDocsMapShadow(devstepsDir: string): void;
74
+ //# sourceMappingURL=docs-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs-map.d.ts","sourceRoot":"","sources":["../../src/core/docs-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,iBAAiB,EAGlB,MAAM,sBAAsB,CAAC;AAsB9B;;;GAGG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAmBhE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI,CAYjF;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,IAAI,EAAE,WAAW,GAChB,OAAO,CAeT;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,iBAAiB,GACtB;IAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAsB7D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACtD,MAAM,EAAE,CAkCV;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,GAAE,SAAS,GAAG,QAAmB,GACpC,OAAO,CAYT;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAG9D"}
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Copyright © 2025 Thomas Hertel (the@devsteps.dev)
3
+ * Licensed under the Apache License, Version 2.0
4
+ *
5
+ * Core docs-map module — read/write/append/rebuild-shadow API for docs-map.json.
6
+ *
7
+ * Design decisions: SPIKE-036, ADR-007
8
+ * - ADR-S2-10: docs-map.json lives at .devsteps/docs-map.json
9
+ * - ADR-S2-11: Atomic dual-write (JSON primary + JSON shadow) via .tmp → rename
10
+ * - ADR-007: JSON adjacency list format (parent_id + order replace children[])
11
+ * - ADR-S2-06/07: position and level are derived at runtime, never stored
12
+ */
13
+ import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
14
+ import { join } from 'node:path';
15
+ import { getCurrentTimestamp } from '../utils/index.js';
16
+ const DOCS_MAP_PATH = 'docs-map.json';
17
+ const POSITIONS_INDEX_DIR = 'index';
18
+ const POSITIONS_INDEX_FILE = 'docs-map-positions.json';
19
+ const SCHEMA_VERSION = '1.0';
20
+ /**
21
+ * Resolve the docs-map.json path within a devstepsDir.
22
+ */
23
+ function docsMapPath(devstepsDir) {
24
+ return join(devstepsDir, DOCS_MAP_PATH);
25
+ }
26
+ /**
27
+ * Resolve the docs-map-positions.json shadow path.
28
+ */
29
+ function positionsIndexPath(devstepsDir) {
30
+ return join(devstepsDir, POSITIONS_INDEX_DIR, POSITIONS_INDEX_FILE);
31
+ }
32
+ /**
33
+ * Read docs-map.json from .devsteps/docs-map.json.
34
+ * Returns an empty document if the file does not exist yet.
35
+ */
36
+ export function readDocsMap(devstepsDir) {
37
+ const filePath = docsMapPath(devstepsDir);
38
+ if (!existsSync(filePath)) {
39
+ return { version: SCHEMA_VERSION, nodes: [] };
40
+ }
41
+ const raw = readFileSync(filePath, 'utf-8');
42
+ let parsed = null;
43
+ try {
44
+ parsed = JSON.parse(raw);
45
+ }
46
+ catch {
47
+ return { version: SCHEMA_VERSION, nodes: [] };
48
+ }
49
+ if (!parsed || typeof parsed !== 'object') {
50
+ return { version: SCHEMA_VERSION, nodes: [] };
51
+ }
52
+ return {
53
+ version: parsed.version ?? SCHEMA_VERSION,
54
+ nodes: Array.isArray(parsed.nodes) ? parsed.nodes : [],
55
+ };
56
+ }
57
+ /**
58
+ * Atomic dual-write: persist docs-map.json + rebuild JSON shadow.
59
+ * Uses .tmp → rename to prevent partial writes (ADR-S2-11).
60
+ */
61
+ export function writeDocsMap(devstepsDir, document) {
62
+ const filePath = docsMapPath(devstepsDir);
63
+ const tmpPath = `${filePath}.tmp`;
64
+ // Ensure .devsteps/ directory exists
65
+ mkdirSync(devstepsDir, { recursive: true });
66
+ writeFileSync(tmpPath, JSON.stringify(document, null, 2), 'utf-8');
67
+ renameSync(tmpPath, filePath);
68
+ // Dual-write JSON shadow
69
+ _writePositionsShadow(devstepsDir, document);
70
+ }
71
+ /**
72
+ * Append a new node to the adjacency list.
73
+ * If parentId is not null, validates that the parent exists before appending.
74
+ * The node must already have parent_id set (should match parentId parameter).
75
+ * Performs atomic dual-write after mutation.
76
+ *
77
+ * @returns true if the node was appended, false if parentId was not found.
78
+ */
79
+ export function appendDocsMapNode(devstepsDir, parentId, node) {
80
+ const document = readDocsMap(devstepsDir);
81
+ if (_findNode(document.nodes, node.id)) {
82
+ throw new Error(`BOM node already exists: ${node.id}`);
83
+ }
84
+ if (parentId !== null) {
85
+ const parent = _findNode(document.nodes, parentId);
86
+ if (!parent)
87
+ return false;
88
+ }
89
+ document.nodes.push({ ...node, parent_id: parentId });
90
+ writeDocsMap(devstepsDir, document);
91
+ return true;
92
+ }
93
+ /**
94
+ * Insert or update a node in the adjacency list by its `id`.
95
+ * - If a node with `node.id` already exists: sets the supplied fields and keeps every omitted
96
+ * one (title, order, doc_id, description, devsteps_items) as stored (BUG-168).
97
+ * - If no node with `node.id` exists: appends it, with order 0, its id as title and no items
98
+ * where the input names none.
99
+ * A non-null parent must be another node of the map; `""`, the node itself or an unknown id is
100
+ * refused, and `null` makes the node a root. Performs atomic dual-write after mutation.
101
+ *
102
+ * @returns `{ action: 'updated' | 'created', found }`, or `{ action: 'error', found }` when the
103
+ * parent is refused.
104
+ */
105
+ export function upsertDocsMapNode(devstepsDir, node) {
106
+ const document = readDocsMap(devstepsDir);
107
+ const existingIndex = document.nodes.findIndex((n) => n.id === node.id);
108
+ const found = existingIndex !== -1;
109
+ if (node.parent_id !== null &&
110
+ (node.parent_id === node.id || !_findNode(document.nodes, node.parent_id))) {
111
+ return { action: 'error', found };
112
+ }
113
+ const supplied = Object.fromEntries(Object.entries(node).filter(([, value]) => value !== undefined));
114
+ if (found) {
115
+ document.nodes[existingIndex] = { ...document.nodes[existingIndex], ...supplied };
116
+ writeDocsMap(devstepsDir, document);
117
+ return { action: 'updated', found };
118
+ }
119
+ document.nodes.push({ order: 0, title: node.id, devsteps_items: [], ...supplied });
120
+ writeDocsMap(devstepsDir, document);
121
+ return { action: 'created', found };
122
+ }
123
+ /**
124
+ * Remove a node from the adjacency list, never its referenced DOC items or source files.
125
+ * Legacy two-argument calls remove descendants; public consumers explicitly default recursive
126
+ * to false. A dry run returns the same IDs without writing the map or its positions shadow.
127
+ *
128
+ * @returns IDs of all removed nodes (root + children).
129
+ */
130
+ export function removeDocsMapNode(devstepsDir, id, options = {}) {
131
+ if (typeof id !== 'string' || id.trim() === '') {
132
+ throw new Error('id is required and must be a non-empty string.');
133
+ }
134
+ for (const key of ['recursive', 'dryRun']) {
135
+ if (options[key] !== undefined && typeof options[key] !== 'boolean') {
136
+ throw new Error(`${key} must be a boolean.`);
137
+ }
138
+ }
139
+ id = id.trim();
140
+ const document = readDocsMap(devstepsDir);
141
+ const removed = [];
142
+ const visited = new Set();
143
+ function collectIds(nodeId) {
144
+ if (visited.has(nodeId))
145
+ return;
146
+ visited.add(nodeId);
147
+ removed.push(nodeId);
148
+ const children = document.nodes.filter((n) => n.parent_id === nodeId);
149
+ for (const child of children)
150
+ collectIds(child.id);
151
+ }
152
+ const target = _findNode(document.nodes, id);
153
+ if (!target)
154
+ return [];
155
+ if (options.recursive === false && document.nodes.some((node) => node.parent_id === id)) {
156
+ throw new Error(`Node '${id}' has children; set recursive=true to remove its subtree.`);
157
+ }
158
+ collectIds(id);
159
+ if (options.dryRun)
160
+ return removed;
161
+ document.nodes = document.nodes.filter((n) => !visited.has(n.id));
162
+ writeDocsMap(devstepsDir, document);
163
+ return removed;
164
+ }
165
+ /**
166
+ * Update the `devsteps_items` array on an existing node.
167
+ * - mode 'replace': replaces the array entirely.
168
+ * - mode 'append': adds new IDs (deduplicates).
169
+ * Performs atomic dual-write after mutation.
170
+ *
171
+ * @returns true if the node was found and updated, false if not found.
172
+ */
173
+ export function patchDocsMapNodeItems(devstepsDir, id, itemIds, mode = 'append') {
174
+ const document = readDocsMap(devstepsDir);
175
+ const existingIndex = document.nodes.findIndex((n) => n.id === id);
176
+ if (existingIndex === -1)
177
+ return false;
178
+ const existing = document.nodes[existingIndex].devsteps_items ?? [];
179
+ document.nodes[existingIndex] = {
180
+ ...document.nodes[existingIndex],
181
+ devsteps_items: mode === 'replace' ? itemIds : [...new Set([...existing, ...itemIds])],
182
+ };
183
+ writeDocsMap(devstepsDir, document);
184
+ return true;
185
+ }
186
+ /**
187
+ * Rebuild the JSON shadow from the current docs-map.json without rewriting the primary file.
188
+ * Use this for index recovery or after external edits to docs-map.json.
189
+ */
190
+ export function rebuildDocsMapShadow(devstepsDir) {
191
+ const document = readDocsMap(devstepsDir);
192
+ _writePositionsShadow(devstepsDir, document);
193
+ }
194
+ // ─── Private helpers ──────────────────────────────────────────────────────────
195
+ /**
196
+ * Write the flat JSON shadow to .devsteps/index/docs-map-positions.json.
197
+ * Uses .tmp → rename for atomicity.
198
+ */
199
+ function _writePositionsShadow(devstepsDir, document) {
200
+ const entries = _flattenNodes(document.nodes);
201
+ const index = {
202
+ updated: getCurrentTimestamp(),
203
+ entries,
204
+ };
205
+ const indexDir = join(devstepsDir, POSITIONS_INDEX_DIR);
206
+ mkdirSync(indexDir, { recursive: true });
207
+ const filePath = positionsIndexPath(devstepsDir);
208
+ const tmpPath = `${filePath}.tmp`;
209
+ writeFileSync(tmpPath, JSON.stringify(index, null, 2), 'utf-8');
210
+ renameSync(tmpPath, filePath);
211
+ }
212
+ /**
213
+ * Flatten the adjacency list into DocsMapPositionEntry[] with derived position + depth.
214
+ * Position is dot-notation (e.g. "1.2.3") computed by traversing the parent_id chain.
215
+ * Nodes are sorted by `order` within each sibling group.
216
+ */
217
+ function _flattenNodes(nodes) {
218
+ const result = [];
219
+ function processChildren(parentId, parentPosition, depth) {
220
+ const siblings = nodes
221
+ .filter((n) => n.parent_id === parentId)
222
+ .sort((a, b) => a.order - b.order);
223
+ for (let i = 0; i < siblings.length; i++) {
224
+ const node = siblings[i];
225
+ const position = parentPosition ? `${parentPosition}.${i + 1}` : `${i + 1}`;
226
+ result.push({
227
+ id: node.id,
228
+ doc_id: node.doc_id,
229
+ parent_arch_id: node.parent_id,
230
+ title: node.title,
231
+ devsteps_items: node.devsteps_items,
232
+ position,
233
+ depth,
234
+ });
235
+ processChildren(node.id, position, depth + 1);
236
+ }
237
+ }
238
+ processChildren(null, '', 0);
239
+ return result;
240
+ }
241
+ /**
242
+ * Find a node by ARCH-NNN id in the flat adjacency list.
243
+ */
244
+ function _findNode(nodes, id) {
245
+ return nodes.find((n) => n.id === id) ?? null;
246
+ }
247
+ //# sourceMappingURL=docs-map.js.map