@unbrained/pm-cli 2026.6.24 → 2026.6.30

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 (712) hide show
  1. package/CHANGELOG.md +93 -1
  2. package/CONTRIBUTING.md +30 -0
  3. package/README.md +16 -3
  4. package/dist/cli/commander-usage.js +3 -3
  5. package/dist/cli/commander-usage.js.map +1 -1
  6. package/dist/cli/commands/aggregate.js +8 -7
  7. package/dist/cli/commands/aggregate.js.map +1 -1
  8. package/dist/cli/commands/close.d.ts +2 -4
  9. package/dist/cli/commands/close.js +5 -17
  10. package/dist/cli/commands/close.js.map +1 -1
  11. package/dist/cli/commands/completion.js +158 -9
  12. package/dist/cli/commands/completion.js.map +1 -1
  13. package/dist/cli/commands/config.d.ts +1 -1
  14. package/dist/cli/commands/config.js +2 -2
  15. package/dist/cli/commands/config.js.map +1 -1
  16. package/dist/cli/commands/context.d.ts +31 -4
  17. package/dist/cli/commands/context.js +33 -10
  18. package/dist/cli/commands/context.js.map +1 -1
  19. package/dist/cli/commands/contracts.js +48 -8
  20. package/dist/cli/commands/contracts.js.map +1 -1
  21. package/dist/cli/commands/create.d.ts +1 -6
  22. package/dist/cli/commands/create.js +10 -155
  23. package/dist/cli/commands/create.js.map +1 -1
  24. package/dist/cli/commands/extension/describe.d.ts +15 -0
  25. package/dist/cli/commands/extension/describe.js +48 -2
  26. package/dist/cli/commands/extension/describe.js.map +1 -1
  27. package/dist/cli/commands/extension/doctor.js +5 -2
  28. package/dist/cli/commands/extension/doctor.js.map +1 -1
  29. package/dist/cli/commands/extension/install-sources.js +37 -7
  30. package/dist/cli/commands/extension/install-sources.js.map +1 -1
  31. package/dist/cli/commands/extension/scaffold.d.ts +31 -8
  32. package/dist/cli/commands/extension/scaffold.js +1891 -205
  33. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  34. package/dist/cli/commands/extension.d.ts +22 -2
  35. package/dist/cli/commands/extension.js +186 -17
  36. package/dist/cli/commands/extension.js.map +1 -1
  37. package/dist/cli/commands/index.d.ts +3 -1
  38. package/dist/cli/commands/index.js +5 -3
  39. package/dist/cli/commands/index.js.map +1 -1
  40. package/dist/cli/commands/item-filter-options.d.ts +63 -0
  41. package/dist/cli/commands/item-filter-options.js +10 -0
  42. package/dist/cli/commands/item-filter-options.js.map +1 -0
  43. package/dist/cli/commands/legacy-none-tokens.d.ts +14 -0
  44. package/dist/cli/commands/legacy-none-tokens.js +31 -2
  45. package/dist/cli/commands/legacy-none-tokens.js.map +1 -1
  46. package/dist/cli/commands/linked-artifacts.d.ts +7 -0
  47. package/dist/cli/commands/linked-artifacts.js +12 -2
  48. package/dist/cli/commands/linked-artifacts.js.map +1 -1
  49. package/dist/cli/commands/list.d.ts +16 -39
  50. package/dist/cli/commands/list.js +127 -118
  51. package/dist/cli/commands/list.js.map +1 -1
  52. package/dist/cli/commands/next.d.ts +98 -0
  53. package/dist/cli/commands/next.js +304 -0
  54. package/dist/cli/commands/next.js.map +1 -0
  55. package/dist/cli/commands/profile.d.ts +208 -0
  56. package/dist/cli/commands/profile.js +418 -0
  57. package/dist/cli/commands/profile.js.map +1 -0
  58. package/dist/cli/commands/repeatable-metadata-parsers.js +12 -13
  59. package/dist/cli/commands/repeatable-metadata-parsers.js.map +1 -1
  60. package/dist/cli/commands/schema.d.ts +7 -0
  61. package/dist/cli/commands/schema.js +9 -3
  62. package/dist/cli/commands/schema.js.map +1 -1
  63. package/dist/cli/commands/search.d.ts +2 -39
  64. package/dist/cli/commands/search.js +104 -106
  65. package/dist/cli/commands/search.js.map +1 -1
  66. package/dist/cli/commands/shared-unset-fields.d.ts +30 -0
  67. package/dist/cli/commands/shared-unset-fields.js +161 -0
  68. package/dist/cli/commands/shared-unset-fields.js.map +1 -0
  69. package/dist/cli/commands/stats.js +15 -3
  70. package/dist/cli/commands/stats.js.map +1 -1
  71. package/dist/cli/commands/test.js +9 -5
  72. package/dist/cli/commands/test.js.map +1 -1
  73. package/dist/cli/commands/update.d.ts +1 -6
  74. package/dist/cli/commands/update.js +12 -157
  75. package/dist/cli/commands/update.js.map +1 -1
  76. package/dist/cli/commands/validate.js +20 -5
  77. package/dist/cli/commands/validate.js.map +1 -1
  78. package/dist/cli/help-content.js +26 -2
  79. package/dist/cli/help-content.js.map +1 -1
  80. package/dist/cli/help-json-payload.js +3 -3
  81. package/dist/cli/help-json-payload.js.map +1 -1
  82. package/dist/cli/main.js +27 -12
  83. package/dist/cli/main.js.map +1 -1
  84. package/dist/cli/register-list-query.js +42 -3
  85. package/dist/cli/register-list-query.js.map +1 -1
  86. package/dist/cli/register-mutation.js +86 -2
  87. package/dist/cli/register-mutation.js.map +1 -1
  88. package/dist/cli/register-setup.js +67 -6
  89. package/dist/cli/register-setup.js.map +1 -1
  90. package/dist/cli/registration-helpers.d.ts +9 -1
  91. package/dist/cli/registration-helpers.js +34 -3
  92. package/dist/cli/registration-helpers.js.map +1 -1
  93. package/dist/cli-bundle/chunks/activity-EJBMXUBH.js +16 -0
  94. package/dist/cli-bundle/chunks/{activity-N7RVTLBQ.js → activity-MVSEND6D.js} +9 -11
  95. package/dist/cli-bundle/chunks/{aggregate-63NWNIBR.js → aggregate-MOC4TR2G.js} +16 -17
  96. package/dist/cli-bundle/chunks/aggregate-MOC4TR2G.js.map +1 -0
  97. package/dist/cli-bundle/chunks/{aggregate-YHCYX2EV.js → aggregate-XJHLZQ5X.js} +15 -16
  98. package/dist/cli-bundle/chunks/aggregate-XJHLZQ5X.js.map +7 -0
  99. package/dist/cli-bundle/chunks/{append-PUKREFV5.js → append-KDHT4GHI.js} +10 -12
  100. package/dist/cli-bundle/chunks/{append-PUKREFV5.js.map → append-KDHT4GHI.js.map} +1 -1
  101. package/dist/cli-bundle/chunks/{append-VLQQDHMJ.js → append-LEDBAM3K.js} +8 -10
  102. package/dist/cli-bundle/chunks/{append-VLQQDHMJ.js.map → append-LEDBAM3K.js.map} +1 -1
  103. package/dist/cli-bundle/chunks/{chunk-F32L4HR6.js → chunk-3JWQCLR5.js} +3 -3
  104. package/dist/cli-bundle/chunks/{chunk-YV2OSAMS.js → chunk-4TXTVZL3.js} +2 -2
  105. package/dist/cli-bundle/chunks/{chunk-AYPQUFCX.js → chunk-4YIMPANT.js} +3 -3
  106. package/dist/cli-bundle/chunks/{chunk-ALKFCIIB.js → chunk-53ARXF2O.js} +9 -11
  107. package/dist/cli-bundle/chunks/{chunk-ALKFCIIB.js.map → chunk-53ARXF2O.js.map} +1 -1
  108. package/dist/cli-bundle/chunks/chunk-5ABGFWR4.js +116 -0
  109. package/dist/cli-bundle/chunks/chunk-5ABGFWR4.js.map +1 -0
  110. package/dist/cli-bundle/chunks/{chunk-OF7V47P3.js → chunk-5IRVSKPS.js} +2990 -2890
  111. package/dist/cli-bundle/chunks/chunk-5IRVSKPS.js.map +1 -0
  112. package/dist/cli-bundle/chunks/{chunk-XXKV4UWE.js → chunk-5T6WPLRO.js} +233 -190
  113. package/dist/cli-bundle/chunks/chunk-5T6WPLRO.js.map +7 -0
  114. package/dist/cli-bundle/chunks/{chunk-SMXSDY7J.js → chunk-6T5ZIWBS.js} +3011 -2888
  115. package/dist/cli-bundle/chunks/chunk-6T5ZIWBS.js.map +7 -0
  116. package/dist/cli-bundle/chunks/{chunk-RAWA3Y7O.js → chunk-6YRAMXRS.js} +111 -114
  117. package/dist/cli-bundle/chunks/chunk-6YRAMXRS.js.map +1 -0
  118. package/dist/cli-bundle/chunks/{chunk-EOGBMLCE.js → chunk-73PTKMAE.js} +3 -3
  119. package/dist/cli-bundle/chunks/{chunk-GQYJEEFX.js → chunk-74PUWBGN.js} +53 -54
  120. package/dist/cli-bundle/chunks/chunk-74PUWBGN.js.map +1 -0
  121. package/dist/cli-bundle/chunks/{chunk-JV27C7OZ.js → chunk-7L6TXOOC.js} +4 -6
  122. package/dist/cli-bundle/chunks/{chunk-JV27C7OZ.js.map → chunk-7L6TXOOC.js.map} +1 -1
  123. package/dist/cli-bundle/chunks/chunk-7M2HAZEB.js +17 -0
  124. package/dist/cli-bundle/chunks/chunk-7M2HAZEB.js.map +7 -0
  125. package/dist/cli-bundle/chunks/{chunk-2WCYE3IF.js → chunk-7RIJGN4R.js} +2 -2
  126. package/dist/cli-bundle/chunks/{chunk-JKL6HRMV.js → chunk-7WDETKGP.js} +191 -117
  127. package/dist/cli-bundle/chunks/chunk-7WDETKGP.js.map +7 -0
  128. package/dist/cli-bundle/chunks/{chunk-HBAEFWX3.js → chunk-A3UNLXNJ.js} +40 -260
  129. package/dist/cli-bundle/chunks/chunk-A3UNLXNJ.js.map +7 -0
  130. package/dist/cli-bundle/chunks/{chunk-6EBNFQOR.js → chunk-AWN4PPH5.js} +10 -14
  131. package/dist/cli-bundle/chunks/{chunk-6EBNFQOR.js.map → chunk-AWN4PPH5.js.map} +1 -1
  132. package/dist/cli-bundle/chunks/{chunk-CZIFFMZI.js → chunk-BN3CWK6G.js} +2 -2
  133. package/dist/cli-bundle/chunks/{chunk-SUREE24M.js → chunk-BOWQWXLI.js} +12 -24
  134. package/dist/cli-bundle/chunks/chunk-BOWQWXLI.js.map +1 -0
  135. package/dist/cli-bundle/chunks/{chunk-J3NMWFIN.js → chunk-C2KCIZKZ.js} +2 -2
  136. package/dist/cli-bundle/chunks/{chunk-TIM4OD74.js → chunk-CHRNYKNI.js} +2 -2
  137. package/dist/cli-bundle/chunks/{chunk-VSAABFGQ.js → chunk-CY5IJMUM.js} +1136 -419
  138. package/dist/cli-bundle/chunks/chunk-CY5IJMUM.js.map +1 -0
  139. package/dist/cli-bundle/chunks/chunk-CZVISY5A.js +87 -0
  140. package/dist/cli-bundle/chunks/chunk-CZVISY5A.js.map +7 -0
  141. package/dist/cli-bundle/chunks/{chunk-UACWNBL2.js → chunk-D5LYZVGB.js} +7 -9
  142. package/dist/cli-bundle/chunks/{chunk-UACWNBL2.js.map → chunk-D5LYZVGB.js.map} +1 -1
  143. package/dist/cli-bundle/chunks/{chunk-KIEAK7YE.js → chunk-D6USKAMA.js} +2 -2
  144. package/dist/cli-bundle/chunks/{context-5LB7UGKE.js → chunk-DJDXAU74.js} +19 -21
  145. package/dist/cli-bundle/chunks/chunk-DJDXAU74.js.map +7 -0
  146. package/dist/cli-bundle/chunks/{chunk-3BKH2CL3.js → chunk-DLDCPF5X.js} +3 -3
  147. package/dist/cli-bundle/chunks/{chunk-J7I4C5ZB.js → chunk-DORJSBGJ.js} +35 -9
  148. package/dist/cli-bundle/chunks/chunk-DORJSBGJ.js.map +7 -0
  149. package/dist/cli-bundle/chunks/{chunk-DTABLLVE.js → chunk-DRPF274X.js} +5 -7
  150. package/dist/cli-bundle/chunks/{chunk-DTABLLVE.js.map → chunk-DRPF274X.js.map} +2 -2
  151. package/dist/cli-bundle/chunks/{chunk-6EL7SW5C.js → chunk-DU66JUGT.js} +16 -14
  152. package/dist/cli-bundle/chunks/chunk-DU66JUGT.js.map +7 -0
  153. package/dist/cli-bundle/chunks/{chunk-CG3KP6I5.js → chunk-E2Q2ULMR.js} +4 -4
  154. package/dist/cli-bundle/chunks/{chunk-A66VYUOV.js → chunk-EVWYAG46.js} +9 -11
  155. package/dist/cli-bundle/chunks/{chunk-A66VYUOV.js.map → chunk-EVWYAG46.js.map} +1 -1
  156. package/dist/cli-bundle/chunks/{chunk-PEL2NLQE.js → chunk-F6VH3LFC.js} +2 -2
  157. package/dist/cli-bundle/chunks/{chunk-AEACLRVH.js → chunk-F7G53BOA.js} +18 -11
  158. package/dist/cli-bundle/chunks/chunk-F7G53BOA.js.map +7 -0
  159. package/dist/cli-bundle/chunks/{chunk-ABYCA5VX.js → chunk-FBZ5XAAF.js} +9 -11
  160. package/dist/cli-bundle/chunks/{chunk-ABYCA5VX.js.map → chunk-FBZ5XAAF.js.map} +1 -1
  161. package/dist/cli-bundle/chunks/{chunk-5BBEWX6C.js → chunk-FDEVKXC4.js} +2 -2
  162. package/dist/cli-bundle/chunks/{chunk-4XDGYFHL.js → chunk-GF7EAR22.js} +10 -14
  163. package/dist/cli-bundle/chunks/{chunk-4XDGYFHL.js.map → chunk-GF7EAR22.js.map} +1 -1
  164. package/dist/cli-bundle/chunks/{context-55VEOYI3.js → chunk-HIBK6H4S.js} +20 -22
  165. package/dist/cli-bundle/chunks/chunk-HIBK6H4S.js.map +1 -0
  166. package/dist/cli-bundle/chunks/{chunk-QOUOMPHO.js → chunk-HUYYMTGW.js} +2 -2
  167. package/dist/cli-bundle/chunks/chunk-IBMFIKVS.js +14 -0
  168. package/dist/cli-bundle/chunks/chunk-IBMFIKVS.js.map +1 -0
  169. package/dist/cli-bundle/chunks/{chunk-LU36E6GU.js → chunk-IBU2LLWM.js} +8 -12
  170. package/dist/cli-bundle/chunks/{chunk-LU36E6GU.js.map → chunk-IBU2LLWM.js.map} +1 -1
  171. package/dist/cli-bundle/chunks/{chunk-MEXZ5XUM.js → chunk-IDYCAK35.js} +53 -54
  172. package/dist/cli-bundle/chunks/chunk-IDYCAK35.js.map +7 -0
  173. package/dist/cli-bundle/chunks/{chunk-VFJYVXHL.js → chunk-IF4ERU6A.js} +7 -9
  174. package/dist/cli-bundle/chunks/{chunk-VFJYVXHL.js.map → chunk-IF4ERU6A.js.map} +1 -1
  175. package/dist/cli-bundle/chunks/{chunk-KKX4Z2SE.js → chunk-IHXXUIXS.js} +4 -4
  176. package/dist/cli-bundle/chunks/chunk-IZQOJR2B.js +2459 -0
  177. package/dist/cli-bundle/chunks/chunk-IZQOJR2B.js.map +7 -0
  178. package/dist/cli-bundle/chunks/{chunk-F4BNR2IN.js → chunk-JIP67N2K.js} +3 -3
  179. package/dist/cli-bundle/chunks/chunk-JJ4SG243.js +119 -0
  180. package/dist/cli-bundle/chunks/chunk-JJ4SG243.js.map +7 -0
  181. package/dist/cli-bundle/chunks/{chunk-EWRSXOIZ.js → chunk-JTRKME24.js} +11 -13
  182. package/dist/cli-bundle/chunks/{chunk-EWRSXOIZ.js.map → chunk-JTRKME24.js.map} +1 -1
  183. package/dist/cli-bundle/chunks/{chunk-V4UYNSEM.js → chunk-JVQ7UOYC.js} +6 -8
  184. package/dist/cli-bundle/chunks/{chunk-V4UYNSEM.js.map → chunk-JVQ7UOYC.js.map} +1 -1
  185. package/dist/cli-bundle/chunks/{chunk-L7UXKP2I.js → chunk-JZG5ADVE.js} +190 -102
  186. package/dist/cli-bundle/chunks/chunk-JZG5ADVE.js.map +1 -0
  187. package/dist/cli-bundle/chunks/{chunk-N5B6WZC5.js → chunk-K46GQ265.js} +17 -15
  188. package/dist/cli-bundle/chunks/chunk-K46GQ265.js.map +1 -0
  189. package/dist/cli-bundle/chunks/{chunk-KJZOSF7J.js → chunk-KGQ3W65B.js} +100 -35
  190. package/dist/cli-bundle/chunks/chunk-KGQ3W65B.js.map +1 -0
  191. package/dist/cli-bundle/chunks/{chunk-FMWW2JDU.js → chunk-KRASIL6M.js} +2 -2
  192. package/dist/cli-bundle/chunks/{chunk-XVYKWZNL.js → chunk-KTMMTOIP.js} +127 -127
  193. package/dist/cli-bundle/chunks/chunk-KTMMTOIP.js.map +7 -0
  194. package/dist/cli-bundle/chunks/{chunk-HZF5RLKX.js → chunk-KYDYQMNW.js} +5 -7
  195. package/dist/cli-bundle/chunks/{chunk-HZF5RLKX.js.map → chunk-KYDYQMNW.js.map} +1 -1
  196. package/dist/cli-bundle/chunks/{chunk-OHDQNKJB.js → chunk-LBH7UYKY.js} +106 -34
  197. package/dist/cli-bundle/chunks/chunk-LBH7UYKY.js.map +7 -0
  198. package/dist/cli-bundle/chunks/{chunk-I6QMJ2XT.js → chunk-MLHX6DN5.js} +2 -2
  199. package/dist/cli-bundle/chunks/{chunk-HC2S36NB.js → chunk-NIBP3I7A.js} +36 -10
  200. package/dist/cli-bundle/chunks/chunk-NIBP3I7A.js.map +1 -0
  201. package/dist/cli-bundle/chunks/{schema-C6QA367T.js → chunk-NO6Y6FB2.js} +144 -67
  202. package/dist/cli-bundle/chunks/chunk-NO6Y6FB2.js.map +7 -0
  203. package/dist/cli-bundle/chunks/{chunk-5S4ZGDB2.js → chunk-OB3RJV5F.js} +2 -2
  204. package/dist/cli-bundle/chunks/chunk-OKQ22KTH.js +379 -0
  205. package/dist/cli-bundle/chunks/chunk-OKQ22KTH.js.map +1 -0
  206. package/dist/cli-bundle/chunks/{chunk-SKC4UTRP.js → chunk-OUQ5JEFM.js} +3 -3
  207. package/dist/cli-bundle/chunks/{chunk-JPJDP4VU.js → chunk-QE5UFCCO.js} +2 -2
  208. package/dist/cli-bundle/chunks/{chunk-6W3Y65PL.js → chunk-RM6MHL6A.js} +110 -113
  209. package/dist/cli-bundle/chunks/chunk-RM6MHL6A.js.map +7 -0
  210. package/dist/cli-bundle/chunks/{chunk-RRP6D345.js → chunk-RPRW26NG.js} +12 -16
  211. package/dist/cli-bundle/chunks/{chunk-RRP6D345.js.map → chunk-RPRW26NG.js.map} +1 -1
  212. package/dist/cli-bundle/chunks/{chunk-WB5BYQMF.js → chunk-SJZTPVFT.js} +4 -4
  213. package/dist/cli-bundle/chunks/{chunk-EYPINTFR.js → chunk-SNUK7H5J.js} +1164 -440
  214. package/dist/cli-bundle/chunks/chunk-SNUK7H5J.js.map +7 -0
  215. package/dist/cli-bundle/chunks/chunk-T7ZMQI4J.js +2435 -0
  216. package/dist/cli-bundle/chunks/chunk-T7ZMQI4J.js.map +1 -0
  217. package/dist/cli-bundle/chunks/{chunk-GDUMGZK3.js → chunk-TQ6E76BE.js} +11 -13
  218. package/dist/cli-bundle/chunks/{chunk-GDUMGZK3.js.map → chunk-TQ6E76BE.js.map} +1 -1
  219. package/dist/cli-bundle/chunks/{chunk-IAP5KYBQ.js → chunk-UB3V5WUI.js} +225 -189
  220. package/dist/cli-bundle/chunks/chunk-UB3V5WUI.js.map +1 -0
  221. package/dist/cli-bundle/chunks/{chunk-PRVTGX64.js → chunk-UFKNF23C.js} +11 -23
  222. package/dist/cli-bundle/chunks/chunk-UFKNF23C.js.map +7 -0
  223. package/dist/cli-bundle/chunks/{chunk-ZLWRPBOW.js → chunk-V3KLX7U7.js} +3 -3
  224. package/dist/cli-bundle/chunks/{chunk-LNEDHJNQ.js → chunk-VD3LKZFX.js} +41 -254
  225. package/dist/cli-bundle/chunks/chunk-VD3LKZFX.js.map +1 -0
  226. package/dist/cli-bundle/chunks/{chunk-MWMHZOZZ.js → chunk-VMY7MZEM.js} +10 -14
  227. package/dist/cli-bundle/chunks/{chunk-MWMHZOZZ.js.map → chunk-VMY7MZEM.js.map} +1 -1
  228. package/dist/cli-bundle/chunks/chunk-VZDBVEZR.js +382 -0
  229. package/dist/cli-bundle/chunks/chunk-VZDBVEZR.js.map +7 -0
  230. package/dist/cli-bundle/chunks/{chunk-M6TUBOGW.js → chunk-WFJZDUM7.js} +19 -12
  231. package/dist/cli-bundle/chunks/chunk-WFJZDUM7.js.map +1 -0
  232. package/dist/cli-bundle/chunks/{schema-QO5I4FBL.js → chunk-WTRUDJ3R.js} +136 -66
  233. package/dist/cli-bundle/chunks/chunk-WTRUDJ3R.js.map +1 -0
  234. package/dist/cli-bundle/chunks/{chunk-TSI32UEL.js → chunk-YEDFE4DC.js} +6 -8
  235. package/dist/cli-bundle/chunks/{chunk-TSI32UEL.js.map → chunk-YEDFE4DC.js.map} +1 -1
  236. package/dist/cli-bundle/chunks/chunk-YJIEJRZB.js +84 -0
  237. package/dist/cli-bundle/chunks/chunk-YJIEJRZB.js.map +1 -0
  238. package/dist/cli-bundle/chunks/{chunk-ALQKV6U7.js → chunk-Z55WX4IQ.js} +12 -16
  239. package/dist/cli-bundle/chunks/{chunk-ALQKV6U7.js.map → chunk-Z55WX4IQ.js.map} +1 -1
  240. package/dist/cli-bundle/chunks/{chunk-OQ2E64FH.js → chunk-Z5BM2FKQ.js} +4 -4
  241. package/dist/cli-bundle/chunks/{chunk-IXAZI443.js → chunk-ZEATCVAC.js} +2 -2
  242. package/dist/cli-bundle/chunks/{chunk-C4C3EJCJ.js → chunk-ZFIEEDTJ.js} +3 -3
  243. package/dist/cli-bundle/chunks/{chunk-BFFO3AIB.js → chunk-ZIE6WXJ2.js} +128 -128
  244. package/dist/cli-bundle/chunks/chunk-ZIE6WXJ2.js.map +1 -0
  245. package/dist/cli-bundle/chunks/{claim-FZZZCAY6.js → claim-6NINZYB3.js} +10 -12
  246. package/dist/cli-bundle/chunks/{claim-FZZZCAY6.js.map → claim-6NINZYB3.js.map} +1 -1
  247. package/dist/cli-bundle/chunks/{claim-XK5QBZE3.js → claim-HMCLSLUE.js} +8 -10
  248. package/dist/cli-bundle/chunks/{claim-XK5QBZE3.js.map → claim-HMCLSLUE.js.map} +1 -1
  249. package/dist/cli-bundle/chunks/close-37KEHLYM.js +14 -0
  250. package/dist/cli-bundle/chunks/{close-QHMVWM7M.js → close-OP3LK7Z2.js} +7 -8
  251. package/dist/cli-bundle/chunks/{close-many-OIXJE2JZ.js → close-many-BFMP6HHK.js} +15 -17
  252. package/dist/cli-bundle/chunks/{close-many-OIXJE2JZ.js.map → close-many-BFMP6HHK.js.map} +1 -1
  253. package/dist/cli-bundle/chunks/{close-many-SUU5BS2C.js → close-many-CXJBOWWY.js} +17 -19
  254. package/dist/cli-bundle/chunks/{close-many-SUU5BS2C.js.map → close-many-CXJBOWWY.js.map} +1 -1
  255. package/dist/cli-bundle/chunks/{comments-RH3IBIRH.js → comments-ETHABIY6.js} +9 -11
  256. package/dist/cli-bundle/chunks/{comments-RH3IBIRH.js.map → comments-ETHABIY6.js.map} +1 -1
  257. package/dist/cli-bundle/chunks/{comments-5YM62D75.js → comments-MU2WMBUY.js} +11 -13
  258. package/dist/cli-bundle/chunks/{comments-5YM62D75.js.map → comments-MU2WMBUY.js.map} +1 -1
  259. package/dist/cli-bundle/chunks/{config-NCNNWF6R.js → config-FIXJZEQK.js} +18 -387
  260. package/dist/cli-bundle/chunks/config-FIXJZEQK.js.map +7 -0
  261. package/dist/cli-bundle/chunks/{config-SW3U7XP2.js → config-X3ZVCUUG.js} +18 -380
  262. package/dist/cli-bundle/chunks/config-X3ZVCUUG.js.map +1 -0
  263. package/dist/cli-bundle/chunks/context-7ZEZV3BV.js +42 -0
  264. package/dist/cli-bundle/chunks/context-XDI4DKKT.js +46 -0
  265. package/dist/cli-bundle/chunks/{contracts-JXFGBOYT.js → contracts-KP4QAGVW.js} +72 -15
  266. package/dist/cli-bundle/chunks/contracts-KP4QAGVW.js.map +1 -0
  267. package/dist/cli-bundle/chunks/{contracts-SY6PDFIK.js → contracts-SMOAN5NF.js} +72 -15
  268. package/dist/cli-bundle/chunks/contracts-SMOAN5NF.js.map +7 -0
  269. package/dist/cli-bundle/chunks/{copy-N3GE6FYS.js → copy-CWM6SBY6.js} +7 -11
  270. package/dist/cli-bundle/chunks/{copy-N3GE6FYS.js.map → copy-CWM6SBY6.js.map} +1 -1
  271. package/dist/cli-bundle/chunks/{copy-IEDBJOOX.js → copy-JJ3KOQW2.js} +9 -13
  272. package/dist/cli-bundle/chunks/{copy-IEDBJOOX.js.map → copy-JJ3KOQW2.js.map} +1 -1
  273. package/dist/cli-bundle/chunks/create-DFMNBKBS.js +28 -0
  274. package/dist/cli-bundle/chunks/{create-O4VONGPG.js → create-J5Q2ELZT.js} +12 -14
  275. package/dist/cli-bundle/chunks/{delete-724EQ6OS.js → delete-2GZLQEUQ.js} +7 -9
  276. package/dist/cli-bundle/chunks/{delete-724EQ6OS.js.map → delete-2GZLQEUQ.js.map} +1 -1
  277. package/dist/cli-bundle/chunks/{delete-LPEIF7RU.js → delete-OOQS4KVD.js} +5 -7
  278. package/dist/cli-bundle/chunks/{delete-LPEIF7RU.js.map → delete-OOQS4KVD.js.map} +1 -1
  279. package/dist/cli-bundle/chunks/{deps-T3Y6Y7RT.js → deps-IF4IGL4R.js} +6 -9
  280. package/dist/cli-bundle/chunks/{deps-T3Y6Y7RT.js.map → deps-IF4IGL4R.js.map} +1 -1
  281. package/dist/cli-bundle/chunks/{deps-RSBU4SIU.js → deps-ZVGGCRR6.js} +8 -11
  282. package/dist/cli-bundle/chunks/{deps-RSBU4SIU.js.map → deps-ZVGGCRR6.js.map} +1 -1
  283. package/dist/cli-bundle/chunks/{docs-IFS7HZPP.js → docs-2TIFR62T.js} +8 -9
  284. package/dist/cli-bundle/chunks/{docs-IFS7HZPP.js.map → docs-2TIFR62T.js.map} +1 -1
  285. package/dist/cli-bundle/chunks/{docs-75ZLCO3G.js → docs-NFTBCQQC.js} +10 -11
  286. package/dist/cli-bundle/chunks/{docs-75ZLCO3G.js.map → docs-NFTBCQQC.js.map} +1 -1
  287. package/dist/cli-bundle/chunks/{eval-L2KD7W3M.js → eval-2F6EH4XN.js} +12 -14
  288. package/dist/cli-bundle/chunks/{eval-L2KD7W3M.js.map → eval-2F6EH4XN.js.map} +1 -1
  289. package/dist/cli-bundle/chunks/{eval-QGR7JCQO.js → eval-PFKXQR3B.js} +10 -12
  290. package/dist/cli-bundle/chunks/{eval-QGR7JCQO.js.map → eval-PFKXQR3B.js.map} +1 -1
  291. package/dist/cli-bundle/chunks/{extension-3JYWJ5K2.js → extension-3LRYX7SW.js} +11 -7
  292. package/dist/cli-bundle/chunks/{extension-YQF4CPIR.js → extension-GMVOIP4O.js} +11 -7
  293. package/dist/cli-bundle/chunks/{files-5BQWDRDT.js → files-DF3HO6XK.js} +11 -13
  294. package/dist/cli-bundle/chunks/{files-5BQWDRDT.js.map → files-DF3HO6XK.js.map} +1 -1
  295. package/dist/cli-bundle/chunks/{files-EPEJMJHQ.js → files-T5ODMETM.js} +9 -11
  296. package/dist/cli-bundle/chunks/{files-EPEJMJHQ.js.map → files-T5ODMETM.js.map} +1 -1
  297. package/dist/cli-bundle/chunks/{focus-RWGKD76E.js → focus-DLXKK4AH.js} +10 -14
  298. package/dist/cli-bundle/chunks/{focus-RWGKD76E.js.map → focus-DLXKK4AH.js.map} +1 -1
  299. package/dist/cli-bundle/chunks/{focus-DQVJAPOE.js → focus-MY5ARIEK.js} +8 -12
  300. package/dist/cli-bundle/chunks/{focus-DQVJAPOE.js.map → focus-MY5ARIEK.js.map} +1 -1
  301. package/dist/cli-bundle/chunks/{gc-BEJMQT64.js → gc-FULIVYR4.js} +3 -3
  302. package/dist/cli-bundle/chunks/{gc-JEFQDJPA.js → gc-MDGRR2SU.js} +3 -3
  303. package/dist/cli-bundle/chunks/{get-LQG6PEVG.js → get-AWK324RS.js} +10 -13
  304. package/dist/cli-bundle/chunks/{get-LQG6PEVG.js.map → get-AWK324RS.js.map} +1 -1
  305. package/dist/cli-bundle/chunks/{get-WVN75H42.js → get-VYPIICPC.js} +12 -15
  306. package/dist/cli-bundle/chunks/{get-WVN75H42.js.map → get-VYPIICPC.js.map} +1 -1
  307. package/dist/cli-bundle/chunks/{health-P67NZ6TT.js → health-FBCVZGSX.js} +16 -17
  308. package/dist/cli-bundle/chunks/{health-P67NZ6TT.js.map → health-FBCVZGSX.js.map} +1 -1
  309. package/dist/cli-bundle/chunks/{health-JJJOY7DJ.js → health-Q66C43GN.js} +18 -19
  310. package/dist/cli-bundle/chunks/{health-JJJOY7DJ.js.map → health-Q66C43GN.js.map} +1 -1
  311. package/dist/cli-bundle/chunks/history-5XUSLAJA.js +18 -0
  312. package/dist/cli-bundle/chunks/{history-RUKPKNY7.js → history-X4OSES6K.js} +8 -10
  313. package/dist/cli-bundle/chunks/{history-compact-ZAOWR7GD.js → history-compact-2GHT32UX.js} +13 -16
  314. package/dist/cli-bundle/chunks/{history-compact-ZAOWR7GD.js.map → history-compact-2GHT32UX.js.map} +1 -1
  315. package/dist/cli-bundle/chunks/{history-compact-NQ7VPRVT.js → history-compact-WLCQEKXS.js} +11 -14
  316. package/dist/cli-bundle/chunks/{history-compact-NQ7VPRVT.js.map → history-compact-WLCQEKXS.js.map} +1 -1
  317. package/dist/cli-bundle/chunks/{history-redact-YY4XYVEP.js → history-redact-45YW65BK.js} +9 -11
  318. package/dist/cli-bundle/chunks/history-redact-BVHWDXPR.js +19 -0
  319. package/dist/cli-bundle/chunks/{history-repair-YSQH6SY6.js → history-repair-FY75IC26.js} +13 -16
  320. package/dist/cli-bundle/chunks/{history-repair-YSQH6SY6.js.map → history-repair-FY75IC26.js.map} +1 -1
  321. package/dist/cli-bundle/chunks/{history-repair-EHL4ODQY.js → history-repair-GABSDSVD.js} +11 -14
  322. package/dist/cli-bundle/chunks/{history-repair-EHL4ODQY.js.map → history-repair-GABSDSVD.js.map} +1 -1
  323. package/dist/cli-bundle/chunks/{init-HBFGYS66.js → init-KO7CGIRQ.js} +11 -11
  324. package/dist/cli-bundle/chunks/init-TRYJELH4.js +21 -0
  325. package/dist/cli-bundle/chunks/{learnings-KFQO7GEZ.js → learnings-3F7YLI45.js} +9 -11
  326. package/dist/cli-bundle/chunks/{learnings-KFQO7GEZ.js.map → learnings-3F7YLI45.js.map} +1 -1
  327. package/dist/cli-bundle/chunks/{learnings-J555ZFPD.js → learnings-LHZT5BHW.js} +11 -13
  328. package/dist/cli-bundle/chunks/{learnings-J555ZFPD.js.map → learnings-LHZT5BHW.js.map} +1 -1
  329. package/dist/cli-bundle/chunks/{list-C7R33MD5.js → list-ROT7JF62.js} +10 -10
  330. package/dist/cli-bundle/chunks/{list-DSN6UNFB.js → list-Y6AU5BJS.js} +10 -10
  331. package/dist/cli-bundle/chunks/next-66BJB4N2.js +277 -0
  332. package/dist/cli-bundle/chunks/next-66BJB4N2.js.map +7 -0
  333. package/dist/cli-bundle/chunks/next-N5MWJTBY.js +274 -0
  334. package/dist/cli-bundle/chunks/next-N5MWJTBY.js.map +1 -0
  335. package/dist/cli-bundle/chunks/{notes-VYJFN2A3.js → notes-EVJZ3VAB.js} +11 -13
  336. package/dist/cli-bundle/chunks/{notes-VYJFN2A3.js.map → notes-EVJZ3VAB.js.map} +1 -1
  337. package/dist/cli-bundle/chunks/{notes-V4VNIQL4.js → notes-FW6YFLND.js} +9 -11
  338. package/dist/cli-bundle/chunks/{notes-V4VNIQL4.js.map → notes-FW6YFLND.js.map} +1 -1
  339. package/dist/cli-bundle/chunks/{plan-RBHQ5PO7.js → plan-DQ7G4EDC.js} +15 -18
  340. package/dist/cli-bundle/chunks/{plan-RBHQ5PO7.js.map → plan-DQ7G4EDC.js.map} +1 -1
  341. package/dist/cli-bundle/chunks/{plan-DHRSVSHR.js → plan-ZHKZ7JVF.js} +17 -20
  342. package/dist/cli-bundle/chunks/{plan-DHRSVSHR.js.map → plan-ZHKZ7JVF.js.map} +1 -1
  343. package/dist/cli-bundle/chunks/profile-CHAW6SEA.js +1197 -0
  344. package/dist/cli-bundle/chunks/profile-CHAW6SEA.js.map +1 -0
  345. package/dist/cli-bundle/chunks/profile-UPZGCDOG.js +1235 -0
  346. package/dist/cli-bundle/chunks/profile-UPZGCDOG.js.map +7 -0
  347. package/dist/cli-bundle/chunks/{register-list-query-CCMHGZTF.js → register-list-query-KY6Z6WV7.js} +44 -20
  348. package/dist/cli-bundle/chunks/register-list-query-KY6Z6WV7.js.map +7 -0
  349. package/dist/cli-bundle/chunks/{register-list-query-OM3E2KMY.js → register-list-query-Y2VRHPCL.js} +45 -21
  350. package/dist/cli-bundle/chunks/register-list-query-Y2VRHPCL.js.map +1 -0
  351. package/dist/cli-bundle/chunks/{register-mutation-UXTTWL6N.js → register-mutation-N6AYSKPM.js} +103 -37
  352. package/dist/cli-bundle/chunks/register-mutation-N6AYSKPM.js.map +7 -0
  353. package/dist/cli-bundle/chunks/{register-mutation-N3CDEGZU.js → register-mutation-PCARIGZS.js} +104 -38
  354. package/dist/cli-bundle/chunks/register-mutation-PCARIGZS.js.map +1 -0
  355. package/dist/cli-bundle/chunks/{register-operations-R2FLOCRI.js → register-operations-L6CYTOIH.js} +30 -32
  356. package/dist/cli-bundle/chunks/{register-operations-R2FLOCRI.js.map → register-operations-L6CYTOIH.js.map} +1 -1
  357. package/dist/cli-bundle/chunks/{register-operations-UDIFMQKD.js → register-operations-YAT6FUUB.js} +32 -34
  358. package/dist/cli-bundle/chunks/{register-operations-UDIFMQKD.js.map → register-operations-YAT6FUUB.js.map} +1 -1
  359. package/dist/cli-bundle/chunks/{register-setup-TWHKICM2.js → register-setup-MPANILQF.js} +67 -24
  360. package/dist/cli-bundle/chunks/register-setup-MPANILQF.js.map +7 -0
  361. package/dist/cli-bundle/chunks/{register-setup-G5LTSFYK.js → register-setup-N7UGXYJC.js} +68 -25
  362. package/dist/cli-bundle/chunks/register-setup-N7UGXYJC.js.map +1 -0
  363. package/dist/cli-bundle/chunks/{restore-LL2WLEDG.js → restore-DKMCLPI5.js} +9 -11
  364. package/dist/cli-bundle/chunks/restore-IRAKSWIW.js +17 -0
  365. package/dist/cli-bundle/chunks/{scheduling-shortcuts-M4H2ZI64.js → scheduling-shortcuts-3F4QUEDH.js} +14 -16
  366. package/dist/cli-bundle/chunks/{scheduling-shortcuts-M4H2ZI64.js.map → scheduling-shortcuts-3F4QUEDH.js.map} +1 -1
  367. package/dist/cli-bundle/chunks/{scheduling-shortcuts-255GI3BU.js → scheduling-shortcuts-BNZLQK36.js} +12 -14
  368. package/dist/cli-bundle/chunks/{scheduling-shortcuts-255GI3BU.js.map → scheduling-shortcuts-BNZLQK36.js.map} +1 -1
  369. package/dist/cli-bundle/chunks/schema-OLT6LVKH.js +75 -0
  370. package/dist/cli-bundle/chunks/schema-XJXKJQF5.js +71 -0
  371. package/dist/cli-bundle/chunks/{search-2EI6EAXH.js → search-CX5UMV4H.js} +10 -12
  372. package/dist/cli-bundle/chunks/{search-QBFBLQRO.js → search-KP6H7COV.js} +10 -12
  373. package/dist/cli-bundle/chunks/{stats-TCW2SZQG.js → stats-7XW4OEMK.js} +20 -12
  374. package/dist/cli-bundle/chunks/stats-7XW4OEMK.js.map +7 -0
  375. package/dist/cli-bundle/chunks/{stats-TKC6CAKB.js → stats-QZUG6MX5.js} +21 -13
  376. package/dist/cli-bundle/chunks/stats-QZUG6MX5.js.map +1 -0
  377. package/dist/cli-bundle/chunks/{telemetry-LQ6FRTUT.js → telemetry-DIFPXCAT.js} +4 -4
  378. package/dist/cli-bundle/chunks/{telemetry-BT2VSWU2.js → telemetry-WTYFUPRL.js} +4 -4
  379. package/dist/cli-bundle/chunks/{test-NV2DRPUS.js → test-HU2BS7EY.js} +14 -16
  380. package/dist/cli-bundle/chunks/test-HU2BS7EY.js.map +1 -0
  381. package/dist/cli-bundle/chunks/test-QNDXZQCW.js +34 -0
  382. package/dist/cli-bundle/chunks/test-QNDXZQCW.js.map +7 -0
  383. package/dist/cli-bundle/chunks/{test-all-REW67LXT.js → test-all-PZTBLLQ6.js} +17 -20
  384. package/dist/cli-bundle/chunks/{test-all-REW67LXT.js.map → test-all-PZTBLLQ6.js.map} +1 -1
  385. package/dist/cli-bundle/chunks/{test-all-DZ76VTPQ.js → test-all-XLPI4USF.js} +19 -22
  386. package/dist/cli-bundle/chunks/{test-all-DZ76VTPQ.js.map → test-all-XLPI4USF.js.map} +1 -1
  387. package/dist/cli-bundle/chunks/{test-runs-FQ5WNQLP.js → test-runs-CA6K32RD.js} +6 -7
  388. package/dist/cli-bundle/chunks/test-runs-CA6K32RD.js.map +1 -0
  389. package/dist/cli-bundle/chunks/{test-runs-PX73DMMI.js → test-runs-LANLLPVO.js} +5 -6
  390. package/dist/cli-bundle/chunks/test-runs-LANLLPVO.js.map +7 -0
  391. package/dist/cli-bundle/chunks/update-DJKWLBWJ.js +28 -0
  392. package/dist/cli-bundle/chunks/update-DJKWLBWJ.js.map +1 -0
  393. package/dist/cli-bundle/chunks/update-UXDLTEOZ.js +24 -0
  394. package/dist/cli-bundle/chunks/update-UXDLTEOZ.js.map +7 -0
  395. package/dist/cli-bundle/chunks/{update-many-2ILP6E4Y.js → update-many-LU3SCNK5.js} +32 -33
  396. package/dist/cli-bundle/chunks/{update-many-2ILP6E4Y.js.map → update-many-LU3SCNK5.js.map} +1 -1
  397. package/dist/cli-bundle/chunks/{update-many-Q5ZEI64S.js → update-many-VW5DGF3S.js} +34 -35
  398. package/dist/cli-bundle/chunks/{update-many-Q5ZEI64S.js.map → update-many-VW5DGF3S.js.map} +1 -1
  399. package/dist/cli-bundle/chunks/{upgrade-FOZKQTQF.js → upgrade-77FRUAXN.js} +12 -8
  400. package/dist/cli-bundle/chunks/{upgrade-FOZKQTQF.js.map → upgrade-77FRUAXN.js.map} +1 -1
  401. package/dist/cli-bundle/chunks/{upgrade-DHL74PQH.js → upgrade-ICXY244R.js} +10 -6
  402. package/dist/cli-bundle/chunks/{upgrade-DHL74PQH.js.map → upgrade-ICXY244R.js.map} +1 -1
  403. package/dist/cli-bundle/chunks/{validate-HYZNIB6W.js → validate-2G566PKQ.js} +37 -28
  404. package/dist/cli-bundle/chunks/validate-2G566PKQ.js.map +7 -0
  405. package/dist/cli-bundle/chunks/{validate-54SYJ7QW.js → validate-BDPVXHHH.js} +38 -29
  406. package/dist/cli-bundle/chunks/validate-BDPVXHHH.js.map +1 -0
  407. package/dist/cli-bundle/main.js +56 -38
  408. package/dist/cli-bundle/main.js.map +2 -2
  409. package/dist/core/config/positional-value.d.ts +2 -0
  410. package/dist/core/config/positional-value.js +2 -2
  411. package/dist/core/config/positional-value.js.map +1 -1
  412. package/dist/core/extensions/activation-summary-markdown.d.ts +71 -0
  413. package/dist/core/extensions/activation-summary-markdown.js +140 -0
  414. package/dist/core/extensions/activation-summary-markdown.js.map +1 -0
  415. package/dist/core/extensions/activation-summary.d.ts +2 -0
  416. package/dist/core/extensions/activation-summary.js +3 -2
  417. package/dist/core/extensions/activation-summary.js.map +1 -1
  418. package/dist/core/extensions/capability-usage.d.ts +1 -1
  419. package/dist/core/extensions/capability-usage.js +4 -3
  420. package/dist/core/extensions/capability-usage.js.map +1 -1
  421. package/dist/core/extensions/extension-registries.js +3 -2
  422. package/dist/core/extensions/extension-registries.js.map +1 -1
  423. package/dist/core/extensions/extension-types.d.ts +21 -1
  424. package/dist/core/extensions/extension-types.js +3 -2
  425. package/dist/core/extensions/extension-types.js.map +1 -1
  426. package/dist/core/extensions/loader.js +131 -2
  427. package/dist/core/extensions/loader.js.map +1 -1
  428. package/dist/core/fs/fs-utils.js +27 -2
  429. package/dist/core/fs/fs-utils.js.map +1 -1
  430. package/dist/core/item/actionability.d.ts +57 -0
  431. package/dist/core/item/actionability.js +178 -0
  432. package/dist/core/item/actionability.js.map +1 -0
  433. package/dist/core/item/type-registry.js +18 -45
  434. package/dist/core/item/type-registry.js.map +1 -1
  435. package/dist/core/profile/profile-describe.d.ts +64 -0
  436. package/dist/core/profile/profile-describe.js +83 -0
  437. package/dist/core/profile/profile-describe.js.map +1 -0
  438. package/dist/core/profile/profile-lint.d.ts +53 -0
  439. package/dist/core/profile/profile-lint.js +422 -0
  440. package/dist/core/profile/profile-lint.js.map +1 -0
  441. package/dist/core/profile/profile-plan.d.ts +145 -0
  442. package/dist/core/profile/profile-plan.js +0 -0
  443. package/dist/core/profile/profile-plan.js.map +1 -0
  444. package/dist/core/profile/profile-presets.d.ts +218 -0
  445. package/dist/core/profile/profile-presets.js +325 -0
  446. package/dist/core/profile/profile-presets.js.map +1 -0
  447. package/dist/core/schema/fields-file.js +25 -25
  448. package/dist/core/schema/fields-file.js.map +1 -1
  449. package/dist/core/schema/item-types-file.js +3 -3
  450. package/dist/core/schema/item-types-file.js.map +1 -1
  451. package/dist/core/schema/runtime-schema.js +4 -4
  452. package/dist/core/schema/runtime-schema.js.map +1 -1
  453. package/dist/core/schema/status-defs-file.js +3 -3
  454. package/dist/core/schema/status-defs-file.js.map +1 -1
  455. package/dist/core/shared/serialization.js +83 -62
  456. package/dist/core/shared/serialization.js.map +1 -1
  457. package/dist/core/store/item-store.d.ts +1 -0
  458. package/dist/core/store/item-store.js +16 -8
  459. package/dist/core/store/item-store.js.map +1 -1
  460. package/dist/core/store/paths.js +4 -32
  461. package/dist/core/store/paths.js.map +1 -1
  462. package/dist/core/store/settings.js +14 -14
  463. package/dist/core/store/settings.js.map +1 -1
  464. package/dist/core/telemetry/observability.js +50 -54
  465. package/dist/core/telemetry/observability.js.map +1 -1
  466. package/dist/core/telemetry/runtime.js +11 -2
  467. package/dist/core/telemetry/runtime.js.map +1 -1
  468. package/dist/core/test/background-runs.js +3 -2
  469. package/dist/core/test/background-runs.js.map +1 -1
  470. package/dist/core/validate/linked-artifact-reference.d.ts +24 -0
  471. package/dist/core/validate/linked-artifact-reference.js +41 -0
  472. package/dist/core/validate/linked-artifact-reference.js.map +1 -0
  473. package/dist/mcp/server.js +183 -83
  474. package/dist/mcp/server.js.map +1 -1
  475. package/dist/mcp/tool-definitions.js +33 -2
  476. package/dist/mcp/tool-definitions.js.map +1 -1
  477. package/dist/sdk/cli-contracts/commander-types.d.ts +1 -0
  478. package/dist/sdk/cli-contracts/commander-types.js +15 -2
  479. package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
  480. package/dist/sdk/cli-contracts/enum-contracts.d.ts +3 -3
  481. package/dist/sdk/cli-contracts/enum-contracts.js +6 -2
  482. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  483. package/dist/sdk/cli-contracts/flag-contracts.d.ts +149 -0
  484. package/dist/sdk/cli-contracts/flag-contracts.js +1583 -0
  485. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -0
  486. package/dist/sdk/cli-contracts/string-lists.d.ts +14 -0
  487. package/dist/sdk/cli-contracts/string-lists.js +20 -0
  488. package/dist/sdk/cli-contracts/string-lists.js.map +1 -0
  489. package/dist/sdk/cli-contracts/tool-option-contracts.d.ts +1 -1
  490. package/dist/sdk/cli-contracts/tool-option-contracts.js +51 -109
  491. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  492. package/dist/sdk/cli-contracts/tool-parameter-tables.d.ts +17 -0
  493. package/dist/sdk/cli-contracts/tool-parameter-tables.js +54 -5
  494. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  495. package/dist/sdk/cli-contracts/tool-schema.d.ts +74 -0
  496. package/dist/sdk/cli-contracts/tool-schema.js +840 -0
  497. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -0
  498. package/dist/sdk/cli-contracts.d.ts +13 -193
  499. package/dist/sdk/cli-contracts.js +5 -2277
  500. package/dist/sdk/cli-contracts.js.map +1 -1
  501. package/dist/sdk/compose.d.ts +7 -4
  502. package/dist/sdk/compose.js +64 -14
  503. package/dist/sdk/compose.js.map +1 -1
  504. package/dist/sdk/define.d.ts +14 -0
  505. package/dist/sdk/define.js +17 -2
  506. package/dist/sdk/define.js.map +1 -1
  507. package/dist/sdk/index.d.ts +14 -3
  508. package/dist/sdk/index.js +14 -3
  509. package/dist/sdk/index.js.map +1 -1
  510. package/dist/sdk/testing.d.ts +82 -2
  511. package/dist/sdk/testing.js +74 -3
  512. package/dist/sdk/testing.js.map +1 -1
  513. package/docs/AGENT_GUIDE.md +2 -0
  514. package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
  515. package/docs/COMMANDS.md +37 -0
  516. package/docs/EXTENSIONS.md +12 -13
  517. package/docs/RELEASING.md +6 -1
  518. package/docs/SDK.md +184 -17
  519. package/docs/TESTING.md +12 -0
  520. package/docs/examples/policy-restricted-extension/README.md +6 -0
  521. package/docs/examples/policy-restricted-extension/index.ts +40 -0
  522. package/docs/examples/policy-restricted-extension/manifest.json +2 -2
  523. package/docs/examples/starter-extension/README.md +14 -2
  524. package/docs/examples/starter-extension/{index.js → index.ts} +51 -6
  525. package/docs/examples/starter-extension/manifest.json +2 -2
  526. package/package.json +20 -7
  527. package/packages/pm-beads/extensions/beads/index.ts +3 -3
  528. package/packages/pm-beads/extensions/beads/manifest.json +2 -2
  529. package/packages/pm-beads/extensions/beads/runtime-loader.ts +19 -7
  530. package/packages/pm-beads/extensions/beads/runtime.ts +155 -37
  531. package/packages/pm-calendar/extensions/calendar/index.ts +3 -3
  532. package/packages/pm-calendar/extensions/calendar/manifest.json +2 -2
  533. package/packages/pm-calendar/extensions/calendar/runtime.ts +2 -2
  534. package/packages/pm-command-kit/extensions/command-kit/index.ts +1 -1
  535. package/packages/pm-command-kit/extensions/command-kit/manifest.json +2 -2
  536. package/packages/pm-governance-audit/extensions/governance-audit/index.ts +2 -2
  537. package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +2 -2
  538. package/packages/pm-governance-audit/extensions/governance-audit/runtime.ts +1 -1
  539. package/packages/pm-guide-shell/extensions/guide-shell/index.ts +2 -2
  540. package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +2 -2
  541. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +1 -1
  542. package/packages/pm-kanban/README.md +97 -0
  543. package/packages/pm-kanban/extensions/kanban/index.ts +191 -0
  544. package/packages/pm-kanban/extensions/kanban/manifest.json +19 -0
  545. package/packages/pm-kanban/package.json +57 -0
  546. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.ts +1 -1
  547. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/manifest.json +2 -2
  548. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.ts +2 -2
  549. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +2 -2
  550. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.ts +1 -1
  551. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +2 -2
  552. package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +2 -2
  553. package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +1 -1
  554. package/packages/pm-templates/extensions/templates/index.ts +2 -2
  555. package/packages/pm-templates/extensions/templates/manifest.json +2 -2
  556. package/packages/pm-templates/extensions/templates/runtime.ts +1 -1
  557. package/packages/pm-todos/extensions/todos/index.ts +3 -3
  558. package/packages/pm-todos/extensions/todos/manifest.json +2 -2
  559. package/packages/pm-todos/extensions/todos/runtime-loader.ts +19 -7
  560. package/packages/pm-todos/extensions/todos/runtime.ts +177 -43
  561. package/plugins/pm-claude/scripts/pm-mcp-server.mjs +2 -2
  562. package/plugins/pm-codex/scripts/pm-mcp-server.mjs +2 -2
  563. package/scripts/bundle-cli.mjs +1 -1
  564. package/dist/cli-bundle/chunks/activity-54TXGJ2T.js +0 -18
  565. package/dist/cli-bundle/chunks/aggregate-63NWNIBR.js.map +0 -1
  566. package/dist/cli-bundle/chunks/aggregate-YHCYX2EV.js.map +0 -7
  567. package/dist/cli-bundle/chunks/chunk-6EL7SW5C.js.map +0 -7
  568. package/dist/cli-bundle/chunks/chunk-6W3Y65PL.js.map +0 -7
  569. package/dist/cli-bundle/chunks/chunk-AEACLRVH.js.map +0 -7
  570. package/dist/cli-bundle/chunks/chunk-B74BP6IS.js +0 -78
  571. package/dist/cli-bundle/chunks/chunk-B74BP6IS.js.map +0 -7
  572. package/dist/cli-bundle/chunks/chunk-BFFO3AIB.js.map +0 -1
  573. package/dist/cli-bundle/chunks/chunk-EYPINTFR.js.map +0 -7
  574. package/dist/cli-bundle/chunks/chunk-FBLT6WGK.js +0 -75
  575. package/dist/cli-bundle/chunks/chunk-FBLT6WGK.js.map +0 -1
  576. package/dist/cli-bundle/chunks/chunk-GQYJEEFX.js.map +0 -1
  577. package/dist/cli-bundle/chunks/chunk-HBAEFWX3.js.map +0 -7
  578. package/dist/cli-bundle/chunks/chunk-HC2S36NB.js.map +0 -1
  579. package/dist/cli-bundle/chunks/chunk-IAP5KYBQ.js.map +0 -1
  580. package/dist/cli-bundle/chunks/chunk-INPHFO33.js +0 -764
  581. package/dist/cli-bundle/chunks/chunk-INPHFO33.js.map +0 -7
  582. package/dist/cli-bundle/chunks/chunk-IOT6WRL5.js +0 -86
  583. package/dist/cli-bundle/chunks/chunk-IOT6WRL5.js.map +0 -7
  584. package/dist/cli-bundle/chunks/chunk-J7I4C5ZB.js.map +0 -7
  585. package/dist/cli-bundle/chunks/chunk-JKL6HRMV.js.map +0 -7
  586. package/dist/cli-bundle/chunks/chunk-KJZOSF7J.js.map +0 -1
  587. package/dist/cli-bundle/chunks/chunk-L7UXKP2I.js.map +0 -1
  588. package/dist/cli-bundle/chunks/chunk-LNEDHJNQ.js.map +0 -1
  589. package/dist/cli-bundle/chunks/chunk-M6TUBOGW.js.map +0 -1
  590. package/dist/cli-bundle/chunks/chunk-MEXZ5XUM.js.map +0 -7
  591. package/dist/cli-bundle/chunks/chunk-N5B6WZC5.js.map +0 -1
  592. package/dist/cli-bundle/chunks/chunk-NJ73ALW2.js +0 -761
  593. package/dist/cli-bundle/chunks/chunk-NJ73ALW2.js.map +0 -1
  594. package/dist/cli-bundle/chunks/chunk-NVXGVEFD.js +0 -83
  595. package/dist/cli-bundle/chunks/chunk-NVXGVEFD.js.map +0 -1
  596. package/dist/cli-bundle/chunks/chunk-OF7V47P3.js.map +0 -1
  597. package/dist/cli-bundle/chunks/chunk-OHDQNKJB.js.map +0 -7
  598. package/dist/cli-bundle/chunks/chunk-PRVTGX64.js.map +0 -7
  599. package/dist/cli-bundle/chunks/chunk-RAWA3Y7O.js.map +0 -1
  600. package/dist/cli-bundle/chunks/chunk-SMXSDY7J.js.map +0 -7
  601. package/dist/cli-bundle/chunks/chunk-SUREE24M.js.map +0 -1
  602. package/dist/cli-bundle/chunks/chunk-TKPP4GOO.js +0 -654
  603. package/dist/cli-bundle/chunks/chunk-TKPP4GOO.js.map +0 -1
  604. package/dist/cli-bundle/chunks/chunk-VSAABFGQ.js.map +0 -1
  605. package/dist/cli-bundle/chunks/chunk-XVYKWZNL.js.map +0 -7
  606. package/dist/cli-bundle/chunks/chunk-XXKV4UWE.js.map +0 -7
  607. package/dist/cli-bundle/chunks/chunk-ZV7IQ23N.js +0 -657
  608. package/dist/cli-bundle/chunks/chunk-ZV7IQ23N.js.map +0 -7
  609. package/dist/cli-bundle/chunks/close-JEBZXONN.js +0 -15
  610. package/dist/cli-bundle/chunks/config-NCNNWF6R.js.map +0 -7
  611. package/dist/cli-bundle/chunks/config-SW3U7XP2.js.map +0 -1
  612. package/dist/cli-bundle/chunks/context-55VEOYI3.js.map +0 -1
  613. package/dist/cli-bundle/chunks/context-5LB7UGKE.js.map +0 -7
  614. package/dist/cli-bundle/chunks/contracts-JXFGBOYT.js.map +0 -1
  615. package/dist/cli-bundle/chunks/contracts-SY6PDFIK.js.map +0 -7
  616. package/dist/cli-bundle/chunks/create-CLSCHGJJ.js +0 -30
  617. package/dist/cli-bundle/chunks/history-ALTM2RRP.js +0 -20
  618. package/dist/cli-bundle/chunks/history-redact-5YGLWUDH.js +0 -21
  619. package/dist/cli-bundle/chunks/init-C4CRHW22.js +0 -21
  620. package/dist/cli-bundle/chunks/register-list-query-CCMHGZTF.js.map +0 -7
  621. package/dist/cli-bundle/chunks/register-list-query-OM3E2KMY.js.map +0 -1
  622. package/dist/cli-bundle/chunks/register-mutation-N3CDEGZU.js.map +0 -1
  623. package/dist/cli-bundle/chunks/register-mutation-UXTTWL6N.js.map +0 -7
  624. package/dist/cli-bundle/chunks/register-setup-G5LTSFYK.js.map +0 -1
  625. package/dist/cli-bundle/chunks/register-setup-TWHKICM2.js.map +0 -7
  626. package/dist/cli-bundle/chunks/restore-LQHXBAY5.js +0 -19
  627. package/dist/cli-bundle/chunks/schema-C6QA367T.js.map +0 -7
  628. package/dist/cli-bundle/chunks/schema-QO5I4FBL.js.map +0 -1
  629. package/dist/cli-bundle/chunks/stats-TCW2SZQG.js.map +0 -7
  630. package/dist/cli-bundle/chunks/stats-TKC6CAKB.js.map +0 -1
  631. package/dist/cli-bundle/chunks/test-WA6RZGM2.js +0 -36
  632. package/dist/cli-bundle/chunks/test-runs-FQ5WNQLP.js.map +0 -1
  633. package/dist/cli-bundle/chunks/test-runs-PX73DMMI.js.map +0 -7
  634. package/dist/cli-bundle/chunks/update-BSKMQOYH.js +0 -28
  635. package/dist/cli-bundle/chunks/update-FIGYNQ2I.js +0 -24
  636. package/dist/cli-bundle/chunks/validate-54SYJ7QW.js.map +0 -1
  637. package/dist/cli-bundle/chunks/validate-HYZNIB6W.js.map +0 -7
  638. package/docs/examples/policy-restricted-extension/index.js +0 -21
  639. package/packages/pm-beads/extensions/beads/index.js +0 -64
  640. package/packages/pm-beads/extensions/beads/runtime-loader.js +0 -86
  641. package/packages/pm-beads/extensions/beads/runtime.js +0 -482
  642. package/packages/pm-calendar/extensions/calendar/index.js +0 -150
  643. package/packages/pm-calendar/extensions/calendar/runtime.js +0 -126
  644. package/packages/pm-command-kit/extensions/command-kit/index.js +0 -181
  645. package/packages/pm-governance-audit/extensions/governance-audit/index.js +0 -177
  646. package/packages/pm-governance-audit/extensions/governance-audit/runtime.js +0 -153
  647. package/packages/pm-guide-shell/extensions/guide-shell/index.js +0 -98
  648. package/packages/pm-guide-shell/extensions/guide-shell/runtime.js +0 -294
  649. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.js +0 -18
  650. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.js +0 -124
  651. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.js +0 -110
  652. package/packages/pm-search-advanced/extensions/search-advanced/index.js +0 -258
  653. package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +0 -361
  654. package/packages/pm-templates/extensions/templates/index.js +0 -132
  655. package/packages/pm-templates/extensions/templates/runtime.js +0 -35
  656. package/packages/pm-todos/extensions/todos/index.js +0 -81
  657. package/packages/pm-todos/extensions/todos/runtime-loader.js +0 -86
  658. package/packages/pm-todos/extensions/todos/runtime.js +0 -545
  659. /package/dist/cli-bundle/chunks/{activity-54TXGJ2T.js.map → activity-EJBMXUBH.js.map} +0 -0
  660. /package/dist/cli-bundle/chunks/{activity-N7RVTLBQ.js.map → activity-MVSEND6D.js.map} +0 -0
  661. /package/dist/cli-bundle/chunks/{chunk-F32L4HR6.js.map → chunk-3JWQCLR5.js.map} +0 -0
  662. /package/dist/cli-bundle/chunks/{chunk-YV2OSAMS.js.map → chunk-4TXTVZL3.js.map} +0 -0
  663. /package/dist/cli-bundle/chunks/{chunk-AYPQUFCX.js.map → chunk-4YIMPANT.js.map} +0 -0
  664. /package/dist/cli-bundle/chunks/{chunk-EOGBMLCE.js.map → chunk-73PTKMAE.js.map} +0 -0
  665. /package/dist/cli-bundle/chunks/{chunk-2WCYE3IF.js.map → chunk-7RIJGN4R.js.map} +0 -0
  666. /package/dist/cli-bundle/chunks/{chunk-CZIFFMZI.js.map → chunk-BN3CWK6G.js.map} +0 -0
  667. /package/dist/cli-bundle/chunks/{chunk-J3NMWFIN.js.map → chunk-C2KCIZKZ.js.map} +0 -0
  668. /package/dist/cli-bundle/chunks/{chunk-TIM4OD74.js.map → chunk-CHRNYKNI.js.map} +0 -0
  669. /package/dist/cli-bundle/chunks/{chunk-KIEAK7YE.js.map → chunk-D6USKAMA.js.map} +0 -0
  670. /package/dist/cli-bundle/chunks/{chunk-3BKH2CL3.js.map → chunk-DLDCPF5X.js.map} +0 -0
  671. /package/dist/cli-bundle/chunks/{chunk-CG3KP6I5.js.map → chunk-E2Q2ULMR.js.map} +0 -0
  672. /package/dist/cli-bundle/chunks/{chunk-PEL2NLQE.js.map → chunk-F6VH3LFC.js.map} +0 -0
  673. /package/dist/cli-bundle/chunks/{chunk-5BBEWX6C.js.map → chunk-FDEVKXC4.js.map} +0 -0
  674. /package/dist/cli-bundle/chunks/{chunk-QOUOMPHO.js.map → chunk-HUYYMTGW.js.map} +0 -0
  675. /package/dist/cli-bundle/chunks/{chunk-KKX4Z2SE.js.map → chunk-IHXXUIXS.js.map} +0 -0
  676. /package/dist/cli-bundle/chunks/{chunk-F4BNR2IN.js.map → chunk-JIP67N2K.js.map} +0 -0
  677. /package/dist/cli-bundle/chunks/{chunk-FMWW2JDU.js.map → chunk-KRASIL6M.js.map} +0 -0
  678. /package/dist/cli-bundle/chunks/{chunk-I6QMJ2XT.js.map → chunk-MLHX6DN5.js.map} +0 -0
  679. /package/dist/cli-bundle/chunks/{chunk-5S4ZGDB2.js.map → chunk-OB3RJV5F.js.map} +0 -0
  680. /package/dist/cli-bundle/chunks/{chunk-SKC4UTRP.js.map → chunk-OUQ5JEFM.js.map} +0 -0
  681. /package/dist/cli-bundle/chunks/{chunk-JPJDP4VU.js.map → chunk-QE5UFCCO.js.map} +0 -0
  682. /package/dist/cli-bundle/chunks/{chunk-WB5BYQMF.js.map → chunk-SJZTPVFT.js.map} +0 -0
  683. /package/dist/cli-bundle/chunks/{chunk-ZLWRPBOW.js.map → chunk-V3KLX7U7.js.map} +0 -0
  684. /package/dist/cli-bundle/chunks/{chunk-OQ2E64FH.js.map → chunk-Z5BM2FKQ.js.map} +0 -0
  685. /package/dist/cli-bundle/chunks/{chunk-IXAZI443.js.map → chunk-ZEATCVAC.js.map} +0 -0
  686. /package/dist/cli-bundle/chunks/{chunk-C4C3EJCJ.js.map → chunk-ZFIEEDTJ.js.map} +0 -0
  687. /package/dist/cli-bundle/chunks/{close-JEBZXONN.js.map → close-37KEHLYM.js.map} +0 -0
  688. /package/dist/cli-bundle/chunks/{close-QHMVWM7M.js.map → close-OP3LK7Z2.js.map} +0 -0
  689. /package/dist/cli-bundle/chunks/{create-CLSCHGJJ.js.map → context-7ZEZV3BV.js.map} +0 -0
  690. /package/dist/cli-bundle/chunks/{create-O4VONGPG.js.map → context-XDI4DKKT.js.map} +0 -0
  691. /package/dist/cli-bundle/chunks/{extension-YQF4CPIR.js.map → create-DFMNBKBS.js.map} +0 -0
  692. /package/dist/cli-bundle/chunks/{extension-3JYWJ5K2.js.map → create-J5Q2ELZT.js.map} +0 -0
  693. /package/dist/cli-bundle/chunks/{history-RUKPKNY7.js.map → extension-3LRYX7SW.js.map} +0 -0
  694. /package/dist/cli-bundle/chunks/{history-ALTM2RRP.js.map → extension-GMVOIP4O.js.map} +0 -0
  695. /package/dist/cli-bundle/chunks/{gc-BEJMQT64.js.map → gc-FULIVYR4.js.map} +0 -0
  696. /package/dist/cli-bundle/chunks/{gc-JEFQDJPA.js.map → gc-MDGRR2SU.js.map} +0 -0
  697. /package/dist/cli-bundle/chunks/{history-redact-5YGLWUDH.js.map → history-5XUSLAJA.js.map} +0 -0
  698. /package/dist/cli-bundle/chunks/{history-redact-YY4XYVEP.js.map → history-X4OSES6K.js.map} +0 -0
  699. /package/dist/cli-bundle/chunks/{init-HBFGYS66.js.map → history-redact-45YW65BK.js.map} +0 -0
  700. /package/dist/cli-bundle/chunks/{init-C4CRHW22.js.map → history-redact-BVHWDXPR.js.map} +0 -0
  701. /package/dist/cli-bundle/chunks/{list-C7R33MD5.js.map → init-KO7CGIRQ.js.map} +0 -0
  702. /package/dist/cli-bundle/chunks/{list-DSN6UNFB.js.map → init-TRYJELH4.js.map} +0 -0
  703. /package/dist/cli-bundle/chunks/{restore-LL2WLEDG.js.map → list-ROT7JF62.js.map} +0 -0
  704. /package/dist/cli-bundle/chunks/{restore-LQHXBAY5.js.map → list-Y6AU5BJS.js.map} +0 -0
  705. /package/dist/cli-bundle/chunks/{search-2EI6EAXH.js.map → restore-DKMCLPI5.js.map} +0 -0
  706. /package/dist/cli-bundle/chunks/{search-QBFBLQRO.js.map → restore-IRAKSWIW.js.map} +0 -0
  707. /package/dist/cli-bundle/chunks/{test-NV2DRPUS.js.map → schema-OLT6LVKH.js.map} +0 -0
  708. /package/dist/cli-bundle/chunks/{test-WA6RZGM2.js.map → schema-XJXKJQF5.js.map} +0 -0
  709. /package/dist/cli-bundle/chunks/{update-BSKMQOYH.js.map → search-CX5UMV4H.js.map} +0 -0
  710. /package/dist/cli-bundle/chunks/{update-FIGYNQ2I.js.map → search-KP6H7COV.js.map} +0 -0
  711. /package/dist/cli-bundle/chunks/{telemetry-LQ6FRTUT.js.map → telemetry-DIFPXCAT.js.map} +0 -0
  712. /package/dist/cli-bundle/chunks/{telemetry-BT2VSWU2.js.map → telemetry-WTYFUPRL.js.map} +0 -0
