@unbrained/pm-cli 2026.5.31 → 2026.6.6

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 (638) hide show
  1. package/CHANGELOG.md +167 -0
  2. package/CONTRIBUTING.md +1 -0
  3. package/README.md +12 -4
  4. package/dist/cli/argv-utils.js +7 -3
  5. package/dist/cli/argv-utils.js.map +1 -1
  6. package/dist/cli/bootstrap-args.d.ts +1 -0
  7. package/dist/cli/bootstrap-args.js +23 -3
  8. package/dist/cli/bootstrap-args.js.map +1 -1
  9. package/dist/cli/commands/calendar.js +17 -3
  10. package/dist/cli/commands/calendar.js.map +1 -1
  11. package/dist/cli/commands/close-many.d.ts +63 -0
  12. package/dist/cli/commands/close-many.js +302 -0
  13. package/dist/cli/commands/close-many.js.map +1 -0
  14. package/dist/cli/commands/completion.d.ts +1 -0
  15. package/dist/cli/commands/completion.js +260 -32
  16. package/dist/cli/commands/completion.js.map +1 -1
  17. package/dist/cli/commands/config.d.ts +4 -4
  18. package/dist/cli/commands/config.js +115 -3
  19. package/dist/cli/commands/config.js.map +1 -1
  20. package/dist/cli/commands/contracts.js +193 -162
  21. package/dist/cli/commands/contracts.js.map +1 -1
  22. package/dist/cli/commands/create.d.ts +1 -0
  23. package/dist/cli/commands/create.js +77 -114
  24. package/dist/cli/commands/create.js.map +1 -1
  25. package/dist/cli/commands/extension/doctor.d.ts +12 -0
  26. package/dist/cli/commands/extension/doctor.js +97 -2
  27. package/dist/cli/commands/extension/doctor.js.map +1 -1
  28. package/dist/cli/commands/extension/scaffold.js +49 -48
  29. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  30. package/dist/cli/commands/extension.js +51 -23
  31. package/dist/cli/commands/extension.js.map +1 -1
  32. package/dist/cli/commands/gc.d.ts +8 -1
  33. package/dist/cli/commands/gc.js +26 -3
  34. package/dist/cli/commands/gc.js.map +1 -1
  35. package/dist/cli/commands/get.js +7 -7
  36. package/dist/cli/commands/get.js.map +1 -1
  37. package/dist/cli/commands/health.js +51 -3
  38. package/dist/cli/commands/health.js.map +1 -1
  39. package/dist/cli/commands/history.d.ts +4 -1
  40. package/dist/cli/commands/history.js +12 -24
  41. package/dist/cli/commands/history.js.map +1 -1
  42. package/dist/cli/commands/index.d.ts +3 -1
  43. package/dist/cli/commands/index.js +5 -3
  44. package/dist/cli/commands/index.js.map +1 -1
  45. package/dist/cli/commands/init.d.ts +10 -0
  46. package/dist/cli/commands/init.js +107 -4
  47. package/dist/cli/commands/init.js.map +1 -1
  48. package/dist/cli/commands/list.d.ts +5 -0
  49. package/dist/cli/commands/list.js +58 -26
  50. package/dist/cli/commands/list.js.map +1 -1
  51. package/dist/cli/commands/reindex.js +163 -47
  52. package/dist/cli/commands/reindex.js.map +1 -1
  53. package/dist/cli/commands/repeatable-metadata-parsers.d.ts +15 -0
  54. package/dist/cli/commands/repeatable-metadata-parsers.js +120 -0
  55. package/dist/cli/commands/repeatable-metadata-parsers.js.map +1 -0
  56. package/dist/cli/commands/restore.js +25 -4
  57. package/dist/cli/commands/restore.js.map +1 -1
  58. package/dist/cli/commands/schema.d.ts +122 -1
  59. package/dist/cli/commands/schema.js +536 -6
  60. package/dist/cli/commands/schema.js.map +1 -1
  61. package/dist/cli/commands/search.d.ts +1 -0
  62. package/dist/cli/commands/search.js +18 -4
  63. package/dist/cli/commands/search.js.map +1 -1
  64. package/dist/cli/commands/stats.d.ts +8 -1
  65. package/dist/cli/commands/stats.js +18 -17
  66. package/dist/cli/commands/stats.js.map +1 -1
  67. package/dist/cli/commands/telemetry.d.ts +8 -0
  68. package/dist/cli/commands/telemetry.js +253 -0
  69. package/dist/cli/commands/telemetry.js.map +1 -0
  70. package/dist/cli/commands/test.js +4 -3
  71. package/dist/cli/commands/test.js.map +1 -1
  72. package/dist/cli/commands/update-many.js +69 -140
  73. package/dist/cli/commands/update-many.js.map +1 -1
  74. package/dist/cli/commands/update.d.ts +2 -0
  75. package/dist/cli/commands/update.js +138 -119
  76. package/dist/cli/commands/update.js.map +1 -1
  77. package/dist/cli/commands/validate.d.ts +1 -0
  78. package/dist/cli/commands/validate.js +63 -33
  79. package/dist/cli/commands/validate.js.map +1 -1
  80. package/dist/cli/error-guidance.js +26 -3
  81. package/dist/cli/error-guidance.js.map +1 -1
  82. package/dist/cli/help-content.js +91 -3
  83. package/dist/cli/help-content.js.map +1 -1
  84. package/dist/cli/main.js +377 -23
  85. package/dist/cli/main.js.map +1 -1
  86. package/dist/cli/register-list-query.js +14 -5
  87. package/dist/cli/register-list-query.js.map +1 -1
  88. package/dist/cli/register-mutation.js +200 -28
  89. package/dist/cli/register-mutation.js.map +1 -1
  90. package/dist/cli/register-operations.js +31 -6
  91. package/dist/cli/register-operations.js.map +1 -1
  92. package/dist/cli/register-setup.js +4 -2
  93. package/dist/cli/register-setup.js.map +1 -1
  94. package/dist/cli/registration-helpers.js +31 -4
  95. package/dist/cli/registration-helpers.js.map +1 -1
  96. package/dist/cli-bundle/chunks/activity-CVXTCHYY.js +16 -0
  97. package/dist/cli-bundle/chunks/activity-JM6DTDND.js +20 -0
  98. package/dist/cli-bundle/chunks/activity-JM6DTDND.js.map +1 -0
  99. package/dist/cli-bundle/chunks/aggregate-GI7WSZPH.js +206 -0
  100. package/dist/cli-bundle/chunks/aggregate-GI7WSZPH.js.map +1 -0
  101. package/dist/cli-bundle/chunks/{aggregate-ADUOSFRO.js → aggregate-VNAHUNNF.js} +11 -11
  102. package/dist/cli-bundle/chunks/{append-JD2DETU7.js → append-7H5N64R2.js} +8 -9
  103. package/dist/cli-bundle/chunks/{append-JD2DETU7.js.map → append-7H5N64R2.js.map} +1 -1
  104. package/dist/cli-bundle/chunks/append-WMKRXKCE.js +69 -0
  105. package/dist/cli-bundle/chunks/append-WMKRXKCE.js.map +1 -0
  106. package/dist/cli-bundle/chunks/{chunk-3M73P3G6.js → chunk-23YFZ3IG.js} +210 -132
  107. package/dist/cli-bundle/chunks/chunk-23YFZ3IG.js.map +7 -0
  108. package/dist/cli-bundle/chunks/chunk-2HVRUSQA.js +128 -0
  109. package/dist/cli-bundle/chunks/chunk-2HVRUSQA.js.map +1 -0
  110. package/dist/cli-bundle/chunks/chunk-2RSPZI5H.js +266 -0
  111. package/dist/cli-bundle/chunks/chunk-2RSPZI5H.js.map +1 -0
  112. package/dist/cli-bundle/chunks/chunk-2VBQ6ZXS.js +631 -0
  113. package/dist/cli-bundle/chunks/chunk-2VBQ6ZXS.js.map +1 -0
  114. package/dist/cli-bundle/chunks/chunk-2VVCGBNV.js +380 -0
  115. package/dist/cli-bundle/chunks/chunk-2VVCGBNV.js.map +1 -0
  116. package/dist/cli-bundle/chunks/chunk-3BWOVLTH.js +1664 -0
  117. package/dist/cli-bundle/chunks/chunk-3BWOVLTH.js.map +1 -0
  118. package/dist/cli-bundle/chunks/{chunk-6HT2F4TK.js → chunk-3FI4SEFT.js} +175 -54
  119. package/dist/cli-bundle/chunks/chunk-3FI4SEFT.js.map +7 -0
  120. package/dist/cli-bundle/chunks/{chunk-JULRTHJQ.js → chunk-3LB74A67.js} +119 -6
  121. package/dist/cli-bundle/chunks/chunk-3LB74A67.js.map +7 -0
  122. package/dist/cli-bundle/chunks/chunk-3VAM3NNM.js +57 -0
  123. package/dist/cli-bundle/chunks/chunk-3VAM3NNM.js.map +1 -0
  124. package/dist/cli-bundle/chunks/chunk-4LL6TK5B.js +1832 -0
  125. package/dist/cli-bundle/chunks/chunk-4LL6TK5B.js.map +1 -0
  126. package/dist/cli-bundle/chunks/chunk-52MAOQ6J.js +422 -0
  127. package/dist/cli-bundle/chunks/chunk-52MAOQ6J.js.map +7 -0
  128. package/dist/cli-bundle/chunks/chunk-5FDATVEZ.js +412 -0
  129. package/dist/cli-bundle/chunks/chunk-5FDATVEZ.js.map +1 -0
  130. package/dist/cli-bundle/chunks/chunk-5SFCOO6B.js +5622 -0
  131. package/dist/cli-bundle/chunks/chunk-5SFCOO6B.js.map +1 -0
  132. package/dist/cli-bundle/chunks/{chunk-U7FMKRXH.js → chunk-6ER6DXH5.js} +37 -16
  133. package/dist/cli-bundle/chunks/chunk-6ER6DXH5.js.map +7 -0
  134. package/dist/cli-bundle/chunks/chunk-6P6GGMOG.js +218 -0
  135. package/dist/cli-bundle/chunks/chunk-6P6GGMOG.js.map +1 -0
  136. package/dist/cli-bundle/chunks/chunk-77GFDHGF.js +80 -0
  137. package/dist/cli-bundle/chunks/chunk-77GFDHGF.js.map +1 -0
  138. package/dist/cli-bundle/chunks/{chunk-MD7K4JYF.js → chunk-AO442XLN.js} +26 -15
  139. package/dist/cli-bundle/chunks/chunk-AO442XLN.js.map +7 -0
  140. package/dist/cli-bundle/chunks/chunk-AY43SBIN.js +751 -0
  141. package/dist/cli-bundle/chunks/chunk-AY43SBIN.js.map +1 -0
  142. package/dist/cli-bundle/chunks/{chunk-D7AOMPRH.js → chunk-BQHUILZS.js} +5 -5
  143. package/dist/cli-bundle/chunks/chunk-E5FJNAZA.js +242 -0
  144. package/dist/cli-bundle/chunks/chunk-E5FJNAZA.js.map +1 -0
  145. package/dist/cli-bundle/chunks/{chunk-OGZEG5TT.js → chunk-ECCMVXGM.js} +164 -53
  146. package/dist/cli-bundle/chunks/chunk-ECCMVXGM.js.map +7 -0
  147. package/dist/cli-bundle/chunks/chunk-FRAUKRU2.js +182 -0
  148. package/dist/cli-bundle/chunks/chunk-FRAUKRU2.js.map +1 -0
  149. package/dist/cli-bundle/chunks/chunk-GCOQW437.js +130 -0
  150. package/dist/cli-bundle/chunks/chunk-GCOQW437.js.map +1 -0
  151. package/dist/cli-bundle/chunks/chunk-GGYWB3Y2.js +1340 -0
  152. package/dist/cli-bundle/chunks/chunk-GGYWB3Y2.js.map +1 -0
  153. package/dist/cli-bundle/chunks/{chunk-G57E5D7T.js → chunk-GU2ZJ2VV.js} +5 -5
  154. package/dist/cli-bundle/chunks/chunk-GXSUPCBV.js +231 -0
  155. package/dist/cli-bundle/chunks/chunk-GXSUPCBV.js.map +1 -0
  156. package/dist/cli-bundle/chunks/chunk-HZGUAH22.js +76 -0
  157. package/dist/cli-bundle/chunks/chunk-HZGUAH22.js.map +1 -0
  158. package/dist/cli-bundle/chunks/chunk-I2HSTRJF.js +346 -0
  159. package/dist/cli-bundle/chunks/chunk-I2HSTRJF.js.map +1 -0
  160. package/dist/cli-bundle/chunks/chunk-I6BNFU5X.js +140 -0
  161. package/dist/cli-bundle/chunks/chunk-I6BNFU5X.js.map +7 -0
  162. package/dist/cli-bundle/chunks/{chunk-JTWRXG4B.js → chunk-IJGCZSIQ.js} +251 -251
  163. package/dist/cli-bundle/chunks/chunk-IJGCZSIQ.js.map +7 -0
  164. package/dist/cli-bundle/chunks/chunk-IOR7LGF4.js +1491 -0
  165. package/dist/cli-bundle/chunks/chunk-IOR7LGF4.js.map +1 -0
  166. package/dist/cli-bundle/chunks/chunk-IUV734HF.js +17 -0
  167. package/dist/cli-bundle/chunks/chunk-IUV734HF.js.map +1 -0
  168. package/dist/cli-bundle/chunks/chunk-J27KIHTG.js +15 -0
  169. package/dist/cli-bundle/chunks/chunk-J27KIHTG.js.map +1 -0
  170. package/dist/cli-bundle/chunks/{chunk-AKOOMO3T.js → chunk-KAG77BY3.js} +2 -2
  171. package/dist/cli-bundle/chunks/{chunk-KBQY3YG5.js → chunk-KJ33AOCY.js} +3 -3
  172. package/dist/cli-bundle/chunks/{chunk-WDPXDQFG.js → chunk-KJE2FOS4.js} +6 -4
  173. package/dist/cli-bundle/chunks/chunk-KJE2FOS4.js.map +7 -0
  174. package/dist/cli-bundle/chunks/chunk-KWU6HG75.js +3883 -0
  175. package/dist/cli-bundle/chunks/chunk-KWU6HG75.js.map +1 -0
  176. package/dist/cli-bundle/chunks/chunk-LB3RUL2N.js +1325 -0
  177. package/dist/cli-bundle/chunks/chunk-LB3RUL2N.js.map +1 -0
  178. package/dist/cli-bundle/chunks/{chunk-5HSEP75M.js → chunk-LCM63IXU.js} +18 -6
  179. package/dist/cli-bundle/chunks/chunk-LCM63IXU.js.map +7 -0
  180. package/dist/cli-bundle/chunks/chunk-LXYVKYMQ.js +24 -0
  181. package/dist/cli-bundle/chunks/chunk-LXYVKYMQ.js.map +1 -0
  182. package/dist/cli-bundle/chunks/chunk-ME2YH6FN.js +182 -0
  183. package/dist/cli-bundle/chunks/chunk-ME2YH6FN.js.map +1 -0
  184. package/dist/cli-bundle/chunks/chunk-MITFDD35.js +1809 -0
  185. package/dist/cli-bundle/chunks/chunk-MITFDD35.js.map +1 -0
  186. package/dist/cli-bundle/chunks/{chunk-WJ2NAC37.js → chunk-N7ACFE26.js} +3 -3
  187. package/dist/cli-bundle/chunks/chunk-NUZ5HKR4.js +332 -0
  188. package/dist/cli-bundle/chunks/chunk-NUZ5HKR4.js.map +1 -0
  189. package/dist/cli-bundle/chunks/{chunk-7Y53ZJIQ.js → chunk-OVQCEJPG.js} +22 -3
  190. package/dist/cli-bundle/chunks/chunk-OVQCEJPG.js.map +7 -0
  191. package/dist/cli-bundle/chunks/{chunk-PXUAZUUY.js → chunk-OZ7NSQHL.js} +12 -11
  192. package/dist/cli-bundle/chunks/chunk-OZ7NSQHL.js.map +7 -0
  193. package/dist/cli-bundle/chunks/{chunk-P53TN6IA.js → chunk-PDDFYW4X.js} +35 -8
  194. package/dist/cli-bundle/chunks/chunk-PDDFYW4X.js.map +7 -0
  195. package/dist/cli-bundle/chunks/{chunk-6YCV7WSL.js → chunk-PIU6RSL3.js} +10 -12
  196. package/dist/cli-bundle/chunks/{chunk-6YCV7WSL.js.map → chunk-PIU6RSL3.js.map} +1 -1
  197. package/dist/cli-bundle/chunks/chunk-PO3GSVFV.js +338 -0
  198. package/dist/cli-bundle/chunks/chunk-PO3GSVFV.js.map +1 -0
  199. package/dist/cli-bundle/chunks/{chunk-LRBOHPUE.js → chunk-PRJCELV4.js} +108 -21
  200. package/dist/cli-bundle/chunks/chunk-PRJCELV4.js.map +7 -0
  201. package/dist/cli-bundle/chunks/{chunk-GN7IJPCD.js → chunk-PROOHX4K.js} +332 -32
  202. package/dist/cli-bundle/chunks/chunk-PROOHX4K.js.map +7 -0
  203. package/dist/cli-bundle/chunks/{chunk-FQE6XZDB.js → chunk-Q7SPNHLW.js} +54 -32
  204. package/dist/cli-bundle/chunks/chunk-Q7SPNHLW.js.map +7 -0
  205. package/dist/cli-bundle/chunks/{chunk-PVNQLCIS.js → chunk-QO7EBBOM.js} +2 -2
  206. package/dist/cli-bundle/chunks/{chunk-A7E7PUVX.js → chunk-R6UFP2GE.js} +7 -7
  207. package/dist/cli-bundle/chunks/chunk-RWPSOIEE.js +154 -0
  208. package/dist/cli-bundle/chunks/chunk-RWPSOIEE.js.map +1 -0
  209. package/dist/cli-bundle/chunks/chunk-RZN6VURO.js +119 -0
  210. package/dist/cli-bundle/chunks/chunk-RZN6VURO.js.map +1 -0
  211. package/dist/cli-bundle/chunks/chunk-SKJWX3QB.js +1501 -0
  212. package/dist/cli-bundle/chunks/chunk-SKJWX3QB.js.map +7 -0
  213. package/dist/cli-bundle/chunks/{chunk-CEFIVZPG.js → chunk-T3LC5LKB.js} +2 -2
  214. package/dist/cli-bundle/chunks/chunk-TCD3R2PF.js +173 -0
  215. package/dist/cli-bundle/chunks/chunk-TCD3R2PF.js.map +1 -0
  216. package/dist/cli-bundle/chunks/chunk-TPH5XEVD.js +2988 -0
  217. package/dist/cli-bundle/chunks/chunk-TPH5XEVD.js.map +1 -0
  218. package/dist/cli-bundle/chunks/{chunk-LSXGH6NE.js → chunk-U5SXYXSY.js} +821 -200
  219. package/dist/cli-bundle/chunks/chunk-U5SXYXSY.js.map +7 -0
  220. package/dist/cli-bundle/chunks/chunk-UBOPJT3S.js +540 -0
  221. package/dist/cli-bundle/chunks/chunk-UBOPJT3S.js.map +1 -0
  222. package/dist/cli-bundle/chunks/{chunk-JFWUHHS2.js → chunk-UM2GBHS4.js} +5 -4
  223. package/dist/cli-bundle/chunks/chunk-W7XABV4H.js +454 -0
  224. package/dist/cli-bundle/chunks/chunk-W7XABV4H.js.map +1 -0
  225. package/dist/cli-bundle/chunks/{chunk-SEXQN4KL.js → chunk-WKY2IBOQ.js} +3 -3
  226. package/dist/cli-bundle/chunks/chunk-WOPXVEZP.js +698 -0
  227. package/dist/cli-bundle/chunks/chunk-WOPXVEZP.js.map +1 -0
  228. package/dist/cli-bundle/chunks/chunk-WSMOSYRD.js +1704 -0
  229. package/dist/cli-bundle/chunks/chunk-WSMOSYRD.js.map +1 -0
  230. package/dist/cli-bundle/chunks/{chunk-NGN7UV5K.js → chunk-XLTD2HN3.js} +2 -2
  231. package/dist/cli-bundle/chunks/chunk-XSJCLN2R.js +131 -0
  232. package/dist/cli-bundle/chunks/chunk-XSJCLN2R.js.map +7 -0
  233. package/dist/cli-bundle/chunks/chunk-XSLQSXAH.js +53 -0
  234. package/dist/cli-bundle/chunks/chunk-XSLQSXAH.js.map +1 -0
  235. package/dist/cli-bundle/chunks/{chunk-BUPWJ3IJ.js → chunk-XTGLRY2Y.js} +484 -49
  236. package/dist/cli-bundle/chunks/chunk-XTGLRY2Y.js.map +7 -0
  237. package/dist/cli-bundle/chunks/{chunk-L2FXEKDB.js → chunk-YL2DJGYS.js} +7 -7
  238. package/dist/cli-bundle/chunks/{claim-EE4TKKCV.js → claim-4DBF6RVG.js} +10 -11
  239. package/dist/cli-bundle/chunks/{claim-EE4TKKCV.js.map → claim-4DBF6RVG.js.map} +1 -1
  240. package/dist/cli-bundle/chunks/claim-X2P4IB7J.js +129 -0
  241. package/dist/cli-bundle/chunks/claim-X2P4IB7J.js.map +1 -0
  242. package/dist/cli-bundle/chunks/close-3HDWDA3L.js +13 -0
  243. package/dist/cli-bundle/chunks/close-PTYFA45H.js +17 -0
  244. package/dist/cli-bundle/chunks/close-PTYFA45H.js.map +1 -0
  245. package/dist/cli-bundle/chunks/close-many-7CGIDPTJ.js +314 -0
  246. package/dist/cli-bundle/chunks/close-many-7CGIDPTJ.js.map +7 -0
  247. package/dist/cli-bundle/chunks/close-many-ERFO6LHR.js +311 -0
  248. package/dist/cli-bundle/chunks/close-many-ERFO6LHR.js.map +1 -0
  249. package/dist/cli-bundle/chunks/comments-OONGABK5.js +100 -0
  250. package/dist/cli-bundle/chunks/comments-OONGABK5.js.map +1 -0
  251. package/dist/cli-bundle/chunks/{comments-AAKJQ6LW.js → comments-QKBYCWKD.js} +10 -11
  252. package/dist/cli-bundle/chunks/{comments-AAKJQ6LW.js.map → comments-QKBYCWKD.js.map} +1 -1
  253. package/dist/cli-bundle/chunks/config-6FXCQKIF.js +1671 -0
  254. package/dist/cli-bundle/chunks/config-6FXCQKIF.js.map +1 -0
  255. package/dist/cli-bundle/chunks/{config-V3FZOKLI.js → config-U4RZ4CQB.js} +121 -10
  256. package/dist/cli-bundle/chunks/config-U4RZ4CQB.js.map +7 -0
  257. package/dist/cli-bundle/chunks/{context-RZ5QPNJB.js → context-FYYJGFWS.js} +32 -19
  258. package/dist/cli-bundle/chunks/{context-RZ5QPNJB.js.map → context-FYYJGFWS.js.map} +2 -2
  259. package/dist/cli-bundle/chunks/context-YMJ3Z2HQ.js +1461 -0
  260. package/dist/cli-bundle/chunks/context-YMJ3Z2HQ.js.map +1 -0
  261. package/dist/cli-bundle/chunks/contracts-QDB6OMLQ.js +1278 -0
  262. package/dist/cli-bundle/chunks/contracts-QDB6OMLQ.js.map +1 -0
  263. package/dist/cli-bundle/chunks/{contracts-YLMH33VU.js → contracts-RFSPGVVJ.js} +198 -162
  264. package/dist/cli-bundle/chunks/contracts-RFSPGVVJ.js.map +7 -0
  265. package/dist/cli-bundle/chunks/create-I5L4EYYZ.js +31 -0
  266. package/dist/cli-bundle/chunks/create-I5L4EYYZ.js.map +1 -0
  267. package/dist/cli-bundle/chunks/create-JTZNCTQC.js +27 -0
  268. package/dist/cli-bundle/chunks/delete-7HPGI4GZ.js +55 -0
  269. package/dist/cli-bundle/chunks/delete-7HPGI4GZ.js.map +1 -0
  270. package/dist/cli-bundle/chunks/{delete-RHCTEORS.js → delete-VXUPH5RS.js} +7 -8
  271. package/dist/cli-bundle/chunks/{delete-RHCTEORS.js.map → delete-VXUPH5RS.js.map} +1 -1
  272. package/dist/cli-bundle/chunks/{deps-MZYCMLAO.js → deps-JSRRWC3Z.js} +7 -8
  273. package/dist/cli-bundle/chunks/{deps-MZYCMLAO.js.map → deps-JSRRWC3Z.js.map} +1 -1
  274. package/dist/cli-bundle/chunks/deps-SCZIFK2Z.js +225 -0
  275. package/dist/cli-bundle/chunks/deps-SCZIFK2Z.js.map +1 -0
  276. package/dist/cli-bundle/chunks/docs-GJK6K4VP.js +31 -0
  277. package/dist/cli-bundle/chunks/docs-GJK6K4VP.js.map +1 -0
  278. package/dist/cli-bundle/chunks/{docs-FXXUCZYU.js → docs-WW4N3MBM.js} +9 -10
  279. package/dist/cli-bundle/chunks/{docs-FXXUCZYU.js.map → docs-WW4N3MBM.js.map} +1 -1
  280. package/dist/cli-bundle/chunks/{extension-B4WL7BQU.js → extension-J7IBMFTD.js} +4 -5
  281. package/dist/cli-bundle/chunks/extension-VDY2U33M.js +28 -0
  282. package/dist/cli-bundle/chunks/extension-VDY2U33M.js.map +1 -0
  283. package/dist/cli-bundle/chunks/files-ISZJGILQ.js +282 -0
  284. package/dist/cli-bundle/chunks/files-ISZJGILQ.js.map +1 -0
  285. package/dist/cli-bundle/chunks/{files-WVOX67PE.js → files-WKOD326U.js} +9 -10
  286. package/dist/cli-bundle/chunks/{files-WVOX67PE.js.map → files-WKOD326U.js.map} +1 -1
  287. package/dist/cli-bundle/chunks/gc-JDVJ6OQ2.js +362 -0
  288. package/dist/cli-bundle/chunks/gc-JDVJ6OQ2.js.map +1 -0
  289. package/dist/cli-bundle/chunks/gc-ULPVWMTN.js +372 -0
  290. package/dist/cli-bundle/chunks/gc-ULPVWMTN.js.map +7 -0
  291. package/dist/cli-bundle/chunks/get-RV37HT3G.js +194 -0
  292. package/dist/cli-bundle/chunks/get-RV37HT3G.js.map +1 -0
  293. package/dist/cli-bundle/chunks/{get-LTK3HOCQ.js → get-WXU6WI5P.js} +16 -17
  294. package/dist/cli-bundle/chunks/get-WXU6WI5P.js.map +7 -0
  295. package/dist/cli-bundle/chunks/{health-TCWL55KM.js → health-6L6EH4WR.js} +57 -16
  296. package/dist/cli-bundle/chunks/health-6L6EH4WR.js.map +7 -0
  297. package/dist/cli-bundle/chunks/health-LOI2HHKB.js +1271 -0
  298. package/dist/cli-bundle/chunks/health-LOI2HHKB.js.map +1 -0
  299. package/dist/cli-bundle/chunks/history-2BA3T5AE.js +20 -0
  300. package/dist/cli-bundle/chunks/history-PKN67D5O.js +24 -0
  301. package/dist/cli-bundle/chunks/history-PKN67D5O.js.map +1 -0
  302. package/dist/cli-bundle/chunks/history-redact-JBZNXHGR.js +19 -0
  303. package/dist/cli-bundle/chunks/history-redact-V4FOJGS7.js +23 -0
  304. package/dist/cli-bundle/chunks/history-redact-V4FOJGS7.js.map +1 -0
  305. package/dist/cli-bundle/chunks/{history-repair-ZWSTDRH2.js → history-repair-HIBCBIKK.js} +12 -14
  306. package/dist/cli-bundle/chunks/{history-repair-ZWSTDRH2.js.map → history-repair-HIBCBIKK.js.map} +1 -1
  307. package/dist/cli-bundle/chunks/history-repair-SDMHR7JT.js +193 -0
  308. package/dist/cli-bundle/chunks/history-repair-SDMHR7JT.js.map +1 -0
  309. package/dist/cli-bundle/chunks/init-HIVSNX3O.js +16 -0
  310. package/dist/cli-bundle/chunks/init-P56QYWJF.js +20 -0
  311. package/dist/cli-bundle/chunks/init-P56QYWJF.js.map +1 -0
  312. package/dist/cli-bundle/chunks/learnings-GDFRG5J7.js +44 -0
  313. package/dist/cli-bundle/chunks/learnings-GDFRG5J7.js.map +1 -0
  314. package/dist/cli-bundle/chunks/{learnings-NXTWE3FR.js → learnings-MIXSESLK.js} +10 -11
  315. package/dist/cli-bundle/chunks/{learnings-NXTWE3FR.js.map → learnings-MIXSESLK.js.map} +1 -1
  316. package/dist/cli-bundle/chunks/list-FGOWQMSM.js +24 -0
  317. package/dist/cli-bundle/chunks/list-FGOWQMSM.js.map +1 -0
  318. package/dist/cli-bundle/chunks/list-MUSQNMTD.js +20 -0
  319. package/dist/cli-bundle/chunks/{notes-DFS5ZGOO.js → notes-4XVSH2AZ.js} +10 -11
  320. package/dist/cli-bundle/chunks/{notes-DFS5ZGOO.js.map → notes-4XVSH2AZ.js.map} +1 -1
  321. package/dist/cli-bundle/chunks/notes-5UK3GEH2.js +44 -0
  322. package/dist/cli-bundle/chunks/notes-5UK3GEH2.js.map +1 -0
  323. package/dist/cli-bundle/chunks/plan-DUMBV3QB.js +1171 -0
  324. package/dist/cli-bundle/chunks/plan-DUMBV3QB.js.map +1 -0
  325. package/dist/cli-bundle/chunks/{plan-67AB2PLM.js → plan-SLMODHWX.js} +13 -14
  326. package/dist/cli-bundle/chunks/{plan-67AB2PLM.js.map → plan-SLMODHWX.js.map} +1 -1
  327. package/dist/cli-bundle/chunks/register-list-query-POCFZ5JW.js +229 -0
  328. package/dist/cli-bundle/chunks/register-list-query-POCFZ5JW.js.map +1 -0
  329. package/dist/cli-bundle/chunks/{register-list-query-UP3VRUFS.js → register-list-query-WST76HSQ.js} +26 -26
  330. package/dist/cli-bundle/chunks/register-list-query-WST76HSQ.js.map +7 -0
  331. package/dist/cli-bundle/chunks/register-mutation-N5GSUZJV.js +813 -0
  332. package/dist/cli-bundle/chunks/register-mutation-N5GSUZJV.js.map +1 -0
  333. package/dist/cli-bundle/chunks/{register-mutation-YWSBF545.js → register-mutation-OA675SOU.js} +154 -43
  334. package/dist/cli-bundle/chunks/register-mutation-OA675SOU.js.map +7 -0
  335. package/dist/cli-bundle/chunks/register-operations-GNHBE5I3.js +383 -0
  336. package/dist/cli-bundle/chunks/register-operations-GNHBE5I3.js.map +1 -0
  337. package/dist/cli-bundle/chunks/{register-operations-3BDTGSDH.js → register-operations-N3PMHXH5.js} +49 -37
  338. package/dist/cli-bundle/chunks/register-operations-N3PMHXH5.js.map +7 -0
  339. package/dist/cli-bundle/chunks/register-setup-JIMPKJKV.js +242 -0
  340. package/dist/cli-bundle/chunks/register-setup-JIMPKJKV.js.map +1 -0
  341. package/dist/cli-bundle/chunks/{register-setup-V56GDRUS.js → register-setup-ZHJI2DI3.js} +18 -19
  342. package/dist/cli-bundle/chunks/{register-setup-V56GDRUS.js.map → register-setup-ZHJI2DI3.js.map} +2 -2
  343. package/dist/cli-bundle/chunks/restore-D4RGNX33.js +17 -0
  344. package/dist/cli-bundle/chunks/restore-PBL6T5TW.js +21 -0
  345. package/dist/cli-bundle/chunks/restore-PBL6T5TW.js.map +1 -0
  346. package/dist/cli-bundle/chunks/schema-2NOO6NGB.js +780 -0
  347. package/dist/cli-bundle/chunks/schema-2NOO6NGB.js.map +7 -0
  348. package/dist/cli-bundle/chunks/schema-EBI4NLUO.js +770 -0
  349. package/dist/cli-bundle/chunks/schema-EBI4NLUO.js.map +1 -0
  350. package/dist/cli-bundle/chunks/search-JPUQTVCY.js +1127 -0
  351. package/dist/cli-bundle/chunks/search-JPUQTVCY.js.map +1 -0
  352. package/dist/cli-bundle/chunks/{search-HENBL456.js → search-OA6JX27A.js} +25 -16
  353. package/dist/cli-bundle/chunks/search-OA6JX27A.js.map +7 -0
  354. package/dist/cli-bundle/chunks/stats-CV54BAWY.js +202 -0
  355. package/dist/cli-bundle/chunks/stats-CV54BAWY.js.map +1 -0
  356. package/dist/cli-bundle/chunks/stats-XYB6KTFG.js +212 -0
  357. package/dist/cli-bundle/chunks/stats-XYB6KTFG.js.map +7 -0
  358. package/dist/cli-bundle/chunks/telemetry-LMJ7PFUO.js +251 -0
  359. package/dist/cli-bundle/chunks/telemetry-LMJ7PFUO.js.map +7 -0
  360. package/dist/cli-bundle/chunks/telemetry-NCMEPJNR.js +248 -0
  361. package/dist/cli-bundle/chunks/telemetry-NCMEPJNR.js.map +1 -0
  362. package/dist/cli-bundle/chunks/test-MXX3E5JL.js +31 -0
  363. package/dist/cli-bundle/chunks/test-WBROAJIE.js +35 -0
  364. package/dist/cli-bundle/chunks/test-WBROAJIE.js.map +1 -0
  365. package/dist/cli-bundle/chunks/test-all-N6NSRDTV.js +328 -0
  366. package/dist/cli-bundle/chunks/test-all-N6NSRDTV.js.map +1 -0
  367. package/dist/cli-bundle/chunks/{test-all-G2AZOHXI.js → test-all-NTOZ7C3M.js} +13 -14
  368. package/dist/cli-bundle/chunks/{test-all-G2AZOHXI.js.map → test-all-NTOZ7C3M.js.map} +1 -1
  369. package/dist/cli-bundle/chunks/test-runs-V6A7LPWZ.js +929 -0
  370. package/dist/cli-bundle/chunks/test-runs-V6A7LPWZ.js.map +1 -0
  371. package/dist/cli-bundle/chunks/{test-runs-GX5HTPSF.js → test-runs-WMVTQU3Y.js} +5 -5
  372. package/dist/cli-bundle/chunks/update-OSV3NAQB.js +25 -0
  373. package/dist/cli-bundle/chunks/update-OSV3NAQB.js.map +1 -0
  374. package/dist/cli-bundle/chunks/update-YRXSUGYQ.js +21 -0
  375. package/dist/cli-bundle/chunks/update-many-EM6OXYGO.js +605 -0
  376. package/dist/cli-bundle/chunks/update-many-EM6OXYGO.js.map +1 -0
  377. package/dist/cli-bundle/chunks/{update-many-46HRSP2Q.js → update-many-KGGEYABR.js} +78 -146
  378. package/dist/cli-bundle/chunks/update-many-KGGEYABR.js.map +7 -0
  379. package/dist/cli-bundle/chunks/{upgrade-H5HHM5UV.js → upgrade-BLI7XBAJ.js} +5 -7
  380. package/dist/cli-bundle/chunks/{upgrade-H5HHM5UV.js.map → upgrade-BLI7XBAJ.js.map} +1 -1
  381. package/dist/cli-bundle/chunks/upgrade-LXPOQKFV.js +266 -0
  382. package/dist/cli-bundle/chunks/upgrade-LXPOQKFV.js.map +1 -0
  383. package/dist/cli-bundle/chunks/{validate-TMCVKIGZ.js → validate-AGOAUOVW.js} +61 -48
  384. package/dist/cli-bundle/chunks/validate-AGOAUOVW.js.map +7 -0
  385. package/dist/cli-bundle/chunks/validate-L5J6A7YO.js +1120 -0
  386. package/dist/cli-bundle/chunks/validate-L5J6A7YO.js.map +1 -0
  387. package/dist/cli-bundle/main.js +534 -1505
  388. package/dist/cli-bundle/main.js.map +4 -4
  389. package/dist/core/checkpoint/mutation-checkpoint.d.ts +44 -0
  390. package/dist/core/checkpoint/mutation-checkpoint.js +119 -0
  391. package/dist/core/checkpoint/mutation-checkpoint.js.map +1 -0
  392. package/dist/core/config/positional-value.js +4 -2
  393. package/dist/core/config/positional-value.js.map +1 -1
  394. package/dist/core/diagnostics/remediation.d.ts +73 -0
  395. package/dist/core/diagnostics/remediation.js +328 -0
  396. package/dist/core/diagnostics/remediation.js.map +1 -0
  397. package/dist/core/extensions/extension-hook-runtime.js +9 -2
  398. package/dist/core/extensions/extension-hook-runtime.js.map +1 -1
  399. package/dist/core/extensions/extension-types.d.ts +60 -4
  400. package/dist/core/extensions/extension-types.js +2 -2
  401. package/dist/core/extensions/extension-types.js.map +1 -1
  402. package/dist/core/extensions/index.d.ts +5 -1
  403. package/dist/core/extensions/index.js +61 -2
  404. package/dist/core/extensions/index.js.map +1 -1
  405. package/dist/core/extensions/item-fields.d.ts +5 -1
  406. package/dist/core/extensions/item-fields.js +126 -4
  407. package/dist/core/extensions/item-fields.js.map +1 -1
  408. package/dist/core/extensions/loader.js +283 -8
  409. package/dist/core/extensions/loader.js.map +1 -1
  410. package/dist/core/history/history-diff.d.ts +47 -0
  411. package/dist/core/history/history-diff.js +152 -0
  412. package/dist/core/history/history-diff.js.map +1 -0
  413. package/dist/core/history/history-storage-stats.d.ts +31 -0
  414. package/dist/core/history/history-storage-stats.js +101 -0
  415. package/dist/core/history/history-storage-stats.js.map +1 -0
  416. package/dist/core/item/item-format.d.ts +3 -2
  417. package/dist/core/item/item-format.js +15 -10
  418. package/dist/core/item/item-format.js.map +1 -1
  419. package/dist/core/item/status-filter.d.ts +29 -0
  420. package/dist/core/item/status-filter.js +97 -0
  421. package/dist/core/item/status-filter.js.map +1 -0
  422. package/dist/core/item/type-registry.js +4 -2
  423. package/dist/core/item/type-registry.js.map +1 -1
  424. package/dist/core/lock/lock-gc.d.ts +46 -0
  425. package/dist/core/lock/lock-gc.js +194 -0
  426. package/dist/core/lock/lock-gc.js.map +1 -0
  427. package/dist/core/output/output.js +17 -5
  428. package/dist/core/output/output.js.map +1 -1
  429. package/dist/core/schema/item-types-file.d.ts +15 -0
  430. package/dist/core/schema/item-types-file.js +27 -2
  431. package/dist/core/schema/item-types-file.js.map +1 -1
  432. package/dist/core/schema/runtime-field-filters.js +4 -3
  433. package/dist/core/schema/runtime-field-filters.js.map +1 -1
  434. package/dist/core/schema/runtime-field-values.d.ts +1 -1
  435. package/dist/core/schema/runtime-field-values.js +10 -4
  436. package/dist/core/schema/runtime-field-values.js.map +1 -1
  437. package/dist/core/schema/runtime-schema.js +75 -2
  438. package/dist/core/schema/runtime-schema.js.map +1 -1
  439. package/dist/core/schema/status-defs-file.d.ts +113 -0
  440. package/dist/core/schema/status-defs-file.js +260 -0
  441. package/dist/core/schema/status-defs-file.js.map +1 -0
  442. package/dist/core/schema/type-workflows.d.ts +64 -0
  443. package/dist/core/schema/type-workflows.js +98 -0
  444. package/dist/core/schema/type-workflows.js.map +1 -0
  445. package/dist/core/search/cache.d.ts +3 -1
  446. package/dist/core/search/cache.js +104 -28
  447. package/dist/core/search/cache.js.map +1 -1
  448. package/dist/core/search/http-client.d.ts +2 -2
  449. package/dist/core/search/http-client.js +2 -2
  450. package/dist/core/search/http-client.js.map +1 -1
  451. package/dist/core/search/vector-stores.d.ts +1 -0
  452. package/dist/core/search/vector-stores.js +64 -14
  453. package/dist/core/search/vector-stores.js.map +1 -1
  454. package/dist/core/search/vectorization-metadata.d.ts +13 -0
  455. package/dist/core/search/vectorization-metadata.js +65 -0
  456. package/dist/core/search/vectorization-metadata.js.map +1 -0
  457. package/dist/core/shared/serial-queue.d.ts +12 -0
  458. package/dist/core/shared/serial-queue.js +43 -0
  459. package/dist/core/shared/serial-queue.js.map +1 -0
  460. package/dist/core/shared/serialization.d.ts +1 -0
  461. package/dist/core/shared/serialization.js +86 -2
  462. package/dist/core/shared/serialization.js.map +1 -1
  463. package/dist/core/store/front-matter-cache.js +14 -5
  464. package/dist/core/store/front-matter-cache.js.map +1 -1
  465. package/dist/core/store/item-store.d.ts +2 -0
  466. package/dist/core/store/item-store.js +61 -6
  467. package/dist/core/store/item-store.js.map +1 -1
  468. package/dist/core/store/settings-validator.js +18 -2
  469. package/dist/core/store/settings-validator.js.map +1 -1
  470. package/dist/core/store/settings.d.ts +19 -1
  471. package/dist/core/store/settings.js +130 -10
  472. package/dist/core/store/settings.js.map +1 -1
  473. package/dist/core/telemetry/consent.js +3 -3
  474. package/dist/core/telemetry/consent.js.map +1 -1
  475. package/dist/core/telemetry/observability.js +5 -4
  476. package/dist/core/telemetry/observability.js.map +1 -1
  477. package/dist/core/telemetry/runtime.js +16 -4
  478. package/dist/core/telemetry/runtime.js.map +1 -1
  479. package/dist/mcp/server.d.ts +1 -0
  480. package/dist/mcp/server.js +372 -45
  481. package/dist/mcp/server.js.map +1 -1
  482. package/dist/sdk/cli-contracts/commander-mutation-options.js +16 -2
  483. package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
  484. package/dist/sdk/cli-contracts/commander-types.js +7 -2
  485. package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
  486. package/dist/sdk/cli-contracts/enum-contracts.d.ts +2 -2
  487. package/dist/sdk/cli-contracts/enum-contracts.js +6 -2
  488. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  489. package/dist/sdk/cli-contracts/tool-option-contracts.d.ts +1 -0
  490. package/dist/sdk/cli-contracts/tool-option-contracts.js +53 -3
  491. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  492. package/dist/sdk/cli-contracts/tool-parameter-tables.js +42 -10
  493. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  494. package/dist/sdk/cli-contracts.d.ts +42 -1
  495. package/dist/sdk/cli-contracts.js +225 -19
  496. package/dist/sdk/cli-contracts.js.map +1 -1
  497. package/dist/sdk/errors.d.ts +22 -0
  498. package/dist/sdk/errors.js +46 -0
  499. package/dist/sdk/errors.js.map +1 -0
  500. package/dist/sdk/index.d.ts +2 -1
  501. package/dist/sdk/index.js +3 -2
  502. package/dist/sdk/index.js.map +1 -1
  503. package/dist/sdk/package-import-adapters.js +14 -3
  504. package/dist/sdk/package-import-adapters.js.map +1 -1
  505. package/dist/sdk/runtime.d.ts +1 -0
  506. package/dist/sdk/runtime.js +3 -2
  507. package/dist/sdk/runtime.js.map +1 -1
  508. package/dist/sdk/testing.d.ts +77 -0
  509. package/dist/sdk/testing.js +239 -0
  510. package/dist/sdk/testing.js.map +1 -0
  511. package/dist/types.d.ts +19 -0
  512. package/dist/types.js +3 -2
  513. package/dist/types.js.map +1 -1
  514. package/docs/AGENT_GUIDE.md +22 -3
  515. package/docs/ARCHITECTURE.md +11 -1
  516. package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
  517. package/docs/COMMANDS.md +118 -7
  518. package/docs/CONFIGURATION.md +57 -2
  519. package/docs/EXTENSIONS.md +125 -6
  520. package/docs/EXTENSION_AUTHOR_CONTRACTS.md +73 -0
  521. package/docs/ONBOARDING.md +165 -0
  522. package/docs/QUICKSTART.md +3 -1
  523. package/docs/README.md +12 -4
  524. package/docs/RELEASING.md +38 -3
  525. package/docs/SDK.md +273 -1
  526. package/docs/TESTING.md +36 -1
  527. package/docs/examples/policy-restricted-extension/manifest.json +1 -0
  528. package/docs/examples/starter-extension/index.js +9 -1
  529. package/docs/examples/starter-extension/manifest.json +1 -0
  530. package/package.json +16 -7
  531. package/packages/pm-beads/extensions/beads/index.js +2 -4
  532. package/packages/pm-beads/extensions/beads/index.ts +43 -33
  533. package/packages/pm-beads/extensions/beads/manifest.json +12 -1
  534. package/packages/pm-calendar/README.md +6 -0
  535. package/packages/pm-calendar/extensions/calendar/index.js +6 -1
  536. package/packages/pm-calendar/extensions/calendar/index.ts +6 -1
  537. package/packages/pm-calendar/extensions/calendar/manifest.json +6 -1
  538. package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +6 -1
  539. package/packages/pm-guide-shell/README.md +4 -0
  540. package/packages/pm-guide-shell/extensions/guide-shell/index.js +22 -0
  541. package/packages/pm-guide-shell/extensions/guide-shell/index.ts +22 -0
  542. package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +6 -1
  543. package/packages/pm-guide-shell/extensions/guide-shell/runtime.js +74 -3
  544. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +84 -4
  545. package/packages/pm-lifecycle-hooks/README.md +29 -0
  546. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.js +18 -0
  547. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.ts +20 -0
  548. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/manifest.json +9 -0
  549. package/packages/pm-lifecycle-hooks/package.json +52 -0
  550. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +13 -1
  551. package/packages/pm-search-advanced/extensions/search-advanced/index.js +69 -1
  552. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +91 -2
  553. package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +13 -1
  554. package/packages/pm-templates/extensions/templates/manifest.json +6 -1
  555. package/packages/pm-todos/extensions/todos/index.js +3 -7
  556. package/packages/pm-todos/extensions/todos/index.ts +55 -42
  557. package/packages/pm-todos/extensions/todos/manifest.json +13 -1
  558. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  559. package/plugins/pm-claude/README.md +7 -4
  560. package/plugins/pm-claude/agents/pm-coordinator.md +1 -1
  561. package/plugins/pm-claude/commands/pm-init.md +1 -1
  562. package/scripts/bundle-cli.mjs +121 -17
  563. package/dist/cli-bundle/chunks/activity-OWYSUZOY.js +0 -17
  564. package/dist/cli-bundle/chunks/chunk-3M73P3G6.js.map +0 -7
  565. package/dist/cli-bundle/chunks/chunk-4AEZR5EJ.js +0 -189
  566. package/dist/cli-bundle/chunks/chunk-4AEZR5EJ.js.map +0 -7
  567. package/dist/cli-bundle/chunks/chunk-5HSEP75M.js.map +0 -7
  568. package/dist/cli-bundle/chunks/chunk-6HT2F4TK.js.map +0 -7
  569. package/dist/cli-bundle/chunks/chunk-7Y53ZJIQ.js.map +0 -7
  570. package/dist/cli-bundle/chunks/chunk-BUPWJ3IJ.js.map +0 -7
  571. package/dist/cli-bundle/chunks/chunk-EGUGFSNX.js +0 -47
  572. package/dist/cli-bundle/chunks/chunk-EGUGFSNX.js.map +0 -7
  573. package/dist/cli-bundle/chunks/chunk-FM26RGSU.js +0 -56
  574. package/dist/cli-bundle/chunks/chunk-FM26RGSU.js.map +0 -7
  575. package/dist/cli-bundle/chunks/chunk-FQE6XZDB.js.map +0 -7
  576. package/dist/cli-bundle/chunks/chunk-GN7IJPCD.js.map +0 -7
  577. package/dist/cli-bundle/chunks/chunk-JTWRXG4B.js.map +0 -7
  578. package/dist/cli-bundle/chunks/chunk-JULRTHJQ.js.map +0 -7
  579. package/dist/cli-bundle/chunks/chunk-LRBOHPUE.js.map +0 -7
  580. package/dist/cli-bundle/chunks/chunk-LSXGH6NE.js.map +0 -7
  581. package/dist/cli-bundle/chunks/chunk-MD7K4JYF.js.map +0 -7
  582. package/dist/cli-bundle/chunks/chunk-OGZEG5TT.js.map +0 -7
  583. package/dist/cli-bundle/chunks/chunk-P53TN6IA.js.map +0 -7
  584. package/dist/cli-bundle/chunks/chunk-PXUAZUUY.js.map +0 -7
  585. package/dist/cli-bundle/chunks/chunk-U7FMKRXH.js.map +0 -7
  586. package/dist/cli-bundle/chunks/chunk-VGICHR7D.js +0 -141
  587. package/dist/cli-bundle/chunks/chunk-VGICHR7D.js.map +0 -7
  588. package/dist/cli-bundle/chunks/chunk-WDPXDQFG.js.map +0 -7
  589. package/dist/cli-bundle/chunks/close-XY4CSAYF.js +0 -14
  590. package/dist/cli-bundle/chunks/config-V3FZOKLI.js.map +0 -7
  591. package/dist/cli-bundle/chunks/contracts-YLMH33VU.js.map +0 -7
  592. package/dist/cli-bundle/chunks/create-PZVHRIZQ.js +0 -28
  593. package/dist/cli-bundle/chunks/gc-JWNF66EC.js +0 -181
  594. package/dist/cli-bundle/chunks/gc-JWNF66EC.js.map +0 -7
  595. package/dist/cli-bundle/chunks/get-LTK3HOCQ.js.map +0 -7
  596. package/dist/cli-bundle/chunks/health-TCWL55KM.js.map +0 -7
  597. package/dist/cli-bundle/chunks/history-A2JUDXUE.js +0 -21
  598. package/dist/cli-bundle/chunks/history-redact-ED6RFCPL.js +0 -20
  599. package/dist/cli-bundle/chunks/init-M2WUB4YH.js +0 -16
  600. package/dist/cli-bundle/chunks/list-OGWQPC26.js +0 -20
  601. package/dist/cli-bundle/chunks/register-list-query-UP3VRUFS.js.map +0 -7
  602. package/dist/cli-bundle/chunks/register-mutation-YWSBF545.js.map +0 -7
  603. package/dist/cli-bundle/chunks/register-operations-3BDTGSDH.js.map +0 -7
  604. package/dist/cli-bundle/chunks/restore-MB2ISME7.js +0 -18
  605. package/dist/cli-bundle/chunks/schema-Q622KC46.js +0 -119
  606. package/dist/cli-bundle/chunks/schema-Q622KC46.js.map +0 -7
  607. package/dist/cli-bundle/chunks/search-HENBL456.js.map +0 -7
  608. package/dist/cli-bundle/chunks/stats-N6H3YP2F.js +0 -124
  609. package/dist/cli-bundle/chunks/stats-N6H3YP2F.js.map +0 -7
  610. package/dist/cli-bundle/chunks/test-VNBDRJ4Z.js +0 -32
  611. package/dist/cli-bundle/chunks/update-H6SCWNMA.js +0 -22
  612. package/dist/cli-bundle/chunks/update-many-46HRSP2Q.js.map +0 -7
  613. package/dist/cli-bundle/chunks/validate-TMCVKIGZ.js.map +0 -7
  614. /package/dist/cli-bundle/chunks/{activity-OWYSUZOY.js.map → activity-CVXTCHYY.js.map} +0 -0
  615. /package/dist/cli-bundle/chunks/{aggregate-ADUOSFRO.js.map → aggregate-VNAHUNNF.js.map} +0 -0
  616. /package/dist/cli-bundle/chunks/{chunk-D7AOMPRH.js.map → chunk-BQHUILZS.js.map} +0 -0
  617. /package/dist/cli-bundle/chunks/{chunk-G57E5D7T.js.map → chunk-GU2ZJ2VV.js.map} +0 -0
  618. /package/dist/cli-bundle/chunks/{chunk-AKOOMO3T.js.map → chunk-KAG77BY3.js.map} +0 -0
  619. /package/dist/cli-bundle/chunks/{chunk-KBQY3YG5.js.map → chunk-KJ33AOCY.js.map} +0 -0
  620. /package/dist/cli-bundle/chunks/{chunk-WJ2NAC37.js.map → chunk-N7ACFE26.js.map} +0 -0
  621. /package/dist/cli-bundle/chunks/{chunk-PVNQLCIS.js.map → chunk-QO7EBBOM.js.map} +0 -0
  622. /package/dist/cli-bundle/chunks/{chunk-A7E7PUVX.js.map → chunk-R6UFP2GE.js.map} +0 -0
  623. /package/dist/cli-bundle/chunks/{chunk-CEFIVZPG.js.map → chunk-T3LC5LKB.js.map} +0 -0
  624. /package/dist/cli-bundle/chunks/{chunk-JFWUHHS2.js.map → chunk-UM2GBHS4.js.map} +0 -0
  625. /package/dist/cli-bundle/chunks/{chunk-SEXQN4KL.js.map → chunk-WKY2IBOQ.js.map} +0 -0
  626. /package/dist/cli-bundle/chunks/{chunk-NGN7UV5K.js.map → chunk-XLTD2HN3.js.map} +0 -0
  627. /package/dist/cli-bundle/chunks/{chunk-L2FXEKDB.js.map → chunk-YL2DJGYS.js.map} +0 -0
  628. /package/dist/cli-bundle/chunks/{close-XY4CSAYF.js.map → close-3HDWDA3L.js.map} +0 -0
  629. /package/dist/cli-bundle/chunks/{create-PZVHRIZQ.js.map → create-JTZNCTQC.js.map} +0 -0
  630. /package/dist/cli-bundle/chunks/{extension-B4WL7BQU.js.map → extension-J7IBMFTD.js.map} +0 -0
  631. /package/dist/cli-bundle/chunks/{history-A2JUDXUE.js.map → history-2BA3T5AE.js.map} +0 -0
  632. /package/dist/cli-bundle/chunks/{history-redact-ED6RFCPL.js.map → history-redact-JBZNXHGR.js.map} +0 -0
  633. /package/dist/cli-bundle/chunks/{init-M2WUB4YH.js.map → init-HIVSNX3O.js.map} +0 -0
  634. /package/dist/cli-bundle/chunks/{list-OGWQPC26.js.map → list-MUSQNMTD.js.map} +0 -0
  635. /package/dist/cli-bundle/chunks/{restore-MB2ISME7.js.map → restore-D4RGNX33.js.map} +0 -0
  636. /package/dist/cli-bundle/chunks/{test-VNBDRJ4Z.js.map → test-MXX3E5JL.js.map} +0 -0
  637. /package/dist/cli-bundle/chunks/{test-runs-GX5HTPSF.js.map → test-runs-WMVTQU3Y.js.map} +0 -0
  638. /package/dist/cli-bundle/chunks/{update-H6SCWNMA.js.map → update-YRXSUGYQ.js.map} +0 -0
