@unbrained/pm-cli 2026.6.24 → 2026.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (744) hide show
  1. package/AGENTS.md +2 -0
  2. package/CHANGELOG.md +113 -1
  3. package/CONTRIBUTING.md +30 -0
  4. package/README.md +16 -3
  5. package/dist/cli/bootstrap-args.js +89 -79
  6. package/dist/cli/bootstrap-args.js.map +1 -1
  7. package/dist/cli/commander-usage.js +3 -3
  8. package/dist/cli/commander-usage.js.map +1 -1
  9. package/dist/cli/commands/aggregate.js +8 -7
  10. package/dist/cli/commands/aggregate.js.map +1 -1
  11. package/dist/cli/commands/calendar.js +63 -62
  12. package/dist/cli/commands/calendar.js.map +1 -1
  13. package/dist/cli/commands/close.d.ts +2 -4
  14. package/dist/cli/commands/close.js +5 -17
  15. package/dist/cli/commands/close.js.map +1 -1
  16. package/dist/cli/commands/completion.js +158 -9
  17. package/dist/cli/commands/completion.js.map +1 -1
  18. package/dist/cli/commands/config.d.ts +1 -1
  19. package/dist/cli/commands/config.js +2 -2
  20. package/dist/cli/commands/config.js.map +1 -1
  21. package/dist/cli/commands/context.d.ts +31 -4
  22. package/dist/cli/commands/context.js +33 -10
  23. package/dist/cli/commands/context.js.map +1 -1
  24. package/dist/cli/commands/contracts.js +48 -8
  25. package/dist/cli/commands/contracts.js.map +1 -1
  26. package/dist/cli/commands/create.d.ts +1 -6
  27. package/dist/cli/commands/create.js +491 -587
  28. package/dist/cli/commands/create.js.map +1 -1
  29. package/dist/cli/commands/extension/bundled-catalog.js +59 -46
  30. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  31. package/dist/cli/commands/extension/describe.d.ts +15 -0
  32. package/dist/cli/commands/extension/describe.js +48 -2
  33. package/dist/cli/commands/extension/describe.js.map +1 -1
  34. package/dist/cli/commands/extension/doctor.js +129 -75
  35. package/dist/cli/commands/extension/doctor.js.map +1 -1
  36. package/dist/cli/commands/extension/install-sources.js +37 -7
  37. package/dist/cli/commands/extension/install-sources.js.map +1 -1
  38. package/dist/cli/commands/extension/managed-state.js +101 -57
  39. package/dist/cli/commands/extension/managed-state.js.map +1 -1
  40. package/dist/cli/commands/extension/scaffold.d.ts +38 -8
  41. package/dist/cli/commands/extension/scaffold.js +1956 -242
  42. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  43. package/dist/cli/commands/extension.d.ts +28 -3
  44. package/dist/cli/commands/extension.js +1181 -880
  45. package/dist/cli/commands/extension.js.map +1 -1
  46. package/dist/cli/commands/index.d.ts +3 -1
  47. package/dist/cli/commands/index.js +5 -3
  48. package/dist/cli/commands/index.js.map +1 -1
  49. package/dist/cli/commands/item-filter-options.d.ts +63 -0
  50. package/dist/cli/commands/item-filter-options.js +10 -0
  51. package/dist/cli/commands/item-filter-options.js.map +1 -0
  52. package/dist/cli/commands/legacy-none-tokens.d.ts +14 -0
  53. package/dist/cli/commands/legacy-none-tokens.js +31 -2
  54. package/dist/cli/commands/legacy-none-tokens.js.map +1 -1
  55. package/dist/cli/commands/linked-artifacts.d.ts +7 -0
  56. package/dist/cli/commands/linked-artifacts.js +12 -2
  57. package/dist/cli/commands/linked-artifacts.js.map +1 -1
  58. package/dist/cli/commands/list-filter-shared.js +55 -48
  59. package/dist/cli/commands/list-filter-shared.js.map +1 -1
  60. package/dist/cli/commands/list.d.ts +16 -39
  61. package/dist/cli/commands/list.js +127 -118
  62. package/dist/cli/commands/list.js.map +1 -1
  63. package/dist/cli/commands/next.d.ts +98 -0
  64. package/dist/cli/commands/next.js +304 -0
  65. package/dist/cli/commands/next.js.map +1 -0
  66. package/dist/cli/commands/profile.d.ts +208 -0
  67. package/dist/cli/commands/profile.js +418 -0
  68. package/dist/cli/commands/profile.js.map +1 -0
  69. package/dist/cli/commands/repeatable-metadata-parsers.js +12 -13
  70. package/dist/cli/commands/repeatable-metadata-parsers.js.map +1 -1
  71. package/dist/cli/commands/schema.d.ts +7 -0
  72. package/dist/cli/commands/schema.js +9 -3
  73. package/dist/cli/commands/schema.js.map +1 -1
  74. package/dist/cli/commands/search.d.ts +2 -39
  75. package/dist/cli/commands/search.js +196 -172
  76. package/dist/cli/commands/search.js.map +1 -1
  77. package/dist/cli/commands/shared-unset-fields.d.ts +30 -0
  78. package/dist/cli/commands/shared-unset-fields.js +161 -0
  79. package/dist/cli/commands/shared-unset-fields.js.map +1 -0
  80. package/dist/cli/commands/stats.js +15 -3
  81. package/dist/cli/commands/stats.js.map +1 -1
  82. package/dist/cli/commands/test.js +115 -125
  83. package/dist/cli/commands/test.js.map +1 -1
  84. package/dist/cli/commands/update.d.ts +1 -6
  85. package/dist/cli/commands/update.js +37 -232
  86. package/dist/cli/commands/update.js.map +1 -1
  87. package/dist/cli/commands/validate.js +20 -5
  88. package/dist/cli/commands/validate.js.map +1 -1
  89. package/dist/cli/extension-command-options.js +48 -21
  90. package/dist/cli/extension-command-options.js.map +1 -1
  91. package/dist/cli/help-content.js +26 -2
  92. package/dist/cli/help-content.js.map +1 -1
  93. package/dist/cli/help-json-payload.js +3 -3
  94. package/dist/cli/help-json-payload.js.map +1 -1
  95. package/dist/cli/main.js +27 -12
  96. package/dist/cli/main.js.map +1 -1
  97. package/dist/cli/register-list-query.js +42 -3
  98. package/dist/cli/register-list-query.js.map +1 -1
  99. package/dist/cli/register-mutation.js +86 -2
  100. package/dist/cli/register-mutation.js.map +1 -1
  101. package/dist/cli/register-setup.js +67 -6
  102. package/dist/cli/register-setup.js.map +1 -1
  103. package/dist/cli/registration-helpers.d.ts +9 -1
  104. package/dist/cli/registration-helpers.js +149 -123
  105. package/dist/cli/registration-helpers.js.map +1 -1
  106. package/dist/cli-bundle/chunks/activity-AW6XVFH6.js +16 -0
  107. package/dist/cli-bundle/chunks/{activity-N7RVTLBQ.js → activity-DBLQVIP6.js} +9 -11
  108. package/dist/cli-bundle/chunks/{aggregate-63NWNIBR.js → aggregate-JTEF4BP7.js} +17 -18
  109. package/dist/cli-bundle/chunks/aggregate-JTEF4BP7.js.map +1 -0
  110. package/dist/cli-bundle/chunks/{aggregate-YHCYX2EV.js → aggregate-SDF7DUOD.js} +16 -17
  111. package/dist/cli-bundle/chunks/aggregate-SDF7DUOD.js.map +7 -0
  112. package/dist/cli-bundle/chunks/{append-VLQQDHMJ.js → append-LOVPGVPT.js} +8 -10
  113. package/dist/cli-bundle/chunks/{append-VLQQDHMJ.js.map → append-LOVPGVPT.js.map} +1 -1
  114. package/dist/cli-bundle/chunks/{append-PUKREFV5.js → append-QCFJSDFL.js} +10 -12
  115. package/dist/cli-bundle/chunks/{append-PUKREFV5.js.map → append-QCFJSDFL.js.map} +1 -1
  116. package/dist/cli-bundle/chunks/{chunk-ABYCA5VX.js → chunk-22WKIL3H.js} +9 -11
  117. package/dist/cli-bundle/chunks/{chunk-ABYCA5VX.js.map → chunk-22WKIL3H.js.map} +1 -1
  118. package/dist/cli-bundle/chunks/{chunk-A66VYUOV.js → chunk-2466X6E4.js} +9 -11
  119. package/dist/cli-bundle/chunks/{chunk-A66VYUOV.js.map → chunk-2466X6E4.js.map} +1 -1
  120. package/dist/cli-bundle/chunks/{chunk-F32L4HR6.js → chunk-27BXPBAY.js} +3 -3
  121. package/dist/cli-bundle/chunks/{schema-QO5I4FBL.js → chunk-2D4HATP2.js} +136 -66
  122. package/dist/cli-bundle/chunks/chunk-2D4HATP2.js.map +1 -0
  123. package/dist/cli-bundle/chunks/{chunk-J7I4C5ZB.js → chunk-3J6JRJ3I.js} +153 -125
  124. package/dist/cli-bundle/chunks/chunk-3J6JRJ3I.js.map +7 -0
  125. package/dist/cli-bundle/chunks/{chunk-OHDQNKJB.js → chunk-3K2M5OYU.js} +106 -34
  126. package/dist/cli-bundle/chunks/chunk-3K2M5OYU.js.map +7 -0
  127. package/dist/cli-bundle/chunks/{chunk-XVYKWZNL.js → chunk-3S2KT7NG.js} +127 -127
  128. package/dist/cli-bundle/chunks/chunk-3S2KT7NG.js.map +7 -0
  129. package/dist/cli-bundle/chunks/{chunk-5BBEWX6C.js → chunk-3VGN2UWE.js} +2 -2
  130. package/dist/cli-bundle/chunks/{chunk-N5B6WZC5.js → chunk-3XZCOZ5J.js} +115 -123
  131. package/dist/cli-bundle/chunks/chunk-3XZCOZ5J.js.map +1 -0
  132. package/dist/cli-bundle/chunks/chunk-4A3BJ675.js +799 -0
  133. package/dist/cli-bundle/chunks/chunk-4A3BJ675.js.map +1 -0
  134. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +87 -0
  135. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +7 -0
  136. package/dist/cli-bundle/chunks/{chunk-HZF5RLKX.js → chunk-4DSGXSBL.js} +5 -7
  137. package/dist/cli-bundle/chunks/{chunk-HZF5RLKX.js.map → chunk-4DSGXSBL.js.map} +1 -1
  138. package/dist/cli-bundle/chunks/{chunk-JV27C7OZ.js → chunk-4DUVCVLZ.js} +4 -6
  139. package/dist/cli-bundle/chunks/{chunk-JV27C7OZ.js.map → chunk-4DUVCVLZ.js.map} +1 -1
  140. package/dist/cli-bundle/chunks/{chunk-IAP5KYBQ.js → chunk-4XOIEKSD.js} +563 -506
  141. package/dist/cli-bundle/chunks/chunk-4XOIEKSD.js.map +1 -0
  142. package/dist/cli-bundle/chunks/{context-5LB7UGKE.js → chunk-55SNVXRQ.js} +79 -82
  143. package/dist/cli-bundle/chunks/chunk-55SNVXRQ.js.map +7 -0
  144. package/dist/cli-bundle/chunks/{chunk-BFFO3AIB.js → chunk-5CGRF3L5.js} +128 -128
  145. package/dist/cli-bundle/chunks/chunk-5CGRF3L5.js.map +1 -0
  146. package/dist/cli-bundle/chunks/{chunk-JKL6HRMV.js → chunk-5QFDBI4F.js} +1260 -1046
  147. package/dist/cli-bundle/chunks/chunk-5QFDBI4F.js.map +7 -0
  148. package/dist/cli-bundle/chunks/{chunk-LU36E6GU.js → chunk-64HNBBFQ.js} +8 -12
  149. package/dist/cli-bundle/chunks/{chunk-LU36E6GU.js.map → chunk-64HNBBFQ.js.map} +1 -1
  150. package/dist/cli-bundle/chunks/chunk-6AQZPVHQ.js +2444 -0
  151. package/dist/cli-bundle/chunks/chunk-6AQZPVHQ.js.map +1 -0
  152. package/dist/cli-bundle/chunks/chunk-7M2HAZEB.js +17 -0
  153. package/dist/cli-bundle/chunks/chunk-7M2HAZEB.js.map +7 -0
  154. package/dist/cli-bundle/chunks/{chunk-VSAABFGQ.js → chunk-7R4QEMZZ.js} +1490 -734
  155. package/dist/cli-bundle/chunks/chunk-7R4QEMZZ.js.map +1 -0
  156. package/dist/cli-bundle/chunks/{chunk-M6TUBOGW.js → chunk-A7FPBAQS.js} +19 -12
  157. package/dist/cli-bundle/chunks/chunk-A7FPBAQS.js.map +1 -0
  158. package/dist/cli-bundle/chunks/{chunk-GQYJEEFX.js → chunk-AVEE5EHK.js} +53 -54
  159. package/dist/cli-bundle/chunks/chunk-AVEE5EHK.js.map +1 -0
  160. package/dist/cli-bundle/chunks/{chunk-FMWW2JDU.js → chunk-AXIDKKAT.js} +2 -2
  161. package/dist/cli-bundle/chunks/{chunk-TIM4OD74.js → chunk-BDTISOSD.js} +2 -2
  162. package/dist/cli-bundle/chunks/{chunk-C4C3EJCJ.js → chunk-BHO33VBQ.js} +509 -363
  163. package/dist/cli-bundle/chunks/chunk-BHO33VBQ.js.map +7 -0
  164. package/dist/cli-bundle/chunks/{chunk-6W3Y65PL.js → chunk-BZCEN4JA.js} +198 -177
  165. package/dist/cli-bundle/chunks/chunk-BZCEN4JA.js.map +7 -0
  166. package/dist/cli-bundle/chunks/{chunk-RRP6D345.js → chunk-CF7RL6FR.js} +12 -16
  167. package/dist/cli-bundle/chunks/{chunk-RRP6D345.js.map → chunk-CF7RL6FR.js.map} +1 -1
  168. package/dist/cli-bundle/chunks/{chunk-HC2S36NB.js → chunk-CWFNTKQJ.js} +154 -126
  169. package/dist/cli-bundle/chunks/chunk-CWFNTKQJ.js.map +1 -0
  170. package/dist/cli-bundle/chunks/chunk-CZVISY5A.js +87 -0
  171. package/dist/cli-bundle/chunks/chunk-CZVISY5A.js.map +7 -0
  172. package/dist/cli-bundle/chunks/{chunk-CZIFFMZI.js → chunk-DDPTYJIM.js} +2 -2
  173. package/dist/cli-bundle/chunks/{chunk-AYPQUFCX.js → chunk-EJUDVUYZ.js} +3 -3
  174. package/dist/cli-bundle/chunks/{chunk-EOGBMLCE.js → chunk-EVMTBV6V.js} +3 -3
  175. package/dist/cli-bundle/chunks/{chunk-RAWA3Y7O.js → chunk-FFMQB7WR.js} +199 -178
  176. package/dist/cli-bundle/chunks/chunk-FFMQB7WR.js.map +1 -0
  177. package/dist/cli-bundle/chunks/{chunk-CG3KP6I5.js → chunk-G7I7DEZA.js} +4 -4
  178. package/dist/cli-bundle/chunks/{chunk-MEXZ5XUM.js → chunk-GJ326ZKX.js} +53 -54
  179. package/dist/cli-bundle/chunks/chunk-GJ326ZKX.js.map +7 -0
  180. package/dist/cli-bundle/chunks/chunk-HPPFYYOV.js +119 -0
  181. package/dist/cli-bundle/chunks/chunk-HPPFYYOV.js.map +7 -0
  182. package/dist/cli-bundle/chunks/{chunk-OF7V47P3.js → chunk-HXTQJXWT.js} +2172 -2146
  183. package/dist/cli-bundle/chunks/chunk-HXTQJXWT.js.map +1 -0
  184. package/dist/cli-bundle/chunks/{chunk-F4BNR2IN.js → chunk-HYTGA6GI.js} +3 -3
  185. package/dist/cli-bundle/chunks/{chunk-2WCYE3IF.js → chunk-HZZEHPRG.js} +2 -2
  186. package/dist/cli-bundle/chunks/chunk-IBMFIKVS.js +14 -0
  187. package/dist/cli-bundle/chunks/chunk-IBMFIKVS.js.map +1 -0
  188. package/dist/cli-bundle/chunks/{chunk-YV2OSAMS.js → chunk-IJYK2T43.js} +2 -2
  189. package/dist/cli-bundle/chunks/{chunk-4XDGYFHL.js → chunk-IPYBJWTE.js} +10 -14
  190. package/dist/cli-bundle/chunks/{chunk-4XDGYFHL.js.map → chunk-IPYBJWTE.js.map} +1 -1
  191. package/dist/cli-bundle/chunks/{chunk-6EBNFQOR.js → chunk-IZBR4NRW.js} +10 -14
  192. package/dist/cli-bundle/chunks/{chunk-6EBNFQOR.js.map → chunk-IZBR4NRW.js.map} +1 -1
  193. package/dist/cli-bundle/chunks/{chunk-VFJYVXHL.js → chunk-JLM7BHI7.js} +7 -9
  194. package/dist/cli-bundle/chunks/{chunk-VFJYVXHL.js.map → chunk-JLM7BHI7.js.map} +1 -1
  195. package/dist/cli-bundle/chunks/{chunk-6EL7SW5C.js → chunk-JMP4E6D7.js} +114 -122
  196. package/dist/cli-bundle/chunks/chunk-JMP4E6D7.js.map +7 -0
  197. package/dist/cli-bundle/chunks/{chunk-QOUOMPHO.js → chunk-JPECA746.js} +2 -2
  198. package/dist/cli-bundle/chunks/{chunk-KJZOSF7J.js → chunk-JSU5P7VS.js} +100 -35
  199. package/dist/cli-bundle/chunks/chunk-JSU5P7VS.js.map +1 -0
  200. package/dist/cli-bundle/chunks/{context-55VEOYI3.js → chunk-JWXRETDF.js} +79 -82
  201. package/dist/cli-bundle/chunks/chunk-JWXRETDF.js.map +1 -0
  202. package/dist/cli-bundle/chunks/{chunk-OQ2E64FH.js → chunk-KNPEF7QG.js} +4 -4
  203. package/dist/cli-bundle/chunks/{chunk-3BKH2CL3.js → chunk-L5OEFZQG.js} +3 -3
  204. package/dist/cli-bundle/chunks/{chunk-DTABLLVE.js → chunk-LB6TP6MC.js} +5 -7
  205. package/dist/cli-bundle/chunks/{chunk-DTABLLVE.js.map → chunk-LB6TP6MC.js.map} +2 -2
  206. package/dist/cli-bundle/chunks/{chunk-TSI32UEL.js → chunk-MAUKX7JC.js} +6 -8
  207. package/dist/cli-bundle/chunks/{chunk-TSI32UEL.js.map → chunk-MAUKX7JC.js.map} +1 -1
  208. package/dist/cli-bundle/chunks/{chunk-SMXSDY7J.js → chunk-MDPEOIGN.js} +2221 -2172
  209. package/dist/cli-bundle/chunks/chunk-MDPEOIGN.js.map +7 -0
  210. package/dist/cli-bundle/chunks/{chunk-5S4ZGDB2.js → chunk-N74UMG5H.js} +2 -2
  211. package/dist/cli-bundle/chunks/{chunk-IXAZI443.js → chunk-NFDPYAIP.js} +2 -2
  212. package/dist/cli-bundle/chunks/{chunk-SKC4UTRP.js → chunk-NKZAN7BD.js} +3 -3
  213. package/dist/cli-bundle/chunks/chunk-NOLPZMSV.js +116 -0
  214. package/dist/cli-bundle/chunks/chunk-NOLPZMSV.js.map +1 -0
  215. package/dist/cli-bundle/chunks/{chunk-L7UXKP2I.js → chunk-NU2UEROZ.js} +1257 -1029
  216. package/dist/cli-bundle/chunks/chunk-NU2UEROZ.js.map +1 -0
  217. package/dist/cli-bundle/chunks/{chunk-HBAEFWX3.js → chunk-NUHHPVVS.js} +65 -335
  218. package/dist/cli-bundle/chunks/chunk-NUHHPVVS.js.map +7 -0
  219. package/dist/cli-bundle/chunks/{chunk-JPJDP4VU.js → chunk-NWMZWYYB.js} +2 -2
  220. package/dist/cli-bundle/chunks/{chunk-MWMHZOZZ.js → chunk-OGXLACHC.js} +10 -14
  221. package/dist/cli-bundle/chunks/{chunk-MWMHZOZZ.js.map → chunk-OGXLACHC.js.map} +1 -1
  222. package/dist/cli-bundle/chunks/chunk-OKQ22KTH.js +379 -0
  223. package/dist/cli-bundle/chunks/chunk-OKQ22KTH.js.map +1 -0
  224. package/dist/cli-bundle/chunks/{chunk-KKX4Z2SE.js → chunk-OTUHB4HS.js} +4 -4
  225. package/dist/cli-bundle/chunks/{chunk-ZLWRPBOW.js → chunk-QCWF6IYD.js} +510 -364
  226. package/dist/cli-bundle/chunks/chunk-QCWF6IYD.js.map +1 -0
  227. package/dist/cli-bundle/chunks/{chunk-PRVTGX64.js → chunk-RGEMWD6Q.js} +11 -23
  228. package/dist/cli-bundle/chunks/chunk-RGEMWD6Q.js.map +7 -0
  229. package/dist/cli-bundle/chunks/chunk-RH5ZBYFD.js +809 -0
  230. package/dist/cli-bundle/chunks/chunk-RH5ZBYFD.js.map +7 -0
  231. package/dist/cli-bundle/chunks/{chunk-ALQKV6U7.js → chunk-RLDHZHQS.js} +12 -16
  232. package/dist/cli-bundle/chunks/{chunk-ALQKV6U7.js.map → chunk-RLDHZHQS.js.map} +1 -1
  233. package/dist/cli-bundle/chunks/{schema-C6QA367T.js → chunk-RMMQ74TG.js} +144 -67
  234. package/dist/cli-bundle/chunks/chunk-RMMQ74TG.js.map +7 -0
  235. package/dist/cli-bundle/chunks/{chunk-EYPINTFR.js → chunk-RVUALSJF.js} +1516 -753
  236. package/dist/cli-bundle/chunks/chunk-RVUALSJF.js.map +7 -0
  237. package/dist/cli-bundle/chunks/chunk-SDR5J34Q.js +2468 -0
  238. package/dist/cli-bundle/chunks/chunk-SDR5J34Q.js.map +7 -0
  239. package/dist/cli-bundle/chunks/{chunk-WB5BYQMF.js → chunk-SLMUGTK3.js} +4 -4
  240. package/dist/cli-bundle/chunks/{chunk-SUREE24M.js → chunk-TP5Q5ZD3.js} +12 -24
  241. package/dist/cli-bundle/chunks/chunk-TP5Q5ZD3.js.map +1 -0
  242. package/dist/cli-bundle/chunks/{chunk-UACWNBL2.js → chunk-UYUYDGIB.js} +7 -9
  243. package/dist/cli-bundle/chunks/{chunk-UACWNBL2.js.map → chunk-UYUYDGIB.js.map} +1 -1
  244. package/dist/cli-bundle/chunks/{chunk-V4UYNSEM.js → chunk-UZIWVBE6.js} +6 -8
  245. package/dist/cli-bundle/chunks/{chunk-V4UYNSEM.js.map → chunk-UZIWVBE6.js.map} +1 -1
  246. package/dist/cli-bundle/chunks/{chunk-EWRSXOIZ.js → chunk-V3NOKJF2.js} +11 -13
  247. package/dist/cli-bundle/chunks/{chunk-EWRSXOIZ.js.map → chunk-V3NOKJF2.js.map} +1 -1
  248. package/dist/cli-bundle/chunks/{chunk-XXKV4UWE.js → chunk-VARHOHYV.js} +571 -507
  249. package/dist/cli-bundle/chunks/chunk-VARHOHYV.js.map +7 -0
  250. package/dist/cli-bundle/chunks/{chunk-AEACLRVH.js → chunk-VICZWYGZ.js} +18 -11
  251. package/dist/cli-bundle/chunks/chunk-VICZWYGZ.js.map +7 -0
  252. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +84 -0
  253. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +1 -0
  254. package/dist/cli-bundle/chunks/chunk-VZDBVEZR.js +382 -0
  255. package/dist/cli-bundle/chunks/chunk-VZDBVEZR.js.map +7 -0
  256. package/dist/cli-bundle/chunks/{chunk-GDUMGZK3.js → chunk-W4ULYO7Z.js} +11 -13
  257. package/dist/cli-bundle/chunks/{chunk-GDUMGZK3.js.map → chunk-W4ULYO7Z.js.map} +1 -1
  258. package/dist/cli-bundle/chunks/{chunk-I6QMJ2XT.js → chunk-WYDHYJPO.js} +2 -2
  259. package/dist/cli-bundle/chunks/{chunk-ALKFCIIB.js → chunk-YITK2PJ6.js} +9 -11
  260. package/dist/cli-bundle/chunks/{chunk-ALKFCIIB.js.map → chunk-YITK2PJ6.js.map} +1 -1
  261. package/dist/cli-bundle/chunks/chunk-YJIEJRZB.js +84 -0
  262. package/dist/cli-bundle/chunks/chunk-YJIEJRZB.js.map +1 -0
  263. package/dist/cli-bundle/chunks/{chunk-LNEDHJNQ.js → chunk-ZETXE4SE.js} +66 -329
  264. package/dist/cli-bundle/chunks/chunk-ZETXE4SE.js.map +1 -0
  265. package/dist/cli-bundle/chunks/{chunk-KIEAK7YE.js → chunk-ZRP4VG5U.js} +2 -2
  266. package/dist/cli-bundle/chunks/{claim-FZZZCAY6.js → claim-EMQLYPRW.js} +10 -12
  267. package/dist/cli-bundle/chunks/{claim-FZZZCAY6.js.map → claim-EMQLYPRW.js.map} +1 -1
  268. package/dist/cli-bundle/chunks/{claim-XK5QBZE3.js → claim-T3GCKV7C.js} +8 -10
  269. package/dist/cli-bundle/chunks/{claim-XK5QBZE3.js.map → claim-T3GCKV7C.js.map} +1 -1
  270. package/dist/cli-bundle/chunks/close-E6ZZGCJY.js +14 -0
  271. package/dist/cli-bundle/chunks/{close-QHMVWM7M.js → close-TQYAAFJP.js} +7 -8
  272. package/dist/cli-bundle/chunks/{close-many-OIXJE2JZ.js → close-many-BG5QQIDQ.js} +16 -18
  273. package/dist/cli-bundle/chunks/{close-many-OIXJE2JZ.js.map → close-many-BG5QQIDQ.js.map} +1 -1
  274. package/dist/cli-bundle/chunks/{close-many-SUU5BS2C.js → close-many-LDRVEQY2.js} +18 -20
  275. package/dist/cli-bundle/chunks/{close-many-SUU5BS2C.js.map → close-many-LDRVEQY2.js.map} +1 -1
  276. package/dist/cli-bundle/chunks/{comments-5YM62D75.js → comments-QCKR2YY2.js} +11 -13
  277. package/dist/cli-bundle/chunks/{comments-5YM62D75.js.map → comments-QCKR2YY2.js.map} +1 -1
  278. package/dist/cli-bundle/chunks/{comments-RH3IBIRH.js → comments-YUXJRZPQ.js} +9 -11
  279. package/dist/cli-bundle/chunks/{comments-RH3IBIRH.js.map → comments-YUXJRZPQ.js.map} +1 -1
  280. package/dist/cli-bundle/chunks/{config-NCNNWF6R.js → config-DMSU64QO.js} +18 -387
  281. package/dist/cli-bundle/chunks/config-DMSU64QO.js.map +7 -0
  282. package/dist/cli-bundle/chunks/{config-SW3U7XP2.js → config-QH2DICD6.js} +18 -380
  283. package/dist/cli-bundle/chunks/config-QH2DICD6.js.map +1 -0
  284. package/dist/cli-bundle/chunks/context-B6275WPX.js +46 -0
  285. package/dist/cli-bundle/chunks/context-OCZ3FJ4Z.js +42 -0
  286. package/dist/cli-bundle/chunks/{contracts-SY6PDFIK.js → contracts-HN7ABKLP.js} +72 -15
  287. package/dist/cli-bundle/chunks/contracts-HN7ABKLP.js.map +7 -0
  288. package/dist/cli-bundle/chunks/{contracts-JXFGBOYT.js → contracts-W4FZVVD6.js} +72 -15
  289. package/dist/cli-bundle/chunks/contracts-W4FZVVD6.js.map +1 -0
  290. package/dist/cli-bundle/chunks/{copy-N3GE6FYS.js → copy-BTJOSKKT.js} +7 -11
  291. package/dist/cli-bundle/chunks/{copy-N3GE6FYS.js.map → copy-BTJOSKKT.js.map} +1 -1
  292. package/dist/cli-bundle/chunks/{copy-IEDBJOOX.js → copy-DEM4DATS.js} +9 -13
  293. package/dist/cli-bundle/chunks/{copy-IEDBJOOX.js.map → copy-DEM4DATS.js.map} +1 -1
  294. package/dist/cli-bundle/chunks/create-OH3BDGBB.js +28 -0
  295. package/dist/cli-bundle/chunks/{create-O4VONGPG.js → create-RLRJMRTM.js} +12 -14
  296. package/dist/cli-bundle/chunks/{delete-LPEIF7RU.js → delete-BHK7VB2Z.js} +5 -7
  297. package/dist/cli-bundle/chunks/{delete-LPEIF7RU.js.map → delete-BHK7VB2Z.js.map} +1 -1
  298. package/dist/cli-bundle/chunks/{delete-724EQ6OS.js → delete-LSVHAB4Y.js} +7 -9
  299. package/dist/cli-bundle/chunks/{delete-724EQ6OS.js.map → delete-LSVHAB4Y.js.map} +1 -1
  300. package/dist/cli-bundle/chunks/{deps-RSBU4SIU.js → deps-4UDFJRUA.js} +8 -11
  301. package/dist/cli-bundle/chunks/{deps-RSBU4SIU.js.map → deps-4UDFJRUA.js.map} +1 -1
  302. package/dist/cli-bundle/chunks/{deps-T3Y6Y7RT.js → deps-XHYXWEPT.js} +6 -9
  303. package/dist/cli-bundle/chunks/{deps-T3Y6Y7RT.js.map → deps-XHYXWEPT.js.map} +1 -1
  304. package/dist/cli-bundle/chunks/{docs-IFS7HZPP.js → docs-26S44RXU.js} +8 -9
  305. package/dist/cli-bundle/chunks/{docs-IFS7HZPP.js.map → docs-26S44RXU.js.map} +1 -1
  306. package/dist/cli-bundle/chunks/{docs-75ZLCO3G.js → docs-GYZNVS26.js} +10 -11
  307. package/dist/cli-bundle/chunks/{docs-75ZLCO3G.js.map → docs-GYZNVS26.js.map} +1 -1
  308. package/dist/cli-bundle/chunks/{eval-L2KD7W3M.js → eval-PGRVIJQU.js} +12 -14
  309. package/dist/cli-bundle/chunks/{eval-L2KD7W3M.js.map → eval-PGRVIJQU.js.map} +1 -1
  310. package/dist/cli-bundle/chunks/{eval-QGR7JCQO.js → eval-UYF3ZPVO.js} +10 -12
  311. package/dist/cli-bundle/chunks/{eval-QGR7JCQO.js.map → eval-UYF3ZPVO.js.map} +1 -1
  312. package/dist/cli-bundle/chunks/{extension-YQF4CPIR.js → extension-CPSLJQVE.js} +12 -7
  313. package/dist/cli-bundle/chunks/{extension-3JYWJ5K2.js → extension-CXJ6RELI.js} +12 -7
  314. package/dist/cli-bundle/chunks/{files-EPEJMJHQ.js → files-MBNICQFM.js} +9 -11
  315. package/dist/cli-bundle/chunks/{files-EPEJMJHQ.js.map → files-MBNICQFM.js.map} +1 -1
  316. package/dist/cli-bundle/chunks/{files-5BQWDRDT.js → files-NQHEXUZD.js} +11 -13
  317. package/dist/cli-bundle/chunks/{files-5BQWDRDT.js.map → files-NQHEXUZD.js.map} +1 -1
  318. package/dist/cli-bundle/chunks/{focus-RWGKD76E.js → focus-DWYIG7GU.js} +10 -14
  319. package/dist/cli-bundle/chunks/{focus-RWGKD76E.js.map → focus-DWYIG7GU.js.map} +1 -1
  320. package/dist/cli-bundle/chunks/{focus-DQVJAPOE.js → focus-XZW5423D.js} +8 -12
  321. package/dist/cli-bundle/chunks/{focus-DQVJAPOE.js.map → focus-XZW5423D.js.map} +1 -1
  322. package/dist/cli-bundle/chunks/{gc-BEJMQT64.js → gc-7GQYOS2G.js} +3 -3
  323. package/dist/cli-bundle/chunks/{gc-JEFQDJPA.js → gc-LPVMKJQJ.js} +3 -3
  324. package/dist/cli-bundle/chunks/{get-LQG6PEVG.js → get-A7MAOHCU.js} +10 -13
  325. package/dist/cli-bundle/chunks/{get-LQG6PEVG.js.map → get-A7MAOHCU.js.map} +1 -1
  326. package/dist/cli-bundle/chunks/{get-WVN75H42.js → get-DSDEKJ3L.js} +12 -15
  327. package/dist/cli-bundle/chunks/{get-WVN75H42.js.map → get-DSDEKJ3L.js.map} +1 -1
  328. package/dist/cli-bundle/chunks/{health-JJJOY7DJ.js → health-3IPFLKXB.js} +17 -17
  329. package/dist/cli-bundle/chunks/{health-P67NZ6TT.js → health-GZXGBZ36.js} +17 -17
  330. package/dist/cli-bundle/chunks/{history-RUKPKNY7.js → history-NERDJNUB.js} +8 -10
  331. package/dist/cli-bundle/chunks/history-WSZHY3PN.js +18 -0
  332. package/dist/cli-bundle/chunks/{history-compact-NQ7VPRVT.js → history-compact-2WRZ2WK4.js} +11 -14
  333. package/dist/cli-bundle/chunks/{history-compact-NQ7VPRVT.js.map → history-compact-2WRZ2WK4.js.map} +1 -1
  334. package/dist/cli-bundle/chunks/{history-compact-ZAOWR7GD.js → history-compact-HR7BB4LR.js} +13 -16
  335. package/dist/cli-bundle/chunks/{history-compact-ZAOWR7GD.js.map → history-compact-HR7BB4LR.js.map} +1 -1
  336. package/dist/cli-bundle/chunks/history-redact-MP6CH7U5.js +19 -0
  337. package/dist/cli-bundle/chunks/{history-redact-YY4XYVEP.js → history-redact-O3NBCNWC.js} +9 -11
  338. package/dist/cli-bundle/chunks/{history-repair-EHL4ODQY.js → history-repair-LCMOS45X.js} +11 -14
  339. package/dist/cli-bundle/chunks/{history-repair-EHL4ODQY.js.map → history-repair-LCMOS45X.js.map} +1 -1
  340. package/dist/cli-bundle/chunks/{history-repair-YSQH6SY6.js → history-repair-XA3LC4GA.js} +13 -16
  341. package/dist/cli-bundle/chunks/{history-repair-YSQH6SY6.js.map → history-repair-XA3LC4GA.js.map} +1 -1
  342. package/dist/cli-bundle/chunks/{init-HBFGYS66.js → init-64XDLQJB.js} +12 -11
  343. package/dist/cli-bundle/chunks/init-PAX32BJA.js +22 -0
  344. package/dist/cli-bundle/chunks/{learnings-KFQO7GEZ.js → learnings-JR6MA5TI.js} +9 -11
  345. package/dist/cli-bundle/chunks/{learnings-KFQO7GEZ.js.map → learnings-JR6MA5TI.js.map} +1 -1
  346. package/dist/cli-bundle/chunks/{learnings-J555ZFPD.js → learnings-LPKCSJX7.js} +11 -13
  347. package/dist/cli-bundle/chunks/{learnings-J555ZFPD.js.map → learnings-LPKCSJX7.js.map} +1 -1
  348. package/dist/cli-bundle/chunks/{list-C7R33MD5.js → list-DNBJVO3E.js} +10 -10
  349. package/dist/cli-bundle/chunks/{list-DSN6UNFB.js → list-G5Y65VF6.js} +10 -10
  350. package/dist/cli-bundle/chunks/next-BCERKDUR.js +277 -0
  351. package/dist/cli-bundle/chunks/next-BCERKDUR.js.map +7 -0
  352. package/dist/cli-bundle/chunks/next-FYTQF6HG.js +274 -0
  353. package/dist/cli-bundle/chunks/next-FYTQF6HG.js.map +1 -0
  354. package/dist/cli-bundle/chunks/{notes-V4VNIQL4.js → notes-2BMU3VVQ.js} +9 -11
  355. package/dist/cli-bundle/chunks/{notes-V4VNIQL4.js.map → notes-2BMU3VVQ.js.map} +1 -1
  356. package/dist/cli-bundle/chunks/{notes-VYJFN2A3.js → notes-6KTGO2OJ.js} +11 -13
  357. package/dist/cli-bundle/chunks/{notes-VYJFN2A3.js.map → notes-6KTGO2OJ.js.map} +1 -1
  358. package/dist/cli-bundle/chunks/{plan-RBHQ5PO7.js → plan-4WXEQCTN.js} +15 -18
  359. package/dist/cli-bundle/chunks/{plan-RBHQ5PO7.js.map → plan-4WXEQCTN.js.map} +1 -1
  360. package/dist/cli-bundle/chunks/{plan-DHRSVSHR.js → plan-RKZHQVXR.js} +17 -20
  361. package/dist/cli-bundle/chunks/{plan-DHRSVSHR.js.map → plan-RKZHQVXR.js.map} +1 -1
  362. package/dist/cli-bundle/chunks/profile-4OMM32CD.js +1235 -0
  363. package/dist/cli-bundle/chunks/profile-4OMM32CD.js.map +7 -0
  364. package/dist/cli-bundle/chunks/profile-QLER5ENE.js +1197 -0
  365. package/dist/cli-bundle/chunks/profile-QLER5ENE.js.map +1 -0
  366. package/dist/cli-bundle/chunks/{register-list-query-OM3E2KMY.js → register-list-query-7LV46VAU.js} +45 -21
  367. package/dist/cli-bundle/chunks/register-list-query-7LV46VAU.js.map +1 -0
  368. package/dist/cli-bundle/chunks/{register-list-query-CCMHGZTF.js → register-list-query-SNG5PGA4.js} +44 -20
  369. package/dist/cli-bundle/chunks/register-list-query-SNG5PGA4.js.map +7 -0
  370. package/dist/cli-bundle/chunks/{register-mutation-N3CDEGZU.js → register-mutation-ENNDUAZG.js} +106 -40
  371. package/dist/cli-bundle/chunks/register-mutation-ENNDUAZG.js.map +1 -0
  372. package/dist/cli-bundle/chunks/{register-mutation-UXTTWL6N.js → register-mutation-KK7PHYYU.js} +105 -39
  373. package/dist/cli-bundle/chunks/register-mutation-KK7PHYYU.js.map +7 -0
  374. package/dist/cli-bundle/chunks/{register-operations-UDIFMQKD.js → register-operations-C6OWLDSH.js} +32 -34
  375. package/dist/cli-bundle/chunks/{register-operations-UDIFMQKD.js.map → register-operations-C6OWLDSH.js.map} +1 -1
  376. package/dist/cli-bundle/chunks/{register-operations-R2FLOCRI.js → register-operations-HZ6XERQG.js} +30 -32
  377. package/dist/cli-bundle/chunks/{register-operations-R2FLOCRI.js.map → register-operations-HZ6XERQG.js.map} +1 -1
  378. package/dist/cli-bundle/chunks/{register-setup-G5LTSFYK.js → register-setup-P67EMBDJ.js} +68 -25
  379. package/dist/cli-bundle/chunks/register-setup-P67EMBDJ.js.map +1 -0
  380. package/dist/cli-bundle/chunks/{register-setup-TWHKICM2.js → register-setup-ZKJ53RS7.js} +67 -24
  381. package/dist/cli-bundle/chunks/register-setup-ZKJ53RS7.js.map +7 -0
  382. package/dist/cli-bundle/chunks/{restore-LL2WLEDG.js → restore-4MHZFJ2E.js} +9 -11
  383. package/dist/cli-bundle/chunks/restore-YALDGTQR.js +17 -0
  384. package/dist/cli-bundle/chunks/{scheduling-shortcuts-M4H2ZI64.js → scheduling-shortcuts-LB6DOLRL.js} +14 -16
  385. package/dist/cli-bundle/chunks/{scheduling-shortcuts-M4H2ZI64.js.map → scheduling-shortcuts-LB6DOLRL.js.map} +1 -1
  386. package/dist/cli-bundle/chunks/{scheduling-shortcuts-255GI3BU.js → scheduling-shortcuts-UTOYKLXQ.js} +12 -14
  387. package/dist/cli-bundle/chunks/{scheduling-shortcuts-255GI3BU.js.map → scheduling-shortcuts-UTOYKLXQ.js.map} +1 -1
  388. package/dist/cli-bundle/chunks/schema-73HR2OJW.js +75 -0
  389. package/dist/cli-bundle/chunks/schema-U6LJKSIR.js +71 -0
  390. package/dist/cli-bundle/chunks/{search-2EI6EAXH.js → search-AXPXKZER.js} +10 -12
  391. package/dist/cli-bundle/chunks/{search-QBFBLQRO.js → search-KILGT37L.js} +10 -12
  392. package/dist/cli-bundle/chunks/{stats-TKC6CAKB.js → stats-PSYVVTNZ.js} +21 -13
  393. package/dist/cli-bundle/chunks/stats-PSYVVTNZ.js.map +1 -0
  394. package/dist/cli-bundle/chunks/{stats-TCW2SZQG.js → stats-W5KNVJWQ.js} +20 -12
  395. package/dist/cli-bundle/chunks/stats-W5KNVJWQ.js.map +7 -0
  396. package/dist/cli-bundle/chunks/{telemetry-BT2VSWU2.js → telemetry-BZUF6H7G.js} +4 -4
  397. package/dist/cli-bundle/chunks/{telemetry-LQ6FRTUT.js → telemetry-GAHHQTOS.js} +4 -4
  398. package/dist/cli-bundle/chunks/test-ACD52Z3S.js +35 -0
  399. package/dist/cli-bundle/chunks/test-ACD52Z3S.js.map +7 -0
  400. package/dist/cli-bundle/chunks/{test-NV2DRPUS.js → test-PWDIZ255.js} +15 -16
  401. package/dist/cli-bundle/chunks/test-PWDIZ255.js.map +1 -0
  402. package/dist/cli-bundle/chunks/{test-all-DZ76VTPQ.js → test-all-L2MDDUCA.js} +20 -22
  403. package/dist/cli-bundle/chunks/{test-all-DZ76VTPQ.js.map → test-all-L2MDDUCA.js.map} +1 -1
  404. package/dist/cli-bundle/chunks/{test-all-REW67LXT.js → test-all-RBZ6DLU2.js} +18 -20
  405. package/dist/cli-bundle/chunks/{test-all-REW67LXT.js.map → test-all-RBZ6DLU2.js.map} +1 -1
  406. package/dist/cli-bundle/chunks/{test-runs-PX73DMMI.js → test-runs-PLRAZEFW.js} +5 -6
  407. package/dist/cli-bundle/chunks/test-runs-PLRAZEFW.js.map +7 -0
  408. package/dist/cli-bundle/chunks/{test-runs-FQ5WNQLP.js → test-runs-UXIXPDKU.js} +6 -7
  409. package/dist/cli-bundle/chunks/test-runs-UXIXPDKU.js.map +1 -0
  410. package/dist/cli-bundle/chunks/update-AMRSOIWP.js +24 -0
  411. package/dist/cli-bundle/chunks/update-AMRSOIWP.js.map +7 -0
  412. package/dist/cli-bundle/chunks/update-KFX2SIAC.js +28 -0
  413. package/dist/cli-bundle/chunks/update-KFX2SIAC.js.map +1 -0
  414. package/dist/cli-bundle/chunks/{update-many-Q5ZEI64S.js → update-many-RNSBX2TA.js} +35 -36
  415. package/dist/cli-bundle/chunks/{update-many-Q5ZEI64S.js.map → update-many-RNSBX2TA.js.map} +1 -1
  416. package/dist/cli-bundle/chunks/{update-many-2ILP6E4Y.js → update-many-Z5GJS5LC.js} +33 -34
  417. package/dist/cli-bundle/chunks/{update-many-2ILP6E4Y.js.map → update-many-Z5GJS5LC.js.map} +1 -1
  418. package/dist/cli-bundle/chunks/{upgrade-FOZKQTQF.js → upgrade-BRL6KCOJ.js} +13 -8
  419. package/dist/cli-bundle/chunks/{upgrade-FOZKQTQF.js.map → upgrade-BRL6KCOJ.js.map} +1 -1
  420. package/dist/cli-bundle/chunks/{upgrade-DHL74PQH.js → upgrade-HAK6JG2O.js} +11 -6
  421. package/dist/cli-bundle/chunks/{upgrade-DHL74PQH.js.map → upgrade-HAK6JG2O.js.map} +1 -1
  422. package/dist/cli-bundle/chunks/{validate-HYZNIB6W.js → validate-MTUVL5VC.js} +38 -28
  423. package/dist/cli-bundle/chunks/validate-MTUVL5VC.js.map +7 -0
  424. package/dist/cli-bundle/chunks/{validate-54SYJ7QW.js → validate-X5W76YJL.js} +39 -29
  425. package/dist/cli-bundle/chunks/validate-X5W76YJL.js.map +1 -0
  426. package/dist/cli-bundle/main.js +95 -724
  427. package/dist/cli-bundle/main.js.map +4 -4
  428. package/dist/core/config/positional-value.d.ts +2 -0
  429. package/dist/core/config/positional-value.js +2 -2
  430. package/dist/core/config/positional-value.js.map +1 -1
  431. package/dist/core/extensions/activation-summary-markdown.d.ts +71 -0
  432. package/dist/core/extensions/activation-summary-markdown.js +151 -0
  433. package/dist/core/extensions/activation-summary-markdown.js.map +1 -0
  434. package/dist/core/extensions/activation-summary.d.ts +2 -0
  435. package/dist/core/extensions/activation-summary.js +3 -2
  436. package/dist/core/extensions/activation-summary.js.map +1 -1
  437. package/dist/core/extensions/capability-usage.d.ts +1 -1
  438. package/dist/core/extensions/capability-usage.js +4 -3
  439. package/dist/core/extensions/capability-usage.js.map +1 -1
  440. package/dist/core/extensions/extension-policy.d.ts +18 -3
  441. package/dist/core/extensions/extension-policy.js +116 -106
  442. package/dist/core/extensions/extension-policy.js.map +1 -1
  443. package/dist/core/extensions/extension-registries.js +3 -2
  444. package/dist/core/extensions/extension-registries.js.map +1 -1
  445. package/dist/core/extensions/extension-types.d.ts +21 -1
  446. package/dist/core/extensions/extension-types.js +3 -2
  447. package/dist/core/extensions/extension-types.js.map +1 -1
  448. package/dist/core/extensions/loader.js +439 -232
  449. package/dist/core/extensions/loader.js.map +1 -1
  450. package/dist/core/fs/fs-utils.js +27 -2
  451. package/dist/core/fs/fs-utils.js.map +1 -1
  452. package/dist/core/item/actionability.d.ts +57 -0
  453. package/dist/core/item/actionability.js +178 -0
  454. package/dist/core/item/actionability.js.map +1 -0
  455. package/dist/core/item/item-format.js +523 -410
  456. package/dist/core/item/item-format.js.map +1 -1
  457. package/dist/core/item/type-registry.js +18 -45
  458. package/dist/core/item/type-registry.js.map +1 -1
  459. package/dist/core/profile/profile-describe.d.ts +64 -0
  460. package/dist/core/profile/profile-describe.js +83 -0
  461. package/dist/core/profile/profile-describe.js.map +1 -0
  462. package/dist/core/profile/profile-lint.d.ts +53 -0
  463. package/dist/core/profile/profile-lint.js +422 -0
  464. package/dist/core/profile/profile-lint.js.map +1 -0
  465. package/dist/core/profile/profile-plan.d.ts +145 -0
  466. package/dist/core/profile/profile-plan.js +0 -0
  467. package/dist/core/profile/profile-plan.js.map +1 -0
  468. package/dist/core/profile/profile-presets.d.ts +218 -0
  469. package/dist/core/profile/profile-presets.js +325 -0
  470. package/dist/core/profile/profile-presets.js.map +1 -0
  471. package/dist/core/schema/fields-file.js +25 -25
  472. package/dist/core/schema/fields-file.js.map +1 -1
  473. package/dist/core/schema/item-types-file.js +3 -3
  474. package/dist/core/schema/item-types-file.js.map +1 -1
  475. package/dist/core/schema/runtime-schema.js +4 -4
  476. package/dist/core/schema/runtime-schema.js.map +1 -1
  477. package/dist/core/schema/status-defs-file.js +3 -3
  478. package/dist/core/schema/status-defs-file.js.map +1 -1
  479. package/dist/core/shared/serialization.js +83 -62
  480. package/dist/core/shared/serialization.js.map +1 -1
  481. package/dist/core/store/item-store.d.ts +1 -0
  482. package/dist/core/store/item-store.js +16 -8
  483. package/dist/core/store/item-store.js.map +1 -1
  484. package/dist/core/store/paths.js +4 -32
  485. package/dist/core/store/paths.js.map +1 -1
  486. package/dist/core/store/settings.js +14 -14
  487. package/dist/core/store/settings.js.map +1 -1
  488. package/dist/core/telemetry/observability.js +50 -54
  489. package/dist/core/telemetry/observability.js.map +1 -1
  490. package/dist/core/telemetry/runtime.js +11 -2
  491. package/dist/core/telemetry/runtime.js.map +1 -1
  492. package/dist/core/test/background-runs.js +3 -2
  493. package/dist/core/test/background-runs.js.map +1 -1
  494. package/dist/core/validate/linked-artifact-reference.d.ts +24 -0
  495. package/dist/core/validate/linked-artifact-reference.js +41 -0
  496. package/dist/core/validate/linked-artifact-reference.js.map +1 -0
  497. package/dist/mcp/server.js +540 -420
  498. package/dist/mcp/server.js.map +1 -1
  499. package/dist/mcp/tool-definitions.js +33 -2
  500. package/dist/mcp/tool-definitions.js.map +1 -1
  501. package/dist/sdk/cli-contracts/commander-types.d.ts +1 -0
  502. package/dist/sdk/cli-contracts/commander-types.js +15 -2
  503. package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
  504. package/dist/sdk/cli-contracts/enum-contracts.d.ts +3 -3
  505. package/dist/sdk/cli-contracts/enum-contracts.js +6 -2
  506. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  507. package/dist/sdk/cli-contracts/flag-contracts.d.ts +149 -0
  508. package/dist/sdk/cli-contracts/flag-contracts.js +1514 -0
  509. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -0
  510. package/dist/sdk/cli-contracts/string-lists.d.ts +14 -0
  511. package/dist/sdk/cli-contracts/string-lists.js +20 -0
  512. package/dist/sdk/cli-contracts/string-lists.js.map +1 -0
  513. package/dist/sdk/cli-contracts/tool-option-contracts.d.ts +1 -1
  514. package/dist/sdk/cli-contracts/tool-option-contracts.js +51 -109
  515. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  516. package/dist/sdk/cli-contracts/tool-parameter-tables.d.ts +17 -0
  517. package/dist/sdk/cli-contracts/tool-parameter-tables.js +54 -5
  518. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  519. package/dist/sdk/cli-contracts/tool-schema.d.ts +74 -0
  520. package/dist/sdk/cli-contracts/tool-schema.js +871 -0
  521. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -0
  522. package/dist/sdk/cli-contracts.d.ts +13 -193
  523. package/dist/sdk/cli-contracts.js +5 -2277
  524. package/dist/sdk/cli-contracts.js.map +1 -1
  525. package/dist/sdk/compose.d.ts +11 -5
  526. package/dist/sdk/compose.js +240 -124
  527. package/dist/sdk/compose.js.map +1 -1
  528. package/dist/sdk/define.d.ts +14 -0
  529. package/dist/sdk/define.js +17 -2
  530. package/dist/sdk/define.js.map +1 -1
  531. package/dist/sdk/index.d.ts +14 -3
  532. package/dist/sdk/index.js +14 -3
  533. package/dist/sdk/index.js.map +1 -1
  534. package/dist/sdk/testing.d.ts +82 -2
  535. package/dist/sdk/testing.js +74 -3
  536. package/dist/sdk/testing.js.map +1 -1
  537. package/docs/AGENT_GUIDE.md +2 -0
  538. package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
  539. package/docs/COMMANDS.md +37 -0
  540. package/docs/EXTENSIONS.md +12 -13
  541. package/docs/RELEASING.md +8 -4
  542. package/docs/SDK.md +184 -17
  543. package/docs/TESTING.md +12 -0
  544. package/docs/examples/policy-restricted-extension/README.md +6 -0
  545. package/docs/examples/policy-restricted-extension/index.ts +40 -0
  546. package/docs/examples/policy-restricted-extension/manifest.json +2 -2
  547. package/docs/examples/starter-extension/README.md +14 -2
  548. package/docs/examples/starter-extension/{index.js → index.ts} +51 -6
  549. package/docs/examples/starter-extension/manifest.json +2 -2
  550. package/package.json +20 -7
  551. package/packages/pm-beads/extensions/beads/index.ts +3 -3
  552. package/packages/pm-beads/extensions/beads/manifest.json +2 -2
  553. package/packages/pm-beads/extensions/beads/runtime-loader.ts +19 -7
  554. package/packages/pm-beads/extensions/beads/runtime.ts +155 -37
  555. package/packages/pm-calendar/extensions/calendar/index.ts +3 -3
  556. package/packages/pm-calendar/extensions/calendar/manifest.json +2 -2
  557. package/packages/pm-calendar/extensions/calendar/runtime.ts +2 -2
  558. package/packages/pm-command-kit/extensions/command-kit/index.ts +1 -1
  559. package/packages/pm-command-kit/extensions/command-kit/manifest.json +2 -2
  560. package/packages/pm-governance-audit/extensions/governance-audit/index.ts +2 -2
  561. package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +2 -2
  562. package/packages/pm-governance-audit/extensions/governance-audit/runtime.ts +1 -1
  563. package/packages/pm-guide-shell/extensions/guide-shell/index.ts +2 -2
  564. package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +2 -2
  565. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +1 -1
  566. package/packages/pm-kanban/README.md +97 -0
  567. package/packages/pm-kanban/extensions/kanban/index.ts +191 -0
  568. package/packages/pm-kanban/extensions/kanban/manifest.json +19 -0
  569. package/packages/pm-kanban/package.json +57 -0
  570. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.ts +1 -1
  571. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/manifest.json +2 -2
  572. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.ts +2 -2
  573. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +2 -2
  574. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.ts +1 -1
  575. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +2 -2
  576. package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +2 -2
  577. package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +1 -1
  578. package/packages/pm-templates/extensions/templates/index.ts +2 -2
  579. package/packages/pm-templates/extensions/templates/manifest.json +2 -2
  580. package/packages/pm-templates/extensions/templates/runtime.ts +1 -1
  581. package/packages/pm-todos/extensions/todos/index.ts +3 -3
  582. package/packages/pm-todos/extensions/todos/manifest.json +2 -2
  583. package/packages/pm-todos/extensions/todos/runtime-loader.ts +19 -7
  584. package/packages/pm-todos/extensions/todos/runtime.ts +177 -43
  585. package/plugins/pm-claude/scripts/pm-mcp-server.mjs +2 -2
  586. package/plugins/pm-codex/scripts/pm-mcp-server.mjs +2 -2
  587. package/scripts/bundle-cli.mjs +1 -1
  588. package/dist/cli-bundle/chunks/activity-54TXGJ2T.js +0 -18
  589. package/dist/cli-bundle/chunks/aggregate-63NWNIBR.js.map +0 -1
  590. package/dist/cli-bundle/chunks/aggregate-YHCYX2EV.js.map +0 -7
  591. package/dist/cli-bundle/chunks/chunk-6EL7SW5C.js.map +0 -7
  592. package/dist/cli-bundle/chunks/chunk-6W3Y65PL.js.map +0 -7
  593. package/dist/cli-bundle/chunks/chunk-AEACLRVH.js.map +0 -7
  594. package/dist/cli-bundle/chunks/chunk-B74BP6IS.js +0 -78
  595. package/dist/cli-bundle/chunks/chunk-B74BP6IS.js.map +0 -7
  596. package/dist/cli-bundle/chunks/chunk-BFFO3AIB.js.map +0 -1
  597. package/dist/cli-bundle/chunks/chunk-C4C3EJCJ.js.map +0 -7
  598. package/dist/cli-bundle/chunks/chunk-EYPINTFR.js.map +0 -7
  599. package/dist/cli-bundle/chunks/chunk-FBLT6WGK.js +0 -75
  600. package/dist/cli-bundle/chunks/chunk-FBLT6WGK.js.map +0 -1
  601. package/dist/cli-bundle/chunks/chunk-GQYJEEFX.js.map +0 -1
  602. package/dist/cli-bundle/chunks/chunk-HBAEFWX3.js.map +0 -7
  603. package/dist/cli-bundle/chunks/chunk-HC2S36NB.js.map +0 -1
  604. package/dist/cli-bundle/chunks/chunk-IAP5KYBQ.js.map +0 -1
  605. package/dist/cli-bundle/chunks/chunk-INPHFO33.js +0 -764
  606. package/dist/cli-bundle/chunks/chunk-INPHFO33.js.map +0 -7
  607. package/dist/cli-bundle/chunks/chunk-IOT6WRL5.js +0 -86
  608. package/dist/cli-bundle/chunks/chunk-IOT6WRL5.js.map +0 -7
  609. package/dist/cli-bundle/chunks/chunk-ISEKN64V.js +0 -35
  610. package/dist/cli-bundle/chunks/chunk-ISEKN64V.js.map +0 -7
  611. package/dist/cli-bundle/chunks/chunk-J3NMWFIN.js +0 -115
  612. package/dist/cli-bundle/chunks/chunk-J3NMWFIN.js.map +0 -1
  613. package/dist/cli-bundle/chunks/chunk-J7I4C5ZB.js.map +0 -7
  614. package/dist/cli-bundle/chunks/chunk-JKL6HRMV.js.map +0 -7
  615. package/dist/cli-bundle/chunks/chunk-KJZOSF7J.js.map +0 -1
  616. package/dist/cli-bundle/chunks/chunk-L7UXKP2I.js.map +0 -1
  617. package/dist/cli-bundle/chunks/chunk-LNEDHJNQ.js.map +0 -1
  618. package/dist/cli-bundle/chunks/chunk-M6TUBOGW.js.map +0 -1
  619. package/dist/cli-bundle/chunks/chunk-MEXZ5XUM.js.map +0 -7
  620. package/dist/cli-bundle/chunks/chunk-N5B6WZC5.js.map +0 -1
  621. package/dist/cli-bundle/chunks/chunk-NJ73ALW2.js +0 -761
  622. package/dist/cli-bundle/chunks/chunk-NJ73ALW2.js.map +0 -1
  623. package/dist/cli-bundle/chunks/chunk-NVXGVEFD.js +0 -83
  624. package/dist/cli-bundle/chunks/chunk-NVXGVEFD.js.map +0 -1
  625. package/dist/cli-bundle/chunks/chunk-OF7V47P3.js.map +0 -1
  626. package/dist/cli-bundle/chunks/chunk-OHDQNKJB.js.map +0 -7
  627. package/dist/cli-bundle/chunks/chunk-PEL2NLQE.js +0 -118
  628. package/dist/cli-bundle/chunks/chunk-PEL2NLQE.js.map +0 -7
  629. package/dist/cli-bundle/chunks/chunk-PRVTGX64.js.map +0 -7
  630. package/dist/cli-bundle/chunks/chunk-RAWA3Y7O.js.map +0 -1
  631. package/dist/cli-bundle/chunks/chunk-SMXSDY7J.js.map +0 -7
  632. package/dist/cli-bundle/chunks/chunk-SUREE24M.js.map +0 -1
  633. package/dist/cli-bundle/chunks/chunk-TKPP4GOO.js +0 -654
  634. package/dist/cli-bundle/chunks/chunk-TKPP4GOO.js.map +0 -1
  635. package/dist/cli-bundle/chunks/chunk-VSAABFGQ.js.map +0 -1
  636. package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js +0 -32
  637. package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js.map +0 -1
  638. package/dist/cli-bundle/chunks/chunk-XVYKWZNL.js.map +0 -7
  639. package/dist/cli-bundle/chunks/chunk-XXKV4UWE.js.map +0 -7
  640. package/dist/cli-bundle/chunks/chunk-ZLWRPBOW.js.map +0 -1
  641. package/dist/cli-bundle/chunks/chunk-ZV7IQ23N.js +0 -657
  642. package/dist/cli-bundle/chunks/chunk-ZV7IQ23N.js.map +0 -7
  643. package/dist/cli-bundle/chunks/close-JEBZXONN.js +0 -15
  644. package/dist/cli-bundle/chunks/config-NCNNWF6R.js.map +0 -7
  645. package/dist/cli-bundle/chunks/config-SW3U7XP2.js.map +0 -1
  646. package/dist/cli-bundle/chunks/context-55VEOYI3.js.map +0 -1
  647. package/dist/cli-bundle/chunks/context-5LB7UGKE.js.map +0 -7
  648. package/dist/cli-bundle/chunks/contracts-JXFGBOYT.js.map +0 -1
  649. package/dist/cli-bundle/chunks/contracts-SY6PDFIK.js.map +0 -7
  650. package/dist/cli-bundle/chunks/create-CLSCHGJJ.js +0 -30
  651. package/dist/cli-bundle/chunks/history-ALTM2RRP.js +0 -20
  652. package/dist/cli-bundle/chunks/history-redact-5YGLWUDH.js +0 -21
  653. package/dist/cli-bundle/chunks/init-C4CRHW22.js +0 -21
  654. package/dist/cli-bundle/chunks/register-list-query-CCMHGZTF.js.map +0 -7
  655. package/dist/cli-bundle/chunks/register-list-query-OM3E2KMY.js.map +0 -1
  656. package/dist/cli-bundle/chunks/register-mutation-N3CDEGZU.js.map +0 -1
  657. package/dist/cli-bundle/chunks/register-mutation-UXTTWL6N.js.map +0 -7
  658. package/dist/cli-bundle/chunks/register-setup-G5LTSFYK.js.map +0 -1
  659. package/dist/cli-bundle/chunks/register-setup-TWHKICM2.js.map +0 -7
  660. package/dist/cli-bundle/chunks/restore-LQHXBAY5.js +0 -19
  661. package/dist/cli-bundle/chunks/schema-C6QA367T.js.map +0 -7
  662. package/dist/cli-bundle/chunks/schema-QO5I4FBL.js.map +0 -1
  663. package/dist/cli-bundle/chunks/stats-TCW2SZQG.js.map +0 -7
  664. package/dist/cli-bundle/chunks/stats-TKC6CAKB.js.map +0 -1
  665. package/dist/cli-bundle/chunks/test-WA6RZGM2.js +0 -36
  666. package/dist/cli-bundle/chunks/test-runs-FQ5WNQLP.js.map +0 -1
  667. package/dist/cli-bundle/chunks/test-runs-PX73DMMI.js.map +0 -7
  668. package/dist/cli-bundle/chunks/update-BSKMQOYH.js +0 -28
  669. package/dist/cli-bundle/chunks/update-FIGYNQ2I.js +0 -24
  670. package/dist/cli-bundle/chunks/validate-54SYJ7QW.js.map +0 -1
  671. package/dist/cli-bundle/chunks/validate-HYZNIB6W.js.map +0 -7
  672. package/docs/examples/policy-restricted-extension/index.js +0 -21
  673. package/packages/pm-beads/extensions/beads/index.js +0 -64
  674. package/packages/pm-beads/extensions/beads/runtime-loader.js +0 -86
  675. package/packages/pm-beads/extensions/beads/runtime.js +0 -482
  676. package/packages/pm-calendar/extensions/calendar/index.js +0 -150
  677. package/packages/pm-calendar/extensions/calendar/runtime.js +0 -126
  678. package/packages/pm-command-kit/extensions/command-kit/index.js +0 -181
  679. package/packages/pm-governance-audit/extensions/governance-audit/index.js +0 -177
  680. package/packages/pm-governance-audit/extensions/governance-audit/runtime.js +0 -153
  681. package/packages/pm-guide-shell/extensions/guide-shell/index.js +0 -98
  682. package/packages/pm-guide-shell/extensions/guide-shell/runtime.js +0 -294
  683. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.js +0 -18
  684. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.js +0 -124
  685. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.js +0 -110
  686. package/packages/pm-search-advanced/extensions/search-advanced/index.js +0 -258
  687. package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +0 -361
  688. package/packages/pm-templates/extensions/templates/index.js +0 -132
  689. package/packages/pm-templates/extensions/templates/runtime.js +0 -35
  690. package/packages/pm-todos/extensions/todos/index.js +0 -81
  691. package/packages/pm-todos/extensions/todos/runtime-loader.js +0 -86
  692. package/packages/pm-todos/extensions/todos/runtime.js +0 -545
  693. /package/dist/cli-bundle/chunks/{activity-54TXGJ2T.js.map → activity-AW6XVFH6.js.map} +0 -0
  694. /package/dist/cli-bundle/chunks/{activity-N7RVTLBQ.js.map → activity-DBLQVIP6.js.map} +0 -0
  695. /package/dist/cli-bundle/chunks/{chunk-F32L4HR6.js.map → chunk-27BXPBAY.js.map} +0 -0
  696. /package/dist/cli-bundle/chunks/{chunk-5BBEWX6C.js.map → chunk-3VGN2UWE.js.map} +0 -0
  697. /package/dist/cli-bundle/chunks/{chunk-FMWW2JDU.js.map → chunk-AXIDKKAT.js.map} +0 -0
  698. /package/dist/cli-bundle/chunks/{chunk-TIM4OD74.js.map → chunk-BDTISOSD.js.map} +0 -0
  699. /package/dist/cli-bundle/chunks/{chunk-CZIFFMZI.js.map → chunk-DDPTYJIM.js.map} +0 -0
  700. /package/dist/cli-bundle/chunks/{chunk-AYPQUFCX.js.map → chunk-EJUDVUYZ.js.map} +0 -0
  701. /package/dist/cli-bundle/chunks/{chunk-EOGBMLCE.js.map → chunk-EVMTBV6V.js.map} +0 -0
  702. /package/dist/cli-bundle/chunks/{chunk-CG3KP6I5.js.map → chunk-G7I7DEZA.js.map} +0 -0
  703. /package/dist/cli-bundle/chunks/{chunk-F4BNR2IN.js.map → chunk-HYTGA6GI.js.map} +0 -0
  704. /package/dist/cli-bundle/chunks/{chunk-2WCYE3IF.js.map → chunk-HZZEHPRG.js.map} +0 -0
  705. /package/dist/cli-bundle/chunks/{chunk-YV2OSAMS.js.map → chunk-IJYK2T43.js.map} +0 -0
  706. /package/dist/cli-bundle/chunks/{chunk-QOUOMPHO.js.map → chunk-JPECA746.js.map} +0 -0
  707. /package/dist/cli-bundle/chunks/{chunk-OQ2E64FH.js.map → chunk-KNPEF7QG.js.map} +0 -0
  708. /package/dist/cli-bundle/chunks/{chunk-3BKH2CL3.js.map → chunk-L5OEFZQG.js.map} +0 -0
  709. /package/dist/cli-bundle/chunks/{chunk-5S4ZGDB2.js.map → chunk-N74UMG5H.js.map} +0 -0
  710. /package/dist/cli-bundle/chunks/{chunk-IXAZI443.js.map → chunk-NFDPYAIP.js.map} +0 -0
  711. /package/dist/cli-bundle/chunks/{chunk-SKC4UTRP.js.map → chunk-NKZAN7BD.js.map} +0 -0
  712. /package/dist/cli-bundle/chunks/{chunk-JPJDP4VU.js.map → chunk-NWMZWYYB.js.map} +0 -0
  713. /package/dist/cli-bundle/chunks/{chunk-KKX4Z2SE.js.map → chunk-OTUHB4HS.js.map} +0 -0
  714. /package/dist/cli-bundle/chunks/{chunk-WB5BYQMF.js.map → chunk-SLMUGTK3.js.map} +0 -0
  715. /package/dist/cli-bundle/chunks/{chunk-I6QMJ2XT.js.map → chunk-WYDHYJPO.js.map} +0 -0
  716. /package/dist/cli-bundle/chunks/{chunk-KIEAK7YE.js.map → chunk-ZRP4VG5U.js.map} +0 -0
  717. /package/dist/cli-bundle/chunks/{close-JEBZXONN.js.map → close-E6ZZGCJY.js.map} +0 -0
  718. /package/dist/cli-bundle/chunks/{close-QHMVWM7M.js.map → close-TQYAAFJP.js.map} +0 -0
  719. /package/dist/cli-bundle/chunks/{create-O4VONGPG.js.map → context-B6275WPX.js.map} +0 -0
  720. /package/dist/cli-bundle/chunks/{create-CLSCHGJJ.js.map → context-OCZ3FJ4Z.js.map} +0 -0
  721. /package/dist/cli-bundle/chunks/{extension-YQF4CPIR.js.map → create-OH3BDGBB.js.map} +0 -0
  722. /package/dist/cli-bundle/chunks/{extension-3JYWJ5K2.js.map → create-RLRJMRTM.js.map} +0 -0
  723. /package/dist/cli-bundle/chunks/{history-ALTM2RRP.js.map → extension-CPSLJQVE.js.map} +0 -0
  724. /package/dist/cli-bundle/chunks/{history-RUKPKNY7.js.map → extension-CXJ6RELI.js.map} +0 -0
  725. /package/dist/cli-bundle/chunks/{gc-BEJMQT64.js.map → gc-7GQYOS2G.js.map} +0 -0
  726. /package/dist/cli-bundle/chunks/{gc-JEFQDJPA.js.map → gc-LPVMKJQJ.js.map} +0 -0
  727. /package/dist/cli-bundle/chunks/{health-JJJOY7DJ.js.map → health-3IPFLKXB.js.map} +0 -0
  728. /package/dist/cli-bundle/chunks/{health-P67NZ6TT.js.map → health-GZXGBZ36.js.map} +0 -0
  729. /package/dist/cli-bundle/chunks/{history-redact-YY4XYVEP.js.map → history-NERDJNUB.js.map} +0 -0
  730. /package/dist/cli-bundle/chunks/{history-redact-5YGLWUDH.js.map → history-WSZHY3PN.js.map} +0 -0
  731. /package/dist/cli-bundle/chunks/{init-C4CRHW22.js.map → history-redact-MP6CH7U5.js.map} +0 -0
  732. /package/dist/cli-bundle/chunks/{init-HBFGYS66.js.map → history-redact-O3NBCNWC.js.map} +0 -0
  733. /package/dist/cli-bundle/chunks/{list-C7R33MD5.js.map → init-64XDLQJB.js.map} +0 -0
  734. /package/dist/cli-bundle/chunks/{list-DSN6UNFB.js.map → init-PAX32BJA.js.map} +0 -0
  735. /package/dist/cli-bundle/chunks/{restore-LL2WLEDG.js.map → list-DNBJVO3E.js.map} +0 -0
  736. /package/dist/cli-bundle/chunks/{restore-LQHXBAY5.js.map → list-G5Y65VF6.js.map} +0 -0
  737. /package/dist/cli-bundle/chunks/{search-2EI6EAXH.js.map → restore-4MHZFJ2E.js.map} +0 -0
  738. /package/dist/cli-bundle/chunks/{search-QBFBLQRO.js.map → restore-YALDGTQR.js.map} +0 -0
  739. /package/dist/cli-bundle/chunks/{test-NV2DRPUS.js.map → schema-73HR2OJW.js.map} +0 -0
  740. /package/dist/cli-bundle/chunks/{test-WA6RZGM2.js.map → schema-U6LJKSIR.js.map} +0 -0
  741. /package/dist/cli-bundle/chunks/{update-BSKMQOYH.js.map → search-AXPXKZER.js.map} +0 -0
  742. /package/dist/cli-bundle/chunks/{update-FIGYNQ2I.js.map → search-KILGT37L.js.map} +0 -0
  743. /package/dist/cli-bundle/chunks/{telemetry-BT2VSWU2.js.map → telemetry-BZUF6H7G.js.map} +0 -0
  744. /package/dist/cli-bundle/chunks/{telemetry-LQ6FRTUT.js.map → telemetry-GAHHQTOS.js.map} +0 -0
