@unbrained/pm-cli 2026.6.30 → 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 (452) hide show
  1. package/AGENTS.md +2 -0
  2. package/CHANGELOG.md +20 -0
  3. package/dist/cli/bootstrap-args.js +89 -79
  4. package/dist/cli/bootstrap-args.js.map +1 -1
  5. package/dist/cli/commands/calendar.js +63 -62
  6. package/dist/cli/commands/calendar.js.map +1 -1
  7. package/dist/cli/commands/create.js +483 -434
  8. package/dist/cli/commands/create.js.map +1 -1
  9. package/dist/cli/commands/extension/bundled-catalog.js +59 -46
  10. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  11. package/dist/cli/commands/extension/doctor.js +129 -78
  12. package/dist/cli/commands/extension/doctor.js.map +1 -1
  13. package/dist/cli/commands/extension/managed-state.js +101 -57
  14. package/dist/cli/commands/extension/managed-state.js.map +1 -1
  15. package/dist/cli/commands/extension/scaffold.d.ts +7 -0
  16. package/dist/cli/commands/extension/scaffold.js +214 -186
  17. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  18. package/dist/cli/commands/extension.d.ts +6 -1
  19. package/dist/cli/commands/extension.js +1034 -902
  20. package/dist/cli/commands/extension.js.map +1 -1
  21. package/dist/cli/commands/list-filter-shared.js +55 -48
  22. package/dist/cli/commands/list-filter-shared.js.map +1 -1
  23. package/dist/cli/commands/search.js +94 -68
  24. package/dist/cli/commands/search.js.map +1 -1
  25. package/dist/cli/commands/test.js +108 -122
  26. package/dist/cli/commands/test.js.map +1 -1
  27. package/dist/cli/commands/update.js +27 -77
  28. package/dist/cli/commands/update.js.map +1 -1
  29. package/dist/cli/extension-command-options.js +48 -21
  30. package/dist/cli/extension-command-options.js.map +1 -1
  31. package/dist/cli/registration-helpers.js +117 -122
  32. package/dist/cli/registration-helpers.js.map +1 -1
  33. package/dist/cli-bundle/chunks/activity-AW6XVFH6.js +16 -0
  34. package/dist/cli-bundle/chunks/{activity-MVSEND6D.js → activity-DBLQVIP6.js} +9 -9
  35. package/dist/cli-bundle/chunks/{aggregate-MOC4TR2G.js → aggregate-JTEF4BP7.js} +9 -9
  36. package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js → aggregate-SDF7DUOD.js} +9 -9
  37. package/dist/cli-bundle/chunks/{append-LEDBAM3K.js → append-LOVPGVPT.js} +6 -6
  38. package/dist/cli-bundle/chunks/{append-KDHT4GHI.js → append-QCFJSDFL.js} +6 -6
  39. package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js → chunk-22WKIL3H.js} +6 -6
  40. package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js → chunk-2466X6E4.js} +6 -6
  41. package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js → chunk-27BXPBAY.js} +3 -3
  42. package/dist/cli-bundle/chunks/{chunk-WTRUDJ3R.js → chunk-2D4HATP2.js} +5 -5
  43. package/dist/cli-bundle/chunks/{chunk-DORJSBGJ.js → chunk-3J6JRJ3I.js} +127 -125
  44. package/dist/cli-bundle/chunks/chunk-3J6JRJ3I.js.map +7 -0
  45. package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js → chunk-3K2M5OYU.js} +4 -4
  46. package/dist/cli-bundle/chunks/{chunk-KTMMTOIP.js → chunk-3S2KT7NG.js} +7 -7
  47. package/dist/cli-bundle/chunks/{chunk-FDEVKXC4.js → chunk-3VGN2UWE.js} +2 -2
  48. package/dist/cli-bundle/chunks/{chunk-K46GQ265.js → chunk-3XZCOZ5J.js} +107 -117
  49. package/dist/cli-bundle/chunks/chunk-3XZCOZ5J.js.map +1 -0
  50. package/dist/cli-bundle/chunks/chunk-4A3BJ675.js +799 -0
  51. package/dist/cli-bundle/chunks/chunk-4A3BJ675.js.map +1 -0
  52. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +87 -0
  53. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +7 -0
  54. package/dist/cli-bundle/chunks/{chunk-KYDYQMNW.js → chunk-4DSGXSBL.js} +4 -4
  55. package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js → chunk-4DUVCVLZ.js} +2 -2
  56. package/dist/cli-bundle/chunks/{chunk-UB3V5WUI.js → chunk-4XOIEKSD.js} +351 -330
  57. package/dist/cli-bundle/chunks/chunk-4XOIEKSD.js.map +1 -0
  58. package/dist/cli-bundle/chunks/{chunk-DJDXAU74.js → chunk-55SNVXRQ.js} +68 -69
  59. package/dist/cli-bundle/chunks/chunk-55SNVXRQ.js.map +7 -0
  60. package/dist/cli-bundle/chunks/{chunk-ZIE6WXJ2.js → chunk-5CGRF3L5.js} +7 -7
  61. package/dist/cli-bundle/chunks/{chunk-7WDETKGP.js → chunk-5QFDBI4F.js} +1105 -965
  62. package/dist/cli-bundle/chunks/chunk-5QFDBI4F.js.map +7 -0
  63. package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js → chunk-64HNBBFQ.js} +6 -6
  64. package/dist/cli-bundle/chunks/{chunk-T7ZMQI4J.js → chunk-6AQZPVHQ.js} +198 -189
  65. package/dist/cli-bundle/chunks/chunk-6AQZPVHQ.js.map +1 -0
  66. package/dist/cli-bundle/chunks/{chunk-CY5IJMUM.js → chunk-7R4QEMZZ.js} +361 -322
  67. package/dist/cli-bundle/chunks/chunk-7R4QEMZZ.js.map +1 -0
  68. package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js → chunk-A7FPBAQS.js} +4 -4
  69. package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js → chunk-AVEE5EHK.js} +3 -3
  70. package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js → chunk-AXIDKKAT.js} +2 -2
  71. package/dist/cli-bundle/chunks/{chunk-CHRNYKNI.js → chunk-BDTISOSD.js} +2 -2
  72. package/dist/cli-bundle/chunks/{chunk-ZFIEEDTJ.js → chunk-BHO33VBQ.js} +509 -363
  73. package/dist/cli-bundle/chunks/chunk-BHO33VBQ.js.map +7 -0
  74. package/dist/cli-bundle/chunks/{chunk-RM6MHL6A.js → chunk-BZCEN4JA.js} +98 -74
  75. package/dist/cli-bundle/chunks/chunk-BZCEN4JA.js.map +7 -0
  76. package/dist/cli-bundle/chunks/{chunk-RPRW26NG.js → chunk-CF7RL6FR.js} +7 -7
  77. package/dist/cli-bundle/chunks/{chunk-NIBP3I7A.js → chunk-CWFNTKQJ.js} +128 -126
  78. package/dist/cli-bundle/chunks/chunk-CWFNTKQJ.js.map +1 -0
  79. package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js → chunk-DDPTYJIM.js} +2 -2
  80. package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js → chunk-EJUDVUYZ.js} +3 -3
  81. package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js → chunk-EVMTBV6V.js} +3 -3
  82. package/dist/cli-bundle/chunks/{chunk-6YRAMXRS.js → chunk-FFMQB7WR.js} +99 -75
  83. package/dist/cli-bundle/chunks/chunk-FFMQB7WR.js.map +1 -0
  84. package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js → chunk-G7I7DEZA.js} +4 -4
  85. package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js → chunk-GJ326ZKX.js} +3 -3
  86. package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js → chunk-HPPFYYOV.js} +2 -2
  87. package/dist/cli-bundle/chunks/{chunk-5IRVSKPS.js → chunk-HXTQJXWT.js} +150 -224
  88. package/dist/cli-bundle/chunks/chunk-HXTQJXWT.js.map +1 -0
  89. package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js → chunk-HYTGA6GI.js} +3 -3
  90. package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js → chunk-HZZEHPRG.js} +2 -2
  91. package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js → chunk-IJYK2T43.js} +2 -2
  92. package/dist/cli-bundle/chunks/{chunk-GF7EAR22.js → chunk-IPYBJWTE.js} +7 -7
  93. package/dist/cli-bundle/chunks/{chunk-AWN4PPH5.js → chunk-IZBR4NRW.js} +7 -7
  94. package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js → chunk-JLM7BHI7.js} +6 -6
  95. package/dist/cli-bundle/chunks/{chunk-DU66JUGT.js → chunk-JMP4E6D7.js} +106 -116
  96. package/dist/cli-bundle/chunks/chunk-JMP4E6D7.js.map +7 -0
  97. package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js → chunk-JPECA746.js} +2 -2
  98. package/dist/cli-bundle/chunks/{chunk-KGQ3W65B.js → chunk-JSU5P7VS.js} +4 -4
  99. package/dist/cli-bundle/chunks/{chunk-HIBK6H4S.js → chunk-JWXRETDF.js} +69 -70
  100. package/dist/cli-bundle/chunks/chunk-JWXRETDF.js.map +1 -0
  101. package/dist/cli-bundle/chunks/{chunk-Z5BM2FKQ.js → chunk-KNPEF7QG.js} +4 -4
  102. package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js → chunk-L5OEFZQG.js} +3 -3
  103. package/dist/cli-bundle/chunks/{chunk-DRPF274X.js → chunk-LB6TP6MC.js} +2 -2
  104. package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js → chunk-MAUKX7JC.js} +2 -2
  105. package/dist/cli-bundle/chunks/{chunk-6T5ZIWBS.js → chunk-MDPEOIGN.js} +150 -224
  106. package/dist/cli-bundle/chunks/chunk-MDPEOIGN.js.map +7 -0
  107. package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js → chunk-N74UMG5H.js} +2 -2
  108. package/dist/cli-bundle/chunks/{chunk-ZEATCVAC.js → chunk-NFDPYAIP.js} +2 -2
  109. package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js → chunk-NKZAN7BD.js} +3 -3
  110. package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js → chunk-NOLPZMSV.js} +2 -2
  111. package/dist/cli-bundle/chunks/{chunk-JZG5ADVE.js → chunk-NU2UEROZ.js} +1103 -963
  112. package/dist/cli-bundle/chunks/chunk-NU2UEROZ.js.map +1 -0
  113. package/dist/cli-bundle/chunks/{chunk-A3UNLXNJ.js → chunk-NUHHPVVS.js} +36 -86
  114. package/dist/cli-bundle/chunks/chunk-NUHHPVVS.js.map +7 -0
  115. package/dist/cli-bundle/chunks/{chunk-QE5UFCCO.js → chunk-NWMZWYYB.js} +2 -2
  116. package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js → chunk-OGXLACHC.js} +6 -6
  117. package/dist/cli-bundle/chunks/{chunk-IHXXUIXS.js → chunk-OTUHB4HS.js} +4 -4
  118. package/dist/cli-bundle/chunks/{chunk-V3KLX7U7.js → chunk-QCWF6IYD.js} +510 -364
  119. package/dist/cli-bundle/chunks/chunk-QCWF6IYD.js.map +1 -0
  120. package/dist/cli-bundle/chunks/{chunk-UFKNF23C.js → chunk-RGEMWD6Q.js} +5 -5
  121. package/dist/cli-bundle/chunks/chunk-RH5ZBYFD.js +809 -0
  122. package/dist/cli-bundle/chunks/chunk-RH5ZBYFD.js.map +7 -0
  123. package/dist/cli-bundle/chunks/{chunk-Z55WX4IQ.js → chunk-RLDHZHQS.js} +7 -7
  124. package/dist/cli-bundle/chunks/{chunk-NO6Y6FB2.js → chunk-RMMQ74TG.js} +5 -5
  125. package/dist/cli-bundle/chunks/{chunk-SNUK7H5J.js → chunk-RVUALSJF.js} +361 -322
  126. package/dist/cli-bundle/chunks/chunk-RVUALSJF.js.map +7 -0
  127. package/dist/cli-bundle/chunks/{chunk-IZQOJR2B.js → chunk-SDR5J34Q.js} +198 -189
  128. package/dist/cli-bundle/chunks/chunk-SDR5J34Q.js.map +7 -0
  129. package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js → chunk-SLMUGTK3.js} +4 -4
  130. package/dist/cli-bundle/chunks/{chunk-BOWQWXLI.js → chunk-TP5Q5ZD3.js} +5 -5
  131. package/dist/cli-bundle/chunks/{chunk-D5LYZVGB.js → chunk-UYUYDGIB.js} +4 -4
  132. package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js → chunk-UZIWVBE6.js} +2 -2
  133. package/dist/cli-bundle/chunks/{chunk-JTRKME24.js → chunk-V3NOKJF2.js} +6 -6
  134. package/dist/cli-bundle/chunks/{chunk-5T6WPLRO.js → chunk-VARHOHYV.js} +350 -329
  135. package/dist/cli-bundle/chunks/chunk-VARHOHYV.js.map +7 -0
  136. package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js → chunk-VICZWYGZ.js} +4 -4
  137. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +84 -0
  138. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +1 -0
  139. package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js → chunk-W4ULYO7Z.js} +6 -6
  140. package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js → chunk-WYDHYJPO.js} +2 -2
  141. package/dist/cli-bundle/chunks/{chunk-53ARXF2O.js → chunk-YITK2PJ6.js} +6 -6
  142. package/dist/cli-bundle/chunks/{chunk-VD3LKZFX.js → chunk-ZETXE4SE.js} +37 -87
  143. package/dist/cli-bundle/chunks/chunk-ZETXE4SE.js.map +1 -0
  144. package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js → chunk-ZRP4VG5U.js} +2 -2
  145. package/dist/cli-bundle/chunks/{claim-6NINZYB3.js → claim-EMQLYPRW.js} +8 -8
  146. package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js → claim-T3GCKV7C.js} +8 -8
  147. package/dist/cli-bundle/chunks/close-E6ZZGCJY.js +14 -0
  148. package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js → close-TQYAAFJP.js} +7 -7
  149. package/dist/cli-bundle/chunks/{close-many-BFMP6HHK.js → close-many-BG5QQIDQ.js} +15 -15
  150. package/dist/cli-bundle/chunks/{close-many-CXJBOWWY.js → close-many-LDRVEQY2.js} +15 -15
  151. package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js → comments-QCKR2YY2.js} +8 -8
  152. package/dist/cli-bundle/chunks/{comments-ETHABIY6.js → comments-YUXJRZPQ.js} +8 -8
  153. package/dist/cli-bundle/chunks/{config-FIXJZEQK.js → config-DMSU64QO.js} +7 -7
  154. package/dist/cli-bundle/chunks/{config-X3ZVCUUG.js → config-QH2DICD6.js} +7 -7
  155. package/dist/cli-bundle/chunks/{context-XDI4DKKT.js → context-B6275WPX.js} +12 -12
  156. package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js → context-OCZ3FJ4Z.js} +12 -12
  157. package/dist/cli-bundle/chunks/{contracts-SMOAN5NF.js → contracts-HN7ABKLP.js} +3 -3
  158. package/dist/cli-bundle/chunks/{contracts-KP4QAGVW.js → contracts-W4FZVVD6.js} +3 -3
  159. package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js → copy-BTJOSKKT.js} +5 -5
  160. package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js → copy-DEM4DATS.js} +5 -5
  161. package/dist/cli-bundle/chunks/create-OH3BDGBB.js +28 -0
  162. package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js → create-RLRJMRTM.js} +12 -12
  163. package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js → delete-BHK7VB2Z.js} +5 -5
  164. package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js → delete-LSVHAB4Y.js} +5 -5
  165. package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js → deps-4UDFJRUA.js} +5 -5
  166. package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js → deps-XHYXWEPT.js} +5 -5
  167. package/dist/cli-bundle/chunks/{docs-2TIFR62T.js → docs-26S44RXU.js} +7 -7
  168. package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js → docs-GYZNVS26.js} +7 -7
  169. package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js → eval-PGRVIJQU.js} +10 -10
  170. package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js → eval-UYF3ZPVO.js} +10 -10
  171. package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js → extension-CPSLJQVE.js} +11 -10
  172. package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js → extension-CXJ6RELI.js} +11 -10
  173. package/dist/cli-bundle/chunks/{files-T5ODMETM.js → files-MBNICQFM.js} +7 -7
  174. package/dist/cli-bundle/chunks/{files-DF3HO6XK.js → files-NQHEXUZD.js} +7 -7
  175. package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js → focus-DWYIG7GU.js} +6 -6
  176. package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js → focus-XZW5423D.js} +6 -6
  177. package/dist/cli-bundle/chunks/{gc-FULIVYR4.js → gc-7GQYOS2G.js} +3 -3
  178. package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js → gc-LPVMKJQJ.js} +3 -3
  179. package/dist/cli-bundle/chunks/{get-AWK324RS.js → get-A7MAOHCU.js} +9 -9
  180. package/dist/cli-bundle/chunks/{get-VYPIICPC.js → get-DSDEKJ3L.js} +9 -9
  181. package/dist/cli-bundle/chunks/{health-Q66C43GN.js → health-3IPFLKXB.js} +17 -16
  182. package/dist/cli-bundle/chunks/{health-Q66C43GN.js.map → health-3IPFLKXB.js.map} +1 -1
  183. package/dist/cli-bundle/chunks/{health-FBCVZGSX.js → health-GZXGBZ36.js} +15 -14
  184. package/dist/cli-bundle/chunks/{health-FBCVZGSX.js.map → health-GZXGBZ36.js.map} +1 -1
  185. package/dist/cli-bundle/chunks/{history-X4OSES6K.js → history-NERDJNUB.js} +8 -8
  186. package/dist/cli-bundle/chunks/history-WSZHY3PN.js +18 -0
  187. package/dist/cli-bundle/chunks/{history-compact-WLCQEKXS.js → history-compact-2WRZ2WK4.js} +10 -10
  188. package/dist/cli-bundle/chunks/{history-compact-2GHT32UX.js → history-compact-HR7BB4LR.js} +10 -10
  189. package/dist/cli-bundle/chunks/history-redact-MP6CH7U5.js +19 -0
  190. package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js → history-redact-O3NBCNWC.js} +9 -9
  191. package/dist/cli-bundle/chunks/{history-repair-GABSDSVD.js → history-repair-LCMOS45X.js} +10 -10
  192. package/dist/cli-bundle/chunks/{history-repair-FY75IC26.js → history-repair-XA3LC4GA.js} +10 -10
  193. package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js → init-64XDLQJB.js} +12 -11
  194. package/dist/cli-bundle/chunks/init-PAX32BJA.js +22 -0
  195. package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js → learnings-JR6MA5TI.js} +8 -8
  196. package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js → learnings-LPKCSJX7.js} +8 -8
  197. package/dist/cli-bundle/chunks/{list-ROT7JF62.js → list-DNBJVO3E.js} +8 -8
  198. package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js → list-G5Y65VF6.js} +8 -8
  199. package/dist/cli-bundle/chunks/{next-66BJB4N2.js → next-BCERKDUR.js} +13 -13
  200. package/dist/cli-bundle/chunks/{next-N5MWJTBY.js → next-FYTQF6HG.js} +13 -13
  201. package/dist/cli-bundle/chunks/{notes-FW6YFLND.js → notes-2BMU3VVQ.js} +8 -8
  202. package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js → notes-6KTGO2OJ.js} +8 -8
  203. package/dist/cli-bundle/chunks/{plan-DQ7G4EDC.js → plan-4WXEQCTN.js} +12 -12
  204. package/dist/cli-bundle/chunks/{plan-ZHKZ7JVF.js → plan-RKZHQVXR.js} +12 -12
  205. package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js → profile-4OMM32CD.js} +8 -8
  206. package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js → profile-QLER5ENE.js} +8 -8
  207. package/dist/cli-bundle/chunks/{register-list-query-Y2VRHPCL.js → register-list-query-7LV46VAU.js} +18 -18
  208. package/dist/cli-bundle/chunks/{register-list-query-KY6Z6WV7.js → register-list-query-SNG5PGA4.js} +18 -18
  209. package/dist/cli-bundle/chunks/{register-mutation-PCARIGZS.js → register-mutation-ENNDUAZG.js} +35 -35
  210. package/dist/cli-bundle/chunks/{register-mutation-N6AYSKPM.js → register-mutation-KK7PHYYU.js} +35 -35
  211. package/dist/cli-bundle/chunks/{register-operations-YAT6FUUB.js → register-operations-C6OWLDSH.js} +30 -30
  212. package/dist/cli-bundle/chunks/{register-operations-L6CYTOIH.js → register-operations-HZ6XERQG.js} +30 -30
  213. package/dist/cli-bundle/chunks/{register-setup-N7UGXYJC.js → register-setup-P67EMBDJ.js} +15 -15
  214. package/dist/cli-bundle/chunks/{register-setup-MPANILQF.js → register-setup-ZKJ53RS7.js} +15 -15
  215. package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js → restore-4MHZFJ2E.js} +9 -9
  216. package/dist/cli-bundle/chunks/restore-YALDGTQR.js +17 -0
  217. package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js → scheduling-shortcuts-LB6DOLRL.js} +12 -12
  218. package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js → scheduling-shortcuts-UTOYKLXQ.js} +12 -12
  219. package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js → schema-73HR2OJW.js} +7 -7
  220. package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js → schema-U6LJKSIR.js} +7 -7
  221. package/dist/cli-bundle/chunks/{search-CX5UMV4H.js → search-AXPXKZER.js} +10 -10
  222. package/dist/cli-bundle/chunks/{search-KP6H7COV.js → search-KILGT37L.js} +10 -10
  223. package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js → stats-PSYVVTNZ.js} +6 -6
  224. package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js → stats-W5KNVJWQ.js} +6 -6
  225. package/dist/cli-bundle/chunks/{telemetry-WTYFUPRL.js → telemetry-BZUF6H7G.js} +4 -4
  226. package/dist/cli-bundle/chunks/{telemetry-DIFPXCAT.js → telemetry-GAHHQTOS.js} +4 -4
  227. package/dist/cli-bundle/chunks/{test-QNDXZQCW.js → test-ACD52Z3S.js} +15 -14
  228. package/dist/cli-bundle/chunks/{test-HU2BS7EY.js → test-PWDIZ255.js} +15 -14
  229. package/dist/cli-bundle/chunks/{test-all-XLPI4USF.js → test-all-L2MDDUCA.js} +17 -16
  230. package/dist/cli-bundle/chunks/{test-all-XLPI4USF.js.map → test-all-L2MDDUCA.js.map} +1 -1
  231. package/dist/cli-bundle/chunks/{test-all-PZTBLLQ6.js → test-all-RBZ6DLU2.js} +15 -14
  232. package/dist/cli-bundle/chunks/{test-all-PZTBLLQ6.js.map → test-all-RBZ6DLU2.js.map} +1 -1
  233. package/dist/cli-bundle/chunks/{test-runs-LANLLPVO.js → test-runs-PLRAZEFW.js} +4 -4
  234. package/dist/cli-bundle/chunks/{test-runs-CA6K32RD.js → test-runs-UXIXPDKU.js} +4 -4
  235. package/dist/cli-bundle/chunks/update-AMRSOIWP.js +24 -0
  236. package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js → update-KFX2SIAC.js} +15 -15
  237. package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js → update-many-RNSBX2TA.js} +23 -23
  238. package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js → update-many-Z5GJS5LC.js} +23 -23
  239. package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js → upgrade-BRL6KCOJ.js} +13 -12
  240. package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js.map → upgrade-BRL6KCOJ.js.map} +1 -1
  241. package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js → upgrade-HAK6JG2O.js} +11 -10
  242. package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js.map → upgrade-HAK6JG2O.js.map} +1 -1
  243. package/dist/cli-bundle/chunks/{validate-2G566PKQ.js → validate-MTUVL5VC.js} +20 -19
  244. package/dist/cli-bundle/chunks/{validate-2G566PKQ.js.map → validate-MTUVL5VC.js.map} +1 -1
  245. package/dist/cli-bundle/chunks/{validate-BDPVXHHH.js → validate-X5W76YJL.js} +22 -21
  246. package/dist/cli-bundle/chunks/{validate-BDPVXHHH.js.map → validate-X5W76YJL.js.map} +1 -1
  247. package/dist/cli-bundle/main.js +55 -702
  248. package/dist/cli-bundle/main.js.map +4 -4
  249. package/dist/core/extensions/activation-summary-markdown.js +23 -12
  250. package/dist/core/extensions/activation-summary-markdown.js.map +1 -1
  251. package/dist/core/extensions/extension-policy.d.ts +18 -3
  252. package/dist/core/extensions/extension-policy.js +116 -106
  253. package/dist/core/extensions/extension-policy.js.map +1 -1
  254. package/dist/core/extensions/loader.js +310 -232
  255. package/dist/core/extensions/loader.js.map +1 -1
  256. package/dist/core/item/item-format.js +523 -410
  257. package/dist/core/item/item-format.js.map +1 -1
  258. package/dist/mcp/server.js +387 -367
  259. package/dist/mcp/server.js.map +1 -1
  260. package/dist/sdk/cli-contracts/flag-contracts.js +111 -180
  261. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  262. package/dist/sdk/cli-contracts/tool-schema.js +76 -45
  263. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
  264. package/dist/sdk/compose.d.ts +4 -1
  265. package/dist/sdk/compose.js +181 -115
  266. package/dist/sdk/compose.js.map +1 -1
  267. package/docs/RELEASING.md +2 -3
  268. package/package.json +1 -1
  269. package/dist/cli-bundle/chunks/activity-EJBMXUBH.js +0 -16
  270. package/dist/cli-bundle/chunks/chunk-5IRVSKPS.js.map +0 -1
  271. package/dist/cli-bundle/chunks/chunk-5T6WPLRO.js.map +0 -7
  272. package/dist/cli-bundle/chunks/chunk-6T5ZIWBS.js.map +0 -7
  273. package/dist/cli-bundle/chunks/chunk-6YRAMXRS.js.map +0 -1
  274. package/dist/cli-bundle/chunks/chunk-7WDETKGP.js.map +0 -7
  275. package/dist/cli-bundle/chunks/chunk-A3UNLXNJ.js.map +0 -7
  276. package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js +0 -115
  277. package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js.map +0 -1
  278. package/dist/cli-bundle/chunks/chunk-CY5IJMUM.js.map +0 -1
  279. package/dist/cli-bundle/chunks/chunk-DJDXAU74.js.map +0 -7
  280. package/dist/cli-bundle/chunks/chunk-DORJSBGJ.js.map +0 -7
  281. package/dist/cli-bundle/chunks/chunk-DU66JUGT.js.map +0 -7
  282. package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js +0 -118
  283. package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js.map +0 -7
  284. package/dist/cli-bundle/chunks/chunk-HIBK6H4S.js.map +0 -1
  285. package/dist/cli-bundle/chunks/chunk-ISEKN64V.js +0 -35
  286. package/dist/cli-bundle/chunks/chunk-ISEKN64V.js.map +0 -7
  287. package/dist/cli-bundle/chunks/chunk-IZQOJR2B.js.map +0 -7
  288. package/dist/cli-bundle/chunks/chunk-JZG5ADVE.js.map +0 -1
  289. package/dist/cli-bundle/chunks/chunk-K46GQ265.js.map +0 -1
  290. package/dist/cli-bundle/chunks/chunk-NIBP3I7A.js.map +0 -1
  291. package/dist/cli-bundle/chunks/chunk-RM6MHL6A.js.map +0 -7
  292. package/dist/cli-bundle/chunks/chunk-SNUK7H5J.js.map +0 -7
  293. package/dist/cli-bundle/chunks/chunk-T7ZMQI4J.js.map +0 -1
  294. package/dist/cli-bundle/chunks/chunk-UB3V5WUI.js.map +0 -1
  295. package/dist/cli-bundle/chunks/chunk-V3KLX7U7.js.map +0 -1
  296. package/dist/cli-bundle/chunks/chunk-VD3LKZFX.js.map +0 -1
  297. package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js +0 -32
  298. package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js.map +0 -1
  299. package/dist/cli-bundle/chunks/chunk-ZFIEEDTJ.js.map +0 -7
  300. package/dist/cli-bundle/chunks/close-37KEHLYM.js +0 -14
  301. package/dist/cli-bundle/chunks/create-DFMNBKBS.js +0 -28
  302. package/dist/cli-bundle/chunks/history-5XUSLAJA.js +0 -18
  303. package/dist/cli-bundle/chunks/history-redact-BVHWDXPR.js +0 -19
  304. package/dist/cli-bundle/chunks/init-TRYJELH4.js +0 -21
  305. package/dist/cli-bundle/chunks/restore-IRAKSWIW.js +0 -17
  306. package/dist/cli-bundle/chunks/update-UXDLTEOZ.js +0 -24
  307. /package/dist/cli-bundle/chunks/{activity-EJBMXUBH.js.map → activity-AW6XVFH6.js.map} +0 -0
  308. /package/dist/cli-bundle/chunks/{activity-MVSEND6D.js.map → activity-DBLQVIP6.js.map} +0 -0
  309. /package/dist/cli-bundle/chunks/{aggregate-MOC4TR2G.js.map → aggregate-JTEF4BP7.js.map} +0 -0
  310. /package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js.map → aggregate-SDF7DUOD.js.map} +0 -0
  311. /package/dist/cli-bundle/chunks/{append-LEDBAM3K.js.map → append-LOVPGVPT.js.map} +0 -0
  312. /package/dist/cli-bundle/chunks/{append-KDHT4GHI.js.map → append-QCFJSDFL.js.map} +0 -0
  313. /package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js.map → chunk-22WKIL3H.js.map} +0 -0
  314. /package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js.map → chunk-2466X6E4.js.map} +0 -0
  315. /package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js.map → chunk-27BXPBAY.js.map} +0 -0
  316. /package/dist/cli-bundle/chunks/{chunk-WTRUDJ3R.js.map → chunk-2D4HATP2.js.map} +0 -0
  317. /package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js.map → chunk-3K2M5OYU.js.map} +0 -0
  318. /package/dist/cli-bundle/chunks/{chunk-KTMMTOIP.js.map → chunk-3S2KT7NG.js.map} +0 -0
  319. /package/dist/cli-bundle/chunks/{chunk-FDEVKXC4.js.map → chunk-3VGN2UWE.js.map} +0 -0
  320. /package/dist/cli-bundle/chunks/{chunk-KYDYQMNW.js.map → chunk-4DSGXSBL.js.map} +0 -0
  321. /package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js.map → chunk-4DUVCVLZ.js.map} +0 -0
  322. /package/dist/cli-bundle/chunks/{chunk-ZIE6WXJ2.js.map → chunk-5CGRF3L5.js.map} +0 -0
  323. /package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js.map → chunk-64HNBBFQ.js.map} +0 -0
  324. /package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js.map → chunk-A7FPBAQS.js.map} +0 -0
  325. /package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js.map → chunk-AVEE5EHK.js.map} +0 -0
  326. /package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js.map → chunk-AXIDKKAT.js.map} +0 -0
  327. /package/dist/cli-bundle/chunks/{chunk-CHRNYKNI.js.map → chunk-BDTISOSD.js.map} +0 -0
  328. /package/dist/cli-bundle/chunks/{chunk-RPRW26NG.js.map → chunk-CF7RL6FR.js.map} +0 -0
  329. /package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js.map → chunk-DDPTYJIM.js.map} +0 -0
  330. /package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js.map → chunk-EJUDVUYZ.js.map} +0 -0
  331. /package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js.map → chunk-EVMTBV6V.js.map} +0 -0
  332. /package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js.map → chunk-G7I7DEZA.js.map} +0 -0
  333. /package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js.map → chunk-GJ326ZKX.js.map} +0 -0
  334. /package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js.map → chunk-HPPFYYOV.js.map} +0 -0
  335. /package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js.map → chunk-HYTGA6GI.js.map} +0 -0
  336. /package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js.map → chunk-HZZEHPRG.js.map} +0 -0
  337. /package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js.map → chunk-IJYK2T43.js.map} +0 -0
  338. /package/dist/cli-bundle/chunks/{chunk-GF7EAR22.js.map → chunk-IPYBJWTE.js.map} +0 -0
  339. /package/dist/cli-bundle/chunks/{chunk-AWN4PPH5.js.map → chunk-IZBR4NRW.js.map} +0 -0
  340. /package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js.map → chunk-JLM7BHI7.js.map} +0 -0
  341. /package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js.map → chunk-JPECA746.js.map} +0 -0
  342. /package/dist/cli-bundle/chunks/{chunk-KGQ3W65B.js.map → chunk-JSU5P7VS.js.map} +0 -0
  343. /package/dist/cli-bundle/chunks/{chunk-Z5BM2FKQ.js.map → chunk-KNPEF7QG.js.map} +0 -0
  344. /package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js.map → chunk-L5OEFZQG.js.map} +0 -0
  345. /package/dist/cli-bundle/chunks/{chunk-DRPF274X.js.map → chunk-LB6TP6MC.js.map} +0 -0
  346. /package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js.map → chunk-MAUKX7JC.js.map} +0 -0
  347. /package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js.map → chunk-N74UMG5H.js.map} +0 -0
  348. /package/dist/cli-bundle/chunks/{chunk-ZEATCVAC.js.map → chunk-NFDPYAIP.js.map} +0 -0
  349. /package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js.map → chunk-NKZAN7BD.js.map} +0 -0
  350. /package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js.map → chunk-NOLPZMSV.js.map} +0 -0
  351. /package/dist/cli-bundle/chunks/{chunk-QE5UFCCO.js.map → chunk-NWMZWYYB.js.map} +0 -0
  352. /package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js.map → chunk-OGXLACHC.js.map} +0 -0
  353. /package/dist/cli-bundle/chunks/{chunk-IHXXUIXS.js.map → chunk-OTUHB4HS.js.map} +0 -0
  354. /package/dist/cli-bundle/chunks/{chunk-UFKNF23C.js.map → chunk-RGEMWD6Q.js.map} +0 -0
  355. /package/dist/cli-bundle/chunks/{chunk-Z55WX4IQ.js.map → chunk-RLDHZHQS.js.map} +0 -0
  356. /package/dist/cli-bundle/chunks/{chunk-NO6Y6FB2.js.map → chunk-RMMQ74TG.js.map} +0 -0
  357. /package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js.map → chunk-SLMUGTK3.js.map} +0 -0
  358. /package/dist/cli-bundle/chunks/{chunk-BOWQWXLI.js.map → chunk-TP5Q5ZD3.js.map} +0 -0
  359. /package/dist/cli-bundle/chunks/{chunk-D5LYZVGB.js.map → chunk-UYUYDGIB.js.map} +0 -0
  360. /package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js.map → chunk-UZIWVBE6.js.map} +0 -0
  361. /package/dist/cli-bundle/chunks/{chunk-JTRKME24.js.map → chunk-V3NOKJF2.js.map} +0 -0
  362. /package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js.map → chunk-VICZWYGZ.js.map} +0 -0
  363. /package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js.map → chunk-W4ULYO7Z.js.map} +0 -0
  364. /package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js.map → chunk-WYDHYJPO.js.map} +0 -0
  365. /package/dist/cli-bundle/chunks/{chunk-53ARXF2O.js.map → chunk-YITK2PJ6.js.map} +0 -0
  366. /package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js.map → chunk-ZRP4VG5U.js.map} +0 -0
  367. /package/dist/cli-bundle/chunks/{claim-6NINZYB3.js.map → claim-EMQLYPRW.js.map} +0 -0
  368. /package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js.map → claim-T3GCKV7C.js.map} +0 -0
  369. /package/dist/cli-bundle/chunks/{close-37KEHLYM.js.map → close-E6ZZGCJY.js.map} +0 -0
  370. /package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js.map → close-TQYAAFJP.js.map} +0 -0
  371. /package/dist/cli-bundle/chunks/{close-many-BFMP6HHK.js.map → close-many-BG5QQIDQ.js.map} +0 -0
  372. /package/dist/cli-bundle/chunks/{close-many-CXJBOWWY.js.map → close-many-LDRVEQY2.js.map} +0 -0
  373. /package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js.map → comments-QCKR2YY2.js.map} +0 -0
  374. /package/dist/cli-bundle/chunks/{comments-ETHABIY6.js.map → comments-YUXJRZPQ.js.map} +0 -0
  375. /package/dist/cli-bundle/chunks/{config-FIXJZEQK.js.map → config-DMSU64QO.js.map} +0 -0
  376. /package/dist/cli-bundle/chunks/{config-X3ZVCUUG.js.map → config-QH2DICD6.js.map} +0 -0
  377. /package/dist/cli-bundle/chunks/{context-XDI4DKKT.js.map → context-B6275WPX.js.map} +0 -0
  378. /package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js.map → context-OCZ3FJ4Z.js.map} +0 -0
  379. /package/dist/cli-bundle/chunks/{contracts-SMOAN5NF.js.map → contracts-HN7ABKLP.js.map} +0 -0
  380. /package/dist/cli-bundle/chunks/{contracts-KP4QAGVW.js.map → contracts-W4FZVVD6.js.map} +0 -0
  381. /package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js.map → copy-BTJOSKKT.js.map} +0 -0
  382. /package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js.map → copy-DEM4DATS.js.map} +0 -0
  383. /package/dist/cli-bundle/chunks/{create-DFMNBKBS.js.map → create-OH3BDGBB.js.map} +0 -0
  384. /package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js.map → create-RLRJMRTM.js.map} +0 -0
  385. /package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js.map → delete-BHK7VB2Z.js.map} +0 -0
  386. /package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js.map → delete-LSVHAB4Y.js.map} +0 -0
  387. /package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js.map → deps-4UDFJRUA.js.map} +0 -0
  388. /package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js.map → deps-XHYXWEPT.js.map} +0 -0
  389. /package/dist/cli-bundle/chunks/{docs-2TIFR62T.js.map → docs-26S44RXU.js.map} +0 -0
  390. /package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js.map → docs-GYZNVS26.js.map} +0 -0
  391. /package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js.map → eval-PGRVIJQU.js.map} +0 -0
  392. /package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js.map → eval-UYF3ZPVO.js.map} +0 -0
  393. /package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js.map → extension-CPSLJQVE.js.map} +0 -0
  394. /package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js.map → extension-CXJ6RELI.js.map} +0 -0
  395. /package/dist/cli-bundle/chunks/{files-T5ODMETM.js.map → files-MBNICQFM.js.map} +0 -0
  396. /package/dist/cli-bundle/chunks/{files-DF3HO6XK.js.map → files-NQHEXUZD.js.map} +0 -0
  397. /package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js.map → focus-DWYIG7GU.js.map} +0 -0
  398. /package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js.map → focus-XZW5423D.js.map} +0 -0
  399. /package/dist/cli-bundle/chunks/{gc-FULIVYR4.js.map → gc-7GQYOS2G.js.map} +0 -0
  400. /package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js.map → gc-LPVMKJQJ.js.map} +0 -0
  401. /package/dist/cli-bundle/chunks/{get-AWK324RS.js.map → get-A7MAOHCU.js.map} +0 -0
  402. /package/dist/cli-bundle/chunks/{get-VYPIICPC.js.map → get-DSDEKJ3L.js.map} +0 -0
  403. /package/dist/cli-bundle/chunks/{history-X4OSES6K.js.map → history-NERDJNUB.js.map} +0 -0
  404. /package/dist/cli-bundle/chunks/{history-5XUSLAJA.js.map → history-WSZHY3PN.js.map} +0 -0
  405. /package/dist/cli-bundle/chunks/{history-compact-WLCQEKXS.js.map → history-compact-2WRZ2WK4.js.map} +0 -0
  406. /package/dist/cli-bundle/chunks/{history-compact-2GHT32UX.js.map → history-compact-HR7BB4LR.js.map} +0 -0
  407. /package/dist/cli-bundle/chunks/{history-redact-BVHWDXPR.js.map → history-redact-MP6CH7U5.js.map} +0 -0
  408. /package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js.map → history-redact-O3NBCNWC.js.map} +0 -0
  409. /package/dist/cli-bundle/chunks/{history-repair-GABSDSVD.js.map → history-repair-LCMOS45X.js.map} +0 -0
  410. /package/dist/cli-bundle/chunks/{history-repair-FY75IC26.js.map → history-repair-XA3LC4GA.js.map} +0 -0
  411. /package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js.map → init-64XDLQJB.js.map} +0 -0
  412. /package/dist/cli-bundle/chunks/{init-TRYJELH4.js.map → init-PAX32BJA.js.map} +0 -0
  413. /package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js.map → learnings-JR6MA5TI.js.map} +0 -0
  414. /package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js.map → learnings-LPKCSJX7.js.map} +0 -0
  415. /package/dist/cli-bundle/chunks/{list-ROT7JF62.js.map → list-DNBJVO3E.js.map} +0 -0
  416. /package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js.map → list-G5Y65VF6.js.map} +0 -0
  417. /package/dist/cli-bundle/chunks/{next-66BJB4N2.js.map → next-BCERKDUR.js.map} +0 -0
  418. /package/dist/cli-bundle/chunks/{next-N5MWJTBY.js.map → next-FYTQF6HG.js.map} +0 -0
  419. /package/dist/cli-bundle/chunks/{notes-FW6YFLND.js.map → notes-2BMU3VVQ.js.map} +0 -0
  420. /package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js.map → notes-6KTGO2OJ.js.map} +0 -0
  421. /package/dist/cli-bundle/chunks/{plan-DQ7G4EDC.js.map → plan-4WXEQCTN.js.map} +0 -0
  422. /package/dist/cli-bundle/chunks/{plan-ZHKZ7JVF.js.map → plan-RKZHQVXR.js.map} +0 -0
  423. /package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js.map → profile-4OMM32CD.js.map} +0 -0
  424. /package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js.map → profile-QLER5ENE.js.map} +0 -0
  425. /package/dist/cli-bundle/chunks/{register-list-query-Y2VRHPCL.js.map → register-list-query-7LV46VAU.js.map} +0 -0
  426. /package/dist/cli-bundle/chunks/{register-list-query-KY6Z6WV7.js.map → register-list-query-SNG5PGA4.js.map} +0 -0
  427. /package/dist/cli-bundle/chunks/{register-mutation-PCARIGZS.js.map → register-mutation-ENNDUAZG.js.map} +0 -0
  428. /package/dist/cli-bundle/chunks/{register-mutation-N6AYSKPM.js.map → register-mutation-KK7PHYYU.js.map} +0 -0
  429. /package/dist/cli-bundle/chunks/{register-operations-YAT6FUUB.js.map → register-operations-C6OWLDSH.js.map} +0 -0
  430. /package/dist/cli-bundle/chunks/{register-operations-L6CYTOIH.js.map → register-operations-HZ6XERQG.js.map} +0 -0
  431. /package/dist/cli-bundle/chunks/{register-setup-N7UGXYJC.js.map → register-setup-P67EMBDJ.js.map} +0 -0
  432. /package/dist/cli-bundle/chunks/{register-setup-MPANILQF.js.map → register-setup-ZKJ53RS7.js.map} +0 -0
  433. /package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js.map → restore-4MHZFJ2E.js.map} +0 -0
  434. /package/dist/cli-bundle/chunks/{restore-IRAKSWIW.js.map → restore-YALDGTQR.js.map} +0 -0
  435. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js.map → scheduling-shortcuts-LB6DOLRL.js.map} +0 -0
  436. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js.map → scheduling-shortcuts-UTOYKLXQ.js.map} +0 -0
  437. /package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js.map → schema-73HR2OJW.js.map} +0 -0
  438. /package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js.map → schema-U6LJKSIR.js.map} +0 -0
  439. /package/dist/cli-bundle/chunks/{search-CX5UMV4H.js.map → search-AXPXKZER.js.map} +0 -0
  440. /package/dist/cli-bundle/chunks/{search-KP6H7COV.js.map → search-KILGT37L.js.map} +0 -0
  441. /package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js.map → stats-PSYVVTNZ.js.map} +0 -0
  442. /package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js.map → stats-W5KNVJWQ.js.map} +0 -0
  443. /package/dist/cli-bundle/chunks/{telemetry-WTYFUPRL.js.map → telemetry-BZUF6H7G.js.map} +0 -0
  444. /package/dist/cli-bundle/chunks/{telemetry-DIFPXCAT.js.map → telemetry-GAHHQTOS.js.map} +0 -0
  445. /package/dist/cli-bundle/chunks/{test-QNDXZQCW.js.map → test-ACD52Z3S.js.map} +0 -0
  446. /package/dist/cli-bundle/chunks/{test-HU2BS7EY.js.map → test-PWDIZ255.js.map} +0 -0
  447. /package/dist/cli-bundle/chunks/{test-runs-LANLLPVO.js.map → test-runs-PLRAZEFW.js.map} +0 -0
  448. /package/dist/cli-bundle/chunks/{test-runs-CA6K32RD.js.map → test-runs-UXIXPDKU.js.map} +0 -0
  449. /package/dist/cli-bundle/chunks/{update-UXDLTEOZ.js.map → update-AMRSOIWP.js.map} +0 -0
  450. /package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js.map → update-KFX2SIAC.js.map} +0 -0
  451. /package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js.map → update-many-RNSBX2TA.js.map} +0 -0
  452. /package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js.map → update-many-Z5GJS5LC.js.map} +0 -0