@@ -0,0 +1,1704 @@
1
+
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="bc69cde3-7c0d-5ce3-a6fa-8ccd67d46d4b")}catch(e){}}();
3
+ import {
4
+ assertNoLegacyNoneToken,
5
+ assertNoLegacyNoneTokens,
6
+ ensureEnumValue,
7
+ isLegacyNoneToken,
8
+ normalizeRiskInput,
9
+ normalizeSeverityInput,
10
+ parseConfidenceInput,
11
+ parseDocs,
12
+ parseEventEntries,
13
+ parseFiles,
14
+ parseLogSeed,
15
+ parseRegressionInput,
16
+ parseReminderEntries,
17
+ parseTests,
18
+ parseTypeOptionEntries,
19
+ resolvePriority
20
+ } from "./chunk-MITFDD35.js";
21
+ import {
22
+ applyTagRemovals,
23
+ createStdinTokenResolver,
24
+ mergeAdditiveTags,
25
+ parseCsvKv,
26
+ parseOptionalNumber,
27
+ parseTags
28
+ } from "./chunk-PO3GSVFV.js";
29
+ import {
30
+ runClose
31
+ } from "./chunk-FRAUKRU2.js";
32
+ import {
33
+ normalizeParentReferenceValue,
34
+ validateMissingParentReference,
35
+ validateSprintOrReleaseValue
36
+ } from "./chunk-77GFDHGF.js";
37
+ import {
38
+ buildInvalidTypeError
39
+ } from "./chunk-6P6GGMOG.js";
40
+ import {
41
+ applyRegisteredItemFieldDefaultsAndValidation,
42
+ buildItemNotFoundError,
43
+ collectRegisteredItemFieldNames,
44
+ locateItem,
45
+ mutateItem,
46
+ parseRegisteredItemFieldAssignments,
47
+ readLocatedItem,
48
+ toItemRecord
49
+ } from "./chunk-GGYWB3Y2.js";
50
+ import {
51
+ normalizeItemId
52
+ } from "./chunk-HZGUAH22.js";
53
+ import {
54
+ collectRuntimeUpdateFieldValues,
55
+ normalizeStatusInput
56
+ } from "./chunk-LB3RUL2N.js";
57
+ import {
58
+ canonicalizeCommandOptionKey,
59
+ commandOptionFlagLabel,
60
+ resolveCommandOptionPolicyState,
61
+ resolveItemTypeRegistry,
62
+ resolveTypeDefinition,
63
+ resolveTypeName,
64
+ validateTypeOptions
65
+ } from "./chunk-2VBQ6ZXS.js";
66
+ import {
67
+ resolveIsoOrRelative
68
+ } from "./chunk-TCD3R2PF.js";
69
+ import {
70
+ DEPENDENCY_KIND_VALUES,
71
+ EXIT_CODE,
72
+ ISSUE_SEVERITY_VALUES,
73
+ PmCliError,
74
+ RISK_VALUES,
75
+ getActiveExtensionRegistrations,
76
+ getSettingsPath,
77
+ pathExists,
78
+ readSettings,
79
+ resolvePmRoot,
80
+ resolveRuntimeFieldRegistry,
81
+ resolveRuntimeStatusRegistry,
82
+ stableValueEquals
83
+ } from "./chunk-5SFCOO6B.js";
84
+
85
+ // dist/core/schema/type-workflows.js
86
+ function normalizeStatusToken(value) {
87
+ return typeof value === "string" ? value.trim().toLowerCase().replaceAll(/[\s-]+/g, "_") : "";
88
+ }
89
+ function normalizeTypeName(value) {
90
+ return typeof value === "string" ? value.trim().toLowerCase() : "";
91
+ }
92
+ function resolveStatusId(value, statusRegistry) {
93
+ const token = normalizeStatusToken(value);
94
+ if (token.length === 0) {
95
+ return "";
96
+ }
97
+ return statusRegistry?.alias_to_id?.get(token) ?? token;
98
+ }
99
+ function resolveTypeWorkflows(schema) {
100
+ const rawWorkflows = Array.isArray(schema?.type_workflows) ? schema.type_workflows : [];
101
+ const byType = /* @__PURE__ */ new Map();
102
+ for (const entry of rawWorkflows) {
103
+ const type = normalizeTypeName(entry?.type);
104
+ if (type.length === 0) {
105
+ continue;
106
+ }
107
+ if (!Array.isArray(entry?.allowed_transitions)) {
108
+ continue;
109
+ }
110
+ const pairs = entry.allowed_transitions;
111
+ const record = byType.get(type) ?? { pairs: [], denyAll: false };
112
+ if (pairs.length === 0) {
113
+ record.denyAll = true;
114
+ }
115
+ for (const pair of pairs) {
116
+ if (!Array.isArray(pair) || pair.length !== 2) {
117
+ continue;
118
+ }
119
+ const from = normalizeStatusToken(pair[0]);
120
+ const to = normalizeStatusToken(pair[1]);
121
+ if (from.length === 0 || to.length === 0) {
122
+ continue;
123
+ }
124
+ if (record.pairs.some((candidate) => candidate[0] === from && candidate[1] === to)) {
125
+ continue;
126
+ }
127
+ record.pairs.push([from, to]);
128
+ }
129
+ byType.set(type, record);
130
+ }
131
+ return [...byType.entries()].filter(([, record]) => record.pairs.length > 0 || record.denyAll).map(([type, record]) => ({ type, allowed_transitions: record.pairs })).sort((left, right) => left.type.localeCompare(right.type));
132
+ }
133
+ function evaluateTransition(input) {
134
+ const typeName = normalizeTypeName(input.typeName);
135
+ const matched = input.typeWorkflows.find((workflow) => workflow.type === typeName);
136
+ if (!matched) {
137
+ return { allowed: true, hasRule: false, allowedTransitions: [] };
138
+ }
139
+ const from = resolveStatusId(input.fromStatus, input.statusRegistry);
140
+ const to = resolveStatusId(input.toStatus, input.statusRegistry);
141
+ if (from.length > 0 && from === to) {
142
+ return { allowed: true, hasRule: true, allowedTransitions: matched.allowed_transitions };
143
+ }
144
+ const allowed = matched.allowed_transitions.some((pair) => {
145
+ const ruleFrom = resolveStatusId(pair[0], input.statusRegistry);
146
+ const ruleTo = resolveStatusId(pair[1], input.statusRegistry);
147
+ return ruleFrom === from && ruleTo === to;
148
+ });
149
+ return { allowed, hasRule: true, allowedTransitions: matched.allowed_transitions };
150
+ }
151
+ function describeAllowedTransitions(allowedTransitions) {
152
+ if (allowedTransitions.length === 0) {
153
+ return "(no transitions allowed)";
154
+ }
155
+ return allowedTransitions.map((pair) => `${pair[0]} -> ${pair[1]}`).join(", ");
156
+ }
157
+
158
+ // dist/cli/commands/update.js
159
+ var UPDATE_UNSET_FIELD_DEFINITIONS = [
160
+ { canonical: "tags", aliases: ["tags"], optionKey: "tags", frontMatterKey: "tags" },
161
+ { canonical: "close-reason", aliases: ["close_reason", "close-reason"], optionKey: "closeReason", frontMatterKey: "close_reason" },
162
+ { canonical: "deadline", aliases: ["deadline"], optionKey: "deadline", frontMatterKey: "deadline" },
163
+ {
164
+ canonical: "estimate",
165
+ aliases: ["estimate", "estimated_minutes", "estimated-minutes"],
166
+ optionKey: "estimatedMinutes",
167
+ frontMatterKey: "estimated_minutes"
168
+ },
169
+ {
170
+ canonical: "acceptance-criteria",
171
+ aliases: ["acceptance_criteria", "acceptance-criteria", "ac"],
172
+ optionKey: "acceptanceCriteria",
173
+ frontMatterKey: "acceptance_criteria"
174
+ },
175
+ {
176
+ canonical: "definition-of-ready",
177
+ aliases: ["definition_of_ready", "definition-of-ready"],
178
+ optionKey: "definitionOfReady",
179
+ frontMatterKey: "definition_of_ready"
180
+ },
181
+ { canonical: "order", aliases: ["order", "rank"], optionKey: "order", frontMatterKey: "order" },
182
+ { canonical: "goal", aliases: ["goal"], optionKey: "goal", frontMatterKey: "goal" },
183
+ { canonical: "objective", aliases: ["objective"], optionKey: "objective", frontMatterKey: "objective" },
184
+ { canonical: "value", aliases: ["value"], optionKey: "value", frontMatterKey: "value" },
185
+ { canonical: "impact", aliases: ["impact"], optionKey: "impact", frontMatterKey: "impact" },
186
+ { canonical: "outcome", aliases: ["outcome"], optionKey: "outcome", frontMatterKey: "outcome" },
187
+ { canonical: "why-now", aliases: ["why_now", "why-now"], optionKey: "whyNow", frontMatterKey: "why_now" },
188
+ { canonical: "assignee", aliases: ["assignee"], optionKey: "assignee", frontMatterKey: "assignee" },
189
+ { canonical: "parent", aliases: ["parent"], optionKey: "parent", frontMatterKey: "parent" },
190
+ { canonical: "reviewer", aliases: ["reviewer"], optionKey: "reviewer", frontMatterKey: "reviewer" },
191
+ { canonical: "risk", aliases: ["risk"], optionKey: "risk", frontMatterKey: "risk" },
192
+ { canonical: "confidence", aliases: ["confidence"], optionKey: "confidence", frontMatterKey: "confidence" },
193
+ { canonical: "sprint", aliases: ["sprint"], optionKey: "sprint", frontMatterKey: "sprint" },
194
+ { canonical: "release", aliases: ["release"], optionKey: "release", frontMatterKey: "release" },
195
+ {
196
+ canonical: "blocked-by",
197
+ aliases: ["blocked_by", "blocked-by"],
198
+ optionKey: "blockedBy",
199
+ frontMatterKey: "blocked_by"
200
+ },
201
+ {
202
+ canonical: "blocked-reason",
203
+ aliases: ["blocked_reason", "blocked-reason"],
204
+ optionKey: "blockedReason",
205
+ frontMatterKey: "blocked_reason"
206
+ },
207
+ {
208
+ canonical: "unblock-note",
209
+ aliases: ["unblock_note", "unblock-note"],
210
+ optionKey: "unblockNote",
211
+ frontMatterKey: "unblock_note"
212
+ },
213
+ { canonical: "reporter", aliases: ["reporter"], optionKey: "reporter", frontMatterKey: "reporter" },
214
+ { canonical: "severity", aliases: ["severity"], optionKey: "severity", frontMatterKey: "severity" },
215
+ {
216
+ canonical: "environment",
217
+ aliases: ["environment"],
218
+ optionKey: "environment",
219
+ frontMatterKey: "environment"
220
+ },
221
+ {
222
+ canonical: "repro-steps",
223
+ aliases: ["repro_steps", "repro-steps"],
224
+ optionKey: "reproSteps",
225
+ frontMatterKey: "repro_steps"
226
+ },
227
+ {
228
+ canonical: "resolution",
229
+ aliases: ["resolution"],
230
+ optionKey: "resolution",
231
+ frontMatterKey: "resolution"
232
+ },
233
+ {
234
+ canonical: "expected-result",
235
+ aliases: ["expected_result", "expected-result"],
236
+ optionKey: "expectedResult",
237
+ frontMatterKey: "expected_result"
238
+ },
239
+ {
240
+ canonical: "actual-result",
241
+ aliases: ["actual_result", "actual-result"],
242
+ optionKey: "actualResult",
243
+ frontMatterKey: "actual_result"
244
+ },
245
+ {
246
+ canonical: "affected-version",
247
+ aliases: ["affected_version", "affected-version"],
248
+ optionKey: "affectedVersion",
249
+ frontMatterKey: "affected_version"
250
+ },
251
+ {
252
+ canonical: "fixed-version",
253
+ aliases: ["fixed_version", "fixed-version"],
254
+ optionKey: "fixedVersion",
255
+ frontMatterKey: "fixed_version"
256
+ },
257
+ { canonical: "component", aliases: ["component"], optionKey: "component", frontMatterKey: "component" },
258
+ { canonical: "regression", aliases: ["regression"], optionKey: "regression", frontMatterKey: "regression" },
259
+ {
260
+ canonical: "customer-impact",
261
+ aliases: ["customer_impact", "customer-impact"],
262
+ optionKey: "customerImpact",
263
+ frontMatterKey: "customer_impact"
264
+ }
265
+ ];
266
+ var UPDATE_UNSET_ALIAS_MAP = (() => {
267
+ const map = /* @__PURE__ */ new Map();
268
+ for (const definition of UPDATE_UNSET_FIELD_DEFINITIONS) {
269
+ for (const alias of definition.aliases) {
270
+ map.set(alias, {
271
+ optionKey: definition.optionKey,
272
+ frontMatterKey: definition.frontMatterKey
273
+ });
274
+ }
275
+ }
276
+ return map;
277
+ })();
278
+ var UPDATE_OPTION_KEY_TO_UNSET_CANONICAL = new Map(UPDATE_UNSET_FIELD_DEFINITIONS.map((definition) => [definition.optionKey, definition.canonical]));
279
+ var UPDATE_UNSET_SUPPORTED_CANONICAL_FIELDS = UPDATE_UNSET_FIELD_DEFINITIONS.map((definition) => definition.canonical).sort((left, right) => left.localeCompare(right)).join(", ");
280
+ var AUDIT_UPDATE_DISALLOWED_UNSET_FRONT_MATTER_KEYS = /* @__PURE__ */ new Set([
281
+ "close_reason",
282
+ "assignee",
283
+ "parent",
284
+ "blocked_by",
285
+ "blocked_reason",
286
+ "unblock_note",
287
+ "dependencies",
288
+ "comments",
289
+ "notes",
290
+ "learnings",
291
+ "files",
292
+ "tests",
293
+ "docs",
294
+ "reminders",
295
+ "events"
296
+ ]);
297
+ function toAuthor(candidate, defaultAuthor) {
298
+ const resolved = candidate ?? process.env.PM_AUTHOR ?? defaultAuthor;
299
+ const trimmed = resolved.trim();
300
+ return trimmed || "unknown";
301
+ }
302
+ var UPDATE_LEGACY_NONE_COLLECTION_NORMALIZERS = [
303
+ { optionKey: "dep", clearFlagKey: "clearDeps", valueFlag: "--dep", clearFlag: "--clear-deps", disableReplaceFlagKey: "replaceDeps" },
304
+ { optionKey: "comment", clearFlagKey: "clearComments", valueFlag: "--comment", clearFlag: "--clear-comments" },
305
+ { optionKey: "note", clearFlagKey: "clearNotes", valueFlag: "--note", clearFlag: "--clear-notes" },
306
+ { optionKey: "learning", clearFlagKey: "clearLearnings", valueFlag: "--learning", clearFlag: "--clear-learnings" },
307
+ { optionKey: "file", clearFlagKey: "clearFiles", valueFlag: "--file", clearFlag: "--clear-files" },
308
+ { optionKey: "test", clearFlagKey: "clearTests", valueFlag: "--test", clearFlag: "--clear-tests", disableReplaceFlagKey: "replaceTests" },
309
+ { optionKey: "doc", clearFlagKey: "clearDocs", valueFlag: "--doc", clearFlag: "--clear-docs" },
310
+ { optionKey: "reminder", clearFlagKey: "clearReminders", valueFlag: "--reminder", clearFlag: "--clear-reminders" },
311
+ { optionKey: "event", clearFlagKey: "clearEvents", valueFlag: "--event", clearFlag: "--clear-events" },
312
+ { optionKey: "typeOption", clearFlagKey: "clearTypeOptions", valueFlag: "--type-option", clearFlag: "--clear-type-options" }
313
+ ];
314
+ function normalizeLegacyNoneUpdateOptions(options) {
315
+ const normalized = {
316
+ ...options,
317
+ unset: options.unset ? [...options.unset] : void 0
318
+ };
319
+ const appendUnsetTarget = (value) => {
320
+ const current = normalized.unset ? [...normalized.unset] : [];
321
+ if (!current.includes(value)) {
322
+ current.push(value);
323
+ }
324
+ normalized.unset = current;
325
+ };
326
+ const scalarOptionKeys = /* @__PURE__ */ new Set([...UPDATE_OPTION_KEY_TO_UNSET_CANONICAL.keys(), "rank"]);
327
+ for (const optionKey of scalarOptionKeys) {
328
+ const candidate = normalized[optionKey];
329
+ if (typeof candidate !== "string" || !isLegacyNoneToken(candidate)) {
330
+ continue;
331
+ }
332
+ const canonicalUnset = optionKey === "rank" ? "order" : UPDATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey) ?? optionKey;
333
+ appendUnsetTarget(canonicalUnset);
334
+ normalized[optionKey] = void 0;
335
+ }
336
+ for (const definition of UPDATE_LEGACY_NONE_COLLECTION_NORMALIZERS) {
337
+ const entries = normalized[definition.optionKey];
338
+ if (!Array.isArray(entries) || entries.length === 0) {
339
+ continue;
340
+ }
341
+ const hasLegacy = entries.some((entry) => isLegacyNoneToken(entry));
342
+ if (!hasLegacy) {
343
+ continue;
344
+ }
345
+ const concreteEntries = entries.filter((entry) => !isLegacyNoneToken(entry));
346
+ if (concreteEntries.length > 0) {
347
+ throw new PmCliError(`Cannot mix legacy clear token "none"/"null" with concrete ${definition.valueFlag} entries. Use ${definition.clearFlag} to clear or provide explicit entries.`, EXIT_CODE.USAGE);
348
+ }
349
+ normalized[definition.optionKey] = void 0;
350
+ normalized[definition.clearFlagKey] = true;
351
+ if (definition.disableReplaceFlagKey) {
352
+ normalized[definition.disableReplaceFlagKey] = false;
353
+ }
354
+ }
355
+ return normalized;
356
+ }
357
+ function resolveRuntimeUnsetDefinition(token, runtimeFieldRegistry) {
358
+ if (!runtimeFieldRegistry) {
359
+ return void 0;
360
+ }
361
+ for (const definition of runtimeFieldRegistry.definitions) {
362
+ if (definition.allow_unset === false) {
363
+ continue;
364
+ }
365
+ const candidates = /* @__PURE__ */ new Set([
366
+ definition.key,
367
+ definition.metadata_key,
368
+ definition.cli_flag.replaceAll("-", "_"),
369
+ definition.cli_flag,
370
+ ...definition.cli_aliases.map((alias) => alias.replaceAll("-", "_")),
371
+ ...definition.cli_aliases
372
+ ]);
373
+ if (!candidates.has(token)) {
374
+ continue;
375
+ }
376
+ return {
377
+ optionKey: definition.key,
378
+ frontMatterKey: definition.metadata_key
379
+ };
380
+ }
381
+ return void 0;
382
+ }
383
+ function parseUpdateUnsetTargets(raw, runtimeFieldRegistry, extensionFieldNames = []) {
384
+ const frontMatterKeys = /* @__PURE__ */ new Set();
385
+ const optionKeys = /* @__PURE__ */ new Set();
386
+ if (!raw || raw.length === 0) {
387
+ return { frontMatterKeys, optionKeys };
388
+ }
389
+ for (const entry of raw) {
390
+ const trimmed = entry.trim().toLowerCase();
391
+ if (!trimmed) {
392
+ throw new PmCliError("--unset values must not be empty", EXIT_CODE.USAGE);
393
+ }
394
+ if (isLegacyNoneToken(trimmed)) {
395
+ throw new PmCliError('--unset no longer accepts "none" or "null". Specify concrete field names such as --unset deadline', EXIT_CODE.USAGE);
396
+ }
397
+ const extensionFieldName = extensionFieldNames.find((fieldName) => {
398
+ const normalizedFieldName = fieldName.toLowerCase();
399
+ return normalizedFieldName === trimmed || normalizedFieldName.replaceAll("_", "-") === trimmed || normalizedFieldName.replaceAll("-", "_") === trimmed;
400
+ });
401
+ const definition = UPDATE_UNSET_ALIAS_MAP.get(trimmed) ?? resolveRuntimeUnsetDefinition(trimmed, runtimeFieldRegistry) ?? (extensionFieldName ? { optionKey: "field", frontMatterKey: extensionFieldName } : void 0);
402
+ if (!definition) {
403
+ throw new PmCliError(`Unsupported --unset field "${entry}". Supported fields: ${UPDATE_UNSET_SUPPORTED_CANONICAL_FIELDS}`, EXIT_CODE.USAGE);
404
+ }
405
+ frontMatterKeys.add(definition.frontMatterKey);
406
+ optionKeys.add(definition.optionKey);
407
+ }
408
+ return { frontMatterKeys, optionKeys };
409
+ }
410
+ function enforceAllowAuditUpdateScope(options, clearFrontMatterKeys) {
411
+ const allowAuditUpdate = options.allowAuditUpdate === true;
412
+ const allowAuditDepUpdate = options.allowAuditDepUpdate === true;
413
+ if (!allowAuditUpdate && !allowAuditDepUpdate) {
414
+ return;
415
+ }
416
+ if (allowAuditUpdate && allowAuditDepUpdate) {
417
+ throw new PmCliError("Choose either --allow-audit-update or --allow-audit-dep-update; these override modes are mutually exclusive.", EXIT_CODE.USAGE);
418
+ }
419
+ const pushIf = (condition, flag, list) => {
420
+ if (condition) {
421
+ list.push(flag);
422
+ }
423
+ };
424
+ if (allowAuditDepUpdate) {
425
+ const disallowedFlags2 = [];
426
+ pushIf(options.title !== void 0, "--title", disallowedFlags2);
427
+ pushIf(options.description !== void 0, "--description", disallowedFlags2);
428
+ pushIf(options.body !== void 0, "--body", disallowedFlags2);
429
+ pushIf(options.status !== void 0, "--status", disallowedFlags2);
430
+ pushIf(options.closeReason !== void 0, "--close-reason", disallowedFlags2);
431
+ pushIf(options.priority !== void 0, "--priority", disallowedFlags2);
432
+ pushIf(options.type !== void 0, "--type", disallowedFlags2);
433
+ pushIf(options.tags !== void 0, "--tags", disallowedFlags2);
434
+ pushIf(Array.isArray(options.addTags) && options.addTags.length > 0, "--add-tags", disallowedFlags2);
435
+ pushIf(Array.isArray(options.removeTags) && options.removeTags.length > 0, "--remove-tags", disallowedFlags2);
436
+ pushIf(options.deadline !== void 0, "--deadline", disallowedFlags2);
437
+ pushIf(options.estimatedMinutes !== void 0, "--estimate", disallowedFlags2);
438
+ pushIf(options.acceptanceCriteria !== void 0, "--acceptance-criteria", disallowedFlags2);
439
+ pushIf(options.definitionOfReady !== void 0, "--definition-of-ready", disallowedFlags2);
440
+ pushIf(options.order !== void 0 || options.rank !== void 0, "--order/--rank", disallowedFlags2);
441
+ pushIf(options.goal !== void 0, "--goal", disallowedFlags2);
442
+ pushIf(options.objective !== void 0, "--objective", disallowedFlags2);
443
+ pushIf(options.value !== void 0, "--value", disallowedFlags2);
444
+ pushIf(options.impact !== void 0, "--impact", disallowedFlags2);
445
+ pushIf(options.outcome !== void 0, "--outcome", disallowedFlags2);
446
+ pushIf(options.whyNow !== void 0, "--why-now", disallowedFlags2);
447
+ pushIf(options.assignee !== void 0, "--assignee", disallowedFlags2);
448
+ pushIf(options.parent !== void 0, "--parent", disallowedFlags2);
449
+ pushIf(options.reviewer !== void 0, "--reviewer", disallowedFlags2);
450
+ pushIf(options.risk !== void 0, "--risk", disallowedFlags2);
451
+ pushIf(options.confidence !== void 0, "--confidence", disallowedFlags2);
452
+ pushIf(options.sprint !== void 0, "--sprint", disallowedFlags2);
453
+ pushIf(options.release !== void 0, "--release", disallowedFlags2);
454
+ pushIf(options.blockedBy !== void 0, "--blocked-by", disallowedFlags2);
455
+ pushIf(options.blockedReason !== void 0, "--blocked-reason", disallowedFlags2);
456
+ pushIf(options.unblockNote !== void 0, "--unblock-note", disallowedFlags2);
457
+ pushIf(options.reporter !== void 0, "--reporter", disallowedFlags2);
458
+ pushIf(options.severity !== void 0, "--severity", disallowedFlags2);
459
+ pushIf(options.environment !== void 0, "--environment", disallowedFlags2);
460
+ pushIf(options.reproSteps !== void 0, "--repro-steps", disallowedFlags2);
461
+ pushIf(options.resolution !== void 0, "--resolution", disallowedFlags2);
462
+ pushIf(options.expectedResult !== void 0, "--expected-result", disallowedFlags2);
463
+ pushIf(options.actualResult !== void 0, "--actual-result", disallowedFlags2);
464
+ pushIf(options.affectedVersion !== void 0, "--affected-version", disallowedFlags2);
465
+ pushIf(options.fixedVersion !== void 0, "--fixed-version", disallowedFlags2);
466
+ pushIf(options.component !== void 0, "--component", disallowedFlags2);
467
+ pushIf(options.regression !== void 0, "--regression", disallowedFlags2);
468
+ pushIf(options.customerImpact !== void 0, "--customer-impact", disallowedFlags2);
469
+ pushIf(options.depRemove !== void 0, "--dep-remove", disallowedFlags2);
470
+ pushIf(options.replaceDeps === true, "--replace-deps", disallowedFlags2);
471
+ pushIf(options.replaceTests === true, "--replace-tests", disallowedFlags2);
472
+ pushIf(options.comment !== void 0, "--comment", disallowedFlags2);
473
+ pushIf(options.note !== void 0, "--note", disallowedFlags2);
474
+ pushIf(options.learning !== void 0, "--learning", disallowedFlags2);
475
+ pushIf(options.file !== void 0, "--file", disallowedFlags2);
476
+ pushIf(options.test !== void 0, "--test", disallowedFlags2);
477
+ pushIf(options.doc !== void 0, "--doc", disallowedFlags2);
478
+ pushIf(options.reminder !== void 0, "--reminder", disallowedFlags2);
479
+ pushIf(options.event !== void 0, "--event", disallowedFlags2);
480
+ pushIf(options.typeOption !== void 0, "--type-option", disallowedFlags2);
481
+ pushIf(options.clearDeps === true, "--clear-deps", disallowedFlags2);
482
+ pushIf(options.clearComments === true, "--clear-comments", disallowedFlags2);
483
+ pushIf(options.clearNotes === true, "--clear-notes", disallowedFlags2);
484
+ pushIf(options.clearLearnings === true, "--clear-learnings", disallowedFlags2);
485
+ pushIf(options.clearFiles === true, "--clear-files", disallowedFlags2);
486
+ pushIf(options.clearTests === true, "--clear-tests", disallowedFlags2);
487
+ pushIf(options.clearDocs === true, "--clear-docs", disallowedFlags2);
488
+ pushIf(options.clearReminders === true, "--clear-reminders", disallowedFlags2);
489
+ pushIf(options.clearEvents === true, "--clear-events", disallowedFlags2);
490
+ pushIf(options.clearTypeOptions === true, "--clear-type-options", disallowedFlags2);
491
+ pushIf(options.force === true, "--force", disallowedFlags2);
492
+ pushIf(clearFrontMatterKeys.size > 0, "--unset", disallowedFlags2);
493
+ if (options.dep === void 0 || options.dep.length === 0) {
494
+ throw new PmCliError("--allow-audit-dep-update requires at least one --dep value", EXIT_CODE.USAGE);
495
+ }
496
+ if (disallowedFlags2.length > 0) {
497
+ throw new PmCliError(`--allow-audit-dep-update supports append-only dependency additions via --dep. Remove restricted options: ${disallowedFlags2.join(", ")}`, EXIT_CODE.USAGE);
498
+ }
499
+ return;
500
+ }
501
+ const disallowedFlags = [];
502
+ if (options.status !== void 0) {
503
+ disallowedFlags.push("--status");
504
+ }
505
+ if (options.closeReason !== void 0) {
506
+ disallowedFlags.push("--close-reason");
507
+ }
508
+ if (options.assignee !== void 0) {
509
+ disallowedFlags.push("--assignee");
510
+ }
511
+ if (options.parent !== void 0) {
512
+ disallowedFlags.push("--parent");
513
+ }
514
+ if (options.blockedBy !== void 0) {
515
+ disallowedFlags.push("--blocked-by");
516
+ }
517
+ if (options.blockedReason !== void 0) {
518
+ disallowedFlags.push("--blocked-reason");
519
+ }
520
+ if (options.unblockNote !== void 0) {
521
+ disallowedFlags.push("--unblock-note");
522
+ }
523
+ if (options.dep !== void 0) {
524
+ disallowedFlags.push("--dep");
525
+ }
526
+ if (options.depRemove !== void 0) {
527
+ disallowedFlags.push("--dep-remove");
528
+ }
529
+ if (options.replaceDeps === true) {
530
+ disallowedFlags.push("--replace-deps");
531
+ }
532
+ if (options.replaceTests === true) {
533
+ disallowedFlags.push("--replace-tests");
534
+ }
535
+ if (options.comment !== void 0) {
536
+ disallowedFlags.push("--comment");
537
+ }
538
+ if (options.note !== void 0) {
539
+ disallowedFlags.push("--note");
540
+ }
541
+ if (options.learning !== void 0) {
542
+ disallowedFlags.push("--learning");
543
+ }
544
+ if (options.file !== void 0) {
545
+ disallowedFlags.push("--file");
546
+ }
547
+ if (options.test !== void 0) {
548
+ disallowedFlags.push("--test");
549
+ }
550
+ if (options.doc !== void 0) {
551
+ disallowedFlags.push("--doc");
552
+ }
553
+ if (options.reminder !== void 0) {
554
+ disallowedFlags.push("--reminder");
555
+ }
556
+ if (options.event !== void 0) {
557
+ disallowedFlags.push("--event");
558
+ }
559
+ if (options.clearDeps === true) {
560
+ disallowedFlags.push("--clear-deps");
561
+ }
562
+ if (options.clearComments === true) {
563
+ disallowedFlags.push("--clear-comments");
564
+ }
565
+ if (options.clearNotes === true) {
566
+ disallowedFlags.push("--clear-notes");
567
+ }
568
+ if (options.clearLearnings === true) {
569
+ disallowedFlags.push("--clear-learnings");
570
+ }
571
+ if (options.clearFiles === true) {
572
+ disallowedFlags.push("--clear-files");
573
+ }
574
+ if (options.clearTests === true) {
575
+ disallowedFlags.push("--clear-tests");
576
+ }
577
+ if (options.clearDocs === true) {
578
+ disallowedFlags.push("--clear-docs");
579
+ }
580
+ if (options.clearReminders === true) {
581
+ disallowedFlags.push("--clear-reminders");
582
+ }
583
+ if (options.clearEvents === true) {
584
+ disallowedFlags.push("--clear-events");
585
+ }
586
+ const disallowedUnset = [...clearFrontMatterKeys].filter((field) => AUDIT_UPDATE_DISALLOWED_UNSET_FRONT_MATTER_KEYS.has(field)).sort((left, right) => left.localeCompare(right)).map((field) => `--unset ${field.replaceAll("_", "-")}`);
587
+ disallowedFlags.push(...disallowedUnset);
588
+ if (disallowedFlags.length > 0) {
589
+ throw new PmCliError(`--allow-audit-update only supports non-lifecycle metadata fields. Remove restricted options: ${disallowedFlags.join(", ")}`, EXIT_CODE.USAGE);
590
+ }
591
+ }
592
+ function parseStatus(value, statusRegistry) {
593
+ const normalized = normalizeStatusInput(value, statusRegistry);
594
+ if (!normalized) {
595
+ const allowedStatuses = statusRegistry.definitions.map((definition) => definition.id);
596
+ throw new PmCliError(`Invalid --status value "${value}". Allowed: ${allowedStatuses.join(", ")}`, EXIT_CODE.USAGE);
597
+ }
598
+ return normalized;
599
+ }
600
+ function enforceTypeWorkflowTransition(params) {
601
+ if (params.enforcement === "off" || params.typeWorkflows.length === 0) {
602
+ return void 0;
603
+ }
604
+ const result = evaluateTransition({
605
+ typeName: params.typeName,
606
+ fromStatus: params.fromStatus,
607
+ toStatus: params.toStatus,
608
+ typeWorkflows: params.typeWorkflows,
609
+ statusRegistry: params.statusRegistry
610
+ });
611
+ if (!result.hasRule || result.allowed) {
612
+ return void 0;
613
+ }
614
+ const normalizedFrom = normalizeStatusInput(params.fromStatus, params.statusRegistry) ?? params.fromStatus;
615
+ const normalizedTo = normalizeStatusInput(params.toStatus, params.statusRegistry) ?? params.toStatus;
616
+ const message = `Disallowed transition for type "${params.typeName}": ${normalizedFrom} -> ${normalizedTo}. Allowed transitions: ${describeAllowedTransitions(result.allowedTransitions)}.`;
617
+ if (params.enforcement === "strict") {
618
+ throw new PmCliError(message, EXIT_CODE.USAGE);
619
+ }
620
+ return `workflow_transition_not_allowed: ${message}`;
621
+ }
622
+ function parseDependencyCreatedAt(value, currentIso) {
623
+ if (!value || value.trim() === "" || value.trim().toLowerCase() === "now") {
624
+ return currentIso;
625
+ }
626
+ const parsed = Date.parse(value);
627
+ if (!Number.isFinite(parsed)) {
628
+ throw new PmCliError(`Invalid dependency created_at timestamp "${value}"`, EXIT_CODE.USAGE);
629
+ }
630
+ return new Date(parsed).toISOString();
631
+ }
632
+ function parseOptionalDependencyString(value) {
633
+ if (value === void 0)
634
+ return void 0;
635
+ const trimmed = value.trim();
636
+ return trimmed.length > 0 ? trimmed : void 0;
637
+ }
638
+ function looksLikeStructuredDependencyEntry(raw) {
639
+ if (raw.startsWith("```") || raw.includes("\n")) {
640
+ return true;
641
+ }
642
+ return /^(?:[-*+]\s+)?(?:id|kind|type|author|created_at|source_kind)\s*[:=]/i.test(raw);
643
+ }
644
+ var DEPENDENCY_KIND_INPUT_ALIASES = {
645
+ "blocked-by": "blocked_by",
646
+ depends_on: "blocked_by",
647
+ "depends-on": "blocked_by"
648
+ };
649
+ function normalizeDependencyKindInput(raw) {
650
+ if (typeof raw !== "string") {
651
+ return raw;
652
+ }
653
+ const trimmed = raw.trim();
654
+ const alias = DEPENDENCY_KIND_INPUT_ALIASES[trimmed.toLowerCase()];
655
+ return alias ?? trimmed;
656
+ }
657
+ function parseDependencyAdditions(raw, prefix, nowIso) {
658
+ if (!raw) {
659
+ return { additions: [] };
660
+ }
661
+ assertNoLegacyNoneTokens(raw, "--dep", "Use --clear-deps to clear dependencies.");
662
+ const additions = raw.map((entry) => {
663
+ const trimmedEntry = entry.trim();
664
+ const kv = looksLikeStructuredDependencyEntry(trimmedEntry) ? parseCsvKv(entry, "--dep") : { id: trimmedEntry, kind: "related" };
665
+ const id = kv.id?.trim();
666
+ const kind = normalizeDependencyKindInput((kv.kind ?? kv.type)?.trim());
667
+ if (!id || !kind) {
668
+ throw new PmCliError("--dep requires id and kind, or a bare item id to add a related dependency", EXIT_CODE.USAGE);
669
+ }
670
+ if (id.toLowerCase() === "undefined") {
671
+ throw new PmCliError(`--dep id must not use placeholder token "${id}". Use --clear-deps to clear dependencies.`, EXIT_CODE.USAGE);
672
+ }
673
+ const sourceKind = parseOptionalDependencyString(kv.source_kind);
674
+ return {
675
+ id: normalizeItemId(id, prefix),
676
+ kind: ensureEnumValue(kind, DEPENDENCY_KIND_VALUES, "dependency kind"),
677
+ created_at: parseDependencyCreatedAt(kv.created_at, nowIso),
678
+ author: parseOptionalDependencyString(kv.author),
679
+ source_kind: sourceKind
680
+ };
681
+ });
682
+ return { additions };
683
+ }
684
+ function parseDependencyRemovals(raw, prefix) {
685
+ if (!raw) {
686
+ return [];
687
+ }
688
+ assertNoLegacyNoneTokens(raw, "--dep-remove");
689
+ return raw.map((entry) => {
690
+ const trimmed = entry.trim();
691
+ if (!trimmed) {
692
+ throw new PmCliError("--dep-remove requires id or key/value selectors", EXIT_CODE.USAGE);
693
+ }
694
+ if (trimmed.includes("=") || /^(?:[-*+]\s+)?(?:id|kind|type|source_kind)\s*[:=]/i.test(trimmed) || trimmed.startsWith("```")) {
695
+ const kv = parseCsvKv(trimmed, "--dep-remove");
696
+ const idRaw = kv.id?.trim();
697
+ if (!idRaw) {
698
+ throw new PmCliError("--dep-remove key/value form requires id=<value>", EXIT_CODE.USAGE);
699
+ }
700
+ if (idRaw.toLowerCase() === "undefined") {
701
+ throw new PmCliError(`--dep-remove id must not use placeholder token "${idRaw}"`, EXIT_CODE.USAGE);
702
+ }
703
+ const kindRaw = normalizeDependencyKindInput(parseOptionalDependencyString(kv.kind ?? kv.type));
704
+ const sourceKind = parseOptionalDependencyString(kv.source_kind);
705
+ return {
706
+ id: normalizeItemId(idRaw, prefix),
707
+ kind: kindRaw ? ensureEnumValue(kindRaw, DEPENDENCY_KIND_VALUES, "dependency kind") : void 0,
708
+ source_kind: sourceKind
709
+ };
710
+ }
711
+ if (trimmed.toLowerCase() === "undefined") {
712
+ throw new PmCliError(`--dep-remove id must not use placeholder token "${trimmed}"`, EXIT_CODE.USAGE);
713
+ }
714
+ return {
715
+ id: normalizeItemId(trimmed, prefix)
716
+ };
717
+ });
718
+ }
719
+ function dependencyKey(value) {
720
+ return `${value.id}::${value.kind}::${value.source_kind ?? ""}`;
721
+ }
722
+ function reconcileBlockedByDependency(current, nextBlockedById, nowIsoValue, author) {
723
+ let next = [...current ?? []];
724
+ let changed = false;
725
+ const filtered = next.filter((dep) => dep.kind !== "blocked_by" || dep.id === nextBlockedById);
726
+ if (filtered.length !== next.length) {
727
+ next = filtered;
728
+ changed = true;
729
+ }
730
+ if (nextBlockedById && !next.some((dep) => dep.kind === "blocked_by" && dep.id === nextBlockedById)) {
731
+ next.push({ id: nextBlockedById, kind: "blocked_by", created_at: nowIsoValue, author });
732
+ changed = true;
733
+ }
734
+ if (!changed) {
735
+ return { dependencies: current, changed: false };
736
+ }
737
+ return { dependencies: next.length > 0 ? next : void 0, changed: true };
738
+ }
739
+ async function resolveBlockedByDependencyTarget(blockedByOption, blockedByCleared, pmRoot, idPrefix, itemFormat, typeToFolder) {
740
+ if (blockedByOption === void 0 || blockedByCleared) {
741
+ return {};
742
+ }
743
+ const blockedByValue = blockedByOption.trim();
744
+ if (blockedByValue.length === 0) {
745
+ return {};
746
+ }
747
+ const located = await locateItem(pmRoot, normalizeItemId(blockedByValue, idPrefix), idPrefix, itemFormat, typeToFolder);
748
+ return located ? { id: located.id } : { unresolved: blockedByValue };
749
+ }
750
+ function applyBlockedByDependencyEdge(metadata, resolvedBlockedById, nowIsoValue, author, changedFields) {
751
+ const reconciled = reconcileBlockedByDependency(metadata.dependencies, resolvedBlockedById, nowIsoValue, author);
752
+ if (!reconciled.changed) {
753
+ return;
754
+ }
755
+ if (reconciled.dependencies === void 0) {
756
+ delete metadata.dependencies;
757
+ } else {
758
+ metadata.dependencies = reconciled.dependencies;
759
+ }
760
+ if (!changedFields.includes("dependencies")) {
761
+ changedFields.push("dependencies");
762
+ }
763
+ }
764
+ function fileKey(value) {
765
+ return `${value.path}::${value.scope}`;
766
+ }
767
+ function docKey(value) {
768
+ return `${value.path}::${value.scope}`;
769
+ }
770
+ function testKey(value) {
771
+ return `${value.command}::${value.path ?? ""}::${value.scope}::${value.pm_context_mode ?? ""}`;
772
+ }
773
+ function matchesDependencySelector(value, selector) {
774
+ if (value.id !== selector.id) {
775
+ return false;
776
+ }
777
+ if (selector.kind && value.kind !== selector.kind) {
778
+ return false;
779
+ }
780
+ if (selector.source_kind !== void 0 && (value.source_kind ?? void 0) !== selector.source_kind) {
781
+ return false;
782
+ }
783
+ return true;
784
+ }
785
+ function ensurePriority(raw) {
786
+ return resolvePriority(raw);
787
+ }
788
+ function normalizeUpdatePolicyOptionKey(raw, typeName) {
789
+ const canonical = canonicalizeCommandOptionKey("update", raw);
790
+ if (!canonical) {
791
+ throw new PmCliError(`Unsupported command_option_policies option "${raw}" for update command on type "${typeName}"`, EXIT_CODE.CONFLICT);
792
+ }
793
+ return canonical;
794
+ }
795
+ function collectProvidedUpdatePolicyOptions(options, extensionFieldNames) {
796
+ const provided = /* @__PURE__ */ new Set();
797
+ const mark = (optionKey, isProvided) => {
798
+ if (isProvided) {
799
+ provided.add(optionKey);
800
+ }
801
+ };
802
+ mark("title", options.title !== void 0);
803
+ mark("description", options.description !== void 0);
804
+ mark("body", options.body !== void 0);
805
+ mark("status", options.status !== void 0);
806
+ mark("closeReason", options.closeReason !== void 0);
807
+ mark("priority", options.priority !== void 0);
808
+ mark("type", options.type !== void 0);
809
+ mark("tags", options.tags !== void 0 || Array.isArray(options.addTags) && options.addTags.length > 0 || Array.isArray(options.removeTags) && options.removeTags.length > 0);
810
+ mark("deadline", options.deadline !== void 0);
811
+ mark("estimatedMinutes", options.estimatedMinutes !== void 0);
812
+ mark("acceptanceCriteria", options.acceptanceCriteria !== void 0);
813
+ mark("definitionOfReady", options.definitionOfReady !== void 0);
814
+ mark("order", options.order !== void 0 || options.rank !== void 0);
815
+ mark("goal", options.goal !== void 0);
816
+ mark("objective", options.objective !== void 0);
817
+ mark("value", options.value !== void 0);
818
+ mark("impact", options.impact !== void 0);
819
+ mark("outcome", options.outcome !== void 0);
820
+ mark("whyNow", options.whyNow !== void 0);
821
+ mark("author", options.author !== void 0);
822
+ mark("message", options.message !== void 0);
823
+ mark("assignee", options.assignee !== void 0);
824
+ mark("parent", options.parent !== void 0);
825
+ mark("reviewer", options.reviewer !== void 0);
826
+ mark("risk", options.risk !== void 0);
827
+ mark("confidence", options.confidence !== void 0);
828
+ mark("sprint", options.sprint !== void 0);
829
+ mark("release", options.release !== void 0);
830
+ mark("blockedBy", options.blockedBy !== void 0);
831
+ mark("blockedReason", options.blockedReason !== void 0);
832
+ mark("unblockNote", options.unblockNote !== void 0);
833
+ mark("reporter", options.reporter !== void 0);
834
+ mark("severity", options.severity !== void 0);
835
+ mark("environment", options.environment !== void 0);
836
+ mark("reproSteps", options.reproSteps !== void 0);
837
+ mark("resolution", options.resolution !== void 0);
838
+ mark("expectedResult", options.expectedResult !== void 0);
839
+ mark("actualResult", options.actualResult !== void 0);
840
+ mark("affectedVersion", options.affectedVersion !== void 0);
841
+ mark("fixedVersion", options.fixedVersion !== void 0);
842
+ mark("component", options.component !== void 0);
843
+ mark("regression", options.regression !== void 0);
844
+ mark("customerImpact", options.customerImpact !== void 0);
845
+ mark("dep", options.dep !== void 0);
846
+ mark("depRemove", options.depRemove !== void 0);
847
+ mark("dep", options.replaceDeps === true);
848
+ mark("comment", options.comment !== void 0);
849
+ mark("note", options.note !== void 0);
850
+ mark("learning", options.learning !== void 0);
851
+ mark("file", options.file !== void 0);
852
+ mark("test", options.test !== void 0);
853
+ mark("test", options.replaceTests === true);
854
+ mark("doc", options.doc !== void 0);
855
+ mark("reminder", options.reminder !== void 0);
856
+ mark("event", options.event !== void 0);
857
+ mark("typeOption", options.typeOption !== void 0);
858
+ mark("field", options.field !== void 0);
859
+ mark("force", options.force === true);
860
+ mark("allowAuditUpdate", options.allowAuditUpdate === true);
861
+ mark("dep", options.clearDeps === true);
862
+ mark("comment", options.clearComments === true);
863
+ mark("note", options.clearNotes === true);
864
+ mark("learning", options.clearLearnings === true);
865
+ mark("file", options.clearFiles === true);
866
+ mark("test", options.clearTests === true);
867
+ mark("doc", options.clearDocs === true);
868
+ mark("reminder", options.clearReminders === true);
869
+ mark("event", options.clearEvents === true);
870
+ mark("typeOption", options.clearTypeOptions === true);
871
+ if (options.unset && options.unset.length > 0) {
872
+ const unsetTargets = parseUpdateUnsetTargets(options.unset, void 0, extensionFieldNames);
873
+ for (const optionKey of unsetTargets.optionKeys) {
874
+ mark(optionKey, true);
875
+ }
876
+ }
877
+ return provided;
878
+ }
879
+ function enforceUpdateOptionsByType(typeName, options, typeRegistry, extensionFieldNames) {
880
+ const typeDefinition = resolveTypeDefinition(typeName, typeRegistry);
881
+ if (!typeDefinition) {
882
+ throw new PmCliError(`Invalid type value "${typeName}"`, EXIT_CODE.USAGE);
883
+ }
884
+ const policyState = resolveCommandOptionPolicyState(typeDefinition, "update", []);
885
+ if (policyState.errors.length > 0) {
886
+ throw new PmCliError(policyState.errors.join("; "), EXIT_CODE.CONFLICT);
887
+ }
888
+ const provided = collectProvidedUpdatePolicyOptions(options, extensionFieldNames);
889
+ for (const disabled of policyState.disabled) {
890
+ if (provided.has(normalizeUpdatePolicyOptionKey(disabled, typeName))) {
891
+ throw new PmCliError(`Option ${commandOptionFlagLabel("update", disabled)} is disabled for type "${typeName}" by command_option_policies`, EXIT_CODE.USAGE);
892
+ }
893
+ }
894
+ for (const required of policyState.required) {
895
+ if (!provided.has(normalizeUpdatePolicyOptionKey(required, typeName))) {
896
+ throw new PmCliError(`Missing required option ${commandOptionFlagLabel("update", required)} for type "${typeName}"`, EXIT_CODE.USAGE);
897
+ }
898
+ }
899
+ }
900
+ async function runUpdate(id, options, global) {
901
+ const stdinResolver = createStdinTokenResolver();
902
+ options = normalizeLegacyNoneUpdateOptions({
903
+ ...options,
904
+ body: await stdinResolver.resolveValue(options.body, "--body"),
905
+ dep: await stdinResolver.resolveList(options.dep, "--dep"),
906
+ depRemove: await stdinResolver.resolveList(options.depRemove, "--dep-remove"),
907
+ comment: await stdinResolver.resolveList(options.comment, "--comment"),
908
+ note: await stdinResolver.resolveList(options.note, "--note"),
909
+ learning: await stdinResolver.resolveList(options.learning, "--learning"),
910
+ file: await stdinResolver.resolveList(options.file, "--file"),
911
+ test: await stdinResolver.resolveList(options.test, "--test"),
912
+ doc: await stdinResolver.resolveList(options.doc, "--doc"),
913
+ reminder: await stdinResolver.resolveList(options.reminder, "--reminder"),
914
+ event: await stdinResolver.resolveList(options.event, "--event"),
915
+ typeOption: await stdinResolver.resolveList(options.typeOption, "--type-option"),
916
+ field: await stdinResolver.resolveList(options.field, "--field")
917
+ });
918
+ const pmRoot = resolvePmRoot(process.cwd(), global.path);
919
+ if (!await pathExists(getSettingsPath(pmRoot))) {
920
+ throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
921
+ }
922
+ const settings = await readSettings(pmRoot);
923
+ const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
924
+ const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);
925
+ const extensionRegistrations = getActiveExtensionRegistrations();
926
+ const extensionFieldNames = collectRegisteredItemFieldNames(extensionRegistrations);
927
+ const typeRegistry = resolveItemTypeRegistry(settings, extensionRegistrations);
928
+ const workflowEnforcement = settings.governance.workflow_enforcement ?? "off";
929
+ const typeWorkflows = workflowEnforcement === "off" ? [] : resolveTypeWorkflows(settings.schema);
930
+ const parentReferencePolicy = settings.validation.parent_reference;
931
+ const sprintReleasePolicy = settings.validation.sprint_release_format;
932
+ const unsetTargets = parseUpdateUnsetTargets(options.unset, runtimeFieldRegistry, extensionFieldNames);
933
+ const clearOptionKeys = new Set(unsetTargets.optionKeys);
934
+ const clearFrontMatterKeys = new Set(unsetTargets.frontMatterKeys);
935
+ const clearCollectionDefinitions = [
936
+ {
937
+ enabled: options.clearDeps || options.replaceDeps,
938
+ optionKey: "dep",
939
+ clearFlag: "--clear-deps",
940
+ valueFlag: "--dep",
941
+ values: options.dep,
942
+ frontMatterKey: "dependencies"
943
+ },
944
+ {
945
+ enabled: options.clearComments,
946
+ optionKey: "comment",
947
+ clearFlag: "--clear-comments",
948
+ valueFlag: "--comment",
949
+ values: options.comment,
950
+ frontMatterKey: "comments"
951
+ },
952
+ {
953
+ enabled: options.clearNotes,
954
+ optionKey: "note",
955
+ clearFlag: "--clear-notes",
956
+ valueFlag: "--note",
957
+ values: options.note,
958
+ frontMatterKey: "notes"
959
+ },
960
+ {
961
+ enabled: options.clearLearnings,
962
+ optionKey: "learning",
963
+ clearFlag: "--clear-learnings",
964
+ valueFlag: "--learning",
965
+ values: options.learning,
966
+ frontMatterKey: "learnings"
967
+ },
968
+ {
969
+ enabled: options.clearFiles,
970
+ optionKey: "file",
971
+ clearFlag: "--clear-files",
972
+ valueFlag: "--file",
973
+ values: options.file,
974
+ frontMatterKey: "files"
975
+ },
976
+ {
977
+ enabled: options.clearTests || options.replaceTests,
978
+ optionKey: "test",
979
+ clearFlag: "--clear-tests",
980
+ valueFlag: "--test",
981
+ values: options.test,
982
+ frontMatterKey: "tests"
983
+ },
984
+ {
985
+ enabled: options.clearDocs,
986
+ optionKey: "doc",
987
+ clearFlag: "--clear-docs",
988
+ valueFlag: "--doc",
989
+ values: options.doc,
990
+ frontMatterKey: "docs"
991
+ },
992
+ {
993
+ enabled: options.clearReminders,
994
+ optionKey: "reminder",
995
+ clearFlag: "--clear-reminders",
996
+ valueFlag: "--reminder",
997
+ values: options.reminder,
998
+ frontMatterKey: "reminders"
999
+ },
1000
+ {
1001
+ enabled: options.clearEvents,
1002
+ optionKey: "event",
1003
+ clearFlag: "--clear-events",
1004
+ valueFlag: "--event",
1005
+ values: options.event,
1006
+ frontMatterKey: "events"
1007
+ },
1008
+ {
1009
+ enabled: options.clearTypeOptions,
1010
+ optionKey: "typeOption",
1011
+ clearFlag: "--clear-type-options",
1012
+ valueFlag: "--type-option",
1013
+ values: options.typeOption,
1014
+ frontMatterKey: "type_options"
1015
+ }
1016
+ ];
1017
+ if (options.replaceDeps === true && (options.dep === void 0 || options.dep.length === 0)) {
1018
+ throw new PmCliError("--replace-deps requires at least one --dep entry", EXIT_CODE.USAGE);
1019
+ }
1020
+ if (options.replaceDeps === true && options.depRemove !== void 0 && options.depRemove.length > 0) {
1021
+ throw new PmCliError("--replace-deps cannot be combined with --dep-remove", EXIT_CODE.USAGE);
1022
+ }
1023
+ if (options.replaceTests === true && (options.test === void 0 || options.test.length === 0)) {
1024
+ throw new PmCliError("--replace-tests requires at least one --test entry", EXIT_CODE.USAGE);
1025
+ }
1026
+ if (options.replaceTests === true && options.clearTests === true) {
1027
+ throw new PmCliError("--replace-tests cannot be combined with --clear-tests", EXIT_CODE.USAGE);
1028
+ }
1029
+ for (const definition of clearCollectionDefinitions) {
1030
+ if (!definition.enabled) {
1031
+ continue;
1032
+ }
1033
+ if (definition.values && definition.values.length > 0 && !(definition.optionKey === "dep" && options.replaceDeps === true || definition.optionKey === "test" && options.replaceTests === true)) {
1034
+ throw new PmCliError(`Cannot combine ${definition.clearFlag} with ${definition.valueFlag}`, EXIT_CODE.USAGE);
1035
+ }
1036
+ clearOptionKeys.add(definition.optionKey);
1037
+ clearFrontMatterKeys.add(definition.frontMatterKey);
1038
+ }
1039
+ enforceAllowAuditUpdateScope(options, clearFrontMatterKeys);
1040
+ const scalarOptionPresence = {
1041
+ tags: options.tags !== void 0,
1042
+ closeReason: options.closeReason !== void 0,
1043
+ deadline: options.deadline !== void 0,
1044
+ estimatedMinutes: options.estimatedMinutes !== void 0,
1045
+ acceptanceCriteria: options.acceptanceCriteria !== void 0,
1046
+ definitionOfReady: options.definitionOfReady !== void 0,
1047
+ order: options.order !== void 0 || options.rank !== void 0,
1048
+ goal: options.goal !== void 0,
1049
+ objective: options.objective !== void 0,
1050
+ value: options.value !== void 0,
1051
+ impact: options.impact !== void 0,
1052
+ outcome: options.outcome !== void 0,
1053
+ whyNow: options.whyNow !== void 0,
1054
+ assignee: options.assignee !== void 0,
1055
+ parent: options.parent !== void 0,
1056
+ reviewer: options.reviewer !== void 0,
1057
+ risk: options.risk !== void 0,
1058
+ confidence: options.confidence !== void 0,
1059
+ sprint: options.sprint !== void 0,
1060
+ release: options.release !== void 0,
1061
+ blockedBy: options.blockedBy !== void 0,
1062
+ blockedReason: options.blockedReason !== void 0,
1063
+ unblockNote: options.unblockNote !== void 0,
1064
+ reporter: options.reporter !== void 0,
1065
+ severity: options.severity !== void 0,
1066
+ environment: options.environment !== void 0,
1067
+ reproSteps: options.reproSteps !== void 0,
1068
+ resolution: options.resolution !== void 0,
1069
+ expectedResult: options.expectedResult !== void 0,
1070
+ actualResult: options.actualResult !== void 0,
1071
+ affectedVersion: options.affectedVersion !== void 0,
1072
+ fixedVersion: options.fixedVersion !== void 0,
1073
+ component: options.component !== void 0,
1074
+ regression: options.regression !== void 0,
1075
+ customerImpact: options.customerImpact !== void 0
1076
+ };
1077
+ for (const [optionKey, hasValue] of Object.entries(scalarOptionPresence)) {
1078
+ if (!hasValue || !unsetTargets.optionKeys.has(optionKey)) {
1079
+ continue;
1080
+ }
1081
+ const unsetField = UPDATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey) ?? optionKey;
1082
+ throw new PmCliError(`Cannot combine --unset ${unsetField} with ${commandOptionFlagLabel("update", optionKey)}`, EXIT_CODE.USAGE);
1083
+ }
1084
+ if (clearFrontMatterKeys.has("tags")) {
1085
+ if (Array.isArray(options.addTags) && options.addTags.length > 0) {
1086
+ throw new PmCliError("Cannot combine --unset tags with --add-tags", EXIT_CODE.USAGE);
1087
+ }
1088
+ if (Array.isArray(options.removeTags) && options.removeTags.length > 0) {
1089
+ throw new PmCliError("Cannot combine --unset tags with --remove-tags", EXIT_CODE.USAGE);
1090
+ }
1091
+ }
1092
+ const assertNoLegacyScalarToken = (value, optionKey) => {
1093
+ const unsetField = UPDATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey);
1094
+ const hint = unsetField ? `Use --unset ${unsetField} to clear this field.` : void 0;
1095
+ assertNoLegacyNoneToken(value, commandOptionFlagLabel("update", optionKey), hint);
1096
+ };
1097
+ assertNoLegacyScalarToken(options.tags, "tags");
1098
+ assertNoLegacyScalarToken(options.closeReason, "closeReason");
1099
+ assertNoLegacyScalarToken(options.deadline, "deadline");
1100
+ assertNoLegacyScalarToken(options.estimatedMinutes, "estimatedMinutes");
1101
+ assertNoLegacyScalarToken(options.acceptanceCriteria, "acceptanceCriteria");
1102
+ assertNoLegacyScalarToken(options.definitionOfReady, "definitionOfReady");
1103
+ assertNoLegacyScalarToken(options.order ?? options.rank, "order");
1104
+ assertNoLegacyScalarToken(options.goal, "goal");
1105
+ assertNoLegacyScalarToken(options.objective, "objective");
1106
+ assertNoLegacyScalarToken(options.value, "value");
1107
+ assertNoLegacyScalarToken(options.impact, "impact");
1108
+ assertNoLegacyScalarToken(options.outcome, "outcome");
1109
+ assertNoLegacyScalarToken(options.whyNow, "whyNow");
1110
+ assertNoLegacyScalarToken(options.assignee, "assignee");
1111
+ assertNoLegacyScalarToken(options.parent, "parent");
1112
+ assertNoLegacyScalarToken(options.reviewer, "reviewer");
1113
+ assertNoLegacyScalarToken(options.risk, "risk");
1114
+ assertNoLegacyScalarToken(options.confidence, "confidence");
1115
+ assertNoLegacyScalarToken(options.sprint, "sprint");
1116
+ assertNoLegacyScalarToken(options.release, "release");
1117
+ assertNoLegacyScalarToken(options.blockedBy, "blockedBy");
1118
+ assertNoLegacyScalarToken(options.blockedReason, "blockedReason");
1119
+ assertNoLegacyScalarToken(options.unblockNote, "unblockNote");
1120
+ assertNoLegacyScalarToken(options.reporter, "reporter");
1121
+ assertNoLegacyScalarToken(options.severity, "severity");
1122
+ assertNoLegacyScalarToken(options.environment, "environment");
1123
+ assertNoLegacyScalarToken(options.reproSteps, "reproSteps");
1124
+ assertNoLegacyScalarToken(options.resolution, "resolution");
1125
+ assertNoLegacyScalarToken(options.expectedResult, "expectedResult");
1126
+ assertNoLegacyScalarToken(options.actualResult, "actualResult");
1127
+ assertNoLegacyScalarToken(options.affectedVersion, "affectedVersion");
1128
+ assertNoLegacyScalarToken(options.fixedVersion, "fixedVersion");
1129
+ assertNoLegacyScalarToken(options.component, "component");
1130
+ assertNoLegacyScalarToken(options.regression, "regression");
1131
+ assertNoLegacyScalarToken(options.customerImpact, "customerImpact");
1132
+ assertNoLegacyNoneTokens(options.reminder, "--reminder", "Use --clear-reminders to clear reminders.");
1133
+ assertNoLegacyNoneTokens(options.event, "--event", "Use --clear-events to clear linked events.");
1134
+ const author = toAuthor(options.author, settings.author_default);
1135
+ const nowValue = /* @__PURE__ */ new Date();
1136
+ const nowIso = nowValue.toISOString();
1137
+ const dependencyUpdates = parseDependencyAdditions(options.dep, settings.id_prefix, nowIso);
1138
+ const dependencyRemovals = parseDependencyRemovals(options.depRemove, settings.id_prefix);
1139
+ const commentUpdates = parseLogSeed("--comment", options.comment, nowIso, author);
1140
+ const noteUpdates = parseLogSeed("--note", options.note, nowIso, author);
1141
+ const learningUpdates = parseLogSeed("--learning", options.learning, nowIso, author);
1142
+ const fileUpdates = parseFiles(options.file);
1143
+ const testUpdates = parseTests(options.test);
1144
+ const docUpdates = parseDocs(options.doc);
1145
+ const parentReferenceWarnings = [];
1146
+ const workflowTransitionWarnings = [];
1147
+ let resolvedParentValue;
1148
+ if (options.parent !== void 0 && !unsetTargets.frontMatterKeys.has("parent")) {
1149
+ resolvedParentValue = normalizeParentReferenceValue(options.parent);
1150
+ const parentLocated = await locateItem(pmRoot, resolvedParentValue, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1151
+ if (!parentLocated) {
1152
+ const normalizedParentId = normalizeItemId(resolvedParentValue, settings.id_prefix);
1153
+ parentReferenceWarnings.push(...validateMissingParentReference(normalizedParentId, parentReferencePolicy).warnings);
1154
+ }
1155
+ }
1156
+ const blockedByResolution = await resolveBlockedByDependencyTarget(options.blockedBy, clearFrontMatterKeys.has("blocked_by"), pmRoot, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1157
+ const resolvedBlockedByDependencyId = blockedByResolution.id;
1158
+ if (blockedByResolution.unresolved !== void 0) {
1159
+ parentReferenceWarnings.push(`blocked_by_unresolved:${blockedByResolution.unresolved}`);
1160
+ }
1161
+ const runtimeFieldUpdates = collectRuntimeUpdateFieldValues(options, runtimeFieldRegistry, options.runtimeFieldCommands);
1162
+ const fieldFlags = {
1163
+ title: options.title !== void 0,
1164
+ description: options.description !== void 0,
1165
+ body: options.body !== void 0,
1166
+ status: options.status !== void 0,
1167
+ closeReason: options.closeReason !== void 0,
1168
+ priority: options.priority !== void 0,
1169
+ type: options.type !== void 0,
1170
+ tags: options.tags !== void 0,
1171
+ addTags: Array.isArray(options.addTags) && options.addTags.length > 0,
1172
+ removeTags: Array.isArray(options.removeTags) && options.removeTags.length > 0,
1173
+ deadline: options.deadline !== void 0,
1174
+ estimatedMinutes: options.estimatedMinutes !== void 0,
1175
+ acceptanceCriteria: options.acceptanceCriteria !== void 0,
1176
+ definitionOfReady: options.definitionOfReady !== void 0,
1177
+ order: options.order !== void 0,
1178
+ rank: options.rank !== void 0,
1179
+ goal: options.goal !== void 0,
1180
+ objective: options.objective !== void 0,
1181
+ value: options.value !== void 0,
1182
+ impact: options.impact !== void 0,
1183
+ outcome: options.outcome !== void 0,
1184
+ whyNow: options.whyNow !== void 0,
1185
+ assignee: options.assignee !== void 0,
1186
+ parent: options.parent !== void 0,
1187
+ reviewer: options.reviewer !== void 0,
1188
+ risk: options.risk !== void 0,
1189
+ confidence: options.confidence !== void 0,
1190
+ sprint: options.sprint !== void 0,
1191
+ release: options.release !== void 0,
1192
+ blockedBy: options.blockedBy !== void 0,
1193
+ blockedReason: options.blockedReason !== void 0,
1194
+ unblockNote: options.unblockNote !== void 0,
1195
+ reporter: options.reporter !== void 0,
1196
+ severity: options.severity !== void 0,
1197
+ environment: options.environment !== void 0,
1198
+ reproSteps: options.reproSteps !== void 0,
1199
+ resolution: options.resolution !== void 0,
1200
+ expectedResult: options.expectedResult !== void 0,
1201
+ actualResult: options.actualResult !== void 0,
1202
+ affectedVersion: options.affectedVersion !== void 0,
1203
+ fixedVersion: options.fixedVersion !== void 0,
1204
+ component: options.component !== void 0,
1205
+ regression: options.regression !== void 0,
1206
+ customerImpact: options.customerImpact !== void 0,
1207
+ dep: options.dep !== void 0,
1208
+ depRemove: options.depRemove !== void 0,
1209
+ replaceDeps: options.replaceDeps === true,
1210
+ comment: options.comment !== void 0,
1211
+ note: options.note !== void 0,
1212
+ learning: options.learning !== void 0,
1213
+ file: options.file !== void 0,
1214
+ test: options.test !== void 0,
1215
+ replaceTests: options.replaceTests === true,
1216
+ doc: options.doc !== void 0,
1217
+ reminder: options.reminder !== void 0,
1218
+ event: options.event !== void 0,
1219
+ typeOption: options.typeOption !== void 0,
1220
+ field: options.field !== void 0,
1221
+ unset: options.unset !== void 0 && options.unset.length > 0,
1222
+ clearDeps: options.clearDeps === true,
1223
+ clearComments: options.clearComments === true,
1224
+ clearNotes: options.clearNotes === true,
1225
+ clearLearnings: options.clearLearnings === true,
1226
+ clearFiles: options.clearFiles === true,
1227
+ clearTests: options.clearTests === true,
1228
+ clearDocs: options.clearDocs === true,
1229
+ clearReminders: options.clearReminders === true,
1230
+ clearEvents: options.clearEvents === true,
1231
+ clearTypeOptions: options.clearTypeOptions === true,
1232
+ runtimeFields: Object.keys(runtimeFieldUpdates).length > 0
1233
+ };
1234
+ const changedFlags = Object.values(fieldFlags).some(Boolean);
1235
+ if (!changedFlags) {
1236
+ const located = await locateItem(pmRoot, id, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1237
+ if (!located) {
1238
+ throw await buildItemNotFoundError(pmRoot, id, settings.id_prefix, typeRegistry.type_to_folder);
1239
+ }
1240
+ const { document } = await readLocatedItem(located, { schema: settings.schema });
1241
+ return {
1242
+ item: toItemRecord(document.metadata),
1243
+ changed_fields: [],
1244
+ warnings: ["noop_no_update_fields"]
1245
+ };
1246
+ }
1247
+ if (workflowEnforcement !== "off" && typeWorkflows.length > 0 && fieldFlags.status && options.status !== void 0) {
1248
+ const located = await locateItem(pmRoot, id, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1249
+ if (!located) {
1250
+ throw await buildItemNotFoundError(pmRoot, id, settings.id_prefix, typeRegistry.type_to_folder);
1251
+ }
1252
+ const { document } = await readLocatedItem(located, { schema: settings.schema });
1253
+ const effectiveType = options.type !== void 0 ? resolveTypeName(options.type, typeRegistry) ?? options.type : document.metadata?.type ?? "";
1254
+ const warning = enforceTypeWorkflowTransition({
1255
+ enforcement: workflowEnforcement,
1256
+ typeWorkflows,
1257
+ statusRegistry,
1258
+ typeName: effectiveType,
1259
+ fromStatus: document.metadata?.status ?? "",
1260
+ toStatus: options.status ?? ""
1261
+ });
1262
+ if (warning) {
1263
+ workflowTransitionWarnings.push(warning);
1264
+ }
1265
+ }
1266
+ if (fieldFlags.status) {
1267
+ const targetStatus = normalizeStatusInput(options.status, statusRegistry);
1268
+ if (targetStatus === statusRegistry.close_status) {
1269
+ const otherFieldKeys = Object.entries(fieldFlags).filter(([key, value]) => value && key !== "status" && key !== "closeReason").map(([key]) => key);
1270
+ const routeWarnings = [];
1271
+ let preChangedFields = [];
1272
+ if (otherFieldKeys.length > 0) {
1273
+ const preUpdate = await runUpdate(id, { ...options, status: void 0, closeReason: void 0, message: void 0 }, global);
1274
+ preChangedFields = preUpdate.changed_fields;
1275
+ routeWarnings.push(...preUpdate.warnings);
1276
+ }
1277
+ const explicitReason = typeof options.closeReason === "string" ? options.closeReason.trim() : "";
1278
+ const fallbackMessage = typeof options.message === "string" ? options.message.trim() : "";
1279
+ const closeReason = explicitReason || fallbackMessage || "Closed via pm update";
1280
+ const reasonDefaulted = explicitReason.length === 0 && fallbackMessage.length === 0;
1281
+ const closeResult = await runClose(id, closeReason, {
1282
+ author: options.author,
1283
+ message: options.message,
1284
+ force: options.force
1285
+ }, global);
1286
+ const warnings = [
1287
+ ...workflowTransitionWarnings,
1288
+ ...routeWarnings,
1289
+ ...closeResult.warnings,
1290
+ "auto_routed_from_update_to_close"
1291
+ ];
1292
+ if (reasonDefaulted) {
1293
+ warnings.push("close_reason_defaulted");
1294
+ }
1295
+ return {
1296
+ item: closeResult.item,
1297
+ changed_fields: [...preChangedFields, ...closeResult.changed_fields],
1298
+ warnings
1299
+ };
1300
+ }
1301
+ }
1302
+ if (options.order !== void 0 && options.rank !== void 0 && options.order !== options.rank) {
1303
+ throw new PmCliError("--order and --rank must match when both are provided", EXIT_CODE.USAGE);
1304
+ }
1305
+ const result = await mutateItem({
1306
+ pmRoot,
1307
+ settings,
1308
+ typeToFolder: typeRegistry.type_to_folder,
1309
+ id,
1310
+ op: options.allowAuditUpdate === true || options.allowAuditDepUpdate === true ? "update_audit" : "update",
1311
+ author,
1312
+ message: options.message,
1313
+ force: options.force,
1314
+ bypassAssigneeConflict: options.allowAuditUpdate === true || options.allowAuditDepUpdate === true,
1315
+ extensionFieldNames,
1316
+ mutate(document) {
1317
+ const changedFields = [];
1318
+ const warnings = [];
1319
+ let activeTypeName = resolveTypeName(document.metadata.type, typeRegistry) ?? document.metadata.type;
1320
+ const metadataRecord = toItemRecord(document.metadata);
1321
+ const setOrClearScalar = (optionValue, metadataKey, transform) => {
1322
+ if (optionValue === void 0 && !clearFrontMatterKeys.has(metadataKey)) {
1323
+ return;
1324
+ }
1325
+ if (clearFrontMatterKeys.has(metadataKey)) {
1326
+ delete metadataRecord[metadataKey];
1327
+ } else {
1328
+ metadataRecord[metadataKey] = transform(optionValue);
1329
+ }
1330
+ changedFields.push(metadataKey);
1331
+ };
1332
+ const setOrClearTrimScalar = (optionValue, metadataKey) => {
1333
+ setOrClearScalar(optionValue, metadataKey, (value) => value.trim());
1334
+ };
1335
+ if (options.title !== void 0) {
1336
+ document.metadata.title = options.title;
1337
+ changedFields.push("title");
1338
+ }
1339
+ if (options.description !== void 0) {
1340
+ document.metadata.description = options.description;
1341
+ changedFields.push("description");
1342
+ }
1343
+ if (options.body !== void 0) {
1344
+ document.body = options.body;
1345
+ changedFields.push("body");
1346
+ }
1347
+ const previousStatus = document.metadata.status;
1348
+ const previousStatusNormalized = normalizeStatusInput(previousStatus, statusRegistry) ?? previousStatus;
1349
+ if (options.status !== void 0) {
1350
+ const status = parseStatus(options.status, statusRegistry);
1351
+ document.metadata.status = status;
1352
+ if (status === statusRegistry.canceled_status) {
1353
+ delete document.metadata.assignee;
1354
+ }
1355
+ changedFields.push("status");
1356
+ }
1357
+ if (options.closeReason !== void 0 || clearFrontMatterKeys.has("close_reason")) {
1358
+ if (clearFrontMatterKeys.has("close_reason")) {
1359
+ delete document.metadata.close_reason;
1360
+ } else {
1361
+ const closeReason = options.closeReason.trim();
1362
+ if (closeReason.length === 0) {
1363
+ throw new PmCliError("--close-reason must not be empty", EXIT_CODE.USAGE);
1364
+ }
1365
+ document.metadata.close_reason = closeReason;
1366
+ }
1367
+ changedFields.push("close_reason");
1368
+ } else if (options.status !== void 0 && previousStatusNormalized === statusRegistry.close_status && document.metadata.status !== statusRegistry.canceled_status && document.metadata.close_reason !== void 0) {
1369
+ delete document.metadata.close_reason;
1370
+ changedFields.push("close_reason");
1371
+ }
1372
+ if (options.priority !== void 0) {
1373
+ document.metadata.priority = ensurePriority(options.priority);
1374
+ changedFields.push("priority");
1375
+ }
1376
+ if (options.type !== void 0) {
1377
+ const resolvedTypeName = resolveTypeName(options.type, typeRegistry);
1378
+ if (!resolvedTypeName) {
1379
+ throw new PmCliError(buildInvalidTypeError(options.type, typeRegistry.types), EXIT_CODE.USAGE);
1380
+ }
1381
+ document.metadata.type = resolvedTypeName;
1382
+ activeTypeName = resolvedTypeName;
1383
+ changedFields.push("type");
1384
+ }
1385
+ enforceUpdateOptionsByType(activeTypeName, options, typeRegistry, extensionFieldNames);
1386
+ if (options.typeOption !== void 0 || clearFrontMatterKeys.has("type_options")) {
1387
+ if (clearFrontMatterKeys.has("type_options")) {
1388
+ delete document.metadata.type_options;
1389
+ } else {
1390
+ const parsedTypeOptions = parseTypeOptionEntries(options.typeOption);
1391
+ const validation = validateTypeOptions(activeTypeName, parsedTypeOptions, typeRegistry);
1392
+ if (validation.errors.length > 0) {
1393
+ throw new PmCliError(validation.errors.join("; "), EXIT_CODE.USAGE);
1394
+ }
1395
+ document.metadata.type_options = validation.normalized;
1396
+ }
1397
+ changedFields.push("type_options");
1398
+ } else if (options.type !== void 0 && document.metadata.type_options !== void 0) {
1399
+ const validation = validateTypeOptions(activeTypeName, document.metadata.type_options, typeRegistry);
1400
+ if (validation.errors.length > 0) {
1401
+ throw new PmCliError(`Current type options are incompatible with type "${activeTypeName}". ${validation.errors.join("; ")}. Use --clear-type-options to clear them.`, EXIT_CODE.USAGE);
1402
+ }
1403
+ document.metadata.type_options = validation.normalized;
1404
+ }
1405
+ if (options.dep !== void 0 || options.depRemove !== void 0 || clearFrontMatterKeys.has("dependencies")) {
1406
+ let nextDependencies = clearFrontMatterKeys.has("dependencies") ? [] : [...document.metadata.dependencies ?? []];
1407
+ if (dependencyUpdates.additions.length > 0) {
1408
+ const seen = new Set(nextDependencies.map((entry) => dependencyKey(entry)));
1409
+ for (const addition of dependencyUpdates.additions) {
1410
+ const key = dependencyKey(addition);
1411
+ if (seen.has(key)) {
1412
+ continue;
1413
+ }
1414
+ nextDependencies.push(addition);
1415
+ seen.add(key);
1416
+ }
1417
+ }
1418
+ if (dependencyRemovals.length > 0) {
1419
+ nextDependencies = nextDependencies.filter((entry) => !dependencyRemovals.some((selector) => matchesDependencySelector(entry, selector)));
1420
+ }
1421
+ if (nextDependencies.length === 0) {
1422
+ delete document.metadata.dependencies;
1423
+ } else {
1424
+ document.metadata.dependencies = nextDependencies;
1425
+ }
1426
+ changedFields.push("dependencies");
1427
+ }
1428
+ if (options.comment !== void 0 || clearFrontMatterKeys.has("comments")) {
1429
+ if (clearFrontMatterKeys.has("comments") || !commentUpdates.values || commentUpdates.values.length === 0) {
1430
+ delete document.metadata.comments;
1431
+ } else {
1432
+ document.metadata.comments = [...document.metadata.comments ?? [], ...commentUpdates.values];
1433
+ }
1434
+ changedFields.push("comments");
1435
+ }
1436
+ if (options.note !== void 0 || clearFrontMatterKeys.has("notes")) {
1437
+ if (clearFrontMatterKeys.has("notes") || !noteUpdates.values || noteUpdates.values.length === 0) {
1438
+ delete document.metadata.notes;
1439
+ } else {
1440
+ document.metadata.notes = [...document.metadata.notes ?? [], ...noteUpdates.values];
1441
+ }
1442
+ changedFields.push("notes");
1443
+ }
1444
+ if (options.learning !== void 0 || clearFrontMatterKeys.has("learnings")) {
1445
+ if (clearFrontMatterKeys.has("learnings") || !learningUpdates.values || learningUpdates.values.length === 0) {
1446
+ delete document.metadata.learnings;
1447
+ } else {
1448
+ document.metadata.learnings = [...document.metadata.learnings ?? [], ...learningUpdates.values];
1449
+ }
1450
+ changedFields.push("learnings");
1451
+ }
1452
+ if (options.file !== void 0 || clearFrontMatterKeys.has("files")) {
1453
+ if (clearFrontMatterKeys.has("files") || !fileUpdates.values || fileUpdates.values.length === 0) {
1454
+ delete document.metadata.files;
1455
+ } else {
1456
+ const nextFiles = [...document.metadata.files ?? []];
1457
+ const seen = new Set(nextFiles.map((entry) => fileKey(entry)));
1458
+ for (const entry of fileUpdates.values) {
1459
+ const key = fileKey(entry);
1460
+ if (seen.has(key)) {
1461
+ continue;
1462
+ }
1463
+ nextFiles.push(entry);
1464
+ seen.add(key);
1465
+ }
1466
+ document.metadata.files = nextFiles;
1467
+ }
1468
+ changedFields.push("files");
1469
+ }
1470
+ if (options.test !== void 0 || clearFrontMatterKeys.has("tests")) {
1471
+ if (clearFrontMatterKeys.has("tests") && options.replaceTests === true) {
1472
+ if (!testUpdates.values || testUpdates.values.length === 0) {
1473
+ delete document.metadata.tests;
1474
+ } else {
1475
+ const replacementTests = [];
1476
+ const seen = /* @__PURE__ */ new Set();
1477
+ for (const entry of testUpdates.values) {
1478
+ const key = testKey(entry);
1479
+ if (seen.has(key)) {
1480
+ continue;
1481
+ }
1482
+ replacementTests.push(entry);
1483
+ seen.add(key);
1484
+ }
1485
+ document.metadata.tests = replacementTests;
1486
+ }
1487
+ } else if (clearFrontMatterKeys.has("tests") || !testUpdates.values || testUpdates.values.length === 0) {
1488
+ delete document.metadata.tests;
1489
+ } else {
1490
+ const nextTests = [...document.metadata.tests ?? []];
1491
+ const seen = new Set(nextTests.map((entry) => testKey(entry)));
1492
+ for (const entry of testUpdates.values) {
1493
+ const key = testKey(entry);
1494
+ if (seen.has(key)) {
1495
+ continue;
1496
+ }
1497
+ nextTests.push(entry);
1498
+ seen.add(key);
1499
+ }
1500
+ document.metadata.tests = nextTests;
1501
+ }
1502
+ changedFields.push("tests");
1503
+ }
1504
+ if (options.doc !== void 0 || clearFrontMatterKeys.has("docs")) {
1505
+ if (clearFrontMatterKeys.has("docs") || !docUpdates.values || docUpdates.values.length === 0) {
1506
+ delete document.metadata.docs;
1507
+ } else {
1508
+ const nextDocs = [...document.metadata.docs ?? []];
1509
+ const seen = new Set(nextDocs.map((entry) => docKey(entry)));
1510
+ for (const entry of docUpdates.values) {
1511
+ const key = docKey(entry);
1512
+ if (seen.has(key)) {
1513
+ continue;
1514
+ }
1515
+ nextDocs.push(entry);
1516
+ seen.add(key);
1517
+ }
1518
+ document.metadata.docs = nextDocs;
1519
+ }
1520
+ changedFields.push("docs");
1521
+ }
1522
+ const addTagsValues = options.addTags;
1523
+ const removeTagsValues = options.removeTags;
1524
+ const hasAdditiveTagMutation = Array.isArray(addTagsValues) && addTagsValues.length > 0 || Array.isArray(removeTagsValues) && removeTagsValues.length > 0;
1525
+ if (options.tags !== void 0 || clearFrontMatterKeys.has("tags") || hasAdditiveTagMutation) {
1526
+ const baseTags = clearFrontMatterKeys.has("tags") ? [] : options.tags !== void 0 ? parseTags(options.tags) : Array.isArray(document.metadata.tags) ? [...document.metadata.tags] : [];
1527
+ const withAdditions = mergeAdditiveTags(baseTags, addTagsValues);
1528
+ const finalTags = applyTagRemovals(withAdditions, removeTagsValues);
1529
+ document.metadata.tags = finalTags;
1530
+ changedFields.push("tags");
1531
+ }
1532
+ setOrClearScalar(options.deadline, "deadline", (value) => resolveIsoOrRelative(value, nowValue, "deadline"));
1533
+ setOrClearScalar(options.estimatedMinutes, "estimated_minutes", (value) => parseOptionalNumber(value, "estimated-minutes"));
1534
+ setOrClearScalar(options.acceptanceCriteria, "acceptance_criteria", (value) => value);
1535
+ setOrClearTrimScalar(options.definitionOfReady, "definition_of_ready");
1536
+ const orderRaw = options.order ?? options.rank;
1537
+ if (orderRaw !== void 0 || clearFrontMatterKeys.has("order")) {
1538
+ if (clearFrontMatterKeys.has("order")) {
1539
+ delete document.metadata.order;
1540
+ } else {
1541
+ const parsedOrder = parseOptionalNumber(orderRaw, "order");
1542
+ if (!Number.isInteger(parsedOrder)) {
1543
+ throw new PmCliError("Order must be an integer", EXIT_CODE.USAGE);
1544
+ }
1545
+ document.metadata.order = parsedOrder;
1546
+ }
1547
+ changedFields.push("order");
1548
+ }
1549
+ setOrClearTrimScalar(options.goal, "goal");
1550
+ setOrClearTrimScalar(options.objective, "objective");
1551
+ setOrClearTrimScalar(options.value, "value");
1552
+ setOrClearTrimScalar(options.impact, "impact");
1553
+ setOrClearTrimScalar(options.outcome, "outcome");
1554
+ setOrClearTrimScalar(options.whyNow, "why_now");
1555
+ if (options.assignee !== void 0 || clearFrontMatterKeys.has("assignee")) {
1556
+ if (clearFrontMatterKeys.has("assignee")) {
1557
+ delete document.metadata.assignee;
1558
+ } else {
1559
+ if (options.assignee.trim() === "") {
1560
+ throw new PmCliError("--assignee must not be empty. Use --unset assignee to clear it.", EXIT_CODE.USAGE);
1561
+ }
1562
+ document.metadata.assignee = options.assignee.trim();
1563
+ }
1564
+ changedFields.push("assignee");
1565
+ }
1566
+ if (options.parent !== void 0 || clearFrontMatterKeys.has("parent")) {
1567
+ if (clearFrontMatterKeys.has("parent")) {
1568
+ delete document.metadata.parent;
1569
+ } else {
1570
+ document.metadata.parent = resolvedParentValue;
1571
+ }
1572
+ changedFields.push("parent");
1573
+ }
1574
+ setOrClearTrimScalar(options.reviewer, "reviewer");
1575
+ setOrClearScalar(options.risk, "risk", (value) => ensureEnumValue(normalizeRiskInput(value), RISK_VALUES, "risk"));
1576
+ setOrClearScalar(options.confidence, "confidence", (value) => parseConfidenceInput(value));
1577
+ if (options.sprint !== void 0 || clearFrontMatterKeys.has("sprint")) {
1578
+ if (clearFrontMatterKeys.has("sprint")) {
1579
+ delete document.metadata.sprint;
1580
+ } else {
1581
+ const sprintValidation = validateSprintOrReleaseValue("sprint", options.sprint, sprintReleasePolicy);
1582
+ document.metadata.sprint = sprintValidation.value;
1583
+ warnings.push(...sprintValidation.warnings);
1584
+ }
1585
+ changedFields.push("sprint");
1586
+ }
1587
+ if (options.release !== void 0 || clearFrontMatterKeys.has("release")) {
1588
+ if (clearFrontMatterKeys.has("release")) {
1589
+ delete document.metadata.release;
1590
+ } else {
1591
+ const releaseValidation = validateSprintOrReleaseValue("release", options.release, sprintReleasePolicy);
1592
+ document.metadata.release = releaseValidation.value;
1593
+ warnings.push(...releaseValidation.warnings);
1594
+ }
1595
+ changedFields.push("release");
1596
+ }
1597
+ if (options.blockedBy !== void 0 || clearFrontMatterKeys.has("blocked_by")) {
1598
+ if (clearFrontMatterKeys.has("blocked_by")) {
1599
+ delete document.metadata.blocked_by;
1600
+ } else {
1601
+ document.metadata.blocked_by = options.blockedBy.trim();
1602
+ }
1603
+ changedFields.push("blocked_by");
1604
+ applyBlockedByDependencyEdge(document.metadata, resolvedBlockedByDependencyId, nowIso, author, changedFields);
1605
+ }
1606
+ setOrClearTrimScalar(options.blockedReason, "blocked_reason");
1607
+ setOrClearTrimScalar(options.unblockNote, "unblock_note");
1608
+ setOrClearTrimScalar(options.reporter, "reporter");
1609
+ setOrClearScalar(options.severity, "severity", (value) => ensureEnumValue(normalizeSeverityInput(value), ISSUE_SEVERITY_VALUES, "severity"));
1610
+ setOrClearTrimScalar(options.environment, "environment");
1611
+ setOrClearTrimScalar(options.reproSteps, "repro_steps");
1612
+ setOrClearTrimScalar(options.resolution, "resolution");
1613
+ setOrClearTrimScalar(options.expectedResult, "expected_result");
1614
+ setOrClearTrimScalar(options.actualResult, "actual_result");
1615
+ setOrClearTrimScalar(options.affectedVersion, "affected_version");
1616
+ setOrClearTrimScalar(options.fixedVersion, "fixed_version");
1617
+ setOrClearTrimScalar(options.component, "component");
1618
+ setOrClearScalar(options.regression, "regression", (value) => parseRegressionInput(value));
1619
+ setOrClearTrimScalar(options.customerImpact, "customer_impact");
1620
+ if (options.reminder !== void 0 || clearFrontMatterKeys.has("reminders")) {
1621
+ if (clearFrontMatterKeys.has("reminders")) {
1622
+ delete document.metadata.reminders;
1623
+ } else {
1624
+ document.metadata.reminders = parseReminderEntries(options.reminder, nowValue, { valueMode: "trimmed" });
1625
+ }
1626
+ changedFields.push("reminders");
1627
+ }
1628
+ if (options.event !== void 0 || clearFrontMatterKeys.has("events")) {
1629
+ if (clearFrontMatterKeys.has("events")) {
1630
+ delete document.metadata.events;
1631
+ } else {
1632
+ document.metadata.events = parseEventEntries(options.event, nowValue, {
1633
+ allDayEmptyGuard: "truthy",
1634
+ recurrenceEmptyNumericGuard: "truthy"
1635
+ });
1636
+ }
1637
+ changedFields.push("events");
1638
+ }
1639
+ for (const definition of runtimeFieldRegistry.definitions) {
1640
+ if (!clearFrontMatterKeys.has(definition.metadata_key)) {
1641
+ continue;
1642
+ }
1643
+ if (metadataRecord[definition.metadata_key] === void 0) {
1644
+ continue;
1645
+ }
1646
+ delete metadataRecord[definition.metadata_key];
1647
+ changedFields.push(definition.metadata_key);
1648
+ }
1649
+ for (const fieldKey of extensionFieldNames) {
1650
+ if (!clearFrontMatterKeys.has(fieldKey)) {
1651
+ continue;
1652
+ }
1653
+ if (metadataRecord[fieldKey] === void 0) {
1654
+ continue;
1655
+ }
1656
+ delete metadataRecord[fieldKey];
1657
+ changedFields.push(fieldKey);
1658
+ }
1659
+ for (const [fieldKey, fieldValue] of Object.entries(runtimeFieldUpdates)) {
1660
+ if (clearFrontMatterKeys.has(fieldKey)) {
1661
+ continue;
1662
+ }
1663
+ if (stableValueEquals(metadataRecord[fieldKey], fieldValue)) {
1664
+ continue;
1665
+ }
1666
+ metadataRecord[fieldKey] = fieldValue;
1667
+ changedFields.push(fieldKey);
1668
+ }
1669
+ const registeredItemFieldUpdates = parseRegisteredItemFieldAssignments(options.field, extensionRegistrations);
1670
+ for (const fieldKey of Object.keys(registeredItemFieldUpdates)) {
1671
+ if (!clearFrontMatterKeys.has(fieldKey)) {
1672
+ continue;
1673
+ }
1674
+ throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_", "-")} with --field ${fieldKey}=...`, EXIT_CODE.USAGE);
1675
+ }
1676
+ for (const [fieldKey, fieldValue] of Object.entries(registeredItemFieldUpdates)) {
1677
+ if (stableValueEquals(metadataRecord[fieldKey], fieldValue)) {
1678
+ continue;
1679
+ }
1680
+ metadataRecord[fieldKey] = fieldValue;
1681
+ changedFields.push(fieldKey);
1682
+ }
1683
+ try {
1684
+ applyRegisteredItemFieldDefaultsAndValidation(metadataRecord, extensionRegistrations, { skipDefaultFields: clearFrontMatterKeys });
1685
+ } catch (error) {
1686
+ throw new PmCliError(error instanceof Error ? error.message : "Invalid extension item field values", EXIT_CODE.USAGE);
1687
+ }
1688
+ return { changedFields, warnings };
1689
+ }
1690
+ });
1691
+ return {
1692
+ item: toItemRecord(result.item),
1693
+ changed_fields: result.changedFields,
1694
+ warnings: [...workflowTransitionWarnings, ...parentReferenceWarnings, ...result.warnings],
1695
+ ...options.allowAuditUpdate === true || options.allowAuditDepUpdate === true ? { audit_update: true } : {}
1696
+ };
1697
+ }
1698
+
1699
+ export {
1700
+ runUpdate
1701
+ };
1702
+ //# sourceMappingURL=chunk-WSMOSYRD.js.map
1703
+
1704
+ //# debugId=bc69cde3-7c0d-5ce3-a6fa-8ccd67d46d4b