@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
@@ -3,26 +3,26 @@
3
3
  import {
4
4
  _testOnlyUpdateCommand,
5
5
  runUpdate
6
- } from "./chunk-VD3LKZFX.js";
6
+ } from "./chunk-7W4H4K26.js";
7
7
  import "./chunk-YJIEJRZB.js";
8
- import "./chunk-UB3V5WUI.js";
9
- import "./chunk-4YIMPANT.js";
10
- import "./chunk-D6USKAMA.js";
11
- import "./chunk-OB3RJV5F.js";
12
- import "./chunk-BOWQWXLI.js";
13
- import "./chunk-5ABGFWR4.js";
14
- import "./chunk-7RIJGN4R.js";
8
+ import "./chunk-XTHQWXVC.js";
9
+ import "./chunk-RM37OPYK.js";
10
+ import "./chunk-KCO2EAN5.js";
11
+ import "./chunk-LRKMWUUV.js";
12
+ import "./chunk-KLXF7NCC.js";
13
+ import "./chunk-BTX5MIQF.js";
14
+ import "./chunk-QH3FSKRJ.js";
15
15
  import "./chunk-P4SESZGT.js";
16
- import "./chunk-YEDFE4DC.js";
17
- import "./chunk-QE5UFCCO.js";
18
- import "./chunk-KGQ3W65B.js";
19
- import "./chunk-V3KLX7U7.js";
20
- import "./chunk-KRASIL6M.js";
21
- import "./chunk-CY5IJMUM.js";
16
+ import "./chunk-ZNT7KEWE.js";
17
+ import "./chunk-2KWL5NPW.js";
18
+ import "./chunk-NRZS637N.js";
19
+ import "./chunk-KN3URLKS.js";
20
+ import "./chunk-K2VYLVX4.js";
21
+ import "./chunk-I66WE2HE.js";
22
22
  export {
23
23
  _testOnlyUpdateCommand,
24
24
  runUpdate
25
25
  };
26
- //# sourceMappingURL=update-DJKWLBWJ.js.map
26
+ //# sourceMappingURL=update-Y5WQVT5O.js.map
27
27
 
28
28
  //# debugId=45eac7fa-f181-5cca-93b7-cfb58909dbb3
@@ -1,59 +1,59 @@
1
+ import {
2
+ runUpdate
3
+ } from "./chunk-6ITZLD4T.js";
4
+ import "./chunk-CZVISY5A.js";
1
5
  import {
2
6
  createCheckpointId,
3
7
  loadMutationCheckpoint,
4
8
  restoreCheckpointItems,
5
9
  writeMutationCheckpoint
6
- } from "./chunk-3JWQCLR5.js";
10
+ } from "./chunk-CYBDUHNO.js";
11
+ import "./chunk-WJAMWAHZ.js";
7
12
  import {
8
- runUpdate
9
- } from "./chunk-A3UNLXNJ.js";
10
- import "./chunk-CZVISY5A.js";
13
+ runRestore
14
+ } from "./chunk-4NUOWFBT.js";
11
15
  import {
12
16
  resolvePriority
13
- } from "./chunk-5T6WPLRO.js";
14
- import "./chunk-JIP67N2K.js";
17
+ } from "./chunk-MNBPX5JS.js";
18
+ import "./chunk-Y4NRKBFW.js";
19
+ import "./chunk-MRD4T5LF.js";
15
20
  import {
16
21
  applyTagRemovals,
17
22
  mergeAdditiveTags,
18
23
  parseTags
19
- } from "./chunk-BN3CWK6G.js";
20
- import "./chunk-4TXTVZL3.js";
21
- import "./chunk-UFKNF23C.js";
22
- import {
23
- runRestore
24
- } from "./chunk-GF7EAR22.js";
24
+ } from "./chunk-ZNHEYCDD.js";
25
25
  import {
26
26
  resolveAuthor
27
27
  } from "./chunk-WW4E2DC3.js";
28
28
  import {
29
29
  hasListFilters
30
- } from "./chunk-ISEKN64V.js";
31
- import "./chunk-JJ4SG243.js";
32
- import "./chunk-IBU2LLWM.js";
33
- import "./chunk-E2Q2ULMR.js";
34
- import "./chunk-HUYYMTGW.js";
30
+ } from "./chunk-4BU75MF4.js";
31
+ import "./chunk-3Q2HBMTI.js";
32
+ import "./chunk-A6VOGKBA.js";
33
+ import "./chunk-N2JSWVWG.js";
34
+ import "./chunk-EUKTMRN3.js";
35
35
  import "./chunk-5HIZDR5A.js";
36
36
  import {
37
37
  buildInvalidTypeError
38
- } from "./chunk-DRPF274X.js";
39
- import "./chunk-CHRNYKNI.js";
38
+ } from "./chunk-3LCUASYG.js";
39
+ import "./chunk-5PGBHRY3.js";
40
40
  import {
41
41
  runList
42
- } from "./chunk-KTMMTOIP.js";
42
+ } from "./chunk-W47SML5B.js";
43
43
  import "./chunk-R23CSHGI.js";
44
- import "./chunk-ZEATCVAC.js";
45
- import "./chunk-7L6TXOOC.js";
44
+ import "./chunk-36UGKF4O.js";
45
+ import "./chunk-JMK5GCK2.js";
46
46
  import {
47
47
  toItemRecord
48
- } from "./chunk-LBH7UYKY.js";
48
+ } from "./chunk-JXAUVO6X.js";
49
49
  import {
50
50
  collectRuntimeUpdateFieldValues,
51
51
  normalizeStatusInput
52
- } from "./chunk-ZFIEEDTJ.js";
52
+ } from "./chunk-IEEJQCZ4.js";
53
53
  import {
54
54
  nowIso,
55
55
  resolveIsoOrRelative
56
- } from "./chunk-MLHX6DN5.js";
56
+ } from "./chunk-AIAIXG7I.js";
57
57
  import {
58
58
  EXIT_CODE,
59
59
  PmCliError,
@@ -69,13 +69,13 @@ import {
69
69
  resolveTypeName,
70
70
  stableValueEquals,
71
71
  toErrorMessage
72
- } from "./chunk-SNUK7H5J.js";
72
+ } from "./chunk-7NSPKJUS.js";
73
73
 
74
74
  // dist/cli/commands/update-many.js
75
75
  !(function() {
76
76
  try {
77
77
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
78
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "1a891af9-6fd9-53f7-b676-da095d788053");
78
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "d51d075c-2686-52c7-9070-cf81f2660d81");
79
79
  } catch (e2) {
80
80
  }
81
81
  })();
@@ -474,6 +474,50 @@ function assertPlannedUpdateValuesValid(update, settings, statusRegistry, pmRoot
474
474
  resolveIsoOrRelative(update.deadline, /* @__PURE__ */ new Date(), "deadline");
475
475
  }
476
476
  }
