@unbrained/pm-cli 2026.6.30 → 2026.7.2

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 (628) hide show
  1. package/AGENTS.md +2 -0
  2. package/CHANGELOG.md +26 -0
  3. package/dist/cli/bootstrap-args.js +89 -79
  4. package/dist/cli/bootstrap-args.js.map +1 -1
  5. package/dist/cli/commander-usage.d.ts +2 -0
  6. package/dist/cli/commander-usage.js +58 -47
  7. package/dist/cli/commander-usage.js.map +1 -1
  8. package/dist/cli/commands/aggregate.js +102 -79
  9. package/dist/cli/commands/aggregate.js.map +1 -1
  10. package/dist/cli/commands/calendar.js +339 -303
  11. package/dist/cli/commands/calendar.js.map +1 -1
  12. package/dist/cli/commands/close-many.js +89 -68
  13. package/dist/cli/commands/close-many.js.map +1 -1
  14. package/dist/cli/commands/close.js +157 -129
  15. package/dist/cli/commands/close.js.map +1 -1
  16. package/dist/cli/commands/comments-audit.js +50 -42
  17. package/dist/cli/commands/comments-audit.js.map +1 -1
  18. package/dist/cli/commands/config.d.ts +2 -0
  19. package/dist/cli/commands/config.js +443 -879
  20. package/dist/cli/commands/config.js.map +1 -1
  21. package/dist/cli/commands/context.js +365 -287
  22. package/dist/cli/commands/context.js.map +1 -1
  23. package/dist/cli/commands/contracts.js +352 -238
  24. package/dist/cli/commands/contracts.js.map +1 -1
  25. package/dist/cli/commands/create.js +483 -434
  26. package/dist/cli/commands/create.js.map +1 -1
  27. package/dist/cli/commands/dedupe-audit.js +46 -39
  28. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  29. package/dist/cli/commands/dedupe-merge.js +88 -69
  30. package/dist/cli/commands/dedupe-merge.js.map +1 -1
  31. package/dist/cli/commands/extension/bundled-catalog.js +59 -46
  32. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  33. package/dist/cli/commands/extension/doctor.js +129 -78
  34. package/dist/cli/commands/extension/doctor.js.map +1 -1
  35. package/dist/cli/commands/extension/managed-state.js +101 -57
  36. package/dist/cli/commands/extension/managed-state.js.map +1 -1
  37. package/dist/cli/commands/extension/scaffold.d.ts +7 -0
  38. package/dist/cli/commands/extension/scaffold.js +214 -186
  39. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  40. package/dist/cli/commands/extension.d.ts +6 -1
  41. package/dist/cli/commands/extension.js +1034 -902
  42. package/dist/cli/commands/extension.js.map +1 -1
  43. package/dist/cli/commands/get.js +114 -81
  44. package/dist/cli/commands/get.js.map +1 -1
  45. package/dist/cli/commands/health.d.ts +17 -0
  46. package/dist/cli/commands/health.js +446 -307
  47. package/dist/cli/commands/health.js.map +1 -1
  48. package/dist/cli/commands/history-compact.js +209 -140
  49. package/dist/cli/commands/history-compact.js.map +1 -1
  50. package/dist/cli/commands/history-redact.js +162 -119
  51. package/dist/cli/commands/history-redact.js.map +1 -1
  52. package/dist/cli/commands/history-repair.js +120 -85
  53. package/dist/cli/commands/history-repair.js.map +1 -1
  54. package/dist/cli/commands/init.d.ts +8 -2
  55. package/dist/cli/commands/init.js +263 -162
  56. package/dist/cli/commands/init.js.map +1 -1
  57. package/dist/cli/commands/list-filter-shared.js +55 -48
  58. package/dist/cli/commands/list-filter-shared.js.map +1 -1
  59. package/dist/cli/commands/list.js +152 -102
  60. package/dist/cli/commands/list.js.map +1 -1
  61. package/dist/cli/commands/next.js +49 -32
  62. package/dist/cli/commands/next.js.map +1 -1
  63. package/dist/cli/commands/plan.js +373 -298
  64. package/dist/cli/commands/plan.js.map +1 -1
  65. package/dist/cli/commands/recurrence-parsers.js +43 -25
  66. package/dist/cli/commands/recurrence-parsers.js.map +1 -1
  67. package/dist/cli/commands/reindex.d.ts +21 -5
  68. package/dist/cli/commands/reindex.js +345 -205
  69. package/dist/cli/commands/reindex.js.map +1 -1
  70. package/dist/cli/commands/restore.d.ts +8 -7
  71. package/dist/cli/commands/restore.js +105 -69
  72. package/dist/cli/commands/restore.js.map +1 -1
  73. package/dist/cli/commands/schema.js +33 -30
  74. package/dist/cli/commands/schema.js.map +1 -1
  75. package/dist/cli/commands/search.d.ts +10 -2
  76. package/dist/cli/commands/search.js +595 -536
  77. package/dist/cli/commands/search.js.map +1 -1
  78. package/dist/cli/commands/telemetry.js +98 -87
  79. package/dist/cli/commands/telemetry.js.map +1 -1
  80. package/dist/cli/commands/test-all.js +237 -168
  81. package/dist/cli/commands/test-all.js.map +1 -1
  82. package/dist/cli/commands/test.d.ts +6 -5
  83. package/dist/cli/commands/test.js +530 -464
  84. package/dist/cli/commands/test.js.map +1 -1
  85. package/dist/cli/commands/update-many.js +57 -42
  86. package/dist/cli/commands/update-many.js.map +1 -1
  87. package/dist/cli/commands/update.d.ts +1 -1
  88. package/dist/cli/commands/update.js +764 -747
  89. package/dist/cli/commands/update.js.map +1 -1
  90. package/dist/cli/commands/validate.d.ts +18 -1
  91. package/dist/cli/commands/validate.js +466 -343
  92. package/dist/cli/commands/validate.js.map +1 -1
  93. package/dist/cli/error-guidance.js +399 -357
  94. package/dist/cli/error-guidance.js.map +1 -1
  95. package/dist/cli/extension-command-options.js +48 -21
  96. package/dist/cli/extension-command-options.js.map +1 -1
  97. package/dist/cli/main.d.ts +47 -0
  98. package/dist/cli/main.js +428 -341
  99. package/dist/cli/main.js.map +1 -1
  100. package/dist/cli/migration-gates.js +22 -45
  101. package/dist/cli/migration-gates.js.map +1 -1
  102. package/dist/cli/register-list-query.js +94 -105
  103. package/dist/cli/register-list-query.js.map +1 -1
  104. package/dist/cli/register-mutation.js +400 -416
  105. package/dist/cli/register-mutation.js.map +1 -1
  106. package/dist/cli/register-operations.js +86 -66
  107. package/dist/cli/register-operations.js.map +1 -1
  108. package/dist/cli/register-setup.js +120 -101
  109. package/dist/cli/register-setup.js.map +1 -1
  110. package/dist/cli/registration-helpers.js +117 -122
  111. package/dist/cli/registration-helpers.js.map +1 -1
  112. package/dist/cli-bundle/chunks/{activity-MVSEND6D.js → activity-CUC4JY3U.js} +9 -9
  113. package/dist/cli-bundle/chunks/activity-WEIEMM73.js +16 -0
  114. package/dist/cli-bundle/chunks/{aggregate-MOC4TR2G.js → aggregate-DKUTRY6R.js} +109 -85
  115. package/dist/cli-bundle/chunks/aggregate-DKUTRY6R.js.map +1 -0
  116. package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js → aggregate-SW5PNGCS.js} +108 -84
  117. package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js.map → aggregate-SW5PNGCS.js.map} +2 -2
  118. package/dist/cli-bundle/chunks/{append-KDHT4GHI.js → append-H32VOR2Y.js} +6 -6
  119. package/dist/cli-bundle/chunks/{append-LEDBAM3K.js → append-UBM632FK.js} +6 -6
  120. package/dist/cli-bundle/chunks/{chunk-Z55WX4IQ.js → chunk-2227673O.js} +158 -114
  121. package/dist/cli-bundle/chunks/chunk-2227673O.js.map +1 -0
  122. package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js → chunk-2ASNV4DH.js} +4 -4
  123. package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js → chunk-2CHRYUXL.js} +2 -2
  124. package/dist/cli-bundle/chunks/{chunk-QE5UFCCO.js → chunk-2KWL5NPW.js} +42 -27
  125. package/dist/cli-bundle/chunks/chunk-2KWL5NPW.js.map +1 -0
  126. package/dist/cli-bundle/chunks/{chunk-ZEATCVAC.js → chunk-36UGKF4O.js} +21 -29
  127. package/dist/cli-bundle/chunks/chunk-36UGKF4O.js.map +7 -0
  128. package/dist/cli-bundle/chunks/{chunk-JZG5ADVE.js → chunk-3AZUFQK6.js} +1103 -963
  129. package/dist/cli-bundle/chunks/chunk-3AZUFQK6.js.map +1 -0
  130. package/dist/cli-bundle/chunks/{chunk-DRPF274X.js → chunk-3LCUASYG.js} +2 -2
  131. package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js → chunk-3Q2HBMTI.js} +2 -2
  132. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +87 -0
  133. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +7 -0
  134. package/dist/cli-bundle/chunks/{chunk-GF7EAR22.js → chunk-4NUOWFBT.js} +109 -72
  135. package/dist/cli-bundle/chunks/chunk-4NUOWFBT.js.map +7 -0
  136. package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js → chunk-55XRYWEG.js} +6 -6
  137. package/dist/cli-bundle/chunks/{chunk-5IRVSKPS.js → chunk-5GVTFFTC.js} +150 -224
  138. package/dist/cli-bundle/chunks/chunk-5GVTFFTC.js.map +1 -0
  139. package/dist/cli-bundle/chunks/{chunk-CHRNYKNI.js → chunk-5PGBHRY3.js} +41 -26
  140. package/dist/cli-bundle/chunks/chunk-5PGBHRY3.js.map +7 -0
  141. package/dist/cli-bundle/chunks/{chunk-53ARXF2O.js → chunk-66Z3X7ZG.js} +261 -161
  142. package/dist/cli-bundle/chunks/chunk-66Z3X7ZG.js.map +7 -0
  143. package/dist/cli-bundle/chunks/{chunk-A3UNLXNJ.js → chunk-6ITZLD4T.js} +738 -688
  144. package/dist/cli-bundle/chunks/chunk-6ITZLD4T.js.map +7 -0
  145. package/dist/cli-bundle/chunks/{chunk-JTRKME24.js → chunk-6YCYF2AI.js} +262 -162
  146. package/dist/cli-bundle/chunks/chunk-6YCYF2AI.js.map +1 -0
  147. package/dist/cli-bundle/chunks/{chunk-RM6MHL6A.js → chunk-6ZMBJRDJ.js} +580 -467
  148. package/dist/cli-bundle/chunks/chunk-6ZMBJRDJ.js.map +7 -0
  149. package/dist/cli-bundle/chunks/{chunk-RPRW26NG.js → chunk-7MYWF4ZX.js} +110 -73
  150. package/dist/cli-bundle/chunks/chunk-7MYWF4ZX.js.map +1 -0
  151. package/dist/cli-bundle/chunks/{chunk-SNUK7H5J.js → chunk-7NSPKJUS.js} +716 -606
  152. package/dist/cli-bundle/chunks/chunk-7NSPKJUS.js.map +7 -0
  153. package/dist/cli-bundle/chunks/{chunk-KYDYQMNW.js → chunk-7TH5NMVB.js} +95 -53
  154. package/dist/cli-bundle/chunks/chunk-7TH5NMVB.js.map +7 -0
  155. package/dist/cli-bundle/chunks/{chunk-VD3LKZFX.js → chunk-7W4H4K26.js} +739 -689
  156. package/dist/cli-bundle/chunks/chunk-7W4H4K26.js.map +1 -0
  157. package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js → chunk-A6VOGKBA.js} +6 -6
  158. package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js → chunk-AIAIXG7I.js} +2 -2
  159. package/dist/cli-bundle/chunks/{chunk-NIBP3I7A.js → chunk-AJEBCRIY.js} +128 -126
  160. package/dist/cli-bundle/chunks/chunk-AJEBCRIY.js.map +1 -0
  161. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js → chunk-B4O5S7I3.js} +79 -57
  162. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js.map → chunk-B4O5S7I3.js.map} +2 -2
  163. package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js → chunk-BTX5MIQF.js} +2 -2
  164. package/dist/cli-bundle/chunks/chunk-BVZZN2LH.js +809 -0
  165. package/dist/cli-bundle/chunks/chunk-BVZZN2LH.js.map +7 -0
  166. package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js → chunk-CYBDUHNO.js} +3 -3
  167. package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js → chunk-CZPVDLD2.js} +4 -4
  168. package/dist/cli-bundle/chunks/{chunk-FDEVKXC4.js → chunk-EMPGXBUF.js} +22 -30
  169. package/dist/cli-bundle/chunks/chunk-EMPGXBUF.js.map +1 -0
  170. package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js → chunk-EUKTMRN3.js} +2 -2
  171. package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js → chunk-FFOQHGNH.js} +6 -6
  172. package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js → chunk-GFMSLORL.js} +6 -6
  173. package/dist/cli-bundle/chunks/{chunk-IZQOJR2B.js → chunk-GRRG3MCT.js} +198 -189
  174. package/dist/cli-bundle/chunks/chunk-GRRG3MCT.js.map +7 -0
  175. package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js → chunk-H4GRLYJS.js} +3 -3
  176. package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js → chunk-HQTPRV4D.js} +6 -6
  177. package/dist/cli-bundle/chunks/{chunk-CY5IJMUM.js → chunk-I66WE2HE.js} +712 -602
  178. package/dist/cli-bundle/chunks/chunk-I66WE2HE.js.map +1 -0
  179. package/dist/cli-bundle/chunks/{chunk-ZFIEEDTJ.js → chunk-IEEJQCZ4.js} +509 -363
  180. package/dist/cli-bundle/chunks/chunk-IEEJQCZ4.js.map +7 -0
  181. package/dist/cli-bundle/chunks/{chunk-DU66JUGT.js → chunk-IG5JYZGU.js} +488 -420
  182. package/dist/cli-bundle/chunks/chunk-IG5JYZGU.js.map +7 -0
  183. package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js → chunk-JMK5GCK2.js} +2 -2
  184. package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js → chunk-JXAUVO6X.js} +258 -169
  185. package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js.map → chunk-JXAUVO6X.js.map} +2 -2
  186. package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js → chunk-K2VYLVX4.js} +2 -2
  187. package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js → chunk-KCO2EAN5.js} +3 -3
  188. package/dist/cli-bundle/chunks/{chunk-T7ZMQI4J.js → chunk-KIYCOJ63.js} +198 -189
  189. package/dist/cli-bundle/chunks/chunk-KIYCOJ63.js.map +1 -0
  190. package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js → chunk-KLXF7NCC.js} +2 -2
  191. package/dist/cli-bundle/chunks/{chunk-V3KLX7U7.js → chunk-KN3URLKS.js} +510 -364
  192. package/dist/cli-bundle/chunks/chunk-KN3URLKS.js.map +1 -0
  193. package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js → chunk-LRKMWUUV.js} +2 -2
  194. package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js → chunk-LTRAF2D7.js} +3 -3
  195. package/dist/cli-bundle/chunks/{chunk-5T6WPLRO.js → chunk-MNBPX5JS.js} +394 -354
  196. package/dist/cli-bundle/chunks/chunk-MNBPX5JS.js.map +7 -0
  197. package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js → chunk-MRD4T5LF.js} +2 -2
  198. package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js → chunk-N2JSWVWG.js} +4 -4
  199. package/dist/cli-bundle/chunks/{chunk-7WDETKGP.js → chunk-N3QCJS4M.js} +1105 -965
  200. package/dist/cli-bundle/chunks/chunk-N3QCJS4M.js.map +7 -0
  201. package/dist/cli-bundle/chunks/{chunk-KGQ3W65B.js → chunk-NRZS637N.js} +258 -169
  202. package/dist/cli-bundle/chunks/chunk-NRZS637N.js.map +1 -0
  203. package/dist/cli-bundle/chunks/chunk-OTUJZKGI.js +799 -0
  204. package/dist/cli-bundle/chunks/chunk-OTUJZKGI.js.map +1 -0
  205. package/dist/cli-bundle/chunks/{chunk-ZIE6WXJ2.js → chunk-Q6K2OACU.js} +153 -90
  206. package/dist/cli-bundle/chunks/chunk-Q6K2OACU.js.map +1 -0
  207. package/dist/cli-bundle/chunks/{chunk-K46GQ265.js → chunk-Q6NXOHS6.js} +489 -421
  208. package/dist/cli-bundle/chunks/chunk-Q6NXOHS6.js.map +1 -0
  209. package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js → chunk-QH3FSKRJ.js} +2 -2
  210. package/dist/cli-bundle/chunks/{chunk-UB3V5WUI.js → chunk-RM37OPYK.js} +394 -354
  211. package/dist/cli-bundle/chunks/chunk-RM37OPYK.js.map +1 -0
  212. package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js → chunk-S62UANU7.js} +3 -3
  213. package/dist/cli-bundle/chunks/{chunk-NO6Y6FB2.js → chunk-SPM2XLWI.js} +37 -28
  214. package/dist/cli-bundle/chunks/chunk-SPM2XLWI.js.map +7 -0
  215. package/dist/cli-bundle/chunks/{chunk-DORJSBGJ.js → chunk-SYNKD3ZG.js} +127 -125
  216. package/dist/cli-bundle/chunks/chunk-SYNKD3ZG.js.map +7 -0
  217. package/dist/cli-bundle/chunks/{chunk-6YRAMXRS.js → chunk-SYVUU7EK.js} +581 -468
  218. package/dist/cli-bundle/chunks/chunk-SYVUU7EK.js.map +1 -0
  219. package/dist/cli-bundle/chunks/{chunk-D5LYZVGB.js → chunk-TPOFWBMY.js} +95 -53
  220. package/dist/cli-bundle/chunks/chunk-TPOFWBMY.js.map +1 -0
  221. package/dist/cli-bundle/chunks/{chunk-IHXXUIXS.js → chunk-TTHCEV5Q.js} +92 -77
  222. package/dist/cli-bundle/chunks/chunk-TTHCEV5Q.js.map +1 -0
  223. package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js → chunk-U2BEEM2X.js} +3 -3
  224. package/dist/cli-bundle/chunks/{chunk-Z5BM2FKQ.js → chunk-UGLU6Q2I.js} +91 -76
  225. package/dist/cli-bundle/chunks/chunk-UGLU6Q2I.js.map +7 -0
  226. package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js → chunk-UT73HUPC.js} +3 -3
  227. package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js → chunk-UTSH5GWX.js} +4 -4
  228. package/dist/cli-bundle/chunks/{chunk-AWN4PPH5.js → chunk-UWKEJMZU.js} +157 -113
  229. package/dist/cli-bundle/chunks/chunk-UWKEJMZU.js.map +7 -0
  230. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +84 -0
  231. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +1 -0
  232. package/dist/cli-bundle/chunks/{chunk-KTMMTOIP.js → chunk-W47SML5B.js} +152 -89
  233. package/dist/cli-bundle/chunks/chunk-W47SML5B.js.map +7 -0
  234. package/dist/cli-bundle/chunks/{chunk-UFKNF23C.js → chunk-WJAMWAHZ.js} +157 -118
  235. package/dist/cli-bundle/chunks/chunk-WJAMWAHZ.js.map +7 -0
  236. package/dist/cli-bundle/chunks/{chunk-HIBK6H4S.js → chunk-XCHUVHKU.js} +685 -544
  237. package/dist/cli-bundle/chunks/chunk-XCHUVHKU.js.map +1 -0
  238. package/dist/cli-bundle/chunks/{chunk-DJDXAU74.js → chunk-XEWQKDYZ.js} +685 -544
  239. package/dist/cli-bundle/chunks/chunk-XEWQKDYZ.js.map +7 -0
  240. package/dist/cli-bundle/chunks/{chunk-BOWQWXLI.js → chunk-XTHQWXVC.js} +158 -119
  241. package/dist/cli-bundle/chunks/chunk-XTHQWXVC.js.map +1 -0
  242. package/dist/cli-bundle/chunks/{chunk-6T5ZIWBS.js → chunk-XWGEMNBR.js} +150 -224
  243. package/dist/cli-bundle/chunks/chunk-XWGEMNBR.js.map +7 -0
  244. package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js → chunk-Y4NRKBFW.js} +3 -3
  245. package/dist/cli-bundle/chunks/{chunk-WTRUDJ3R.js → chunk-YLZZ6T54.js} +38 -29
  246. package/dist/cli-bundle/chunks/chunk-YLZZ6T54.js.map +1 -0
  247. package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js → chunk-YPKFV2JR.js} +6 -6
  248. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js → chunk-Z4DGFQDH.js} +80 -58
  249. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js.map → chunk-Z4DGFQDH.js.map} +1 -1
  250. package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js → chunk-ZNHEYCDD.js} +2 -2
  251. package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js → chunk-ZNT7KEWE.js} +2 -2
  252. package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js → claim-SENTPZBN.js} +8 -8
  253. package/dist/cli-bundle/chunks/{claim-6NINZYB3.js → claim-Z7MEQCBT.js} +8 -8
  254. package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js → close-424MX4CU.js} +7 -7
  255. package/dist/cli-bundle/chunks/close-YCWQQPDS.js +14 -0
  256. package/dist/cli-bundle/chunks/{close-many-CXJBOWWY.js → close-many-2IV4J2TR.js} +103 -82
  257. package/dist/cli-bundle/chunks/close-many-2IV4J2TR.js.map +1 -0
  258. package/dist/cli-bundle/chunks/{close-many-BFMP6HHK.js → close-many-SWY34BII.js} +102 -81
  259. package/dist/cli-bundle/chunks/close-many-SWY34BII.js.map +7 -0
  260. package/dist/cli-bundle/chunks/{comments-ETHABIY6.js → comments-4FGNTSNV.js} +8 -8
  261. package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js → comments-7YS5MY5X.js} +8 -8
  262. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js +1062 -0
  263. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js.map +1 -0
  264. package/dist/cli-bundle/chunks/config-G74GISC4.js +1072 -0
  265. package/dist/cli-bundle/chunks/config-G74GISC4.js.map +7 -0
  266. package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js → context-LHVKJSPJ.js} +12 -12
  267. package/dist/cli-bundle/chunks/{context-XDI4DKKT.js → context-ZQY54JNS.js} +12 -12
  268. package/dist/cli-bundle/chunks/{contracts-SMOAN5NF.js → contracts-CP2EZJC7.js} +320 -199
  269. package/dist/cli-bundle/chunks/contracts-CP2EZJC7.js.map +7 -0
  270. package/dist/cli-bundle/chunks/{contracts-KP4QAGVW.js → contracts-FIZLMP7O.js} +321 -200
  271. package/dist/cli-bundle/chunks/contracts-FIZLMP7O.js.map +1 -0
  272. package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js → copy-GYNQQPW2.js} +5 -5
  273. package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js → copy-TLW7JTQT.js} +5 -5
  274. package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js → create-VSKYSOCD.js} +12 -12
  275. package/dist/cli-bundle/chunks/create-XTMAPS7I.js +28 -0
  276. package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js → delete-4W5JYCEG.js} +5 -5
  277. package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js → delete-ANTOTI2I.js} +5 -5
  278. package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js → deps-HPPE6MJN.js} +5 -5
  279. package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js → deps-ZQZN54EZ.js} +5 -5
  280. package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js → docs-RPOVFMP3.js} +7 -7
  281. package/dist/cli-bundle/chunks/{docs-2TIFR62T.js → docs-XJNYBJGE.js} +7 -7
  282. package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js → eval-DM6JBZTS.js} +10 -10
  283. package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js → eval-RFBI5FGS.js} +10 -10
  284. package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js → extension-B3YY4WY5.js} +11 -10
  285. package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js → extension-TTSEFQTS.js} +11 -10
  286. package/dist/cli-bundle/chunks/{files-DF3HO6XK.js → files-5D65CHGE.js} +7 -7
  287. package/dist/cli-bundle/chunks/{files-T5ODMETM.js → files-GPIG77EN.js} +7 -7
  288. package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js → focus-C3PEJV2C.js} +6 -6
  289. package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js → focus-ZHN7WIGX.js} +6 -6
  290. package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js → gc-D4JQ6OWN.js} +3 -3
  291. package/dist/cli-bundle/chunks/{gc-FULIVYR4.js → gc-VZIXDL32.js} +3 -3
  292. package/dist/cli-bundle/chunks/{get-VYPIICPC.js → get-GIBRUUOP.js} +121 -81
  293. package/dist/cli-bundle/chunks/get-GIBRUUOP.js.map +1 -0
  294. package/dist/cli-bundle/chunks/{get-AWK324RS.js → get-IOVAN6RU.js} +120 -80
  295. package/dist/cli-bundle/chunks/get-IOVAN6RU.js.map +7 -0
  296. package/dist/cli-bundle/chunks/{health-Q66C43GN.js → health-L2U3AFKV.js} +437 -264
  297. package/dist/cli-bundle/chunks/health-L2U3AFKV.js.map +1 -0
  298. package/dist/cli-bundle/chunks/{health-FBCVZGSX.js → health-MM7AWXYF.js} +436 -263
  299. package/dist/cli-bundle/chunks/health-MM7AWXYF.js.map +7 -0
  300. package/dist/cli-bundle/chunks/history-DD7L7BNL.js +18 -0
  301. package/dist/cli-bundle/chunks/{history-X4OSES6K.js → history-IL7XCEX2.js} +8 -8
  302. package/dist/cli-bundle/chunks/{history-compact-2GHT32UX.js → history-compact-HALOTOU7.js} +214 -135
  303. package/dist/cli-bundle/chunks/history-compact-HALOTOU7.js.map +1 -0
  304. package/dist/cli-bundle/chunks/{history-compact-WLCQEKXS.js → history-compact-MV25P7DM.js} +213 -134
  305. package/dist/cli-bundle/chunks/history-compact-MV25P7DM.js.map +7 -0
  306. package/dist/cli-bundle/chunks/history-redact-IX4YEWMY.js +19 -0
  307. package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js → history-redact-VYCWQFK7.js} +9 -9
  308. package/dist/cli-bundle/chunks/{history-repair-FY75IC26.js → history-repair-44MODPQF.js} +124 -84
  309. package/dist/cli-bundle/chunks/history-repair-44MODPQF.js.map +1 -0
  310. package/dist/cli-bundle/chunks/{history-repair-GABSDSVD.js → history-repair-CPNAOCNF.js} +123 -83
  311. package/dist/cli-bundle/chunks/history-repair-CPNAOCNF.js.map +7 -0
  312. package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js → init-F27NHENZ.js} +12 -11
  313. package/dist/cli-bundle/chunks/init-HHVQQP6C.js +22 -0
  314. package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js → learnings-HJVDQIGY.js} +8 -8
  315. package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js → learnings-XSFSUUWK.js} +8 -8
  316. package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js → list-HPMEKCAA.js} +8 -8
  317. package/dist/cli-bundle/chunks/{list-ROT7JF62.js → list-VMPWTURB.js} +8 -8
  318. package/dist/cli-bundle/chunks/{next-66BJB4N2.js → next-ETXF2ZCN.js} +59 -37
  319. package/dist/cli-bundle/chunks/next-ETXF2ZCN.js.map +7 -0
  320. package/dist/cli-bundle/chunks/{next-N5MWJTBY.js → next-QM6YJIIS.js} +60 -38
  321. package/dist/cli-bundle/chunks/next-QM6YJIIS.js.map +1 -0
  322. package/dist/cli-bundle/chunks/{notes-FW6YFLND.js → notes-GDZIKGR6.js} +8 -8
  323. package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js → notes-WDDBPC4D.js} +8 -8
  324. package/dist/cli-bundle/chunks/{plan-ZHKZ7JVF.js → plan-BGDR73Z6.js} +373 -279
  325. package/dist/cli-bundle/chunks/plan-BGDR73Z6.js.map +1 -0
  326. package/dist/cli-bundle/chunks/{plan-DQ7G4EDC.js → plan-C5IMM335.js} +372 -278
  327. package/dist/cli-bundle/chunks/plan-C5IMM335.js.map +7 -0
  328. package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js → profile-CCOKZ2IQ.js} +9 -9
  329. package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js → profile-HUCENIEQ.js} +9 -9
  330. package/dist/cli-bundle/chunks/{register-list-query-Y2VRHPCL.js → register-list-query-ROSNIL52.js} +80 -83
  331. package/dist/cli-bundle/chunks/register-list-query-ROSNIL52.js.map +1 -0
  332. package/dist/cli-bundle/chunks/{register-list-query-KY6Z6WV7.js → register-list-query-XN4ZRHSV.js} +79 -82
  333. package/dist/cli-bundle/chunks/register-list-query-XN4ZRHSV.js.map +7 -0
  334. package/dist/cli-bundle/chunks/{register-mutation-PCARIGZS.js → register-mutation-CFSB2MS3.js} +406 -385
  335. package/dist/cli-bundle/chunks/register-mutation-CFSB2MS3.js.map +1 -0
  336. package/dist/cli-bundle/chunks/{register-mutation-N6AYSKPM.js → register-mutation-KRLAHEL2.js} +405 -384
  337. package/dist/cli-bundle/chunks/register-mutation-KRLAHEL2.js.map +7 -0
  338. package/dist/cli-bundle/chunks/{register-operations-L6CYTOIH.js → register-operations-4PASGJDB.js} +112 -93
  339. package/dist/cli-bundle/chunks/register-operations-4PASGJDB.js.map +7 -0
  340. package/dist/cli-bundle/chunks/{register-operations-YAT6FUUB.js → register-operations-MBN4KGUM.js} +113 -94
  341. package/dist/cli-bundle/chunks/register-operations-MBN4KGUM.js.map +1 -0
  342. package/dist/cli-bundle/chunks/{register-setup-N7UGXYJC.js → register-setup-VIAWYFP5.js} +129 -104
  343. package/dist/cli-bundle/chunks/register-setup-VIAWYFP5.js.map +1 -0
  344. package/dist/cli-bundle/chunks/{register-setup-MPANILQF.js → register-setup-ZCGKHDKL.js} +128 -103
  345. package/dist/cli-bundle/chunks/register-setup-ZCGKHDKL.js.map +7 -0
  346. package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js → restore-4CBWUMCX.js} +9 -9
  347. package/dist/cli-bundle/chunks/restore-5UEAGG3W.js +17 -0
  348. package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js → scheduling-shortcuts-6VFKNKCM.js} +12 -12
  349. package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js → scheduling-shortcuts-ERHCVTEM.js} +12 -12
  350. package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js → schema-TDGK6N3I.js} +7 -7
  351. package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js → schema-UE5KKAUX.js} +7 -7
  352. package/dist/cli-bundle/chunks/{search-KP6H7COV.js → search-FP7MEU4S.js} +10 -10
  353. package/dist/cli-bundle/chunks/{search-CX5UMV4H.js → search-K4CFLQ5S.js} +10 -10
  354. package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js → stats-NJJCALEZ.js} +6 -6
  355. package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js → stats-XT6QRKQY.js} +6 -6
  356. package/dist/cli-bundle/chunks/{telemetry-DIFPXCAT.js → telemetry-5SQ5UDXC.js} +84 -70
  357. package/dist/cli-bundle/chunks/telemetry-5SQ5UDXC.js.map +7 -0
  358. package/dist/cli-bundle/chunks/{telemetry-WTYFUPRL.js → telemetry-HVXFZA2U.js} +85 -71
  359. package/dist/cli-bundle/chunks/telemetry-HVXFZA2U.js.map +1 -0
  360. package/dist/cli-bundle/chunks/{test-QNDXZQCW.js → test-UFSJ5YIO.js} +15 -14
  361. package/dist/cli-bundle/chunks/{test-HU2BS7EY.js → test-YCDAUBWF.js} +15 -14
  362. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js +427 -0
  363. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js.map +1 -0
  364. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js +430 -0
  365. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js.map +7 -0
  366. package/dist/cli-bundle/chunks/{test-runs-CA6K32RD.js → test-runs-FK5E75AA.js} +185 -147
  367. package/dist/cli-bundle/chunks/test-runs-FK5E75AA.js.map +1 -0
  368. package/dist/cli-bundle/chunks/{test-runs-LANLLPVO.js → test-runs-H4TGWGRN.js} +184 -146
  369. package/dist/cli-bundle/chunks/test-runs-H4TGWGRN.js.map +7 -0
  370. package/dist/cli-bundle/chunks/update-MTCFES6X.js +24 -0
  371. package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js → update-Y5WQVT5O.js} +15 -15
  372. package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js → update-many-6YAYYRLE.js} +83 -68
  373. package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js.map → update-many-6YAYYRLE.js.map} +2 -2
  374. package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js → update-many-JTKKSA7Y.js} +84 -69
  375. package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js.map → update-many-JTKKSA7Y.js.map} +1 -1
  376. package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js → upgrade-DTAHZ236.js} +11 -10
  377. package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js.map → upgrade-DTAHZ236.js.map} +1 -1
  378. package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js → upgrade-JUDU7YL4.js} +13 -12
  379. package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js.map → upgrade-JUDU7YL4.js.map} +1 -1
  380. package/dist/cli-bundle/chunks/{validate-2G566PKQ.js → validate-732RWS5W.js} +440 -319
  381. package/dist/cli-bundle/chunks/validate-732RWS5W.js.map +7 -0
  382. package/dist/cli-bundle/chunks/{validate-BDPVXHHH.js → validate-W7H5TEDC.js} +441 -320
  383. package/dist/cli-bundle/chunks/validate-W7H5TEDC.js.map +1 -0
  384. package/dist/cli-bundle/main.js +986 -1500
  385. package/dist/cli-bundle/main.js.map +4 -4
  386. package/dist/core/config/nested-settings.js +89 -67
  387. package/dist/core/config/nested-settings.js.map +1 -1
  388. package/dist/core/extensions/activation-summary-markdown.js +23 -12
  389. package/dist/core/extensions/activation-summary-markdown.js.map +1 -1
  390. package/dist/core/extensions/extension-policy.d.ts +18 -3
  391. package/dist/core/extensions/extension-policy.js +116 -106
  392. package/dist/core/extensions/extension-policy.js.map +1 -1
  393. package/dist/core/extensions/loader.js +310 -232
  394. package/dist/core/extensions/loader.js.map +1 -1
  395. package/dist/core/governance/metadata-coverage.js +20 -28
  396. package/dist/core/governance/metadata-coverage.js.map +1 -1
  397. package/dist/core/history/drift-scan.js +93 -81
  398. package/dist/core/history/drift-scan.js.map +1 -1
  399. package/dist/core/item/item-format.js +523 -410
  400. package/dist/core/item/item-format.js.map +1 -1
  401. package/dist/core/item/item-type-definition.js +14 -14
  402. package/dist/core/item/item-type-definition.js.map +1 -1
  403. package/dist/core/item/type-registry.js +87 -82
  404. package/dist/core/item/type-registry.js.map +1 -1
  405. package/dist/core/output/mutation-projection.js +42 -26
  406. package/dist/core/output/mutation-projection.js.map +1 -1
  407. package/dist/core/schema/runtime-schema.js +34 -28
  408. package/dist/core/schema/runtime-schema.js.map +1 -1
  409. package/dist/core/search/semantic-defaults.js +64 -37
  410. package/dist/core/search/semantic-defaults.js.map +1 -1
  411. package/dist/core/search/vector-stores.js +32 -17
  412. package/dist/core/search/vector-stores.js.map +1 -1
  413. package/dist/core/sentry/helpers.js +31 -28
  414. package/dist/core/sentry/helpers.js.map +1 -1
  415. package/dist/core/sentry/instrument.js +54 -43
  416. package/dist/core/sentry/instrument.js.map +1 -1
  417. package/dist/core/store/front-matter-cache.js +239 -153
  418. package/dist/core/store/front-matter-cache.js.map +1 -1
  419. package/dist/core/store/item-store.js +33 -26
  420. package/dist/core/store/item-store.js.map +1 -1
  421. package/dist/core/store/settings.js +247 -203
  422. package/dist/core/store/settings.js.map +1 -1
  423. package/dist/core/test/background-runs.js +189 -160
  424. package/dist/core/test/background-runs.js.map +1 -1
  425. package/dist/mcp/server.js +387 -367
  426. package/dist/mcp/server.js.map +1 -1
  427. package/dist/sdk/cli-contracts/flag-contracts.js +111 -180
  428. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  429. package/dist/sdk/cli-contracts/tool-schema.js +76 -45
  430. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
  431. package/dist/sdk/compose.d.ts +4 -1
  432. package/dist/sdk/compose.js +181 -115
  433. package/dist/sdk/compose.js.map +1 -1
  434. package/docs/RELEASING.md +2 -3
  435. package/package.json +2 -2
  436. package/packages/pm-beads/extensions/beads/runtime.ts +240 -167
  437. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +65 -58
  438. package/packages/pm-todos/extensions/todos/runtime.ts +65 -42
  439. package/dist/cli-bundle/chunks/activity-EJBMXUBH.js +0 -16
  440. package/dist/cli-bundle/chunks/aggregate-MOC4TR2G.js.map +0 -1
  441. package/dist/cli-bundle/chunks/chunk-53ARXF2O.js.map +0 -7
  442. package/dist/cli-bundle/chunks/chunk-5IRVSKPS.js.map +0 -1
  443. package/dist/cli-bundle/chunks/chunk-5T6WPLRO.js.map +0 -7
  444. package/dist/cli-bundle/chunks/chunk-6T5ZIWBS.js.map +0 -7
  445. package/dist/cli-bundle/chunks/chunk-6YRAMXRS.js.map +0 -1
  446. package/dist/cli-bundle/chunks/chunk-7WDETKGP.js.map +0 -7
  447. package/dist/cli-bundle/chunks/chunk-A3UNLXNJ.js.map +0 -7
  448. package/dist/cli-bundle/chunks/chunk-AWN4PPH5.js.map +0 -7
  449. package/dist/cli-bundle/chunks/chunk-BOWQWXLI.js.map +0 -1
  450. package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js +0 -115
  451. package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js.map +0 -1
  452. package/dist/cli-bundle/chunks/chunk-CHRNYKNI.js.map +0 -7
  453. package/dist/cli-bundle/chunks/chunk-CY5IJMUM.js.map +0 -1
  454. package/dist/cli-bundle/chunks/chunk-D5LYZVGB.js.map +0 -1
  455. package/dist/cli-bundle/chunks/chunk-DJDXAU74.js.map +0 -7
  456. package/dist/cli-bundle/chunks/chunk-DORJSBGJ.js.map +0 -7
  457. package/dist/cli-bundle/chunks/chunk-DU66JUGT.js.map +0 -7
  458. package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js +0 -118
  459. package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js.map +0 -7
  460. package/dist/cli-bundle/chunks/chunk-FDEVKXC4.js.map +0 -1
  461. package/dist/cli-bundle/chunks/chunk-GF7EAR22.js.map +0 -7
  462. package/dist/cli-bundle/chunks/chunk-HIBK6H4S.js.map +0 -1
  463. package/dist/cli-bundle/chunks/chunk-IHXXUIXS.js.map +0 -1
  464. package/dist/cli-bundle/chunks/chunk-ISEKN64V.js +0 -35
  465. package/dist/cli-bundle/chunks/chunk-ISEKN64V.js.map +0 -7
  466. package/dist/cli-bundle/chunks/chunk-IZQOJR2B.js.map +0 -7
  467. package/dist/cli-bundle/chunks/chunk-JTRKME24.js.map +0 -1
  468. package/dist/cli-bundle/chunks/chunk-JZG5ADVE.js.map +0 -1
  469. package/dist/cli-bundle/chunks/chunk-K46GQ265.js.map +0 -1
  470. package/dist/cli-bundle/chunks/chunk-KGQ3W65B.js.map +0 -1
  471. package/dist/cli-bundle/chunks/chunk-KTMMTOIP.js.map +0 -7
  472. package/dist/cli-bundle/chunks/chunk-KYDYQMNW.js.map +0 -7
  473. package/dist/cli-bundle/chunks/chunk-NIBP3I7A.js.map +0 -1
  474. package/dist/cli-bundle/chunks/chunk-NO6Y6FB2.js.map +0 -7
  475. package/dist/cli-bundle/chunks/chunk-QE5UFCCO.js.map +0 -1
  476. package/dist/cli-bundle/chunks/chunk-RM6MHL6A.js.map +0 -7
  477. package/dist/cli-bundle/chunks/chunk-RPRW26NG.js.map +0 -1
  478. package/dist/cli-bundle/chunks/chunk-SNUK7H5J.js.map +0 -7
  479. package/dist/cli-bundle/chunks/chunk-T7ZMQI4J.js.map +0 -1
  480. package/dist/cli-bundle/chunks/chunk-UB3V5WUI.js.map +0 -1
  481. package/dist/cli-bundle/chunks/chunk-UFKNF23C.js.map +0 -7
  482. package/dist/cli-bundle/chunks/chunk-V3KLX7U7.js.map +0 -1
  483. package/dist/cli-bundle/chunks/chunk-VD3LKZFX.js.map +0 -1
  484. package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js +0 -32
  485. package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js.map +0 -1
  486. package/dist/cli-bundle/chunks/chunk-WTRUDJ3R.js.map +0 -1
  487. package/dist/cli-bundle/chunks/chunk-Z55WX4IQ.js.map +0 -1
  488. package/dist/cli-bundle/chunks/chunk-Z5BM2FKQ.js.map +0 -7
  489. package/dist/cli-bundle/chunks/chunk-ZEATCVAC.js.map +0 -7
  490. package/dist/cli-bundle/chunks/chunk-ZFIEEDTJ.js.map +0 -7
  491. package/dist/cli-bundle/chunks/chunk-ZIE6WXJ2.js.map +0 -1
  492. package/dist/cli-bundle/chunks/close-37KEHLYM.js +0 -14
  493. package/dist/cli-bundle/chunks/close-many-BFMP6HHK.js.map +0 -7
  494. package/dist/cli-bundle/chunks/close-many-CXJBOWWY.js.map +0 -1
  495. package/dist/cli-bundle/chunks/config-FIXJZEQK.js +0 -1541
  496. package/dist/cli-bundle/chunks/config-FIXJZEQK.js.map +0 -7
  497. package/dist/cli-bundle/chunks/config-X3ZVCUUG.js +0 -1531
  498. package/dist/cli-bundle/chunks/config-X3ZVCUUG.js.map +0 -1
  499. package/dist/cli-bundle/chunks/contracts-KP4QAGVW.js.map +0 -1
  500. package/dist/cli-bundle/chunks/contracts-SMOAN5NF.js.map +0 -7
  501. package/dist/cli-bundle/chunks/create-DFMNBKBS.js +0 -28
  502. package/dist/cli-bundle/chunks/get-AWK324RS.js.map +0 -7
  503. package/dist/cli-bundle/chunks/get-VYPIICPC.js.map +0 -1
  504. package/dist/cli-bundle/chunks/health-FBCVZGSX.js.map +0 -7
  505. package/dist/cli-bundle/chunks/health-Q66C43GN.js.map +0 -1
  506. package/dist/cli-bundle/chunks/history-5XUSLAJA.js +0 -18
  507. package/dist/cli-bundle/chunks/history-compact-2GHT32UX.js.map +0 -1
  508. package/dist/cli-bundle/chunks/history-compact-WLCQEKXS.js.map +0 -7
  509. package/dist/cli-bundle/chunks/history-redact-BVHWDXPR.js +0 -19
  510. package/dist/cli-bundle/chunks/history-repair-FY75IC26.js.map +0 -1
  511. package/dist/cli-bundle/chunks/history-repair-GABSDSVD.js.map +0 -7
  512. package/dist/cli-bundle/chunks/init-TRYJELH4.js +0 -21
  513. package/dist/cli-bundle/chunks/next-66BJB4N2.js.map +0 -7
  514. package/dist/cli-bundle/chunks/next-N5MWJTBY.js.map +0 -1
  515. package/dist/cli-bundle/chunks/plan-DQ7G4EDC.js.map +0 -7
  516. package/dist/cli-bundle/chunks/plan-ZHKZ7JVF.js.map +0 -1
  517. package/dist/cli-bundle/chunks/register-list-query-KY6Z6WV7.js.map +0 -7
  518. package/dist/cli-bundle/chunks/register-list-query-Y2VRHPCL.js.map +0 -1
  519. package/dist/cli-bundle/chunks/register-mutation-N6AYSKPM.js.map +0 -7
  520. package/dist/cli-bundle/chunks/register-mutation-PCARIGZS.js.map +0 -1
  521. package/dist/cli-bundle/chunks/register-operations-L6CYTOIH.js.map +0 -7
  522. package/dist/cli-bundle/chunks/register-operations-YAT6FUUB.js.map +0 -1
  523. package/dist/cli-bundle/chunks/register-setup-MPANILQF.js.map +0 -7
  524. package/dist/cli-bundle/chunks/register-setup-N7UGXYJC.js.map +0 -1
  525. package/dist/cli-bundle/chunks/restore-IRAKSWIW.js +0 -17
  526. package/dist/cli-bundle/chunks/telemetry-DIFPXCAT.js.map +0 -7
  527. package/dist/cli-bundle/chunks/telemetry-WTYFUPRL.js.map +0 -1
  528. package/dist/cli-bundle/chunks/test-all-PZTBLLQ6.js +0 -360
  529. package/dist/cli-bundle/chunks/test-all-PZTBLLQ6.js.map +0 -7
  530. package/dist/cli-bundle/chunks/test-all-XLPI4USF.js +0 -357
  531. package/dist/cli-bundle/chunks/test-all-XLPI4USF.js.map +0 -1
  532. package/dist/cli-bundle/chunks/test-runs-CA6K32RD.js.map +0 -1
  533. package/dist/cli-bundle/chunks/test-runs-LANLLPVO.js.map +0 -7
  534. package/dist/cli-bundle/chunks/update-UXDLTEOZ.js +0 -24
  535. package/dist/cli-bundle/chunks/validate-2G566PKQ.js.map +0 -7
  536. package/dist/cli-bundle/chunks/validate-BDPVXHHH.js.map +0 -1
  537. /package/dist/cli-bundle/chunks/{activity-MVSEND6D.js.map → activity-CUC4JY3U.js.map} +0 -0
  538. /package/dist/cli-bundle/chunks/{activity-EJBMXUBH.js.map → activity-WEIEMM73.js.map} +0 -0
  539. /package/dist/cli-bundle/chunks/{append-KDHT4GHI.js.map → append-H32VOR2Y.js.map} +0 -0
  540. /package/dist/cli-bundle/chunks/{append-LEDBAM3K.js.map → append-UBM632FK.js.map} +0 -0
  541. /package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js.map → chunk-2ASNV4DH.js.map} +0 -0
  542. /package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js.map → chunk-2CHRYUXL.js.map} +0 -0
  543. /package/dist/cli-bundle/chunks/{chunk-DRPF274X.js.map → chunk-3LCUASYG.js.map} +0 -0
  544. /package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js.map → chunk-3Q2HBMTI.js.map} +0 -0
  545. /package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js.map → chunk-55XRYWEG.js.map} +0 -0
  546. /package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js.map → chunk-A6VOGKBA.js.map} +0 -0
  547. /package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js.map → chunk-AIAIXG7I.js.map} +0 -0
  548. /package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js.map → chunk-BTX5MIQF.js.map} +0 -0
  549. /package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js.map → chunk-CYBDUHNO.js.map} +0 -0
  550. /package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js.map → chunk-CZPVDLD2.js.map} +0 -0
  551. /package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js.map → chunk-EUKTMRN3.js.map} +0 -0
  552. /package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js.map → chunk-FFOQHGNH.js.map} +0 -0
  553. /package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js.map → chunk-GFMSLORL.js.map} +0 -0
  554. /package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js.map → chunk-H4GRLYJS.js.map} +0 -0
  555. /package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js.map → chunk-HQTPRV4D.js.map} +0 -0
  556. /package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js.map → chunk-JMK5GCK2.js.map} +0 -0
  557. /package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js.map → chunk-K2VYLVX4.js.map} +0 -0
  558. /package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js.map → chunk-KCO2EAN5.js.map} +0 -0
  559. /package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js.map → chunk-KLXF7NCC.js.map} +0 -0
  560. /package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js.map → chunk-LRKMWUUV.js.map} +0 -0
  561. /package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js.map → chunk-LTRAF2D7.js.map} +0 -0
  562. /package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js.map → chunk-MRD4T5LF.js.map} +0 -0
  563. /package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js.map → chunk-N2JSWVWG.js.map} +0 -0
  564. /package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js.map → chunk-QH3FSKRJ.js.map} +0 -0
  565. /package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js.map → chunk-S62UANU7.js.map} +0 -0
  566. /package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js.map → chunk-U2BEEM2X.js.map} +0 -0
  567. /package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js.map → chunk-UT73HUPC.js.map} +0 -0
  568. /package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js.map → chunk-UTSH5GWX.js.map} +0 -0
  569. /package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js.map → chunk-Y4NRKBFW.js.map} +0 -0
  570. /package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js.map → chunk-YPKFV2JR.js.map} +0 -0
  571. /package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js.map → chunk-ZNHEYCDD.js.map} +0 -0
  572. /package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js.map → chunk-ZNT7KEWE.js.map} +0 -0
  573. /package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js.map → claim-SENTPZBN.js.map} +0 -0
  574. /package/dist/cli-bundle/chunks/{claim-6NINZYB3.js.map → claim-Z7MEQCBT.js.map} +0 -0
  575. /package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js.map → close-424MX4CU.js.map} +0 -0
  576. /package/dist/cli-bundle/chunks/{close-37KEHLYM.js.map → close-YCWQQPDS.js.map} +0 -0
  577. /package/dist/cli-bundle/chunks/{comments-ETHABIY6.js.map → comments-4FGNTSNV.js.map} +0 -0
  578. /package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js.map → comments-7YS5MY5X.js.map} +0 -0
  579. /package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js.map → context-LHVKJSPJ.js.map} +0 -0
  580. /package/dist/cli-bundle/chunks/{context-XDI4DKKT.js.map → context-ZQY54JNS.js.map} +0 -0
  581. /package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js.map → copy-GYNQQPW2.js.map} +0 -0
  582. /package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js.map → copy-TLW7JTQT.js.map} +0 -0
  583. /package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js.map → create-VSKYSOCD.js.map} +0 -0
  584. /package/dist/cli-bundle/chunks/{create-DFMNBKBS.js.map → create-XTMAPS7I.js.map} +0 -0
  585. /package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js.map → delete-4W5JYCEG.js.map} +0 -0
  586. /package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js.map → delete-ANTOTI2I.js.map} +0 -0
  587. /package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js.map → deps-HPPE6MJN.js.map} +0 -0
  588. /package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js.map → deps-ZQZN54EZ.js.map} +0 -0
  589. /package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js.map → docs-RPOVFMP3.js.map} +0 -0
  590. /package/dist/cli-bundle/chunks/{docs-2TIFR62T.js.map → docs-XJNYBJGE.js.map} +0 -0
  591. /package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js.map → eval-DM6JBZTS.js.map} +0 -0
  592. /package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js.map → eval-RFBI5FGS.js.map} +0 -0
  593. /package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js.map → extension-B3YY4WY5.js.map} +0 -0
  594. /package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js.map → extension-TTSEFQTS.js.map} +0 -0
  595. /package/dist/cli-bundle/chunks/{files-DF3HO6XK.js.map → files-5D65CHGE.js.map} +0 -0
  596. /package/dist/cli-bundle/chunks/{files-T5ODMETM.js.map → files-GPIG77EN.js.map} +0 -0
  597. /package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js.map → focus-C3PEJV2C.js.map} +0 -0
  598. /package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js.map → focus-ZHN7WIGX.js.map} +0 -0
  599. /package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js.map → gc-D4JQ6OWN.js.map} +0 -0
  600. /package/dist/cli-bundle/chunks/{gc-FULIVYR4.js.map → gc-VZIXDL32.js.map} +0 -0
  601. /package/dist/cli-bundle/chunks/{history-5XUSLAJA.js.map → history-DD7L7BNL.js.map} +0 -0
  602. /package/dist/cli-bundle/chunks/{history-X4OSES6K.js.map → history-IL7XCEX2.js.map} +0 -0
  603. /package/dist/cli-bundle/chunks/{history-redact-BVHWDXPR.js.map → history-redact-IX4YEWMY.js.map} +0 -0
  604. /package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js.map → history-redact-VYCWQFK7.js.map} +0 -0
  605. /package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js.map → init-F27NHENZ.js.map} +0 -0
  606. /package/dist/cli-bundle/chunks/{init-TRYJELH4.js.map → init-HHVQQP6C.js.map} +0 -0
  607. /package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js.map → learnings-HJVDQIGY.js.map} +0 -0
  608. /package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js.map → learnings-XSFSUUWK.js.map} +0 -0
  609. /package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js.map → list-HPMEKCAA.js.map} +0 -0
  610. /package/dist/cli-bundle/chunks/{list-ROT7JF62.js.map → list-VMPWTURB.js.map} +0 -0
  611. /package/dist/cli-bundle/chunks/{notes-FW6YFLND.js.map → notes-GDZIKGR6.js.map} +0 -0
  612. /package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js.map → notes-WDDBPC4D.js.map} +0 -0
  613. /package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js.map → profile-CCOKZ2IQ.js.map} +0 -0
  614. /package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js.map → profile-HUCENIEQ.js.map} +0 -0
  615. /package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js.map → restore-4CBWUMCX.js.map} +0 -0
  616. /package/dist/cli-bundle/chunks/{restore-IRAKSWIW.js.map → restore-5UEAGG3W.js.map} +0 -0
  617. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js.map → scheduling-shortcuts-6VFKNKCM.js.map} +0 -0
  618. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js.map → scheduling-shortcuts-ERHCVTEM.js.map} +0 -0
  619. /package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js.map → schema-TDGK6N3I.js.map} +0 -0
  620. /package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js.map → schema-UE5KKAUX.js.map} +0 -0
  621. /package/dist/cli-bundle/chunks/{search-KP6H7COV.js.map → search-FP7MEU4S.js.map} +0 -0
  622. /package/dist/cli-bundle/chunks/{search-CX5UMV4H.js.map → search-K4CFLQ5S.js.map} +0 -0
  623. /package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js.map → stats-NJJCALEZ.js.map} +0 -0
  624. /package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js.map → stats-XT6QRKQY.js.map} +0 -0
  625. /package/dist/cli-bundle/chunks/{test-QNDXZQCW.js.map → test-UFSJ5YIO.js.map} +0 -0
  626. /package/dist/cli-bundle/chunks/{test-HU2BS7EY.js.map → test-YCDAUBWF.js.map} +0 -0
  627. /package/dist/cli-bundle/chunks/{update-UXDLTEOZ.js.map → update-MTCFES6X.js.map} +0 -0
  628. /package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js.map → update-Y5WQVT5O.js.map} +0 -0