@@ -10,7 +10,7 @@ import {
10
10
  parseLinkedTestMinLines,
11
11
  parseLinkedTestRegexList,
12
12
  parseLinkedTestStringList
13
- } from "./chunk-JIP67N2K.js";
13
+ } from "./chunk-HYTGA6GI.js";
14
14
  import {
15
15
  assertNoUnknownCsvKeys,
16
16
  createStdinTokenResolver,
@@ -19,21 +19,21 @@ import {
19
19
  parseCsvKv,
20
20
  parseOptionalNumber,
21
21
  parseTags
22
- } from "./chunk-BN3CWK6G.js";
22
+ } from "./chunk-DDPTYJIM.js";
23
23
  import {
24
24
  getFocusedItem
25
- } from "./chunk-4TXTVZL3.js";
25
+ } from "./chunk-IJYK2T43.js";
26
26
  import {
27
27
  normalizeParentReferenceValue,
28
28
  validateMissingParentReference,
29
29
  validateSprintOrReleaseValue
30
- } from "./chunk-HUYYMTGW.js";
30
+ } from "./chunk-JPECA746.js";
31
31
  import {
32
32
  buildInvalidTypeError
33
- } from "./chunk-DRPF274X.js";
33
+ } from "./chunk-LB6TP6MC.js";
34
34
  import {
35
35
  printError
36
- } from "./chunk-CHRNYKNI.js";
36
+ } from "./chunk-BDTISOSD.js";
37
37
  import {
38
38
  acquireLock,
39
39
  appendHistoryEntry,
@@ -44,18 +44,18 @@ import {
44
44
  locateItem,
45
45
  normalizeItemId,
46
46
  parseRegisteredItemFieldAssignments
47
- } from "./chunk-LBH7UYKY.js";
47
+ } from "./chunk-3K2M5OYU.js";
48
48
  import {
49
49
  canonicalDocument,
50
50
  collectRuntimeCreateFieldValues,
51
51
  normalizeFrontMatter,
52
52
  normalizeStatusInput,
53
53
  serializeItemDocument
54
- } from "./chunk-ZFIEEDTJ.js";
54
+ } from "./chunk-BHO33VBQ.js";
55
55
  import {
56
56
  nowIso,
57
57
  resolveIsoOrRelative
58
- } from "./chunk-MLHX6DN5.js";
58
+ } from "./chunk-WYDHYJPO.js";
59
59
  import {
60
60
  CONFIDENCE_TEXT_VALUES,
61
61
  CREATE_DIRECT_CLOSE_REASON_DEFAULT,
@@ -93,7 +93,7 @@ import {
93
93
  validateTypeOptions,
94
94
  weekdayOrderIndex,
95
95
  writeFileAtomic
96
- } from "./chunk-SNUK7H5J.js";
96
+ } from "./chunk-RVUALSJF.js";
97
97
 