@@ -4,10 +4,11 @@
4
4
  * Provides filesystem helpers for Fs Utils.
5
5
  */
6
6
 
7
- !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]="4ddafbee-315f-5aa0-b08f-d4d7a82cfe8d")}catch(e){}}();
7
+ !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]="4ba3885b-85fc-5941-bf52-6c70b2bb5c2a")}catch(e){}}();
8
8
  import * as fs from "node:fs/promises";
9
9
  import path from "node:path";
10
10
  import crypto from "node:crypto";
11
+ const WINDOWS_RENAME_RETRY_DELAYS_MS = [10, 25, 50, 100];
11
12
  /**
12
13
  * Implements ensure dir for the public runtime surface of this module.
13
14
  */
@@ -52,6 +53,30 @@ export async function writeFileAtomic(targetPath, contents) {
52
53
  await fs.rename(tempPath, targetPath);
53
54
  }
54
55
  catch (error) {
56
+ if (process.platform === "win32" &&
57
+ (isErrno(error, "EPERM") || isErrno(error, "EBUSY"))) {
58
+ let lastError = error;
59
+ for (const delayMs of WINDOWS_RENAME_RETRY_DELAYS_MS) {
60
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
61
+ try {
62
+ await fs.rename(tempPath, targetPath);
63
+ return;
64
+ }
65
+ catch (retryError) {
66
+ lastError = retryError;
67
+ if (!isErrno(retryError, "EPERM") && !isErrno(retryError, "EBUSY")) {
68
+ break;
69
+ }
70
+ }
71
+ }
72
+ try {
73
+ await fs.unlink(tempPath);
74
+ }
75
+ catch {
76
+ // Best-effort cleanup only.
77
+ }
78
+ throw lastError;
79
+ }
55
80
  if (isErrno(error, "EXDEV")) {
56
81
  try {
57
82
  await fs.copyFile(tempPath, targetPath);
@@ -122,4 +147,4 @@ function isErrno(error, code) {
122
147
  return typeof error === "object" && error !== null && "code" in error && error.code === code;
123
148
  }
124
149
  //# sourceMappingURL=fs-utils.js.map
125
- //# debugId=4ddafbee-315f-5aa0-b08f-d4d7a82cfe8d
150
+ //# debugId=4ba3885b-85fc-5941-bf52-6c70b2bb5c2a
@@ -1 +1 @@
1
- {"version":3,"file":"fs-utils.js","sources":["core/fs/fs-utils.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module core/fs/fs-utils\n *\n * Provides filesystem helpers for Fs Utils.\n */\nimport * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport crypto from \"node:crypto\";\n\n/**\n * Implements ensure dir for the public runtime surface of this module.\n */\nexport async function ensureDir(dirPath: string): Promise<void> {\n await fs.mkdir(dirPath, { recursive: true });\n}\n\n/**\n * Implements path exists for the public runtime surface of this module.\n */\nexport async function pathExists(targetPath: string): Promise<boolean> {\n try {\n await fs.access(targetPath);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Implements read file if exists for the public runtime surface of this module.\n */\nexport async function readFileIfExists(targetPath: string): Promise<string | null> {\n try {\n return await fs.readFile(targetPath, \"utf8\");\n } catch (error: unknown) {\n if (isErrno(error, \"ENOENT\")) {\n return null;\n }\n throw error;\n }\n}\n\n/**\n * Implements write file atomic for the public runtime surface of this module.\n */\nexport async function writeFileAtomic(targetPath: string, contents: string): Promise<void> {\n const dirPath = path.dirname(targetPath);\n await ensureDir(dirPath);\n const tempPath = path.join(\n dirPath,\n `.${path.basename(targetPath)}.${process.pid}.${Date.now()}.${crypto.randomBytes(4).toString(\"hex\")}.tmp`,\n );\n await fs.writeFile(tempPath, contents, \"utf8\");\n try {\n await fs.rename(tempPath, targetPath);\n } catch (error: unknown) {\n if (isErrno(error, \"EXDEV\")) {\n try {\n await fs.copyFile(tempPath, targetPath);\n } finally {\n try {\n await fs.unlink(tempPath);\n } catch {\n // Best-effort cleanup only.\n }\n }\n return;\n }\n try {\n await fs.unlink(tempPath);\n } catch {\n // Best-effort cleanup only.\n }\n throw error;\n }\n}\n\n/**\n * Append a single newline-terminated line to a file, opened with `O_APPEND`.\n *\n * Concurrency contract: `O_APPEND` makes the seek-to-EOF that precedes each\n * `write(2)` atomic, so independent appenders never overwrite each other's\n * bytes. For the common case the whole `${line}\\n` buffer is handed to the\n * kernel in one `write(2)`, which mainstream filesystems (ext4/xfs/apfs) commit\n * atomically under the inode lock — concurrent multi-process appends of small\n * records (e.g. the telemetry and OTLP-span queues) therefore stay\n * line-coherent without an external lock.\n *\n * The guarantee weakens only for a single record large enough that the OS\n * splits it across multiple `write(2)` calls (multi-KiB lines), where another\n * process's append could interleave between fragments. History JSONL — the only\n * caller that can produce large lines — is always written while the per-item\n * store lock is held (see core/store/item-store.ts), so those appends are\n * serialized regardless. Callers writing large records concurrently from\n * multiple processes must hold an equivalent lock.\n */\nexport async function appendLineAtomic(targetPath: string, line: string): Promise<void> {\n const dirPath = path.dirname(targetPath);\n await ensureDir(dirPath);\n const handle = await fs.open(targetPath, \"a\");\n try {\n await handle.writeFile(`${line}\\n`, \"utf8\");\n } finally {\n await handle.close();\n }\n}\n\n/**\n * Implements remove file if exists for the public runtime surface of this module.\n */\nexport async function removeFileIfExists(targetPath: string): Promise<void> {\n try {\n await fs.unlink(targetPath);\n } catch (error: unknown) {\n if (!isErrno(error, \"ENOENT\")) {\n throw error;\n }\n }\n}\n\nfunction isErrno(error: unknown, code: string): boolean {\n return typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: string }).code === code;\n}\n"],"names":[],"mappings":"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","debugId":"4ddafbee-315f-5aa0-b08f-d4d7a82cfe8d"}
1
+ {"version":3,"file":"fs-utils.js","sources":["core/fs/fs-utils.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module core/fs/fs-utils\n *\n * Provides filesystem helpers for Fs Utils.\n */\nimport * as fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport crypto from \"node:crypto\";\n\nconst WINDOWS_RENAME_RETRY_DELAYS_MS = [10, 25, 50, 100];\n\n/**\n * Implements ensure dir for the public runtime surface of this module.\n */\nexport async function ensureDir(dirPath: string): Promise<void> {\n await fs.mkdir(dirPath, { recursive: true });\n}\n\n/**\n * Implements path exists for the public runtime surface of this module.\n */\nexport async function pathExists(targetPath: string): Promise<boolean> {\n try {\n await fs.access(targetPath);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Implements read file if exists for the public runtime surface of this module.\n */\nexport async function readFileIfExists(targetPath: string): Promise<string | null> {\n try {\n return await fs.readFile(targetPath, \"utf8\");\n } catch (error: unknown) {\n if (isErrno(error, \"ENOENT\")) {\n return null;\n }\n throw error;\n }\n}\n\n/**\n * Implements write file atomic for the public runtime surface of this module.\n */\nexport async function writeFileAtomic(targetPath: string, contents: string): Promise<void> {\n const dirPath = path.dirname(targetPath);\n await ensureDir(dirPath);\n const tempPath = path.join(\n dirPath,\n `.${path.basename(targetPath)}.${process.pid}.${Date.now()}.${crypto.randomBytes(4).toString(\"hex\")}.tmp`,\n );\n await fs.writeFile(tempPath, contents, \"utf8\");\n try {\n await fs.rename(tempPath, targetPath);\n } catch (error: unknown) {\n if (\n process.platform === \"win32\" &&\n (isErrno(error, \"EPERM\") || isErrno(error, \"EBUSY\"))\n ) {\n let lastError = error;\n for (const delayMs of WINDOWS_RENAME_RETRY_DELAYS_MS) {\n await new Promise<void>((resolve) => setTimeout(resolve, delayMs));\n try {\n await fs.rename(tempPath, targetPath);\n return;\n } catch (retryError: unknown) {\n lastError = retryError;\n if (!isErrno(retryError, \"EPERM\") && !isErrno(retryError, \"EBUSY\")) {\n break;\n }\n }\n }\n try {\n await fs.unlink(tempPath);\n } catch {\n // Best-effort cleanup only.\n }\n throw lastError;\n }\n if (isErrno(error, \"EXDEV\")) {\n try {\n await fs.copyFile(tempPath, targetPath);\n } finally {\n try {\n await fs.unlink(tempPath);\n } catch {\n // Best-effort cleanup only.\n }\n }\n return;\n }\n try {\n await fs.unlink(tempPath);\n } catch {\n // Best-effort cleanup only.\n }\n throw error;\n }\n}\n\n/**\n * Append a single newline-terminated line to a file, opened with `O_APPEND`.\n *\n * Concurrency contract: `O_APPEND` makes the seek-to-EOF that precedes each\n * `write(2)` atomic, so independent appenders never overwrite each other's\n * bytes. For the common case the whole `${line}\\n` buffer is handed to the\n * kernel in one `write(2)`, which mainstream filesystems (ext4/xfs/apfs) commit\n * atomically under the inode lock — concurrent multi-process appends of small\n * records (e.g. the telemetry and OTLP-span queues) therefore stay\n * line-coherent without an external lock.\n *\n * The guarantee weakens only for a single record large enough that the OS\n * splits it across multiple `write(2)` calls (multi-KiB lines), where another\n * process's append could interleave between fragments. History JSONL — the only\n * caller that can produce large lines — is always written while the per-item\n * store lock is held (see core/store/item-store.ts), so those appends are\n * serialized regardless. Callers writing large records concurrently from\n * multiple processes must hold an equivalent lock.\n */\nexport async function appendLineAtomic(targetPath: string, line: string): Promise<void> {\n const dirPath = path.dirname(targetPath);\n await ensureDir(dirPath);\n const handle = await fs.open(targetPath, \"a\");\n try {\n await handle.writeFile(`${line}\\n`, \"utf8\");\n } finally {\n await handle.close();\n }\n}\n\n/**\n * Implements remove file if exists for the public runtime surface of this module.\n */\nexport async function removeFileIfExists(targetPath: string): Promise<void> {\n try {\n await fs.unlink(targetPath);\n } catch (error: unknown) {\n if (!isErrno(error, \"ENOENT\")) {\n throw error;\n }\n }\n}\n\nfunction isErrno(error: unknown, code: string): boolean {\n return typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: string }).code === code;\n}\n"],"names":[],"mappings":"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","debugId":"4ba3885b-85fc-5941-bf52-6c70b2bb5c2a"}
@@ -0,0 +1,57 @@
1
+ import type { RuntimeStatusRegistry } from "../schema/runtime-schema.js";
2
+ import type { ItemFrontMatter, ItemStatus } from "../../types/index.js";
3
+ /**
4
+ * Collects the blocker item ids declared by an item: the legacy scalar
5
+ * `blocked_by` field plus every `blocked_by` dependency edge. Ids are trimmed,
6
+ * de-duplicated, and returned in stable lexicographic order. This is the single
7
+ * source of truth for "what must close before this item can proceed", shared by
8
+ * `pm next` readiness classification and the close-time auto-unblock sweep.
9
+ */
10
+ export declare function collectBlockedByIds(item: Pick<ItemFrontMatter, "blocked_by" | "dependencies">): string[];
11
+ /** A blocker reference resolved against the corpus and annotated with its state. */
12
+ export interface ResolvedBlocker {
13
+ id: string;
14
+ title: string | null;
15
+ status: ItemStatus | null;
16
+ /** True when the blocker no longer gates work: its id is unknown or terminal. */
17
+ resolved: boolean;
18
+ }
19
+ /**
20
+ * Resolves an item's declared blockers against a corpus index, annotating each
21
+ * with the blocker's title/status and whether it still gates work. A blocker is
22
+ * treated as resolved when its id is unknown (a dangling reference cannot be
23
+ * waited on) or the referenced item is terminal — mirroring the close-time
24
+ * auto-unblock rule, which only clears a dependent once its blocker is terminal.
25
+ */
26
+ export declare function resolveItemBlockers(item: Pick<ItemFrontMatter, "blocked_by" | "dependencies">, itemsById: Map<string, ItemFrontMatter>, statusRegistry: RuntimeStatusRegistry): ResolvedBlocker[];
27
+ /** A classified actionable item plus the context an agent needs to act on it. */
28
+ export interface ActionableEntry {
29
+ item: ItemFrontMatter;
30
+ /** Blockers that still gate the item (resolved blockers are filtered out). */
31
+ open_blockers: ResolvedBlocker[];
32
+ /** Ids of non-terminal items whose `blocked_by` points at this item. */
33
+ unblocks: string[];
34
+ }
35
+ /** Result of partitioning a candidate set into ready vs blocked leaf work. */
36
+ export interface ActionabilityReport {
37
+ /** Active leaves with no open blockers — ready to work on now. */
38
+ ready: ActionableEntry[];
39
+ /** Active leaves with at least one open blocker — waiting to become ready. */
40
+ blocked: ActionableEntry[];
41
+ /** Active candidates considered before the leaf/blocker split. */
42
+ active_count: number;
43
+ /** Active candidates skipped because they still have open descendants. */
44
+ container_count: number;
45
+ }
46
+ /**
47
+ * Partitions a candidate set into ready vs blocked leaf work using the corpus to
48
+ * resolve blockers, descendants, and downstream dependents.
49
+ *
50
+ * An item qualifies when its status is active. Containers — items with at least
51
+ * one non-terminal descendant — are excluded from both lists because the real
52
+ * work is the leaf beneath them. A leaf with no open blockers is READY; a leaf
53
+ * with one or more open blockers is BLOCKED, annotated with the unresolved
54
+ * blockers and the non-terminal items it would unblock. Returned lists preserve
55
+ * the candidate order so the caller can apply its own ranking.
56
+ */
57
+ export declare function computeActionabilityReport(candidates: ItemFrontMatter[], corpus: ItemFrontMatter[], statusRegistry: RuntimeStatusRegistry): ActionabilityReport;
@@ -0,0 +1,178 @@
1
+ /**
2
+ * @module core/item/actionability
3
+ *
4
+ * Pure, dependency-aware actionability model shared by the `pm next` command and
5
+ * the close-time auto-unblock sweep. It answers "what is ready to work on now?"
6
+ * without any I/O: given a candidate set and the surrounding corpus it partitions
7
+ * work into READY items (active, leaf, no open blockers) and BLOCKED items (active
8
+ * leaf waiting on at least one open blocker). Keeping the logic here — rather than
9
+ * inside a CLI command — makes it trivially testable and reusable, and gives the
10
+ * `blocked_by` resolution a single source of truth.
11
+ */
12
+
13
+ !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]="b38f538c-6772-5336-bea4-8c72447c236f")}catch(e){}}();
14
+ import { isTerminalStatus, normalizeStatusForRegistry } from "./status.js";
15
+ /** Dependency kind that marks "this item is blocked by the referenced item". */
16
+ const BLOCKED_BY_DEPENDENCY_KIND = "blocked_by";
17
+ /**
18
+ * Normalizes an item id / parent reference / blocker id to its canonical
19
+ * comparison key (trimmed, lowercased). pm ids are canonically lowercase, but
20
+ * resolving case-insensitively — as {@link collectSubtreeIds} does — keeps a
21
+ * hand-edited mixed-case reference from being silently treated as missing.
22
+ */
23
+ function normalizeItemId(id) {
24
+ return id.trim().toLowerCase();
25
+ }
26
+ /**
27
+ * Collects the blocker item ids declared by an item: the legacy scalar
28
+ * `blocked_by` field plus every `blocked_by` dependency edge. Ids are trimmed,
29
+ * de-duplicated, and returned in stable lexicographic order. This is the single
30
+ * source of truth for "what must close before this item can proceed", shared by
31
+ * `pm next` readiness classification and the close-time auto-unblock sweep.
32
+ */
33
+ export function collectBlockedByIds(item) {
34
+ const ids = new Set();
35
+ const scalar = typeof item.blocked_by === "string" ? item.blocked_by.trim() : "";
36
+ if (scalar.length > 0) {
37
+ ids.add(scalar);
38
+ }
39
+ for (const dependency of item.dependencies ?? []) {
40
+ if (dependency.kind === BLOCKED_BY_DEPENDENCY_KIND &&
41
+ typeof dependency.id === "string" &&
42
+ dependency.id.trim().length > 0) {
43
+ ids.add(dependency.id.trim());
44
+ }
45
+ }
46
+ return [...ids].sort((left, right) => left.localeCompare(right));
47
+ }
48
+ /**
49
+ * Resolves an item's declared blockers against a corpus index, annotating each
50
+ * with the blocker's title/status and whether it still gates work. A blocker is
51
+ * treated as resolved when its id is unknown (a dangling reference cannot be
52
+ * waited on) or the referenced item is terminal — mirroring the close-time
53
+ * auto-unblock rule, which only clears a dependent once its blocker is terminal.
54
+ */
55
+ export function resolveItemBlockers(item, itemsById, statusRegistry) {
56
+ return collectBlockedByIds(item).map((id) => {
57
+ const blocker = itemsById.get(normalizeItemId(id));
58
+ if (!blocker) {
59
+ return { id, title: null, status: null, resolved: true };
60
+ }
61
+ return {
62
+ id,
63
+ title: blocker.title,
64
+ status: blocker.status,
65
+ resolved: isTerminalStatus(blocker.status, statusRegistry),
66
+ };
67
+ });
68
+ }
69
+ /**
70
+ * Resolves the registry's active status set, falling back to just the canonical
71
+ * open status when a custom schema declares none — the same safety net `pm
72
+ * context` applies so the report never misclassifies every item as inactive.
73
+ */
74
+ function resolveActiveStatusSet(statusRegistry) {
75
+ /* c8 ignore start -- fallback applies only to custom schemas that intentionally define zero active statuses */
76
+ return statusRegistry.active_statuses.size > 0 ? statusRegistry.active_statuses : new Set([statusRegistry.open_status]);
77
+ /* c8 ignore stop */
78
+ }
79
+ /**
80
+ * Returns whether an item has any non-terminal descendant by walking the
81
+ * parent→children index depth-first, short-circuiting on the first one found.
82
+ * Such an item is a container (its real work lives in its children), so `pm next`
83
+ * skips it and recommends a leaf instead. Cycle-safe via a visited set.
84
+ */
85
+ function hasOpenDescendant(rootId, childrenByParent, statusRegistry) {
86
+ const stack = [normalizeItemId(rootId)];
87
+ const visited = new Set();
88
+ while (stack.length > 0) {
89
+ const current = stack.pop();
90
+ /* c8 ignore start -- defensive cycle-guard: unreachable for active roots (an open child returns before any node is revisited, and single-parent graphs cannot form a root-reachable cycle excluding the root), retained for safety */
91
+ if (visited.has(current))
92
+ continue;
93
+ /* c8 ignore stop */
94
+ visited.add(current);
95
+ for (const child of childrenByParent.get(current) ?? []) {
96
+ if (!isTerminalStatus(child.status, statusRegistry)) {
97
+ return true;
98
+ }
99
+ stack.push(normalizeItemId(child.id));
100
+ }
101
+ }
102
+ return false;
103
+ }
104
+ /**
105
+ * Indexes the corpus into a by-id map, a parent→children map, and a reverse
106
+ * blocker map (blocker id → ids of items it blocks). Built once per report so
107
+ * blocker resolution, descendant counting, and downstream "unblocks" lookups
108
+ * share the same passes over the corpus.
109
+ */
110
+ function indexCorpus(corpus) {
111
+ const itemsById = new Map();
112
+ const childrenByParent = new Map();
113
+ const blockedByReverse = new Map();
114
+ for (const item of corpus) {
115
+ // Index keys are normalized (lowercased) for case-insensitive resolution;
116
+ // stored values keep the item's original-case id for display.
117
+ itemsById.set(normalizeItemId(item.id), item);
118
+ const parent = typeof item.parent === "string" ? item.parent.trim() : "";
119
+ if (parent.length > 0) {
120
+ const parentKey = normalizeItemId(parent);
121
+ const siblings = childrenByParent.get(parentKey) ?? [];
122
+ siblings.push(item);
123
+ childrenByParent.set(parentKey, siblings);
124
+ }
125
+ for (const blockerId of collectBlockedByIds(item)) {
126
+ const blockerKey = normalizeItemId(blockerId);
127
+ const dependents = blockedByReverse.get(blockerKey) ?? [];
128
+ dependents.push(item.id);
129
+ blockedByReverse.set(blockerKey, dependents);
130
+ }
131
+ }
132
+ return { itemsById, childrenByParent, blockedByReverse };
133
+ }
134
+ /**
135
+ * Partitions a candidate set into ready vs blocked leaf work using the corpus to
136
+ * resolve blockers, descendants, and downstream dependents.
137
+ *
138
+ * An item qualifies when its status is active. Containers — items with at least
139
+ * one non-terminal descendant — are excluded from both lists because the real
140
+ * work is the leaf beneath them. A leaf with no open blockers is READY; a leaf
141
+ * with one or more open blockers is BLOCKED, annotated with the unresolved
142
+ * blockers and the non-terminal items it would unblock. Returned lists preserve
143
+ * the candidate order so the caller can apply its own ranking.
144
+ */
145
+ export function computeActionabilityReport(candidates, corpus, statusRegistry) {
146
+ const { itemsById, childrenByParent, blockedByReverse } = indexCorpus(corpus);
147
+ const activeStatuses = resolveActiveStatusSet(statusRegistry);
148
+ // Ids of corpus items still in flight, used to keep only the non-terminal
149
+ // dependents in each item's downstream "unblocks" list.
150
+ const nonTerminalIds = new Set(corpus.filter((entry) => !isTerminalStatus(entry.status, statusRegistry)).map((entry) => normalizeItemId(entry.id)));
151
+ const ready = [];
152
+ const blocked = [];
153
+ let activeCount = 0;
154
+ let containerCount = 0;
155
+ for (const item of candidates) {
156
+ if (!activeStatuses.has(normalizeStatusForRegistry(item.status, statusRegistry)))
157
+ continue;
158
+ activeCount += 1;
159
+ if (hasOpenDescendant(item.id, childrenByParent, statusRegistry)) {
160
+ containerCount += 1;
161
+ continue;
162
+ }
163
+ const openBlockers = resolveItemBlockers(item, itemsById, statusRegistry).filter((blocker) => !blocker.resolved);
164
+ const unblocks = (blockedByReverse.get(normalizeItemId(item.id)) ?? [])
165
+ .filter((dependentId) => nonTerminalIds.has(normalizeItemId(dependentId)))
166
+ .sort((left, right) => left.localeCompare(right));
167
+ const entry = { item, open_blockers: openBlockers, unblocks };
168
+ if (openBlockers.length === 0) {
169
+ ready.push(entry);
170
+ }
171
+ else {
172
+ blocked.push(entry);
173
+ }
174
+ }
175
+ return { ready, blocked, active_count: activeCount, container_count: containerCount };
176
+ }
177
+ //# sourceMappingURL=actionability.js.map
178
+ //# debugId=b38f538c-6772-5336-bea4-8c72447c236f
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionability.js","sources":["core/item/actionability.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module core/item/actionability\n *\n * Pure, dependency-aware actionability model shared by the `pm next` command and\n * the close-time auto-unblock sweep. It answers \"what is ready to work on now?\"\n * without any I/O: given a candidate set and the surrounding corpus it partitions\n * work into READY items (active, leaf, no open blockers) and BLOCKED items (active\n * leaf waiting on at least one open blocker). Keeping the logic here — rather than\n * inside a CLI command — makes it trivially testable and reusable, and gives the\n * `blocked_by` resolution a single source of truth.\n */\nimport { isTerminalStatus, normalizeStatusForRegistry } from \"./status.js\";\nimport type { RuntimeStatusRegistry } from \"../schema/runtime-schema.js\";\nimport type { ItemFrontMatter, ItemStatus } from \"../../types/index.js\";\n\n/** Dependency kind that marks \"this item is blocked by the referenced item\". */\nconst BLOCKED_BY_DEPENDENCY_KIND = \"blocked_by\";\n\n/**\n * Normalizes an item id / parent reference / blocker id to its canonical\n * comparison key (trimmed, lowercased). pm ids are canonically lowercase, but\n * resolving case-insensitively — as {@link collectSubtreeIds} does — keeps a\n * hand-edited mixed-case reference from being silently treated as missing.\n */\nfunction normalizeItemId(id: string): string {\n return id.trim().toLowerCase();\n}\n\n/**\n * Collects the blocker item ids declared by an item: the legacy scalar\n * `blocked_by` field plus every `blocked_by` dependency edge. Ids are trimmed,\n * de-duplicated, and returned in stable lexicographic order. This is the single\n * source of truth for \"what must close before this item can proceed\", shared by\n * `pm next` readiness classification and the close-time auto-unblock sweep.\n */\nexport function collectBlockedByIds(item: Pick<ItemFrontMatter, \"blocked_by\" | \"dependencies\">): string[] {\n const ids = new Set<string>();\n const scalar = typeof item.blocked_by === \"string\" ? item.blocked_by.trim() : \"\";\n if (scalar.length > 0) {\n ids.add(scalar);\n }\n for (const dependency of item.dependencies ?? []) {\n if (\n dependency.kind === BLOCKED_BY_DEPENDENCY_KIND &&\n typeof dependency.id === \"string\" &&\n dependency.id.trim().length > 0\n ) {\n ids.add(dependency.id.trim());\n }\n }\n return [...ids].sort((left, right) => left.localeCompare(right));\n}\n\n/** A blocker reference resolved against the corpus and annotated with its state. */\nexport interface ResolvedBlocker {\n id: string;\n title: string | null;\n status: ItemStatus | null;\n /** True when the blocker no longer gates work: its id is unknown or terminal. */\n resolved: boolean;\n}\n\n/**\n * Resolves an item's declared blockers against a corpus index, annotating each\n * with the blocker's title/status and whether it still gates work. A blocker is\n * treated as resolved when its id is unknown (a dangling reference cannot be\n * waited on) or the referenced item is terminal — mirroring the close-time\n * auto-unblock rule, which only clears a dependent once its blocker is terminal.\n */\nexport function resolveItemBlockers(\n item: Pick<ItemFrontMatter, \"blocked_by\" | \"dependencies\">,\n itemsById: Map<string, ItemFrontMatter>,\n statusRegistry: RuntimeStatusRegistry,\n): ResolvedBlocker[] {\n return collectBlockedByIds(item).map((id) => {\n const blocker = itemsById.get(normalizeItemId(id));\n if (!blocker) {\n return { id, title: null, status: null, resolved: true };\n }\n return {\n id,\n title: blocker.title,\n status: blocker.status,\n resolved: isTerminalStatus(blocker.status, statusRegistry),\n };\n });\n}\n\n/** A classified actionable item plus the context an agent needs to act on it. */\nexport interface ActionableEntry {\n item: ItemFrontMatter;\n /** Blockers that still gate the item (resolved blockers are filtered out). */\n open_blockers: ResolvedBlocker[];\n /** Ids of non-terminal items whose `blocked_by` points at this item. */\n unblocks: string[];\n}\n\n/** Result of partitioning a candidate set into ready vs blocked leaf work. */\nexport interface ActionabilityReport {\n /** Active leaves with no open blockers — ready to work on now. */\n ready: ActionableEntry[];\n /** Active leaves with at least one open blocker — waiting to become ready. */\n blocked: ActionableEntry[];\n /** Active candidates considered before the leaf/blocker split. */\n active_count: number;\n /** Active candidates skipped because they still have open descendants. */\n container_count: number;\n}\n\n/**\n * Resolves the registry's active status set, falling back to just the canonical\n * open status when a custom schema declares none — the same safety net `pm\n * context` applies so the report never misclassifies every item as inactive.\n */\nfunction resolveActiveStatusSet(statusRegistry: RuntimeStatusRegistry): Set<string> {\n /* c8 ignore start -- fallback applies only to custom schemas that intentionally define zero active statuses */\n return statusRegistry.active_statuses.size > 0 ? statusRegistry.active_statuses : new Set<string>([statusRegistry.open_status]);\n /* c8 ignore stop */\n}\n\n/**\n * Returns whether an item has any non-terminal descendant by walking the\n * parent→children index depth-first, short-circuiting on the first one found.\n * Such an item is a container (its real work lives in its children), so `pm next`\n * skips it and recommends a leaf instead. Cycle-safe via a visited set.\n */\nfunction hasOpenDescendant(\n rootId: string,\n childrenByParent: Map<string, ItemFrontMatter[]>,\n statusRegistry: RuntimeStatusRegistry,\n): boolean {\n const stack = [normalizeItemId(rootId)];\n const visited = new Set<string>();\n while (stack.length > 0) {\n const current = stack.pop() as string;\n /* c8 ignore start -- defensive cycle-guard: unreachable for active roots (an open child returns before any node is revisited, and single-parent graphs cannot form a root-reachable cycle excluding the root), retained for safety */\n if (visited.has(current)) continue;\n /* c8 ignore stop */\n visited.add(current);\n for (const child of childrenByParent.get(current) ?? []) {\n if (!isTerminalStatus(child.status, statusRegistry)) {\n return true;\n }\n stack.push(normalizeItemId(child.id));\n }\n }\n return false;\n}\n\n/**\n * Indexes the corpus into a by-id map, a parent→children map, and a reverse\n * blocker map (blocker id → ids of items it blocks). Built once per report so\n * blocker resolution, descendant counting, and downstream \"unblocks\" lookups\n * share the same passes over the corpus.\n */\nfunction indexCorpus(corpus: ItemFrontMatter[]): {\n itemsById: Map<string, ItemFrontMatter>;\n childrenByParent: Map<string, ItemFrontMatter[]>;\n blockedByReverse: Map<string, string[]>;\n} {\n const itemsById = new Map<string, ItemFrontMatter>();\n const childrenByParent = new Map<string, ItemFrontMatter[]>();\n const blockedByReverse = new Map<string, string[]>();\n for (const item of corpus) {\n // Index keys are normalized (lowercased) for case-insensitive resolution;\n // stored values keep the item's original-case id for display.\n itemsById.set(normalizeItemId(item.id), item);\n const parent = typeof item.parent === \"string\" ? item.parent.trim() : \"\";\n if (parent.length > 0) {\n const parentKey = normalizeItemId(parent);\n const siblings = childrenByParent.get(parentKey) ?? [];\n siblings.push(item);\n childrenByParent.set(parentKey, siblings);\n }\n for (const blockerId of collectBlockedByIds(item)) {\n const blockerKey = normalizeItemId(blockerId);\n const dependents = blockedByReverse.get(blockerKey) ?? [];\n dependents.push(item.id);\n blockedByReverse.set(blockerKey, dependents);\n }\n }\n return { itemsById, childrenByParent, blockedByReverse };\n}\n\n/**\n * Partitions a candidate set into ready vs blocked leaf work using the corpus to\n * resolve blockers, descendants, and downstream dependents.\n *\n * An item qualifies when its status is active. Containers — items with at least\n * one non-terminal descendant — are excluded from both lists because the real\n * work is the leaf beneath them. A leaf with no open blockers is READY; a leaf\n * with one or more open blockers is BLOCKED, annotated with the unresolved\n * blockers and the non-terminal items it would unblock. Returned lists preserve\n * the candidate order so the caller can apply its own ranking.\n */\nexport function computeActionabilityReport(\n candidates: ItemFrontMatter[],\n corpus: ItemFrontMatter[],\n statusRegistry: RuntimeStatusRegistry,\n): ActionabilityReport {\n const { itemsById, childrenByParent, blockedByReverse } = indexCorpus(corpus);\n const activeStatuses = resolveActiveStatusSet(statusRegistry);\n // Ids of corpus items still in flight, used to keep only the non-terminal\n // dependents in each item's downstream \"unblocks\" list.\n const nonTerminalIds = new Set(\n corpus.filter((entry) => !isTerminalStatus(entry.status, statusRegistry)).map((entry) => normalizeItemId(entry.id)),\n );\n const ready: ActionableEntry[] = [];\n const blocked: ActionableEntry[] = [];\n let activeCount = 0;\n let containerCount = 0;\n for (const item of candidates) {\n if (!activeStatuses.has(normalizeStatusForRegistry(item.status, statusRegistry))) continue;\n activeCount += 1;\n if (hasOpenDescendant(item.id, childrenByParent, statusRegistry)) {\n containerCount += 1;\n continue;\n }\n const openBlockers = resolveItemBlockers(item, itemsById, statusRegistry).filter((blocker) => !blocker.resolved);\n const unblocks = (blockedByReverse.get(normalizeItemId(item.id)) ?? [])\n .filter((dependentId) => nonTerminalIds.has(normalizeItemId(dependentId)))\n .sort((left, right) => left.localeCompare(right));\n const entry: ActionableEntry = { item, open_blockers: openBlockers, unblocks };\n if (openBlockers.length === 0) {\n ready.push(entry);\n } else {\n blocked.push(entry);\n }\n }\n return { ready, blocked, active_count: activeCount, container_count: containerCount };\n}\n"],"names":[],"mappings":"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","debugId":"b38f538c-6772-5336-bea4-8c72447c236f"}
@@ -4,7 +4,7 @@
4
4
  * Defines item parsing, formatting, and lifecycle helpers for Type Registry.