@@ -10,7 +10,7 @@ import {
10
10
  parseLinkedTestMinLines,
11
11
  parseLinkedTestRegexList,
12
12
  parseLinkedTestStringList
13
- } from "./chunk-F4BNR2IN.js";
13
+ } from "./chunk-HYTGA6GI.js";
14
14
  import {
15
15
  assertNoUnknownCsvKeys,
16
16
  createStdinTokenResolver,
@@ -19,54 +19,43 @@ import {
19
19
  parseCsvKv,
20
20
  parseOptionalNumber,
21
21
  parseTags
22
- } from "./chunk-CZIFFMZI.js";
22
+ } from "./chunk-DDPTYJIM.js";
23
23
  import {
24
24
  getFocusedItem
25
- } from "./chunk-YV2OSAMS.js";
25
+ } from "./chunk-IJYK2T43.js";
26
26
  import {
27
27
  normalizeParentReferenceValue,
28
28
  validateMissingParentReference,
29
29
  validateSprintOrReleaseValue
30
- } from "./chunk-QOUOMPHO.js";
30
+ } from "./chunk-JPECA746.js";
31
31
  import {
32
32
  buildInvalidTypeError
33
- } from "./chunk-DTABLLVE.js";
33
+ } from "./chunk-LB6TP6MC.js";
34
34
  import {
35
35
  printError
36
- } from "./chunk-TIM4OD74.js";
36
+ } from "./chunk-BDTISOSD.js";
37
37
  import {
38
38
  acquireLock,
39
39
  appendHistoryEntry,
40
40
  applyRegisteredItemFieldDefaultsAndValidation,
41
41
  collectRegisteredItemFieldNames,
42
42
  createHistoryEntry,
43
+ generateItemId,
43
44
  locateItem,
45
+ normalizeItemId,
44
46
  parseRegisteredItemFieldAssignments
45
- } from "./chunk-OHDQNKJB.js";
46
- import {
47
- generateItemId,
48
- normalizeItemId
49
- } from "./chunk-B74BP6IS.js";
47
+ } from "./chunk-3K2M5OYU.js";
50
48
  import {
51
49
  canonicalDocument,
52
50
  collectRuntimeCreateFieldValues,
53
51
  normalizeFrontMatter,
54
52
  normalizeStatusInput,
55
53
  serializeItemDocument
56
- } from "./chunk-C4C3EJCJ.js";
57
- import {
58
- canonicalizeCommandOptionKey,
59
- commandOptionFlagLabel,
60
- resolveCommandOptionPolicyState,
61
- resolveItemTypeRegistry,
62
- resolveTypeDefinition,
63
- resolveTypeName,
64
- validateTypeOptions
65
- } from "./chunk-ZV7IQ23N.js";
54
+ } from "./chunk-BHO33VBQ.js";
66
55
  import {
67
56
  nowIso,
68
57
  resolveIsoOrRelative
69
- } from "./chunk-I6QMJ2XT.js";
58
+ } from "./chunk-WYDHYJPO.js";
70
59
  import {
71
60
  CONFIDENCE_TEXT_VALUES,
72
61
  CREATE_DIRECT_CLOSE_REASON_DEFAULT,
@@ -79,6 +68,8 @@ import {
79
68
  RECURRENCE_WEEKDAY_VALUES,
80
69
  RISK_VALUES,
81
70
  SCOPE_VALUES,
71
+ canonicalizeCommandOptionKey,
72
+ commandOptionFlagLabel,
82
73
  getActiveExtensionRegistrations,
83
74
  getHistoryPath,
84
75
  getItemPath,
@@ -89,15 +80,20 @@ import {
89
80
  readSettings,
90
81
  recordAfterCommandAffectedItem,
91
82
  removeFileIfExists,
83
+ resolveCommandOptionPolicyState,
84
+ resolveItemTypeRegistry,
92
85
  resolveItemTypesFilePath,
93
86
  resolvePmRoot,
94
87
  resolveRuntimeFieldRegistry,
95
88
  resolveRuntimeStatusRegistry,
89
+ resolveTypeDefinition,
90
+ resolveTypeName,
96
91
  runActiveCommandHandler,
97
92
  runActiveOnWriteHooks,
93
+ validateTypeOptions,
98
94
  weekdayOrderIndex,
99
95
  writeFileAtomic
100
- } from "./chunk-EYPINTFR.js";
96
+ } from "./chunk-RVUALSJF.js";
101
97
 
102
98
  // dist/core/item/priority.js
103
99
  !(function() {
@@ -217,7 +213,7 @@ function parseRegressionInput(value) {
217
213
  !(function() {
218
214
  try {
219
215
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
220
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "20ae4309-a085-5928-8a54-dc752fe98cfb");
216
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "28b681ab-3224-593c-bd52-8bc97690ec4d");
221
217
  } catch (e2) {
222
218
  }
223
219
  })();
@@ -246,6 +242,32 @@ function assertNoLegacyNoneTokens(values, flag, replacementHint) {
246
242
  const suffix = replacementHint ? ` ${replacementHint}` : "";
247
243
  throw new PmCliError(`${flag} no longer accepts "none" or "null".${suffix}`.trim(), EXIT_CODE.USAGE);
248
244
  }
245
+ function applyLegacyNoneCollectionNormalizers(normalized, definitions) {
246
+ for (const definition of definitions) {
247
+ const candidate = normalized[definition.optionKey];
248
+ if (!Array.isArray(candidate) || candidate.length === 0) {
249
+ continue;
250
+ }
251
+ if (!candidate.every((entry) => typeof entry === "string")) {
252
+ throw new PmCliError(`${definition.valueFlag} entries must be strings.`, EXIT_CODE.USAGE);
253
+ }
254
+ const entries = candidate;
255
+ const hasLegacy = entries.some((entry) => isLegacyNoneToken(entry));
256
+ if (!hasLegacy) {
257
+ continue;
258
+ }
259
+ const concreteEntries = entries.filter((entry) => !isLegacyNoneToken(entry));
260
+ if (concreteEntries.length > 0) {
261
+ 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);
262
+ }
263
+ normalized[definition.optionKey] = void 0;
264
+ normalized[definition.clearFlagKey] = true;
265
+ if (definition.disableFlagKey) {
266
+ normalized[definition.disableFlagKey] = false;
267
+ }
268
+ }
269
+ return normalized;
270
+ }
249
271
 
250
272
  // dist/cli/commands/lifecycle-transitions.js
251
273
  !(function() {
@@ -277,6 +299,169 @@ function suggestNextLifecycleTransition(id, type, status, statusRegistry) {
277
299
  return { command: `pm start-task ${id}`, to_status: inProgress };
278
300
  }
279
301
 
302
+ // dist/cli/commands/shared-unset-fields.js
303
+ !(function() {
304
+ try {
305
+ var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
306
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "574f6e0f-9ef4-5b42-9105-f6d182de0170");
307
+ } catch (e2) {
308
+ }
309
+ })();
310
+ var COMMON_UNSET_FIELD_DEFINITIONS_BEFORE_CLOSE_REASON = [
311
+ { canonical: "tags", aliases: ["tags"], optionKey: "tags", frontMatterKey: "tags" }
312
+ ];
313
+ var COMMON_UNSET_FIELD_DEFINITIONS_AFTER_CLOSE_REASON_BEFORE_AUTHOR = [
314
+ { canonical: "deadline", aliases: ["deadline"], optionKey: "deadline", frontMatterKey: "deadline" },
315
+ {
316
+ canonical: "estimate",
317
+ aliases: ["estimate", "estimated_minutes", "estimated-minutes"],
318
+ optionKey: "estimatedMinutes",
319
+ frontMatterKey: "estimated_minutes"
320
+ },
321
+ {
322
+ canonical: "acceptance-criteria",
323
+ aliases: ["acceptance_criteria", "acceptance-criteria", "ac"],
324
+ optionKey: "acceptanceCriteria",
325
+ frontMatterKey: "acceptance_criteria"
326
+ },
327
+ {
328
+ canonical: "definition-of-ready",
329
+ aliases: ["definition_of_ready", "definition-of-ready"],
330
+ optionKey: "definitionOfReady",
331
+ frontMatterKey: "definition_of_ready"
332
+ },
333
+ { canonical: "order", aliases: ["order", "rank"], optionKey: "order", frontMatterKey: "order" },
334
+ { canonical: "goal", aliases: ["goal"], optionKey: "goal", frontMatterKey: "goal" },
335
+ { canonical: "objective", aliases: ["objective"], optionKey: "objective", frontMatterKey: "objective" },
336
+ { canonical: "value", aliases: ["value"], optionKey: "value", frontMatterKey: "value" },
337
+ { canonical: "impact", aliases: ["impact"], optionKey: "impact", frontMatterKey: "impact" },
338
+ { canonical: "outcome", aliases: ["outcome"], optionKey: "outcome", frontMatterKey: "outcome" },
339
+ { canonical: "why-now", aliases: ["why_now", "why-now"], optionKey: "whyNow", frontMatterKey: "why_now" }
340
+ ];
341
+ var COMMON_UNSET_FIELD_DEFINITIONS_BEFORE_AUTHOR = [
342
+ ...COMMON_UNSET_FIELD_DEFINITIONS_BEFORE_CLOSE_REASON,
343
+ ...COMMON_UNSET_FIELD_DEFINITIONS_AFTER_CLOSE_REASON_BEFORE_AUTHOR
344
+ ];
345
+ var COMMON_UNSET_FIELD_DEFINITIONS_AFTER_AUTHOR = [
346
+ { canonical: "assignee", aliases: ["assignee"], optionKey: "assignee", frontMatterKey: "assignee" },
347
+ { canonical: "parent", aliases: ["parent"], optionKey: "parent", frontMatterKey: "parent" },
348
+ { canonical: "reviewer", aliases: ["reviewer"], optionKey: "reviewer", frontMatterKey: "reviewer" },
349
+ { canonical: "risk", aliases: ["risk"], optionKey: "risk", frontMatterKey: "risk" },
350
+ { canonical: "confidence", aliases: ["confidence"], optionKey: "confidence", frontMatterKey: "confidence" },
351
+ { canonical: "sprint", aliases: ["sprint"], optionKey: "sprint", frontMatterKey: "sprint" },
352
+ { canonical: "release", aliases: ["release"], optionKey: "release", frontMatterKey: "release" },
353
+ {
354
+ canonical: "blocked-by",
355
+ aliases: ["blocked_by", "blocked-by"],
356
+ optionKey: "blockedBy",
357
+ frontMatterKey: "blocked_by"
358
+ },
359
+ {
360
+ canonical: "blocked-reason",
361
+ aliases: ["blocked_reason", "blocked-reason"],
362
+ optionKey: "blockedReason",
363
+ frontMatterKey: "blocked_reason"
364
+ },
365
+ {
366
+ canonical: "unblock-note",
367
+ aliases: ["unblock_note", "unblock-note"],
368
+ optionKey: "unblockNote",
369
+ frontMatterKey: "unblock_note"
370
+ },
371
+ { canonical: "reporter", aliases: ["reporter"], optionKey: "reporter", frontMatterKey: "reporter" },
372
+ { canonical: "severity", aliases: ["severity"], optionKey: "severity", frontMatterKey: "severity" },
373
+ {
374
+ canonical: "environment",
375
+ aliases: ["environment"],
376
+ optionKey: "environment",
377
+ frontMatterKey: "environment"
378
+ },
379
+ {
380
+ canonical: "repro-steps",
381
+ aliases: ["repro_steps", "repro-steps"],
382
+ optionKey: "reproSteps",
383
+ frontMatterKey: "repro_steps"
384
+ },
385
+ {
386
+ canonical: "resolution",
387
+ aliases: ["resolution"],
388
+ optionKey: "resolution",
389
+ frontMatterKey: "resolution"
390
+ },
391
+ {
392
+ canonical: "expected-result",
393
+ aliases: ["expected_result", "expected-result"],
394
+ optionKey: "expectedResult",
395
+ frontMatterKey: "expected_result"
396
+ },
397
+ {
398
+ canonical: "actual-result",
399
+ aliases: ["actual_result", "actual-result"],
400
+ optionKey: "actualResult",
401
+ frontMatterKey: "actual_result"
402
+ },
403
+ {
404
+ canonical: "affected-version",
405
+ aliases: ["affected_version", "affected-version"],
406
+ optionKey: "affectedVersion",
407
+ frontMatterKey: "affected_version"
408
+ },
409
+ {
410
+ canonical: "fixed-version",
411
+ aliases: ["fixed_version", "fixed-version"],
412
+ optionKey: "fixedVersion",
413
+ frontMatterKey: "fixed_version"
414
+ },
415
+ { canonical: "component", aliases: ["component"], optionKey: "component", frontMatterKey: "component" },
416
+ { canonical: "regression", aliases: ["regression"], optionKey: "regression", frontMatterKey: "regression" },
417
+ {
418
+ canonical: "customer-impact",
419
+ aliases: ["customer_impact", "customer-impact"],
420
+ optionKey: "customerImpact",
421
+ frontMatterKey: "customer_impact"
422
+ }
423
+ ];
424
+ function resolveRuntimeUnsetFieldDefinition(token, command, runtimeFieldRegistry) {
425
+ const normalizedToken = token.trim().toLowerCase();
426
+ if (!runtimeFieldRegistry) {
427
+ return void 0;
428
+ }
429
+ const definitions = runtimeFieldRegistry.command_to_fields?.get(command) ?? [];
430
+ for (const definition of definitions) {
431
+ if (definition.allow_unset === false) {
432
+ continue;
433
+ }
434
+ const candidates = /* @__PURE__ */ new Set();
435
+ if (typeof definition.key === "string" && definition.key.length > 0) {
436
+ candidates.add(definition.key.toLowerCase());
437
+ }
438
+ if (typeof definition.metadata_key === "string" && definition.metadata_key.length > 0) {
439
+ candidates.add(definition.metadata_key.toLowerCase());
440
+ }
441
+ if (typeof definition.cli_flag === "string" && definition.cli_flag.length > 0) {
442
+ candidates.add(definition.cli_flag.replaceAll("-", "_").toLowerCase());
443
+ candidates.add(definition.cli_flag.toLowerCase());
444
+ }
445
+ if (Array.isArray(definition.cli_aliases)) {
446
+ for (const alias of definition.cli_aliases) {
447
+ if (typeof alias !== "string" || alias.length === 0) {
448
+ continue;
449
+ }
450
+ candidates.add(alias.replaceAll("-", "_").toLowerCase());
451
+ candidates.add(alias.toLowerCase());
452
+ }
453
+ }
454
+ if (!candidates.has(normalizedToken)) {
455
+ continue;
456
+ }
457
+ return {
458
+ optionKey: definition.key,
459
+ frontMatterKey: definition.metadata_key
460
+ };
461
+ }
462
+ return void 0;
463
+ }
464
+
280
465
  // dist/cli/commands/recurrence-parsers.js
281
466
  !(function() {
282
467
  try {
@@ -443,7 +628,7 @@ function resolveEventEndAt(startAt, endRaw, durationRaw, referenceDate) {
443
628
  !(function() {
444
629
  try {
445
630
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
446
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "d4fc10c6-2d84-5507-abc7-33bdb6d72298");
631
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "af67197c-e19a-5c5b-94f6-a81b47990738");
447
632
  } catch (e2) {
448
633
  }
449
634
  })();
@@ -506,17 +691,16 @@ function parseEventEntries(raw, nowValue, options) {
506
691
  const description = descriptionRaw?.trim();
507
692
  const location = locationRaw?.trim();
508
693
  const timezone = timezoneRaw?.trim();
509
- if (titleRaw !== void 0 && !title) {
510
- throw new PmCliError("--event title must not be empty", EXIT_CODE.USAGE);
511
- }
512
- if (descriptionRaw !== void 0 && !description) {
513
- throw new PmCliError("--event description must not be empty", EXIT_CODE.USAGE);
514
- }
515
- if (locationRaw !== void 0 && !location) {
516
- throw new PmCliError("--event location must not be empty", EXIT_CODE.USAGE);
517
- }
518
- if (timezoneRaw !== void 0 && !timezone) {
519
- throw new PmCliError("--event timezone must not be empty", EXIT_CODE.USAGE);
694
+ const optionalTextFields = [
695
+ ["title", titleRaw, title],
696
+ ["description", descriptionRaw, description],
697
+ ["location", locationRaw, location],
698
+ ["timezone", timezoneRaw, timezone]
699
+ ];
700
+ for (const [fieldLabel, rawValue, trimmedValue] of optionalTextFields) {
701
+ if (rawValue !== void 0 && !trimmedValue) {
702
+ throw new PmCliError(`--event ${fieldLabel} must not be empty`, EXIT_CODE.USAGE);
703
+ }
520
704
  }
521
705
  const allDayRaw = kv.all_day?.trim();
522
706
  const recurrence = parseRecurrenceRule(kv, startAt, nowValue, options.recurrenceEmptyNumericGuard);
@@ -573,7 +757,7 @@ function parseTypeOptionEntries(raw) {
573
757
  !(function() {
574
758
  try {
575
759
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
576
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "af084cca-79e5-5be7-bb6a-a31f15a20db3");
760
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "39253884-2bdf-54e5-9cf2-6ac279638287");
577
761
  } catch (e2) {
578
762
  }
579
763
  })();
@@ -582,111 +766,9 @@ var SCHEDULE_CREATE_PRESET_VALUES = ["lightweight"];
582
766
  var SCHEDULE_CREATE_PRESET_TYPES = /* @__PURE__ */ new Set(["Reminder", "Meeting", "Event"]);
583
767
  var LOG_SEED_ALLOWED_KEYS = /* @__PURE__ */ new Set(["author", "created_at", "text"]);
584
768
  var CREATE_UNSET_FIELD_DEFINITIONS = [
585
- { canonical: "tags", aliases: ["tags"], optionKey: "tags", frontMatterKey: "tags" },
586
- { canonical: "deadline", aliases: ["deadline"], optionKey: "deadline", frontMatterKey: "deadline" },
587
- {
588
- canonical: "estimate",
589
- aliases: ["estimate", "estimated_minutes", "estimated-minutes"],
590
- optionKey: "estimatedMinutes",
591
- frontMatterKey: "estimated_minutes"
592
- },
593
- {
594
- canonical: "acceptance-criteria",
595
- aliases: ["acceptance_criteria", "acceptance-criteria", "ac"],
596
- optionKey: "acceptanceCriteria",
597
- frontMatterKey: "acceptance_criteria"
598
- },
599
- {
600
- canonical: "definition-of-ready",
601
- aliases: ["definition_of_ready", "definition-of-ready"],
602
- optionKey: "definitionOfReady",
603
- frontMatterKey: "definition_of_ready"
604
- },
605
- { canonical: "order", aliases: ["order", "rank"], optionKey: "order", frontMatterKey: "order" },
606
- { canonical: "goal", aliases: ["goal"], optionKey: "goal", frontMatterKey: "goal" },
607
- { canonical: "objective", aliases: ["objective"], optionKey: "objective", frontMatterKey: "objective" },
608
- { canonical: "value", aliases: ["value"], optionKey: "value", frontMatterKey: "value" },
609
- { canonical: "impact", aliases: ["impact"], optionKey: "impact", frontMatterKey: "impact" },
610
- { canonical: "outcome", aliases: ["outcome"], optionKey: "outcome", frontMatterKey: "outcome" },
611
- { canonical: "why-now", aliases: ["why_now", "why-now"], optionKey: "whyNow", frontMatterKey: "why_now" },
769
+ ...COMMON_UNSET_FIELD_DEFINITIONS_BEFORE_AUTHOR,
612
770
  { canonical: "author", aliases: ["author"], optionKey: "author", frontMatterKey: "author" },
613
- { canonical: "assignee", aliases: ["assignee"], optionKey: "assignee", frontMatterKey: "assignee" },
614
- { canonical: "parent", aliases: ["parent"], optionKey: "parent", frontMatterKey: "parent" },
615
- { canonical: "reviewer", aliases: ["reviewer"], optionKey: "reviewer", frontMatterKey: "reviewer" },
616
- { canonical: "risk", aliases: ["risk"], optionKey: "risk", frontMatterKey: "risk" },
617
- { canonical: "confidence", aliases: ["confidence"], optionKey: "confidence", frontMatterKey: "confidence" },
618
- { canonical: "sprint", aliases: ["sprint"], optionKey: "sprint", frontMatterKey: "sprint" },
619
- { canonical: "release", aliases: ["release"], optionKey: "release", frontMatterKey: "release" },
620
- {
621
- canonical: "blocked-by",
622
- aliases: ["blocked_by", "blocked-by"],
623
- optionKey: "blockedBy",
624
- frontMatterKey: "blocked_by"
625
- },
626
- {
627
- canonical: "blocked-reason",
628
- aliases: ["blocked_reason", "blocked-reason"],
629
- optionKey: "blockedReason",
630
- frontMatterKey: "blocked_reason"
631
- },
632
- {
633
- canonical: "unblock-note",
634
- aliases: ["unblock_note", "unblock-note"],
635
- optionKey: "unblockNote",
636
- frontMatterKey: "unblock_note"
637
- },
638
- { canonical: "reporter", aliases: ["reporter"], optionKey: "reporter", frontMatterKey: "reporter" },
639
- { canonical: "severity", aliases: ["severity"], optionKey: "severity", frontMatterKey: "severity" },
640
- {
641
- canonical: "environment",
642
- aliases: ["environment"],
643
- optionKey: "environment",
644
- frontMatterKey: "environment"
645
- },
646
- {
647
- canonical: "repro-steps",
648
- aliases: ["repro_steps", "repro-steps"],
649
- optionKey: "reproSteps",
650
- frontMatterKey: "repro_steps"
651
- },
652
- {
653
- canonical: "resolution",
654
- aliases: ["resolution"],
655
- optionKey: "resolution",
656
- frontMatterKey: "resolution"
657
- },
658
- {
659
- canonical: "expected-result",
660
- aliases: ["expected_result", "expected-result"],
661
- optionKey: "expectedResult",
662
- frontMatterKey: "expected_result"
663
- },
664
- {
665
- canonical: "actual-result",
666
- aliases: ["actual_result", "actual-result"],
667
- optionKey: "actualResult",
668
- frontMatterKey: "actual_result"
669
- },
670
- {
671
- canonical: "affected-version",
672
- aliases: ["affected_version", "affected-version"],
673
- optionKey: "affectedVersion",
674
- frontMatterKey: "affected_version"
675
- },
676
- {
677
- canonical: "fixed-version",
678
- aliases: ["fixed_version", "fixed-version"],
679
- optionKey: "fixedVersion",
680
- frontMatterKey: "fixed_version"
681
- },
682
- { canonical: "component", aliases: ["component"], optionKey: "component", frontMatterKey: "component" },
683
- { canonical: "regression", aliases: ["regression"], optionKey: "regression", frontMatterKey: "regression" },
684
- {
685
- canonical: "customer-impact",
686
- aliases: ["customer_impact", "customer-impact"],
687
- optionKey: "customerImpact",
688
- frontMatterKey: "customer_impact"
689
- }
771
+ ...COMMON_UNSET_FIELD_DEFINITIONS_AFTER_AUTHOR
690
772
  ];
691
773
  var CREATE_UNSET_ALIAS_MAP = (() => {
692
774
  const map = /* @__PURE__ */ new Map();
@@ -772,55 +854,13 @@ function normalizeLegacyNoneCreateOptions(options) {
772
854
  appendUnsetTarget(canonicalUnset);
773
855
  normalized[optionKey] = void 0;
774
856
  }
775
- for (const definition of CREATE_LEGACY_NONE_COLLECTION_NORMALIZERS) {
776
- const entries = normalized[definition.optionKey];
777
- if (!Array.isArray(entries) || entries.length === 0) {
778
- continue;
779
- }
780
- const hasLegacy = entries.some((entry) => isLegacyNoneToken(entry));
781
- if (!hasLegacy) {
782
- continue;
783
- }
784
- const concreteEntries = entries.filter((entry) => !isLegacyNoneToken(entry));
785
- if (concreteEntries.length > 0) {
786
- 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);
787
- }
788
- normalized[definition.optionKey] = void 0;
789
- normalized[definition.clearFlagKey] = true;
790
- }
791
- return normalized;
857
+ return applyLegacyNoneCollectionNormalizers(normalized, CREATE_LEGACY_NONE_COLLECTION_NORMALIZERS);
792
858
  }
793
859
  function parseOptionalString(value) {
794
860
  if (value === void 0)
795
861
  return void 0;
796
862
  return value;
797
863
  }
798
- function resolveRuntimeCreateUnsetDefinition(token, runtimeFieldRegistry) {
799
- if (!runtimeFieldRegistry) {
800
- return void 0;
801
- }
802
- for (const definition of runtimeFieldRegistry.definitions) {
803
- if (definition.allow_unset === false) {
804
- continue;
805
- }
806
- const candidates = /* @__PURE__ */ new Set([
807
- definition.key,
808
- definition.metadata_key,
809
- definition.cli_flag.replaceAll("-", "_"),
810
- definition.cli_flag,
811
- ...definition.cli_aliases.map((alias) => alias.replaceAll("-", "_")),
812
- ...definition.cli_aliases
813
- ]);
814
- if (!candidates.has(token)) {
815
- continue;
816
- }
817
- return {
818
- optionKey: definition.key,
819
- frontMatterKey: definition.metadata_key
820
- };
821
- }
822
- return void 0;
823
- }
824
864
  function parseCreateUnsetTargets(raw, runtimeFieldRegistry) {
825
865
  const frontMatterKeys = /* @__PURE__ */ new Set();
826
866
  const optionKeys = /* @__PURE__ */ new Set();
@@ -835,7 +875,7 @@ function parseCreateUnsetTargets(raw, runtimeFieldRegistry) {
835
875
  if (isLegacyNoneToken(trimmed)) {
836
876
  throw new PmCliError('--unset no longer accepts "none" or "null". Specify concrete field names such as --unset deadline', EXIT_CODE.USAGE);
837
877
  }
838
- const definition = CREATE_UNSET_ALIAS_MAP.get(trimmed) ?? resolveRuntimeCreateUnsetDefinition(trimmed, runtimeFieldRegistry);
878
+ const definition = CREATE_UNSET_ALIAS_MAP.get(trimmed) ?? resolveRuntimeUnsetFieldDefinition(trimmed, "create", runtimeFieldRegistry);
839
879
  if (!definition) {
840
880
  throw new PmCliError(`Unsupported --unset field "${entry}". Supported fields: ${CREATE_UNSET_SUPPORTED_CANONICAL_FIELDS}`, EXIT_CODE.USAGE);
841
881
  }
@@ -1408,14 +1448,96 @@ function ensureInitHasRun(pmRoot) {
1408
1448
  }
1409
1449
  });
1410
1450
  }
1411
- async function runCreate(options, global2) {
1412
- let resolvedOptions = normalizeLegacyNoneCreateOptions(await resolveCreateStdinInputs(options));
1413
- const pmRoot = resolvePmRoot(process.cwd(), global2.path);
1414
- await ensureInitHasRun(pmRoot);
1415
- const settings = await readSettings(pmRoot);
1416
- const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
1417
- const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);
1418
- const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
1451
+ function resolveUnsettableOptionalString(unsetKeys, frontMatterKey, raw) {
1452
+ return unsetKeys.has(frontMatterKey) || raw === void 0 ? void 0 : parseOptionalString(raw);
1453
+ }
1454
+ function resolveUnsettableTransformed(unsetKeys, frontMatterKey, raw, transform) {
1455
+ return unsetKeys.has(frontMatterKey) || raw === void 0 ? void 0 : transform(raw);
1456
+ }
1457
+ var CALENDAR_RELEVANT_CREATE_TYPES = /* @__PURE__ */ new Set(["milestone", "meeting", "reminder", "event"]);
1458
+ function createItemLacksSchedule(type, deadline, reminders, events) {
1459
+ const hasDeadline = deadline !== void 0;
1460
+ const hasReminders = reminders !== void 0 && reminders.length > 0;
1461
+ const hasEvents = events !== void 0 && events.length > 0;
1462
+ return CALENDAR_RELEVANT_CREATE_TYPES.has(type.toLowerCase()) && !hasDeadline && !hasReminders && !hasEvents;
1463
+ }
1464
+ function collectCreateScheduleWarnings(type, id, deadline, reminders, events) {
1465
+ const warnings = [];
1466
+ if (type.toLowerCase() === "event" && (events === void 0 || events.length === 0)) {
1467
+ warnings.push(`event_without_schedule:${id}:no_time_set`);
1468
+ }
1469
+ if (createItemLacksSchedule(type, deadline, reminders, events)) {
1470
+ warnings.push(`calendar_item_without_schedule:${id}:no_deadline_or_reminder_or_event (hint: set --deadline <ISO> or --reminder "<when>", or link an Event via --event "start=<ISO>,end=<ISO>"; otherwise this item never appears on pm calendar)`);
1471
+ }
1472
+ return warnings;
1473
+ }
1474
+ async function inheritFocusedParent(parent, resolvedOptions, unsetKeys, pmRoot) {
1475
+ if (parent !== void 0 || unsetKeys.has("parent") || resolvedOptions.parent !== void 0) {
1476
+ return { parent, parentSource: void 0 };
1477
+ }
1478
+ const focused = await getFocusedItem(pmRoot);
1479
+ if (focused === void 0) {
1480
+ return { parent, parentSource: void 0 };
1481
+ }
1482
+ return { parent: focused, parentSource: "focus" };
1483
+ }
1484
+ async function validateCreateParentReference(pmRoot, settings, typeRegistry, parent, policy) {
1485
+ const normalized = normalizeParentReferenceValue(parent);
1486
+ const parentLocated = await locateItem(pmRoot, normalized, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1487
+ if (parentLocated) {
1488
+ return { parent: normalized, warnings: [] };
1489
+ }
1490
+ const normalizedParentId = normalizeItemId(normalized, settings.id_prefix);
1491
+ return { parent: normalized, warnings: validateMissingParentReference(normalizedParentId, policy).warnings };
1492
+ }
1493
+ function resolveCreateSprintOrRelease(unsetKeys, frontMatterKey, raw, field, policy) {
1494
+ const resolved = resolveUnsettableOptionalString(unsetKeys, frontMatterKey, raw);
1495
+ if (resolved === void 0) {
1496
+ return { value: void 0, warnings: [] };
1497
+ }
1498
+ const validation = validateSprintOrReleaseValue(field, resolved, policy);
1499
+ return { value: validation.value, warnings: validation.warnings };
1500
+ }
1501
+ async function resolveCreateBlockedByDependency(params) {
1502
+ const { pmRoot, settings, typeRegistry, statusRegistry, blockedBy, status, statusExplicit, nowValue, author } = params;
1503
+ let dependencyValues = params.dependencyValues;
1504
+ if (blockedBy === void 0) {
1505
+ return { dependencyValues, status };
1506
+ }
1507
+ const normalizedBlockedBy = normalizeItemId(blockedBy, settings.id_prefix);
1508
+ const blockedByLocated = await locateItem(pmRoot, normalizedBlockedBy, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1509
+ if (!blockedByLocated) {
1510
+ return { dependencyValues, status };
1511
+ }
1512
+ const hasBlockedByDependency = (dependencyValues ?? []).some((dependency) => dependency.id === blockedByLocated.id && dependency.kind === "blocked_by");
1513
+ if (!hasBlockedByDependency) {
1514
+ dependencyValues = [
1515
+ ...dependencyValues ?? [],
1516
+ { id: blockedByLocated.id, kind: "blocked_by", created_at: nowValue, author }
1517
+ ];
1518
+ }
1519
+ if (statusExplicit) {
1520
+ return { dependencyValues, status };
1521
+ }
1522
+ const blockedStatus = statusRegistry.blocked_statuses.has("blocked") ? "blocked" : [...statusRegistry.blocked_statuses].sort((left, right) => left.localeCompare(right))[0] ?? statusRegistry.open_status;
1523
+ return { dependencyValues, status: blockedStatus };
1524
+ }
1525
+ function applyCreateDefaultType(resolvedOptions, settings, typeRegistry) {
1526
+ const explicitStrictMode = typeof resolvedOptions.createMode === "string" && resolvedOptions.createMode.trim().toLowerCase() === "strict";
1527
+ if (explicitStrictMode) {
1528
+ return;
1529
+ }
1530
+ const defaultType = settings.governance.create_default_type?.trim();
1531
+ if (defaultType && defaultType.length > 0 && resolveTypeName(defaultType, typeRegistry)) {
1532
+ resolvedOptions.type = defaultType;
1533
+ return;
1534
+ }
1535
+ if (resolveTypeName("Task", typeRegistry)) {
1536
+ resolvedOptions.type = "Task";
1537
+ }
1538
+ }
1539
+ async function resolveCreateTypeSelection(options, global2, pmRoot, settings, typeRegistry) {
1540
+ let resolvedOptions = options;
1419
1541
  if (resolvedOptions.template !== void 0) {
1420
1542
  const templateName = resolvedOptions.template.trim();
1421
1543
  if (templateName.length === 0) {
@@ -1425,17 +1547,7 @@ async function runCreate(options, global2) {
1425
1547
  resolvedOptions = normalizeLegacyNoneCreateOptions(mergeCreateOptionsWithTemplate(templateOptions, resolvedOptions));
1426
1548
  }
1427
1549
  if (resolvedOptions.type === void 0) {
1428
- const explicitStrictMode = typeof resolvedOptions.createMode === "string" && resolvedOptions.createMode.trim().toLowerCase() === "strict";
1429
- if (!explicitStrictMode) {
1430
- const defaultType = settings.governance.create_default_type?.trim();
1431
- if (defaultType && defaultType.length > 0 && resolveTypeName(defaultType, typeRegistry)) {
1432
- resolvedOptions.type = defaultType;
1433
- } else {
1434
- if (resolveTypeName("Task", typeRegistry)) {
1435
- resolvedOptions.type = "Task";
1436
- }
1437
- }
1438
- }
1550
+ applyCreateDefaultType(resolvedOptions, settings, typeRegistry);
1439
1551
  }
1440
1552
  if (resolvedOptions.type === void 0) {
1441
1553
  throw new PmCliError("Missing required option --type <value>", EXIT_CODE.USAGE);
@@ -1462,90 +1574,22 @@ async function runCreate(options, global2) {
1462
1574
  throw new PmCliError(`--schedule-preset ${schedulePreset} is only supported for Reminder, Meeting, or Event types`, EXIT_CODE.USAGE);
1463
1575
  }
1464
1576
  const createMode = resolveEffectiveCreateMode(resolvedOptions.createMode, schedulePreset, settings.governance.create_mode_default);
1465
- const unsetTargets = parseCreateUnsetTargets(resolvedOptions.unset, runtimeFieldRegistry);
1577
+ return { resolvedOptions, typeDefinition, type, schedulePreset, createMode };
1578
+ }
1579
+ function collectCreateClearTargets(resolvedOptions, unsetTargets) {
1466
1580
  const explicitUnsets = new Set(unsetTargets.frontMatterKeys);
1467
1581
  const clearOptionKeys = new Set(unsetTargets.optionKeys);
1468
1582
  const clearCollectionDefinitions = [
1469
- {
1470
- enabled: resolvedOptions.clearDeps,
1471
- optionKey: "dep",
1472
- clearFlag: "--clear-deps",
1473
- valueFlag: "--dep",
1474
- values: resolvedOptions.dep,
1475
- frontMatterKey: "dependencies"
1476
- },
1477
- {
1478
- enabled: resolvedOptions.clearComments,
1479
- optionKey: "comment",
1480
- clearFlag: "--clear-comments",
1481
- valueFlag: "--comment",
1482
- values: resolvedOptions.comment,
1483
- frontMatterKey: "comments"
1484
- },
1485
- {
1486
- enabled: resolvedOptions.clearNotes,
1487
- optionKey: "note",
1488
- clearFlag: "--clear-notes",
1489
- valueFlag: "--note",
1490
- values: resolvedOptions.note,
1491
- frontMatterKey: "notes"
1492
- },
1493
- {
1494
- enabled: resolvedOptions.clearLearnings,
1495
- optionKey: "learning",
1496
- clearFlag: "--clear-learnings",
1497
- valueFlag: "--learning",
1498
- values: resolvedOptions.learning,
1499
- frontMatterKey: "learnings"
1500
- },
1501
- {
1502
- enabled: resolvedOptions.clearFiles,
1503
- optionKey: "file",
1504
- clearFlag: "--clear-files",
1505
- valueFlag: "--file",
1506
- values: resolvedOptions.file,
1507
- frontMatterKey: "files"
1508
- },
1509
- {
1510
- enabled: resolvedOptions.clearTests,
1511
- optionKey: "test",
1512
- clearFlag: "--clear-tests",
1513
- valueFlag: "--test",
1514
- values: resolvedOptions.test,
1515
- frontMatterKey: "tests"
1516
- },
1517
- {
1518
- enabled: resolvedOptions.clearDocs,
1519
- optionKey: "doc",
1520
- clearFlag: "--clear-docs",
1521
- valueFlag: "--doc",
1522
- values: resolvedOptions.doc,
1523
- frontMatterKey: "docs"
1524
- },
1525
- {
1526
- enabled: resolvedOptions.clearReminders,
1527
- optionKey: "reminder",
1528
- clearFlag: "--clear-reminders",
1529
- valueFlag: "--reminder",
1530
- values: resolvedOptions.reminder,
1531
- frontMatterKey: "reminders"
1532
- },
1533
- {
1534
- enabled: resolvedOptions.clearEvents,
1535
- optionKey: "event",
1536
- clearFlag: "--clear-events",
1537
- valueFlag: "--event",
1538
- values: resolvedOptions.event,
1539
- frontMatterKey: "events"
1540
- },
1541
- {
1542
- enabled: resolvedOptions.clearTypeOptions,
1543
- optionKey: "typeOption",
1544
- clearFlag: "--clear-type-options",
1545
- valueFlag: "--type-option",
1546
- values: resolvedOptions.typeOption,
1547
- frontMatterKey: "type_options"
1548
- }
1583
+ { enabled: resolvedOptions.clearDeps, optionKey: "dep", clearFlag: "--clear-deps", valueFlag: "--dep", values: resolvedOptions.dep, frontMatterKey: "dependencies" },
1584
+ { enabled: resolvedOptions.clearComments, optionKey: "comment", clearFlag: "--clear-comments", valueFlag: "--comment", values: resolvedOptions.comment, frontMatterKey: "comments" },
1585
+ { enabled: resolvedOptions.clearNotes, optionKey: "note", clearFlag: "--clear-notes", valueFlag: "--note", values: resolvedOptions.note, frontMatterKey: "notes" },
1586
+ { enabled: resolvedOptions.clearLearnings, optionKey: "learning", clearFlag: "--clear-learnings", valueFlag: "--learning", values: resolvedOptions.learning, frontMatterKey: "learnings" },
1587
+ { enabled: resolvedOptions.clearFiles, optionKey: "file", clearFlag: "--clear-files", valueFlag: "--file", values: resolvedOptions.file, frontMatterKey: "files" },
1588
+ { enabled: resolvedOptions.clearTests, optionKey: "test", clearFlag: "--clear-tests", valueFlag: "--test", values: resolvedOptions.test, frontMatterKey: "tests" },
1589
+ { enabled: resolvedOptions.clearDocs, optionKey: "doc", clearFlag: "--clear-docs", valueFlag: "--doc", values: resolvedOptions.doc, frontMatterKey: "docs" },
1590
+ { enabled: resolvedOptions.clearReminders, optionKey: "reminder", clearFlag: "--clear-reminders", valueFlag: "--reminder", values: resolvedOptions.reminder, frontMatterKey: "reminders" },
1591
+ { enabled: resolvedOptions.clearEvents, optionKey: "event", clearFlag: "--clear-events", valueFlag: "--event", values: resolvedOptions.event, frontMatterKey: "events" },
1592
+ { enabled: resolvedOptions.clearTypeOptions, optionKey: "typeOption", clearFlag: "--clear-type-options", valueFlag: "--type-option", values: resolvedOptions.typeOption, frontMatterKey: "type_options" }
1549
1593
  ];
1550
1594
  for (const definition of clearCollectionDefinitions) {
1551
1595
  if (!definition.enabled) {
@@ -1557,6 +1601,9 @@ async function runCreate(options, global2) {
1557
1601
  explicitUnsets.add(definition.frontMatterKey);
1558
1602
  clearOptionKeys.add(definition.optionKey);
1559
1603
  }
1604
+ return { explicitUnsets, clearOptionKeys };
1605
+ }
1606
+ function assertNoCreateScalarUnsetConflicts(resolvedOptions, unsetTargets) {
1560
1607
  const scalarOptionPresence = {
1561
1608
  tags: resolvedOptions.tags !== void 0,
1562
1609
  deadline: resolvedOptions.deadline !== void 0,
@@ -1602,10 +1649,12 @@ async function runCreate(options, global2) {
1602
1649
  const unsetField = CREATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey) ?? optionKey;
1603
1650
  throw new PmCliError(`Cannot combine --unset ${unsetField} with ${commandOptionFlagLabel("create", optionKey)}`, EXIT_CODE.USAGE);
1604
1651
  }
1605
- const assertNoLegacyScalarToken = (value2, optionKey) => {
1652
+ }
1653
+ function assertNoLegacyCreateScalarTokens(resolvedOptions) {
1654
+ const assertNoLegacyScalarToken = (value, optionKey) => {
1606
1655
  const unsetField = CREATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey);
1607
1656
  const hint = unsetField ? `Use --unset ${unsetField} to clear this field.` : void 0;
1608
- assertNoLegacyNoneToken(value2, commandOptionFlagLabel("create", optionKey), hint);
1657
+ assertNoLegacyNoneToken(value, commandOptionFlagLabel("create", optionKey), hint);
1609
1658
  };
1610
1659
  assertNoLegacyScalarToken(resolvedOptions.tags, "tags");
1611
1660
  assertNoLegacyScalarToken(resolvedOptions.deadline, "deadline");
@@ -1642,6 +1691,143 @@ async function runCreate(options, global2) {
1642
1691
  assertNoLegacyScalarToken(resolvedOptions.component, "component");
1643
1692
  assertNoLegacyScalarToken(resolvedOptions.regression, "regression");
1644
1693
  assertNoLegacyScalarToken(resolvedOptions.customerImpact, "customerImpact");
1694
+ }
1695
+ function assertNoCreateFieldUnsetConflicts(registeredItemFieldValues, runtimeCreateFieldValues, unsetTargets) {
1696
+ for (const fieldKey of Object.keys(registeredItemFieldValues)) {
1697
+ if (!unsetTargets.frontMatterKeys.has(fieldKey)) {
1698
+ continue;
1699
+ }
1700
+ throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_", "-")} with --field ${fieldKey}=...`, EXIT_CODE.USAGE);
1701
+ }
1702
+ for (const fieldKey of Object.keys(runtimeCreateFieldValues.values ?? {})) {
1703
+ if (!unsetTargets.frontMatterKeys.has(fieldKey)) {
1704
+ continue;
1705
+ }
1706
+ throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_", "-")} with its value flag`, EXIT_CODE.USAGE);
1707
+ }
1708
+ }
1709
+ function assertNoMissingRequiredCreateOptions(params) {
1710
+ const { combinedMissingFlags, typeDefinition, missingRequiredCreateFlags, missingRequiredTypeOptionKeys, openStatus, type, createMode } = params;
1711
+ if (combinedMissingFlags.length === 0) {
1712
+ return;
1713
+ }
1714
+ const nextValidExample = buildTypeSpecificCreateExample(typeDefinition, missingRequiredCreateFlags, missingRequiredTypeOptionKeys, openStatus);
1715
+ const nextSteps = [`Run "pm create --help --type ${type}" for type-aware required option guidance.`];
1716
+ if (combinedMissingFlags.includes("--title")) {
1717
+ nextSteps.push('Title can also be passed as the first positional argument (example: pm create "Your title" --type ' + type + ").");
1718
+ }
1719
+ if (createMode === "strict") {
1720
+ nextSteps.push('For staged onboarding, retry with "--create-mode progressive".');
1721
+ if (SCHEDULE_CREATE_PRESET_TYPES.has(type)) {
1722
+ nextSteps.push('For minimal scheduling inputs, try "--schedule-preset lightweight".');
1723
+ }
1724
+ }
1725
+ const errorMessage = combinedMissingFlags.length === 1 ? `Missing required option ${combinedMissingFlags[0]} for type "${type}"` : `Missing required options ${combinedMissingFlags.join(", ")} for type "${type}"`;
1726
+ throw new PmCliError(errorMessage, EXIT_CODE.USAGE, {
1727
+ code: "missing_required_option",
1728
+ required: `Provide all required create options and type options for type "${type}" in one invocation.`,
1729
+ examples: [nextValidExample],
1730
+ nextSteps,
1731
+ recovery: createMode === "strict" ? {
1732
+ recovery_mode: "compact",
1733
+ missing_required_fields: combinedMissingFlags,
1734
+ suggested_flags: ["--create-mode progressive", ...combinedMissingFlags]
1735
+ } : void 0
1736
+ });
1737
+ }
1738
+ function resolveCreateTags(unsetKeys, resolvedOptions) {
1739
+ if (unsetKeys.has("tags") && Array.isArray(resolvedOptions.addTags) && resolvedOptions.addTags.length > 0) {
1740
+ throw new PmCliError("Cannot combine --unset tags with --add-tags", EXIT_CODE.USAGE);
1741
+ }
1742
+ const baseTags = unsetKeys.has("tags") ? [] : resolvedOptions.tags !== void 0 ? parseTags(resolvedOptions.tags) : [];
1743
+ return mergeAdditiveTags(baseTags, resolvedOptions.addTags);
1744
+ }
1745
+ function resolveCreateOrder(unsetKeys, resolvedOptions) {
1746
+ if (resolvedOptions.order !== void 0 && resolvedOptions.rank !== void 0 && resolvedOptions.order !== resolvedOptions.rank) {
1747
+ throw new PmCliError("--order and --rank must match when both are provided", EXIT_CODE.USAGE);
1748
+ }
1749
+ const orderRaw = resolvedOptions.order ?? resolvedOptions.rank;
1750
+ const order = resolveUnsettableTransformed(unsetKeys, "order", orderRaw, (raw) => parseOptionalNumber(raw, "order"));
1751
+ if (order !== void 0 && !Number.isInteger(order)) {
1752
+ throw new PmCliError("Order must be an integer", EXIT_CODE.USAGE);
1753
+ }
1754
+ return order;
1755
+ }
1756
+ function resolveCreateCloseReason(status, statusRegistry, settings, resolvedOptions, resolution) {
1757
+ if (status !== statusRegistry.close_status || !settings.governance.require_close_reason) {
1758
+ return { closeReason: void 0, warnings: [] };
1759
+ }
1760
+ const messageText = typeof resolvedOptions.message === "string" ? resolvedOptions.message.trim() : "";
1761
+ const resolutionText = typeof resolution === "string" ? resolution.trim() : "";
1762
+ const closeReason = messageText || resolutionText || CREATE_DIRECT_CLOSE_REASON_DEFAULT;
1763
+ const warnings = messageText.length === 0 && resolutionText.length === 0 ? ["close_reason_defaulted"] : [];
1764
+ return { closeReason, warnings };
1765
+ }
1766
+ async function writeCreatedItem(params) {
1767
+ const { pmRoot, type, id, settings, typeRegistry, author, extensionFieldNames, afterDocument, beforeDocument, historyMessage, changedFields, nowValue } = params;
1768
+ const itemPath = getItemPath(pmRoot, type, id, settings.item_format, typeRegistry.type_to_folder);
1769
+ const historyPath = getHistoryPath(pmRoot, id);
1770
+ const lockRelease = await acquireLock(pmRoot, id, settings.locks.ttl_seconds, author, false, settings.governance.force_required_for_stale_lock);
1771
+ let hookWarnings = [];
1772
+ try {
1773
+ await writeFileAtomic(itemPath, serializeItemDocument(afterDocument, { format: settings.item_format, schema: settings.schema, extensionFieldNames }));
1774
+ try {
1775
+ const entry = createHistoryEntry({ nowIso: nowValue, author, op: "create", before: beforeDocument, after: afterDocument, message: historyMessage });
1776
+ await appendHistoryEntry(historyPath, entry);
1777
+ } catch (error) {
1778
+ await removeFileIfExists(itemPath);
1779
+ throw error;
1780
+ }
1781
+ hookWarnings = [
1782
+ ...await runActiveOnWriteHooks({
1783
+ path: itemPath,
1784
+ scope: "project",
1785
+ op: "create",
1786
+ item_id: afterDocument.metadata.id,
1787
+ item_type: afterDocument.metadata.type,
1788
+ before: beforeDocument,
1789
+ after: afterDocument,
1790
+ changed_fields: changedFields
1791
+ }),
1792
+ ...await runActiveOnWriteHooks({
1793
+ path: historyPath,
1794
+ scope: "project",
1795
+ op: "create:history",
1796
+ item_id: afterDocument.metadata.id,
1797
+ item_type: afterDocument.metadata.type,
1798
+ before: beforeDocument,
1799
+ after: afterDocument,
1800
+ changed_fields: changedFields
1801
+ })
1802
+ ];
1803
+ recordAfterCommandAffectedItem({
1804
+ id: afterDocument.metadata.id,
1805
+ op: "create",
1806
+ item_type: afterDocument.metadata.type,
1807
+ status: afterDocument.metadata.status,
1808
+ current: projectAfterCommandItemSnapshot(afterDocument.metadata, changedFields),
1809
+ changed_fields: changedFields
1810
+ });
1811
+ } finally {
1812
+ await lockRelease();
1813
+ }
1814
+ return hookWarnings;
1815
+ }
1816
+ async function runCreate(options, global2) {
1817
+ let resolvedOptions = normalizeLegacyNoneCreateOptions(await resolveCreateStdinInputs(options));
1818
+ const pmRoot = resolvePmRoot(process.cwd(), global2.path);
1819
+ await ensureInitHasRun(pmRoot);
1820
+ const settings = await readSettings(pmRoot);
1821
+ const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
1822
+ const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);
1823
+ const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
1824
+ const typeSelection = await resolveCreateTypeSelection(resolvedOptions, global2, pmRoot, settings, typeRegistry);
1825
+ resolvedOptions = typeSelection.resolvedOptions;
1826
+ const { typeDefinition, type, createMode } = typeSelection;
1827
+ const unsetTargets = parseCreateUnsetTargets(resolvedOptions.unset, runtimeFieldRegistry);
1828
+ const { explicitUnsets, clearOptionKeys } = collectCreateClearTargets(resolvedOptions, unsetTargets);
1829
+ assertNoCreateScalarUnsetConflicts(resolvedOptions, unsetTargets);
1830
+ assertNoLegacyCreateScalarTokens(resolvedOptions);
1645
1831
  const missingRequiredCreateFlags = requireCreateOptionByType(typeDefinition, resolvedOptions, createMode, clearOptionKeys);
1646
1832
  const nowValue = nowIso();
1647
1833
  const author = selectAuthor(resolvedOptions.author, settings.author_default);
@@ -1659,19 +1845,8 @@ async function runCreate(options, global2) {
1659
1845
  const extensionRegistrations = getActiveExtensionRegistrations();
1660
1846
  const extensionFieldNames = collectRegisteredItemFieldNames(extensionRegistrations);
1661
1847
  const registeredItemFieldValues = parseRegisteredItemFieldAssignments(resolvedOptions.field, extensionRegistrations);
1662
- for (const fieldKey of Object.keys(registeredItemFieldValues)) {
1663
- if (!unsetTargets.frontMatterKeys.has(fieldKey)) {
1664
- continue;
1665
- }
1666
- throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_", "-")} with --field ${fieldKey}=...`, EXIT_CODE.USAGE);
1667
- }
1668
1848
  const runtimeCreateFieldValues = collectRuntimeCreateFieldValues(resolvedOptions, runtimeFieldRegistry, type);
1669
- for (const fieldKey of Object.keys(runtimeCreateFieldValues.values ?? {})) {
1670
- if (!unsetTargets.frontMatterKeys.has(fieldKey)) {
1671
- continue;
1672
- }
1673
- throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_", "-")} with its value flag`, EXIT_CODE.USAGE);
1674
- }
1849
+ assertNoCreateFieldUnsetConflicts(registeredItemFieldValues, runtimeCreateFieldValues, unsetTargets);
1675
1850
  const missingRequiredTypeOptionKeys = collectMissingRequiredTypeOptionKeys(validatedTypeOptions.errors, type);
1676
1851
  const missingRequiredTypeOptionFlags = missingRequiredTypeOptionKeys.map((key) => `--type-option ${key}=<value>`);
1677
1852
  const combinedMissingFlags = [
@@ -1682,31 +1857,15 @@ async function runCreate(options, global2) {
1682
1857
  ...runtimeCreateFieldValues.missing_required_flags
1683
1858
  ])
1684
1859
  ].sort((left, right) => left.localeCompare(right));
1685
- if (combinedMissingFlags.length > 0) {
1686
- const nextValidExample = buildTypeSpecificCreateExample(typeDefinition, missingRequiredCreateFlags, missingRequiredTypeOptionKeys, statusRegistry.open_status);
1687
- const nextSteps = [`Run "pm create --help --type ${type}" for type-aware required option guidance.`];
1688
- if (combinedMissingFlags.includes("--title")) {
1689
- nextSteps.push('Title can also be passed as the first positional argument (example: pm create "Your title" --type ' + type + ").");
1690
- }
1691
- if (createMode === "strict") {
1692
- nextSteps.push('For staged onboarding, retry with "--create-mode progressive".');
1693
- if (SCHEDULE_CREATE_PRESET_TYPES.has(type)) {
1694
- nextSteps.push('For minimal scheduling inputs, try "--schedule-preset lightweight".');
1695
- }
1696
- }
1697
- const errorMessage = combinedMissingFlags.length === 1 ? `Missing required option ${combinedMissingFlags[0]} for type "${type}"` : `Missing required options ${combinedMissingFlags.join(", ")} for type "${type}"`;
1698
- throw new PmCliError(errorMessage, EXIT_CODE.USAGE, {
1699
- code: "missing_required_option",
1700
- required: `Provide all required create options and type options for type "${type}" in one invocation.`,
1701
- examples: [nextValidExample],
1702
- nextSteps,
1703
- recovery: createMode === "strict" ? {
1704
- recovery_mode: "compact",
1705
- missing_required_fields: combinedMissingFlags,
1706
- suggested_flags: ["--create-mode progressive", ...combinedMissingFlags]
1707
- } : void 0
1708
- });
1709
- }
1860
+ assertNoMissingRequiredCreateOptions({
1861
+ combinedMissingFlags,
1862
+ typeDefinition,
1863
+ missingRequiredCreateFlags,
1864
+ missingRequiredTypeOptionKeys,
1865
+ openStatus: statusRegistry.open_status,
1866
+ type,
1867
+ createMode
1868
+ });
1710
1869
  const nonMissingTypeOptionErrors = filterNonMissingTypeOptionErrors(validatedTypeOptions.errors, type);
1711
1870
  if (nonMissingTypeOptionErrors.length > 0) {
1712
1871
  const nextValidExample = buildTypeSpecificCreateExample(typeDefinition, [], [], statusRegistry.open_status);
@@ -1720,132 +1879,77 @@ async function runCreate(options, global2) {
1720
1879
  const id = await generateItemId(pmRoot, settings.id_prefix);
1721
1880
  let status = resolvedOptions.status !== void 0 ? parseStatusValue(resolvedOptions.status, statusRegistry) : resolveCreateDefaultStatus(typeDefinition, statusRegistry);
1722
1881
  const priority = resolvedOptions.priority !== void 0 ? ensurePriority(resolvedOptions.priority) : 2;
1723
- if (unsetTargets.frontMatterKeys.has("tags") && Array.isArray(resolvedOptions.addTags) && resolvedOptions.addTags.length > 0) {
1724
- throw new PmCliError("Cannot combine --unset tags with --add-tags", EXIT_CODE.USAGE);
1725
- }
1726
- const baseTags = unsetTargets.frontMatterKeys.has("tags") ? [] : resolvedOptions.tags !== void 0 ? parseTags(resolvedOptions.tags) : [];
1727
- const tags = mergeAdditiveTags(baseTags, resolvedOptions.addTags);
1728
- const deadline = unsetTargets.frontMatterKeys.has("deadline") ? void 0 : resolvedOptions.deadline === void 0 ? void 0 : resolveIsoOrRelative(resolvedOptions.deadline, new Date(nowValue), "deadline");
1729
- const estimatedMinutes = unsetTargets.frontMatterKeys.has("estimated_minutes") ? void 0 : resolvedOptions.estimatedMinutes === void 0 ? void 0 : parseOptionalNumber(resolvedOptions.estimatedMinutes, "estimated-minutes");
1730
- const acceptanceCriteria = unsetTargets.frontMatterKeys.has("acceptance_criteria") ? void 0 : resolvedOptions.acceptanceCriteria === void 0 ? void 0 : resolvedOptions.acceptanceCriteria;
1731
- const definitionOfReady = unsetTargets.frontMatterKeys.has("definition_of_ready") || resolvedOptions.definitionOfReady === void 0 ? void 0 : parseOptionalString(resolvedOptions.definitionOfReady);
1732
- if (resolvedOptions.order !== void 0 && resolvedOptions.rank !== void 0 && resolvedOptions.order !== resolvedOptions.rank) {
1733
- throw new PmCliError("--order and --rank must match when both are provided", EXIT_CODE.USAGE);
1734
- }
1735
- const orderRaw = resolvedOptions.order ?? resolvedOptions.rank;
1736
- const order = unsetTargets.frontMatterKeys.has("order") || orderRaw === void 0 ? void 0 : parseOptionalNumber(orderRaw, "order");
1737
- if (order !== void 0 && !Number.isInteger(order)) {
1738
- throw new PmCliError("Order must be an integer", EXIT_CODE.USAGE);
1739
- }
1740
- const goal = unsetTargets.frontMatterKeys.has("goal") || resolvedOptions.goal === void 0 ? void 0 : parseOptionalString(resolvedOptions.goal);
1741
- const objective = unsetTargets.frontMatterKeys.has("objective") || resolvedOptions.objective === void 0 ? void 0 : parseOptionalString(resolvedOptions.objective);
1742
- const value = unsetTargets.frontMatterKeys.has("value") || resolvedOptions.value === void 0 ? void 0 : parseOptionalString(resolvedOptions.value);
1743
- const impact = unsetTargets.frontMatterKeys.has("impact") || resolvedOptions.impact === void 0 ? void 0 : parseOptionalString(resolvedOptions.impact);
1744
- const outcome = unsetTargets.frontMatterKeys.has("outcome") || resolvedOptions.outcome === void 0 ? void 0 : parseOptionalString(resolvedOptions.outcome);
1745
- const whyNow = unsetTargets.frontMatterKeys.has("why_now") || resolvedOptions.whyNow === void 0 ? void 0 : parseOptionalString(resolvedOptions.whyNow);
1746
- const assignee = unsetTargets.frontMatterKeys.has("assignee") || resolvedOptions.assignee === void 0 ? void 0 : parseOptionalString(resolvedOptions.assignee);
1747
- const authorValue = unsetTargets.frontMatterKeys.has("author") ? void 0 : parseOptionalString(resolvedOptions.author) ?? author;
1748
- let parent = unsetTargets.frontMatterKeys.has("parent") || resolvedOptions.parent === void 0 ? void 0 : parseOptionalString(resolvedOptions.parent);
1749
- let parentSource;
1750
- if (parent === void 0 && !unsetTargets.frontMatterKeys.has("parent") && resolvedOptions.parent === void 0) {
1751
- const focused = await getFocusedItem(pmRoot);
1752
- if (focused !== void 0) {
1753
- parent = focused;
1754
- parentSource = "focus";
1755
- }
1756
- }
1757
- const reviewer = unsetTargets.frontMatterKeys.has("reviewer") || resolvedOptions.reviewer === void 0 ? void 0 : parseOptionalString(resolvedOptions.reviewer);
1758
- const riskRaw = unsetTargets.frontMatterKeys.has("risk") || resolvedOptions.risk === void 0 ? void 0 : parseOptionalString(resolvedOptions.risk);
1759
- const risk = riskRaw !== void 0 ? ensureEnumValue(normalizeRiskInput(riskRaw), RISK_VALUES, "risk") : void 0;
1760
- const confidenceRaw = unsetTargets.frontMatterKeys.has("confidence") || resolvedOptions.confidence === void 0 ? void 0 : parseOptionalString(resolvedOptions.confidence);
1761
- const confidence = confidenceRaw !== void 0 ? parseConfidenceInput(confidenceRaw) : void 0;
1882
+ const unsetKeys = unsetTargets.frontMatterKeys;
1883
+ const tags = resolveCreateTags(unsetKeys, resolvedOptions);
1884
+ const deadline = resolveUnsettableTransformed(unsetKeys, "deadline", resolvedOptions.deadline, (raw) => resolveIsoOrRelative(raw, new Date(nowValue), "deadline"));
1885
+ const estimatedMinutes = resolveUnsettableTransformed(unsetKeys, "estimated_minutes", resolvedOptions.estimatedMinutes, (raw) => parseOptionalNumber(raw, "estimated-minutes"));
1886
+ const acceptanceCriteria = resolveUnsettableOptionalString(unsetKeys, "acceptance_criteria", resolvedOptions.acceptanceCriteria);
1887
+ const definitionOfReady = resolveUnsettableOptionalString(unsetKeys, "definition_of_ready", resolvedOptions.definitionOfReady);
1888
+ const order = resolveCreateOrder(unsetKeys, resolvedOptions);
1889
+ const goal = resolveUnsettableOptionalString(unsetKeys, "goal", resolvedOptions.goal);
1890
+ const objective = resolveUnsettableOptionalString(unsetKeys, "objective", resolvedOptions.objective);
1891
+ const value = resolveUnsettableOptionalString(unsetKeys, "value", resolvedOptions.value);
1892
+ const impact = resolveUnsettableOptionalString(unsetKeys, "impact", resolvedOptions.impact);
1893
+ const outcome = resolveUnsettableOptionalString(unsetKeys, "outcome", resolvedOptions.outcome);
1894
+ const whyNow = resolveUnsettableOptionalString(unsetKeys, "why_now", resolvedOptions.whyNow);
1895
+ const assignee = resolveUnsettableOptionalString(unsetKeys, "assignee", resolvedOptions.assignee);
1896
+ const authorValue = unsetKeys.has("author") ? void 0 : parseOptionalString(resolvedOptions.author) ?? author;
1897
+ const initialParent = resolveUnsettableOptionalString(unsetKeys, "parent", resolvedOptions.parent);
1898
+ const inheritedParent = await inheritFocusedParent(initialParent, resolvedOptions, unsetKeys, pmRoot);
1899
+ let parent = inheritedParent.parent;
1900
+ const parentSource = inheritedParent.parentSource;
1901
+ const reviewer = resolveUnsettableOptionalString(unsetKeys, "reviewer", resolvedOptions.reviewer);
1902
+ const risk = resolveUnsettableTransformed(unsetKeys, "risk", resolvedOptions.risk, (raw) => ensureEnumValue(normalizeRiskInput(raw), RISK_VALUES, "risk"));
1903
+ const confidence = resolveUnsettableTransformed(unsetKeys, "confidence", resolvedOptions.confidence, (raw) => parseConfidenceInput(raw));
1762
1904
  const parentReferencePolicy = resolvedOptions.allowMissingParent === true && settings.validation.parent_reference === "strict_error" ? "warn" : settings.validation.parent_reference;
1763
1905
  const sprintReleasePolicy = settings.validation.sprint_release_format;
1764
- const validationWarnings = [];
1765
- if (type.toLowerCase() === "event" && (events.values === void 0 || events.values.length === 0)) {
1766
- validationWarnings.push(`event_without_schedule:${id}:no_time_set`);
1767
- }
1768
- const calendarRelevantTypes = /* @__PURE__ */ new Set(["milestone", "meeting", "reminder", "event"]);
1769
- const hasDeadline = deadline !== void 0;
1770
- const hasReminders = reminders.values !== void 0 && reminders.values.length > 0;
1771
- const hasEvents = events.values !== void 0 && events.values.length > 0;
1772
- if (calendarRelevantTypes.has(type.toLowerCase()) && !hasDeadline && !hasReminders && !hasEvents) {
1773
- validationWarnings.push(`calendar_item_without_schedule:${id}:no_deadline_or_reminder_or_event (hint: set --deadline <ISO> or --reminder "<when>", or link an Event via --event "start=<ISO>,end=<ISO>"; otherwise this item never appears on pm calendar)`);
1774
- }
1906
+ const validationWarnings = collectCreateScheduleWarnings(type, id, deadline, reminders.values, events.values);
1775
1907
  if (parent !== void 0) {
1776
- parent = normalizeParentReferenceValue(parent);
1777
- const parentLocated = await locateItem(pmRoot, parent, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1778
- if (!parentLocated) {
1779
- const normalizedParentId = normalizeItemId(parent, settings.id_prefix);
1780
- validationWarnings.push(...validateMissingParentReference(normalizedParentId, parentReferencePolicy).warnings);
1781
- }
1782
- }
1783
- let sprint = unsetTargets.frontMatterKeys.has("sprint") || resolvedOptions.sprint === void 0 ? void 0 : parseOptionalString(resolvedOptions.sprint);
1784
- if (sprint !== void 0) {
1785
- const sprintValidation = validateSprintOrReleaseValue("sprint", sprint, sprintReleasePolicy);
1786
- sprint = sprintValidation.value;
1787
- validationWarnings.push(...sprintValidation.warnings);
1788
- }
1789
- let release = unsetTargets.frontMatterKeys.has("release") || resolvedOptions.release === void 0 ? void 0 : parseOptionalString(resolvedOptions.release);
1790
- if (release !== void 0) {
1791
- const releaseValidation = validateSprintOrReleaseValue("release", release, sprintReleasePolicy);
1792
- release = releaseValidation.value;
1793
- validationWarnings.push(...releaseValidation.warnings);
1794
- }
1795
- const blockedBy = unsetTargets.frontMatterKeys.has("blocked_by") || resolvedOptions.blockedBy === void 0 ? void 0 : parseOptionalString(resolvedOptions.blockedBy);
1796
- let dependencyValues = dependencies.values;
1797
- if (blockedBy !== void 0) {
1798
- const normalizedBlockedBy = normalizeItemId(blockedBy, settings.id_prefix);
1799
- const blockedByLocated = await locateItem(pmRoot, normalizedBlockedBy, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1800
- if (blockedByLocated) {
1801
- const hasBlockedByDependency = (dependencyValues ?? []).some((dependency) => dependency.id === blockedByLocated.id && dependency.kind === "blocked_by");
1802
- if (!hasBlockedByDependency) {
1803
- dependencyValues = [
1804
- ...dependencyValues ?? [],
1805
- {
1806
- id: blockedByLocated.id,
1807
- kind: "blocked_by",
1808
- created_at: nowValue,
1809
- author
1810
- }
1811
- ];
1812
- }
1813
- if (resolvedOptions.status === void 0) {
1814
- status = statusRegistry.blocked_statuses.has("blocked") ? "blocked" : [...statusRegistry.blocked_statuses].sort((left, right) => left.localeCompare(right))[0] ?? statusRegistry.open_status;
1815
- }
1816
- }
1817
- }
1818
- const blockedReason = unsetTargets.frontMatterKeys.has("blocked_reason") || resolvedOptions.blockedReason === void 0 ? void 0 : parseOptionalString(resolvedOptions.blockedReason);
1819
- const unblockNote = unsetTargets.frontMatterKeys.has("unblock_note") || resolvedOptions.unblockNote === void 0 ? void 0 : parseOptionalString(resolvedOptions.unblockNote);
1820
- const reporter = (
1821
- /* c8 ignore next -- reporter normalization branch is covered in issue-template integration tests. */
1822
- unsetTargets.frontMatterKeys.has("reporter") || resolvedOptions.reporter === void 0 ? void 0 : parseOptionalString(resolvedOptions.reporter)
1823
- );
1824
- const severityRaw = unsetTargets.frontMatterKeys.has("severity") || resolvedOptions.severity === void 0 ? void 0 : parseOptionalString(resolvedOptions.severity);
1825
- const severity = severityRaw !== void 0 ? ensureEnumValue(normalizeSeverityInput(severityRaw), ISSUE_SEVERITY_VALUES, "severity") : void 0;
1826
- const environment = unsetTargets.frontMatterKeys.has("environment") || resolvedOptions.environment === void 0 ? void 0 : parseOptionalString(resolvedOptions.environment);
1827
- const reproSteps = unsetTargets.frontMatterKeys.has("repro_steps") || resolvedOptions.reproSteps === void 0 ? void 0 : parseOptionalString(resolvedOptions.reproSteps);
1828
- const resolution = unsetTargets.frontMatterKeys.has("resolution") || resolvedOptions.resolution === void 0 ? void 0 : parseOptionalString(resolvedOptions.resolution);
1829
- const expectedResult = unsetTargets.frontMatterKeys.has("expected_result") || resolvedOptions.expectedResult === void 0 ? void 0 : parseOptionalString(resolvedOptions.expectedResult);
1830
- const actualResult = unsetTargets.frontMatterKeys.has("actual_result") || resolvedOptions.actualResult === void 0 ? void 0 : parseOptionalString(resolvedOptions.actualResult);
1831
- const affectedVersion = unsetTargets.frontMatterKeys.has("affected_version") || resolvedOptions.affectedVersion === void 0 ? void 0 : parseOptionalString(resolvedOptions.affectedVersion);
1832
- const fixedVersion = unsetTargets.frontMatterKeys.has("fixed_version") || resolvedOptions.fixedVersion === void 0 ? void 0 : parseOptionalString(resolvedOptions.fixedVersion);
1833
- const component = unsetTargets.frontMatterKeys.has("component") || resolvedOptions.component === void 0 ? void 0 : parseOptionalString(resolvedOptions.component);
1834
- const regressionRaw = unsetTargets.frontMatterKeys.has("regression") || resolvedOptions.regression === void 0 ? void 0 : parseOptionalString(resolvedOptions.regression);
1835
- const regression = regressionRaw !== void 0 ? parseRegressionInput(regressionRaw) : void 0;
1836
- const customerImpact = unsetTargets.frontMatterKeys.has("customer_impact") || resolvedOptions.customerImpact === void 0 ? void 0 : parseOptionalString(resolvedOptions.customerImpact);
1908
+ const parentValidation = await validateCreateParentReference(pmRoot, settings, typeRegistry, parent, parentReferencePolicy);
1909
+ parent = parentValidation.parent;
1910
+ validationWarnings.push(...parentValidation.warnings);
1911
+ }
1912
+ const sprintResolved = resolveCreateSprintOrRelease(unsetKeys, "sprint", resolvedOptions.sprint, "sprint", sprintReleasePolicy);
1913
+ const sprint = sprintResolved.value;
1914
+ validationWarnings.push(...sprintResolved.warnings);
1915
+ const releaseResolved = resolveCreateSprintOrRelease(unsetKeys, "release", resolvedOptions.release, "release", sprintReleasePolicy);
1916
+ const release = releaseResolved.value;
1917
+ validationWarnings.push(...releaseResolved.warnings);
1918
+ const blockedBy = resolveUnsettableOptionalString(unsetKeys, "blocked_by", resolvedOptions.blockedBy);
1919
+ const blockedByResolution = await resolveCreateBlockedByDependency({
1920
+ pmRoot,
1921
+ settings,
1922
+ typeRegistry,
1923
+ statusRegistry,
1924
+ blockedBy,
1925
+ dependencyValues: dependencies.values,
1926
+ status,
1927
+ statusExplicit: resolvedOptions.status !== void 0,
1928
+ nowValue,
1929
+ author
1930
+ });
1931
+ const dependencyValues = blockedByResolution.dependencyValues;
1932
+ status = blockedByResolution.status;
1933
+ const blockedReason = resolveUnsettableOptionalString(unsetKeys, "blocked_reason", resolvedOptions.blockedReason);
1934
+ const unblockNote = resolveUnsettableOptionalString(unsetKeys, "unblock_note", resolvedOptions.unblockNote);
1935
+ const reporter = resolveUnsettableOptionalString(unsetKeys, "reporter", resolvedOptions.reporter);
1936
+ const severity = resolveUnsettableTransformed(unsetKeys, "severity", resolvedOptions.severity, (raw) => ensureEnumValue(normalizeSeverityInput(raw), ISSUE_SEVERITY_VALUES, "severity"));
1937
+ const environment = resolveUnsettableOptionalString(unsetKeys, "environment", resolvedOptions.environment);
1938
+ const reproSteps = resolveUnsettableOptionalString(unsetKeys, "repro_steps", resolvedOptions.reproSteps);
1939
+ const resolution = resolveUnsettableOptionalString(unsetKeys, "resolution", resolvedOptions.resolution);
1940
+ const expectedResult = resolveUnsettableOptionalString(unsetKeys, "expected_result", resolvedOptions.expectedResult);
1941
+ const actualResult = resolveUnsettableOptionalString(unsetKeys, "actual_result", resolvedOptions.actualResult);
1942
+ const affectedVersion = resolveUnsettableOptionalString(unsetKeys, "affected_version", resolvedOptions.affectedVersion);
1943
+ const fixedVersion = resolveUnsettableOptionalString(unsetKeys, "fixed_version", resolvedOptions.fixedVersion);
1944
+ const component = resolveUnsettableOptionalString(unsetKeys, "component", resolvedOptions.component);
1945
+ const regression = resolveUnsettableTransformed(unsetKeys, "regression", resolvedOptions.regression, (raw) => parseRegressionInput(raw));
1946
+ const customerImpact = resolveUnsettableOptionalString(unsetKeys, "customer_impact", resolvedOptions.customerImpact);
1837
1947
  const title = requireStringOption(resolvedOptions.title, "--title");
1838
1948
  const description = resolvedOptions.description ?? "";
1839
1949
  const body = resolvedOptions.body ?? "";
1840
- let closeReason;
1841
- if (status === statusRegistry.close_status && settings.governance.require_close_reason) {
1842
- const messageText = typeof resolvedOptions.message === "string" ? resolvedOptions.message.trim() : "";
1843
- const resolutionText = typeof resolution === "string" ? resolution.trim() : "";
1844
- closeReason = messageText || resolutionText || CREATE_DIRECT_CLOSE_REASON_DEFAULT;
1845
- if (messageText.length === 0 && resolutionText.length === 0) {
1846
- validationWarnings.push("close_reason_defaulted");
1847
- }
1848
- }
1950
+ const closeReasonResolution = resolveCreateCloseReason(status, statusRegistry, settings, resolvedOptions, resolution);
1951
+ const closeReason = closeReasonResolution.closeReason;
1952
+ validationWarnings.push(...closeReasonResolution.warnings);
1849
1953
  const frontMatter = normalizeFrontMatter({
1850
1954
  id,
1851
1955
  title,
@@ -1902,9 +2006,7 @@ async function runCreate(options, global2) {
1902
2006
  reminders: reminders.values,
1903
2007
  events: events.values,
1904
2008
  ...registeredItemFieldValues,
1905
- /* c8 ignore start -- collectRuntimeCreateFieldValues always returns a `values` object, so the `?? {}` fallback is unreachable. */
1906
- ...runtimeCreateFieldValues.values ?? {}
1907
- /* c8 ignore stop */
2009
+ ...runtimeCreateFieldValues.values
1908
2010
  });
1909
2011
  try {
1910
2012
  applyRegisteredItemFieldDefaultsAndValidation(frontMatter, extensionRegistrations);
@@ -1919,9 +2021,6 @@ async function runCreate(options, global2) {
1919
2021
  metadata: {},
1920
2022
  body: ""
1921
2023
  };
1922
- const itemPath = getItemPath(pmRoot, type, id, settings.item_format, typeRegistry.type_to_folder);
1923
- const historyPath = getHistoryPath(pmRoot, id);
1924
- const lockRelease = await acquireLock(pmRoot, id, settings.locks.ttl_seconds, author, false, settings.governance.force_required_for_stale_lock);
1925
2024
  const explicitUnsetKeys = [...explicitUnsets].sort((left, right) => left.localeCompare(right));
1926
2025
  const historyMessage = buildHistoryMessage(resolvedOptions.message, explicitUnsetKeys);
1927
2026
  const changedFields = buildChangedFields(frontMatter, body, explicitUnsetKeys, [
@@ -1930,63 +2029,23 @@ async function runCreate(options, global2) {
1930
2029
  ...Object.keys(runtimeCreateFieldValues.values ?? {})
1931
2030
  /* c8 ignore stop */
1932
2031
  ]);
1933
- let hookWarnings = [];
1934
- try {
1935
- await writeFileAtomic(itemPath, serializeItemDocument(afterDocument, {
1936
- format: settings.item_format,
1937
- schema: settings.schema,
1938
- extensionFieldNames
1939
- }));
1940
- try {
1941
- const entry = createHistoryEntry({
1942
- nowIso: nowValue,
1943
- author,
1944
- op: "create",
1945
- before: beforeDocument,
1946
- after: afterDocument,
1947
- message: historyMessage
1948
- });
1949
- await appendHistoryEntry(historyPath, entry);
1950
- } catch (error) {
1951
- await removeFileIfExists(itemPath);
1952
- throw error;
1953
- }
1954
- hookWarnings = [
1955
- ...await runActiveOnWriteHooks({
1956
- path: itemPath,
1957
- scope: "project",
1958
- op: "create",
1959
- item_id: afterDocument.metadata.id,
1960
- item_type: afterDocument.metadata.type,
1961
- before: beforeDocument,
1962
- after: afterDocument,
1963
- changed_fields: changedFields
1964
- }),
1965
- ...await runActiveOnWriteHooks({
1966
- path: historyPath,
1967
- scope: "project",
1968
- op: "create:history",
1969
- item_id: afterDocument.metadata.id,
1970
- item_type: afterDocument.metadata.type,
1971
- before: beforeDocument,
1972
- after: afterDocument,
1973
- changed_fields: changedFields
1974
- })
1975
- ];
1976
- recordAfterCommandAffectedItem({
1977
- id: afterDocument.metadata.id,
1978
- op: "create",
1979
- item_type: afterDocument.metadata.type,
1980
- status: afterDocument.metadata.status,
1981
- current: projectAfterCommandItemSnapshot(afterDocument.metadata, changedFields),
1982
- changed_fields: changedFields
1983
- });
1984
- } finally {
1985
- await lockRelease();
1986
- }
2032
+ const hookWarnings = await writeCreatedItem({
2033
+ pmRoot,
2034
+ type,
2035
+ id,
2036
+ settings,
2037
+ typeRegistry,
2038
+ author,
2039
+ extensionFieldNames,
2040
+ afterDocument,
2041
+ beforeDocument,
2042
+ historyMessage,
2043
+ changedFields,
2044
+ nowValue
2045
+ });
1987
2046
  const outputItem = structuredClone(frontMatter);
1988
2047
  const nextTransition = suggestNextLifecycleTransition(id, type, status, statusRegistry);
1989
- if (calendarRelevantTypes.has(type.toLowerCase()) && !hasDeadline && !hasReminders && !hasEvents) {
2048
+ if (createItemLacksSchedule(type, deadline, reminders.values, events.values)) {
1990
2049
  printError(`[pm] warning: ${type} '${id}' has no deadline/reminder/event \u2014 it will not appear on the calendar. Add one via 'pm update ${id} --deadline <ISO>' or 'pm update ${id} --event "start=<ISO>,end=<ISO>"'.`);
1991
2050
  }
1992
2051
  return {
@@ -2014,7 +2073,7 @@ var _testOnlyCreateCommand = {
2014
2073
  parseCreateUnsetTargets,
2015
2074
  requireStringOption,
2016
2075
  readTemplateOptionsFromRuntimeResult,
2017
- resolveRuntimeCreateUnsetDefinition,
2076
+ resolveRuntimeCreateUnsetDefinition: (token, registry) => resolveRuntimeUnsetFieldDefinition(token, "create", registry),
2018
2077
  typeOptionExampleValue
2019
2078
  };
2020
2079
 
@@ -2027,6 +2086,11 @@ export {
2027
2086
  isLegacyNoneToken,
2028
2087
  assertNoLegacyNoneToken,
2029
2088
  assertNoLegacyNoneTokens,
2089
+ applyLegacyNoneCollectionNormalizers,
2090
+ COMMON_UNSET_FIELD_DEFINITIONS_BEFORE_CLOSE_REASON,
2091
+ COMMON_UNSET_FIELD_DEFINITIONS_AFTER_CLOSE_REASON_BEFORE_AUTHOR,
2092
+ COMMON_UNSET_FIELD_DEFINITIONS_AFTER_AUTHOR,
2093
+ resolveRuntimeUnsetFieldDefinition,
2030
2094
  ensureEnumValue,
2031
2095
  parseReminderEntries,
2032
2096
  parseEventEntries,
@@ -2038,4 +2102,4 @@ export {
2038
2102
  runCreate,
2039
2103
  _testOnlyCreateCommand
2040
2104
  };
2041
- //# sourceMappingURL=chunk-XXKV4UWE.js.map
2105
+ //# sourceMappingURL=chunk-VARHOHYV.js.map