98
98
  // dist/core/item/priority.js
99
99
  !(function() {
@@ -757,7 +757,7 @@ function parseTypeOptionEntries(raw) {
757
757
  !(function() {
758
758
  try {
759
759
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
760
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "aa70c8da-5e95-5356-b118-cc0dcc4d1835");
760
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "39253884-2bdf-54e5-9cf2-6ac279638287");
761
761
  } catch (e2) {
762
762
  }
763
763
  })();
@@ -1448,14 +1448,96 @@ function ensureInitHasRun(pmRoot) {
1448
1448
  }
1449
1449
  });
1450
1450
  }
1451
- async function runCreate(options, global2) {
1452
- let resolvedOptions = normalizeLegacyNoneCreateOptions(await resolveCreateStdinInputs(options));
1453
- const pmRoot = resolvePmRoot(process.cwd(), global2.path);
1454
- await ensureInitHasRun(pmRoot);
1455
- const settings = await readSettings(pmRoot);
1456
- const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
1457
- const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);
1458
- const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
1451
+ function resolveUnsettableOptionalString(unsetKeys, frontMatterKey, raw) {
1452
+ return unsetKeys.has(frontMatterKey) || raw === void 0 ? void 0 : parseOptionalString(raw);
1453
+ }
1454
+ function resolveUnsettableTransformed(unsetKeys, frontMatterKey, raw, transform) {
1455
+ return unsetKeys.has(frontMatterKey) || raw === void 0 ? void 0 : transform(raw);
1456
+ }
1457
+ var CALENDAR_RELEVANT_CREATE_TYPES = /* @__PURE__ */ new Set(["milestone", "meeting", "reminder", "event"]);
1458
+ function createItemLacksSchedule(type, deadline, reminders, events) {
1459
+ const hasDeadline = deadline !== void 0;
1460
+ const hasReminders = reminders !== void 0 && reminders.length > 0;
1461
+ const hasEvents = events !== void 0 && events.length > 0;
1462
+ return CALENDAR_RELEVANT_CREATE_TYPES.has(type.toLowerCase()) && !hasDeadline && !hasReminders && !hasEvents;
1463
+ }
1464
+ function collectCreateScheduleWarnings(type, id, deadline, reminders, events) {
1465
+ const warnings = [];
1466
+ if (type.toLowerCase() === "event" && (events === void 0 || events.length === 0)) {
1467
+ warnings.push(`event_without_schedule:${id}:no_time_set`);
1468
+ }
1469
+ if (createItemLacksSchedule(type, deadline, reminders, events)) {
1470
+ warnings.push(`calendar_item_without_schedule:${id}:no_deadline_or_reminder_or_event (hint: set --deadline <ISO> or --reminder "<when>", or link an Event via --event "start=<ISO>,end=<ISO>"; otherwise this item never appears on pm calendar)`);
1471
+ }
1472
+ return warnings;
1473
+ }
1474
+ async function inheritFocusedParent(parent, resolvedOptions, unsetKeys, pmRoot) {
1475
+ if (parent !== void 0 || unsetKeys.has("parent") || resolvedOptions.parent !== void 0) {
1476
+ return { parent, parentSource: void 0 };
1477
+ }
1478
+ const focused = await getFocusedItem(pmRoot);
1479
+ if (focused === void 0) {
1480
+ return { parent, parentSource: void 0 };
1481
+ }
1482
+ return { parent: focused, parentSource: "focus" };
1483
+ }
1484
+ async function validateCreateParentReference(pmRoot, settings, typeRegistry, parent, policy) {
1485
+ const normalized = normalizeParentReferenceValue(parent);
1486
+ const parentLocated = await locateItem(pmRoot, normalized, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1487
+ if (parentLocated) {
1488
+ return { parent: normalized, warnings: [] };
1489
+ }
1490
+ const normalizedParentId = normalizeItemId(normalized, settings.id_prefix);
1491
+ return { parent: normalized, warnings: validateMissingParentReference(normalizedParentId, policy).warnings };
1492
+ }
1493
+ function resolveCreateSprintOrRelease(unsetKeys, frontMatterKey, raw, field, policy) {
1494
+ const resolved = resolveUnsettableOptionalString(unsetKeys, frontMatterKey, raw);
1495
+ if (resolved === void 0) {
1496
+ return { value: void 0, warnings: [] };
1497
+ }
1498
+ const validation = validateSprintOrReleaseValue(field, resolved, policy);
1499
+ return { value: validation.value, warnings: validation.warnings };
1500
+ }
1501
+ async function resolveCreateBlockedByDependency(params) {
1502
+ const { pmRoot, settings, typeRegistry, statusRegistry, blockedBy, status, statusExplicit, nowValue, author } = params;
1503
+ let dependencyValues = params.dependencyValues;
1504
+ if (blockedBy === void 0) {
1505
+ return { dependencyValues, status };
1506
+ }
1507
+ const normalizedBlockedBy = normalizeItemId(blockedBy, settings.id_prefix);
1508
+ const blockedByLocated = await locateItem(pmRoot, normalizedBlockedBy, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1509
+ if (!blockedByLocated) {
1510
+ return { dependencyValues, status };
1511
+ }
1512
+ const hasBlockedByDependency = (dependencyValues ?? []).some((dependency) => dependency.id === blockedByLocated.id && dependency.kind === "blocked_by");
1513
+ if (!hasBlockedByDependency) {
1514
+ dependencyValues = [
1515
+ ...dependencyValues ?? [],
1516
+ { id: blockedByLocated.id, kind: "blocked_by", created_at: nowValue, author }
1517
+ ];
1518
+ }
1519
+ if (statusExplicit) {
1520
+ return { dependencyValues, status };
1521
+ }
1522
+ const blockedStatus = statusRegistry.blocked_statuses.has("blocked") ? "blocked" : [...statusRegistry.blocked_statuses].sort((left, right) => left.localeCompare(right))[0] ?? statusRegistry.open_status;
1523
+ return { dependencyValues, status: blockedStatus };
1524
+ }
1525
+ function applyCreateDefaultType(resolvedOptions, settings, typeRegistry) {
1526
+ const explicitStrictMode = typeof resolvedOptions.createMode === "string" && resolvedOptions.createMode.trim().toLowerCase() === "strict";
1527
+ if (explicitStrictMode) {
1528
+ return;
1529
+ }
1530
+ const defaultType = settings.governance.create_default_type?.trim();
1531
+ if (defaultType && defaultType.length > 0 && resolveTypeName(defaultType, typeRegistry)) {
1532
+ resolvedOptions.type = defaultType;
1533
+ return;
1534
+ }
1535
+ if (resolveTypeName("Task", typeRegistry)) {
1536
+ resolvedOptions.type = "Task";
1537
+ }
1538
+ }
1539
+ async function resolveCreateTypeSelection(options, global2, pmRoot, settings, typeRegistry) {
1540
+ let resolvedOptions = options;
1459
1541
  if (resolvedOptions.template !== void 0) {
1460
1542
  const templateName = resolvedOptions.template.trim();
1461
1543
  if (templateName.length === 0) {
@@ -1465,17 +1547,7 @@ async function runCreate(options, global2) {
1465
1547
  resolvedOptions = normalizeLegacyNoneCreateOptions(mergeCreateOptionsWithTemplate(templateOptions, resolvedOptions));
1466
1548
  }
1467
1549
  if (resolvedOptions.type === void 0) {
1468
- const explicitStrictMode = typeof resolvedOptions.createMode === "string" && resolvedOptions.createMode.trim().toLowerCase() === "strict";
1469
- if (!explicitStrictMode) {
1470
- const defaultType = settings.governance.create_default_type?.trim();
1471
- if (defaultType && defaultType.length > 0 && resolveTypeName(defaultType, typeRegistry)) {
1472
- resolvedOptions.type = defaultType;
1473
- } else {
1474
- if (resolveTypeName("Task", typeRegistry)) {
1475
- resolvedOptions.type = "Task";
1476
- }
1477
- }
1478
- }
1550
+ applyCreateDefaultType(resolvedOptions, settings, typeRegistry);
1479
1551
  }
1480
1552
  if (resolvedOptions.type === void 0) {
1481
1553
  throw new PmCliError("Missing required option --type <value>", EXIT_CODE.USAGE);
@@ -1502,90 +1574,22 @@ async function runCreate(options, global2) {
1502
1574
  throw new PmCliError(`--schedule-preset ${schedulePreset} is only supported for Reminder, Meeting, or Event types`, EXIT_CODE.USAGE);
1503
1575
  }
1504
1576
  const createMode = resolveEffectiveCreateMode(resolvedOptions.createMode, schedulePreset, settings.governance.create_mode_default);
1505
- const unsetTargets = parseCreateUnsetTargets(resolvedOptions.unset, runtimeFieldRegistry);
1577
+ return { resolvedOptions, typeDefinition, type, schedulePreset, createMode };
1578
+ }
1579
+ function collectCreateClearTargets(resolvedOptions, unsetTargets) {
1506
1580
  const explicitUnsets = new Set(unsetTargets.frontMatterKeys);
1507
1581
  const clearOptionKeys = new Set(unsetTargets.optionKeys);
1508
1582
  const clearCollectionDefinitions = [
1509
- {
1510
- enabled: resolvedOptions.clearDeps,
1511
- optionKey: "dep",
1512
- clearFlag: "--clear-deps",
1513
- valueFlag: "--dep",
1514
- values: resolvedOptions.dep,
1515
- frontMatterKey: "dependencies"
1516
- },
1517
- {
1518
- enabled: resolvedOptions.clearComments,
1519
- optionKey: "comment",
1520
- clearFlag: "--clear-comments",
1521
- valueFlag: "--comment",
1522
- values: resolvedOptions.comment,
1523
- frontMatterKey: "comments"
1524
- },
1525
- {
1526
- enabled: resolvedOptions.clearNotes,
1527
- optionKey: "note",
1528
- clearFlag: "--clear-notes",
1529
- valueFlag: "--note",
1530
- values: resolvedOptions.note,
1531
- frontMatterKey: "notes"
1532
- },
1533
- {
1534
- enabled: resolvedOptions.clearLearnings,
1535
- optionKey: "learning",
1536
- clearFlag: "--clear-learnings",
1537
- valueFlag: "--learning",
1538
- values: resolvedOptions.learning,
1539
- frontMatterKey: "learnings"
1540
- },
1541
- {
1542
- enabled: resolvedOptions.clearFiles,
1543
- optionKey: "file",
1544
- clearFlag: "--clear-files",
1545
- valueFlag: "--file",
1546
- values: resolvedOptions.file,
1547
- frontMatterKey: "files"
1548
- },
1549
- {
1550
- enabled: resolvedOptions.clearTests,
1551
- optionKey: "test",
1552
- clearFlag: "--clear-tests",
1553
- valueFlag: "--test",
1554
- values: resolvedOptions.test,
1555
- frontMatterKey: "tests"
1556
- },
1557
- {
1558
- enabled: resolvedOptions.clearDocs,
1559
- optionKey: "doc",
1560
- clearFlag: "--clear-docs",
1561
- valueFlag: "--doc",
1562
- values: resolvedOptions.doc,
1563
- frontMatterKey: "docs"
1564
- },
1565
- {
1566
- enabled: resolvedOptions.clearReminders,
1567
- optionKey: "reminder",
1568
- clearFlag: "--clear-reminders",
1569
- valueFlag: "--reminder",
1570
- values: resolvedOptions.reminder,
1571
- frontMatterKey: "reminders"
1572
- },
1573
- {
1574
- enabled: resolvedOptions.clearEvents,
1575
- optionKey: "event",
1576
- clearFlag: "--clear-events",
1577
- valueFlag: "--event",
1578
- values: resolvedOptions.event,
1579
- frontMatterKey: "events"
1580
- },
1581
- {
1582
- enabled: resolvedOptions.clearTypeOptions,
1583
- optionKey: "typeOption",
1584
- clearFlag: "--clear-type-options",
1585
- valueFlag: "--type-option",
1586
- values: resolvedOptions.typeOption,
1587
- frontMatterKey: "type_options"
1588
- }
1583
+ { enabled: resolvedOptions.clearDeps, optionKey: "dep", clearFlag: "--clear-deps", valueFlag: "--dep", values: resolvedOptions.dep, frontMatterKey: "dependencies" },
1584
+ { enabled: resolvedOptions.clearComments, optionKey: "comment", clearFlag: "--clear-comments", valueFlag: "--comment", values: resolvedOptions.comment, frontMatterKey: "comments" },
1585
+ { enabled: resolvedOptions.clearNotes, optionKey: "note", clearFlag: "--clear-notes", valueFlag: "--note", values: resolvedOptions.note, frontMatterKey: "notes" },
1586
+ { enabled: resolvedOptions.clearLearnings, optionKey: "learning", clearFlag: "--clear-learnings", valueFlag: "--learning", values: resolvedOptions.learning, frontMatterKey: "learnings" },
1587
+ { enabled: resolvedOptions.clearFiles, optionKey: "file", clearFlag: "--clear-files", valueFlag: "--file", values: resolvedOptions.file, frontMatterKey: "files" },
1588
+ { enabled: resolvedOptions.clearTests, optionKey: "test", clearFlag: "--clear-tests", valueFlag: "--test", values: resolvedOptions.test, frontMatterKey: "tests" },
1589
+ { enabled: resolvedOptions.clearDocs, optionKey: "doc", clearFlag: "--clear-docs", valueFlag: "--doc", values: resolvedOptions.doc, frontMatterKey: "docs" },
1590
+ { enabled: resolvedOptions.clearReminders, optionKey: "reminder", clearFlag: "--clear-reminders", valueFlag: "--reminder", values: resolvedOptions.reminder, frontMatterKey: "reminders" },
1591
+ { enabled: resolvedOptions.clearEvents, optionKey: "event", clearFlag: "--clear-events", valueFlag: "--event", values: resolvedOptions.event, frontMatterKey: "events" },
1592
+ { enabled: resolvedOptions.clearTypeOptions, optionKey: "typeOption", clearFlag: "--clear-type-options", valueFlag: "--type-option", values: resolvedOptions.typeOption, frontMatterKey: "type_options" }
1589
1593
  ];
1590
1594
  for (const definition of clearCollectionDefinitions) {
1591
1595
  if (!definition.enabled) {
@@ -1597,6 +1601,9 @@ async function runCreate(options, global2) {
1597
1601
  explicitUnsets.add(definition.frontMatterKey);
1598
1602
  clearOptionKeys.add(definition.optionKey);
1599
1603
  }
1604
+ return { explicitUnsets, clearOptionKeys };
1605
+ }
1606
+ function assertNoCreateScalarUnsetConflicts(resolvedOptions, unsetTargets) {
1600
1607
  const scalarOptionPresence = {
1601
1608
  tags: resolvedOptions.tags !== void 0,
1602
1609
  deadline: resolvedOptions.deadline !== void 0,
@@ -1642,10 +1649,12 @@ async function runCreate(options, global2) {
1642
1649
  const unsetField = CREATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey) ?? optionKey;
1643
1650
  throw new PmCliError(`Cannot combine --unset ${unsetField} with ${commandOptionFlagLabel("create", optionKey)}`, EXIT_CODE.USAGE);
1644
1651
  }
1645
- const assertNoLegacyScalarToken = (value2, optionKey) => {
1652
+ }
1653
+ function assertNoLegacyCreateScalarTokens(resolvedOptions) {
1654
+ const assertNoLegacyScalarToken = (value, optionKey) => {
1646
1655
  const unsetField = CREATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey);
1647
1656
  const hint = unsetField ? `Use --unset ${unsetField} to clear this field.` : void 0;
1648
- assertNoLegacyNoneToken(value2, commandOptionFlagLabel("create", optionKey), hint);
1657
+ assertNoLegacyNoneToken(value, commandOptionFlagLabel("create", optionKey), hint);
1649
1658
  };
1650
1659
  assertNoLegacyScalarToken(resolvedOptions.tags, "tags");
1651
1660
  assertNoLegacyScalarToken(resolvedOptions.deadline, "deadline");
@@ -1682,6 +1691,143 @@ async function runCreate(options, global2) {
1682
1691
  assertNoLegacyScalarToken(resolvedOptions.component, "component");
1683
1692
  assertNoLegacyScalarToken(resolvedOptions.regression, "regression");
1684
1693
  assertNoLegacyScalarToken(resolvedOptions.customerImpact, "customerImpact");
1694
+ }
1695
+ function assertNoCreateFieldUnsetConflicts(registeredItemFieldValues, runtimeCreateFieldValues, unsetTargets) {
1696
+ for (const fieldKey of Object.keys(registeredItemFieldValues)) {
1697
+ if (!unsetTargets.frontMatterKeys.has(fieldKey)) {
1698
+ continue;
1699
+ }
1700
+ throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_", "-")} with --field ${fieldKey}=...`, EXIT_CODE.USAGE);
1701
+ }
1702
+ for (const fieldKey of Object.keys(runtimeCreateFieldValues.values ?? {})) {
1703
+ if (!unsetTargets.frontMatterKeys.has(fieldKey)) {
1704
+ continue;
1705
+ }
1706
+ throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_", "-")} with its value flag`, EXIT_CODE.USAGE);
1707
+ }
1708
+ }
1709
+ function assertNoMissingRequiredCreateOptions(params) {
1710
+ const { combinedMissingFlags, typeDefinition, missingRequiredCreateFlags, missingRequiredTypeOptionKeys, openStatus, type, createMode } = params;
1711
+ if (combinedMissingFlags.length === 0) {
1712
+ return;
1713
+ }
1714
+ const nextValidExample = buildTypeSpecificCreateExample(typeDefinition, missingRequiredCreateFlags, missingRequiredTypeOptionKeys, openStatus);
1715
+ const nextSteps = [`Run "pm create --help --type ${type}" for type-aware required option guidance.`];
1716
+ if (combinedMissingFlags.includes("--title")) {
1717
+ nextSteps.push('Title can also be passed as the first positional argument (example: pm create "Your title" --type ' + type + ").");
1718
+ }
1719
+ if (createMode === "strict") {
1720
+ nextSteps.push('For staged onboarding, retry with "--create-mode progressive".');
1721
+ if (SCHEDULE_CREATE_PRESET_TYPES.has(type)) {
1722
+ nextSteps.push('For minimal scheduling inputs, try "--schedule-preset lightweight".');
1723
+ }
1724
+ }
1725
+ const errorMessage = combinedMissingFlags.length === 1 ? `Missing required option ${combinedMissingFlags[0]} for type "${type}"` : `Missing required options ${combinedMissingFlags.join(", ")} for type "${type}"`;
1726
+ throw new PmCliError(errorMessage, EXIT_CODE.USAGE, {
1727
+ code: "missing_required_option",
1728
+ required: `Provide all required create options and type options for type "${type}" in one invocation.`,
1729
+ examples: [nextValidExample],
1730
+ nextSteps,
1731
+ recovery: createMode === "strict" ? {
1732
+ recovery_mode: "compact",
1733
+ missing_required_fields: combinedMissingFlags,
1734
+ suggested_flags: ["--create-mode progressive", ...combinedMissingFlags]
1735
+ } : void 0
1736
+ });
1737
+ }
1738
+ function resolveCreateTags(unsetKeys, resolvedOptions) {
1739
+ if (unsetKeys.has("tags") && Array.isArray(resolvedOptions.addTags) && resolvedOptions.addTags.length > 0) {
1740
+ throw new PmCliError("Cannot combine --unset tags with --add-tags", EXIT_CODE.USAGE);
1741
+ }
1742
+ const baseTags = unsetKeys.has("tags") ? [] : resolvedOptions.tags !== void 0 ? parseTags(resolvedOptions.tags) : [];
1743
+ return mergeAdditiveTags(baseTags, resolvedOptions.addTags);
1744
+ }
1745
+ function resolveCreateOrder(unsetKeys, resolvedOptions) {
1746
+ if (resolvedOptions.order !== void 0 && resolvedOptions.rank !== void 0 && resolvedOptions.order !== resolvedOptions.rank) {
1747
+ throw new PmCliError("--order and --rank must match when both are provided", EXIT_CODE.USAGE);
1748
+ }
1749
+ const orderRaw = resolvedOptions.order ?? resolvedOptions.rank;
1750
+ const order = resolveUnsettableTransformed(unsetKeys, "order", orderRaw, (raw) => parseOptionalNumber(raw, "order"));
1751
+ if (order !== void 0 && !Number.isInteger(order)) {
1752
+ throw new PmCliError("Order must be an integer", EXIT_CODE.USAGE);
1753
+ }
1754
+ return order;
1755
+ }
1756
+ function resolveCreateCloseReason(status, statusRegistry, settings, resolvedOptions, resolution) {
1757
+ if (status !== statusRegistry.close_status || !settings.governance.require_close_reason) {
1758
+ return { closeReason: void 0, warnings: [] };
1759
+ }
1760
+ const messageText = typeof resolvedOptions.message === "string" ? resolvedOptions.message.trim() : "";
1761
+ const resolutionText = typeof resolution === "string" ? resolution.trim() : "";
1762
+ const closeReason = messageText || resolutionText || CREATE_DIRECT_CLOSE_REASON_DEFAULT;
1763
+ const warnings = messageText.length === 0 && resolutionText.length === 0 ? ["close_reason_defaulted"] : [];
1764
+ return { closeReason, warnings };
1765
+ }
1766
+ async function writeCreatedItem(params) {
1767
+ const { pmRoot, type, id, settings, typeRegistry, author, extensionFieldNames, afterDocument, beforeDocument, historyMessage, changedFields, nowValue } = params;
1768
+ const itemPath = getItemPath(pmRoot, type, id, settings.item_format, typeRegistry.type_to_folder);
1769
+ const historyPath = getHistoryPath(pmRoot, id);
1770
+ const lockRelease = await acquireLock(pmRoot, id, settings.locks.ttl_seconds, author, false, settings.governance.force_required_for_stale_lock);
1771
+ let hookWarnings = [];
1772
+ try {
1773
+ await writeFileAtomic(itemPath, serializeItemDocument(afterDocument, { format: settings.item_format, schema: settings.schema, extensionFieldNames }));
1774
+ try {
1775
+ const entry = createHistoryEntry({ nowIso: nowValue, author, op: "create", before: beforeDocument, after: afterDocument, message: historyMessage });
1776
+ await appendHistoryEntry(historyPath, entry);
1777
+ } catch (error) {
1778
+ await removeFileIfExists(itemPath);
1779
+ throw error;
1780
+ }
1781
+ hookWarnings = [
1782
+ ...await runActiveOnWriteHooks({
1783
+ path: itemPath,
1784
+ scope: "project",
1785
+ op: "create",
1786
+ item_id: afterDocument.metadata.id,
1787
+ item_type: afterDocument.metadata.type,
1788
+ before: beforeDocument,
1789
+ after: afterDocument,
1790
+ changed_fields: changedFields
1791
+ }),
1792
+ ...await runActiveOnWriteHooks({
1793
+ path: historyPath,
1794
+ scope: "project",
1795
+ op: "create:history",
1796
+ item_id: afterDocument.metadata.id,
1797
+ item_type: afterDocument.metadata.type,
1798
+ before: beforeDocument,
1799
+ after: afterDocument,
1800
+ changed_fields: changedFields
1801
+ })
1802
+ ];
1803
+ recordAfterCommandAffectedItem({
1804
+ id: afterDocument.metadata.id,
1805
+ op: "create",
1806
+ item_type: afterDocument.metadata.type,
1807
+ status: afterDocument.metadata.status,
1808
+ current: projectAfterCommandItemSnapshot(afterDocument.metadata, changedFields),
1809
+ changed_fields: changedFields
1810
+ });
1811
+ } finally {
1812
+ await lockRelease();
1813
+ }
1814
+ return hookWarnings;
1815
+ }
1816
+ async function runCreate(options, global2) {
1817
+ let resolvedOptions = normalizeLegacyNoneCreateOptions(await resolveCreateStdinInputs(options));
1818
+ const pmRoot = resolvePmRoot(process.cwd(), global2.path);
1819
+ await ensureInitHasRun(pmRoot);
1820
+ const settings = await readSettings(pmRoot);
1821
+ const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
1822
+ const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);
1823
+ const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
1824
+ const typeSelection = await resolveCreateTypeSelection(resolvedOptions, global2, pmRoot, settings, typeRegistry);
1825
+ resolvedOptions = typeSelection.resolvedOptions;
1826
+ const { typeDefinition, type, createMode } = typeSelection;
1827
+ const unsetTargets = parseCreateUnsetTargets(resolvedOptions.unset, runtimeFieldRegistry);
1828
+ const { explicitUnsets, clearOptionKeys } = collectCreateClearTargets(resolvedOptions, unsetTargets);
1829
+ assertNoCreateScalarUnsetConflicts(resolvedOptions, unsetTargets);
1830
+ assertNoLegacyCreateScalarTokens(resolvedOptions);
1685
1831
  const missingRequiredCreateFlags = requireCreateOptionByType(typeDefinition, resolvedOptions, createMode, clearOptionKeys);
1686
1832
  const nowValue = nowIso();
1687
1833
  const author = selectAuthor(resolvedOptions.author, settings.author_default);
@@ -1699,19 +1845,8 @@ async function runCreate(options, global2) {
1699
1845
  const extensionRegistrations = getActiveExtensionRegistrations();
1700
1846
  const extensionFieldNames = collectRegisteredItemFieldNames(extensionRegistrations);
1701
1847
  const registeredItemFieldValues = parseRegisteredItemFieldAssignments(resolvedOptions.field, extensionRegistrations);
1702
- for (const fieldKey of Object.keys(registeredItemFieldValues)) {
1703
- if (!unsetTargets.frontMatterKeys.has(fieldKey)) {
1704
- continue;
1705
- }
1706
- throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_", "-")} with --field ${fieldKey}=...`, EXIT_CODE.USAGE);
1707
- }
1708
1848
  const runtimeCreateFieldValues = collectRuntimeCreateFieldValues(resolvedOptions, runtimeFieldRegistry, type);
1709
- for (const fieldKey of Object.keys(runtimeCreateFieldValues.values ?? {})) {
1710
- if (!unsetTargets.frontMatterKeys.has(fieldKey)) {
1711
- continue;
1712
- }
1713
- throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_", "-")} with its value flag`, EXIT_CODE.USAGE);
1714
- }
1849
+ assertNoCreateFieldUnsetConflicts(registeredItemFieldValues, runtimeCreateFieldValues, unsetTargets);
1715
1850
  const missingRequiredTypeOptionKeys = collectMissingRequiredTypeOptionKeys(validatedTypeOptions.errors, type);
1716
1851
  const missingRequiredTypeOptionFlags = missingRequiredTypeOptionKeys.map((key) => `--type-option ${key}=<value>`);
1717
1852
  const combinedMissingFlags = [
@@ -1722,31 +1857,15 @@ async function runCreate(options, global2) {
1722
1857
  ...runtimeCreateFieldValues.missing_required_flags
1723
1858
  ])
1724
1859
  ].sort((left, right) => left.localeCompare(right));
1725
- if (combinedMissingFlags.length > 0) {
1726
- const nextValidExample = buildTypeSpecificCreateExample(typeDefinition, missingRequiredCreateFlags, missingRequiredTypeOptionKeys, statusRegistry.open_status);
1727
- const nextSteps = [`Run "pm create --help --type ${type}" for type-aware required option guidance.`];
1728
- if (combinedMissingFlags.includes("--title")) {
1729
- nextSteps.push('Title can also be passed as the first positional argument (example: pm create "Your title" --type ' + type + ").");
1730
- }
1731
- if (createMode === "strict") {
1732
- nextSteps.push('For staged onboarding, retry with "--create-mode progressive".');
1733
- if (SCHEDULE_CREATE_PRESET_TYPES.has(type)) {
1734
- nextSteps.push('For minimal scheduling inputs, try "--schedule-preset lightweight".');
1735
- }
1736
- }
1737
- const errorMessage = combinedMissingFlags.length === 1 ? `Missing required option ${combinedMissingFlags[0]} for type "${type}"` : `Missing required options ${combinedMissingFlags.join(", ")} for type "${type}"`;
1738
- throw new PmCliError(errorMessage, EXIT_CODE.USAGE, {
1739
- code: "missing_required_option",
1740
- required: `Provide all required create options and type options for type "${type}" in one invocation.`,
1741
- examples: [nextValidExample],
1742
- nextSteps,
1743
- recovery: createMode === "strict" ? {
1744
- recovery_mode: "compact",
1745
- missing_required_fields: combinedMissingFlags,
1746
- suggested_flags: ["--create-mode progressive", ...combinedMissingFlags]
1747
- } : void 0
1748
- });
1749
- }
1860
+ assertNoMissingRequiredCreateOptions({
1861
+ combinedMissingFlags,
1862
+ typeDefinition,
1863
+ missingRequiredCreateFlags,
1864
+ missingRequiredTypeOptionKeys,
1865
+ openStatus: statusRegistry.open_status,
1866
+ type,
1867
+ createMode
1868
+ });
1750
1869
  const nonMissingTypeOptionErrors = filterNonMissingTypeOptionErrors(validatedTypeOptions.errors, type);
1751
1870
  if (nonMissingTypeOptionErrors.length > 0) {
1752
1871
  const nextValidExample = buildTypeSpecificCreateExample(typeDefinition, [], [], statusRegistry.open_status);
@@ -1760,132 +1879,77 @@ async function runCreate(options, global2) {
1760
1879
  const id = await generateItemId(pmRoot, settings.id_prefix);
1761
1880
  let status = resolvedOptions.status !== void 0 ? parseStatusValue(resolvedOptions.status, statusRegistry) : resolveCreateDefaultStatus(typeDefinition, statusRegistry);
1762
1881
  const priority = resolvedOptions.priority !== void 0 ? ensurePriority(resolvedOptions.priority) : 2;
1763
- if (unsetTargets.frontMatterKeys.has("tags") && Array.isArray(resolvedOptions.addTags) && resolvedOptions.addTags.length > 0) {
1764
- throw new PmCliError("Cannot combine --unset tags with --add-tags", EXIT_CODE.USAGE);
1765
- }
1766
- const baseTags = unsetTargets.frontMatterKeys.has("tags") ? [] : resolvedOptions.tags !== void 0 ? parseTags(resolvedOptions.tags) : [];
1767
- const tags = mergeAdditiveTags(baseTags, resolvedOptions.addTags);
1768
- const deadline = unsetTargets.frontMatterKeys.has("deadline") ? void 0 : resolvedOptions.deadline === void 0 ? void 0 : resolveIsoOrRelative(resolvedOptions.deadline, new Date(nowValue), "deadline");
1769
- const estimatedMinutes = unsetTargets.frontMatterKeys.has("estimated_minutes") ? void 0 : resolvedOptions.estimatedMinutes === void 0 ? void 0 : parseOptionalNumber(resolvedOptions.estimatedMinutes, "estimated-minutes");
1770
- const acceptanceCriteria = unsetTargets.frontMatterKeys.has("acceptance_criteria") ? void 0 : resolvedOptions.acceptanceCriteria === void 0 ? void 0 : resolvedOptions.acceptanceCriteria;
1771
- const definitionOfReady = unsetTargets.frontMatterKeys.has("definition_of_ready") || resolvedOptions.definitionOfReady === void 0 ? void 0 : parseOptionalString(resolvedOptions.definitionOfReady);
1772
- if (resolvedOptions.order !== void 0 && resolvedOptions.rank !== void 0 && resolvedOptions.order !== resolvedOptions.rank) {
1773
- throw new PmCliError("--order and --rank must match when both are provided", EXIT_CODE.USAGE);
1774
- }
1775
- const orderRaw = resolvedOptions.order ?? resolvedOptions.rank;
1776
- const order = unsetTargets.frontMatterKeys.has("order") || orderRaw === void 0 ? void 0 : parseOptionalNumber(orderRaw, "order");
1777
- if (order !== void 0 && !Number.isInteger(order)) {
1778
- throw new PmCliError("Order must be an integer", EXIT_CODE.USAGE);
1779
- }
1780
- const goal = unsetTargets.frontMatterKeys.has("goal") || resolvedOptions.goal === void 0 ? void 0 : parseOptionalString(resolvedOptions.goal);
1781
- const objective = unsetTargets.frontMatterKeys.has("objective") || resolvedOptions.objective === void 0 ? void 0 : parseOptionalString(resolvedOptions.objective);
1782
- const value = unsetTargets.frontMatterKeys.has("value") || resolvedOptions.value === void 0 ? void 0 : parseOptionalString(resolvedOptions.value);
1783
- const impact = unsetTargets.frontMatterKeys.has("impact") || resolvedOptions.impact === void 0 ? void 0 : parseOptionalString(resolvedOptions.impact);
1784
- const outcome = unsetTargets.frontMatterKeys.has("outcome") || resolvedOptions.outcome === void 0 ? void 0 : parseOptionalString(resolvedOptions.outcome);
1785
- const whyNow = unsetTargets.frontMatterKeys.has("why_now") || resolvedOptions.whyNow === void 0 ? void 0 : parseOptionalString(resolvedOptions.whyNow);
1786
- const assignee = unsetTargets.frontMatterKeys.has("assignee") || resolvedOptions.assignee === void 0 ? void 0 : parseOptionalString(resolvedOptions.assignee);
1787
- const authorValue = unsetTargets.frontMatterKeys.has("author") ? void 0 : parseOptionalString(resolvedOptions.author) ?? author;
1788
- let parent = unsetTargets.frontMatterKeys.has("parent") || resolvedOptions.parent === void 0 ? void 0 : parseOptionalString(resolvedOptions.parent);
1789
- let parentSource;
1790
- if (parent === void 0 && !unsetTargets.frontMatterKeys.has("parent") && resolvedOptions.parent === void 0) {
1791
- const focused = await getFocusedItem(pmRoot);
1792
- if (focused !== void 0) {
1793
- parent = focused;
1794
- parentSource = "focus";
1795
- }
1796
- }
1797
- const reviewer = unsetTargets.frontMatterKeys.has("reviewer") || resolvedOptions.reviewer === void 0 ? void 0 : parseOptionalString(resolvedOptions.reviewer);
1798
- const riskRaw = unsetTargets.frontMatterKeys.has("risk") || resolvedOptions.risk === void 0 ? void 0 : parseOptionalString(resolvedOptions.risk);
1799
- const risk = riskRaw !== void 0 ? ensureEnumValue(normalizeRiskInput(riskRaw), RISK_VALUES, "risk") : void 0;
1800
- const confidenceRaw = unsetTargets.frontMatterKeys.has("confidence") || resolvedOptions.confidence === void 0 ? void 0 : parseOptionalString(resolvedOptions.confidence);
1801
- const confidence = confidenceRaw !== void 0 ? parseConfidenceInput(confidenceRaw) : void 0;
1882
+ const unsetKeys = unsetTargets.frontMatterKeys;
1883
+ const tags = resolveCreateTags(unsetKeys, resolvedOptions);
1884
+ const deadline = resolveUnsettableTransformed(unsetKeys, "deadline", resolvedOptions.deadline, (raw) => resolveIsoOrRelative(raw, new Date(nowValue), "deadline"));
1885
+ const estimatedMinutes = resolveUnsettableTransformed(unsetKeys, "estimated_minutes", resolvedOptions.estimatedMinutes, (raw) => parseOptionalNumber(raw, "estimated-minutes"));
1886
+ const acceptanceCriteria = resolveUnsettableOptionalString(unsetKeys, "acceptance_criteria", resolvedOptions.acceptanceCriteria);
1887
+ const definitionOfReady = resolveUnsettableOptionalString(unsetKeys, "definition_of_ready", resolvedOptions.definitionOfReady);
1888
+ const order = resolveCreateOrder(unsetKeys, resolvedOptions);
1889
+ const goal = resolveUnsettableOptionalString(unsetKeys, "goal", resolvedOptions.goal);
1890
+ const objective = resolveUnsettableOptionalString(unsetKeys, "objective", resolvedOptions.objective);
1891
+ const value = resolveUnsettableOptionalString(unsetKeys, "value", resolvedOptions.value);
1892
+ const impact = resolveUnsettableOptionalString(unsetKeys, "impact", resolvedOptions.impact);
1893
+ const outcome = resolveUnsettableOptionalString(unsetKeys, "outcome", resolvedOptions.outcome);
1894
+ const whyNow = resolveUnsettableOptionalString(unsetKeys, "why_now", resolvedOptions.whyNow);
1895
+ const assignee = resolveUnsettableOptionalString(unsetKeys, "assignee", resolvedOptions.assignee);
1896
+ const authorValue = unsetKeys.has("author") ? void 0 : parseOptionalString(resolvedOptions.author) ?? author;
1897
+ const initialParent = resolveUnsettableOptionalString(unsetKeys, "parent", resolvedOptions.parent);
1898
+ const inheritedParent = await inheritFocusedParent(initialParent, resolvedOptions, unsetKeys, pmRoot);
1899
+ let parent = inheritedParent.parent;
1900
+ const parentSource = inheritedParent.parentSource;
1901
+ const reviewer = resolveUnsettableOptionalString(unsetKeys, "reviewer", resolvedOptions.reviewer);
1902
+ const risk = resolveUnsettableTransformed(unsetKeys, "risk", resolvedOptions.risk, (raw) => ensureEnumValue(normalizeRiskInput(raw), RISK_VALUES, "risk"));
1903
+ const confidence = resolveUnsettableTransformed(unsetKeys, "confidence", resolvedOptions.confidence, (raw) => parseConfidenceInput(raw));
1802
1904
  const parentReferencePolicy = resolvedOptions.allowMissingParent === true && settings.validation.parent_reference === "strict_error" ? "warn" : settings.validation.parent_reference;
1803
1905
  const sprintReleasePolicy = settings.validation.sprint_release_format;
1804
- const validationWarnings = [];
1805
- if (type.toLowerCase() === "event" && (events.values === void 0 || events.values.length === 0)) {
1806
- validationWarnings.push(`event_without_schedule:${id}:no_time_set`);
1807
- }
1808
- const calendarRelevantTypes = /* @__PURE__ */ new Set(["milestone", "meeting", "reminder", "event"]);
1809
- const hasDeadline = deadline !== void 0;
1810
- const hasReminders = reminders.values !== void 0 && reminders.values.length > 0;
1811
- const hasEvents = events.values !== void 0 && events.values.length > 0;
1812
- if (calendarRelevantTypes.has(type.toLowerCase()) && !hasDeadline && !hasReminders && !hasEvents) {
1813
- 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)`);
1814
- }
1906
+ const validationWarnings = collectCreateScheduleWarnings(type, id, deadline, reminders.values, events.values);
1815
1907
  if (parent !== void 0) {
1816
- parent = normalizeParentReferenceValue(parent);
1817
- const parentLocated = await locateItem(pmRoot, parent, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1818
- if (!parentLocated) {
1819
- const normalizedParentId = normalizeItemId(parent, settings.id_prefix);
1820
- validationWarnings.push(...validateMissingParentReference(normalizedParentId, parentReferencePolicy).warnings);
1821
- }
1822
- }
1823
- let sprint = unsetTargets.frontMatterKeys.has("sprint") || resolvedOptions.sprint === void 0 ? void 0 : parseOptionalString(resolvedOptions.sprint);
1824
- if (sprint !== void 0) {
1825
- const sprintValidation = validateSprintOrReleaseValue("sprint", sprint, sprintReleasePolicy);
1826
- sprint = sprintValidation.value;
1827
- validationWarnings.push(...sprintValidation.warnings);
1828
- }
1829
- let release = unsetTargets.frontMatterKeys.has("release") || resolvedOptions.release === void 0 ? void 0 : parseOptionalString(resolvedOptions.release);
1830
- if (release !== void 0) {
1831
- const releaseValidation = validateSprintOrReleaseValue("release", release, sprintReleasePolicy);
1832
- release = releaseValidation.value;
1833
- validationWarnings.push(...releaseValidation.warnings);
1834
- }
1835
- const blockedBy = unsetTargets.frontMatterKeys.has("blocked_by") || resolvedOptions.blockedBy === void 0 ? void 0 : parseOptionalString(resolvedOptions.blockedBy);
1836
- let dependencyValues = dependencies.values;
1837
- if (blockedBy !== void 0) {
1838
- const normalizedBlockedBy = normalizeItemId(blockedBy, settings.id_prefix);
1839
- const blockedByLocated = await locateItem(pmRoot, normalizedBlockedBy, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
1840
- if (blockedByLocated) {
1841
- const hasBlockedByDependency = (dependencyValues ?? []).some((dependency) => dependency.id === blockedByLocated.id && dependency.kind === "blocked_by");
1842
- if (!hasBlockedByDependency) {
1843
- dependencyValues = [
1844
- ...dependencyValues ?? [],
1845
- {
1846
- id: blockedByLocated.id,
1847
- kind: "blocked_by",
1848
- created_at: nowValue,
1849
- author
1850
- }
1851
- ];
1852
- }
1853
- if (resolvedOptions.status === void 0) {
1854
- status = statusRegistry.blocked_statuses.has("blocked") ? "blocked" : [...statusRegistry.blocked_statuses].sort((left, right) => left.localeCompare(right))[0] ?? statusRegistry.open_status;
1855
- }
1856
- }
1857
- }
1858
- const blockedReason = unsetTargets.frontMatterKeys.has("blocked_reason") || resolvedOptions.blockedReason === void 0 ? void 0 : parseOptionalString(resolvedOptions.blockedReason);
1859
- const unblockNote = unsetTargets.frontMatterKeys.has("unblock_note") || resolvedOptions.unblockNote === void 0 ? void 0 : parseOptionalString(resolvedOptions.unblockNote);
1860
- const reporter = (
1861
- /* c8 ignore next -- reporter normalization branch is covered in issue-template integration tests. */
1862
- unsetTargets.frontMatterKeys.has("reporter") || resolvedOptions.reporter === void 0 ? void 0 : parseOptionalString(resolvedOptions.reporter)
1863
- );
1864
- const severityRaw = unsetTargets.frontMatterKeys.has("severity") || resolvedOptions.severity === void 0 ? void 0 : parseOptionalString(resolvedOptions.severity);
1865
- const severity = severityRaw !== void 0 ? ensureEnumValue(normalizeSeverityInput(severityRaw), ISSUE_SEVERITY_VALUES, "severity") : void 0;
1866
- const environment = unsetTargets.frontMatterKeys.has("environment") || resolvedOptions.environment === void 0 ? void 0 : parseOptionalString(resolvedOptions.environment);
1867
- const reproSteps = unsetTargets.frontMatterKeys.has("repro_steps") || resolvedOptions.reproSteps === void 0 ? void 0 : parseOptionalString(resolvedOptions.reproSteps);
1868
- const resolution = unsetTargets.frontMatterKeys.has("resolution") || resolvedOptions.resolution === void 0 ? void 0 : parseOptionalString(resolvedOptions.resolution);
1869
- const expectedResult = unsetTargets.frontMatterKeys.has("expected_result") || resolvedOptions.expectedResult === void 0 ? void 0 : parseOptionalString(resolvedOptions.expectedResult);
1870
- const actualResult = unsetTargets.frontMatterKeys.has("actual_result") || resolvedOptions.actualResult === void 0 ? void 0 : parseOptionalString(resolvedOptions.actualResult);
1871
- const affectedVersion = unsetTargets.frontMatterKeys.has("affected_version") || resolvedOptions.affectedVersion === void 0 ? void 0 : parseOptionalString(resolvedOptions.affectedVersion);
1872
- const fixedVersion = unsetTargets.frontMatterKeys.has("fixed_version") || resolvedOptions.fixedVersion === void 0 ? void 0 : parseOptionalString(resolvedOptions.fixedVersion);
1873
- const component = unsetTargets.frontMatterKeys.has("component") || resolvedOptions.component === void 0 ? void 0 : parseOptionalString(resolvedOptions.component);
1874
- const regressionRaw = unsetTargets.frontMatterKeys.has("regression") || resolvedOptions.regression === void 0 ? void 0 : parseOptionalString(resolvedOptions.regression);
1875
- const regression = regressionRaw !== void 0 ? parseRegressionInput(regressionRaw) : void 0;
1876
- const customerImpact = unsetTargets.frontMatterKeys.has("customer_impact") || resolvedOptions.customerImpact === void 0 ? void 0 : parseOptionalString(resolvedOptions.customerImpact);
1908
+ const parentValidation = await validateCreateParentReference(pmRoot, settings, typeRegistry, parent, parentReferencePolicy);
1909
+ parent = parentValidation.parent;
1910
+ validationWarnings.push(...parentValidation.warnings);
1911
+ }
1912
+ const sprintResolved = resolveCreateSprintOrRelease(unsetKeys, "sprint", resolvedOptions.sprint, "sprint", sprintReleasePolicy);
1913
+ const sprint = sprintResolved.value;
1914
+ validationWarnings.push(...sprintResolved.warnings);
1915
+ const releaseResolved = resolveCreateSprintOrRelease(unsetKeys, "release", resolvedOptions.release, "release", sprintReleasePolicy);
1916
+ const release = releaseResolved.value;
1917
+ validationWarnings.push(...releaseResolved.warnings);
1918
+ const blockedBy = resolveUnsettableOptionalString(unsetKeys, "blocked_by", resolvedOptions.blockedBy);
1919
+ const blockedByResolution = await resolveCreateBlockedByDependency({
1920
+ pmRoot,
1921
+ settings,
1922
+ typeRegistry,
1923
+ statusRegistry,
1924
+ blockedBy,
1925
+ dependencyValues: dependencies.values,
1926
+ status,
1927
+ statusExplicit: resolvedOptions.status !== void 0,
1928
+ nowValue,
1929
+ author
1930
+ });
1931
+ const dependencyValues = blockedByResolution.dependencyValues;
1932
+ status = blockedByResolution.status;
1933
+ const blockedReason = resolveUnsettableOptionalString(unsetKeys, "blocked_reason", resolvedOptions.blockedReason);
1934
+ const unblockNote = resolveUnsettableOptionalString(unsetKeys, "unblock_note", resolvedOptions.unblockNote);
1935
+ const reporter = resolveUnsettableOptionalString(unsetKeys, "reporter", resolvedOptions.reporter);
1936
+ const severity = resolveUnsettableTransformed(unsetKeys, "severity", resolvedOptions.severity, (raw) => ensureEnumValue(normalizeSeverityInput(raw), ISSUE_SEVERITY_VALUES, "severity"));
1937
+ const environment = resolveUnsettableOptionalString(unsetKeys, "environment", resolvedOptions.environment);
1938
+ const reproSteps = resolveUnsettableOptionalString(unsetKeys, "repro_steps", resolvedOptions.reproSteps);
1939
+ const resolution = resolveUnsettableOptionalString(unsetKeys, "resolution", resolvedOptions.resolution);
1940
+ const expectedResult = resolveUnsettableOptionalString(unsetKeys, "expected_result", resolvedOptions.expectedResult);
1941
+ const actualResult = resolveUnsettableOptionalString(unsetKeys, "actual_result", resolvedOptions.actualResult);
1942
+ const affectedVersion = resolveUnsettableOptionalString(unsetKeys, "affected_version", resolvedOptions.affectedVersion);
1943
+ const fixedVersion = resolveUnsettableOptionalString(unsetKeys, "fixed_version", resolvedOptions.fixedVersion);
1944
+ const component = resolveUnsettableOptionalString(unsetKeys, "component", resolvedOptions.component);
1945
+ const regression = resolveUnsettableTransformed(unsetKeys, "regression", resolvedOptions.regression, (raw) => parseRegressionInput(raw));
1946
+ const customerImpact = resolveUnsettableOptionalString(unsetKeys, "customer_impact", resolvedOptions.customerImpact);
1877
1947
  const title = requireStringOption(resolvedOptions.title, "--title");
1878
1948
  const description = resolvedOptions.description ?? "";
1879
1949
  const body = resolvedOptions.body ?? "";
1880
- let closeReason;
1881
- if (status === statusRegistry.close_status && settings.governance.require_close_reason) {
1882
- const messageText = typeof resolvedOptions.message === "string" ? resolvedOptions.message.trim() : "";
1883
- const resolutionText = typeof resolution === "string" ? resolution.trim() : "";
1884
- closeReason = messageText || resolutionText || CREATE_DIRECT_CLOSE_REASON_DEFAULT;
1885
- if (messageText.length === 0 && resolutionText.length === 0) {
1886
- validationWarnings.push("close_reason_defaulted");
1887
- }
1888
- }
1950
+ const closeReasonResolution = resolveCreateCloseReason(status, statusRegistry, settings, resolvedOptions, resolution);
1951
+ const closeReason = closeReasonResolution.closeReason;
1952
+ validationWarnings.push(...closeReasonResolution.warnings);
1889
1953
  const frontMatter = normalizeFrontMatter({
1890
1954
  id,
1891
1955
  title,
@@ -1957,9 +2021,6 @@ async function runCreate(options, global2) {
1957
2021
  metadata: {},
1958
2022
  body: ""
1959
2023
  };
1960
- const itemPath = getItemPath(pmRoot, type, id, settings.item_format, typeRegistry.type_to_folder);
1961
- const historyPath = getHistoryPath(pmRoot, id);
1962
- const lockRelease = await acquireLock(pmRoot, id, settings.locks.ttl_seconds, author, false, settings.governance.force_required_for_stale_lock);
1963
2024
  const explicitUnsetKeys = [...explicitUnsets].sort((left, right) => left.localeCompare(right));
1964
2025
  const historyMessage = buildHistoryMessage(resolvedOptions.message, explicitUnsetKeys);
1965
2026
  const changedFields = buildChangedFields(frontMatter, body, explicitUnsetKeys, [
@@ -1968,63 +2029,23 @@ async function runCreate(options, global2) {
1968
2029
  ...Object.keys(runtimeCreateFieldValues.values ?? {})
1969
2030
  /* c8 ignore stop */
1970
2031
  ]);
1971
- let hookWarnings = [];
1972
- try {
1973
- await writeFileAtomic(itemPath, serializeItemDocument(afterDocument, {
1974
- format: settings.item_format,
1975
- schema: settings.schema,
1976
- extensionFieldNames
1977
- }));
1978
- try {
1979
- const entry = createHistoryEntry({
1980
- nowIso: nowValue,
1981
- author,
1982
- op: "create",
1983
- before: beforeDocument,
1984
- after: afterDocument,
1985
- message: historyMessage
1986
- });
1987
- await appendHistoryEntry(historyPath, entry);
1988
- } catch (error) {
1989
- await removeFileIfExists(itemPath);
1990
- throw error;
1991
- }
1992
- hookWarnings = [
1993
- ...await runActiveOnWriteHooks({
1994
- path: itemPath,
1995
- scope: "project",
1996
- op: "create",
1997
- item_id: afterDocument.metadata.id,
1998
- item_type: afterDocument.metadata.type,
1999
- before: beforeDocument,
2000
- after: afterDocument,
2001
- changed_fields: changedFields
2002
- }),
2003
- ...await runActiveOnWriteHooks({
2004
- path: historyPath,
2005
- scope: "project",
2006
- op: "create:history",
2007
- item_id: afterDocument.metadata.id,
2008
- item_type: afterDocument.metadata.type,
2009
- before: beforeDocument,
2010
- after: afterDocument,
2011
- changed_fields: changedFields
2012
- })
2013
- ];
2014
- recordAfterCommandAffectedItem({
2015
- id: afterDocument.metadata.id,
2016
- op: "create",
2017
- item_type: afterDocument.metadata.type,
2018
- status: afterDocument.metadata.status,
2019
- current: projectAfterCommandItemSnapshot(afterDocument.metadata, changedFields),
2020
- changed_fields: changedFields
2021
- });
2022
- } finally {
2023
- await lockRelease();
2024
- }
2032
+ const hookWarnings = await writeCreatedItem({
2033
+ pmRoot,
2034
+ type,
2035
+ id,
2036
+ settings,
2037
+ typeRegistry,
2038
+ author,
2039
+ extensionFieldNames,
2040
+ afterDocument,
2041
+ beforeDocument,
2042
+ historyMessage,
2043
+ changedFields,
2044
+ nowValue
2045
+ });
2025
2046
  const outputItem = structuredClone(frontMatter);
2026
2047
  const nextTransition = suggestNextLifecycleTransition(id, type, status, statusRegistry);
2027
- if (calendarRelevantTypes.has(type.toLowerCase()) && !hasDeadline && !hasReminders && !hasEvents) {
2048
+ if (createItemLacksSchedule(type, deadline, reminders.values, events.values)) {
2028
2049
  printError(`[pm] warning: ${type} '${id}' has no deadline/reminder/event \u2014 it will not appear on the calendar. Add one via 'pm update ${id} --deadline <ISO>' or 'pm update ${id} --event "start=<ISO>,end=<ISO>"'.`);
2029
2050
  }
2030
2051
  return {
@@ -2081,4 +2102,4 @@ export {
2081
2102
  runCreate,
2082
2103
  _testOnlyCreateCommand
2083
2104
  };
2084
- //# sourceMappingURL=chunk-5T6WPLRO.js.map
2105
+ //# sourceMappingURL=chunk-VARHOHYV.js.map