@@ -1,10 +1,13 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="2e4b7619-5881-5abc-8c6d-a33b06c74f8d")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="636bc41a-f03b-528f-84cb-5ab89ae42c00")}catch(e){}}();
3
3
  import {
4
4
  describeAllowedTransitions,
5
5
  evaluateTransition,
6
6
  resolveTypeWorkflows
7
7
  } from "./chunk-YJIEJRZB.js";
8
+ import {
9
+ runClose
10
+ } from "./chunk-XTHQWXVC.js";
8
11
  import {
9
12
  COMMON_UNSET_FIELD_DEFINITIONS_AFTER_AUTHOR,
10
13
  COMMON_UNSET_FIELD_DEFINITIONS_AFTER_CLOSE_REASON_BEFORE_AUTHOR,
@@ -27,7 +30,7 @@ import {
27
30
  parseTypeOptionEntries,
28
31
  resolvePriority,
29
32
  resolveRuntimeUnsetFieldDefinition
30
- } from "./chunk-UB3V5WUI.js";
33
+ } from "./chunk-RM37OPYK.js";
31
34
  import {
32
35
  applyTagRemovals,
33
36
  assertNoUnknownCsvKeys,
@@ -37,18 +40,15 @@ import {
37
40
  parseCsvKv,
38
41
  parseOptionalNumber,
39
42
  parseTags
40
- } from "./chunk-D6USKAMA.js";
41
- import {
42
- runClose
43
- } from "./chunk-BOWQWXLI.js";
43
+ } from "./chunk-KLXF7NCC.js";
44
44
  import {
45
45
  normalizeParentReferenceValue,
46
46
  validateMissingParentReference,
47
47
  validateSprintOrReleaseValue
48
- } from "./chunk-7RIJGN4R.js";
48
+ } from "./chunk-QH3FSKRJ.js";
49
49
  import {
50
50
  buildInvalidTypeError
51
- } from "./chunk-YEDFE4DC.js";
51
+ } from "./chunk-ZNT7KEWE.js";
52
52
  import {
53
53
  applyRegisteredItemFieldDefaultsAndValidation,
54
54
  buildItemNotFoundError,
@@ -59,14 +59,14 @@ import {
59
59
  parseRegisteredItemFieldAssignments,
60
60
  readLocatedItem,
61
61
  toItemRecord
62
- } from "./chunk-KGQ3W65B.js";
62
+ } from "./chunk-NRZS637N.js";
63
63
  import {
64
64
  collectRuntimeUpdateFieldValues,
65
65
  normalizeStatusInput
66
- } from "./chunk-V3KLX7U7.js";
66
+ } from "./chunk-KN3URLKS.js";
67
67
  import {
68
68
  resolveIsoOrRelative
69
- } from "./chunk-KRASIL6M.js";
69
+ } from "./chunk-K2VYLVX4.js";
70
70
  import {
71
71
  DEPENDENCY_KIND_VALUES,
72
72
  EXIT_CODE,
@@ -89,7 +89,7 @@ import {
89
89
  resolveTypeName,
90
90
  stableValueEquals,
91
91
  validateTypeOptions
92
- } from "./chunk-CY5IJMUM.js";
92
+ } from "./chunk-I66WE2HE.js";
93
93
 