5
5
  */
6
6
 
7
- !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]="297c9e93-e665-5a35-8315-4b499f702563")}catch(e){}}();
7
+ !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]="aca609de-d881-5f34-804f-ed3daa6aab2a")}catch(e){}}();
8
8
  import { TYPE_TO_FOLDER } from "../shared/constants.js";
9
9
  import { ITEM_TYPE_VALUES } from "../../types/index.js";
10
10
  import { normalizeItemTypeDefinition as normalizeSharedItemTypeDefinition, normalizeItemTypeStringList, strictPolicyCommand, } from "./item-type-definition.js";
@@ -23,14 +23,9 @@ export const DEFAULT_REQUIRED_CREATE_FIELDS = [
23
23
  "assignee",
24
24
  ];
25
25
  export const DEFAULT_REQUIRED_CREATE_REPEATABLES = ["dep", "comment", "note", "learning", "file", "test", "doc"];
26
- const CREATE_COMMAND_OPTION_KEYS = [
27
- "title",
28
- "description",
29
- "type",
30
- "status",
31
- "priority",
32
- "tags",
33
- "body",
26
+ // Keep aligned with cli/commands/shared-unset-fields.ts. This core registry
27
+ // cannot import CLI unset metadata without creating a core -> CLI dependency.
28
+ const COMMON_MUTATION_COMMAND_OPTION_KEYS = [
34
29
  "deadline",
35
30
  "estimatedMinutes",
36
31
  "acceptanceCriteria",
@@ -42,8 +37,6 @@ const CREATE_COMMAND_OPTION_KEYS = [
42
37
  "impact",
43
38
  "outcome",
44
39
  "whyNow",
45
- "author",
46
- "message",
47
40
  "assignee",
48
41
  "parent",
49
42
  "reviewer",
@@ -66,6 +59,18 @@ const CREATE_COMMAND_OPTION_KEYS = [
66
59
  "component",
67
60
  "regression",
68
61
  "customerImpact",
62
+ ];
63
+ const CREATE_COMMAND_OPTION_KEYS = [
64
+ "title",
65
+ "description",
66
+ "type",
67
+ "status",
68
+ "priority",
69
+ "tags",
70
+ "body",
71
+ ...COMMON_MUTATION_COMMAND_OPTION_KEYS,
72
+ "author",
73
+ "message",
69
74
  "dep",
70
75
  "comment",
71
76
  "note",
@@ -87,41 +92,9 @@ const UPDATE_COMMAND_OPTION_KEYS = [
87
92
  "priority",
88
93
  "type",
89
94
  "tags",
90
- "deadline",
91
- "estimatedMinutes",
92
- "acceptanceCriteria",
93
- "definitionOfReady",
94
- "order",
95
- "goal",
96
- "objective",
97
- "value",
98
- "impact",
99
- "outcome",
100
- "whyNow",
95
+ ...COMMON_MUTATION_COMMAND_OPTION_KEYS,
101
96
  "author",
102
97
  "message",
103
- "assignee",
104
- "parent",
105
- "reviewer",
106
- "risk",
107
- "confidence",
108
- "sprint",
109
- "release",
110
- "blockedBy",
111
- "blockedReason",
112
- "unblockNote",
113
- "reporter",
114
- "severity",
115
- "environment",
116
- "reproSteps",
117
- "resolution",
118
- "expectedResult",
119
- "actualResult",
120
- "affectedVersion",
121
- "fixedVersion",
122
- "component",
123
- "regression",
124
- "customerImpact",
125
98
  "comment",
126
99
  "note",
127
100
  "learning",
@@ -690,4 +663,4 @@ export function validateTypeOptions(typeName, rawTypeOptions, registry) {
690
663
  };
691
664
  }
692
665
  //# sourceMappingURL=type-registry.js.map
693
- //# debugId=297c9e93-e665-5a35-8315-4b499f702563
666
+ //# debugId=aca609de-d881-5f34-804f-ed3daa6aab2a