477
+ async function runUpdateManyRollback(params) {
478
+ const checkpoint = await loadMutationCheckpoint(params.pmRoot, UPDATE_MANY_CHECKPOINT_SUBDIR, params.rollbackId, UPDATE_MANY_CHECKPOINT_SCHEMA_VERSION);
479
+ const restoreMessage = params.options.update?.message ?? `Rollback update-many checkpoint ${checkpoint.id}`;
480
+ const rollback = await restoreCheckpointItems(checkpoint.items, (id, targetUpdatedAt) => runRestore(id, targetUpdatedAt, {
481
+ author: params.options.update?.author,
482
+ message: restoreMessage,
483
+ force: params.options.update?.force ?? true
484
+ }, params.global));
485
+ return {
486
+ mode: "rollback",
487
+ matched_count: checkpoint.items.length,
488
+ dry_run: false,
489
+ rollback_checkpoint_id: checkpoint.id,
490
+ checkpoint: {
491
+ id: checkpoint.id,
492
+ created_at: checkpoint.created_at,
493
+ path: checkpoint.path,
494
+ rollback_command: `pm update-many --rollback ${checkpoint.id}`
495
+ },
496
+ restored_count: rollback.restored_ids.length,
497
+ failed_count: rollback.failed_count,
498
+ rows: rollback.rows,
499
+ ids: rollback.restored_ids
500
+ };
501
+ }
502
+ async function writeUpdateManyCheckpoint(params) {
503
+ const checkpointPayload = {
504
+ schema_version: UPDATE_MANY_CHECKPOINT_SCHEMA_VERSION,
505
+ id: params.checkpointId,
506
+ created_at: params.nowValue,
507
+ author: resolveAuthor(params.options.update?.author, "unknown"),
508
+ status_filter: params.statusFilter ?? null,
509
+ list_filters: params.filters,
510
+ update_options: params.updateSummary,
511
+ items: params.checkpointItems
512
+ };
513
+ const checkpointPath = await writeMutationCheckpoint(params.pmRoot, UPDATE_MANY_CHECKPOINT_SUBDIR, params.checkpointId, checkpointPayload);
514
+ return {
515
+ id: params.checkpointId,
516
+ created_at: params.nowValue,
517
+ path: checkpointPath,
518
+ rollback_command: `pm update-many --rollback ${params.checkpointId}`
519
+ };
520
+ }
477
521
  async function runUpdateMany(options, global2) {
478
522
  const pmRoot = resolvePmRoot(process.cwd(), global2.path);
479
523
  if (!await pathExists(getSettingsPath(pmRoot))) {
@@ -496,29 +540,7 @@ async function runUpdateMany(options, global2) {
496
540
  if (Object.keys(updateSummary).length > 0) {
497
541
  throw new PmCliError("Rollback mode does not accept update mutation flags", EXIT_CODE.USAGE);
498
542
  }
499
- const checkpoint = await loadMutationCheckpoint(pmRoot, UPDATE_MANY_CHECKPOINT_SUBDIR, rollbackId, UPDATE_MANY_CHECKPOINT_SCHEMA_VERSION);
500
- const restoreMessage = options.update?.message ?? `Rollback update-many checkpoint ${checkpoint.id}`;
501
- const rollback = await restoreCheckpointItems(checkpoint.items, (id, targetUpdatedAt) => runRestore(id, targetUpdatedAt, {
502
- author: options.update?.author,
503
- message: restoreMessage,
504
- force: options.update?.force ?? true
505
- }, global2));
506
- return {
507
- mode: "rollback",
508
- matched_count: checkpoint.items.length,
509
- dry_run: false,
510
- rollback_checkpoint_id: checkpoint.id,
511
- checkpoint: {
512
- id: checkpoint.id,
513
- created_at: checkpoint.created_at,
514
- path: checkpoint.path,
515
- rollback_command: `pm update-many --rollback ${checkpoint.id}`
516
- },
517
- restored_count: rollback.restored_ids.length,
518
- failed_count: rollback.failed_count,
519
- rows: rollback.rows,
520
- ids: rollback.restored_ids
521
- };
543
+ return runUpdateManyRollback({ pmRoot, rollbackId, options, global: global2 });
522
544
  }
523
545
  if (!hasAnyUpdateMutationInput(options.update)) {
524
546
  throw new PmCliError(`No update-many mutation flags provided. Add at least one mutation flag (for example: ${UPDATE_MANY_MUTATION_FLAG_GUIDANCE}).`, EXIT_CODE.USAGE);
@@ -565,23 +587,16 @@ async function runUpdateMany(options, global2) {
565
587
  }));
566
588
  let checkpointInfo;
567
589
  if (checkpointEnabled) {
568
- const checkpointPayload = {
569
- schema_version: UPDATE_MANY_CHECKPOINT_SCHEMA_VERSION,
570
- id: checkpointId,
571
- created_at: nowValue,
572
- author: resolveAuthor(options.update.author, "unknown"),
573
- status_filter: statusFilter ?? null,
574
- list_filters: listed.filters,
575
- update_options: updateSummary,
576
- items: checkpointItems
577
- };
578
- const checkpointPath = await writeMutationCheckpoint(pmRoot, UPDATE_MANY_CHECKPOINT_SUBDIR, checkpointId, checkpointPayload);
579
- checkpointInfo = {
580
- id: checkpointId,
581
- created_at: nowValue,
582
- path: checkpointPath,
583
- rollback_command: `pm update-many --rollback ${checkpointId}`
584
- };
590
+ checkpointInfo = await writeUpdateManyCheckpoint({
591
+ pmRoot,
592
+ checkpointId,
593
+ nowValue,
594
+ options,
595
+ statusFilter,
596
+ filters: listed.filters,
597
+ updateSummary,
598
+ checkpointItems
599
+ });
585
600
  }
586
601
  const applyRows = [];
587
602
  const updatedIds = [];
@@ -650,4 +665,4 @@ export {
650
665
  _testOnlyUpdateManyCommand,
651
666
  runUpdateMany
652
667
  };
653
- //# sourceMappingURL=update-many-LU3SCNK5.js.map
668
+ //# sourceMappingURL=update-many-6YAYYRLE.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../cli/commands/update-many.ts"],
4
- "sourcesContent": ["/**\n * @module cli/commands/update-many\n *\n * Implements the pm update many command surface and its agent-facing runtime behavior.\n */\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport {\n createCheckpointId,\n loadMutationCheckpoint,\n restoreCheckpointItems,\n writeMutationCheckpoint,\n type MutationCheckpointItem,\n} from \"../../core/checkpoint/mutation-checkpoint.js\";\nimport { toItemRecord } from \"../../core/item/item-record.js\";\nimport { applyTagRemovals, mergeAdditiveTags, parseTags } from \"../../core/item/parse.js\";\nimport { resolvePriority } from \"../../core/item/priority.js\";\nimport { normalizeStatusInput } from \"../../core/item/status.js\";\nimport { resolveItemTypeRegistry, resolveTypeName } from \"../../core/item/type-registry.js\";\nimport { collectRuntimeUpdateFieldValues } from \"../../core/schema/runtime-field-values.js\";\nimport { buildInvalidTypeError } from \"../../core/schema/item-types-file.js\";\nimport {\n resolveItemTypesFilePath,\n resolveRuntimeFieldRegistry,\n resolveRuntimeStatusRegistry,\n type RuntimeFieldRegistry,\n type RuntimeStatusRegistry,\n} from \"../../core/schema/runtime-schema.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { toErrorMessage } from \"../../core/shared/primitives.js\";\nimport { stableValueEquals } from \"../../core/shared/serialization.js\";\nimport { nowIso, resolveIsoOrRelative } from \"../../core/shared/time.js\";\nimport { getActiveExtensionRegistrations } from \"../../core/extensions/index.js\";\nimport type { PmSettings } from \"../../types/index.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport { resolveAuthor } from \"../../core/shared/author.js\";\nimport type { ItemStatus } from \"../../types/index.js\";\nimport { hasListFilters } from \"./list-filter-shared.js\";\nimport { runList, type ListOptions, type ListedItem } from \"./list.js\";\nimport { runRestore } from \"./restore.js\";\nimport { runUpdate, type UpdateCommandOptions } from \"./update.js\";\n\nconst UPDATE_MANY_CHECKPOINT_SCHEMA_VERSION = 1;\nconst UPDATE_MANY_CHECKPOINT_SUBDIR = \"update-many\";\n\nconst NON_MUTATION_UPDATE_OPTION_KEYS = new Set<keyof UpdateCommandOptions>([\n \"author\",\n \"message\",\n \"force\",\n \"allowAuditUpdate\",\n \"allowAuditDepUpdate\",\n]);\n\nconst UPDATE_MANY_MUTATION_FLAG_GUIDANCE = [\n \"--status\",\n \"--priority\",\n \"--type\",\n \"--tags\",\n \"--description\",\n \"--body\",\n \"--deadline\",\n \"--estimate\",\n \"--assignee\",\n \"--dep\",\n \"--dep-remove\",\n \"--comment\",\n \"--note\",\n \"--learning\",\n \"--file\",\n \"--test\",\n \"--doc\",\n \"--replace-deps\",\n \"--replace-tests\",\n \"--unset\",\n \"--clear-*\",\n].join(\", \");\n\nconst UPDATE_OPTION_TO_ITEM_KEY: Partial<Record<keyof UpdateCommandOptions, string>> = {\n title: \"title\",\n description: \"description\",\n body: \"body\",\n status: \"status\",\n closeReason: \"close_reason\",\n priority: \"priority\",\n type: \"type\",\n deadline: \"deadline\",\n estimatedMinutes: \"estimated_minutes\",\n acceptanceCriteria: \"acceptance_criteria\",\n definitionOfReady: \"definition_of_ready\",\n order: \"order\",\n goal: \"goal\",\n objective: \"objective\",\n value: \"value\",\n impact: \"impact\",\n outcome: \"outcome\",\n whyNow: \"why_now\",\n assignee: \"assignee\",\n parent: \"parent\",\n reviewer: \"reviewer\",\n risk: \"risk\",\n confidence: \"confidence\",\n sprint: \"sprint\",\n release: \"release\",\n blockedBy: \"blocked_by\",\n blockedReason: \"blocked_reason\",\n unblockNote: \"unblock_note\",\n reporter: \"reporter\",\n severity: \"severity\",\n environment: \"environment\",\n reproSteps: \"repro_steps\",\n resolution: \"resolution\",\n expectedResult: \"expected_result\",\n actualResult: \"actual_result\",\n affectedVersion: \"affected_version\",\n fixedVersion: \"fixed_version\",\n component: \"component\",\n regression: \"regression\",\n customerImpact: \"customer_impact\",\n};\n\ninterface CollectionMutationPlanDefinition {\n field: string;\n addKey: keyof UpdateCommandOptions;\n removeKey?: keyof UpdateCommandOptions;\n clearKey: keyof UpdateCommandOptions;\n replaceKey?: keyof UpdateCommandOptions;\n}\n\nconst COLLECTION_MUTATION_PLAN_DEFINITIONS: CollectionMutationPlanDefinition[] = [\n {\n field: \"dependencies\",\n addKey: \"dep\",\n removeKey: \"depRemove\",\n clearKey: \"clearDeps\",\n replaceKey: \"replaceDeps\",\n },\n {\n field: \"comments\",\n addKey: \"comment\",\n clearKey: \"clearComments\",\n },\n {\n field: \"notes\",\n addKey: \"note\",\n clearKey: \"clearNotes\",\n },\n {\n field: \"learnings\",\n addKey: \"learning\",\n clearKey: \"clearLearnings\",\n },\n {\n field: \"files\",\n addKey: \"file\",\n clearKey: \"clearFiles\",\n },\n {\n field: \"tests\",\n addKey: \"test\",\n clearKey: \"clearTests\",\n replaceKey: \"replaceTests\",\n },\n {\n field: \"docs\",\n addKey: \"doc\",\n clearKey: \"clearDocs\",\n },\n {\n field: \"reminders\",\n addKey: \"reminder\",\n clearKey: \"clearReminders\",\n },\n {\n field: \"events\",\n addKey: \"event\",\n clearKey: \"clearEvents\",\n },\n {\n field: \"type_options\",\n addKey: \"typeOption\",\n clearKey: \"clearTypeOptions\",\n },\n];\n\nconst UNSET_FIELD_ALIASES: Record<string, string> = {\n close_reason: \"close_reason\",\n \"close-reason\": \"close_reason\",\n deadline: \"deadline\",\n estimate: \"estimated_minutes\",\n estimated_minutes: \"estimated_minutes\",\n \"estimated-minutes\": \"estimated_minutes\",\n acceptance_criteria: \"acceptance_criteria\",\n \"acceptance-criteria\": \"acceptance_criteria\",\n ac: \"acceptance_criteria\",\n definition_of_ready: \"definition_of_ready\",\n \"definition-of-ready\": \"definition_of_ready\",\n order: \"order\",\n rank: \"order\",\n goal: \"goal\",\n objective: \"objective\",\n value: \"value\",\n impact: \"impact\",\n outcome: \"outcome\",\n why_now: \"why_now\",\n \"why-now\": \"why_now\",\n assignee: \"assignee\",\n parent: \"parent\",\n reviewer: \"reviewer\",\n risk: \"risk\",\n confidence: \"confidence\",\n sprint: \"sprint\",\n release: \"release\",\n blocked_by: \"blocked_by\",\n \"blocked-by\": \"blocked_by\",\n blocked_reason: \"blocked_reason\",\n \"blocked-reason\": \"blocked_reason\",\n unblock_note: \"unblock_note\",\n \"unblock-note\": \"unblock_note\",\n reporter: \"reporter\",\n severity: \"severity\",\n environment: \"environment\",\n repro_steps: \"repro_steps\",\n \"repro-steps\": \"repro_steps\",\n resolution: \"resolution\",\n expected_result: \"expected_result\",\n \"expected-result\": \"expected_result\",\n actual_result: \"actual_result\",\n \"actual-result\": \"actual_result\",\n affected_version: \"affected_version\",\n \"affected-version\": \"affected_version\",\n fixed_version: \"fixed_version\",\n \"fixed-version\": \"fixed_version\",\n component: \"component\",\n regression: \"regression\",\n customer_impact: \"customer_impact\",\n \"customer-impact\": \"customer_impact\",\n type_options: \"type_options\",\n \"type-options\": \"type_options\",\n tags: \"tags\",\n};\n\ninterface UpdateManyCheckpoint {\n schema_version: number;\n id: string;\n created_at: string;\n author: string;\n status_filter: string | null;\n list_filters: Record<string, unknown>;\n update_options: Record<string, unknown>;\n items: MutationCheckpointItem[];\n}\n\n/**\n * Documents the update many command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface UpdateManyCommandOptions {\n status?: string;\n list: ListOptions;\n update: UpdateCommandOptions;\n dryRun?: boolean;\n rollback?: string;\n checkpoint?: boolean;\n}\n\ninterface PlannedChange {\n field: string;\n before: unknown;\n after: unknown;\n}\n\ninterface PlannedItemDiff {\n id: string;\n changes: PlannedChange[];\n}\n\ninterface UpdateManyApplyResultRow {\n id: string;\n status: \"updated\" | \"failed\" | \"skipped\";\n changed_fields?: string[];\n warnings?: string[];\n error?: string;\n}\n\ninterface UpdateManyRollbackResultRow {\n id: string;\n status: \"restored\" | \"failed\";\n changed_fields?: string[];\n warnings?: string[];\n error?: string;\n}\n\n/**\n * Documents the update many result payload exchanged by command, SDK, and package integrations.\n */\nexport interface UpdateManyResult {\n mode: \"dry_run\" | \"apply\" | \"rollback\";\n matched_count: number;\n dry_run: boolean;\n filters?: Record<string, unknown>;\n planned_update_options?: Record<string, unknown>;\n item_plans?: PlannedItemDiff[];\n checkpoint?: {\n id: string;\n created_at: string;\n path: string;\n rollback_command: string;\n };\n updated_count?: number;\n skipped_count?: number;\n failed_count?: number;\n restored_count?: number;\n rollback_checkpoint_id?: string;\n rows?: UpdateManyApplyResultRow[] | UpdateManyRollbackResultRow[];\n ids: string[];\n}\n\nfunction sanitizeUpdateOptionsForSummary(options: UpdateCommandOptions): Record<string, unknown> {\n const summary: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(options) as Array<[keyof UpdateCommandOptions, unknown]>) {\n if (NON_MUTATION_UPDATE_OPTION_KEYS.has(key)) {\n continue;\n }\n if (value === undefined) {\n continue;\n }\n summary[key] = value;\n }\n return summary;\n}\n\nfunction hasAnyUpdateMutationInput(options: UpdateCommandOptions): boolean {\n return Object.keys(sanitizeUpdateOptionsForSummary(options)).length > 0;\n}\n\nfunction toComparablePreviewValue(optionKey: keyof UpdateCommandOptions, value: unknown): unknown {\n if (value === undefined) {\n return undefined;\n }\n if (optionKey === \"priority\") {\n const parsed = Number(String(value).trim());\n return Number.isInteger(parsed) ? parsed : String(value).trim();\n }\n if (optionKey === \"estimatedMinutes\" || optionKey === \"order\" || optionKey === \"rank\") {\n const parsed = Number(String(value).trim());\n return Number.isFinite(parsed) ? parsed : String(value).trim();\n }\n if (optionKey === \"regression\") {\n const normalized = String(value).trim().toLowerCase();\n if (normalized === \"true\" || normalized === \"1\") {\n return true;\n }\n if (normalized === \"false\" || normalized === \"0\") {\n return false;\n }\n }\n if (typeof value === \"string\") {\n return value.trim();\n }\n return value;\n}\n\nfunction normalizeUnsetField(rawField: string): string {\n const normalized = rawField.trim().toLowerCase().replaceAll(\"-\", \"_\");\n return UNSET_FIELD_ALIASES[normalized] ?? normalized;\n}\n\nfunction areValuesEqual(left: unknown, right: unknown): boolean {\n return stableValueEquals(left, right);\n}\n\nfunction normalizeCollectionBeforeValue(field: string, value: unknown): unknown {\n if (value !== undefined) {\n return value;\n }\n if (field === \"type_options\") {\n return {};\n }\n return [];\n}\n\nfunction collectionValueCount(field: string, value: unknown): number {\n if (Array.isArray(value)) {\n return value.length;\n }\n if (field === \"type_options\" && value && typeof value === \"object\") {\n return Object.keys(value as Record<string, unknown>).length;\n }\n return 0;\n}\n\nfunction buildCollectionMutationPlans(row: Record<string, unknown>, update: UpdateCommandOptions): PlannedChange[] {\n const changes: PlannedChange[] = [];\n for (const definition of COLLECTION_MUTATION_PLAN_DEFINITIONS) {\n const addValues = update[definition.addKey];\n const removeValues = definition.removeKey ? update[definition.removeKey] : undefined;\n const addCount = Array.isArray(addValues) ? addValues.length : 0;\n const removeCount = Array.isArray(removeValues) ? removeValues.length : 0;\n const clear = update[definition.clearKey] === true;\n const replace = definition.replaceKey ? update[definition.replaceKey] === true : false;\n if (!clear && !replace && addCount === 0 && removeCount === 0) {\n continue;\n }\n\n const before = normalizeCollectionBeforeValue(definition.field, row[definition.field]);\n const beforeCount = collectionValueCount(definition.field, before);\n const operation = replace ? \"replace\" : clear ? \"clear_or_reset\" : removeCount > 0 ? \"merge_remove\" : \"append\";\n changes.push({\n field: definition.field,\n before,\n after: {\n operation,\n clear,\n replace,\n add_count: addCount,\n remove_count: removeCount,\n before_count: beforeCount,\n },\n });\n }\n return changes;\n}\n\nfunction normalizeExistingTags(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.filter((tag): tag is string => typeof tag === \"string\");\n}\n\n// Tags support three mutation modes that compose: --tags replaces, --add-tags\n// extends, --remove-tags prunes. Replicate runUpdate's resolution order so the\n// dry-run preview and the apply-mode actionable detection both account for\n// additive/subtractive tag mutations (a --add-tags-only update must NOT be\n// treated as a no-op skip).\nfunction buildTagMutationPlan(row: Record<string, unknown>, update: UpdateCommandOptions): PlannedChange | undefined {\n const hasReplace = update.tags !== undefined;\n const hasAdd = Array.isArray(update.addTags) && update.addTags.length > 0;\n const hasRemove = Array.isArray(update.removeTags) && update.removeTags.length > 0;\n if (!hasReplace && !hasAdd && !hasRemove) {\n return undefined;\n }\n const existing = normalizeExistingTags(row.tags);\n const baseTags = hasReplace ? parseTags(update.tags as string) : existing;\n const withAdditions = mergeAdditiveTags(baseTags, update.addTags);\n const after = applyTagRemovals(withAdditions, update.removeTags).slice().sort((a, b) => a.localeCompare(b));\n const before = existing.slice().sort((a, b) => a.localeCompare(b));\n if (areValuesEqual(before, after)) {\n return undefined;\n }\n return { field: \"tags\", before: existing, after };\n}\n\nfunction buildPlannedItemDiff(\n item: ListedItem,\n update: UpdateCommandOptions = {},\n runtimeFieldRegistry: RuntimeFieldRegistry,\n): PlannedItemDiff {\n const safeUpdate = update;\n const row = toItemRecord(item);\n const changes: PlannedChange[] = [];\n const tagPlan = buildTagMutationPlan(row, safeUpdate);\n if (tagPlan) {\n changes.push(tagPlan);\n }\n for (const [optionKey, itemKey] of Object.entries(UPDATE_OPTION_TO_ITEM_KEY) as Array<[keyof UpdateCommandOptions, string]>) {\n const candidate = safeUpdate[optionKey];\n if (candidate === undefined) {\n continue;\n }\n const before = row[itemKey];\n const after = toComparablePreviewValue(optionKey, candidate);\n if (areValuesEqual(before, after)) {\n continue;\n }\n changes.push({\n field: itemKey,\n before,\n after,\n });\n }\n changes.push(...buildCollectionMutationPlans(row, safeUpdate));\n\n const runtimeFieldUpdates = collectRuntimeUpdateFieldValues(\n safeUpdate as Record<string, unknown>,\n runtimeFieldRegistry,\n [\"update_many\"],\n );\n for (const [fieldKey, fieldValue] of Object.entries(runtimeFieldUpdates)) {\n const before = row[fieldKey];\n if (areValuesEqual(before, fieldValue)) {\n continue;\n }\n changes.push({\n field: fieldKey,\n before,\n after: fieldValue,\n });\n }\n\n if (safeUpdate.unset && safeUpdate.unset.length > 0) {\n for (const rawUnsetField of safeUpdate.unset) {\n const field = normalizeUnsetField(rawUnsetField);\n const before = row[field];\n if (before === undefined) {\n continue;\n }\n changes.push({\n field,\n before,\n after: null,\n });\n }\n }\n\n return {\n id: item.id,\n changes,\n };\n}\n\nfunction normalizeStatusFilter(value: string | undefined, statusRegistry: RuntimeStatusRegistry): ItemStatus | undefined {\n if (value === undefined) {\n return undefined;\n }\n const normalized = normalizeStatusInput(value, statusRegistry);\n if (!normalized) {\n const allowedStatuses = statusRegistry.definitions.map((definition) => definition.id);\n throw new PmCliError(\n `Invalid --filter-status value \"${value}\". Allowed: ${allowedStatuses.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n }\n return normalized;\n}\n\nfunction rejectBlankIdsFilter(list: ListOptions | undefined): void {\n if (list?.ids != null && String(list.ids).trim().length === 0) {\n throw new PmCliError(\"--ids requires at least one non-empty item ID\", EXIT_CODE.USAGE);\n }\n}\n\n// GH-256: validate planned scalar enum/format fields up front so a `--dry-run`\n// preview rejects globally-invalid values exactly as apply would (true\n// preview==apply parity), and so apply itself fails fast before creating an\n// orphan checkpoint. Only VALUE/ENUM/FORMAT correctness is checked here — these\n// are invalid regardless of the matched item. Per-item governance and\n// workflow-transition rules stay in the apply path (runUpdate). Each field is\n// validated only when the caller actually provided it, reusing the exact same\n// resolvers and error messages runUpdate raises so single/bulk/dry-run stay\n// consistent.\nfunction assertPlannedUpdateValuesValid(\n update: UpdateCommandOptions,\n settings: PmSettings,\n statusRegistry: RuntimeStatusRegistry,\n pmRoot: string,\n): void {\n if (update.priority !== undefined) {\n resolvePriority(update.priority);\n }\n if (update.type !== undefined) {\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n if (!resolveTypeName(update.type, typeRegistry)) {\n throw new PmCliError(\n buildInvalidTypeError(update.type, typeRegistry.types, resolveItemTypesFilePath(pmRoot, settings.schema)),\n EXIT_CODE.USAGE,\n );\n }\n }\n if (update.status !== undefined && !normalizeStatusInput(update.status, statusRegistry)) {\n const allowedStatuses = statusRegistry.definitions.map((definition) => definition.id);\n throw new PmCliError(\n `Invalid --status value \"${update.status}\". Allowed: ${allowedStatuses.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n }\n if (update.deadline !== undefined) {\n resolveIsoOrRelative(update.deadline, new Date(), \"deadline\");\n }\n}\n\n\n/**\n * Implements run update many for the public runtime surface of this module.\n */\nexport async function runUpdateMany(options: UpdateManyCommandOptions, global: GlobalOptions): Promise<UpdateManyResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n const settings = await readSettings(pmRoot);\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);\n\n const dryRun = options.dryRun === true;\n const rollbackId = typeof options.rollback === \"string\" ? options.rollback : undefined;\n const updateSummary = sanitizeUpdateOptionsForSummary(options.update);\n rejectBlankIdsFilter(options.list);\n\n if (rollbackId) {\n if (dryRun) {\n throw new PmCliError(\"--dry-run cannot be combined with --rollback\", EXIT_CODE.USAGE);\n }\n if (hasListFilters(options.list, options.status)) {\n throw new PmCliError(\"Rollback mode does not accept filter options\", EXIT_CODE.USAGE);\n }\n if (Object.keys(updateSummary).length > 0) {\n throw new PmCliError(\"Rollback mode does not accept update mutation flags\", EXIT_CODE.USAGE);\n }\n\n const checkpoint = await loadMutationCheckpoint(\n pmRoot,\n UPDATE_MANY_CHECKPOINT_SUBDIR,\n rollbackId,\n UPDATE_MANY_CHECKPOINT_SCHEMA_VERSION,\n );\n const restoreMessage = options.update?.message ?? `Rollback update-many checkpoint ${checkpoint.id}`;\n const rollback = await restoreCheckpointItems(checkpoint.items, (id, targetUpdatedAt) =>\n runRestore(\n id,\n targetUpdatedAt,\n {\n author: options.update?.author,\n message: restoreMessage,\n force: options.update?.force ?? true,\n },\n global,\n ),\n );\n return {\n mode: \"rollback\",\n matched_count: checkpoint.items.length,\n dry_run: false,\n rollback_checkpoint_id: checkpoint.id,\n checkpoint: {\n id: checkpoint.id,\n created_at: checkpoint.created_at,\n path: checkpoint.path,\n rollback_command: `pm update-many --rollback ${checkpoint.id}`,\n },\n restored_count: rollback.restored_ids.length,\n failed_count: rollback.failed_count,\n rows: rollback.rows,\n ids: rollback.restored_ids,\n };\n }\n\n if (!hasAnyUpdateMutationInput(options.update)) {\n throw new PmCliError(\n `No update-many mutation flags provided. Add at least one mutation flag (for example: ${UPDATE_MANY_MUTATION_FLAG_GUIDANCE}).`,\n EXIT_CODE.USAGE,\n );\n }\n\n // GH-256: validate planned scalar values before listing/checkpointing so\n // dry-run previews and apply both reject globally-invalid enum/format input.\n assertPlannedUpdateValuesValid(options.update, settings, statusRegistry, pmRoot);\n\n const statusFilter = normalizeStatusFilter(options.status, statusRegistry);\n const listed = await runList(statusFilter, { ...options.list, includeBody: true }, global);\n const planned = listed.items.map((item) => buildPlannedItemDiff(item, options.update, runtimeFieldRegistry));\n const actionable = planned.filter((row) => row.changes.length > 0);\n if (dryRun) {\n return {\n mode: \"dry_run\",\n matched_count: listed.items.length,\n dry_run: true,\n filters: listed.filters,\n planned_update_options: updateSummary,\n item_plans: planned,\n ids: [],\n };\n }\n\n if (actionable.length === 0) {\n return {\n mode: \"apply\",\n matched_count: listed.items.length,\n dry_run: false,\n filters: listed.filters,\n planned_update_options: updateSummary,\n updated_count: 0,\n skipped_count: listed.items.length,\n failed_count: 0,\n rows: planned.map((row) => ({\n id: row.id,\n status: \"skipped\" as const,\n })),\n ids: [],\n };\n }\n\n const nowValue = nowIso();\n const checkpointId = createCheckpointId(UPDATE_MANY_CHECKPOINT_SUBDIR, nowValue);\n const checkpointEnabled = options.checkpoint !== false;\n const checkpointItems: MutationCheckpointItem[] = listed.items\n .filter((item) => actionable.some((candidate) => candidate.id === item.id))\n .map((item) => ({\n id: item.id,\n target_updated_at: item.updated_at,\n }));\n\n let checkpointInfo: UpdateManyResult[\"checkpoint\"] | undefined;\n if (checkpointEnabled) {\n const checkpointPayload: UpdateManyCheckpoint = {\n schema_version: UPDATE_MANY_CHECKPOINT_SCHEMA_VERSION,\n id: checkpointId,\n created_at: nowValue,\n author: resolveAuthor(options.update.author, \"unknown\"),\n status_filter: statusFilter ?? null,\n list_filters: listed.filters,\n update_options: updateSummary,\n items: checkpointItems,\n };\n const checkpointPath = await writeMutationCheckpoint(\n pmRoot,\n UPDATE_MANY_CHECKPOINT_SUBDIR,\n checkpointId,\n checkpointPayload,\n );\n checkpointInfo = {\n id: checkpointId,\n created_at: nowValue,\n path: checkpointPath,\n rollback_command: `pm update-many --rollback ${checkpointId}`,\n };\n }\n\n const applyRows: UpdateManyApplyResultRow[] = [];\n const updatedIds: string[] = [];\n const updateMessage = options.update.message ?? `update-many apply ${checkpointId}`;\n const actionableById = new Set(actionable.map((row) => row.id));\n for (const item of listed.items) {\n if (!actionableById.has(item.id)) {\n applyRows.push({ id: item.id, status: \"skipped\" });\n continue;\n }\n try {\n const result = await runUpdate(\n item.id,\n {\n ...options.update,\n message: updateMessage,\n runtimeFieldCommands: [\"update_many\"],\n },\n global,\n );\n applyRows.push({\n id: item.id,\n status: \"updated\",\n changed_fields: result.changed_fields,\n warnings: result.warnings,\n });\n updatedIds.push(item.id);\n } catch (error: unknown) {\n applyRows.push({\n id: item.id,\n status: \"failed\",\n error: toErrorMessage(error),\n });\n }\n }\n\n const updatedCount = applyRows.filter((row) => row.status === \"updated\").length;\n const skippedCount = applyRows.filter((row) => row.status === \"skipped\").length;\n const failedCount = applyRows.filter((row) => row.status === \"failed\").length;\n\n return {\n mode: \"apply\",\n matched_count: listed.items.length,\n dry_run: false,\n filters: listed.filters,\n planned_update_options: updateSummary,\n ...(checkpointInfo ? { checkpoint: checkpointInfo } : {}),\n updated_count: updatedCount,\n skipped_count: skippedCount,\n failed_count: failedCount,\n rows: applyRows,\n ids: updatedIds,\n };\n}\n\nexport const _testOnlyUpdateManyCommand = {\n assertPlannedUpdateValuesValid,\n buildCollectionMutationPlans,\n buildPlannedItemDiff,\n buildTagMutationPlan,\n collectionValueCount,\n hasAnyUpdateMutationInput,\n hasListFilters,\n normalizeStatusFilter,\n normalizeCollectionBeforeValue,\n normalizeExistingTags,\n normalizeUnsetField,\n rejectBlankIdsFilter,\n sanitizeUpdateOptionsForSummary,\n toComparablePreviewValue,\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * @module cli/commands/update-many\n *\n * Implements the pm update many command surface and its agent-facing runtime behavior.\n */\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport {\n createCheckpointId,\n loadMutationCheckpoint,\n restoreCheckpointItems,\n writeMutationCheckpoint,\n type MutationCheckpointItem,\n} from \"../../core/checkpoint/mutation-checkpoint.js\";\nimport { toItemRecord } from \"../../core/item/item-record.js\";\nimport { applyTagRemovals, mergeAdditiveTags, parseTags } from \"../../core/item/parse.js\";\nimport { resolvePriority } from \"../../core/item/priority.js\";\nimport { normalizeStatusInput } from \"../../core/item/status.js\";\nimport { resolveItemTypeRegistry, resolveTypeName } from \"../../core/item/type-registry.js\";\nimport { collectRuntimeUpdateFieldValues } from \"../../core/schema/runtime-field-values.js\";\nimport { buildInvalidTypeError } from \"../../core/schema/item-types-file.js\";\nimport {\n resolveItemTypesFilePath,\n resolveRuntimeFieldRegistry,\n resolveRuntimeStatusRegistry,\n type RuntimeFieldRegistry,\n type RuntimeStatusRegistry,\n} from \"../../core/schema/runtime-schema.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { toErrorMessage } from \"../../core/shared/primitives.js\";\nimport { stableValueEquals } from \"../../core/shared/serialization.js\";\nimport { nowIso, resolveIsoOrRelative } from \"../../core/shared/time.js\";\nimport { getActiveExtensionRegistrations } from \"../../core/extensions/index.js\";\nimport type { PmSettings } from \"../../types/index.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport { resolveAuthor } from \"../../core/shared/author.js\";\nimport type { ItemStatus } from \"../../types/index.js\";\nimport { hasListFilters } from \"./list-filter-shared.js\";\nimport { runList, type ListOptions, type ListedItem } from \"./list.js\";\nimport { runRestore } from \"./restore.js\";\nimport { runUpdate, type UpdateCommandOptions } from \"./update.js\";\n\nconst UPDATE_MANY_CHECKPOINT_SCHEMA_VERSION = 1;\nconst UPDATE_MANY_CHECKPOINT_SUBDIR = \"update-many\";\n\nconst NON_MUTATION_UPDATE_OPTION_KEYS = new Set<keyof UpdateCommandOptions>([\n \"author\",\n \"message\",\n \"force\",\n \"allowAuditUpdate\",\n \"allowAuditDepUpdate\",\n]);\n\nconst UPDATE_MANY_MUTATION_FLAG_GUIDANCE = [\n \"--status\",\n \"--priority\",\n \"--type\",\n \"--tags\",\n \"--description\",\n \"--body\",\n \"--deadline\",\n \"--estimate\",\n \"--assignee\",\n \"--dep\",\n \"--dep-remove\",\n \"--comment\",\n \"--note\",\n \"--learning\",\n \"--file\",\n \"--test\",\n \"--doc\",\n \"--replace-deps\",\n \"--replace-tests\",\n \"--unset\",\n \"--clear-*\",\n].join(\", \");\n\nconst UPDATE_OPTION_TO_ITEM_KEY: Partial<Record<keyof UpdateCommandOptions, string>> = {\n title: \"title\",\n description: \"description\",\n body: \"body\",\n status: \"status\",\n closeReason: \"close_reason\",\n priority: \"priority\",\n type: \"type\",\n deadline: \"deadline\",\n estimatedMinutes: \"estimated_minutes\",\n acceptanceCriteria: \"acceptance_criteria\",\n definitionOfReady: \"definition_of_ready\",\n order: \"order\",\n goal: \"goal\",\n objective: \"objective\",\n value: \"value\",\n impact: \"impact\",\n outcome: \"outcome\",\n whyNow: \"why_now\",\n assignee: \"assignee\",\n parent: \"parent\",\n reviewer: \"reviewer\",\n risk: \"risk\",\n confidence: \"confidence\",\n sprint: \"sprint\",\n release: \"release\",\n blockedBy: \"blocked_by\",\n blockedReason: \"blocked_reason\",\n unblockNote: \"unblock_note\",\n reporter: \"reporter\",\n severity: \"severity\",\n environment: \"environment\",\n reproSteps: \"repro_steps\",\n resolution: \"resolution\",\n expectedResult: \"expected_result\",\n actualResult: \"actual_result\",\n affectedVersion: \"affected_version\",\n fixedVersion: \"fixed_version\",\n component: \"component\",\n regression: \"regression\",\n customerImpact: \"customer_impact\",\n};\n\ninterface CollectionMutationPlanDefinition {\n field: string;\n addKey: keyof UpdateCommandOptions;\n removeKey?: keyof UpdateCommandOptions;\n clearKey: keyof UpdateCommandOptions;\n replaceKey?: keyof UpdateCommandOptions;\n}\n\nconst COLLECTION_MUTATION_PLAN_DEFINITIONS: CollectionMutationPlanDefinition[] = [\n {\n field: \"dependencies\",\n addKey: \"dep\",\n removeKey: \"depRemove\",\n clearKey: \"clearDeps\",\n replaceKey: \"replaceDeps\",\n },\n {\n field: \"comments\",\n addKey: \"comment\",\n clearKey: \"clearComments\",\n },\n {\n field: \"notes\",\n addKey: \"note\",\n clearKey: \"clearNotes\",\n },\n {\n field: \"learnings\",\n addKey: \"learning\",\n clearKey: \"clearLearnings\",\n },\n {\n field: \"files\",\n addKey: \"file\",\n clearKey: \"clearFiles\",\n },\n {\n field: \"tests\",\n addKey: \"test\",\n clearKey: \"clearTests\",\n replaceKey: \"replaceTests\",\n },\n {\n field: \"docs\",\n addKey: \"doc\",\n clearKey: \"clearDocs\",\n },\n {\n field: \"reminders\",\n addKey: \"reminder\",\n clearKey: \"clearReminders\",\n },\n {\n field: \"events\",\n addKey: \"event\",\n clearKey: \"clearEvents\",\n },\n {\n field: \"type_options\",\n addKey: \"typeOption\",\n clearKey: \"clearTypeOptions\",\n },\n];\n\nconst UNSET_FIELD_ALIASES: Record<string, string> = {\n close_reason: \"close_reason\",\n \"close-reason\": \"close_reason\",\n deadline: \"deadline\",\n estimate: \"estimated_minutes\",\n estimated_minutes: \"estimated_minutes\",\n \"estimated-minutes\": \"estimated_minutes\",\n acceptance_criteria: \"acceptance_criteria\",\n \"acceptance-criteria\": \"acceptance_criteria\",\n ac: \"acceptance_criteria\",\n definition_of_ready: \"definition_of_ready\",\n \"definition-of-ready\": \"definition_of_ready\",\n order: \"order\",\n rank: \"order\",\n goal: \"goal\",\n objective: \"objective\",\n value: \"value\",\n impact: \"impact\",\n outcome: \"outcome\",\n why_now: \"why_now\",\n \"why-now\": \"why_now\",\n assignee: \"assignee\",\n parent: \"parent\",\n reviewer: \"reviewer\",\n risk: \"risk\",\n confidence: \"confidence\",\n sprint: \"sprint\",\n release: \"release\",\n blocked_by: \"blocked_by\",\n \"blocked-by\": \"blocked_by\",\n blocked_reason: \"blocked_reason\",\n \"blocked-reason\": \"blocked_reason\",\n unblock_note: \"unblock_note\",\n \"unblock-note\": \"unblock_note\",\n reporter: \"reporter\",\n severity: \"severity\",\n environment: \"environment\",\n repro_steps: \"repro_steps\",\n \"repro-steps\": \"repro_steps\",\n resolution: \"resolution\",\n expected_result: \"expected_result\",\n \"expected-result\": \"expected_result\",\n actual_result: \"actual_result\",\n \"actual-result\": \"actual_result\",\n affected_version: \"affected_version\",\n \"affected-version\": \"affected_version\",\n fixed_version: \"fixed_version\",\n \"fixed-version\": \"fixed_version\",\n component: \"component\",\n regression: \"regression\",\n customer_impact: \"customer_impact\",\n \"customer-impact\": \"customer_impact\",\n type_options: \"type_options\",\n \"type-options\": \"type_options\",\n tags: \"tags\",\n};\n\ninterface UpdateManyCheckpoint {\n schema_version: number;\n id: string;\n created_at: string;\n author: string;\n status_filter: string | null;\n list_filters: Record<string, unknown>;\n update_options: Record<string, unknown>;\n items: MutationCheckpointItem[];\n}\n\n/**\n * Documents the update many command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface UpdateManyCommandOptions {\n status?: string;\n list: ListOptions;\n update: UpdateCommandOptions;\n dryRun?: boolean;\n rollback?: string;\n checkpoint?: boolean;\n}\n\ninterface PlannedChange {\n field: string;\n before: unknown;\n after: unknown;\n}\n\ninterface PlannedItemDiff {\n id: string;\n changes: PlannedChange[];\n}\n\ninterface UpdateManyApplyResultRow {\n id: string;\n status: \"updated\" | \"failed\" | \"skipped\";\n changed_fields?: string[];\n warnings?: string[];\n error?: string;\n}\n\ninterface UpdateManyRollbackResultRow {\n id: string;\n status: \"restored\" | \"failed\";\n changed_fields?: string[];\n warnings?: string[];\n error?: string;\n}\n\n/**\n * Documents the update many result payload exchanged by command, SDK, and package integrations.\n */\nexport interface UpdateManyResult {\n mode: \"dry_run\" | \"apply\" | \"rollback\";\n matched_count: number;\n dry_run: boolean;\n filters?: Record<string, unknown>;\n planned_update_options?: Record<string, unknown>;\n item_plans?: PlannedItemDiff[];\n checkpoint?: {\n id: string;\n created_at: string;\n path: string;\n rollback_command: string;\n };\n updated_count?: number;\n skipped_count?: number;\n failed_count?: number;\n restored_count?: number;\n rollback_checkpoint_id?: string;\n rows?: UpdateManyApplyResultRow[] | UpdateManyRollbackResultRow[];\n ids: string[];\n}\n\nfunction sanitizeUpdateOptionsForSummary(options: UpdateCommandOptions): Record<string, unknown> {\n const summary: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(options) as Array<[keyof UpdateCommandOptions, unknown]>) {\n if (NON_MUTATION_UPDATE_OPTION_KEYS.has(key)) {\n continue;\n }\n if (value === undefined) {\n continue;\n }\n summary[key] = value;\n }\n return summary;\n}\n\nfunction hasAnyUpdateMutationInput(options: UpdateCommandOptions): boolean {\n return Object.keys(sanitizeUpdateOptionsForSummary(options)).length > 0;\n}\n\nfunction toComparablePreviewValue(optionKey: keyof UpdateCommandOptions, value: unknown): unknown {\n if (value === undefined) {\n return undefined;\n }\n if (optionKey === \"priority\") {\n const parsed = Number(String(value).trim());\n return Number.isInteger(parsed) ? parsed : String(value).trim();\n }\n if (optionKey === \"estimatedMinutes\" || optionKey === \"order\" || optionKey === \"rank\") {\n const parsed = Number(String(value).trim());\n return Number.isFinite(parsed) ? parsed : String(value).trim();\n }\n if (optionKey === \"regression\") {\n const normalized = String(value).trim().toLowerCase();\n if (normalized === \"true\" || normalized === \"1\") {\n return true;\n }\n if (normalized === \"false\" || normalized === \"0\") {\n return false;\n }\n }\n if (typeof value === \"string\") {\n return value.trim();\n }\n return value;\n}\n\nfunction normalizeUnsetField(rawField: string): string {\n const normalized = rawField.trim().toLowerCase().replaceAll(\"-\", \"_\");\n return UNSET_FIELD_ALIASES[normalized] ?? normalized;\n}\n\nfunction areValuesEqual(left: unknown, right: unknown): boolean {\n return stableValueEquals(left, right);\n}\n\nfunction normalizeCollectionBeforeValue(field: string, value: unknown): unknown {\n if (value !== undefined) {\n return value;\n }\n if (field === \"type_options\") {\n return {};\n }\n return [];\n}\n\nfunction collectionValueCount(field: string, value: unknown): number {\n if (Array.isArray(value)) {\n return value.length;\n }\n if (field === \"type_options\" && value && typeof value === \"object\") {\n return Object.keys(value as Record<string, unknown>).length;\n }\n return 0;\n}\n\nfunction buildCollectionMutationPlans(row: Record<string, unknown>, update: UpdateCommandOptions): PlannedChange[] {\n const changes: PlannedChange[] = [];\n for (const definition of COLLECTION_MUTATION_PLAN_DEFINITIONS) {\n const addValues = update[definition.addKey];\n const removeValues = definition.removeKey ? update[definition.removeKey] : undefined;\n const addCount = Array.isArray(addValues) ? addValues.length : 0;\n const removeCount = Array.isArray(removeValues) ? removeValues.length : 0;\n const clear = update[definition.clearKey] === true;\n const replace = definition.replaceKey ? update[definition.replaceKey] === true : false;\n if (!clear && !replace && addCount === 0 && removeCount === 0) {\n continue;\n }\n\n const before = normalizeCollectionBeforeValue(definition.field, row[definition.field]);\n const beforeCount = collectionValueCount(definition.field, before);\n const operation = replace ? \"replace\" : clear ? \"clear_or_reset\" : removeCount > 0 ? \"merge_remove\" : \"append\";\n changes.push({\n field: definition.field,\n before,\n after: {\n operation,\n clear,\n replace,\n add_count: addCount,\n remove_count: removeCount,\n before_count: beforeCount,\n },\n });\n }\n return changes;\n}\n\nfunction normalizeExistingTags(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.filter((tag): tag is string => typeof tag === \"string\");\n}\n\n// Tags support three mutation modes that compose: --tags replaces, --add-tags\n// extends, --remove-tags prunes. Replicate runUpdate's resolution order so the\n// dry-run preview and the apply-mode actionable detection both account for\n// additive/subtractive tag mutations (a --add-tags-only update must NOT be\n// treated as a no-op skip).\nfunction buildTagMutationPlan(row: Record<string, unknown>, update: UpdateCommandOptions): PlannedChange | undefined {\n const hasReplace = update.tags !== undefined;\n const hasAdd = Array.isArray(update.addTags) && update.addTags.length > 0;\n const hasRemove = Array.isArray(update.removeTags) && update.removeTags.length > 0;\n if (!hasReplace && !hasAdd && !hasRemove) {\n return undefined;\n }\n const existing = normalizeExistingTags(row.tags);\n const baseTags = hasReplace ? parseTags(update.tags as string) : existing;\n const withAdditions = mergeAdditiveTags(baseTags, update.addTags);\n const after = applyTagRemovals(withAdditions, update.removeTags).slice().sort((a, b) => a.localeCompare(b));\n const before = existing.slice().sort((a, b) => a.localeCompare(b));\n if (areValuesEqual(before, after)) {\n return undefined;\n }\n return { field: \"tags\", before: existing, after };\n}\n\nfunction buildPlannedItemDiff(\n item: ListedItem,\n update: UpdateCommandOptions = {},\n runtimeFieldRegistry: RuntimeFieldRegistry,\n): PlannedItemDiff {\n const safeUpdate = update;\n const row = toItemRecord(item);\n const changes: PlannedChange[] = [];\n const tagPlan = buildTagMutationPlan(row, safeUpdate);\n if (tagPlan) {\n changes.push(tagPlan);\n }\n for (const [optionKey, itemKey] of Object.entries(UPDATE_OPTION_TO_ITEM_KEY) as Array<[keyof UpdateCommandOptions, string]>) {\n const candidate = safeUpdate[optionKey];\n if (candidate === undefined) {\n continue;\n }\n const before = row[itemKey];\n const after = toComparablePreviewValue(optionKey, candidate);\n if (areValuesEqual(before, after)) {\n continue;\n }\n changes.push({\n field: itemKey,\n before,\n after,\n });\n }\n changes.push(...buildCollectionMutationPlans(row, safeUpdate));\n\n const runtimeFieldUpdates = collectRuntimeUpdateFieldValues(\n safeUpdate as Record<string, unknown>,\n runtimeFieldRegistry,\n [\"update_many\"],\n );\n for (const [fieldKey, fieldValue] of Object.entries(runtimeFieldUpdates)) {\n const before = row[fieldKey];\n if (areValuesEqual(before, fieldValue)) {\n continue;\n }\n changes.push({\n field: fieldKey,\n before,\n after: fieldValue,\n });\n }\n\n if (safeUpdate.unset && safeUpdate.unset.length > 0) {\n for (const rawUnsetField of safeUpdate.unset) {\n const field = normalizeUnsetField(rawUnsetField);\n const before = row[field];\n if (before === undefined) {\n continue;\n }\n changes.push({\n field,\n before,\n after: null,\n });\n }\n }\n\n return {\n id: item.id,\n changes,\n };\n}\n\nfunction normalizeStatusFilter(value: string | undefined, statusRegistry: RuntimeStatusRegistry): ItemStatus | undefined {\n if (value === undefined) {\n return undefined;\n }\n const normalized = normalizeStatusInput(value, statusRegistry);\n if (!normalized) {\n const allowedStatuses = statusRegistry.definitions.map((definition) => definition.id);\n throw new PmCliError(\n `Invalid --filter-status value \"${value}\". Allowed: ${allowedStatuses.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n }\n return normalized;\n}\n\nfunction rejectBlankIdsFilter(list: ListOptions | undefined): void {\n if (list?.ids != null && String(list.ids).trim().length === 0) {\n throw new PmCliError(\"--ids requires at least one non-empty item ID\", EXIT_CODE.USAGE);\n }\n}\n\n// GH-256: validate planned scalar enum/format fields up front so a `--dry-run`\n// preview rejects globally-invalid values exactly as apply would (true\n// preview==apply parity), and so apply itself fails fast before creating an\n// orphan checkpoint. Only VALUE/ENUM/FORMAT correctness is checked here — these\n// are invalid regardless of the matched item. Per-item governance and\n// workflow-transition rules stay in the apply path (runUpdate). Each field is\n// validated only when the caller actually provided it, reusing the exact same\n// resolvers and error messages runUpdate raises so single/bulk/dry-run stay\n// consistent.\nfunction assertPlannedUpdateValuesValid(\n update: UpdateCommandOptions,\n settings: PmSettings,\n statusRegistry: RuntimeStatusRegistry,\n pmRoot: string,\n): void {\n if (update.priority !== undefined) {\n resolvePriority(update.priority);\n }\n if (update.type !== undefined) {\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n if (!resolveTypeName(update.type, typeRegistry)) {\n throw new PmCliError(\n buildInvalidTypeError(update.type, typeRegistry.types, resolveItemTypesFilePath(pmRoot, settings.schema)),\n EXIT_CODE.USAGE,\n );\n }\n }\n if (update.status !== undefined && !normalizeStatusInput(update.status, statusRegistry)) {\n const allowedStatuses = statusRegistry.definitions.map((definition) => definition.id);\n throw new PmCliError(\n `Invalid --status value \"${update.status}\". Allowed: ${allowedStatuses.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n }\n if (update.deadline !== undefined) {\n resolveIsoOrRelative(update.deadline, new Date(), \"deadline\");\n }\n}\n\nasync function runUpdateManyRollback(params: {\n pmRoot: string;\n rollbackId: string;\n options: UpdateManyCommandOptions;\n global: GlobalOptions;\n}): Promise<UpdateManyResult> {\n const checkpoint = await loadMutationCheckpoint(\n params.pmRoot,\n UPDATE_MANY_CHECKPOINT_SUBDIR,\n params.rollbackId,\n UPDATE_MANY_CHECKPOINT_SCHEMA_VERSION,\n );\n const restoreMessage = params.options.update?.message ?? `Rollback update-many checkpoint ${checkpoint.id}`;\n const rollback = await restoreCheckpointItems(checkpoint.items, (id, targetUpdatedAt) =>\n runRestore(\n id,\n targetUpdatedAt,\n {\n author: params.options.update?.author,\n message: restoreMessage,\n force: params.options.update?.force ?? true,\n },\n params.global,\n ),\n );\n return {\n mode: \"rollback\",\n matched_count: checkpoint.items.length,\n dry_run: false,\n rollback_checkpoint_id: checkpoint.id,\n checkpoint: {\n id: checkpoint.id,\n created_at: checkpoint.created_at,\n path: checkpoint.path,\n rollback_command: `pm update-many --rollback ${checkpoint.id}`,\n },\n restored_count: rollback.restored_ids.length,\n failed_count: rollback.failed_count,\n rows: rollback.rows,\n ids: rollback.restored_ids,\n };\n}\n\nasync function writeUpdateManyCheckpoint(params: {\n pmRoot: string;\n checkpointId: string;\n nowValue: string;\n options: UpdateManyCommandOptions;\n statusFilter: string | undefined;\n filters: Record<string, unknown>;\n updateSummary: Record<string, unknown>;\n checkpointItems: MutationCheckpointItem[];\n}): Promise<UpdateManyResult[\"checkpoint\"]> {\n const checkpointPayload: UpdateManyCheckpoint = {\n schema_version: UPDATE_MANY_CHECKPOINT_SCHEMA_VERSION,\n id: params.checkpointId,\n created_at: params.nowValue,\n author: resolveAuthor(params.options.update?.author, \"unknown\"),\n status_filter: params.statusFilter ?? null,\n list_filters: params.filters,\n update_options: params.updateSummary,\n items: params.checkpointItems,\n };\n const checkpointPath = await writeMutationCheckpoint(\n params.pmRoot,\n UPDATE_MANY_CHECKPOINT_SUBDIR,\n params.checkpointId,\n checkpointPayload,\n );\n return {\n id: params.checkpointId,\n created_at: params.nowValue,\n path: checkpointPath,\n rollback_command: `pm update-many --rollback ${params.checkpointId}`,\n };\n}\n\n\n/**\n * Implements run update many for the public runtime surface of this module.\n */\nexport async function runUpdateMany(options: UpdateManyCommandOptions, global: GlobalOptions): Promise<UpdateManyResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n const settings = await readSettings(pmRoot);\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);\n\n const dryRun = options.dryRun === true;\n const rollbackId = typeof options.rollback === \"string\" ? options.rollback : undefined;\n const updateSummary = sanitizeUpdateOptionsForSummary(options.update);\n rejectBlankIdsFilter(options.list);\n\n if (rollbackId) {\n if (dryRun) {\n throw new PmCliError(\"--dry-run cannot be combined with --rollback\", EXIT_CODE.USAGE);\n }\n if (hasListFilters(options.list, options.status)) {\n throw new PmCliError(\"Rollback mode does not accept filter options\", EXIT_CODE.USAGE);\n }\n if (Object.keys(updateSummary).length > 0) {\n throw new PmCliError(\"Rollback mode does not accept update mutation flags\", EXIT_CODE.USAGE);\n }\n return runUpdateManyRollback({ pmRoot, rollbackId, options, global });\n }\n\n if (!hasAnyUpdateMutationInput(options.update)) {\n throw new PmCliError(\n `No update-many mutation flags provided. Add at least one mutation flag (for example: ${UPDATE_MANY_MUTATION_FLAG_GUIDANCE}).`,\n EXIT_CODE.USAGE,\n );\n }\n\n // GH-256: validate planned scalar values before listing/checkpointing so\n // dry-run previews and apply both reject globally-invalid enum/format input.\n assertPlannedUpdateValuesValid(options.update, settings, statusRegistry, pmRoot);\n\n const statusFilter = normalizeStatusFilter(options.status, statusRegistry);\n const listed = await runList(statusFilter, { ...options.list, includeBody: true }, global);\n const planned = listed.items.map((item) => buildPlannedItemDiff(item, options.update, runtimeFieldRegistry));\n const actionable = planned.filter((row) => row.changes.length > 0);\n if (dryRun) {\n return {\n mode: \"dry_run\",\n matched_count: listed.items.length,\n dry_run: true,\n filters: listed.filters,\n planned_update_options: updateSummary,\n item_plans: planned,\n ids: [],\n };\n }\n\n if (actionable.length === 0) {\n return {\n mode: \"apply\",\n matched_count: listed.items.length,\n dry_run: false,\n filters: listed.filters,\n planned_update_options: updateSummary,\n updated_count: 0,\n skipped_count: listed.items.length,\n failed_count: 0,\n rows: planned.map((row) => ({\n id: row.id,\n status: \"skipped\" as const,\n })),\n ids: [],\n };\n }\n\n const nowValue = nowIso();\n const checkpointId = createCheckpointId(UPDATE_MANY_CHECKPOINT_SUBDIR, nowValue);\n const checkpointEnabled = options.checkpoint !== false;\n const checkpointItems: MutationCheckpointItem[] = listed.items\n .filter((item) => actionable.some((candidate) => candidate.id === item.id))\n .map((item) => ({\n id: item.id,\n target_updated_at: item.updated_at,\n }));\n\n let checkpointInfo: UpdateManyResult[\"checkpoint\"] | undefined;\n if (checkpointEnabled) {\n checkpointInfo = await writeUpdateManyCheckpoint({\n pmRoot,\n checkpointId,\n nowValue,\n options,\n statusFilter,\n filters: listed.filters,\n updateSummary,\n checkpointItems,\n });\n }\n\n const applyRows: UpdateManyApplyResultRow[] = [];\n const updatedIds: string[] = [];\n const updateMessage = options.update.message ?? `update-many apply ${checkpointId}`;\n const actionableById = new Set(actionable.map((row) => row.id));\n for (const item of listed.items) {\n if (!actionableById.has(item.id)) {\n applyRows.push({ id: item.id, status: \"skipped\" });\n continue;\n }\n try {\n const result = await runUpdate(\n item.id,\n {\n ...options.update,\n message: updateMessage,\n runtimeFieldCommands: [\"update_many\"],\n },\n global,\n );\n applyRows.push({\n id: item.id,\n status: \"updated\",\n changed_fields: result.changed_fields,\n warnings: result.warnings,\n });\n updatedIds.push(item.id);\n } catch (error: unknown) {\n applyRows.push({\n id: item.id,\n status: \"failed\",\n error: toErrorMessage(error),\n });\n }\n }\n\n const updatedCount = applyRows.filter((row) => row.status === \"updated\").length;\n const skippedCount = applyRows.filter((row) => row.status === \"skipped\").length;\n const failedCount = applyRows.filter((row) => row.status === \"failed\").length;\n\n return {\n mode: \"apply\",\n matched_count: listed.items.length,\n dry_run: false,\n filters: listed.filters,\n planned_update_options: updateSummary,\n ...(checkpointInfo ? { checkpoint: checkpointInfo } : {}),\n updated_count: updatedCount,\n skipped_count: skippedCount,\n failed_count: failedCount,\n rows: applyRows,\n ids: updatedIds,\n };\n}\n\nexport const _testOnlyUpdateManyCommand = {\n assertPlannedUpdateValuesValid,\n buildCollectionMutationPlans,\n buildPlannedItemDiff,\n buildTagMutationPlan,\n collectionValueCount,\n hasAnyUpdateMutationInput,\n hasListFilters,\n normalizeStatusFilter,\n normalizeCollectionBeforeValue,\n normalizeExistingTags,\n normalizeUnsetField,\n rejectBlankIdsFilter,\n sanitizeUpdateOptionsForSummary,\n toComparablePreviewValue,\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["global"]
7
7
  }