@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
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="dd613437-a3c2-555c-9100-92271fb1f1db")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="282e5a28-5e38-537b-8dd7-1c4731851fe2")}catch(e){}}();
3
3
  import {
4
4
  looksLikeStructuredLinkedTestEntry,
5
5
  normalizeStructuredLinkedTestEntry,
@@ -12,7 +12,7 @@ import {
12
12
  parseLinkedTestMinLines,
13
13
  parseLinkedTestRegexList,
14
14
  parseLinkedTestStringList
15
- } from "./chunk-AYPQUFCX.js";
15
+ } from "./chunk-EJUDVUYZ.js";
16
16
  import {
17
17
  assertNoUnknownCsvKeys,
18
18
  createStdinTokenResolver,
@@ -21,54 +21,43 @@ import {
21
21
  parseCsvKv,
22
22
  parseOptionalNumber,
23
23
  parseTags
24
- } from "./chunk-KIEAK7YE.js";
24
+ } from "./chunk-ZRP4VG5U.js";
25
25
  import {
26
26
  getFocusedItem
27
- } from "./chunk-5S4ZGDB2.js";
27
+ } from "./chunk-N74UMG5H.js";
28
28
  import {
29
29
  normalizeParentReferenceValue,
30
30
  validateMissingParentReference,
31
31
  validateSprintOrReleaseValue
32
- } from "./chunk-2WCYE3IF.js";
32
+ } from "./chunk-HZZEHPRG.js";
33
33
  import {
34
34
  buildInvalidTypeError
35
- } from "./chunk-TSI32UEL.js";
35
+ } from "./chunk-MAUKX7JC.js";
36
36
  import {
37
37
  printError
38
- } from "./chunk-JPJDP4VU.js";
38
+ } from "./chunk-NWMZWYYB.js";
39
39
  import {
40
40
  acquireLock,
41
41
  appendHistoryEntry,
42
42
  applyRegisteredItemFieldDefaultsAndValidation,
43
43
  collectRegisteredItemFieldNames,
44
44
  createHistoryEntry,
45
+ generateItemId,
45
46
  locateItem,
47
+ normalizeItemId,
46
48
  parseRegisteredItemFieldAssignments
47
- } from "./chunk-KJZOSF7J.js";
48
- import {
49
- generateItemId,
50
- normalizeItemId
51
- } from "./chunk-FBLT6WGK.js";
49
+ } from "./chunk-JSU5P7VS.js";
52
50
  import {
53
51
  canonicalDocument,
54
52
  collectRuntimeCreateFieldValues,
55
53
  normalizeFrontMatter,
56
54
  normalizeStatusInput,
57
55
  serializeItemDocument
58
- } from "./chunk-ZLWRPBOW.js";
59
- import {
60
- canonicalizeCommandOptionKey,
61
- commandOptionFlagLabel,
62
- resolveCommandOptionPolicyState,
63
- resolveItemTypeRegistry,
64
- resolveTypeDefinition,
65
- resolveTypeName,
66
- validateTypeOptions
67
- } from "./chunk-TKPP4GOO.js";
56
+ } from "./chunk-QCWF6IYD.js";
68
57
  import {
69
58
  nowIso,
70
59
  resolveIsoOrRelative
71
- } from "./chunk-FMWW2JDU.js";
60
+ } from "./chunk-AXIDKKAT.js";
72
61
  import {
73
62
  CONFIDENCE_TEXT_VALUES,
74
63
  CREATE_DIRECT_CLOSE_REASON_DEFAULT,
@@ -81,6 +70,8 @@ import {
81
70
  RECURRENCE_WEEKDAY_VALUES,
82
71
  RISK_VALUES,
83
72
  SCOPE_VALUES,
73
+ canonicalizeCommandOptionKey,
74
+ commandOptionFlagLabel,
84
75
  getActiveExtensionRegistrations,
85
76
  getHistoryPath,
86
77
  getItemPath,
@@ -91,15 +82,20 @@ import {
91
82
  readSettings,
92
83
  recordAfterCommandAffectedItem,
93
84
  removeFileIfExists,
85
+ resolveCommandOptionPolicyState,
86
+ resolveItemTypeRegistry,
94
87
  resolveItemTypesFilePath,
95
88
  resolvePmRoot,
96
89
  resolveRuntimeFieldRegistry,
97
90
  resolveRuntimeStatusRegistry,
91
+ resolveTypeDefinition,
92
+ resolveTypeName,
98
93
  runActiveCommandHandler,
99
94
  runActiveOnWriteHooks,
95
+ validateTypeOptions,
100
96
  weekdayOrderIndex,
101
97
  writeFileAtomic
102
- } from "./chunk-VSAABFGQ.js";
98
+ } from "./chunk-7R4QEMZZ.js";
103
99
 
104
100
  // dist/core/item/priority.js
105
101
  var PRIORITY_NAME_TO_VALUE = {
@@ -220,6 +216,32 @@ function assertNoLegacyNoneTokens(values, flag, replacementHint) {
220
216
  const suffix = replacementHint ? ` ${replacementHint}` : "";
221
217
  throw new PmCliError(`${flag} no longer accepts "none" or "null".${suffix}`.trim(), EXIT_CODE.USAGE);
222
218
  }
219
+ function applyLegacyNoneCollectionNormalizers(normalized, definitions) {
220
+ for (const definition of definitions) {
221
+ const candidate = normalized[definition.optionKey];
222
+ if (!Array.isArray(candidate) || candidate.length === 0) {
223
+ continue;
224
+ }
225
+ if (!candidate.every((entry) => typeof entry === "string")) {
226
+ throw new PmCliError(`${definition.valueFlag} entries must be strings.`, EXIT_CODE.USAGE);
227
+ }
228
+ const entries = candidate;
229
+ const hasLegacy = entries.some((entry) => isLegacyNoneToken(entry));
230
+ if (!hasLegacy) {
231
+ continue;
232
+ }
233
+ const concreteEntries = entries.filter((entry) => !isLegacyNoneToken(entry));
234
+ if (concreteEntries.length > 0) {
235
+ 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);
236
+ }
237
+ normalized[definition.optionKey] = void 0;
238
+ normalized[definition.clearFlagKey] = true;
239
+ if (definition.disableFlagKey) {
240
+ normalized[definition.disableFlagKey] = false;
241
+ }
242
+ }
243
+ return normalized;
244
+ }
223
245
 
224
246
  // dist/cli/commands/lifecycle-transitions.js
225
247
  var NON_WORKABLE_TYPES = /* @__PURE__ */ new Set([
@@ -244,6 +266,162 @@ function suggestNextLifecycleTransition(id, type, status, statusRegistry) {
244
266
  return { command: `pm start-task ${id}`, to_status: inProgress };
245
267
  }
246
268
 
269
+ // dist/cli/commands/shared-unset-fields.js
270
+ var COMMON_UNSET_FIELD_DEFINITIONS_BEFORE_CLOSE_REASON = [
271
+ { canonical: "tags", aliases: ["tags"], optionKey: "tags", frontMatterKey: "tags" }
272
+ ];
273
+ var COMMON_UNSET_FIELD_DEFINITIONS_AFTER_CLOSE_REASON_BEFORE_AUTHOR = [
274
+ { canonical: "deadline", aliases: ["deadline"], optionKey: "deadline", frontMatterKey: "deadline" },
275
+ {
276
+ canonical: "estimate",
277
+ aliases: ["estimate", "estimated_minutes", "estimated-minutes"],
278
+ optionKey: "estimatedMinutes",
279
+ frontMatterKey: "estimated_minutes"
280
+ },
281
+ {
282
+ canonical: "acceptance-criteria",
283
+ aliases: ["acceptance_criteria", "acceptance-criteria", "ac"],
284
+ optionKey: "acceptanceCriteria",
285
+ frontMatterKey: "acceptance_criteria"
286
+ },
287
+ {
288
+ canonical: "definition-of-ready",
289
+ aliases: ["definition_of_ready", "definition-of-ready"],
290
+ optionKey: "definitionOfReady",
291
+ frontMatterKey: "definition_of_ready"
292
+ },
293
+ { canonical: "order", aliases: ["order", "rank"], optionKey: "order", frontMatterKey: "order" },
294
+ { canonical: "goal", aliases: ["goal"], optionKey: "goal", frontMatterKey: "goal" },
295
+ { canonical: "objective", aliases: ["objective"], optionKey: "objective", frontMatterKey: "objective" },
296
+ { canonical: "value", aliases: ["value"], optionKey: "value", frontMatterKey: "value" },
297
+ { canonical: "impact", aliases: ["impact"], optionKey: "impact", frontMatterKey: "impact" },
298
+ { canonical: "outcome", aliases: ["outcome"], optionKey: "outcome", frontMatterKey: "outcome" },
299
+ { canonical: "why-now", aliases: ["why_now", "why-now"], optionKey: "whyNow", frontMatterKey: "why_now" }
300
+ ];
301
+ var COMMON_UNSET_FIELD_DEFINITIONS_BEFORE_AUTHOR = [
302
+ ...COMMON_UNSET_FIELD_DEFINITIONS_BEFORE_CLOSE_REASON,
303
+ ...COMMON_UNSET_FIELD_DEFINITIONS_AFTER_CLOSE_REASON_BEFORE_AUTHOR
304
+ ];
305
+ var COMMON_UNSET_FIELD_DEFINITIONS_AFTER_AUTHOR = [
306
+ { canonical: "assignee", aliases: ["assignee"], optionKey: "assignee", frontMatterKey: "assignee" },
307
+ { canonical: "parent", aliases: ["parent"], optionKey: "parent", frontMatterKey: "parent" },
308
+ { canonical: "reviewer", aliases: ["reviewer"], optionKey: "reviewer", frontMatterKey: "reviewer" },
309
+ { canonical: "risk", aliases: ["risk"], optionKey: "risk", frontMatterKey: "risk" },
310
+ { canonical: "confidence", aliases: ["confidence"], optionKey: "confidence", frontMatterKey: "confidence" },
311
+ { canonical: "sprint", aliases: ["sprint"], optionKey: "sprint", frontMatterKey: "sprint" },
312
+ { canonical: "release", aliases: ["release"], optionKey: "release", frontMatterKey: "release" },
313
+ {
314
+ canonical: "blocked-by",
315
+ aliases: ["blocked_by", "blocked-by"],
316
+ optionKey: "blockedBy",
317
+ frontMatterKey: "blocked_by"
318
+ },
319
+ {
320
+ canonical: "blocked-reason",
321
+ aliases: ["blocked_reason", "blocked-reason"],
322
+ optionKey: "blockedReason",
323
+ frontMatterKey: "blocked_reason"
324
+ },
325
+ {
326
+ canonical: "unblock-note",
327
+ aliases: ["unblock_note", "unblock-note"],
328
+ optionKey: "unblockNote",
329
+ frontMatterKey: "unblock_note"
330
+ },
331
+ { canonical: "reporter", aliases: ["reporter"], optionKey: "reporter", frontMatterKey: "reporter" },
332
+ { canonical: "severity", aliases: ["severity"], optionKey: "severity", frontMatterKey: "severity" },
333
+ {
334
+ canonical: "environment",
335
+ aliases: ["environment"],
336
+ optionKey: "environment",
337
+ frontMatterKey: "environment"
338
+ },
339
+ {
340
+ canonical: "repro-steps",
341
+ aliases: ["repro_steps", "repro-steps"],
342
+ optionKey: "reproSteps",
343
+ frontMatterKey: "repro_steps"
344
+ },
345
+ {
346
+ canonical: "resolution",
347
+ aliases: ["resolution"],
348
+ optionKey: "resolution",
349
+ frontMatterKey: "resolution"
350
+ },
351
+ {
352
+ canonical: "expected-result",
353
+ aliases: ["expected_result", "expected-result"],
354
+ optionKey: "expectedResult",
355
+ frontMatterKey: "expected_result"
356
+ },
357
+ {
358
+ canonical: "actual-result",
359
+ aliases: ["actual_result", "actual-result"],
360
+ optionKey: "actualResult",
361
+ frontMatterKey: "actual_result"
362
+ },
363
+ {
364
+ canonical: "affected-version",
365
+ aliases: ["affected_version", "affected-version"],
366
+ optionKey: "affectedVersion",
367
+ frontMatterKey: "affected_version"
368
+ },
369
+ {
370
+ canonical: "fixed-version",
371
+ aliases: ["fixed_version", "fixed-version"],
372
+ optionKey: "fixedVersion",
373
+ frontMatterKey: "fixed_version"
374
+ },
375
+ { canonical: "component", aliases: ["component"], optionKey: "component", frontMatterKey: "component" },
376
+ { canonical: "regression", aliases: ["regression"], optionKey: "regression", frontMatterKey: "regression" },
377
+ {
378
+ canonical: "customer-impact",
379
+ aliases: ["customer_impact", "customer-impact"],
380
+ optionKey: "customerImpact",
381
+ frontMatterKey: "customer_impact"
382
+ }
383
+ ];
384
+ function resolveRuntimeUnsetFieldDefinition(token, command, runtimeFieldRegistry) {
385
+ const normalizedToken = token.trim().toLowerCase();
386
+ if (!runtimeFieldRegistry) {
387
+ return void 0;
388
+ }
389
+ const definitions = runtimeFieldRegistry.command_to_fields?.get(command) ?? [];
390
+ for (const definition of definitions) {
391
+ if (definition.allow_unset === false) {
392
+ continue;
393
+ }
394
+ const candidates = /* @__PURE__ */ new Set();
395
+ if (typeof definition.key === "string" && definition.key.length > 0) {
396
+ candidates.add(definition.key.toLowerCase());
397
+ }
398
+ if (typeof definition.metadata_key === "string" && definition.metadata_key.length > 0) {
399
+ candidates.add(definition.metadata_key.toLowerCase());
400
+ }
401
+ if (typeof definition.cli_flag === "string" && definition.cli_flag.length > 0) {
402
+ candidates.add(definition.cli_flag.replaceAll("-", "_").toLowerCase());
403
+ candidates.add(definition.cli_flag.toLowerCase());
404
+ }
405
+ if (Array.isArray(definition.cli_aliases)) {
406
+ for (const alias of definition.cli_aliases) {
407
+ if (typeof alias !== "string" || alias.length === 0) {
408
+ continue;
409
+ }
410
+ candidates.add(alias.replaceAll("-", "_").toLowerCase());
411
+ candidates.add(alias.toLowerCase());
412
+ }
413
+ }
414
+ if (!candidates.has(normalizedToken)) {
415
+ continue;
416
+ }
417
+ return {
418
+ optionKey: definition.key,
419
+ frontMatterKey: definition.metadata_key
420
+ };
421
+ }
422
+ return void 0;
423
+ }
424
+
247
425
  // dist/cli/commands/recurrence-parsers.js
248
426
  function parseEventBoolean(value, flag) {
249
427
  const normalized = value.trim().toLowerCase();
@@ -452,17 +630,16 @@ function parseEventEntries(raw, nowValue, options) {
452
630
  const description = descriptionRaw?.trim();
453
631
  const location = locationRaw?.trim();
454
632
  const timezone = timezoneRaw?.trim();
455
- if (titleRaw !== void 0 && !title) {
456
- throw new PmCliError("--event title must not be empty", EXIT_CODE.USAGE);
457
- }
458
- if (descriptionRaw !== void 0 && !description) {
459
- throw new PmCliError("--event description must not be empty", EXIT_CODE.USAGE);
460
- }
461
- if (locationRaw !== void 0 && !location) {
462
- throw new PmCliError("--event location must not be empty", EXIT_CODE.USAGE);
463
- }
464
- if (timezoneRaw !== void 0 && !timezone) {
465
- throw new PmCliError("--event timezone must not be empty", EXIT_CODE.USAGE);
633
+ const optionalTextFields = [
634
+ ["title", titleRaw, title],
635
+ ["description", descriptionRaw, description],
636
+ ["location", locationRaw, location],
637
+ ["timezone", timezoneRaw, timezone]
638
+ ];
639
+ for (const [fieldLabel, rawValue, trimmedValue] of optionalTextFields) {
640
+ if (rawValue !== void 0 && !trimmedValue) {
641
+ throw new PmCliError(`--event ${fieldLabel} must not be empty`, EXIT_CODE.USAGE);
642
+ }
466
643
  }
467
644
  const allDayRaw = kv.all_day?.trim();
468
645
  const recurrence = parseRecurrenceRule(kv, startAt, nowValue, options.recurrenceEmptyNumericGuard);
@@ -521,111 +698,9 @@ var SCHEDULE_CREATE_PRESET_VALUES = ["lightweight"];
521
698
  var SCHEDULE_CREATE_PRESET_TYPES = /* @__PURE__ */ new Set(["Reminder", "Meeting", "Event"]);
522
699
  var LOG_SEED_ALLOWED_KEYS = /* @__PURE__ */ new Set(["author", "created_at", "text"]);
523
700
  var CREATE_UNSET_FIELD_DEFINITIONS = [
524
- { canonical: "tags", aliases: ["tags"], optionKey: "tags", frontMatterKey: "tags" },
525
- { canonical: "deadline", aliases: ["deadline"], optionKey: "deadline", frontMatterKey: "deadline" },
526
- {
527
- canonical: "estimate",
528
- aliases: ["estimate", "estimated_minutes", "estimated-minutes"],
529
- optionKey: "estimatedMinutes",
530
- frontMatterKey: "estimated_minutes"
531
- },
532
- {
533
- canonical: "acceptance-criteria",
534
- aliases: ["acceptance_criteria", "acceptance-criteria", "ac"],
535
- optionKey: "acceptanceCriteria",
536
- frontMatterKey: "acceptance_criteria"
537
- },
538
- {
539
- canonical: "definition-of-ready",
540
- aliases: ["definition_of_ready", "definition-of-ready"],
541
- optionKey: "definitionOfReady",
542
- frontMatterKey: "definition_of_ready"
543
- },
544
- { canonical: "order", aliases: ["order", "rank"], optionKey: "order", frontMatterKey: "order" },
545
- { canonical: "goal", aliases: ["goal"], optionKey: "goal", frontMatterKey: "goal" },
546
- { canonical: "objective", aliases: ["objective"], optionKey: "objective", frontMatterKey: "objective" },
547
- { canonical: "value", aliases: ["value"], optionKey: "value", frontMatterKey: "value" },
548
- { canonical: "impact", aliases: ["impact"], optionKey: "impact", frontMatterKey: "impact" },
549
- { canonical: "outcome", aliases: ["outcome"], optionKey: "outcome", frontMatterKey: "outcome" },
550
- { canonical: "why-now", aliases: ["why_now", "why-now"], optionKey: "whyNow", frontMatterKey: "why_now" },
701
+ ...COMMON_UNSET_FIELD_DEFINITIONS_BEFORE_AUTHOR,
551
702
  { canonical: "author", aliases: ["author"], optionKey: "author", frontMatterKey: "author" },
552
- { canonical: "assignee", aliases: ["assignee"], optionKey: "assignee", frontMatterKey: "assignee" },
553
- { canonical: "parent", aliases: ["parent"], optionKey: "parent", frontMatterKey: "parent" },
554
- { canonical: "reviewer", aliases: ["reviewer"], optionKey: "reviewer", frontMatterKey: "reviewer" },
555
- { canonical: "risk", aliases: ["risk"], optionKey: "risk", frontMatterKey: "risk" },
556
- { canonical: "confidence", aliases: ["confidence"], optionKey: "confidence", frontMatterKey: "confidence" },
557
- { canonical: "sprint", aliases: ["sprint"], optionKey: "sprint", frontMatterKey: "sprint" },
558
- { canonical: "release", aliases: ["release"], optionKey: "release", frontMatterKey: "release" },
559
- {
560
- canonical: "blocked-by",
561
- aliases: ["blocked_by", "blocked-by"],
562
- optionKey: "blockedBy",
563
- frontMatterKey: "blocked_by"
564
- },
565
- {
566
- canonical: "blocked-reason",
567
- aliases: ["blocked_reason", "blocked-reason"],
568
- optionKey: "blockedReason",
569
- frontMatterKey: "blocked_reason"
570
- },
571
- {
572
- canonical: "unblock-note",
573
- aliases: ["unblock_note", "unblock-note"],
574
- optionKey: "unblockNote",
575
- frontMatterKey: "unblock_note"
576
- },
577
- { canonical: "reporter", aliases: ["reporter"], optionKey: "reporter", frontMatterKey: "reporter" },
578
- { canonical: "severity", aliases: ["severity"], optionKey: "severity", frontMatterKey: "severity" },
579
- {
580
- canonical: "environment",
581
- aliases: ["environment"],
582
- optionKey: "environment",
583
- frontMatterKey: "environment"
584
- },
585
- {
586
- canonical: "repro-steps",
587
- aliases: ["repro_steps", "repro-steps"],
588
- optionKey: "reproSteps",
589
- frontMatterKey: "repro_steps"
590
- },
591
- {
592
- canonical: "resolution",
593
- aliases: ["resolution"],
594
- optionKey: "resolution",
595
- frontMatterKey: "resolution"
596
- },
597
- {
598
- canonical: "expected-result",
599
- aliases: ["expected_result", "expected-result"],
600
- optionKey: "expectedResult",
601
- frontMatterKey: "expected_result"
602
- },
603
- {
604
- canonical: "actual-result",
605
- aliases: ["actual_result", "actual-result"],
606
- optionKey: "actualResult",
607
- frontMatterKey: "actual_result"
608
- },
609
- {
610
- canonical: "affected-version",
611
- aliases: ["affected_version", "affected-version"],
612
- optionKey: "affectedVersion",
613
- frontMatterKey: "affected_version"
614
- },
615
- {
616
- canonical: "fixed-version",
617
- aliases: ["fixed_version", "fixed-version"],
618
- optionKey: "fixedVersion",
619
- frontMatterKey: "fixed_version"
620
- },
621
- { canonical: "component", aliases: ["component"], optionKey: "component", frontMatterKey: "component" },
622
- { canonical: "regression", aliases: ["regression"], optionKey: "regression", frontMatterKey: "regression" },
623
- {
624
- canonical: "customer-impact",
625
- aliases: ["customer_impact", "customer-impact"],
626
- optionKey: "customerImpact",
627
- frontMatterKey: "customer_impact"
628
- }
703
+ ...COMMON_UNSET_FIELD_DEFINITIONS_AFTER_AUTHOR
629
704
  ];
630
705
  var CREATE_UNSET_ALIAS_MAP = (() => {
631
706
  const map = /* @__PURE__ */ new Map();
@@ -711,55 +786,13 @@ function normalizeLegacyNoneCreateOptions(options) {
711
786
  appendUnsetTarget(canonicalUnset);
712
787
  normalized[optionKey] = void 0;
713
788
  }
714
- for (const definition of CREATE_LEGACY_NONE_COLLECTION_NORMALIZERS) {
715
- const entries = normalized[definition.optionKey];
716
- if (!Array.isArray(entries) || entries.length === 0) {
717
- continue;
718
- }
719
- const hasLegacy = entries.some((entry) => isLegacyNoneToken(entry));
720
- if (!hasLegacy) {
721
- continue;
722
- }
723
- const concreteEntries = entries.filter((entry) => !isLegacyNoneToken(entry));
724
- if (concreteEntries.length > 0) {
725
- 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);
726
- }
727
- normalized[definition.optionKey] = void 0;
728
- normalized[definition.clearFlagKey] = true;
729
- }
730
- return normalized;
789
+ return applyLegacyNoneCollectionNormalizers(normalized, CREATE_LEGACY_NONE_COLLECTION_NORMALIZERS);
731
790
  }
732
791
  function parseOptionalString(value) {
733
792
  if (value === void 0)
734
793
  return void 0;
735
794
  return value;
736
795
  }
737
- function resolveRuntimeCreateUnsetDefinition(token, runtimeFieldRegistry) {
738
- if (!runtimeFieldRegistry) {
739
- return void 0;
740
- }
741
- for (const definition of runtimeFieldRegistry.definitions) {
742
- if (definition.allow_unset === false) {
743
- continue;
744
- }
745
- const candidates = /* @__PURE__ */ new Set([
746
- definition.key,
747
- definition.metadata_key,
748
- definition.cli_flag.replaceAll("-", "_"),
749
- definition.cli_flag,
750
- ...definition.cli_aliases.map((alias) => alias.replaceAll("-", "_")),
751
- ...definition.cli_aliases
752
- ]);
753
- if (!candidates.has(token)) {
754
- continue;
755
- }
756
- return {
757
- optionKey: definition.key,
758
- frontMatterKey: definition.metadata_key
759
- };
760
- }
761
- return void 0;
762
- }
763
796
  function parseCreateUnsetTargets(raw, runtimeFieldRegistry) {
764
797
  const frontMatterKeys = /* @__PURE__ */ new Set();
765
798
  const optionKeys = /* @__PURE__ */ new Set();
@@ -774,7 +807,7 @@ function parseCreateUnsetTargets(raw, runtimeFieldRegistry) {
774
807
  if (isLegacyNoneToken(trimmed)) {
775
808
  throw new PmCliError('--unset no longer accepts "none" or "null". Specify concrete field names such as --unset deadline', EXIT_CODE.USAGE);
776
809
  }
777
- const definition = CREATE_UNSET_ALIAS_MAP.get(trimmed) ?? resolveRuntimeCreateUnsetDefinition(trimmed, runtimeFieldRegistry);
810
+ const definition = CREATE_UNSET_ALIAS_MAP.get(trimmed) ?? resolveRuntimeUnsetFieldDefinition(trimmed, "create", runtimeFieldRegistry);
778
811
  if (!definition) {
779
812
  throw new PmCliError(`Unsupported --unset field "${entry}". Supported fields: ${CREATE_UNSET_SUPPORTED_CANONICAL_FIELDS}`, EXIT_CODE.USAGE);
780
813
  }
@@ -1347,14 +1380,96 @@ function ensureInitHasRun(pmRoot) {
1347
1380
  }
1348
1381
  });
1349
1382
  }
1350
- async function runCreate(options, global) {
1351
- let resolvedOptions = normalizeLegacyNoneCreateOptions(await resolveCreateStdinInputs(options));
1352
- const pmRoot = resolvePmRoot(process.cwd(), global.path);
1353
- await ensureInitHasRun(pmRoot);
1354
- const settings = await readSettings(pmRoot);
1355
- const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
1356
- const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);
1357
- const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
1383
+ function resolveUnsettableOptionalString(unsetKeys, frontMatterKey, raw) {
1384
+ return unsetKeys.has(frontMatterKey) || raw === void 0 ? void 0 : parseOptionalString(raw);
1385
+ }
1386
+ function resolveUnsettableTransformed(unsetKeys, frontMatterKey, raw, transform) {
1387
+ return unsetKeys.has(frontMatterKey) || raw === void 0 ? void 0 : transform(raw);
1388
+ }
1389
+ var CALENDAR_RELEVANT_CREATE_TYPES = /* @__PURE__ */ new Set(["milestone", "meeting", "reminder", "event"]);
1390
+ function createItemLacksSchedule(type, deadline, reminders, events) {
1391
+ const hasDeadline = deadline !== void 0;
1392
+ const hasReminders = reminders !== void 0 && reminders.length > 0;
1393
+ const hasEvents = events !== void 0 && events.length > 0;
1394
+ return CALENDAR_RELEVANT_CREATE_TYPES.has(type.toLowerCase()) && !hasDeadline && !hasReminders && !hasEvents;
1395
+ }
1396
+ function collectCreateScheduleWarnings(type, id, deadline, reminders, events) {
1397
+ const warnings = [];
1398
+ if (type.toLowerCase() === "event" && (events === void 0 || events.length === 0)) {
1399
+ warnings.push(`event_without_schedule:${id}:no_time_set`);
1400
+ }
1401
+ if (createItemLacksSchedule(type, deadline, reminders, events)) {
1402
+ 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)`);
1403
+ }
1404
+ return warnings;
1405
+ }
1406
+ async function inheritFocusedParent(parent, resolvedOptions, unsetKeys, pmRoot) {
1407
+ if (parent !== void 0 || unsetKeys.has("parent") || resolvedOptions.parent !== void 0) {
1408
+ return { parent, parentSource: void 0 };
1409
+ }
1410
+ const focused = await getFocusedItem(pmRoot);
1411
+ if (focused === void 0) {
1412
+ return { parent, parentSource: void 0 };
1413
+ }
1414
+ return { parent: focused, parentSource: "focus" };
1415
+ }
1416
+ async function validateCreateParentReference(pmRoot, settings, typeRegistry, parent, policy) {
1417
+ const normalized = normalizeParentReferenceValue(parent);
1418
+ const parentLocated = await locateItem(pmRoot, normalized, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1419
+ if (parentLocated) {
1420
+ return { parent: normalized, warnings: [] };
1421
+ }
1422
+ const normalizedParentId = normalizeItemId(normalized, settings.id_prefix);
1423
+ return { parent: normalized, warnings: validateMissingParentReference(normalizedParentId, policy).warnings };
1424
+ }
1425
+ function resolveCreateSprintOrRelease(unsetKeys, frontMatterKey, raw, field, policy) {
1426
+ const resolved = resolveUnsettableOptionalString(unsetKeys, frontMatterKey, raw);
1427
+ if (resolved === void 0) {
1428
+ return { value: void 0, warnings: [] };
1429
+ }
1430
+ const validation = validateSprintOrReleaseValue(field, resolved, policy);
1431
+ return { value: validation.value, warnings: validation.warnings };
1432
+ }
1433
+ async function resolveCreateBlockedByDependency(params) {
1434
+ const { pmRoot, settings, typeRegistry, statusRegistry, blockedBy, status, statusExplicit, nowValue, author } = params;
1435
+ let dependencyValues = params.dependencyValues;
1436
+ if (blockedBy === void 0) {
1437
+ return { dependencyValues, status };
1438
+ }
1439
+ const normalizedBlockedBy = normalizeItemId(blockedBy, settings.id_prefix);
1440
+ const blockedByLocated = await locateItem(pmRoot, normalizedBlockedBy, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1441
+ if (!blockedByLocated) {
1442
+ return { dependencyValues, status };
1443
+ }
1444
+ const hasBlockedByDependency = (dependencyValues ?? []).some((dependency) => dependency.id === blockedByLocated.id && dependency.kind === "blocked_by");
1445
+ if (!hasBlockedByDependency) {
1446
+ dependencyValues = [
1447
+ ...dependencyValues ?? [],
1448
+ { id: blockedByLocated.id, kind: "blocked_by", created_at: nowValue, author }
1449
+ ];
1450
+ }
1451
+ if (statusExplicit) {
1452
+ return { dependencyValues, status };
1453
+ }
1454
+ const blockedStatus = statusRegistry.blocked_statuses.has("blocked") ? "blocked" : [...statusRegistry.blocked_statuses].sort((left, right) => left.localeCompare(right))[0] ?? statusRegistry.open_status;
1455
+ return { dependencyValues, status: blockedStatus };
1456
+ }
1457
+ function applyCreateDefaultType(resolvedOptions, settings, typeRegistry) {
1458
+ const explicitStrictMode = typeof resolvedOptions.createMode === "string" && resolvedOptions.createMode.trim().toLowerCase() === "strict";
1459
+ if (explicitStrictMode) {
1460
+ return;
1461
+ }
1462
+ const defaultType = settings.governance.create_default_type?.trim();
1463
+ if (defaultType && defaultType.length > 0 && resolveTypeName(defaultType, typeRegistry)) {
1464
+ resolvedOptions.type = defaultType;
1465
+ return;
1466
+ }
1467
+ if (resolveTypeName("Task", typeRegistry)) {
1468
+ resolvedOptions.type = "Task";
1469
+ }
1470
+ }
1471
+ async function resolveCreateTypeSelection(options, global, pmRoot, settings, typeRegistry) {
1472
+ let resolvedOptions = options;
1358
1473
  if (resolvedOptions.template !== void 0) {
1359
1474
  const templateName = resolvedOptions.template.trim();
1360
1475
  if (templateName.length === 0) {
@@ -1364,17 +1479,7 @@ async function runCreate(options, global) {
1364
1479
  resolvedOptions = normalizeLegacyNoneCreateOptions(mergeCreateOptionsWithTemplate(templateOptions, resolvedOptions));
1365
1480
  }
1366
1481
  if (resolvedOptions.type === void 0) {
1367
- const explicitStrictMode = typeof resolvedOptions.createMode === "string" && resolvedOptions.createMode.trim().toLowerCase() === "strict";
1368
- if (!explicitStrictMode) {
1369
- const defaultType = settings.governance.create_default_type?.trim();
1370
- if (defaultType && defaultType.length > 0 && resolveTypeName(defaultType, typeRegistry)) {
1371
- resolvedOptions.type = defaultType;
1372
- } else {
1373
- if (resolveTypeName("Task", typeRegistry)) {
1374
- resolvedOptions.type = "Task";
1375
- }
1376
- }
1377
- }
1482
+ applyCreateDefaultType(resolvedOptions, settings, typeRegistry);
1378
1483
  }
1379
1484
  if (resolvedOptions.type === void 0) {
1380
1485
  throw new PmCliError("Missing required option --type <value>", EXIT_CODE.USAGE);
@@ -1401,90 +1506,22 @@ async function runCreate(options, global) {
1401
1506
  throw new PmCliError(`--schedule-preset ${schedulePreset} is only supported for Reminder, Meeting, or Event types`, EXIT_CODE.USAGE);
1402
1507
  }
1403
1508
  const createMode = resolveEffectiveCreateMode(resolvedOptions.createMode, schedulePreset, settings.governance.create_mode_default);
1404
- const unsetTargets = parseCreateUnsetTargets(resolvedOptions.unset, runtimeFieldRegistry);
1509
+ return { resolvedOptions, typeDefinition, type, schedulePreset, createMode };
1510
+ }
1511
+ function collectCreateClearTargets(resolvedOptions, unsetTargets) {
1405
1512
  const explicitUnsets = new Set(unsetTargets.frontMatterKeys);
1406
1513
  const clearOptionKeys = new Set(unsetTargets.optionKeys);
1407
1514
  const clearCollectionDefinitions = [
1408
- {
1409
- enabled: resolvedOptions.clearDeps,
1410
- optionKey: "dep",
1411
- clearFlag: "--clear-deps",
1412
- valueFlag: "--dep",
1413
- values: resolvedOptions.dep,
1414
- frontMatterKey: "dependencies"
1415
- },
1416
- {
1417
- enabled: resolvedOptions.clearComments,
1418
- optionKey: "comment",
1419
- clearFlag: "--clear-comments",
1420
- valueFlag: "--comment",
1421
- values: resolvedOptions.comment,
1422
- frontMatterKey: "comments"
1423
- },
1424
- {
1425
- enabled: resolvedOptions.clearNotes,
1426
- optionKey: "note",
1427
- clearFlag: "--clear-notes",
1428
- valueFlag: "--note",
1429
- values: resolvedOptions.note,
1430
- frontMatterKey: "notes"
1431
- },
1432
- {
1433
- enabled: resolvedOptions.clearLearnings,
1434
- optionKey: "learning",
1435
- clearFlag: "--clear-learnings",
1436
- valueFlag: "--learning",
1437
- values: resolvedOptions.learning,
1438
- frontMatterKey: "learnings"
1439
- },
1440
- {
1441
- enabled: resolvedOptions.clearFiles,
1442
- optionKey: "file",
1443
- clearFlag: "--clear-files",
1444
- valueFlag: "--file",
1445
- values: resolvedOptions.file,
1446
- frontMatterKey: "files"
1447
- },
1448
- {
1449
- enabled: resolvedOptions.clearTests,
1450
- optionKey: "test",
1451
- clearFlag: "--clear-tests",
1452
- valueFlag: "--test",
1453
- values: resolvedOptions.test,
1454
- frontMatterKey: "tests"
1455
- },
1456
- {
1457
- enabled: resolvedOptions.clearDocs,
1458
- optionKey: "doc",
1459
- clearFlag: "--clear-docs",
1460
- valueFlag: "--doc",
1461
- values: resolvedOptions.doc,
1462
- frontMatterKey: "docs"
1463
- },
1464
- {
1465
- enabled: resolvedOptions.clearReminders,
1466
- optionKey: "reminder",
1467
- clearFlag: "--clear-reminders",
1468
- valueFlag: "--reminder",
1469
- values: resolvedOptions.reminder,
1470
- frontMatterKey: "reminders"
1471
- },
1472
- {
1473
- enabled: resolvedOptions.clearEvents,
1474
- optionKey: "event",
1475
- clearFlag: "--clear-events",
1476
- valueFlag: "--event",
1477
- values: resolvedOptions.event,
1478
- frontMatterKey: "events"
1479
- },
1480
- {
1481
- enabled: resolvedOptions.clearTypeOptions,
1482
- optionKey: "typeOption",
1483
- clearFlag: "--clear-type-options",
1484
- valueFlag: "--type-option",
1485
- values: resolvedOptions.typeOption,
1486
- frontMatterKey: "type_options"
1487
- }
1515
+ { enabled: resolvedOptions.clearDeps, optionKey: "dep", clearFlag: "--clear-deps", valueFlag: "--dep", values: resolvedOptions.dep, frontMatterKey: "dependencies" },
1516
+ { enabled: resolvedOptions.clearComments, optionKey: "comment", clearFlag: "--clear-comments", valueFlag: "--comment", values: resolvedOptions.comment, frontMatterKey: "comments" },
1517
+ { enabled: resolvedOptions.clearNotes, optionKey: "note", clearFlag: "--clear-notes", valueFlag: "--note", values: resolvedOptions.note, frontMatterKey: "notes" },
1518
+ { enabled: resolvedOptions.clearLearnings, optionKey: "learning", clearFlag: "--clear-learnings", valueFlag: "--learning", values: resolvedOptions.learning, frontMatterKey: "learnings" },
1519
+ { enabled: resolvedOptions.clearFiles, optionKey: "file", clearFlag: "--clear-files", valueFlag: "--file", values: resolvedOptions.file, frontMatterKey: "files" },
1520
+ { enabled: resolvedOptions.clearTests, optionKey: "test", clearFlag: "--clear-tests", valueFlag: "--test", values: resolvedOptions.test, frontMatterKey: "tests" },
1521
+ { enabled: resolvedOptions.clearDocs, optionKey: "doc", clearFlag: "--clear-docs", valueFlag: "--doc", values: resolvedOptions.doc, frontMatterKey: "docs" },
1522
+ { enabled: resolvedOptions.clearReminders, optionKey: "reminder", clearFlag: "--clear-reminders", valueFlag: "--reminder", values: resolvedOptions.reminder, frontMatterKey: "reminders" },
1523
+ { enabled: resolvedOptions.clearEvents, optionKey: "event", clearFlag: "--clear-events", valueFlag: "--event", values: resolvedOptions.event, frontMatterKey: "events" },
1524
+ { enabled: resolvedOptions.clearTypeOptions, optionKey: "typeOption", clearFlag: "--clear-type-options", valueFlag: "--type-option", values: resolvedOptions.typeOption, frontMatterKey: "type_options" }
1488
1525
  ];
1489
1526
  for (const definition of clearCollectionDefinitions) {
1490
1527
  if (!definition.enabled) {
@@ -1496,6 +1533,9 @@ async function runCreate(options, global) {
1496
1533
  explicitUnsets.add(definition.frontMatterKey);
1497
1534
  clearOptionKeys.add(definition.optionKey);
1498
1535
  }
1536
+ return { explicitUnsets, clearOptionKeys };
1537
+ }
1538
+ function assertNoCreateScalarUnsetConflicts(resolvedOptions, unsetTargets) {
1499
1539
  const scalarOptionPresence = {
1500
1540
  tags: resolvedOptions.tags !== void 0,
1501
1541
  deadline: resolvedOptions.deadline !== void 0,
@@ -1541,10 +1581,12 @@ async function runCreate(options, global) {
1541
1581
  const unsetField = CREATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey) ?? optionKey;
1542
1582
  throw new PmCliError(`Cannot combine --unset ${unsetField} with ${commandOptionFlagLabel("create", optionKey)}`, EXIT_CODE.USAGE);
1543
1583
  }
1544
- const assertNoLegacyScalarToken = (value2, optionKey) => {
1584
+ }
1585
+ function assertNoLegacyCreateScalarTokens(resolvedOptions) {
1586
+ const assertNoLegacyScalarToken = (value, optionKey) => {
1545
1587
  const unsetField = CREATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey);
1546
1588
  const hint = unsetField ? `Use --unset ${unsetField} to clear this field.` : void 0;
1547
- assertNoLegacyNoneToken(value2, commandOptionFlagLabel("create", optionKey), hint);
1589
+ assertNoLegacyNoneToken(value, commandOptionFlagLabel("create", optionKey), hint);
1548
1590
  };
1549
1591
  assertNoLegacyScalarToken(resolvedOptions.tags, "tags");
1550
1592
  assertNoLegacyScalarToken(resolvedOptions.deadline, "deadline");
@@ -1581,6 +1623,143 @@ async function runCreate(options, global) {
1581
1623
  assertNoLegacyScalarToken(resolvedOptions.component, "component");
1582
1624
  assertNoLegacyScalarToken(resolvedOptions.regression, "regression");
1583
1625
  assertNoLegacyScalarToken(resolvedOptions.customerImpact, "customerImpact");
1626
+ }
1627
+ function assertNoCreateFieldUnsetConflicts(registeredItemFieldValues, runtimeCreateFieldValues, unsetTargets) {
1628
+ for (const fieldKey of Object.keys(registeredItemFieldValues)) {
1629
+ if (!unsetTargets.frontMatterKeys.has(fieldKey)) {
1630
+ continue;
1631
+ }
1632
+ throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_", "-")} with --field ${fieldKey}=...`, EXIT_CODE.USAGE);
1633
+ }
1634
+ for (const fieldKey of Object.keys(runtimeCreateFieldValues.values ?? {})) {
1635
+ if (!unsetTargets.frontMatterKeys.has(fieldKey)) {
1636
+ continue;
1637
+ }
1638
+ throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_", "-")} with its value flag`, EXIT_CODE.USAGE);
1639
+ }
1640
+ }
1641
+ function assertNoMissingRequiredCreateOptions(params) {
1642
+ const { combinedMissingFlags, typeDefinition, missingRequiredCreateFlags, missingRequiredTypeOptionKeys, openStatus, type, createMode } = params;
1643
+ if (combinedMissingFlags.length === 0) {
1644
+ return;
1645
+ }
1646
+ const nextValidExample = buildTypeSpecificCreateExample(typeDefinition, missingRequiredCreateFlags, missingRequiredTypeOptionKeys, openStatus);
1647
+ const nextSteps = [`Run "pm create --help --type ${type}" for type-aware required option guidance.`];
1648
+ if (combinedMissingFlags.includes("--title")) {
1649
+ nextSteps.push('Title can also be passed as the first positional argument (example: pm create "Your title" --type ' + type + ").");
1650
+ }
1651
+ if (createMode === "strict") {
1652
+ nextSteps.push('For staged onboarding, retry with "--create-mode progressive".');
1653
+ if (SCHEDULE_CREATE_PRESET_TYPES.has(type)) {
1654
+ nextSteps.push('For minimal scheduling inputs, try "--schedule-preset lightweight".');
1655
+ }
1656
+ }
1657
+ const errorMessage = combinedMissingFlags.length === 1 ? `Missing required option ${combinedMissingFlags[0]} for type "${type}"` : `Missing required options ${combinedMissingFlags.join(", ")} for type "${type}"`;
1658
+ throw new PmCliError(errorMessage, EXIT_CODE.USAGE, {
1659
+ code: "missing_required_option",
1660
+ required: `Provide all required create options and type options for type "${type}" in one invocation.`,
1661
+ examples: [nextValidExample],
1662
+ nextSteps,
1663
+ recovery: createMode === "strict" ? {
1664
+ recovery_mode: "compact",
1665
+ missing_required_fields: combinedMissingFlags,
1666
+ suggested_flags: ["--create-mode progressive", ...combinedMissingFlags]
1667
+ } : void 0
1668
+ });
1669
+ }
1670
+ function resolveCreateTags(unsetKeys, resolvedOptions) {
1671
+ if (unsetKeys.has("tags") && Array.isArray(resolvedOptions.addTags) && resolvedOptions.addTags.length > 0) {
1672
+ throw new PmCliError("Cannot combine --unset tags with --add-tags", EXIT_CODE.USAGE);
1673
+ }
1674
+ const baseTags = unsetKeys.has("tags") ? [] : resolvedOptions.tags !== void 0 ? parseTags(resolvedOptions.tags) : [];
1675
+ return mergeAdditiveTags(baseTags, resolvedOptions.addTags);
1676
+ }
1677
+ function resolveCreateOrder(unsetKeys, resolvedOptions) {
1678
+ if (resolvedOptions.order !== void 0 && resolvedOptions.rank !== void 0 && resolvedOptions.order !== resolvedOptions.rank) {
1679
+ throw new PmCliError("--order and --rank must match when both are provided", EXIT_CODE.USAGE);
1680
+ }
1681
+ const orderRaw = resolvedOptions.order ?? resolvedOptions.rank;
1682
+ const order = resolveUnsettableTransformed(unsetKeys, "order", orderRaw, (raw) => parseOptionalNumber(raw, "order"));
1683
+ if (order !== void 0 && !Number.isInteger(order)) {
1684
+ throw new PmCliError("Order must be an integer", EXIT_CODE.USAGE);
1685
+ }
1686
+ return order;
1687
+ }
1688
+ function resolveCreateCloseReason(status, statusRegistry, settings, resolvedOptions, resolution) {
1689
+ if (status !== statusRegistry.close_status || !settings.governance.require_close_reason) {
1690
+ return { closeReason: void 0, warnings: [] };
1691
+ }
1692
+ const messageText = typeof resolvedOptions.message === "string" ? resolvedOptions.message.trim() : "";
1693
+ const resolutionText = typeof resolution === "string" ? resolution.trim() : "";
1694
+ const closeReason = messageText || resolutionText || CREATE_DIRECT_CLOSE_REASON_DEFAULT;
1695
+ const warnings = messageText.length === 0 && resolutionText.length === 0 ? ["close_reason_defaulted"] : [];
1696
+ return { closeReason, warnings };
1697
+ }
1698
+ async function writeCreatedItem(params) {
1699
+ const { pmRoot, type, id, settings, typeRegistry, author, extensionFieldNames, afterDocument, beforeDocument, historyMessage, changedFields, nowValue } = params;
1700
+ const itemPath = getItemPath(pmRoot, type, id, settings.item_format, typeRegistry.type_to_folder);
1701
+ const historyPath = getHistoryPath(pmRoot, id);
1702
+ const lockRelease = await acquireLock(pmRoot, id, settings.locks.ttl_seconds, author, false, settings.governance.force_required_for_stale_lock);
1703
+ let hookWarnings = [];
1704
+ try {
1705
+ await writeFileAtomic(itemPath, serializeItemDocument(afterDocument, { format: settings.item_format, schema: settings.schema, extensionFieldNames }));
1706
+ try {
1707
+ const entry = createHistoryEntry({ nowIso: nowValue, author, op: "create", before: beforeDocument, after: afterDocument, message: historyMessage });
1708
+ await appendHistoryEntry(historyPath, entry);
1709
+ } catch (error) {
1710
+ await removeFileIfExists(itemPath);
1711
+ throw error;
1712
+ }
1713
+ hookWarnings = [
1714
+ ...await runActiveOnWriteHooks({
1715
+ path: itemPath,
1716
+ scope: "project",
1717
+ op: "create",
1718
+ item_id: afterDocument.metadata.id,
1719
+ item_type: afterDocument.metadata.type,
1720
+ before: beforeDocument,
1721
+ after: afterDocument,
1722
+ changed_fields: changedFields
1723
+ }),
1724
+ ...await runActiveOnWriteHooks({
1725
+ path: historyPath,
1726
+ scope: "project",
1727
+ op: "create:history",
1728
+ item_id: afterDocument.metadata.id,
1729
+ item_type: afterDocument.metadata.type,
1730
+ before: beforeDocument,
1731
+ after: afterDocument,
1732
+ changed_fields: changedFields
1733
+ })
1734
+ ];
1735
+ recordAfterCommandAffectedItem({
1736
+ id: afterDocument.metadata.id,
1737
+ op: "create",
1738
+ item_type: afterDocument.metadata.type,
1739
+ status: afterDocument.metadata.status,
1740
+ current: projectAfterCommandItemSnapshot(afterDocument.metadata, changedFields),
1741
+ changed_fields: changedFields
1742
+ });
1743
+ } finally {
1744
+ await lockRelease();
1745
+ }
1746
+ return hookWarnings;
1747
+ }
1748
+ async function runCreate(options, global) {
1749
+ let resolvedOptions = normalizeLegacyNoneCreateOptions(await resolveCreateStdinInputs(options));
1750
+ const pmRoot = resolvePmRoot(process.cwd(), global.path);
1751
+ await ensureInitHasRun(pmRoot);
1752
+ const settings = await readSettings(pmRoot);
1753
+ const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
1754
+ const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);
1755
+ const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
1756
+ const typeSelection = await resolveCreateTypeSelection(resolvedOptions, global, pmRoot, settings, typeRegistry);
1757
+ resolvedOptions = typeSelection.resolvedOptions;
1758
+ const { typeDefinition, type, createMode } = typeSelection;
1759
+ const unsetTargets = parseCreateUnsetTargets(resolvedOptions.unset, runtimeFieldRegistry);
1760
+ const { explicitUnsets, clearOptionKeys } = collectCreateClearTargets(resolvedOptions, unsetTargets);
1761
+ assertNoCreateScalarUnsetConflicts(resolvedOptions, unsetTargets);
1762
+ assertNoLegacyCreateScalarTokens(resolvedOptions);
1584
1763
  const missingRequiredCreateFlags = requireCreateOptionByType(typeDefinition, resolvedOptions, createMode, clearOptionKeys);
1585
1764
  const nowValue = nowIso();
1586
1765
  const author = selectAuthor(resolvedOptions.author, settings.author_default);
@@ -1598,19 +1777,8 @@ async function runCreate(options, global) {
1598
1777
  const extensionRegistrations = getActiveExtensionRegistrations();
1599
1778
  const extensionFieldNames = collectRegisteredItemFieldNames(extensionRegistrations);
1600
1779
  const registeredItemFieldValues = parseRegisteredItemFieldAssignments(resolvedOptions.field, extensionRegistrations);
1601
- for (const fieldKey of Object.keys(registeredItemFieldValues)) {
1602
- if (!unsetTargets.frontMatterKeys.has(fieldKey)) {
1603
- continue;
1604
- }
1605
- throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_", "-")} with --field ${fieldKey}=...`, EXIT_CODE.USAGE);
1606
- }
1607
1780
  const runtimeCreateFieldValues = collectRuntimeCreateFieldValues(resolvedOptions, runtimeFieldRegistry, type);
1608
- for (const fieldKey of Object.keys(runtimeCreateFieldValues.values ?? {})) {
1609
- if (!unsetTargets.frontMatterKeys.has(fieldKey)) {
1610
- continue;
1611
- }
1612
- throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_", "-")} with its value flag`, EXIT_CODE.USAGE);
1613
- }
1781
+ assertNoCreateFieldUnsetConflicts(registeredItemFieldValues, runtimeCreateFieldValues, unsetTargets);
1614
1782
  const missingRequiredTypeOptionKeys = collectMissingRequiredTypeOptionKeys(validatedTypeOptions.errors, type);
1615
1783
  const missingRequiredTypeOptionFlags = missingRequiredTypeOptionKeys.map((key) => `--type-option ${key}=<value>`);
1616
1784
  const combinedMissingFlags = [
@@ -1621,31 +1789,15 @@ async function runCreate(options, global) {
1621
1789
  ...runtimeCreateFieldValues.missing_required_flags
1622
1790
  ])
1623
1791
  ].sort((left, right) => left.localeCompare(right));
1624
- if (combinedMissingFlags.length > 0) {
1625
- const nextValidExample = buildTypeSpecificCreateExample(typeDefinition, missingRequiredCreateFlags, missingRequiredTypeOptionKeys, statusRegistry.open_status);
1626
- const nextSteps = [`Run "pm create --help --type ${type}" for type-aware required option guidance.`];
1627
- if (combinedMissingFlags.includes("--title")) {
1628
- nextSteps.push('Title can also be passed as the first positional argument (example: pm create "Your title" --type ' + type + ").");
1629
- }
1630
- if (createMode === "strict") {
1631
- nextSteps.push('For staged onboarding, retry with "--create-mode progressive".');
1632
- if (SCHEDULE_CREATE_PRESET_TYPES.has(type)) {
1633
- nextSteps.push('For minimal scheduling inputs, try "--schedule-preset lightweight".');
1634
- }
1635
- }
1636
- const errorMessage = combinedMissingFlags.length === 1 ? `Missing required option ${combinedMissingFlags[0]} for type "${type}"` : `Missing required options ${combinedMissingFlags.join(", ")} for type "${type}"`;
1637
- throw new PmCliError(errorMessage, EXIT_CODE.USAGE, {
1638
- code: "missing_required_option",
1639
- required: `Provide all required create options and type options for type "${type}" in one invocation.`,
1640
- examples: [nextValidExample],
1641
- nextSteps,
1642
- recovery: createMode === "strict" ? {
1643
- recovery_mode: "compact",
1644
- missing_required_fields: combinedMissingFlags,
1645
- suggested_flags: ["--create-mode progressive", ...combinedMissingFlags]
1646
- } : void 0
1647
- });
1648
- }
1792
+ assertNoMissingRequiredCreateOptions({
1793
+ combinedMissingFlags,
1794
+ typeDefinition,
1795
+ missingRequiredCreateFlags,
1796
+ missingRequiredTypeOptionKeys,
1797
+ openStatus: statusRegistry.open_status,
1798
+ type,
1799
+ createMode
1800
+ });
1649
1801
  const nonMissingTypeOptionErrors = filterNonMissingTypeOptionErrors(validatedTypeOptions.errors, type);
1650
1802
  if (nonMissingTypeOptionErrors.length > 0) {
1651
1803
  const nextValidExample = buildTypeSpecificCreateExample(typeDefinition, [], [], statusRegistry.open_status);
@@ -1659,132 +1811,77 @@ async function runCreate(options, global) {
1659
1811
  const id = await generateItemId(pmRoot, settings.id_prefix);
1660
1812
  let status = resolvedOptions.status !== void 0 ? parseStatusValue(resolvedOptions.status, statusRegistry) : resolveCreateDefaultStatus(typeDefinition, statusRegistry);
1661
1813
  const priority = resolvedOptions.priority !== void 0 ? ensurePriority(resolvedOptions.priority) : 2;
1662
- if (unsetTargets.frontMatterKeys.has("tags") && Array.isArray(resolvedOptions.addTags) && resolvedOptions.addTags.length > 0) {
1663
- throw new PmCliError("Cannot combine --unset tags with --add-tags", EXIT_CODE.USAGE);
1664
- }
1665
- const baseTags = unsetTargets.frontMatterKeys.has("tags") ? [] : resolvedOptions.tags !== void 0 ? parseTags(resolvedOptions.tags) : [];
1666
- const tags = mergeAdditiveTags(baseTags, resolvedOptions.addTags);
1667
- const deadline = unsetTargets.frontMatterKeys.has("deadline") ? void 0 : resolvedOptions.deadline === void 0 ? void 0 : resolveIsoOrRelative(resolvedOptions.deadline, new Date(nowValue), "deadline");
1668
- const estimatedMinutes = unsetTargets.frontMatterKeys.has("estimated_minutes") ? void 0 : resolvedOptions.estimatedMinutes === void 0 ? void 0 : parseOptionalNumber(resolvedOptions.estimatedMinutes, "estimated-minutes");
1669
- const acceptanceCriteria = unsetTargets.frontMatterKeys.has("acceptance_criteria") ? void 0 : resolvedOptions.acceptanceCriteria === void 0 ? void 0 : resolvedOptions.acceptanceCriteria;
1670
- const definitionOfReady = unsetTargets.frontMatterKeys.has("definition_of_ready") || resolvedOptions.definitionOfReady === void 0 ? void 0 : parseOptionalString(resolvedOptions.definitionOfReady);
1671
- if (resolvedOptions.order !== void 0 && resolvedOptions.rank !== void 0 && resolvedOptions.order !== resolvedOptions.rank) {
1672
- throw new PmCliError("--order and --rank must match when both are provided", EXIT_CODE.USAGE);
1673
- }
1674
- const orderRaw = resolvedOptions.order ?? resolvedOptions.rank;
1675
- const order = unsetTargets.frontMatterKeys.has("order") || orderRaw === void 0 ? void 0 : parseOptionalNumber(orderRaw, "order");
1676
- if (order !== void 0 && !Number.isInteger(order)) {
1677
- throw new PmCliError("Order must be an integer", EXIT_CODE.USAGE);
1678
- }
1679
- const goal = unsetTargets.frontMatterKeys.has("goal") || resolvedOptions.goal === void 0 ? void 0 : parseOptionalString(resolvedOptions.goal);
1680
- const objective = unsetTargets.frontMatterKeys.has("objective") || resolvedOptions.objective === void 0 ? void 0 : parseOptionalString(resolvedOptions.objective);
1681
- const value = unsetTargets.frontMatterKeys.has("value") || resolvedOptions.value === void 0 ? void 0 : parseOptionalString(resolvedOptions.value);
1682
- const impact = unsetTargets.frontMatterKeys.has("impact") || resolvedOptions.impact === void 0 ? void 0 : parseOptionalString(resolvedOptions.impact);
1683
- const outcome = unsetTargets.frontMatterKeys.has("outcome") || resolvedOptions.outcome === void 0 ? void 0 : parseOptionalString(resolvedOptions.outcome);
1684
- const whyNow = unsetTargets.frontMatterKeys.has("why_now") || resolvedOptions.whyNow === void 0 ? void 0 : parseOptionalString(resolvedOptions.whyNow);
1685
- const assignee = unsetTargets.frontMatterKeys.has("assignee") || resolvedOptions.assignee === void 0 ? void 0 : parseOptionalString(resolvedOptions.assignee);
1686
- const authorValue = unsetTargets.frontMatterKeys.has("author") ? void 0 : parseOptionalString(resolvedOptions.author) ?? author;
1687
- let parent = unsetTargets.frontMatterKeys.has("parent") || resolvedOptions.parent === void 0 ? void 0 : parseOptionalString(resolvedOptions.parent);
1688
- let parentSource;
1689
- if (parent === void 0 && !unsetTargets.frontMatterKeys.has("parent") && resolvedOptions.parent === void 0) {
1690
- const focused = await getFocusedItem(pmRoot);
1691
- if (focused !== void 0) {
1692
- parent = focused;
1693
- parentSource = "focus";
1694
- }
1695
- }
1696
- const reviewer = unsetTargets.frontMatterKeys.has("reviewer") || resolvedOptions.reviewer === void 0 ? void 0 : parseOptionalString(resolvedOptions.reviewer);
1697
- const riskRaw = unsetTargets.frontMatterKeys.has("risk") || resolvedOptions.risk === void 0 ? void 0 : parseOptionalString(resolvedOptions.risk);
1698
- const risk = riskRaw !== void 0 ? ensureEnumValue(normalizeRiskInput(riskRaw), RISK_VALUES, "risk") : void 0;
1699
- const confidenceRaw = unsetTargets.frontMatterKeys.has("confidence") || resolvedOptions.confidence === void 0 ? void 0 : parseOptionalString(resolvedOptions.confidence);
1700
- const confidence = confidenceRaw !== void 0 ? parseConfidenceInput(confidenceRaw) : void 0;
1814
+ const unsetKeys = unsetTargets.frontMatterKeys;
1815
+ const tags = resolveCreateTags(unsetKeys, resolvedOptions);
1816
+ const deadline = resolveUnsettableTransformed(unsetKeys, "deadline", resolvedOptions.deadline, (raw) => resolveIsoOrRelative(raw, new Date(nowValue), "deadline"));
1817
+ const estimatedMinutes = resolveUnsettableTransformed(unsetKeys, "estimated_minutes", resolvedOptions.estimatedMinutes, (raw) => parseOptionalNumber(raw, "estimated-minutes"));
1818
+ const acceptanceCriteria = resolveUnsettableOptionalString(unsetKeys, "acceptance_criteria", resolvedOptions.acceptanceCriteria);
1819
+ const definitionOfReady = resolveUnsettableOptionalString(unsetKeys, "definition_of_ready", resolvedOptions.definitionOfReady);
1820
+ const order = resolveCreateOrder(unsetKeys, resolvedOptions);
1821
+ const goal = resolveUnsettableOptionalString(unsetKeys, "goal", resolvedOptions.goal);
1822
+ const objective = resolveUnsettableOptionalString(unsetKeys, "objective", resolvedOptions.objective);
1823
+ const value = resolveUnsettableOptionalString(unsetKeys, "value", resolvedOptions.value);
1824
+ const impact = resolveUnsettableOptionalString(unsetKeys, "impact", resolvedOptions.impact);
1825
+ const outcome = resolveUnsettableOptionalString(unsetKeys, "outcome", resolvedOptions.outcome);
1826
+ const whyNow = resolveUnsettableOptionalString(unsetKeys, "why_now", resolvedOptions.whyNow);
1827
+ const assignee = resolveUnsettableOptionalString(unsetKeys, "assignee", resolvedOptions.assignee);
1828
+ const authorValue = unsetKeys.has("author") ? void 0 : parseOptionalString(resolvedOptions.author) ?? author;
1829
+ const initialParent = resolveUnsettableOptionalString(unsetKeys, "parent", resolvedOptions.parent);
1830
+ const inheritedParent = await inheritFocusedParent(initialParent, resolvedOptions, unsetKeys, pmRoot);
1831
+ let parent = inheritedParent.parent;
1832
+ const parentSource = inheritedParent.parentSource;
1833
+ const reviewer = resolveUnsettableOptionalString(unsetKeys, "reviewer", resolvedOptions.reviewer);
1834
+ const risk = resolveUnsettableTransformed(unsetKeys, "risk", resolvedOptions.risk, (raw) => ensureEnumValue(normalizeRiskInput(raw), RISK_VALUES, "risk"));
1835
+ const confidence = resolveUnsettableTransformed(unsetKeys, "confidence", resolvedOptions.confidence, (raw) => parseConfidenceInput(raw));
1701
1836
  const parentReferencePolicy = resolvedOptions.allowMissingParent === true && settings.validation.parent_reference === "strict_error" ? "warn" : settings.validation.parent_reference;
1702
1837
  const sprintReleasePolicy = settings.validation.sprint_release_format;
1703
- const validationWarnings = [];
1704
- if (type.toLowerCase() === "event" && (events.values === void 0 || events.values.length === 0)) {
1705
- validationWarnings.push(`event_without_schedule:${id}:no_time_set`);
1706
- }
1707
- const calendarRelevantTypes = /* @__PURE__ */ new Set(["milestone", "meeting", "reminder", "event"]);
1708
- const hasDeadline = deadline !== void 0;
1709
- const hasReminders = reminders.values !== void 0 && reminders.values.length > 0;
1710
- const hasEvents = events.values !== void 0 && events.values.length > 0;
1711
- if (calendarRelevantTypes.has(type.toLowerCase()) && !hasDeadline && !hasReminders && !hasEvents) {
1712
- 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)`);
1713
- }
1838
+ const validationWarnings = collectCreateScheduleWarnings(type, id, deadline, reminders.values, events.values);
1714
1839
  if (parent !== void 0) {
1715
- parent = normalizeParentReferenceValue(parent);
1716
- const parentLocated = await locateItem(pmRoot, parent, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1717
- if (!parentLocated) {
1718
- const normalizedParentId = normalizeItemId(parent, settings.id_prefix);
1719
- validationWarnings.push(...validateMissingParentReference(normalizedParentId, parentReferencePolicy).warnings);
1720
- }
1721
- }
1722
- let sprint = unsetTargets.frontMatterKeys.has("sprint") || resolvedOptions.sprint === void 0 ? void 0 : parseOptionalString(resolvedOptions.sprint);
1723
- if (sprint !== void 0) {
1724
- const sprintValidation = validateSprintOrReleaseValue("sprint", sprint, sprintReleasePolicy);
1725
- sprint = sprintValidation.value;
1726
- validationWarnings.push(...sprintValidation.warnings);
1727
- }
1728
- let release = unsetTargets.frontMatterKeys.has("release") || resolvedOptions.release === void 0 ? void 0 : parseOptionalString(resolvedOptions.release);
1729
- if (release !== void 0) {
1730
- const releaseValidation = validateSprintOrReleaseValue("release", release, sprintReleasePolicy);
1731
- release = releaseValidation.value;
1732
- validationWarnings.push(...releaseValidation.warnings);
1733
- }
1734
- const blockedBy = unsetTargets.frontMatterKeys.has("blocked_by") || resolvedOptions.blockedBy === void 0 ? void 0 : parseOptionalString(resolvedOptions.blockedBy);
1735
- let dependencyValues = dependencies.values;
1736
- if (blockedBy !== void 0) {
1737
- const normalizedBlockedBy = normalizeItemId(blockedBy, settings.id_prefix);
1738
- const blockedByLocated = await locateItem(pmRoot, normalizedBlockedBy, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1739
- if (blockedByLocated) {
1740
- const hasBlockedByDependency = (dependencyValues ?? []).some((dependency) => dependency.id === blockedByLocated.id && dependency.kind === "blocked_by");
1741
- if (!hasBlockedByDependency) {
1742
- dependencyValues = [
1743
- ...dependencyValues ?? [],
1744
- {
1745
- id: blockedByLocated.id,
1746
- kind: "blocked_by",
1747
- created_at: nowValue,
1748
- author
1749
- }
1750
- ];
1751
- }
1752
- if (resolvedOptions.status === void 0) {
1753
- status = statusRegistry.blocked_statuses.has("blocked") ? "blocked" : [...statusRegistry.blocked_statuses].sort((left, right) => left.localeCompare(right))[0] ?? statusRegistry.open_status;
1754
- }
1755
- }
1756
- }
1757
- const blockedReason = unsetTargets.frontMatterKeys.has("blocked_reason") || resolvedOptions.blockedReason === void 0 ? void 0 : parseOptionalString(resolvedOptions.blockedReason);
1758
- const unblockNote = unsetTargets.frontMatterKeys.has("unblock_note") || resolvedOptions.unblockNote === void 0 ? void 0 : parseOptionalString(resolvedOptions.unblockNote);
1759
- const reporter = (
1760
- /* c8 ignore next -- reporter normalization branch is covered in issue-template integration tests. */
1761
- unsetTargets.frontMatterKeys.has("reporter") || resolvedOptions.reporter === void 0 ? void 0 : parseOptionalString(resolvedOptions.reporter)
1762
- );
1763
- const severityRaw = unsetTargets.frontMatterKeys.has("severity") || resolvedOptions.severity === void 0 ? void 0 : parseOptionalString(resolvedOptions.severity);
1764
- const severity = severityRaw !== void 0 ? ensureEnumValue(normalizeSeverityInput(severityRaw), ISSUE_SEVERITY_VALUES, "severity") : void 0;
1765
- const environment = unsetTargets.frontMatterKeys.has("environment") || resolvedOptions.environment === void 0 ? void 0 : parseOptionalString(resolvedOptions.environment);
1766
- const reproSteps = unsetTargets.frontMatterKeys.has("repro_steps") || resolvedOptions.reproSteps === void 0 ? void 0 : parseOptionalString(resolvedOptions.reproSteps);
1767
- const resolution = unsetTargets.frontMatterKeys.has("resolution") || resolvedOptions.resolution === void 0 ? void 0 : parseOptionalString(resolvedOptions.resolution);
1768
- const expectedResult = unsetTargets.frontMatterKeys.has("expected_result") || resolvedOptions.expectedResult === void 0 ? void 0 : parseOptionalString(resolvedOptions.expectedResult);
1769
- const actualResult = unsetTargets.frontMatterKeys.has("actual_result") || resolvedOptions.actualResult === void 0 ? void 0 : parseOptionalString(resolvedOptions.actualResult);
1770
- const affectedVersion = unsetTargets.frontMatterKeys.has("affected_version") || resolvedOptions.affectedVersion === void 0 ? void 0 : parseOptionalString(resolvedOptions.affectedVersion);
1771
- const fixedVersion = unsetTargets.frontMatterKeys.has("fixed_version") || resolvedOptions.fixedVersion === void 0 ? void 0 : parseOptionalString(resolvedOptions.fixedVersion);
1772
- const component = unsetTargets.frontMatterKeys.has("component") || resolvedOptions.component === void 0 ? void 0 : parseOptionalString(resolvedOptions.component);
1773
- const regressionRaw = unsetTargets.frontMatterKeys.has("regression") || resolvedOptions.regression === void 0 ? void 0 : parseOptionalString(resolvedOptions.regression);
1774
- const regression = regressionRaw !== void 0 ? parseRegressionInput(regressionRaw) : void 0;
1775
- const customerImpact = unsetTargets.frontMatterKeys.has("customer_impact") || resolvedOptions.customerImpact === void 0 ? void 0 : parseOptionalString(resolvedOptions.customerImpact);
1840
+ const parentValidation = await validateCreateParentReference(pmRoot, settings, typeRegistry, parent, parentReferencePolicy);
1841
+ parent = parentValidation.parent;
1842
+ validationWarnings.push(...parentValidation.warnings);
1843
+ }
1844
+ const sprintResolved = resolveCreateSprintOrRelease(unsetKeys, "sprint", resolvedOptions.sprint, "sprint", sprintReleasePolicy);
1845
+ const sprint = sprintResolved.value;
1846
+ validationWarnings.push(...sprintResolved.warnings);
1847
+ const releaseResolved = resolveCreateSprintOrRelease(unsetKeys, "release", resolvedOptions.release, "release", sprintReleasePolicy);
1848
+ const release = releaseResolved.value;
1849
+ validationWarnings.push(...releaseResolved.warnings);
1850
+ const blockedBy = resolveUnsettableOptionalString(unsetKeys, "blocked_by", resolvedOptions.blockedBy);
1851
+ const blockedByResolution = await resolveCreateBlockedByDependency({
1852
+ pmRoot,
1853
+ settings,
1854
+ typeRegistry,
1855
+ statusRegistry,
1856
+ blockedBy,
1857
+ dependencyValues: dependencies.values,
1858
+ status,
1859
+ statusExplicit: resolvedOptions.status !== void 0,
1860
+ nowValue,
1861
+ author
1862
+ });
1863
+ const dependencyValues = blockedByResolution.dependencyValues;
1864
+ status = blockedByResolution.status;
1865
+ const blockedReason = resolveUnsettableOptionalString(unsetKeys, "blocked_reason", resolvedOptions.blockedReason);
1866
+ const unblockNote = resolveUnsettableOptionalString(unsetKeys, "unblock_note", resolvedOptions.unblockNote);
1867
+ const reporter = resolveUnsettableOptionalString(unsetKeys, "reporter", resolvedOptions.reporter);
1868
+ const severity = resolveUnsettableTransformed(unsetKeys, "severity", resolvedOptions.severity, (raw) => ensureEnumValue(normalizeSeverityInput(raw), ISSUE_SEVERITY_VALUES, "severity"));
1869
+ const environment = resolveUnsettableOptionalString(unsetKeys, "environment", resolvedOptions.environment);
1870
+ const reproSteps = resolveUnsettableOptionalString(unsetKeys, "repro_steps", resolvedOptions.reproSteps);
1871
+ const resolution = resolveUnsettableOptionalString(unsetKeys, "resolution", resolvedOptions.resolution);
1872
+ const expectedResult = resolveUnsettableOptionalString(unsetKeys, "expected_result", resolvedOptions.expectedResult);
1873
+ const actualResult = resolveUnsettableOptionalString(unsetKeys, "actual_result", resolvedOptions.actualResult);
1874
+ const affectedVersion = resolveUnsettableOptionalString(unsetKeys, "affected_version", resolvedOptions.affectedVersion);
1875
+ const fixedVersion = resolveUnsettableOptionalString(unsetKeys, "fixed_version", resolvedOptions.fixedVersion);
1876
+ const component = resolveUnsettableOptionalString(unsetKeys, "component", resolvedOptions.component);
1877
+ const regression = resolveUnsettableTransformed(unsetKeys, "regression", resolvedOptions.regression, (raw) => parseRegressionInput(raw));
1878
+ const customerImpact = resolveUnsettableOptionalString(unsetKeys, "customer_impact", resolvedOptions.customerImpact);
1776
1879
  const title = requireStringOption(resolvedOptions.title, "--title");
1777
1880
  const description = resolvedOptions.description ?? "";
1778
1881
  const body = resolvedOptions.body ?? "";
1779
- let closeReason;
1780
- if (status === statusRegistry.close_status && settings.governance.require_close_reason) {
1781
- const messageText = typeof resolvedOptions.message === "string" ? resolvedOptions.message.trim() : "";
1782
- const resolutionText = typeof resolution === "string" ? resolution.trim() : "";
1783
- closeReason = messageText || resolutionText || CREATE_DIRECT_CLOSE_REASON_DEFAULT;
1784
- if (messageText.length === 0 && resolutionText.length === 0) {
1785
- validationWarnings.push("close_reason_defaulted");
1786
- }
1787
- }
1882
+ const closeReasonResolution = resolveCreateCloseReason(status, statusRegistry, settings, resolvedOptions, resolution);
1883
+ const closeReason = closeReasonResolution.closeReason;
1884
+ validationWarnings.push(...closeReasonResolution.warnings);
1788
1885
  const frontMatter = normalizeFrontMatter({
1789
1886
  id,
1790
1887
  title,
@@ -1841,9 +1938,7 @@ async function runCreate(options, global) {
1841
1938
  reminders: reminders.values,
1842
1939
  events: events.values,
1843
1940
  ...registeredItemFieldValues,
1844
- /* c8 ignore start -- collectRuntimeCreateFieldValues always returns a `values` object, so the `?? {}` fallback is unreachable. */
1845
- ...runtimeCreateFieldValues.values ?? {}
1846
- /* c8 ignore stop */
1941
+ ...runtimeCreateFieldValues.values
1847
1942
  });
1848
1943
  try {
1849
1944
  applyRegisteredItemFieldDefaultsAndValidation(frontMatter, extensionRegistrations);
@@ -1858,9 +1953,6 @@ async function runCreate(options, global) {
1858
1953
  metadata: {},
1859
1954
  body: ""
1860
1955
  };
1861
- const itemPath = getItemPath(pmRoot, type, id, settings.item_format, typeRegistry.type_to_folder);
1862
- const historyPath = getHistoryPath(pmRoot, id);
1863
- const lockRelease = await acquireLock(pmRoot, id, settings.locks.ttl_seconds, author, false, settings.governance.force_required_for_stale_lock);
1864
1956
  const explicitUnsetKeys = [...explicitUnsets].sort((left, right) => left.localeCompare(right));
1865
1957
  const historyMessage = buildHistoryMessage(resolvedOptions.message, explicitUnsetKeys);
1866
1958
  const changedFields = buildChangedFields(frontMatter, body, explicitUnsetKeys, [
@@ -1869,63 +1961,23 @@ async function runCreate(options, global) {
1869
1961
  ...Object.keys(runtimeCreateFieldValues.values ?? {})
1870
1962
  /* c8 ignore stop */
1871
1963
  ]);
1872
- let hookWarnings = [];
1873
- try {
1874
- await writeFileAtomic(itemPath, serializeItemDocument(afterDocument, {
1875
- format: settings.item_format,
1876
- schema: settings.schema,
1877
- extensionFieldNames
1878
- }));
1879
- try {
1880
- const entry = createHistoryEntry({
1881
- nowIso: nowValue,
1882
- author,
1883
- op: "create",
1884
- before: beforeDocument,
1885
- after: afterDocument,
1886
- message: historyMessage
1887
- });
1888
- await appendHistoryEntry(historyPath, entry);
1889
- } catch (error) {
1890
- await removeFileIfExists(itemPath);
1891
- throw error;
1892
- }
1893
- hookWarnings = [
1894
- ...await runActiveOnWriteHooks({
1895
- path: itemPath,
1896
- scope: "project",
1897
- op: "create",
1898
- item_id: afterDocument.metadata.id,
1899
- item_type: afterDocument.metadata.type,
1900
- before: beforeDocument,
1901
- after: afterDocument,
1902
- changed_fields: changedFields
1903
- }),
1904
- ...await runActiveOnWriteHooks({
1905
- path: historyPath,
1906
- scope: "project",
1907
- op: "create:history",
1908
- item_id: afterDocument.metadata.id,
1909
- item_type: afterDocument.metadata.type,
1910
- before: beforeDocument,
1911
- after: afterDocument,
1912
- changed_fields: changedFields
1913
- })
1914
- ];
1915
- recordAfterCommandAffectedItem({
1916
- id: afterDocument.metadata.id,
1917
- op: "create",
1918
- item_type: afterDocument.metadata.type,
1919
- status: afterDocument.metadata.status,
1920
- current: projectAfterCommandItemSnapshot(afterDocument.metadata, changedFields),
1921
- changed_fields: changedFields
1922
- });
1923
- } finally {
1924
- await lockRelease();
1925
- }
1964
+ const hookWarnings = await writeCreatedItem({
1965
+ pmRoot,
1966
+ type,
1967
+ id,
1968
+ settings,
1969
+ typeRegistry,
1970
+ author,
1971
+ extensionFieldNames,
1972
+ afterDocument,
1973
+ beforeDocument,
1974
+ historyMessage,
1975
+ changedFields,
1976
+ nowValue
1977
+ });
1926
1978
  const outputItem = structuredClone(frontMatter);
1927
1979
  const nextTransition = suggestNextLifecycleTransition(id, type, status, statusRegistry);
1928
- if (calendarRelevantTypes.has(type.toLowerCase()) && !hasDeadline && !hasReminders && !hasEvents) {
1980
+ if (createItemLacksSchedule(type, deadline, reminders.values, events.values)) {
1929
1981
  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>"'.`);
1930
1982
  }
1931
1983
  return {
@@ -1953,7 +2005,7 @@ var _testOnlyCreateCommand = {
1953
2005
  parseCreateUnsetTargets,
1954
2006
  requireStringOption,
1955
2007
  readTemplateOptionsFromRuntimeResult,
1956
- resolveRuntimeCreateUnsetDefinition,
2008
+ resolveRuntimeCreateUnsetDefinition: (token, registry) => resolveRuntimeUnsetFieldDefinition(token, "create", registry),
1957
2009
  typeOptionExampleValue
1958
2010
  };
1959
2011
 
@@ -1966,6 +2018,11 @@ export {
1966
2018
  isLegacyNoneToken,
1967
2019
  assertNoLegacyNoneToken,
1968
2020
  assertNoLegacyNoneTokens,
2021
+ applyLegacyNoneCollectionNormalizers,
2022
+ COMMON_UNSET_FIELD_DEFINITIONS_BEFORE_CLOSE_REASON,
2023
+ COMMON_UNSET_FIELD_DEFINITIONS_AFTER_CLOSE_REASON_BEFORE_AUTHOR,
2024
+ COMMON_UNSET_FIELD_DEFINITIONS_AFTER_AUTHOR,
2025
+ resolveRuntimeUnsetFieldDefinition,
1969
2026
  ensureEnumValue,
1970
2027
  parseReminderEntries,
1971
2028
  parseEventEntries,
@@ -1977,6 +2034,6 @@ export {
1977
2034
  runCreate,
1978
2035
  _testOnlyCreateCommand
1979
2036
  };
1980
- //# sourceMappingURL=chunk-IAP5KYBQ.js.map
2037
+ //# sourceMappingURL=chunk-4XOIEKSD.js.map
1981
2038
 
1982
- //# debugId=dd613437-a3c2-555c-9100-92271fb1f1db
2039
+ //# debugId=282e5a28-5e38-537b-8dd7-1c4731851fe2