94
94
  // dist/cli/commands/update.js
95
95
  var UPDATE_UNSET_FIELD_DEFINITIONS = [
@@ -321,81 +321,31 @@ function enforceAllowAuditUpdateScope(id, options, clearFrontMatterKeys) {
321
321
  return;
322
322
  }
323
323
  const disallowedFlags = [];
324
- if (options.status !== void 0) {
325
- disallowedFlags.push("--status");
326
- }
327
- if (options.closeReason !== void 0) {
328
- disallowedFlags.push("--close-reason");
329
- }
330
- if (options.assignee !== void 0) {
331
- disallowedFlags.push("--assignee");
332
- }
333
- if (options.parent !== void 0) {
334
- disallowedFlags.push("--parent");
335
- }
336
- if (options.blockedBy !== void 0) {
337
- disallowedFlags.push("--blocked-by");
338
- }
339
- if (options.blockedReason !== void 0) {
340
- disallowedFlags.push("--blocked-reason");
341
- }
342
- if (options.unblockNote !== void 0) {
343
- disallowedFlags.push("--unblock-note");
344
- }
345
- if (options.dep !== void 0) {
346
- disallowedFlags.push("--dep");
347
- }
348
- if (options.depRemove !== void 0) {
349
- disallowedFlags.push("--dep-remove");
350
- }
351
- if (options.replaceDeps === true) {
352
- disallowedFlags.push("--replace-deps");
353
- }
354
- if (options.replaceTests === true) {
355
- disallowedFlags.push("--replace-tests");
356
- }
357
- if (options.note !== void 0) {
358
- disallowedFlags.push("--note");
359
- }
360
- if (options.learning !== void 0) {
361
- disallowedFlags.push("--learning");
362
- }
363
- if (options.test !== void 0) {
364
- disallowedFlags.push("--test");
365
- }
366
- if (options.reminder !== void 0) {
367
- disallowedFlags.push("--reminder");
368
- }
369
- if (options.event !== void 0) {
370
- disallowedFlags.push("--event");
371
- }
372
- if (options.clearDeps === true) {
373
- disallowedFlags.push("--clear-deps");
374
- }
375
- if (options.clearComments === true) {
376
- disallowedFlags.push("--clear-comments");
377
- }
378
- if (options.clearNotes === true) {
379
- disallowedFlags.push("--clear-notes");
380
- }
381
- if (options.clearLearnings === true) {
382
- disallowedFlags.push("--clear-learnings");
383
- }
384
- if (options.clearFiles === true) {
385
- disallowedFlags.push("--clear-files");
386
- }
387
- if (options.clearTests === true) {
388
- disallowedFlags.push("--clear-tests");
389
- }
390
- if (options.clearDocs === true) {
391
- disallowedFlags.push("--clear-docs");
392
- }
393
- if (options.clearReminders === true) {
394
- disallowedFlags.push("--clear-reminders");
395
- }
396
- if (options.clearEvents === true) {
397
- disallowedFlags.push("--clear-events");
398
- }
324
+ pushIf(options.status !== void 0, "--status", disallowedFlags);
325
+ pushIf(options.closeReason !== void 0, "--close-reason", disallowedFlags);
326
+ pushIf(options.assignee !== void 0, "--assignee", disallowedFlags);
327
+ pushIf(options.parent !== void 0, "--parent", disallowedFlags);
328
+ pushIf(options.blockedBy !== void 0, "--blocked-by", disallowedFlags);
329
+ pushIf(options.blockedReason !== void 0, "--blocked-reason", disallowedFlags);
330
+ pushIf(options.unblockNote !== void 0, "--unblock-note", disallowedFlags);
331
+ pushIf(options.dep !== void 0, "--dep", disallowedFlags);
332
+ pushIf(options.depRemove !== void 0, "--dep-remove", disallowedFlags);
333
+ pushIf(options.replaceDeps === true, "--replace-deps", disallowedFlags);
334
+ pushIf(options.replaceTests === true, "--replace-tests", disallowedFlags);
335
+ pushIf(options.note !== void 0, "--note", disallowedFlags);
336
+ pushIf(options.learning !== void 0, "--learning", disallowedFlags);
337
+ pushIf(options.test !== void 0, "--test", disallowedFlags);
338
+ pushIf(options.reminder !== void 0, "--reminder", disallowedFlags);
339
+ pushIf(options.event !== void 0, "--event", disallowedFlags);
340
+ pushIf(options.clearDeps === true, "--clear-deps", disallowedFlags);
341
+ pushIf(options.clearComments === true, "--clear-comments", disallowedFlags);
342
+ pushIf(options.clearNotes === true, "--clear-notes", disallowedFlags);
343
+ pushIf(options.clearLearnings === true, "--clear-learnings", disallowedFlags);
344
+ pushIf(options.clearFiles === true, "--clear-files", disallowedFlags);
345
+ pushIf(options.clearTests === true, "--clear-tests", disallowedFlags);
346
+ pushIf(options.clearDocs === true, "--clear-docs", disallowedFlags);
347
+ pushIf(options.clearReminders === true, "--clear-reminders", disallowedFlags);
348
+ pushIf(options.clearEvents === true, "--clear-events", disallowedFlags);
399
349
  const disallowedUnset = [...clearFrontMatterKeys].filter((field) => AUDIT_UPDATE_DISALLOWED_UNSET_FRONT_MATTER_KEYS.has(field)).sort((left, right) => left.localeCompare(right)).map((field) => `--unset ${field.replaceAll("_", "-")}`);
400
350
  disallowedFlags.push(...disallowedUnset);
401
351
  if (disallowedFlags.length > 0) {
@@ -622,7 +572,7 @@ function normalizeUpdatePolicyOptionKey(raw, typeName) {
622
572
  }
623
573
  return canonical;
624
574
  }
625
- function collectProvidedUpdatePolicyOptions(options, extensionFieldNames) {
575
+ function collectProvidedUpdatePolicyOptions(options, runtimeFieldRegistry, extensionFieldNames) {
626
576
  const provided = /* @__PURE__ */ new Set();
627
577
  const mark = (optionKey, isProvided) => {
628
578
  if (isProvided) {
@@ -699,14 +649,14 @@ function collectProvidedUpdatePolicyOptions(options, extensionFieldNames) {
699
649
  mark("event", options.clearEvents === true);
700
650
  mark("typeOption", options.clearTypeOptions === true);
701
651
  if (options.unset && options.unset.length > 0) {
702
- const unsetTargets = parseUpdateUnsetTargets(options.unset, void 0, extensionFieldNames);
652
+ const unsetTargets = parseUpdateUnsetTargets(options.unset, runtimeFieldRegistry, extensionFieldNames);
703
653
  for (const optionKey of unsetTargets.optionKeys) {
704
654
  mark(optionKey, true);
705
655
  }
706
656
  }
707
657
  return provided;
708
658
  }
709
- function enforceUpdateOptionsByType(typeName, options, typeRegistry, extensionFieldNames) {
659
+ function enforceUpdateOptionsByType(typeName, options, typeRegistry, runtimeFieldRegistry, extensionFieldNames) {
710
660
  const typeDefinition = resolveTypeDefinition(typeName, typeRegistry);
711
661
  if (!typeDefinition) {
712
662
  throw new PmCliError(`Invalid type value "${typeName}"`, EXIT_CODE.USAGE);
@@ -715,7 +665,7 @@ function enforceUpdateOptionsByType(typeName, options, typeRegistry, extensionFi
715
665
  if (policyState.errors.length > 0) {
716
666
  throw new PmCliError(policyState.errors.join("; "), EXIT_CODE.CONFLICT);
717
667
  }
718
- const provided = collectProvidedUpdatePolicyOptions(options, extensionFieldNames);
668
+ const provided = collectProvidedUpdatePolicyOptions(options, runtimeFieldRegistry, extensionFieldNames);
719
669
  for (const disabled of policyState.disabled) {
720
670
  if (provided.has(normalizeUpdatePolicyOptionKey(disabled, typeName))) {
721
671
  throw new PmCliError(`Option ${commandOptionFlagLabel("update", disabled)} is disabled for type "${typeName}" by command_option_policies`, EXIT_CODE.USAGE);
@@ -727,6 +677,95 @@ function enforceUpdateOptionsByType(typeName, options, typeRegistry, extensionFi
727
677
  }
728
678
  }
729
679
  }
680
+ var UPDATE_LEGACY_SCALAR_OPTION_KEYS = [
681
+ "tags",
682
+ "closeReason",
683
+ "deadline",
684
+ "estimatedMinutes",
685
+ "acceptanceCriteria",
686
+ "definitionOfReady",
687
+ "goal",
688
+ "objective",
689
+ "value",
690
+ "impact",
691
+ "outcome",
692
+ "whyNow",
693
+ "assignee",
694
+ "parent",
695
+ "reviewer",
696
+ "risk",
697
+ "confidence",
698
+ "sprint",
699
+ "release",
700
+ "blockedBy",
701
+ "blockedReason",
702
+ "unblockNote",
703
+ "reporter",
704
+ "severity",
705
+ "environment",
706
+ "reproSteps",
707
+ "resolution",
708
+ "expectedResult",
709
+ "actualResult",
710
+ "affectedVersion",
711
+ "fixedVersion",
712
+ "component",
713
+ "regression",
714
+ "customerImpact"
715
+ ];
716
+ var UPDATE_SIMPLE_FIELD_FLAG_KEYS = [
717
+ "title",
718
+ "description",
719
+ "body",
720
+ "status",
721
+ "closeReason",
722
+ "priority",
723
+ "type",
724
+ "deadline",
725
+ "estimatedMinutes",
726
+ "acceptanceCriteria",
727
+ "definitionOfReady",
728
+ "goal",
729
+ "objective",
730
+ "value",
731
+ "impact",
732
+ "outcome",
733
+ "whyNow",
734
+ "assignee",
735
+ "parent",
736
+ "reviewer",
737
+ "risk",
738
+ "confidence",
739
+ "sprint",
740
+ "release",
741
+ "blockedBy",
742
+ "blockedReason",
743
+ "unblockNote",
744
+ "reporter",
745
+ "severity",
746
+ "environment",
747
+ "reproSteps",
748
+ "resolution",
749
+ "expectedResult",
750
+ "actualResult",
751
+ "affectedVersion",
752
+ "fixedVersion",
753
+ "component",
754
+ "regression",
755
+ "customerImpact",
756
+ "dep",
757
+ "depRemove",
758
+ "comment",
759
+ "note",
760
+ "learning",
761
+ "file",
762
+ "test",
763
+ "doc",
764
+ "reminder",
765
+ "event",
766
+ "typeOption",
767
+ "field"
768
+ ];
730
769
  var UPDATE_POST_TAG_SCALAR_MUTATIONS = [
731
770
  {
732
771
  optionKey: "deadline",
@@ -791,9 +830,9 @@ function applyUpdateScalarMutations(definitions, options, context) {
791
830
  context.changedFields.push(definition.metadataKey);
792
831
  }
793
832
  }
794
- async function runUpdate(id, options, global) {
833
+ async function resolveStdinUpdateOptions(options) {
795
834
  const stdinResolver = createStdinTokenResolver();
796
- options = normalizeLegacyNoneUpdateOptions({
835
+ return normalizeLegacyNoneUpdateOptions({
797
836
  ...options,
798
837
  body: await stdinResolver.resolveValue(options.body, "--body"),
799
838
  dep: await stdinResolver.resolveList(options.dep, "--dep"),
@@ -809,24 +848,9 @@ async function runUpdate(id, options, global) {
809
848
  typeOption: await stdinResolver.resolveList(options.typeOption, "--type-option"),
810
849
  field: await stdinResolver.resolveList(options.field, "--field")
811
850
  });
812
- const pmRoot = resolvePmRoot(process.cwd(), global.path);
813
- if (!await pathExists(getSettingsPath(pmRoot))) {
814
- throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
815
- }
816
- const settings = await readSettings(pmRoot);
817
- const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
818
- const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);
819
- const extensionRegistrations = getActiveExtensionRegistrations();
820
- const extensionFieldNames = collectRegisteredItemFieldNames(extensionRegistrations);
821
- const typeRegistry = resolveItemTypeRegistry(settings, extensionRegistrations);
822
- const workflowEnforcement = settings.governance.workflow_enforcement ?? "off";
823
- const typeWorkflows = workflowEnforcement === "off" ? [] : resolveTypeWorkflows(settings.schema);
824
- const parentReferencePolicy = settings.validation.parent_reference;
825
- const sprintReleasePolicy = settings.validation.sprint_release_format;
826
- const unsetTargets = parseUpdateUnsetTargets(options.unset, runtimeFieldRegistry, extensionFieldNames);
827
- const clearOptionKeys = new Set(unsetTargets.optionKeys);
828
- const clearFrontMatterKeys = new Set(unsetTargets.frontMatterKeys);
829
- const clearCollectionDefinitions = [
851
+ }
852
+ function buildClearCollectionDefinitions(options) {
853
+ return [
830
854
  {
831
855
  enabled: options.clearDeps || options.replaceDeps,
832
856
  optionKey: "dep",
@@ -908,6 +932,8 @@ async function runUpdate(id, options, global) {
908
932
  frontMatterKey: "type_options"
909
933
  }
910
934
  ];
935
+ }
936
+ function validateReplaceOptions(options) {
911
937
  if (options.replaceDeps === true && (options.dep === void 0 || options.dep.length === 0)) {
912
938
  throw new PmCliError("--replace-deps requires at least one --dep entry", EXIT_CODE.USAGE);
913
939
  }
@@ -920,54 +946,30 @@ async function runUpdate(id, options, global) {
920
946
  if (options.replaceTests === true && options.clearTests === true) {
921
947
  throw new PmCliError("--replace-tests cannot be combined with --clear-tests", EXIT_CODE.USAGE);
922
948
  }
923
- for (const definition of clearCollectionDefinitions) {
949
+ }
950
+ function applyClearCollectionDefinitions(params) {
951
+ for (const definition of params.definitions) {
924
952
  if (!definition.enabled) {
925
953
  continue;
926
954
  }
927
- if (definition.values && definition.values.length > 0 && !(definition.optionKey === "dep" && options.replaceDeps === true || definition.optionKey === "test" && options.replaceTests === true)) {
955
+ const isReplacement = definition.optionKey === "dep" && params.options.replaceDeps === true || definition.optionKey === "test" && params.options.replaceTests === true;
956
+ if (definition.values && definition.values.length > 0 && !isReplacement) {
928
957
  throw new PmCliError(`Cannot combine ${definition.clearFlag} with ${definition.valueFlag}`, EXIT_CODE.USAGE);
929
958
  }
930
- clearOptionKeys.add(definition.optionKey);
931
- clearFrontMatterKeys.add(definition.frontMatterKey);
959
+ params.clearOptionKeys.add(definition.optionKey);
960
+ params.clearFrontMatterKeys.add(definition.frontMatterKey);
932
961
  }
933
- enforceAllowAuditUpdateScope(id, options, clearFrontMatterKeys);
934
- const scalarOptionPresence = {
935
- tags: options.tags !== void 0,
936
- closeReason: options.closeReason !== void 0,
937
- deadline: options.deadline !== void 0,
938
- estimatedMinutes: options.estimatedMinutes !== void 0,
939
- acceptanceCriteria: options.acceptanceCriteria !== void 0,
940
- definitionOfReady: options.definitionOfReady !== void 0,
941
- order: options.order !== void 0 || options.rank !== void 0,
942
- goal: options.goal !== void 0,
943
- objective: options.objective !== void 0,
944
- value: options.value !== void 0,
945
- impact: options.impact !== void 0,
946
- outcome: options.outcome !== void 0,
947
- whyNow: options.whyNow !== void 0,
948
- assignee: options.assignee !== void 0,
949
- parent: options.parent !== void 0,
950
- reviewer: options.reviewer !== void 0,
951
- risk: options.risk !== void 0,
952
- confidence: options.confidence !== void 0,
953
- sprint: options.sprint !== void 0,
954
- release: options.release !== void 0,
955
- blockedBy: options.blockedBy !== void 0,
956
- blockedReason: options.blockedReason !== void 0,
957
- unblockNote: options.unblockNote !== void 0,
958
- reporter: options.reporter !== void 0,
959
- severity: options.severity !== void 0,
960
- environment: options.environment !== void 0,
961
- reproSteps: options.reproSteps !== void 0,
962
- resolution: options.resolution !== void 0,
963
- expectedResult: options.expectedResult !== void 0,
964
- actualResult: options.actualResult !== void 0,
965
- affectedVersion: options.affectedVersion !== void 0,
966
- fixedVersion: options.fixedVersion !== void 0,
967
- component: options.component !== void 0,
968
- regression: options.regression !== void 0,
969
- customerImpact: options.customerImpact !== void 0
970
- };
962
+ }
963
+ function buildScalarOptionPresence(options) {
964
+ const presence = {};
965
+ for (const key of UPDATE_LEGACY_SCALAR_OPTION_KEYS) {
966
+ presence[String(key)] = options[key] !== void 0;
967
+ }
968
+ presence.order = options.order !== void 0 || options.rank !== void 0;
969
+ return presence;
970
+ }
971
+ function rejectUnsetScalarConflicts(options, unsetTargets) {
972
+ const scalarOptionPresence = buildScalarOptionPresence(options);
971
973
  for (const [optionKey, hasValue] of Object.entries(scalarOptionPresence)) {
972
974
  if (!hasValue || !unsetTargets.optionKeys.has(optionKey)) {
973
975
  continue;
@@ -975,56 +977,539 @@ async function runUpdate(id, options, global) {
975
977
  const unsetField = UPDATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey) ?? optionKey;
976
978
  throw new PmCliError(`Cannot combine --unset ${unsetField} with ${commandOptionFlagLabel("update", optionKey)}`, EXIT_CODE.USAGE);
977
979
  }
978
- if (clearFrontMatterKeys.has("tags")) {
979
- if (Array.isArray(options.addTags) && options.addTags.length > 0) {
980
- throw new PmCliError("Cannot combine --unset tags with --add-tags", EXIT_CODE.USAGE);
981
- }
982
- if (Array.isArray(options.removeTags) && options.removeTags.length > 0) {
983
- throw new PmCliError("Cannot combine --unset tags with --remove-tags", EXIT_CODE.USAGE);
984
- }
980
+ if (!unsetTargets.frontMatterKeys.has("tags")) {
981
+ return;
985
982
  }
983
+ if (Array.isArray(options.addTags) && options.addTags.length > 0) {
984
+ throw new PmCliError("Cannot combine --unset tags with --add-tags", EXIT_CODE.USAGE);
985
+ }
986
+ if (Array.isArray(options.removeTags) && options.removeTags.length > 0) {
987
+ throw new PmCliError("Cannot combine --unset tags with --remove-tags", EXIT_CODE.USAGE);
988
+ }
989
+ }
990
+ function rejectLegacyScalarTokens(options) {
986
991
  const assertNoLegacyScalarToken = (value, optionKey) => {
987
992
  const unsetField = UPDATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey);
988
993
  const hint = unsetField ? `Use --unset ${unsetField} to clear this field.` : void 0;
989
994
  assertNoLegacyNoneToken(value, commandOptionFlagLabel("update", optionKey), hint);
990
995
  };
991
- assertNoLegacyScalarToken(options.tags, "tags");
992
- assertNoLegacyScalarToken(options.closeReason, "closeReason");
993
- assertNoLegacyScalarToken(options.deadline, "deadline");
994
- assertNoLegacyScalarToken(options.estimatedMinutes, "estimatedMinutes");
995
- assertNoLegacyScalarToken(options.acceptanceCriteria, "acceptanceCriteria");
996
- assertNoLegacyScalarToken(options.definitionOfReady, "definitionOfReady");
996
+ for (const key of UPDATE_LEGACY_SCALAR_OPTION_KEYS) {
997
+ assertNoLegacyScalarToken(options[key], String(key));
998
+ }
997
999
  assertNoLegacyScalarToken(options.order ?? options.rank, "order");
998
- assertNoLegacyScalarToken(options.goal, "goal");
999
- assertNoLegacyScalarToken(options.objective, "objective");
1000
- assertNoLegacyScalarToken(options.value, "value");
1001
- assertNoLegacyScalarToken(options.impact, "impact");
1002
- assertNoLegacyScalarToken(options.outcome, "outcome");
1003
- assertNoLegacyScalarToken(options.whyNow, "whyNow");
1004
- assertNoLegacyScalarToken(options.assignee, "assignee");
1005
- assertNoLegacyScalarToken(options.parent, "parent");
1006
- assertNoLegacyScalarToken(options.reviewer, "reviewer");
1007
- assertNoLegacyScalarToken(options.risk, "risk");
1008
- assertNoLegacyScalarToken(options.confidence, "confidence");
1009
- assertNoLegacyScalarToken(options.sprint, "sprint");
1010
- assertNoLegacyScalarToken(options.release, "release");
1011
- assertNoLegacyScalarToken(options.blockedBy, "blockedBy");
1012
- assertNoLegacyScalarToken(options.blockedReason, "blockedReason");
1013
- assertNoLegacyScalarToken(options.unblockNote, "unblockNote");
1014
- assertNoLegacyScalarToken(options.reporter, "reporter");
1015
- assertNoLegacyScalarToken(options.severity, "severity");
1016
- assertNoLegacyScalarToken(options.environment, "environment");
1017
- assertNoLegacyScalarToken(options.reproSteps, "reproSteps");
1018
- assertNoLegacyScalarToken(options.resolution, "resolution");
1019
- assertNoLegacyScalarToken(options.expectedResult, "expectedResult");
1020
- assertNoLegacyScalarToken(options.actualResult, "actualResult");
1021
- assertNoLegacyScalarToken(options.affectedVersion, "affectedVersion");
1022
- assertNoLegacyScalarToken(options.fixedVersion, "fixedVersion");
1023
- assertNoLegacyScalarToken(options.component, "component");
1024
- assertNoLegacyScalarToken(options.regression, "regression");
1025
- assertNoLegacyScalarToken(options.customerImpact, "customerImpact");
1026
1000
  assertNoLegacyNoneTokens(options.reminder, "--reminder", "Use --clear-reminders to clear reminders.");
1027
1001
  assertNoLegacyNoneTokens(options.event, "--event", "Use --clear-events to clear linked events.");
1002
+ }
1003
+ function buildUpdateFieldFlags(options, runtimeFieldUpdates) {
1004
+ const flags = {};
1005
+ for (const key of UPDATE_SIMPLE_FIELD_FLAG_KEYS) {
1006
+ flags[String(key)] = options[key] !== void 0;
1007
+ }
1008
+ flags.tags = options.tags !== void 0;
1009
+ flags.addTags = Array.isArray(options.addTags) && options.addTags.length > 0;
1010
+ flags.removeTags = Array.isArray(options.removeTags) && options.removeTags.length > 0;
1011
+ flags.order = options.order !== void 0;
1012
+ flags.rank = options.rank !== void 0;
1013
+ flags.replaceDeps = options.replaceDeps === true;
1014
+ flags.replaceTests = options.replaceTests === true;
1015
+ flags.unset = options.unset !== void 0 && options.unset.length > 0;
1016
+ flags.clearDeps = options.clearDeps === true;
1017
+ flags.clearComments = options.clearComments === true;
1018
+ flags.clearNotes = options.clearNotes === true;
1019
+ flags.clearLearnings = options.clearLearnings === true;
1020
+ flags.clearFiles = options.clearFiles === true;
1021
+ flags.clearTests = options.clearTests === true;
1022
+ flags.clearDocs = options.clearDocs === true;
1023
+ flags.clearReminders = options.clearReminders === true;
1024
+ flags.clearEvents = options.clearEvents === true;
1025
+ flags.clearTypeOptions = options.clearTypeOptions === true;
1026
+ flags.runtimeFields = Object.keys(runtimeFieldUpdates).length > 0;
1027
+ return flags;
1028
+ }
1029
+ async function buildNoopUpdateResult(params) {
1030
+ const located = await locateItem(params.pmRoot, params.id, params.settings.id_prefix, params.settings.item_format, params.typeRegistry.type_to_folder);
1031
+ if (!located) {
1032
+ throw await buildItemNotFoundError(params.pmRoot, params.id, params.settings.id_prefix, params.typeRegistry.type_to_folder);
1033
+ }
1034
+ const { document } = await readLocatedItem(located, { schema: params.settings.schema });
1035
+ return {
1036
+ item: toItemRecord(document.metadata),
1037
+ changed_fields: [],
1038
+ warnings: ["noop_no_update_fields"]
1039
+ };
1040
+ }
1041
+ async function assertUpdateTrackerInitialized(pmRoot) {
1042
+ if (!await pathExists(getSettingsPath(pmRoot))) {
1043
+ throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
1044
+ }
1045
+ }
1046
+ function assertMatchingOrderRank(options) {
1047
+ if (options.order !== void 0 && options.rank !== void 0 && options.order !== options.rank) {
1048
+ throw new PmCliError("--order and --rank must match when both are provided", EXIT_CODE.USAGE);
1049
+ }
1050
+ }
1051
+ async function resolveParentReferenceForUpdate(params) {
1052
+ if (params.options.parent === void 0 || params.unsetTargets.frontMatterKeys.has("parent")) {
1053
+ return { resolvedParentValue: void 0, warnings: [] };
1054
+ }
1055
+ const resolvedParentValue = normalizeParentReferenceValue(params.options.parent);
1056
+ const parentLocated = await locateItem(params.pmRoot, resolvedParentValue, params.settings.id_prefix, params.settings.item_format, params.typeRegistry.type_to_folder);
1057
+ if (parentLocated) {
1058
+ return { resolvedParentValue, warnings: [] };
1059
+ }
1060
+ const normalizedParentId = normalizeItemId(resolvedParentValue, params.settings.id_prefix);
1061
+ return {
1062
+ resolvedParentValue,
1063
+ warnings: validateMissingParentReference(normalizedParentId, params.parentReferencePolicy).warnings
1064
+ };
1065
+ }
1066
+ function blockedByResolutionWarnings(resolution) {
1067
+ return resolution.unresolved === void 0 ? [] : [`blocked_by_unresolved:${resolution.unresolved}`];
1068
+ }
1069
+ async function collectWorkflowTransitionWarnings(params) {
1070
+ if (params.workflowEnforcement === "off" || params.typeWorkflows.length === 0 || !params.fieldFlags.status || params.options.status === void 0) {
1071
+ return [];
1072
+ }
1073
+ const located = await locateItem(params.pmRoot, params.id, params.settings.id_prefix, params.settings.item_format, params.typeRegistry.type_to_folder);
1074
+ if (!located) {
1075
+ throw await buildItemNotFoundError(params.pmRoot, params.id, params.settings.id_prefix, params.typeRegistry.type_to_folder);
1076
+ }
1077
+ const { document } = await readLocatedItem(located, { schema: params.settings.schema });
1078
+ const effectiveType = params.options.type !== void 0 ? resolveTypeName(params.options.type, params.typeRegistry) ?? params.options.type : document.metadata?.type ?? "";
1079
+ const warning = enforceTypeWorkflowTransition({
1080
+ enforcement: params.workflowEnforcement,
1081
+ typeWorkflows: params.typeWorkflows,
1082
+ statusRegistry: params.statusRegistry,
1083
+ typeName: effectiveType,
1084
+ fromStatus: document.metadata?.status ?? "",
1085
+ toStatus: params.options.status
1086
+ });
1087
+ return warning ? [warning] : [];
1088
+ }
1089
+ async function routeCloseStatusUpdate(context) {
1090
+ if (!context.fieldFlags.status) {
1091
+ return void 0;
1092
+ }
1093
+ const targetStatus = normalizeStatusInput(context.options.status, context.statusRegistry);
1094
+ if (targetStatus !== context.statusRegistry.close_status) {
1095
+ return void 0;
1096
+ }
1097
+ const otherFieldKeys = Object.entries(context.fieldFlags).filter(([key, value]) => value && key !== "status" && key !== "closeReason").map(([key]) => key);
1098
+ const routeWarnings = [];
1099
+ let preChangedFields = [];
1100
+ if (otherFieldKeys.length > 0) {
1101
+ const preUpdate = await runUpdate(context.id, { ...context.options, status: void 0, closeReason: void 0, message: void 0 }, context.global);
1102
+ preChangedFields = preUpdate.changed_fields;
1103
+ routeWarnings.push(...preUpdate.warnings);
1104
+ }
1105
+ const explicitReason = typeof context.options.closeReason === "string" ? context.options.closeReason.trim() : "";
1106
+ const fallbackMessage = typeof context.options.message === "string" ? context.options.message.trim() : "";
1107
+ const closeReason = explicitReason || fallbackMessage || "Closed via pm update";
1108
+ const closeResult = await runClose(context.id, closeReason, {
1109
+ author: context.options.author,
1110
+ message: context.options.message,
1111
+ force: context.options.force
1112
+ }, context.global);
1113
+ const warnings = [
1114
+ ...context.workflowTransitionWarnings,
1115
+ ...routeWarnings,
1116
+ ...closeResult.warnings,
1117
+ "auto_routed_from_update_to_close"
1118
+ ];
1119
+ if (explicitReason.length === 0 && fallbackMessage.length === 0) {
1120
+ warnings.push("close_reason_defaulted");
1121
+ }
1122
+ return {
1123
+ item: closeResult.item,
1124
+ changed_fields: [...preChangedFields, ...closeResult.changed_fields],
1125
+ warnings
1126
+ };
1127
+ }
1128
+ function applySimpleItemMutations(document, options, statusRegistry, changedFields) {
1129
+ if (options.title !== void 0) {
1130
+ document.metadata.title = options.title;
1131
+ changedFields.push("title");
1132
+ }
1133
+ if (options.description !== void 0) {
1134
+ document.metadata.description = options.description;
1135
+ changedFields.push("description");
1136
+ }
1137
+ if (options.body !== void 0) {
1138
+ document.body = options.body;
1139
+ changedFields.push("body");
1140
+ }
1141
+ return normalizeStatusInput(document.metadata.status, statusRegistry) ?? document.metadata.status;
1142
+ }
1143
+ function applyStatusAndCloseReasonMutations(document, context, previousStatusNormalized, changedFields) {
1144
+ if (context.options.status !== void 0) {
1145
+ const status = parseStatus(context.options.status, context.statusRegistry);
1146
+ document.metadata.status = status;
1147
+ changedFields.push("status");
1148
+ }
1149
+ if (context.options.closeReason !== void 0 || context.clearFrontMatterKeys.has("close_reason")) {
1150
+ if (context.clearFrontMatterKeys.has("close_reason")) {
1151
+ delete document.metadata.close_reason;
1152
+ } else {
1153
+ const closeReason = context.options.closeReason?.trim() ?? "";
1154
+ if (closeReason.length === 0) {
1155
+ throw new PmCliError("--close-reason must not be empty", EXIT_CODE.USAGE);
1156
+ }
1157
+ document.metadata.close_reason = closeReason;
1158
+ }
1159
+ changedFields.push("close_reason");
1160
+ return;
1161
+ }
1162
+ if (context.options.status !== void 0 && previousStatusNormalized === context.statusRegistry.close_status && document.metadata.status !== context.statusRegistry.canceled_status && document.metadata.close_reason !== void 0) {
1163
+ delete document.metadata.close_reason;
1164
+ changedFields.push("close_reason");
1165
+ }
1166
+ }
1167
+ function applyPriorityTypeAndOptions(document, context, changedFields) {
1168
+ let activeTypeName = resolveTypeName(document.metadata.type, context.typeRegistry) ?? document.metadata.type;
1169
+ if (context.options.priority !== void 0) {
1170
+ document.metadata.priority = ensurePriority(context.options.priority);
1171
+ changedFields.push("priority");
1172
+ }
1173
+ if (context.options.type !== void 0) {
1174
+ const resolvedTypeName = resolveTypeName(context.options.type, context.typeRegistry);
1175
+ if (!resolvedTypeName) {
1176
+ throw new PmCliError(buildInvalidTypeError(context.options.type, context.typeRegistry.types, resolveItemTypesFilePath(context.pmRoot, context.settings.schema)), EXIT_CODE.USAGE);
1177
+ }
1178
+ document.metadata.type = resolvedTypeName;
1179
+ activeTypeName = resolvedTypeName;
1180
+ changedFields.push("type");
1181
+ }
1182
+ enforceUpdateOptionsByType(activeTypeName, context.options, context.typeRegistry, context.runtimeFieldRegistry, context.extensionFieldNames);
1183
+ applyTypeOptionMutation(document, context, activeTypeName, changedFields);
1184
+ return activeTypeName;
1185
+ }
1186
+ function applyTypeOptionMutation(document, context, activeTypeName, changedFields) {
1187
+ if (context.options.typeOption !== void 0 || context.clearFrontMatterKeys.has("type_options")) {
1188
+ if (context.clearFrontMatterKeys.has("type_options")) {
1189
+ delete document.metadata.type_options;
1190
+ } else {
1191
+ const parsedTypeOptions = parseTypeOptionEntries(context.options.typeOption ?? []);
1192
+ const validation2 = validateTypeOptions(activeTypeName, parsedTypeOptions, context.typeRegistry);
1193
+ if (validation2.errors.length > 0) {
1194
+ throw new PmCliError(validation2.errors.join("; "), EXIT_CODE.USAGE);
1195
+ }
1196
+ document.metadata.type_options = validation2.normalized;
1197
+ }
1198
+ changedFields.push("type_options");
1199
+ return;
1200
+ }
1201
+ if (context.options.type === void 0 || document.metadata.type_options === void 0) {
1202
+ return;
1203
+ }
1204
+ const validation = validateTypeOptions(activeTypeName, document.metadata.type_options, context.typeRegistry);
1205
+ if (validation.errors.length > 0) {
1206
+ throw new PmCliError(`Current type options are incompatible with type "${activeTypeName}". ${validation.errors.join("; ")}. Use --clear-type-options to clear them.`, EXIT_CODE.USAGE);
1207
+ }
1208
+ document.metadata.type_options = validation.normalized;
1209
+ }
1210
+ function applyDependencyMutations(document, context, changedFields) {
1211
+ if (context.options.dep === void 0 && context.options.depRemove === void 0 && !context.clearFrontMatterKeys.has("dependencies")) {
1212
+ return;
1213
+ }
1214
+ let nextDependencies = context.clearFrontMatterKeys.has("dependencies") ? [] : [...document.metadata.dependencies ?? []];
1215
+ if (context.dependencyUpdates.additions.length > 0) {
1216
+ const seen = new Set(nextDependencies.map((entry) => dependencyKey(entry)));
1217
+ for (const addition of context.dependencyUpdates.additions) {
1218
+ const key = dependencyKey(addition);
1219
+ if (!seen.has(key)) {
1220
+ nextDependencies.push(addition);
1221
+ seen.add(key);
1222
+ }
1223
+ }
1224
+ }
1225
+ if (context.dependencyRemovals.length > 0) {
1226
+ nextDependencies = nextDependencies.filter((entry) => !context.dependencyRemovals.some((selector) => matchesDependencySelector(entry, selector)));
1227
+ }
1228
+ if (nextDependencies.length === 0) {
1229
+ delete document.metadata.dependencies;
1230
+ } else {
1231
+ document.metadata.dependencies = nextDependencies;
1232
+ }
1233
+ changedFields.push("dependencies");
1234
+ }
1235
+ function applyLogCollectionMutations(document, context, changedFields) {
1236
+ applyLogCollectionMutation(document, "comments", context.options.comment, context.commentUpdates.values, context.clearFrontMatterKeys, changedFields);
1237
+ applyLogCollectionMutation(document, "notes", context.options.note, context.noteUpdates.values, context.clearFrontMatterKeys, changedFields);
1238
+ applyLogCollectionMutation(document, "learnings", context.options.learning, context.learningUpdates.values, context.clearFrontMatterKeys, changedFields);
1239
+ }
1240
+ function applyLogCollectionMutation(document, key, optionValue, values, clearFrontMatterKeys, changedFields) {
1241
+ if (optionValue === void 0 && !clearFrontMatterKeys.has(key)) {
1242
+ return;
1243
+ }
1244
+ if (clearFrontMatterKeys.has(key) || !values || values.length === 0) {
1245
+ delete document.metadata[key];
1246
+ } else {
1247
+ document.metadata[key] = [...document.metadata[key] ?? [], ...values];
1248
+ }
1249
+ changedFields.push(key);
1250
+ }
1251
+ function applyEvidenceCollectionMutations(document, context, changedFields) {
1252
+ applyUniqueLinkedCollectionMutation(document, "files", context.options.file, context.fileUpdates.values, fileKey, context.clearFrontMatterKeys, changedFields);
1253
+ applyTestCollectionMutation(document, context, changedFields);
1254
+ applyUniqueLinkedCollectionMutation(document, "docs", context.options.doc, context.docUpdates.values, docKey, context.clearFrontMatterKeys, changedFields);
1255
+ }
1256
+ function applyUniqueLinkedCollectionMutation(document, key, optionValue, values, keyOf, clearFrontMatterKeys, changedFields) {
1257
+ if (optionValue === void 0 && !clearFrontMatterKeys.has(key)) {
1258
+ return;
1259
+ }
1260
+ if (clearFrontMatterKeys.has(key) || !values || values.length === 0) {
1261
+ delete document.metadata[key];
1262
+ } else {
1263
+ const next = [...document.metadata[key] ?? []];
1264
+ const seen = new Set(next.map((entry) => keyOf(entry)));
1265
+ for (const entry of values) {
1266
+ const keyValue = keyOf(entry);
1267
+ if (!seen.has(keyValue)) {
1268
+ next.push(entry);
1269
+ seen.add(keyValue);
1270
+ }
1271
+ }
1272
+ document.metadata[key] = next;
1273
+ }
1274
+ changedFields.push(key);
1275
+ }
1276
+ function applyTestCollectionMutation(document, context, changedFields) {
1277
+ if (context.options.test === void 0 && !context.clearFrontMatterKeys.has("tests")) {
1278
+ return;
1279
+ }
1280
+ if (context.clearFrontMatterKeys.has("tests") && context.options.replaceTests === true) {
1281
+ document.metadata.tests = dedupeLinkedTests(context.testUpdates.values) ?? [];
1282
+ } else if (context.clearFrontMatterKeys.has("tests") || !context.testUpdates.values || context.testUpdates.values.length === 0) {
1283
+ delete document.metadata.tests;
1284
+ } else {
1285
+ document.metadata.tests = dedupeLinkedTests([...document.metadata.tests ?? [], ...context.testUpdates.values]);
1286
+ }
1287
+ if (document.metadata.tests !== void 0 && document.metadata.tests.length === 0) {
1288
+ delete document.metadata.tests;
1289
+ }
1290
+ changedFields.push("tests");
1291
+ }
1292
+ function dedupeLinkedTests(values) {
1293
+ if (!values || values.length === 0) {
1294
+ return void 0;
1295
+ }
1296
+ const next = [];
1297
+ const seen = /* @__PURE__ */ new Set();
1298
+ for (const entry of values) {
1299
+ const key = testKey(entry);
1300
+ if (!seen.has(key)) {
1301
+ next.push(entry);
1302
+ seen.add(key);
1303
+ }
1304
+ }
1305
+ return next;
1306
+ }
1307
+ function applyTagsAndPlanningMutations(document, context, scalarMutationContext) {
1308
+ const addTagsValues = context.options.addTags;
1309
+ const removeTagsValues = context.options.removeTags;
1310
+ const hasAdditiveTagMutation = Array.isArray(addTagsValues) && addTagsValues.length > 0 || Array.isArray(removeTagsValues) && removeTagsValues.length > 0;
1311
+ if (context.options.tags !== void 0 || context.clearFrontMatterKeys.has("tags") || hasAdditiveTagMutation) {
1312
+ const baseTags = context.clearFrontMatterKeys.has("tags") ? [] : context.options.tags !== void 0 ? parseTags(context.options.tags) : Array.isArray(document.metadata.tags) ? [...document.metadata.tags] : [];
1313
+ document.metadata.tags = applyTagRemovals(mergeAdditiveTags(baseTags, addTagsValues), removeTagsValues);
1314
+ scalarMutationContext.changedFields.push("tags");
1315
+ }
1316
+ applyUpdateScalarMutations(UPDATE_POST_TAG_SCALAR_MUTATIONS, context.options, scalarMutationContext);
1317
+ applyOrderMutation(document, context, scalarMutationContext.changedFields);
1318
+ }
1319
+ function applyOrderMutation(document, context, changedFields) {
1320
+ const orderRaw = context.options.order ?? context.options.rank;
1321
+ if (orderRaw === void 0 && !context.clearFrontMatterKeys.has("order")) {
1322
+ return;
1323
+ }
1324
+ if (context.clearFrontMatterKeys.has("order")) {
1325
+ delete document.metadata.order;
1326
+ } else {
1327
+ const parsedOrder = parseOptionalNumber(orderRaw ?? "", "order");
1328
+ if (!Number.isInteger(parsedOrder)) {
1329
+ throw new PmCliError("Order must be an integer", EXIT_CODE.USAGE);
1330
+ }
1331
+ document.metadata.order = parsedOrder;
1332
+ }
1333
+ changedFields.push("order");
1334
+ }
1335
+ function applyOwnershipAndIssueMutations(document, context, scalarMutationContext, warnings) {
1336
+ applyAssigneeMutation(document, context, scalarMutationContext.changedFields);
1337
+ applyParentMutation(document, context, scalarMutationContext.changedFields);
1338
+ applyUpdateScalarMutations(UPDATE_STAKEHOLDER_SCALAR_MUTATIONS, context.options, scalarMutationContext);
1339
+ applySprintReleaseMutation(document, context, "sprint", warnings, scalarMutationContext.changedFields);
1340
+ applySprintReleaseMutation(document, context, "release", warnings, scalarMutationContext.changedFields);
1341
+ applyBlockedByMutation(document, context, scalarMutationContext.changedFields);
1342
+ applyUpdateScalarMutations(UPDATE_ISSUE_SCALAR_MUTATIONS, context.options, scalarMutationContext);
1343
+ }
1344
+ function applyAssigneeMutation(document, context, changedFields) {
1345
+ if (context.options.assignee === void 0 && !context.clearFrontMatterKeys.has("assignee")) {
1346
+ return;
1347
+ }
1348
+ if (context.clearFrontMatterKeys.has("assignee")) {
1349
+ delete document.metadata.assignee;
1350
+ } else {
1351
+ const assignee = context.options.assignee?.trim() ?? "";
1352
+ if (assignee === "") {
1353
+ throw new PmCliError("--assignee must not be empty. Use --unset assignee to clear it.", EXIT_CODE.USAGE);
1354
+ }
1355
+ document.metadata.assignee = assignee;
1356
+ }
1357
+ changedFields.push("assignee");
1358
+ }
1359
+ function applyParentMutation(document, context, changedFields) {
1360
+ if (context.options.parent === void 0 && !context.clearFrontMatterKeys.has("parent")) {
1361
+ return;
1362
+ }
1363
+ if (context.clearFrontMatterKeys.has("parent")) {
1364
+ delete document.metadata.parent;
1365
+ } else {
1366
+ document.metadata.parent = context.resolvedParentValue ?? "";
1367
+ }
1368
+ changedFields.push("parent");
1369
+ }
1370
+ function applySprintReleaseMutation(document, context, key, warnings, changedFields) {
1371
+ if (context.options[key] === void 0 && !context.clearFrontMatterKeys.has(key)) {
1372
+ return;
1373
+ }
1374
+ if (context.clearFrontMatterKeys.has(key)) {
1375
+ delete document.metadata[key];
1376
+ } else {
1377
+ const validation = validateSprintOrReleaseValue(key, context.options[key] ?? "", context.settings.validation.sprint_release_format);
1378
+ document.metadata[key] = validation.value;
1379
+ warnings.push(...validation.warnings);
1380
+ }
1381
+ changedFields.push(key);
1382
+ }
1383
+ function applyBlockedByMutation(document, context, changedFields) {
1384
+ if (context.options.blockedBy === void 0 && !context.clearFrontMatterKeys.has("blocked_by")) {
1385
+ return;
1386
+ }
1387
+ if (context.clearFrontMatterKeys.has("blocked_by")) {
1388
+ delete document.metadata.blocked_by;
1389
+ } else {
1390
+ document.metadata.blocked_by = context.options.blockedBy?.trim() ?? "";
1391
+ }
1392
+ changedFields.push("blocked_by");
1393
+ applyBlockedByDependencyEdge(document.metadata, context.resolvedBlockedByDependencyId, context.nowIso, context.author, changedFields);
1394
+ }
1395
+ function applyScheduleMutations(document, context, changedFields) {
1396
+ if (context.options.reminder !== void 0 || context.clearFrontMatterKeys.has("reminders")) {
1397
+ if (context.clearFrontMatterKeys.has("reminders")) {
1398
+ delete document.metadata.reminders;
1399
+ } else {
1400
+ document.metadata.reminders = parseReminderEntries(context.options.reminder ?? [], context.nowValue, { valueMode: "trimmed" });
1401
+ }
1402
+ changedFields.push("reminders");
1403
+ }
1404
+ if (context.options.event !== void 0 || context.clearFrontMatterKeys.has("events")) {
1405
+ if (context.clearFrontMatterKeys.has("events")) {
1406
+ delete document.metadata.events;
1407
+ } else {
1408
+ document.metadata.events = parseEventEntries(context.options.event ?? [], context.nowValue, {
1409
+ allDayEmptyGuard: "truthy",
1410
+ recurrenceEmptyNumericGuard: "truthy"
1411
+ });
1412
+ }
1413
+ changedFields.push("events");
1414
+ }
1415
+ }
1416
+ function applyRuntimeAndRegisteredFieldMutations(metadataRecord, context, changedFields) {
1417
+ clearDynamicFields(metadataRecord, context.runtimeFieldRegistry.definitions.map((definition) => definition.metadata_key), context.clearFrontMatterKeys, changedFields);
1418
+ clearDynamicFields(metadataRecord, context.extensionFieldNames, context.clearFrontMatterKeys, changedFields);
1419
+ for (const [fieldKey, fieldValue] of Object.entries(context.runtimeFieldUpdates)) {
1420
+ if (context.clearFrontMatterKeys.has(fieldKey)) {
1421
+ const fieldFlag = fieldKey.replaceAll("_", "-");
1422
+ const definition = context.runtimeFieldRegistry.definitions.find((candidate) => candidate.metadata_key === fieldKey);
1423
+ const updateFlag = definition?.cli_flag ?? fieldFlag;
1424
+ throw new PmCliError(`Cannot combine --unset ${fieldFlag} with --${updateFlag}`, EXIT_CODE.USAGE);
1425
+ }
1426
+ if (stableValueEquals(metadataRecord[fieldKey], fieldValue)) {
1427
+ continue;
1428
+ }
1429
+ metadataRecord[fieldKey] = fieldValue;
1430
+ changedFields.push(fieldKey);
1431
+ }
1432
+ const registeredItemFieldUpdates = parseRegisteredItemFieldAssignments(context.options.field, context.extensionRegistrations);
1433
+ for (const fieldKey of Object.keys(registeredItemFieldUpdates)) {
1434
+ if (context.clearFrontMatterKeys.has(fieldKey)) {
1435
+ throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_", "-")} with --field ${fieldKey}=...`, EXIT_CODE.USAGE);
1436
+ }
1437
+ }
1438
+ for (const [fieldKey, fieldValue] of Object.entries(registeredItemFieldUpdates)) {
1439
+ if (!stableValueEquals(metadataRecord[fieldKey], fieldValue)) {
1440
+ metadataRecord[fieldKey] = fieldValue;
1441
+ changedFields.push(fieldKey);
1442
+ }
1443
+ }
1444
+ }
1445
+ function clearDynamicFields(metadataRecord, fieldKeys, clearFrontMatterKeys, changedFields) {
1446
+ for (const fieldKey of fieldKeys) {
1447
+ if (!clearFrontMatterKeys.has(fieldKey) || metadataRecord[fieldKey] === void 0) {
1448
+ continue;
1449
+ }
1450
+ delete metadataRecord[fieldKey];
1451
+ changedFields.push(fieldKey);
1452
+ }
1453
+ }
1454
+ function mutateUpdateDocument(document, context) {
1455
+ const changedFields = [];
1456
+ const warnings = [];
1457
+ const previousStatusNormalized = applySimpleItemMutations(document, context.options, context.statusRegistry, changedFields);
1458
+ const metadataRecord = toItemRecord(document.metadata);
1459
+ const scalarMutationContext = {
1460
+ metadataRecord,
1461
+ clearFrontMatterKeys: context.clearFrontMatterKeys,
1462
+ changedFields,
1463
+ nowValue: context.nowValue
1464
+ };
1465
+ applyStatusAndCloseReasonMutations(document, context, previousStatusNormalized, changedFields);
1466
+ applyPriorityTypeAndOptions(document, context, changedFields);
1467
+ applyDependencyMutations(document, context, changedFields);
1468
+ applyLogCollectionMutations(document, context, changedFields);
1469
+ applyEvidenceCollectionMutations(document, context, changedFields);
1470
+ applyTagsAndPlanningMutations(document, context, scalarMutationContext);
1471
+ applyOwnershipAndIssueMutations(document, context, scalarMutationContext, warnings);
1472
+ if (normalizeStatusInput(document.metadata.status, context.statusRegistry) === context.statusRegistry.canceled_status && document.metadata.assignee !== void 0) {
1473
+ delete document.metadata.assignee;
1474
+ if (!changedFields.includes("assignee")) {
1475
+ changedFields.push("assignee");
1476
+ }
1477
+ }
1478
+ applyScheduleMutations(document, context, changedFields);
1479
+ applyRuntimeAndRegisteredFieldMutations(metadataRecord, context, changedFields);
1480
+ try {
1481
+ applyRegisteredItemFieldDefaultsAndValidation(metadataRecord, context.extensionRegistrations, { skipDefaultFields: context.clearFrontMatterKeys });
1482
+ } catch (error) {
1483
+ throw new PmCliError(error instanceof Error ? error.message : "Invalid extension item field values", EXIT_CODE.USAGE);
1484
+ }
1485
+ return { changedFields, warnings };
1486
+ }
1487
+ async function runUpdate(id, options, global) {
1488
+ options = await resolveStdinUpdateOptions(options);
1489
+ const pmRoot = resolvePmRoot(process.cwd(), global.path);
1490
+ await assertUpdateTrackerInitialized(pmRoot);
1491
+ const settings = await readSettings(pmRoot);
1492
+ const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
1493
+ const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);
1494
+ const extensionRegistrations = getActiveExtensionRegistrations();
1495
+ const extensionFieldNames = collectRegisteredItemFieldNames(extensionRegistrations);
1496
+ const typeRegistry = resolveItemTypeRegistry(settings, extensionRegistrations);
1497
+ const workflowEnforcement = settings.governance.workflow_enforcement ?? "off";
1498
+ const typeWorkflows = workflowEnforcement === "off" ? [] : resolveTypeWorkflows(settings.schema);
1499
+ const parentReferencePolicy = settings.validation.parent_reference;
1500
+ const unsetTargets = parseUpdateUnsetTargets(options.unset, runtimeFieldRegistry, extensionFieldNames);
1501
+ const clearOptionKeys = new Set(unsetTargets.optionKeys);
1502
+ const clearFrontMatterKeys = new Set(unsetTargets.frontMatterKeys);
1503
+ validateReplaceOptions(options);
1504
+ applyClearCollectionDefinitions({
1505
+ definitions: buildClearCollectionDefinitions(options),
1506
+ options,
1507
+ clearOptionKeys,
1508
+ clearFrontMatterKeys
1509
+ });
1510
+ enforceAllowAuditUpdateScope(id, options, clearFrontMatterKeys);
1511
+ rejectUnsetScalarConflicts(options, unsetTargets);
1512
+ rejectLegacyScalarTokens(options);
1028
1513
  const author = toAuthor(options.author, settings.author_default);
1029
1514
  const nowValue = /* @__PURE__ */ new Date();
1030
1515
  const nowIso = nowValue.toISOString();
@@ -1040,166 +1525,47 @@ async function runUpdate(id, options, global) {
1040
1525
  const fileUpdates = parseFiles(options.file);
1041
1526
  const testUpdates = parseTests(options.test);
1042
1527
  const docUpdates = parseDocs(options.doc);
1043
- const parentReferenceWarnings = [];
1044
1528
  const workflowTransitionWarnings = [];
1045
- let resolvedParentValue;
1046
- if (options.parent !== void 0 && !unsetTargets.frontMatterKeys.has("parent")) {
1047
- resolvedParentValue = normalizeParentReferenceValue(options.parent);
1048
- const parentLocated = await locateItem(pmRoot, resolvedParentValue, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1049
- if (!parentLocated) {
1050
- const normalizedParentId = normalizeItemId(resolvedParentValue, settings.id_prefix);
1051
- parentReferenceWarnings.push(...validateMissingParentReference(normalizedParentId, parentReferencePolicy).warnings);
1052
- }
1053
- }
1529
+ const parentReference = await resolveParentReferenceForUpdate({
1530
+ options,
1531
+ unsetTargets,
1532
+ pmRoot,
1533
+ settings,
1534
+ typeRegistry,
1535
+ parentReferencePolicy
1536
+ });
1054
1537
  const blockedByResolution = await resolveBlockedByDependencyTarget(options.blockedBy, clearFrontMatterKeys.has("blocked_by"), pmRoot, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1055
1538
  const resolvedBlockedByDependencyId = blockedByResolution.id;
1056
- if (blockedByResolution.unresolved !== void 0) {
1057
- parentReferenceWarnings.push(`blocked_by_unresolved:${blockedByResolution.unresolved}`);
1058
- }
1539
+ const parentReferenceWarnings = [...parentReference.warnings, ...blockedByResolutionWarnings(blockedByResolution)];
1059
1540
  const runtimeFieldUpdates = collectRuntimeUpdateFieldValues(options, runtimeFieldRegistry, options.runtimeFieldCommands);
1060
- const fieldFlags = {
1061
- title: options.title !== void 0,
1062
- description: options.description !== void 0,
1063
- body: options.body !== void 0,
1064
- status: options.status !== void 0,
1065
- closeReason: options.closeReason !== void 0,
1066
- priority: options.priority !== void 0,
1067
- type: options.type !== void 0,
1068
- tags: options.tags !== void 0,
1069
- addTags: Array.isArray(options.addTags) && options.addTags.length > 0,
1070
- removeTags: Array.isArray(options.removeTags) && options.removeTags.length > 0,
1071
- deadline: options.deadline !== void 0,
1072
- estimatedMinutes: options.estimatedMinutes !== void 0,
1073
- acceptanceCriteria: options.acceptanceCriteria !== void 0,
1074
- definitionOfReady: options.definitionOfReady !== void 0,
1075
- order: options.order !== void 0,
1076
- rank: options.rank !== void 0,
1077
- goal: options.goal !== void 0,
1078
- objective: options.objective !== void 0,
1079
- value: options.value !== void 0,
1080
- impact: options.impact !== void 0,
1081
- outcome: options.outcome !== void 0,
1082
- whyNow: options.whyNow !== void 0,
1083
- assignee: options.assignee !== void 0,
1084
- parent: options.parent !== void 0,
1085
- reviewer: options.reviewer !== void 0,
1086
- risk: options.risk !== void 0,
1087
- confidence: options.confidence !== void 0,
1088
- sprint: options.sprint !== void 0,
1089
- release: options.release !== void 0,
1090
- blockedBy: options.blockedBy !== void 0,
1091
- blockedReason: options.blockedReason !== void 0,
1092
- unblockNote: options.unblockNote !== void 0,
1093
- reporter: options.reporter !== void 0,
1094
- severity: options.severity !== void 0,
1095
- environment: options.environment !== void 0,
1096
- reproSteps: options.reproSteps !== void 0,
1097
- resolution: options.resolution !== void 0,
1098
- expectedResult: options.expectedResult !== void 0,
1099
- actualResult: options.actualResult !== void 0,
1100
- affectedVersion: options.affectedVersion !== void 0,
1101
- fixedVersion: options.fixedVersion !== void 0,
1102
- component: options.component !== void 0,
1103
- regression: options.regression !== void 0,
1104
- customerImpact: options.customerImpact !== void 0,
1105
- dep: options.dep !== void 0,
1106
- depRemove: options.depRemove !== void 0,
1107
- replaceDeps: options.replaceDeps === true,
1108
- comment: options.comment !== void 0,
1109
- note: options.note !== void 0,
1110
- learning: options.learning !== void 0,
1111
- file: options.file !== void 0,
1112
- test: options.test !== void 0,
1113
- replaceTests: options.replaceTests === true,
1114
- doc: options.doc !== void 0,
1115
- reminder: options.reminder !== void 0,
1116
- event: options.event !== void 0,
1117
- typeOption: options.typeOption !== void 0,
1118
- field: options.field !== void 0,
1119
- unset: options.unset !== void 0 && options.unset.length > 0,
1120
- clearDeps: options.clearDeps === true,
1121
- clearComments: options.clearComments === true,
1122
- clearNotes: options.clearNotes === true,
1123
- clearLearnings: options.clearLearnings === true,
1124
- clearFiles: options.clearFiles === true,
1125
- clearTests: options.clearTests === true,
1126
- clearDocs: options.clearDocs === true,
1127
- clearReminders: options.clearReminders === true,
1128
- clearEvents: options.clearEvents === true,
1129
- clearTypeOptions: options.clearTypeOptions === true,
1130
- runtimeFields: Object.keys(runtimeFieldUpdates).length > 0
1131
- };
1541
+ const fieldFlags = buildUpdateFieldFlags(options, runtimeFieldUpdates);
1132
1542
  const changedFlags = Object.values(fieldFlags).some(Boolean);
1133
1543
  if (!changedFlags) {
1134
- const located = await locateItem(pmRoot, id, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1135
- if (!located) {
1136
- throw await buildItemNotFoundError(pmRoot, id, settings.id_prefix, typeRegistry.type_to_folder);
1137
- }
1138
- const { document } = await readLocatedItem(located, { schema: settings.schema });
1139
- return {
1140
- item: toItemRecord(document.metadata),
1141
- changed_fields: [],
1142
- warnings: ["noop_no_update_fields"]
1143
- };
1144
- }
1145
- if (workflowEnforcement !== "off" && typeWorkflows.length > 0 && fieldFlags.status && options.status !== void 0) {
1146
- const located = await locateItem(pmRoot, id, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1147
- if (!located) {
1148
- throw await buildItemNotFoundError(pmRoot, id, settings.id_prefix, typeRegistry.type_to_folder);
1149
- }
1150
- const { document } = await readLocatedItem(located, { schema: settings.schema });
1151
- const effectiveType = options.type !== void 0 ? resolveTypeName(options.type, typeRegistry) ?? options.type : document.metadata?.type ?? "";
1152
- const warning = enforceTypeWorkflowTransition({
1153
- enforcement: workflowEnforcement,
1154
- typeWorkflows,
1155
- statusRegistry,
1156
- typeName: effectiveType,
1157
- fromStatus: document.metadata?.status ?? "",
1158
- toStatus: options.status ?? ""
1159
- });
1160
- if (warning) {
1161
- workflowTransitionWarnings.push(warning);
1162
- }
1163
- }
1164
- if (fieldFlags.status) {
1165
- const targetStatus = normalizeStatusInput(options.status, statusRegistry);
1166
- if (targetStatus === statusRegistry.close_status) {
1167
- const otherFieldKeys = Object.entries(fieldFlags).filter(([key, value]) => value && key !== "status" && key !== "closeReason").map(([key]) => key);
1168
- const routeWarnings = [];
1169
- let preChangedFields = [];
1170
- if (otherFieldKeys.length > 0) {
1171
- const preUpdate = await runUpdate(id, { ...options, status: void 0, closeReason: void 0, message: void 0 }, global);
1172
- preChangedFields = preUpdate.changed_fields;
1173
- routeWarnings.push(...preUpdate.warnings);
1174
- }
1175
- const explicitReason = typeof options.closeReason === "string" ? options.closeReason.trim() : "";
1176
- const fallbackMessage = typeof options.message === "string" ? options.message.trim() : "";
1177
- const closeReason = explicitReason || fallbackMessage || "Closed via pm update";
1178
- const reasonDefaulted = explicitReason.length === 0 && fallbackMessage.length === 0;
1179
- const closeResult = await runClose(id, closeReason, {
1180
- author: options.author,
1181
- message: options.message,
1182
- force: options.force
1183
- }, global);
1184
- const warnings = [
1185
- ...workflowTransitionWarnings,
1186
- ...routeWarnings,
1187
- ...closeResult.warnings,
1188
- "auto_routed_from_update_to_close"
1189
- ];
1190
- if (reasonDefaulted) {
1191
- warnings.push("close_reason_defaulted");
1192
- }
1193
- return {
1194
- item: closeResult.item,
1195
- changed_fields: [...preChangedFields, ...closeResult.changed_fields],
1196
- warnings
1197
- };
1198
- }
1199
- }
1200
- if (options.order !== void 0 && options.rank !== void 0 && options.order !== options.rank) {
1201
- throw new PmCliError("--order and --rank must match when both are provided", EXIT_CODE.USAGE);
1544
+ return buildNoopUpdateResult({ pmRoot, id, settings, typeRegistry });
1545
+ }
1546
+ workflowTransitionWarnings.push(...await collectWorkflowTransitionWarnings({
1547
+ options,
1548
+ fieldFlags,
1549
+ workflowEnforcement,
1550
+ typeWorkflows,
1551
+ statusRegistry,
1552
+ typeRegistry,
1553
+ pmRoot,
1554
+ id,
1555
+ settings
1556
+ }));
1557
+ const routedClose = await routeCloseStatusUpdate({
1558
+ options,
1559
+ fieldFlags,
1560
+ statusRegistry,
1561
+ workflowTransitionWarnings,
1562
+ global,
1563
+ id
1564
+ });
1565
+ if (routedClose) {
1566
+ return routedClose;
1202
1567
  }
1568
+ assertMatchingOrderRank(options);
1203
1569
  const result = await mutateItem({
1204
1570
  pmRoot,
1205
1571
  settings,
@@ -1212,347 +1578,31 @@ async function runUpdate(id, options, global) {
1212
1578
  bypassAssigneeConflict: options.allowAuditUpdate === true || options.allowAuditDepUpdate === true,
1213
1579
  extensionFieldNames,
1214
1580
  mutate(document) {
1215
- const changedFields = [];
1216
- const warnings = [];
1217
- let activeTypeName = resolveTypeName(document.metadata.type, typeRegistry) ?? document.metadata.type;
1218
- const metadataRecord = toItemRecord(document.metadata);
1219
- const scalarMutationContext = {
1220
- metadataRecord,
1581
+ return mutateUpdateDocument(document, {
1582
+ options,
1583
+ settings,
1584
+ typeRegistry,
1585
+ statusRegistry,
1586
+ runtimeFieldRegistry,
1587
+ extensionRegistrations,
1588
+ extensionFieldNames,
1221
1589
  clearFrontMatterKeys,
1222
- changedFields,
1223
- nowValue
1224
- };
1225
- if (options.title !== void 0) {
1226
- document.metadata.title = options.title;
1227
- changedFields.push("title");
1228
- }
1229
- if (options.description !== void 0) {
1230
- document.metadata.description = options.description;
1231
- changedFields.push("description");
1232
- }
1233
- if (options.body !== void 0) {
1234
- document.body = options.body;
1235
- changedFields.push("body");
1236
- }
1237
- const previousStatus = document.metadata.status;
1238
- const previousStatusNormalized = normalizeStatusInput(previousStatus, statusRegistry) ?? previousStatus;
1239
- if (options.status !== void 0) {
1240
- const status = parseStatus(options.status, statusRegistry);
1241
- document.metadata.status = status;
1242
- if (status === statusRegistry.canceled_status) {
1243
- delete document.metadata.assignee;
1244
- }
1245
- changedFields.push("status");
1246
- }
1247
- if (options.closeReason !== void 0 || clearFrontMatterKeys.has("close_reason")) {
1248
- if (clearFrontMatterKeys.has("close_reason")) {
1249
- delete document.metadata.close_reason;
1250
- } else {
1251
- const closeReason = options.closeReason?.trim() ?? "";
1252
- if (closeReason.length === 0) {
1253
- throw new PmCliError("--close-reason must not be empty", EXIT_CODE.USAGE);
1254
- }
1255
- document.metadata.close_reason = closeReason;
1256
- }
1257
- changedFields.push("close_reason");
1258
- } else if (options.status !== void 0 && previousStatusNormalized === statusRegistry.close_status && document.metadata.status !== statusRegistry.canceled_status && document.metadata.close_reason !== void 0) {
1259
- delete document.metadata.close_reason;
1260
- changedFields.push("close_reason");
1261
- }
1262
- if (options.priority !== void 0) {
1263
- document.metadata.priority = ensurePriority(options.priority);
1264
- changedFields.push("priority");
1265
- }
1266
- if (options.type !== void 0) {
1267
- const resolvedTypeName = resolveTypeName(options.type, typeRegistry);
1268
- if (!resolvedTypeName) {
1269
- throw new PmCliError(buildInvalidTypeError(options.type, typeRegistry.types, resolveItemTypesFilePath(pmRoot, settings.schema)), EXIT_CODE.USAGE);
1270
- }
1271
- document.metadata.type = resolvedTypeName;
1272
- activeTypeName = resolvedTypeName;
1273
- changedFields.push("type");
1274
- }
1275
- enforceUpdateOptionsByType(activeTypeName, options, typeRegistry, extensionFieldNames);
1276
- if (options.typeOption !== void 0 || clearFrontMatterKeys.has("type_options")) {
1277
- if (clearFrontMatterKeys.has("type_options")) {
1278
- delete document.metadata.type_options;
1279
- } else {
1280
- const parsedTypeOptions = parseTypeOptionEntries(options.typeOption ?? []);
1281
- const validation = validateTypeOptions(activeTypeName, parsedTypeOptions, typeRegistry);
1282
- if (validation.errors.length > 0) {
1283
- throw new PmCliError(validation.errors.join("; "), EXIT_CODE.USAGE);
1284
- }
1285
- document.metadata.type_options = validation.normalized;
1286
- }
1287
- changedFields.push("type_options");
1288
- } else if (options.type !== void 0 && document.metadata.type_options !== void 0) {
1289
- const validation = validateTypeOptions(activeTypeName, document.metadata.type_options, typeRegistry);
1290
- if (validation.errors.length > 0) {
1291
- throw new PmCliError(`Current type options are incompatible with type "${activeTypeName}". ${validation.errors.join("; ")}. Use --clear-type-options to clear them.`, EXIT_CODE.USAGE);
1292
- }
1293
- document.metadata.type_options = validation.normalized;
1294
- }
1295
- if (options.dep !== void 0 || options.depRemove !== void 0 || clearFrontMatterKeys.has("dependencies")) {
1296
- let nextDependencies = clearFrontMatterKeys.has("dependencies") ? [] : [...document.metadata.dependencies ?? []];
1297
- if (dependencyUpdates.additions.length > 0) {
1298
- const seen = new Set(nextDependencies.map((entry) => dependencyKey(entry)));
1299
- for (const addition of dependencyUpdates.additions) {
1300
- const key = dependencyKey(addition);
1301
- if (seen.has(key)) {
1302
- continue;
1303
- }
1304
- nextDependencies.push(addition);
1305
- seen.add(key);
1306
- }
1307
- }
1308
- if (dependencyRemovals.length > 0) {
1309
- nextDependencies = nextDependencies.filter((entry) => !dependencyRemovals.some((selector) => matchesDependencySelector(entry, selector)));
1310
- }
1311
- if (nextDependencies.length === 0) {
1312
- delete document.metadata.dependencies;
1313
- } else {
1314
- document.metadata.dependencies = nextDependencies;
1315
- }
1316
- changedFields.push("dependencies");
1317
- }
1318
- if (options.comment !== void 0 || clearFrontMatterKeys.has("comments")) {
1319
- if (clearFrontMatterKeys.has("comments") || !commentUpdates.values || commentUpdates.values.length === 0) {
1320
- delete document.metadata.comments;
1321
- } else {
1322
- document.metadata.comments = [...document.metadata.comments ?? [], ...commentUpdates.values];
1323
- }
1324
- changedFields.push("comments");
1325
- }
1326
- if (options.note !== void 0 || clearFrontMatterKeys.has("notes")) {
1327
- if (clearFrontMatterKeys.has("notes") || !noteUpdates.values || noteUpdates.values.length === 0) {
1328
- delete document.metadata.notes;
1329
- } else {
1330
- document.metadata.notes = [...document.metadata.notes ?? [], ...noteUpdates.values];
1331
- }
1332
- changedFields.push("notes");
1333
- }
1334
- if (options.learning !== void 0 || clearFrontMatterKeys.has("learnings")) {
1335
- if (clearFrontMatterKeys.has("learnings") || !learningUpdates.values || learningUpdates.values.length === 0) {
1336
- delete document.metadata.learnings;
1337
- } else {
1338
- document.metadata.learnings = [...document.metadata.learnings ?? [], ...learningUpdates.values];
1339
- }
1340
- changedFields.push("learnings");
1341
- }
1342
- if (options.file !== void 0 || clearFrontMatterKeys.has("files")) {
1343
- if (clearFrontMatterKeys.has("files") || !fileUpdates.values || fileUpdates.values.length === 0) {
1344
- delete document.metadata.files;
1345
- } else {
1346
- const nextFiles = [...document.metadata.files ?? []];
1347
- const seen = new Set(nextFiles.map((entry) => fileKey(entry)));
1348
- for (const entry of fileUpdates.values) {
1349
- const key = fileKey(entry);
1350
- if (seen.has(key)) {
1351
- continue;
1352
- }
1353
- nextFiles.push(entry);
1354
- seen.add(key);
1355
- }
1356
- document.metadata.files = nextFiles;
1357
- }
1358
- changedFields.push("files");
1359
- }
1360
- if (options.test !== void 0 || clearFrontMatterKeys.has("tests")) {
1361
- if (clearFrontMatterKeys.has("tests") && options.replaceTests === true) {
1362
- if (!testUpdates.values || testUpdates.values.length === 0) {
1363
- delete document.metadata.tests;
1364
- } else {
1365
- const replacementTests = [];
1366
- const seen = /* @__PURE__ */ new Set();
1367
- for (const entry of testUpdates.values) {
1368
- const key = testKey(entry);
1369
- if (seen.has(key)) {
1370
- continue;
1371
- }
1372
- replacementTests.push(entry);
1373
- seen.add(key);
1374
- }
1375
- document.metadata.tests = replacementTests;
1376
- }
1377
- } else if (clearFrontMatterKeys.has("tests") || !testUpdates.values || testUpdates.values.length === 0) {
1378
- delete document.metadata.tests;
1379
- } else {
1380
- const nextTests = [...document.metadata.tests ?? []];
1381
- const seen = new Set(nextTests.map((entry) => testKey(entry)));
1382
- for (const entry of testUpdates.values) {
1383
- const key = testKey(entry);
1384
- if (seen.has(key)) {
1385
- continue;
1386
- }
1387
- nextTests.push(entry);
1388
- seen.add(key);
1389
- }
1390
- document.metadata.tests = nextTests;
1391
- }
1392
- changedFields.push("tests");
1393
- }
1394
- if (options.doc !== void 0 || clearFrontMatterKeys.has("docs")) {
1395
- if (clearFrontMatterKeys.has("docs") || !docUpdates.values || docUpdates.values.length === 0) {
1396
- delete document.metadata.docs;
1397
- } else {
1398
- const nextDocs = [...document.metadata.docs ?? []];
1399
- const seen = new Set(nextDocs.map((entry) => docKey(entry)));
1400
- for (const entry of docUpdates.values) {
1401
- const key = docKey(entry);
1402
- if (seen.has(key)) {
1403
- continue;
1404
- }
1405
- nextDocs.push(entry);
1406
- seen.add(key);
1407
- }
1408
- document.metadata.docs = nextDocs;
1409
- }
1410
- changedFields.push("docs");
1411
- }
1412
- const addTagsValues = options.addTags;
1413
- const removeTagsValues = options.removeTags;
1414
- const hasAdditiveTagMutation = Array.isArray(addTagsValues) && addTagsValues.length > 0 || Array.isArray(removeTagsValues) && removeTagsValues.length > 0;
1415
- if (options.tags !== void 0 || clearFrontMatterKeys.has("tags") || hasAdditiveTagMutation) {
1416
- const baseTags = clearFrontMatterKeys.has("tags") ? [] : options.tags !== void 0 ? parseTags(options.tags) : Array.isArray(document.metadata.tags) ? [...document.metadata.tags] : [];
1417
- const withAdditions = mergeAdditiveTags(baseTags, addTagsValues);
1418
- const finalTags = applyTagRemovals(withAdditions, removeTagsValues);
1419
- document.metadata.tags = finalTags;
1420
- changedFields.push("tags");
1421
- }
1422
- applyUpdateScalarMutations(UPDATE_POST_TAG_SCALAR_MUTATIONS, options, scalarMutationContext);
1423
- const orderRaw = options.order ?? options.rank;
1424
- if (orderRaw !== void 0 || clearFrontMatterKeys.has("order")) {
1425
- if (clearFrontMatterKeys.has("order")) {
1426
- delete document.metadata.order;
1427
- } else {
1428
- const parsedOrder = parseOptionalNumber(orderRaw ?? "", "order");
1429
- if (!Number.isInteger(parsedOrder)) {
1430
- throw new PmCliError("Order must be an integer", EXIT_CODE.USAGE);
1431
- }
1432
- document.metadata.order = parsedOrder;
1433
- }
1434
- changedFields.push("order");
1435
- }
1436
- if (options.assignee !== void 0 || clearFrontMatterKeys.has("assignee")) {
1437
- if (clearFrontMatterKeys.has("assignee")) {
1438
- delete document.metadata.assignee;
1439
- } else {
1440
- const assignee = options.assignee?.trim() ?? "";
1441
- if (assignee === "") {
1442
- throw new PmCliError("--assignee must not be empty. Use --unset assignee to clear it.", EXIT_CODE.USAGE);
1443
- }
1444
- document.metadata.assignee = assignee;
1445
- }
1446
- changedFields.push("assignee");
1447
- }
1448
- if (options.parent !== void 0 || clearFrontMatterKeys.has("parent")) {
1449
- if (clearFrontMatterKeys.has("parent")) {
1450
- delete document.metadata.parent;
1451
- } else {
1452
- document.metadata.parent = resolvedParentValue ?? "";
1453
- }
1454
- changedFields.push("parent");
1455
- }
1456
- applyUpdateScalarMutations(UPDATE_STAKEHOLDER_SCALAR_MUTATIONS, options, scalarMutationContext);
1457
- if (options.sprint !== void 0 || clearFrontMatterKeys.has("sprint")) {
1458
- if (clearFrontMatterKeys.has("sprint")) {
1459
- delete document.metadata.sprint;
1460
- } else {
1461
- const sprintValidation = validateSprintOrReleaseValue("sprint", options.sprint ?? "", sprintReleasePolicy);
1462
- document.metadata.sprint = sprintValidation.value;
1463
- warnings.push(...sprintValidation.warnings);
1464
- }
1465
- changedFields.push("sprint");
1466
- }
1467
- if (options.release !== void 0 || clearFrontMatterKeys.has("release")) {
1468
- if (clearFrontMatterKeys.has("release")) {
1469
- delete document.metadata.release;
1470
- } else {
1471
- const releaseValidation = validateSprintOrReleaseValue("release", options.release ?? "", sprintReleasePolicy);
1472
- document.metadata.release = releaseValidation.value;
1473
- warnings.push(...releaseValidation.warnings);
1474
- }
1475
- changedFields.push("release");
1476
- }
1477
- if (options.blockedBy !== void 0 || clearFrontMatterKeys.has("blocked_by")) {
1478
- if (clearFrontMatterKeys.has("blocked_by")) {
1479
- delete document.metadata.blocked_by;
1480
- } else {
1481
- document.metadata.blocked_by = options.blockedBy?.trim() ?? "";
1482
- }
1483
- changedFields.push("blocked_by");
1484
- applyBlockedByDependencyEdge(document.metadata, resolvedBlockedByDependencyId, nowIso, author, changedFields);
1485
- }
1486
- applyUpdateScalarMutations(UPDATE_ISSUE_SCALAR_MUTATIONS, options, scalarMutationContext);
1487
- if (options.reminder !== void 0 || clearFrontMatterKeys.has("reminders")) {
1488
- if (clearFrontMatterKeys.has("reminders")) {
1489
- delete document.metadata.reminders;
1490
- } else {
1491
- document.metadata.reminders = parseReminderEntries(options.reminder ?? [], nowValue, { valueMode: "trimmed" });
1492
- }
1493
- changedFields.push("reminders");
1494
- }
1495
- if (options.event !== void 0 || clearFrontMatterKeys.has("events")) {
1496
- if (clearFrontMatterKeys.has("events")) {
1497
- delete document.metadata.events;
1498
- } else {
1499
- document.metadata.events = parseEventEntries(options.event ?? [], nowValue, {
1500
- allDayEmptyGuard: "truthy",
1501
- recurrenceEmptyNumericGuard: "truthy"
1502
- });
1503
- }
1504
- changedFields.push("events");
1505
- }
1506
- for (const definition of runtimeFieldRegistry.definitions) {
1507
- if (!clearFrontMatterKeys.has(definition.metadata_key)) {
1508
- continue;
1509
- }
1510
- if (metadataRecord[definition.metadata_key] === void 0) {
1511
- continue;
1512
- }
1513
- delete metadataRecord[definition.metadata_key];
1514
- changedFields.push(definition.metadata_key);
1515
- }
1516
- for (const fieldKey of extensionFieldNames) {
1517
- if (!clearFrontMatterKeys.has(fieldKey)) {
1518
- continue;
1519
- }
1520
- if (metadataRecord[fieldKey] === void 0) {
1521
- continue;
1522
- }
1523
- delete metadataRecord[fieldKey];
1524
- changedFields.push(fieldKey);
1525
- }
1526
- for (const [fieldKey, fieldValue] of Object.entries(runtimeFieldUpdates)) {
1527
- if (clearFrontMatterKeys.has(fieldKey)) {
1528
- continue;
1529
- }
1530
- if (stableValueEquals(metadataRecord[fieldKey], fieldValue)) {
1531
- continue;
1532
- }
1533
- metadataRecord[fieldKey] = fieldValue;
1534
- changedFields.push(fieldKey);
1535
- }
1536
- const registeredItemFieldUpdates = parseRegisteredItemFieldAssignments(options.field, extensionRegistrations);
1537
- for (const fieldKey of Object.keys(registeredItemFieldUpdates)) {
1538
- if (!clearFrontMatterKeys.has(fieldKey)) {
1539
- continue;
1540
- }
1541
- throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_", "-")} with --field ${fieldKey}=...`, EXIT_CODE.USAGE);
1542
- }
1543
- for (const [fieldKey, fieldValue] of Object.entries(registeredItemFieldUpdates)) {
1544
- if (stableValueEquals(metadataRecord[fieldKey], fieldValue)) {
1545
- continue;
1546
- }
1547
- metadataRecord[fieldKey] = fieldValue;
1548
- changedFields.push(fieldKey);
1549
- }
1550
- try {
1551
- applyRegisteredItemFieldDefaultsAndValidation(metadataRecord, extensionRegistrations, { skipDefaultFields: clearFrontMatterKeys });
1552
- } catch (error) {
1553
- throw new PmCliError(error instanceof Error ? error.message : "Invalid extension item field values", EXIT_CODE.USAGE);
1554
- }
1555
- return { changedFields, warnings };
1590
+ dependencyUpdates,
1591
+ dependencyRemovals,
1592
+ commentUpdates,
1593
+ noteUpdates,
1594
+ learningUpdates,
1595
+ fileUpdates,
1596
+ testUpdates,
1597
+ docUpdates,
1598
+ resolvedParentValue: parentReference.resolvedParentValue,
1599
+ resolvedBlockedByDependencyId,
1600
+ runtimeFieldUpdates,
1601
+ nowValue,
1602
+ nowIso,
1603
+ author,
1604
+ pmRoot
1605
+ });
1556
1606
  }
1557
1607
  });
1558
1608
  return {
@@ -1581,6 +1631,6 @@ export {
1581
1631
  runUpdate,
1582
1632
  _testOnlyUpdateCommand
1583
1633
  };
1584
- //# sourceMappingURL=chunk-VD3LKZFX.js.map
1634
+ //# sourceMappingURL=chunk-7W4H4K26.js.map
1585
1635
 
1586
- //# debugId=2e4b7619-5881-5abc-8c6d-a33b06c74f8d
1636
+ //# debugId=636bc41a-f03b-528f-84cb-5ab89ae42c00