@unbrained/pm-cli 2026.6.8 → 2026.6.10

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 (527) hide show
  1. package/CHANGELOG.md +74 -11
  2. package/dist/cli/bootstrap-args.js +4 -2
  3. package/dist/cli/bootstrap-args.js.map +1 -1
  4. package/dist/cli/commands/aggregate.d.ts +7 -0
  5. package/dist/cli/commands/aggregate.js +53 -12
  6. package/dist/cli/commands/aggregate.js.map +1 -1
  7. package/dist/cli/commands/close.d.ts +1 -0
  8. package/dist/cli/commands/close.js +106 -3
  9. package/dist/cli/commands/close.js.map +1 -1
  10. package/dist/cli/commands/completion.js +20 -7
  11. package/dist/cli/commands/completion.js.map +1 -1
  12. package/dist/cli/commands/context.d.ts +9 -0
  13. package/dist/cli/commands/context.js +149 -20
  14. package/dist/cli/commands/context.js.map +1 -1
  15. package/dist/cli/commands/create.d.ts +1 -0
  16. package/dist/cli/commands/create.js +5 -3
  17. package/dist/cli/commands/create.js.map +1 -1
  18. package/dist/cli/commands/extension.js +4 -2
  19. package/dist/cli/commands/extension.js.map +1 -1
  20. package/dist/cli/commands/health.js +44 -6
  21. package/dist/cli/commands/health.js.map +1 -1
  22. package/dist/cli/commands/history.js +6 -5
  23. package/dist/cli/commands/history.js.map +1 -1
  24. package/dist/cli/commands/linked-test-parsers.d.ts +1 -0
  25. package/dist/cli/commands/linked-test-parsers.js +289 -2
  26. package/dist/cli/commands/linked-test-parsers.js.map +1 -1
  27. package/dist/cli/commands/reindex.d.ts +1 -0
  28. package/dist/cli/commands/reindex.js +33 -4
  29. package/dist/cli/commands/reindex.js.map +1 -1
  30. package/dist/cli/commands/test.d.ts +6 -0
  31. package/dist/cli/commands/test.js +46 -5
  32. package/dist/cli/commands/test.js.map +1 -1
  33. package/dist/cli/extension-command-help.d.ts +1 -0
  34. package/dist/cli/extension-command-help.js +42 -2
  35. package/dist/cli/extension-command-help.js.map +1 -1
  36. package/dist/cli/extension-command-options.d.ts +2 -0
  37. package/dist/cli/extension-command-options.js +89 -17
  38. package/dist/cli/extension-command-options.js.map +1 -1
  39. package/dist/cli/main.js +26 -26
  40. package/dist/cli/main.js.map +1 -1
  41. package/dist/cli/register-list-query.js +3 -2
  42. package/dist/cli/register-list-query.js.map +1 -1
  43. package/dist/cli/register-mutation.js +4 -2
  44. package/dist/cli/register-mutation.js.map +1 -1
  45. package/dist/cli/register-operations.js +15 -6
  46. package/dist/cli/register-operations.js.map +1 -1
  47. package/dist/cli/registration-helpers.js +9 -2
  48. package/dist/cli/registration-helpers.js.map +1 -1
  49. package/dist/cli-bundle/chunks/activity-5QLX6DHN.js +16 -0
  50. package/dist/cli-bundle/chunks/{activity-Q7XMIZIH.js → activity-W6TS5F2L.js} +11 -11
  51. package/dist/cli-bundle/chunks/{aggregate-GBSHSXOB.js → aggregate-NNJLKGEK.js} +64 -24
  52. package/dist/cli-bundle/chunks/aggregate-NNJLKGEK.js.map +7 -0
  53. package/dist/cli-bundle/chunks/{aggregate-HKQJZUBG.js → aggregate-UK2WJ4Z3.js} +65 -25
  54. package/dist/cli-bundle/chunks/aggregate-UK2WJ4Z3.js.map +1 -0
  55. package/dist/cli-bundle/chunks/{append-3RFOU7P5.js → append-7BS36Z2L.js} +8 -8
  56. package/dist/cli-bundle/chunks/{append-OM74OJVT.js → append-DHGTLUZW.js} +8 -8
  57. package/dist/cli-bundle/chunks/{chunk-SDLEYY6A.js → chunk-2MKBPWMK.js} +6 -8
  58. package/dist/cli-bundle/chunks/{chunk-SDLEYY6A.js.map → chunk-2MKBPWMK.js.map} +1 -1
  59. package/dist/cli-bundle/chunks/{chunk-Z2HXAFFH.js → chunk-344GDQTH.js} +2 -2
  60. package/dist/cli-bundle/chunks/{chunk-AEMKH5WQ.js → chunk-3VTWCBXL.js} +3 -3
  61. package/dist/cli-bundle/chunks/{chunk-XLSQ3QLT.js → chunk-4CYHWHZU.js} +2 -2
  62. package/dist/cli-bundle/chunks/{chunk-JS47EKLP.js → chunk-4H2NDEGJ.js} +7 -7
  63. package/dist/cli-bundle/chunks/{chunk-QF4OPBAG.js → chunk-5HH6QRH5.js} +9 -9
  64. package/dist/cli-bundle/chunks/{chunk-5NVJA7IW.js → chunk-5OMABP7I.js} +7 -7
  65. package/dist/cli-bundle/chunks/{chunk-YEFOCDIK.js → chunk-6ADVKPVV.js} +7 -7
  66. package/dist/cli-bundle/chunks/{chunk-SM3RMWGO.js → chunk-6KQS23TX.js} +8 -8
  67. package/dist/cli-bundle/chunks/{chunk-ETZZU5QF.js → chunk-6N46IM44.js} +2 -2
  68. package/dist/cli-bundle/chunks/{chunk-EPWT7BEA.js → chunk-6OSG3EMX.js} +157 -12
  69. package/dist/cli-bundle/chunks/chunk-6OSG3EMX.js.map +1 -0
  70. package/dist/cli-bundle/chunks/{chunk-5WO2VKFA.js → chunk-73PSHEMT.js} +8 -8
  71. package/dist/cli-bundle/chunks/{chunk-J4DKAGTM.js → chunk-7DUVDW7C.js} +3 -3
  72. package/dist/cli-bundle/chunks/{chunk-2BYKYPWY.js → chunk-7GYMMDDW.js} +2 -2
  73. package/dist/cli-bundle/chunks/{chunk-QFVASU44.js → chunk-7TW64BS5.js} +2 -2
  74. package/dist/cli-bundle/chunks/{chunk-VXBUXLVD.js → chunk-A6XVYNQJ.js} +13 -6
  75. package/dist/cli-bundle/chunks/chunk-A6XVYNQJ.js.map +7 -0
  76. package/dist/cli-bundle/chunks/{chunk-KP4KIUQT.js → chunk-ANVZCNL5.js} +3 -3
  77. package/dist/cli-bundle/chunks/{chunk-HOA3GMB6.js → chunk-BE5G7HEL.js} +14 -8
  78. package/dist/cli-bundle/chunks/chunk-BE5G7HEL.js.map +1 -0
  79. package/dist/cli-bundle/chunks/{chunk-QWNUDGFQ.js → chunk-CMEHZD6G.js} +163 -11
  80. package/dist/cli-bundle/chunks/chunk-CMEHZD6G.js.map +7 -0
  81. package/dist/cli-bundle/chunks/{chunk-7NQIY7Z6.js → chunk-CTW7QAHM.js} +6 -5
  82. package/dist/cli-bundle/chunks/chunk-CTW7QAHM.js.map +1 -0
  83. package/dist/cli-bundle/chunks/{chunk-UEXNNF3K.js → chunk-D6JZBUZ6.js} +7 -7
  84. package/dist/cli-bundle/chunks/{chunk-F33AQIB4.js → chunk-DEYNERFX.js} +19 -7
  85. package/dist/cli-bundle/chunks/chunk-DEYNERFX.js.map +1 -0
  86. package/dist/cli-bundle/chunks/{chunk-R4XIE7NQ.js → chunk-DMDEC4QP.js} +6 -6
  87. package/dist/cli-bundle/chunks/{chunk-KN4WSESY.js → chunk-DTRIVUTN.js} +5 -5
  88. package/dist/cli-bundle/chunks/{chunk-KS2U7BZ3.js → chunk-EAQLLID6.js} +16 -6
  89. package/dist/cli-bundle/chunks/chunk-EAQLLID6.js.map +1 -0
  90. package/dist/cli-bundle/chunks/{chunk-HP35AVFS.js → chunk-EIS32UA4.js} +2 -2
  91. package/dist/cli-bundle/chunks/chunk-F2PVV7IX.js +528 -0
  92. package/dist/cli-bundle/chunks/chunk-F2PVV7IX.js.map +7 -0
  93. package/dist/cli-bundle/chunks/{chunk-DV27WDA7.js → chunk-GF5XIBUH.js} +70 -9
  94. package/dist/cli-bundle/chunks/chunk-GF5XIBUH.js.map +7 -0
  95. package/dist/cli-bundle/chunks/{chunk-BFJPMUF5.js → chunk-GP6SHEAI.js} +5 -5
  96. package/dist/cli-bundle/chunks/{chunk-URJEZOLB.js → chunk-GRHPU6EM.js} +2 -2
  97. package/dist/cli-bundle/chunks/{chunk-K62SNVVE.js → chunk-I2FM2SMO.js} +2 -2
  98. package/dist/cli-bundle/chunks/{chunk-F33VC5EX.js → chunk-IEQ3N7WP.js} +12 -5
  99. package/dist/cli-bundle/chunks/chunk-IEQ3N7WP.js.map +1 -0
  100. package/dist/cli-bundle/chunks/{chunk-AXBUHLW7.js → chunk-K45NAJV2.js} +9 -9
  101. package/dist/cli-bundle/chunks/{chunk-NLVCMVC7.js → chunk-K7SXBA75.js} +2 -2
  102. package/dist/cli-bundle/chunks/{chunk-OVSSE2JP.js → chunk-KHBRV5JU.js} +14 -12
  103. package/dist/cli-bundle/chunks/chunk-KHBRV5JU.js.map +1 -0
  104. package/dist/cli-bundle/chunks/{chunk-D7WK2PKB.js → chunk-KMMUDSSB.js} +112 -7
  105. package/dist/cli-bundle/chunks/chunk-KMMUDSSB.js.map +1 -0
  106. package/dist/cli-bundle/chunks/{chunk-ALSRBNYB.js → chunk-KRZQGRVL.js} +14 -7
  107. package/dist/cli-bundle/chunks/chunk-KRZQGRVL.js.map +1 -0
  108. package/dist/cli-bundle/chunks/{chunk-PQDH3S54.js → chunk-LUJQJR7G.js} +71 -69
  109. package/dist/cli-bundle/chunks/{chunk-PQDH3S54.js.map → chunk-LUJQJR7G.js.map} +1 -1
  110. package/dist/cli-bundle/chunks/{chunk-NDSMKB2I.js → chunk-LYL32FT6.js} +3 -3
  111. package/dist/cli-bundle/chunks/{chunk-ODN53S6H.js → chunk-MF6KSSMF.js} +11 -14
  112. package/dist/cli-bundle/chunks/chunk-MF6KSSMF.js.map +1 -0
  113. package/dist/cli-bundle/chunks/{chunk-Z55JACL2.js → chunk-O64EYNHF.js} +6 -6
  114. package/dist/cli-bundle/chunks/{chunk-3TXWDGPU.js → chunk-OQGJSCZZ.js} +522 -37
  115. package/dist/cli-bundle/chunks/chunk-OQGJSCZZ.js.map +7 -0
  116. package/dist/cli-bundle/chunks/{chunk-FO2TYSQZ.js → chunk-OROMGSBP.js} +2 -2
  117. package/dist/cli-bundle/chunks/{chunk-3E3MDBTB.js → chunk-OSGWBWLK.js} +76 -74
  118. package/dist/cli-bundle/chunks/{chunk-3E3MDBTB.js.map → chunk-OSGWBWLK.js.map} +3 -3
  119. package/dist/cli-bundle/chunks/{chunk-7WXGR44E.js → chunk-OVNSQHDG.js} +19 -7
  120. package/dist/cli-bundle/chunks/chunk-OVNSQHDG.js.map +7 -0
  121. package/dist/cli-bundle/chunks/{chunk-XZS4MV37.js → chunk-PYULT32I.js} +2 -2
  122. package/dist/cli-bundle/chunks/{chunk-M7UBTVFT.js → chunk-Q6PSD5DZ.js} +3 -3
  123. package/dist/cli-bundle/chunks/{chunk-QQPZYP73.js → chunk-QGIWURY3.js} +12 -12
  124. package/dist/cli-bundle/chunks/{chunk-KCGMABHM.js → chunk-QJ2OIEOC.js} +68 -7
  125. package/dist/cli-bundle/chunks/chunk-QJ2OIEOC.js.map +1 -0
  126. package/dist/cli-bundle/chunks/{chunk-XEKZCBCS.js → chunk-SNASEDXB.js} +3 -3
  127. package/dist/cli-bundle/chunks/{chunk-4WYBLB6J.js → chunk-T6QLB34N.js} +3 -3
  128. package/dist/cli-bundle/chunks/{chunk-NGEEXR2R.js → chunk-TALBUVWF.js} +2 -2
  129. package/dist/cli-bundle/chunks/{chunk-FGRJZVXD.js → chunk-TV6FZGVK.js} +3 -3
  130. package/dist/cli-bundle/chunks/{chunk-MSH23UWO.js → chunk-TXWMLDMG.js} +13 -7
  131. package/dist/cli-bundle/chunks/chunk-TXWMLDMG.js.map +7 -0
  132. package/dist/cli-bundle/chunks/{chunk-TXKENAQP.js → chunk-TZLGCTA5.js} +5 -4
  133. package/dist/cli-bundle/chunks/chunk-TZLGCTA5.js.map +7 -0
  134. package/dist/cli-bundle/chunks/{chunk-4TI3532H.js → chunk-UDWUDUJI.js} +2 -2
  135. package/dist/cli-bundle/chunks/{chunk-N4SQZ7L3.js → chunk-UMWF6ZAS.js} +12 -5
  136. package/dist/cli-bundle/chunks/chunk-UMWF6ZAS.js.map +7 -0
  137. package/dist/cli-bundle/chunks/{chunk-BKQMJXWY.js → chunk-UNH3KSHG.js} +4 -6
  138. package/dist/cli-bundle/chunks/{chunk-BKQMJXWY.js.map → chunk-UNH3KSHG.js.map} +1 -1
  139. package/dist/cli-bundle/chunks/{chunk-CBJXWXI5.js → chunk-UY26RIBR.js} +2 -2
  140. package/dist/cli-bundle/chunks/{chunk-TBLBEOEX.js → chunk-VSS3CSTF.js} +9 -9
  141. package/dist/cli-bundle/chunks/{chunk-2YPVCD7T.js → chunk-WBU257Z4.js} +13 -11
  142. package/dist/cli-bundle/chunks/chunk-WBU257Z4.js.map +7 -0
  143. package/dist/cli-bundle/chunks/{chunk-YJAKN2N2.js → chunk-WNMRICXH.js} +489 -32
  144. package/dist/cli-bundle/chunks/chunk-WNMRICXH.js.map +1 -0
  145. package/dist/cli-bundle/chunks/chunk-WSWOQP3Z.js +518 -0
  146. package/dist/cli-bundle/chunks/chunk-WSWOQP3Z.js.map +1 -0
  147. package/dist/cli-bundle/chunks/{chunk-OTY2YEH5.js → chunk-WWEFBBVF.js} +12 -12
  148. package/dist/cli-bundle/chunks/{chunk-UMMJAJB2.js → chunk-X3IPJU2O.js} +9 -9
  149. package/dist/cli-bundle/chunks/{chunk-KBKJVXUS.js → chunk-X5YC5DZM.js} +111 -6
  150. package/dist/cli-bundle/chunks/chunk-X5YC5DZM.js.map +7 -0
  151. package/dist/cli-bundle/chunks/{chunk-KVXIQDJG.js → chunk-XH6RA5A5.js} +15 -15
  152. package/dist/cli-bundle/chunks/chunk-XH6RA5A5.js.map +1 -0
  153. package/dist/cli-bundle/chunks/{chunk-2HMD3JM2.js → chunk-XRE4CTNP.js} +11 -14
  154. package/dist/cli-bundle/chunks/chunk-XRE4CTNP.js.map +7 -0
  155. package/dist/cli-bundle/chunks/{chunk-RISLL7XH.js → chunk-XSCGU4WT.js} +15 -5
  156. package/dist/cli-bundle/chunks/{chunk-RISLL7XH.js.map → chunk-XSCGU4WT.js.map} +2 -2
  157. package/dist/cli-bundle/chunks/{chunk-L3LYL3ID.js → chunk-ZH7C7ZVX.js} +14 -14
  158. package/dist/cli-bundle/chunks/chunk-ZH7C7ZVX.js.map +7 -0
  159. package/dist/cli-bundle/chunks/{claim-NHBIIBOW.js → claim-3TY5LE54.js} +10 -10
  160. package/dist/cli-bundle/chunks/{claim-RNEBQCOO.js → claim-LM4YY6QQ.js} +10 -10
  161. package/dist/cli-bundle/chunks/{close-ZMXL2WDS.js → close-CSD4LEMT.js} +8 -8
  162. package/dist/cli-bundle/chunks/close-SIQCDOBR.js +13 -0
  163. package/dist/cli-bundle/chunks/{close-many-CDPQGQUB.js → close-many-B5SHDX6W.js} +17 -18
  164. package/dist/cli-bundle/chunks/{close-many-CDPQGQUB.js.map → close-many-B5SHDX6W.js.map} +1 -1
  165. package/dist/cli-bundle/chunks/{close-many-IQV5C2SI.js → close-many-WRXB5KVY.js} +15 -16
  166. package/dist/cli-bundle/chunks/{close-many-IQV5C2SI.js.map → close-many-WRXB5KVY.js.map} +1 -1
  167. package/dist/cli-bundle/chunks/{comments-J5Q4IJPH.js → comments-A5ALOYTG.js} +10 -10
  168. package/dist/cli-bundle/chunks/{comments-EFVBHWPT.js → comments-BDDEK3VW.js} +10 -10
  169. package/dist/cli-bundle/chunks/{config-72253M2O.js → config-W2NHDNQT.js} +8 -8
  170. package/dist/cli-bundle/chunks/{config-VFYA6BMI.js → config-YUYBMJOW.js} +8 -8
  171. package/dist/cli-bundle/chunks/{context-AVLO4IFH.js → context-LRJ74NSU.js} +147 -36
  172. package/dist/cli-bundle/chunks/context-LRJ74NSU.js.map +7 -0
  173. package/dist/cli-bundle/chunks/{context-WMSI2D65.js → context-R2QLOJCK.js} +148 -37
  174. package/dist/cli-bundle/chunks/context-R2QLOJCK.js.map +1 -0
  175. package/dist/cli-bundle/chunks/{contracts-D4BN3VSQ.js → contracts-47X7RYUF.js} +4 -4
  176. package/dist/cli-bundle/chunks/{contracts-RGPOBLPL.js → contracts-HJHR4NCD.js} +4 -4
  177. package/dist/cli-bundle/chunks/{copy-H6TXHK7S.js → copy-B7HFOWFB.js} +7 -7
  178. package/dist/cli-bundle/chunks/{copy-WXE3OOLZ.js → copy-P4UVYZ7M.js} +7 -7
  179. package/dist/cli-bundle/chunks/{create-PUAIJEZ7.js → create-5ERJF64D.js} +13 -13
  180. package/dist/cli-bundle/chunks/create-TXNRPS4K.js +27 -0
  181. package/dist/cli-bundle/chunks/{delete-WBME6WG5.js → delete-LX3LGBCH.js} +7 -7
  182. package/dist/cli-bundle/chunks/{delete-PKR2JHLH.js → delete-S3WVK6LP.js} +7 -7
  183. package/dist/cli-bundle/chunks/{deps-4BQEDV4L.js → deps-GWSNH7OZ.js} +7 -7
  184. package/dist/cli-bundle/chunks/{deps-KWHQRO75.js → deps-YSM4LZQD.js} +7 -7
  185. package/dist/cli-bundle/chunks/{docs-SCNBUGSV.js → docs-7RYFBHQD.js} +9 -9
  186. package/dist/cli-bundle/chunks/{docs-364GT3ZR.js → docs-TG6JMVMY.js} +9 -9
  187. package/dist/cli-bundle/chunks/{extension-KK2UPXJD.js → extension-R3LUKMX7.js} +5 -5
  188. package/dist/cli-bundle/chunks/{extension-CRE7JM47.js → extension-VNMRKIHI.js} +5 -5
  189. package/dist/cli-bundle/chunks/{files-66EHM5ZR.js → files-KAKU57OT.js} +9 -9
  190. package/dist/cli-bundle/chunks/{files-3GESQAWL.js → files-QB3EYPMO.js} +9 -9
  191. package/dist/cli-bundle/chunks/{gc-MOQDND5J.js → gc-B747VM4M.js} +3 -3
  192. package/dist/cli-bundle/chunks/{gc-D5IWOKQH.js → gc-KNUPLPSW.js} +3 -3
  193. package/dist/cli-bundle/chunks/{get-7J2ZCBV5.js → get-GMGLIQ5I.js} +11 -11
  194. package/dist/cli-bundle/chunks/{get-WXSLXV3K.js → get-SBL6NHYQ.js} +11 -11
  195. package/dist/cli-bundle/chunks/{health-B6AEM7BV.js → health-IG43Z4KL.js} +47 -19
  196. package/dist/cli-bundle/chunks/health-IG43Z4KL.js.map +1 -0
  197. package/dist/cli-bundle/chunks/{health-YMZGOMVX.js → health-WWZJ5KJS.js} +46 -18
  198. package/dist/cli-bundle/chunks/health-WWZJ5KJS.js.map +7 -0
  199. package/dist/cli-bundle/chunks/history-6UKSZTRT.js +20 -0
  200. package/dist/cli-bundle/chunks/{history-TJTO5GCR.js → history-XCWRXBXC.js} +10 -10
  201. package/dist/cli-bundle/chunks/{history-compact-CKNN6UKW.js → history-compact-IDH7E7VN.js} +11 -11
  202. package/dist/cli-bundle/chunks/{history-compact-N2Q7IR3T.js → history-compact-KICKUCR7.js} +11 -11
  203. package/dist/cli-bundle/chunks/history-redact-HKYBTK6X.js +19 -0
  204. package/dist/cli-bundle/chunks/{history-redact-JUXUOH54.js → history-redact-JJWH3QWK.js} +11 -11
  205. package/dist/cli-bundle/chunks/{history-repair-TDBBSRVK.js → history-repair-7HWBZKXN.js} +11 -11
  206. package/dist/cli-bundle/chunks/{history-repair-CCCPBNTF.js → history-repair-N5HXKJOI.js} +11 -11
  207. package/dist/cli-bundle/chunks/init-27JLDUO2.js +17 -0
  208. package/dist/cli-bundle/chunks/{init-6ZPKD3YN.js → init-OQA3TWIS.js} +9 -9
  209. package/dist/cli-bundle/chunks/{learnings-WYNTYQ5T.js → learnings-L7VQUSVI.js} +10 -10
  210. package/dist/cli-bundle/chunks/{learnings-U7U2FNIO.js → learnings-Z4GAIZQ5.js} +10 -10
  211. package/dist/cli-bundle/chunks/list-6U3CJVXS.js +19 -0
  212. package/dist/cli-bundle/chunks/{list-JGP7ODML.js → list-W5ROBC5U.js} +10 -11
  213. package/dist/cli-bundle/chunks/{notes-P25YVTEG.js → notes-JJDOEDFK.js} +10 -10
  214. package/dist/cli-bundle/chunks/{notes-QIF6A7XS.js → notes-SDCK7BEN.js} +10 -10
  215. package/dist/cli-bundle/chunks/{plan-RACB5PI6.js → plan-H5HYHMBB.js} +13 -13
  216. package/dist/cli-bundle/chunks/{plan-SSBJFWXA.js → plan-W2B5RYR3.js} +13 -13
  217. package/dist/cli-bundle/chunks/{register-list-query-GQAEIG4K.js → register-list-query-QGRFMDWA.js} +20 -20
  218. package/dist/cli-bundle/chunks/register-list-query-QGRFMDWA.js.map +7 -0
  219. package/dist/cli-bundle/chunks/{register-list-query-5IXDPUZ6.js → register-list-query-V4S23735.js} +21 -21
  220. package/dist/cli-bundle/chunks/register-list-query-V4S23735.js.map +1 -0
  221. package/dist/cli-bundle/chunks/{register-mutation-FAS4YG63.js → register-mutation-I57PLUHA.js} +36 -35
  222. package/dist/cli-bundle/chunks/register-mutation-I57PLUHA.js.map +1 -0
  223. package/dist/cli-bundle/chunks/{register-mutation-YZCUILGO.js → register-mutation-ZPZNJXSA.js} +35 -34
  224. package/dist/cli-bundle/chunks/register-mutation-ZPZNJXSA.js.map +7 -0
  225. package/dist/cli-bundle/chunks/{register-operations-S2BOLUPF.js → register-operations-KAMLXAF5.js} +42 -37
  226. package/dist/cli-bundle/chunks/register-operations-KAMLXAF5.js.map +1 -0
  227. package/dist/cli-bundle/chunks/{register-operations-IBYWNJN5.js → register-operations-YEN4YEZ2.js} +41 -36
  228. package/dist/cli-bundle/chunks/register-operations-YEN4YEZ2.js.map +7 -0
  229. package/dist/cli-bundle/chunks/{register-setup-JRZ4UMWZ.js → register-setup-BZ3TNE3G.js} +15 -15
  230. package/dist/cli-bundle/chunks/{register-setup-ABA2JPWO.js → register-setup-WLFL3OUF.js} +15 -15
  231. package/dist/cli-bundle/chunks/restore-GNI2W5CN.js +17 -0
  232. package/dist/cli-bundle/chunks/{restore-K72ZNPEP.js → restore-RGFSPG4K.js} +11 -11
  233. package/dist/cli-bundle/chunks/{schema-UL4B2JX5.js → schema-CCDU3RLC.js} +8 -8
  234. package/dist/cli-bundle/chunks/{schema-3VKRDBLC.js → schema-KZASL323.js} +8 -8
  235. package/dist/cli-bundle/chunks/{search-632WJ7GO.js → search-7KSOLI2E.js} +10 -11
  236. package/dist/cli-bundle/chunks/{search-632WJ7GO.js.map → search-7KSOLI2E.js.map} +1 -1
  237. package/dist/cli-bundle/chunks/{search-EQDHSE4G.js → search-DTL7CO22.js} +12 -13
  238. package/dist/cli-bundle/chunks/{search-EQDHSE4G.js.map → search-DTL7CO22.js.map} +1 -1
  239. package/dist/cli-bundle/chunks/{stats-WLJ3XBF5.js → stats-IOXQMGI6.js} +7 -7
  240. package/dist/cli-bundle/chunks/{stats-O4UTMJMC.js → stats-QNV7B2CE.js} +7 -7
  241. package/dist/cli-bundle/chunks/{telemetry-EUVHFSQU.js → telemetry-IV5C6JOM.js} +4 -4
  242. package/dist/cli-bundle/chunks/{telemetry-NRVWX25E.js → telemetry-NHR5RFXT.js} +4 -4
  243. package/dist/cli-bundle/chunks/test-4Z37CXW4.js +32 -0
  244. package/dist/cli-bundle/chunks/{test-GXUBQNUC.js → test-PIL2CEEB.js} +14 -14
  245. package/dist/cli-bundle/chunks/{test-all-UTFXC7S2.js → test-all-GRLYHBNP.js} +14 -14
  246. package/dist/cli-bundle/chunks/{test-all-XM6OKI3L.js → test-all-MFN4MYCV.js} +14 -14
  247. package/dist/cli-bundle/chunks/{test-runs-IK6E2HNX.js → test-runs-7LRFWWCA.js} +5 -5
  248. package/dist/cli-bundle/chunks/{test-runs-7FHCPEA3.js → test-runs-7WCSC3TY.js} +5 -5
  249. package/dist/cli-bundle/chunks/update-I4G34LKJ.js +21 -0
  250. package/dist/cli-bundle/chunks/{update-U4B4OMHZ.js → update-VI5DBZ3G.js} +15 -15
  251. package/dist/cli-bundle/chunks/{update-many-5KD33MKY.js → update-many-LOTAYUTN.js} +22 -23
  252. package/dist/cli-bundle/chunks/{update-many-5KD33MKY.js.map → update-many-LOTAYUTN.js.map} +1 -1
  253. package/dist/cli-bundle/chunks/{update-many-N3YTM7K4.js → update-many-UYMTVF42.js} +24 -25
  254. package/dist/cli-bundle/chunks/{update-many-N3YTM7K4.js.map → update-many-UYMTVF42.js.map} +1 -1
  255. package/dist/cli-bundle/chunks/{upgrade-FFXGO43H.js → upgrade-LT2MLLPS.js} +5 -5
  256. package/dist/cli-bundle/chunks/{upgrade-5SRFLUNW.js → upgrade-ZZSC7CLV.js} +5 -5
  257. package/dist/cli-bundle/chunks/{validate-T3LPWSZG.js → validate-3XRORNMP.js} +16 -16
  258. package/dist/cli-bundle/chunks/{validate-CRWXZILW.js → validate-IQIQSKUX.js} +16 -16
  259. package/dist/cli-bundle/main.js +157 -62
  260. package/dist/cli-bundle/main.js.map +2 -2
  261. package/dist/core/diagnostics/remediation.js +12 -2
  262. package/dist/core/diagnostics/remediation.js.map +1 -1
  263. package/dist/core/extensions/extension-policy.d.ts +14 -1
  264. package/dist/core/extensions/extension-policy.js +38 -3
  265. package/dist/core/extensions/extension-policy.js.map +1 -1
  266. package/dist/core/extensions/extension-types.d.ts +99 -2
  267. package/dist/core/extensions/extension-types.js +28 -2
  268. package/dist/core/extensions/extension-types.js.map +1 -1
  269. package/dist/core/extensions/flag-value-types.d.ts +29 -0
  270. package/dist/core/extensions/flag-value-types.js +78 -0
  271. package/dist/core/extensions/flag-value-types.js.map +1 -0
  272. package/dist/core/extensions/item-field-types.d.ts +22 -0
  273. package/dist/core/extensions/item-field-types.js +43 -0
  274. package/dist/core/extensions/item-field-types.js.map +1 -0
  275. package/dist/core/extensions/item-fields.js +4 -11
  276. package/dist/core/extensions/item-fields.js.map +1 -1
  277. package/dist/core/extensions/loader.d.ts +16 -1
  278. package/dist/core/extensions/loader.js +202 -18
  279. package/dist/core/extensions/loader.js.map +1 -1
  280. package/dist/core/history/replay.d.ts +1 -1
  281. package/dist/core/history/replay.js +13 -4
  282. package/dist/core/history/replay.js.map +1 -1
  283. package/dist/core/output/mutation-projection.d.ts +2 -0
  284. package/dist/core/output/mutation-projection.js +9 -2
  285. package/dist/core/output/mutation-projection.js.map +1 -1
  286. package/dist/core/output/output.d.ts +2 -0
  287. package/dist/core/output/output.js +7 -3
  288. package/dist/core/output/output.js.map +1 -1
  289. package/dist/core/packages/manifest.d.ts +1 -1
  290. package/dist/core/packages/manifest.js +12 -2
  291. package/dist/core/packages/manifest.js.map +1 -1
  292. package/dist/core/shared/command-types.d.ts +1 -0
  293. package/dist/core/shared/command-types.js +2 -2
  294. package/dist/core/shared/command-types.js.map +1 -1
  295. package/dist/core/shared/constants.js +7 -4
  296. package/dist/core/shared/constants.js.map +1 -1
  297. package/dist/core/store/item-store.d.ts +1 -1
  298. package/dist/core/store/item-store.js +3 -3
  299. package/dist/core/store/item-store.js.map +1 -1
  300. package/dist/core/store/settings-read-cache.d.ts +15 -0
  301. package/dist/core/store/settings-read-cache.js +72 -0
  302. package/dist/core/store/settings-read-cache.js.map +1 -0
  303. package/dist/core/store/settings-validator.d.ts +4 -1
  304. package/dist/core/store/settings-validator.js +14 -2
  305. package/dist/core/store/settings-validator.js.map +1 -1
  306. package/dist/core/store/settings.js +166 -16
  307. package/dist/core/store/settings.js.map +1 -1
  308. package/dist/core/telemetry/runtime.d.ts +1 -0
  309. package/dist/core/telemetry/runtime.js +3 -3
  310. package/dist/core/telemetry/runtime.js.map +1 -1
  311. package/dist/core/test/run-selectors.d.ts +27 -0
  312. package/dist/core/test/run-selectors.js +110 -0
  313. package/dist/core/test/run-selectors.js.map +1 -0
  314. package/dist/mcp/server.js +105 -40
  315. package/dist/mcp/server.js.map +1 -1
  316. package/dist/sdk/cli-contracts/commander-mutation-options.js +3 -2
  317. package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
  318. package/dist/sdk/cli-contracts/tool-option-contracts.js +3 -2
  319. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  320. package/dist/sdk/cli-contracts/tool-parameter-tables.js +29 -2
  321. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  322. package/dist/sdk/cli-contracts.js +37 -5
  323. package/dist/sdk/cli-contracts.js.map +1 -1
  324. package/dist/sdk/index.d.ts +7 -2
  325. package/dist/sdk/index.js +3 -3
  326. package/dist/sdk/index.js.map +1 -1
  327. package/dist/sdk/runtime.d.ts +6 -0
  328. package/dist/sdk/runtime.js +51 -3
  329. package/dist/sdk/runtime.js.map +1 -1
  330. package/dist/sdk/testing.d.ts +55 -1
  331. package/dist/sdk/testing.js +92 -2
  332. package/dist/sdk/testing.js.map +1 -1
  333. package/dist/types.d.ts +4 -1
  334. package/dist/types.js +4 -2
  335. package/dist/types.js.map +1 -1
  336. package/docs/AGENT_GUIDE.md +7 -1
  337. package/docs/ARCHITECTURE.md +7 -0
  338. package/docs/COMMANDS.md +37 -3
  339. package/docs/CONFIGURATION.md +1 -1
  340. package/docs/EXTENSIONS.md +59 -53
  341. package/docs/SDK.md +104 -0
  342. package/docs/TESTING.md +60 -0
  343. package/docs/schemas/extension-manifest.schema.json +120 -0
  344. package/package.json +2 -2
  345. package/packages/pm-beads/extensions/beads/manifest.json +10 -0
  346. package/packages/pm-calendar/extensions/calendar/manifest.json +10 -0
  347. package/packages/pm-command-kit/README.md +72 -0
  348. package/packages/pm-command-kit/extensions/command-kit/index.js +181 -0
  349. package/packages/pm-command-kit/extensions/command-kit/index.ts +176 -0
  350. package/packages/pm-command-kit/extensions/command-kit/manifest.json +22 -0
  351. package/packages/pm-command-kit/package.json +53 -0
  352. package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +10 -0
  353. package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +10 -0
  354. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/manifest.json +10 -0
  355. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +10 -0
  356. package/packages/pm-search-advanced/extensions/search-advanced/index.js +6 -0
  357. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +6 -0
  358. package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +10 -0
  359. package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +1 -0
  360. package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +1 -0
  361. package/packages/pm-templates/extensions/templates/manifest.json +10 -0
  362. package/packages/pm-todos/extensions/todos/manifest.json +10 -0
  363. package/dist/cli-bundle/chunks/activity-A3QKFSSF.js +0 -16
  364. package/dist/cli-bundle/chunks/aggregate-GBSHSXOB.js.map +0 -7
  365. package/dist/cli-bundle/chunks/aggregate-HKQJZUBG.js.map +0 -1
  366. package/dist/cli-bundle/chunks/chunk-2HMD3JM2.js.map +0 -7
  367. package/dist/cli-bundle/chunks/chunk-2YPVCD7T.js.map +0 -7
  368. package/dist/cli-bundle/chunks/chunk-3TXWDGPU.js.map +0 -7
  369. package/dist/cli-bundle/chunks/chunk-7NQIY7Z6.js.map +0 -1
  370. package/dist/cli-bundle/chunks/chunk-7WXGR44E.js.map +0 -7
  371. package/dist/cli-bundle/chunks/chunk-ALSRBNYB.js.map +0 -1
  372. package/dist/cli-bundle/chunks/chunk-D7WK2PKB.js.map +0 -1
  373. package/dist/cli-bundle/chunks/chunk-DV27WDA7.js.map +0 -7
  374. package/dist/cli-bundle/chunks/chunk-EAOG77HM.js +0 -56
  375. package/dist/cli-bundle/chunks/chunk-EAOG77HM.js.map +0 -7
  376. package/dist/cli-bundle/chunks/chunk-EPWT7BEA.js.map +0 -1
  377. package/dist/cli-bundle/chunks/chunk-F33AQIB4.js.map +0 -1
  378. package/dist/cli-bundle/chunks/chunk-F33VC5EX.js.map +0 -1
  379. package/dist/cli-bundle/chunks/chunk-HOA3GMB6.js.map +0 -1
  380. package/dist/cli-bundle/chunks/chunk-KBKJVXUS.js.map +0 -7
  381. package/dist/cli-bundle/chunks/chunk-KCGMABHM.js.map +0 -1
  382. package/dist/cli-bundle/chunks/chunk-KS2U7BZ3.js.map +0 -1
  383. package/dist/cli-bundle/chunks/chunk-KVXIQDJG.js.map +0 -1
  384. package/dist/cli-bundle/chunks/chunk-L3LYL3ID.js.map +0 -7
  385. package/dist/cli-bundle/chunks/chunk-MSH23UWO.js.map +0 -7
  386. package/dist/cli-bundle/chunks/chunk-N4SQZ7L3.js.map +0 -7
  387. package/dist/cli-bundle/chunks/chunk-NUKHZZNM.js +0 -252
  388. package/dist/cli-bundle/chunks/chunk-NUKHZZNM.js.map +0 -7
  389. package/dist/cli-bundle/chunks/chunk-ODN53S6H.js.map +0 -1
  390. package/dist/cli-bundle/chunks/chunk-OVSSE2JP.js.map +0 -1
  391. package/dist/cli-bundle/chunks/chunk-QWNUDGFQ.js.map +0 -7
  392. package/dist/cli-bundle/chunks/chunk-TXKENAQP.js.map +0 -7
  393. package/dist/cli-bundle/chunks/chunk-VXBUXLVD.js.map +0 -7
  394. package/dist/cli-bundle/chunks/chunk-XNGMIVQY.js +0 -242
  395. package/dist/cli-bundle/chunks/chunk-XNGMIVQY.js.map +0 -1
  396. package/dist/cli-bundle/chunks/chunk-XSLQSXAH.js +0 -53
  397. package/dist/cli-bundle/chunks/chunk-XSLQSXAH.js.map +0 -1
  398. package/dist/cli-bundle/chunks/chunk-YJAKN2N2.js.map +0 -1
  399. package/dist/cli-bundle/chunks/close-UNTFXVM3.js +0 -13
  400. package/dist/cli-bundle/chunks/context-AVLO4IFH.js.map +0 -7
  401. package/dist/cli-bundle/chunks/context-WMSI2D65.js.map +0 -1
  402. package/dist/cli-bundle/chunks/create-EZWAMUKR.js +0 -27
  403. package/dist/cli-bundle/chunks/health-B6AEM7BV.js.map +0 -1
  404. package/dist/cli-bundle/chunks/health-YMZGOMVX.js.map +0 -7
  405. package/dist/cli-bundle/chunks/history-ZERISU2L.js +0 -20
  406. package/dist/cli-bundle/chunks/history-redact-GODBYT5A.js +0 -19
  407. package/dist/cli-bundle/chunks/init-CBZHXBR3.js +0 -17
  408. package/dist/cli-bundle/chunks/list-7MTPPZHC.js +0 -20
  409. package/dist/cli-bundle/chunks/register-list-query-5IXDPUZ6.js.map +0 -1
  410. package/dist/cli-bundle/chunks/register-list-query-GQAEIG4K.js.map +0 -7
  411. package/dist/cli-bundle/chunks/register-mutation-FAS4YG63.js.map +0 -1
  412. package/dist/cli-bundle/chunks/register-mutation-YZCUILGO.js.map +0 -7
  413. package/dist/cli-bundle/chunks/register-operations-IBYWNJN5.js.map +0 -7
  414. package/dist/cli-bundle/chunks/register-operations-S2BOLUPF.js.map +0 -1
  415. package/dist/cli-bundle/chunks/restore-3JRX27QW.js +0 -17
  416. package/dist/cli-bundle/chunks/test-XN7RJL5Z.js +0 -32
  417. package/dist/cli-bundle/chunks/update-LFBSEW3N.js +0 -21
  418. /package/dist/cli-bundle/chunks/{activity-A3QKFSSF.js.map → activity-5QLX6DHN.js.map} +0 -0
  419. /package/dist/cli-bundle/chunks/{activity-Q7XMIZIH.js.map → activity-W6TS5F2L.js.map} +0 -0
  420. /package/dist/cli-bundle/chunks/{append-3RFOU7P5.js.map → append-7BS36Z2L.js.map} +0 -0
  421. /package/dist/cli-bundle/chunks/{append-OM74OJVT.js.map → append-DHGTLUZW.js.map} +0 -0
  422. /package/dist/cli-bundle/chunks/{chunk-Z2HXAFFH.js.map → chunk-344GDQTH.js.map} +0 -0
  423. /package/dist/cli-bundle/chunks/{chunk-AEMKH5WQ.js.map → chunk-3VTWCBXL.js.map} +0 -0
  424. /package/dist/cli-bundle/chunks/{chunk-XLSQ3QLT.js.map → chunk-4CYHWHZU.js.map} +0 -0
  425. /package/dist/cli-bundle/chunks/{chunk-JS47EKLP.js.map → chunk-4H2NDEGJ.js.map} +0 -0
  426. /package/dist/cli-bundle/chunks/{chunk-QF4OPBAG.js.map → chunk-5HH6QRH5.js.map} +0 -0
  427. /package/dist/cli-bundle/chunks/{chunk-5NVJA7IW.js.map → chunk-5OMABP7I.js.map} +0 -0
  428. /package/dist/cli-bundle/chunks/{chunk-YEFOCDIK.js.map → chunk-6ADVKPVV.js.map} +0 -0
  429. /package/dist/cli-bundle/chunks/{chunk-SM3RMWGO.js.map → chunk-6KQS23TX.js.map} +0 -0
  430. /package/dist/cli-bundle/chunks/{chunk-ETZZU5QF.js.map → chunk-6N46IM44.js.map} +0 -0
  431. /package/dist/cli-bundle/chunks/{chunk-5WO2VKFA.js.map → chunk-73PSHEMT.js.map} +0 -0
  432. /package/dist/cli-bundle/chunks/{chunk-J4DKAGTM.js.map → chunk-7DUVDW7C.js.map} +0 -0
  433. /package/dist/cli-bundle/chunks/{chunk-2BYKYPWY.js.map → chunk-7GYMMDDW.js.map} +0 -0
  434. /package/dist/cli-bundle/chunks/{chunk-QFVASU44.js.map → chunk-7TW64BS5.js.map} +0 -0
  435. /package/dist/cli-bundle/chunks/{chunk-KP4KIUQT.js.map → chunk-ANVZCNL5.js.map} +0 -0
  436. /package/dist/cli-bundle/chunks/{chunk-UEXNNF3K.js.map → chunk-D6JZBUZ6.js.map} +0 -0
  437. /package/dist/cli-bundle/chunks/{chunk-R4XIE7NQ.js.map → chunk-DMDEC4QP.js.map} +0 -0
  438. /package/dist/cli-bundle/chunks/{chunk-KN4WSESY.js.map → chunk-DTRIVUTN.js.map} +0 -0
  439. /package/dist/cli-bundle/chunks/{chunk-HP35AVFS.js.map → chunk-EIS32UA4.js.map} +0 -0
  440. /package/dist/cli-bundle/chunks/{chunk-BFJPMUF5.js.map → chunk-GP6SHEAI.js.map} +0 -0
  441. /package/dist/cli-bundle/chunks/{chunk-URJEZOLB.js.map → chunk-GRHPU6EM.js.map} +0 -0
  442. /package/dist/cli-bundle/chunks/{chunk-K62SNVVE.js.map → chunk-I2FM2SMO.js.map} +0 -0
  443. /package/dist/cli-bundle/chunks/{chunk-AXBUHLW7.js.map → chunk-K45NAJV2.js.map} +0 -0
  444. /package/dist/cli-bundle/chunks/{chunk-NLVCMVC7.js.map → chunk-K7SXBA75.js.map} +0 -0
  445. /package/dist/cli-bundle/chunks/{chunk-NDSMKB2I.js.map → chunk-LYL32FT6.js.map} +0 -0
  446. /package/dist/cli-bundle/chunks/{chunk-Z55JACL2.js.map → chunk-O64EYNHF.js.map} +0 -0
  447. /package/dist/cli-bundle/chunks/{chunk-FO2TYSQZ.js.map → chunk-OROMGSBP.js.map} +0 -0
  448. /package/dist/cli-bundle/chunks/{chunk-XZS4MV37.js.map → chunk-PYULT32I.js.map} +0 -0
  449. /package/dist/cli-bundle/chunks/{chunk-M7UBTVFT.js.map → chunk-Q6PSD5DZ.js.map} +0 -0
  450. /package/dist/cli-bundle/chunks/{chunk-QQPZYP73.js.map → chunk-QGIWURY3.js.map} +0 -0
  451. /package/dist/cli-bundle/chunks/{chunk-XEKZCBCS.js.map → chunk-SNASEDXB.js.map} +0 -0
  452. /package/dist/cli-bundle/chunks/{chunk-4WYBLB6J.js.map → chunk-T6QLB34N.js.map} +0 -0
  453. /package/dist/cli-bundle/chunks/{chunk-NGEEXR2R.js.map → chunk-TALBUVWF.js.map} +0 -0
  454. /package/dist/cli-bundle/chunks/{chunk-FGRJZVXD.js.map → chunk-TV6FZGVK.js.map} +0 -0
  455. /package/dist/cli-bundle/chunks/{chunk-4TI3532H.js.map → chunk-UDWUDUJI.js.map} +0 -0
  456. /package/dist/cli-bundle/chunks/{chunk-CBJXWXI5.js.map → chunk-UY26RIBR.js.map} +0 -0
  457. /package/dist/cli-bundle/chunks/{chunk-TBLBEOEX.js.map → chunk-VSS3CSTF.js.map} +0 -0
  458. /package/dist/cli-bundle/chunks/{chunk-OTY2YEH5.js.map → chunk-WWEFBBVF.js.map} +0 -0
  459. /package/dist/cli-bundle/chunks/{chunk-UMMJAJB2.js.map → chunk-X3IPJU2O.js.map} +0 -0
  460. /package/dist/cli-bundle/chunks/{claim-NHBIIBOW.js.map → claim-3TY5LE54.js.map} +0 -0
  461. /package/dist/cli-bundle/chunks/{claim-RNEBQCOO.js.map → claim-LM4YY6QQ.js.map} +0 -0
  462. /package/dist/cli-bundle/chunks/{close-ZMXL2WDS.js.map → close-CSD4LEMT.js.map} +0 -0
  463. /package/dist/cli-bundle/chunks/{close-UNTFXVM3.js.map → close-SIQCDOBR.js.map} +0 -0
  464. /package/dist/cli-bundle/chunks/{comments-J5Q4IJPH.js.map → comments-A5ALOYTG.js.map} +0 -0
  465. /package/dist/cli-bundle/chunks/{comments-EFVBHWPT.js.map → comments-BDDEK3VW.js.map} +0 -0
  466. /package/dist/cli-bundle/chunks/{config-72253M2O.js.map → config-W2NHDNQT.js.map} +0 -0
  467. /package/dist/cli-bundle/chunks/{config-VFYA6BMI.js.map → config-YUYBMJOW.js.map} +0 -0
  468. /package/dist/cli-bundle/chunks/{contracts-D4BN3VSQ.js.map → contracts-47X7RYUF.js.map} +0 -0
  469. /package/dist/cli-bundle/chunks/{contracts-RGPOBLPL.js.map → contracts-HJHR4NCD.js.map} +0 -0
  470. /package/dist/cli-bundle/chunks/{copy-H6TXHK7S.js.map → copy-B7HFOWFB.js.map} +0 -0
  471. /package/dist/cli-bundle/chunks/{copy-WXE3OOLZ.js.map → copy-P4UVYZ7M.js.map} +0 -0
  472. /package/dist/cli-bundle/chunks/{create-PUAIJEZ7.js.map → create-5ERJF64D.js.map} +0 -0
  473. /package/dist/cli-bundle/chunks/{create-EZWAMUKR.js.map → create-TXNRPS4K.js.map} +0 -0
  474. /package/dist/cli-bundle/chunks/{delete-WBME6WG5.js.map → delete-LX3LGBCH.js.map} +0 -0
  475. /package/dist/cli-bundle/chunks/{delete-PKR2JHLH.js.map → delete-S3WVK6LP.js.map} +0 -0
  476. /package/dist/cli-bundle/chunks/{deps-4BQEDV4L.js.map → deps-GWSNH7OZ.js.map} +0 -0
  477. /package/dist/cli-bundle/chunks/{deps-KWHQRO75.js.map → deps-YSM4LZQD.js.map} +0 -0
  478. /package/dist/cli-bundle/chunks/{docs-SCNBUGSV.js.map → docs-7RYFBHQD.js.map} +0 -0
  479. /package/dist/cli-bundle/chunks/{docs-364GT3ZR.js.map → docs-TG6JMVMY.js.map} +0 -0
  480. /package/dist/cli-bundle/chunks/{extension-KK2UPXJD.js.map → extension-R3LUKMX7.js.map} +0 -0
  481. /package/dist/cli-bundle/chunks/{extension-CRE7JM47.js.map → extension-VNMRKIHI.js.map} +0 -0
  482. /package/dist/cli-bundle/chunks/{files-66EHM5ZR.js.map → files-KAKU57OT.js.map} +0 -0
  483. /package/dist/cli-bundle/chunks/{files-3GESQAWL.js.map → files-QB3EYPMO.js.map} +0 -0
  484. /package/dist/cli-bundle/chunks/{gc-MOQDND5J.js.map → gc-B747VM4M.js.map} +0 -0
  485. /package/dist/cli-bundle/chunks/{gc-D5IWOKQH.js.map → gc-KNUPLPSW.js.map} +0 -0
  486. /package/dist/cli-bundle/chunks/{get-7J2ZCBV5.js.map → get-GMGLIQ5I.js.map} +0 -0
  487. /package/dist/cli-bundle/chunks/{get-WXSLXV3K.js.map → get-SBL6NHYQ.js.map} +0 -0
  488. /package/dist/cli-bundle/chunks/{history-ZERISU2L.js.map → history-6UKSZTRT.js.map} +0 -0
  489. /package/dist/cli-bundle/chunks/{history-TJTO5GCR.js.map → history-XCWRXBXC.js.map} +0 -0
  490. /package/dist/cli-bundle/chunks/{history-compact-CKNN6UKW.js.map → history-compact-IDH7E7VN.js.map} +0 -0
  491. /package/dist/cli-bundle/chunks/{history-compact-N2Q7IR3T.js.map → history-compact-KICKUCR7.js.map} +0 -0
  492. /package/dist/cli-bundle/chunks/{history-redact-GODBYT5A.js.map → history-redact-HKYBTK6X.js.map} +0 -0
  493. /package/dist/cli-bundle/chunks/{history-redact-JUXUOH54.js.map → history-redact-JJWH3QWK.js.map} +0 -0
  494. /package/dist/cli-bundle/chunks/{history-repair-TDBBSRVK.js.map → history-repair-7HWBZKXN.js.map} +0 -0
  495. /package/dist/cli-bundle/chunks/{history-repair-CCCPBNTF.js.map → history-repair-N5HXKJOI.js.map} +0 -0
  496. /package/dist/cli-bundle/chunks/{init-CBZHXBR3.js.map → init-27JLDUO2.js.map} +0 -0
  497. /package/dist/cli-bundle/chunks/{init-6ZPKD3YN.js.map → init-OQA3TWIS.js.map} +0 -0
  498. /package/dist/cli-bundle/chunks/{learnings-WYNTYQ5T.js.map → learnings-L7VQUSVI.js.map} +0 -0
  499. /package/dist/cli-bundle/chunks/{learnings-U7U2FNIO.js.map → learnings-Z4GAIZQ5.js.map} +0 -0
  500. /package/dist/cli-bundle/chunks/{list-7MTPPZHC.js.map → list-6U3CJVXS.js.map} +0 -0
  501. /package/dist/cli-bundle/chunks/{list-JGP7ODML.js.map → list-W5ROBC5U.js.map} +0 -0
  502. /package/dist/cli-bundle/chunks/{notes-P25YVTEG.js.map → notes-JJDOEDFK.js.map} +0 -0
  503. /package/dist/cli-bundle/chunks/{notes-QIF6A7XS.js.map → notes-SDCK7BEN.js.map} +0 -0
  504. /package/dist/cli-bundle/chunks/{plan-RACB5PI6.js.map → plan-H5HYHMBB.js.map} +0 -0
  505. /package/dist/cli-bundle/chunks/{plan-SSBJFWXA.js.map → plan-W2B5RYR3.js.map} +0 -0
  506. /package/dist/cli-bundle/chunks/{register-setup-JRZ4UMWZ.js.map → register-setup-BZ3TNE3G.js.map} +0 -0
  507. /package/dist/cli-bundle/chunks/{register-setup-ABA2JPWO.js.map → register-setup-WLFL3OUF.js.map} +0 -0
  508. /package/dist/cli-bundle/chunks/{restore-3JRX27QW.js.map → restore-GNI2W5CN.js.map} +0 -0
  509. /package/dist/cli-bundle/chunks/{restore-K72ZNPEP.js.map → restore-RGFSPG4K.js.map} +0 -0
  510. /package/dist/cli-bundle/chunks/{schema-UL4B2JX5.js.map → schema-CCDU3RLC.js.map} +0 -0
  511. /package/dist/cli-bundle/chunks/{schema-3VKRDBLC.js.map → schema-KZASL323.js.map} +0 -0
  512. /package/dist/cli-bundle/chunks/{stats-WLJ3XBF5.js.map → stats-IOXQMGI6.js.map} +0 -0
  513. /package/dist/cli-bundle/chunks/{stats-O4UTMJMC.js.map → stats-QNV7B2CE.js.map} +0 -0
  514. /package/dist/cli-bundle/chunks/{telemetry-EUVHFSQU.js.map → telemetry-IV5C6JOM.js.map} +0 -0
  515. /package/dist/cli-bundle/chunks/{telemetry-NRVWX25E.js.map → telemetry-NHR5RFXT.js.map} +0 -0
  516. /package/dist/cli-bundle/chunks/{test-XN7RJL5Z.js.map → test-4Z37CXW4.js.map} +0 -0
  517. /package/dist/cli-bundle/chunks/{test-GXUBQNUC.js.map → test-PIL2CEEB.js.map} +0 -0
  518. /package/dist/cli-bundle/chunks/{test-all-UTFXC7S2.js.map → test-all-GRLYHBNP.js.map} +0 -0
  519. /package/dist/cli-bundle/chunks/{test-all-XM6OKI3L.js.map → test-all-MFN4MYCV.js.map} +0 -0
  520. /package/dist/cli-bundle/chunks/{test-runs-IK6E2HNX.js.map → test-runs-7LRFWWCA.js.map} +0 -0
  521. /package/dist/cli-bundle/chunks/{test-runs-7FHCPEA3.js.map → test-runs-7WCSC3TY.js.map} +0 -0
  522. /package/dist/cli-bundle/chunks/{update-LFBSEW3N.js.map → update-I4G34LKJ.js.map} +0 -0
  523. /package/dist/cli-bundle/chunks/{update-U4B4OMHZ.js.map → update-VI5DBZ3G.js.map} +0 -0
  524. /package/dist/cli-bundle/chunks/{upgrade-FFXGO43H.js.map → upgrade-LT2MLLPS.js.map} +0 -0
  525. /package/dist/cli-bundle/chunks/{upgrade-5SRFLUNW.js.map → upgrade-ZZSC7CLV.js.map} +0 -0
  526. /package/dist/cli-bundle/chunks/{validate-T3LPWSZG.js.map → validate-3XRORNMP.js.map} +0 -0
  527. /package/dist/cli-bundle/chunks/{validate-CRWXZILW.js.map → validate-IQIQSKUX.js.map} +0 -0
@@ -39,6 +39,7 @@ export declare function normalizeExtensionCommandPath(commandPath: string): stri
39
39
  export declare function collectDynamicExtensionFlagHelpByCommand(registrations: RegisteredExtensionFlagDefinitions[]): Map<string, string>;
40
40
  export declare function collectExtensionCommandHelpDescriptors(commandHandlers: string[], commandDefinitions: RegisteredExtensionCommandDefinition[], flagRegistrations: RegisteredExtensionFlagDefinitions[]): Map<string, ExtensionCommandHelpDescriptor>;
41
41
  export declare function applyDynamicExtensionArguments(command: Command, descriptor: ExtensionCommandHelpDescriptor): void;
42
+ export declare function applyDynamicExtensionFlagOptions(command: Command, definitions: Array<Record<string, unknown>>): void;
42
43
  export declare function buildDynamicExtensionHelpOptionSummaries(descriptor: ExtensionCommandHelpDescriptor | undefined): HelpOptionSummary[];
43
44
  export declare function mergeHelpOptionSummaries(base: HelpOptionSummary[], extension: HelpOptionSummary[]): HelpOptionSummary[];
44
45
  export declare function buildDynamicExtensionCommandMetadataHelp(descriptor: ExtensionCommandHelpDescriptor): string | null;
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b2d550e5-da06-5832-85f4-a3c40208d78d")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="2afbf21c-b26d-53d0-bd93-762ebd9e366a")}catch(e){}}();
3
3
  export function normalizeExtensionCommandPath(commandPath) {
4
4
  return commandPath
5
5
  .trim()
@@ -226,6 +226,25 @@ function formatDynamicExtensionOptionFlags(definition) {
226
226
  const optionNames = [normalizedShort, normalizedLong].filter((entry) => entry !== null);
227
227
  return `${optionNames.join(", ")}${optionValueSuffix}`;
228
228
  }
229
+ function formatDynamicExtensionParseOptionFlags(definition) {
230
+ const visible = toOptionalBoolean(definition.visible);
231
+ if (visible === false) {
232
+ return null;
233
+ }
234
+ const longName = toNonEmptyFlagString(definition.long);
235
+ const shortName = toNonEmptyFlagString(definition.short);
236
+ const normalizedShort = shortName && shortName.startsWith("-") && !shortName.startsWith("--") ? shortName : null;
237
+ const normalizedLong = longName && longName.startsWith("--") && longName.length > 2 ? longName : null;
238
+ if (!normalizedLong && !normalizedShort) {
239
+ return null;
240
+ }
241
+ const valueType = toNonEmptyFlagString(definition.value_type) ?? toNonEmptyFlagString(definition.type);
242
+ const valueName = toNonEmptyFlagString(definition.value_name);
243
+ const requiresValue = valueType !== "boolean" && (valueName !== null || valueType !== null || toOptionalBoolean(definition.required) === true);
244
+ const valueSuffix = requiresValue ? ` <${valueName ?? "value"}>` : "";
245
+ const optionNames = [normalizedShort, normalizedLong].filter((entry) => entry !== null);
246
+ return `${optionNames.join(", ")}${valueSuffix}`;
247
+ }
229
248
  function formatDynamicExtensionOptionDescription(definition) {
230
249
  const description = toNonEmptyFlagString(definition.description) ?? "Extension-provided option.";
231
250
  const markers = [];
@@ -238,6 +257,27 @@ function formatDynamicExtensionOptionDescription(definition) {
238
257
  const markerSuffix = markers.length > 0 ? ` [${markers.join(", ")}]` : "";
239
258
  return `${description}${markerSuffix}`;
240
259
  }
260
+ function commandAlreadyHasOption(command, definition) {
261
+ const longName = toNonEmptyFlagString(definition.long);
262
+ const shortName = toNonEmptyFlagString(definition.short);
263
+ return command.options.some((option) => {
264
+ const optionWithNames = option;
265
+ return ((longName !== null && optionWithNames.long === longName) ||
266
+ (shortName !== null && optionWithNames.short === shortName));
267
+ });
268
+ }
269
+ export function applyDynamicExtensionFlagOptions(command, definitions) {
270
+ for (const definition of definitions) {
271
+ if (commandAlreadyHasOption(command, definition)) {
272
+ continue;
273
+ }
274
+ const flags = formatDynamicExtensionParseOptionFlags(definition);
275
+ if (!flags) {
276
+ continue;
277
+ }
278
+ command.option(flags, formatDynamicExtensionOptionDescription(definition));
279
+ }
280
+ }
241
281
  function buildDynamicExtensionHelpOptionSummary(definition) {
242
282
  const flags = formatDynamicExtensionOptionFlags(definition);
243
283
  if (!flags) {
@@ -379,4 +419,4 @@ export function ensureCommandPath(root, pathParts) {
379
419
  return current;
380
420
  }
381
421
  //# sourceMappingURL=extension-command-help.js.map
382
- //# debugId=b2d550e5-da06-5832-85f4-a3c40208d78d
422
+ //# debugId=2afbf21c-b26d-53d0-bd93-762ebd9e366a
@@ -1 +1 @@
1
- {"version":3,"file":"extension-command-help.js","sources":["cli/extension-command-help.ts"],"sourceRoot":"/","sourcesContent":["import { Command } from \"commander\";\nimport type {\n RegisteredExtensionCommandDefinition,\n RegisteredExtensionFlagDefinitions,\n} from \"../core/extensions/index.js\";\n\nexport interface ExtensionCommandArgumentHelpDescriptor {\n name: string;\n required: boolean;\n variadic: boolean;\n description?: string;\n}\n\nexport interface ExtensionCommandHelpDescriptor {\n command: string;\n action: string;\n description?: string;\n intent?: string;\n examples: string[];\n failure_hints: string[];\n arguments: ExtensionCommandArgumentHelpDescriptor[];\n flags: Array<Record<string, unknown>>;\n source?: {\n layer: \"global\" | \"project\";\n name: string;\n package?: string;\n };\n}\n\nexport interface HelpOptionSummary {\n flags: string;\n long: string | null;\n short: string | null;\n description: string;\n takes_value: boolean;\n value_required: boolean;\n value_name: string | null;\n variadic: boolean;\n required: boolean;\n aliases: string[];\n alias_for: string | null;\n default_value?: unknown;\n}\n\nexport function normalizeExtensionCommandPath(commandPath: string): string {\n return commandPath\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .filter((part) => part.length > 0)\n .join(\" \");\n}\n\nfunction toNonEmptyFlagString(value: unknown): string | null {\n if (typeof value !== \"string\") {\n return null;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nfunction toOptionalBoolean(value: unknown): boolean | undefined {\n return typeof value === \"boolean\" ? value : undefined;\n}\n\nfunction formatDynamicExtensionFlagHelpLine(definition: Record<string, unknown>): string | null {\n const visible = toOptionalBoolean(definition.visible);\n if (visible === false) {\n return null;\n }\n const longName = toNonEmptyFlagString(definition.long);\n if (!longName || !longName.startsWith(\"--\") || longName.length < 3) {\n return null;\n }\n\n const shortName = toNonEmptyFlagString(definition.short);\n const shortPrefix = shortName && shortName.startsWith(\"-\") && !shortName.startsWith(\"--\") ? `${shortName}, ` : \"\";\n const valueName = toNonEmptyFlagString(definition.value_name);\n const valueSuffix = valueName ? ` <${valueName}>` : \"\";\n const description = toNonEmptyFlagString(definition.description) ?? \"Extension-provided option.\";\n const markers: string[] = [];\n if (toOptionalBoolean(definition.required) === true) {\n markers.push(\"required\");\n }\n if (toOptionalBoolean(definition.enabled) === false) {\n markers.push(\"disabled\");\n }\n const markerSuffix = markers.length > 0 ? ` [${markers.join(\", \")}]` : \"\";\n return `${shortPrefix}${longName}${valueSuffix} ${description}${markerSuffix}`;\n}\n\nfunction buildDynamicExtensionFlagHelp(definitions: Array<Record<string, unknown>>): string | null {\n const lines = [\n ...new Set(\n definitions\n .map(formatDynamicExtensionFlagHelpLine)\n .filter((line): line is string => line !== null),\n ),\n ].sort((left, right) => left.localeCompare(right));\n if (lines.length === 0) {\n return null;\n }\n return `\\nExtension-provided flags:\\n ${lines.join(\"\\n \")}`;\n}\n\nexport function collectDynamicExtensionFlagHelpByCommand(\n registrations: RegisteredExtensionFlagDefinitions[],\n): Map<string, string> {\n const grouped = new Map<string, Array<Record<string, unknown>>>();\n for (const registration of registrations) {\n const commandPath = normalizeExtensionCommandPath(registration.target_command);\n if (commandPath.length === 0) {\n continue;\n }\n const existing = grouped.get(commandPath) ?? [];\n existing.push(...registration.flags);\n grouped.set(commandPath, existing);\n }\n\n const entries = [...grouped.entries()].sort(([left], [right]) => left.localeCompare(right));\n const helpByCommand = new Map<string, string>();\n for (const [commandPath, definitions] of entries) {\n const helpText = buildDynamicExtensionFlagHelp(definitions);\n if (!helpText) {\n continue;\n }\n helpByCommand.set(commandPath, helpText);\n }\n return helpByCommand;\n}\n\nfunction normalizeExtensionCommandAction(commandPath: string, action: string | undefined): string {\n if (typeof action !== \"string\" || action.trim().length === 0) {\n return commandPath.replace(/\\s+/g, \"-\");\n }\n return action.trim().toLowerCase();\n}\n\nfunction normalizeExtensionCommandStringList(values: string[] | undefined): string[] {\n if (!Array.isArray(values)) {\n return [];\n }\n const normalized: string[] = [];\n const seen = new Set<string>();\n for (const value of values) {\n if (typeof value !== \"string\") {\n continue;\n }\n const trimmed = value.trim();\n if (trimmed.length === 0 || seen.has(trimmed)) {\n continue;\n }\n seen.add(trimmed);\n normalized.push(trimmed);\n }\n return normalized;\n}\n\nfunction normalizeExtensionCommandArguments(\n values: Array<{ name?: unknown; required?: unknown; variadic?: unknown; description?: unknown }> | undefined,\n): ExtensionCommandArgumentHelpDescriptor[] {\n if (!Array.isArray(values)) {\n return [];\n }\n return values\n .map((value) => {\n const name = typeof value.name === \"string\" ? value.name.trim() : \"\";\n if (name.length === 0) {\n return null;\n }\n const normalized: ExtensionCommandArgumentHelpDescriptor = {\n name,\n required: value.required === true,\n variadic: value.variadic === true,\n };\n if (typeof value.description === \"string\" && value.description.trim().length > 0) {\n normalized.description = value.description.trim();\n }\n return normalized;\n })\n .filter((entry): entry is ExtensionCommandArgumentHelpDescriptor => entry !== null);\n}\n\nexport function collectExtensionCommandHelpDescriptors(\n commandHandlers: string[],\n commandDefinitions: RegisteredExtensionCommandDefinition[],\n flagRegistrations: RegisteredExtensionFlagDefinitions[],\n): Map<string, ExtensionCommandHelpDescriptor> {\n const definitionsByCommand = new Map<string, ExtensionCommandHelpDescriptor>();\n for (const definition of commandDefinitions) {\n const commandPath = normalizeExtensionCommandPath(definition.command);\n if (commandPath.length === 0) {\n continue;\n }\n const description =\n typeof definition.description === \"string\" && definition.description.trim().length > 0\n ? definition.description.trim()\n : undefined;\n const intent =\n typeof definition.intent === \"string\" && definition.intent.trim().length > 0\n ? definition.intent.trim()\n : undefined;\n definitionsByCommand.set(commandPath, {\n command: commandPath,\n action: normalizeExtensionCommandAction(commandPath, definition.action),\n description,\n intent,\n examples: normalizeExtensionCommandStringList(definition.examples),\n failure_hints: normalizeExtensionCommandStringList(definition.failure_hints),\n arguments: normalizeExtensionCommandArguments(definition.arguments),\n flags: [],\n source: {\n layer: definition.layer,\n name: definition.name,\n package: definition.source_package,\n },\n });\n }\n\n const flagsByCommand = new Map<string, Array<Record<string, unknown>>>();\n for (const registration of flagRegistrations) {\n const commandPath = normalizeExtensionCommandPath(registration.target_command);\n if (commandPath.length === 0) {\n continue;\n }\n const existing = flagsByCommand.get(commandPath) ?? [];\n existing.push(...registration.flags);\n flagsByCommand.set(commandPath, existing);\n }\n\n const commandSet = new Set<string>();\n for (const commandPath of commandHandlers) {\n const normalized = normalizeExtensionCommandPath(commandPath);\n if (normalized.length > 0) {\n commandSet.add(normalized);\n }\n }\n for (const commandPath of definitionsByCommand.keys()) {\n commandSet.add(commandPath);\n }\n for (const commandPath of flagsByCommand.keys()) {\n commandSet.add(commandPath);\n }\n\n const descriptors = new Map<string, ExtensionCommandHelpDescriptor>();\n const sortedCommands = [...commandSet].sort((left, right) => left.localeCompare(right));\n for (const commandPath of sortedCommands) {\n const definition = definitionsByCommand.get(commandPath);\n const flags = flagsByCommand.get(commandPath) ?? [];\n if (definition) {\n descriptors.set(commandPath, {\n ...definition,\n flags,\n });\n continue;\n }\n descriptors.set(commandPath, {\n command: commandPath,\n action: normalizeExtensionCommandAction(commandPath, undefined),\n examples: [],\n failure_hints: [],\n arguments: [],\n flags,\n });\n }\n\n return descriptors;\n}\n\nfunction buildExtensionArgumentToken(argument: ExtensionCommandArgumentHelpDescriptor): string {\n const variadicSuffix = argument.variadic ? \"...\" : \"\";\n if (argument.required) {\n return `<${argument.name}${variadicSuffix}>`;\n }\n return `[${argument.name}${variadicSuffix}]`;\n}\n\nexport function applyDynamicExtensionArguments(command: Command, descriptor: ExtensionCommandHelpDescriptor): void {\n for (const argument of descriptor.arguments) {\n command.argument(buildExtensionArgumentToken(argument), argument.description ?? \"Extension argument.\");\n }\n}\n\nfunction formatDynamicExtensionOptionFlags(definition: Record<string, unknown>): string | null {\n const visible = toOptionalBoolean(definition.visible);\n if (visible === false) {\n return null;\n }\n const longName = toNonEmptyFlagString(definition.long);\n const shortName = toNonEmptyFlagString(definition.short);\n const normalizedShort = shortName && shortName.startsWith(\"-\") && !shortName.startsWith(\"--\") ? shortName : null;\n const normalizedLong = longName && longName.startsWith(\"--\") && longName.length > 2 ? longName : null;\n if (!normalizedLong && !normalizedShort) {\n return null;\n }\n const optionValueName = toNonEmptyFlagString(definition.value_name);\n const optionValueSuffix = optionValueName ? ` <${optionValueName}>` : \"\";\n const optionNames = [normalizedShort, normalizedLong].filter((entry): entry is string => entry !== null);\n return `${optionNames.join(\", \")}${optionValueSuffix}`;\n}\n\nfunction formatDynamicExtensionOptionDescription(definition: Record<string, unknown>): string {\n const description = toNonEmptyFlagString(definition.description) ?? \"Extension-provided option.\";\n const markers: string[] = [];\n if (toOptionalBoolean(definition.required) === true) {\n markers.push(\"required\");\n }\n if (toOptionalBoolean(definition.enabled) === false) {\n markers.push(\"disabled\");\n }\n const markerSuffix = markers.length > 0 ? ` [${markers.join(\", \")}]` : \"\";\n return `${description}${markerSuffix}`;\n}\n\nfunction buildDynamicExtensionHelpOptionSummary(definition: Record<string, unknown>): HelpOptionSummary | null {\n const flags = formatDynamicExtensionOptionFlags(definition);\n if (!flags) {\n return null;\n }\n const longName = toNonEmptyFlagString(definition.long);\n const shortName = toNonEmptyFlagString(definition.short);\n const normalizedLong = longName && longName.startsWith(\"--\") && longName.length > 2 ? longName : null;\n const normalizedShort = shortName && shortName.startsWith(\"-\") && !shortName.startsWith(\"--\") ? shortName : null;\n const valueName = toNonEmptyFlagString(definition.value_name);\n const required = toOptionalBoolean(definition.required) === true;\n return {\n flags,\n long: normalizedLong,\n short: normalizedShort,\n description: formatDynamicExtensionOptionDescription(definition),\n takes_value: valueName !== null,\n value_required: valueName !== null,\n value_name: valueName,\n variadic: false,\n required,\n aliases: [],\n alias_for: null,\n };\n}\n\nexport function buildDynamicExtensionHelpOptionSummaries(descriptor: ExtensionCommandHelpDescriptor | undefined): HelpOptionSummary[] {\n if (!descriptor) {\n return [];\n }\n const summaries: HelpOptionSummary[] = [];\n const seen = new Set<string>();\n for (const definition of descriptor.flags) {\n const summary = buildDynamicExtensionHelpOptionSummary(definition);\n if (!summary || seen.has(summary.flags)) {\n continue;\n }\n seen.add(summary.flags);\n summaries.push(summary);\n }\n return summaries;\n}\n\nexport function mergeHelpOptionSummaries(base: HelpOptionSummary[], extension: HelpOptionSummary[]): HelpOptionSummary[] {\n if (extension.length === 0) {\n return base;\n }\n const merged = [...base];\n const seen = new Set(base.map((entry) => entry.flags));\n for (const entry of extension) {\n if (seen.has(entry.flags)) {\n continue;\n }\n seen.add(entry.flags);\n merged.push(entry);\n }\n return merged;\n}\n\nexport function buildDynamicExtensionCommandMetadataHelp(descriptor: ExtensionCommandHelpDescriptor): string | null {\n const lines: string[] = [];\n if (descriptor.intent) {\n lines.push(`Intent: ${descriptor.intent}`);\n }\n if (descriptor.action) {\n lines.push(`Action contract: ${descriptor.action}`);\n }\n if (descriptor.examples.length > 0) {\n lines.push(\"Examples:\");\n for (const example of descriptor.examples) {\n lines.push(` - ${example}`);\n }\n }\n if (descriptor.failure_hints.length > 0) {\n lines.push(\"Common failure hints:\");\n for (const hint of descriptor.failure_hints) {\n lines.push(` - ${hint}`);\n }\n }\n if (lines.length === 0) {\n return null;\n }\n return `\\nExtension command metadata:\\n ${lines.join(\"\\n \")}`;\n}\n\nexport function commandAliases(command: Command): string[] {\n const commandRecord = command as unknown as {\n aliases?: () => string[];\n alias?: () => string | undefined;\n _aliases?: string[];\n };\n if (typeof commandRecord.aliases === \"function\") {\n return commandRecord.aliases().map((value) => value.trim().toLowerCase()).filter((value) => value.length > 0);\n }\n if (typeof commandRecord.alias === \"function\") {\n const alias = commandRecord.alias();\n if (typeof alias === \"string\" && alias.trim().length > 0) {\n return [alias.trim().toLowerCase()];\n }\n }\n if (Array.isArray(commandRecord._aliases)) {\n return commandRecord._aliases.map((value) => value.trim().toLowerCase()).filter((value) => value.length > 0);\n }\n return [];\n}\n\nexport function findDirectChildCommand(parent: Command, name: string): Command | null {\n const normalizedTarget = name.trim().toLowerCase();\n return (\n parent.commands.find((entry) => {\n if (entry.name().trim().toLowerCase() === normalizedTarget) {\n return true;\n }\n return commandAliases(entry).includes(normalizedTarget);\n }) ?? null\n );\n}\n\nexport function findCommandByPath(root: Command, pathParts: string[]): Command | null {\n let current: Command = root;\n for (const part of pathParts) {\n const next = findDirectChildCommand(current, part);\n if (!next) {\n return null;\n }\n current = next;\n }\n return current;\n}\n\nexport function ensureCommandPath(root: Command, pathParts: string[]): Command | null {\n if (pathParts.length === 0) {\n return null;\n }\n\n let current: Command = root;\n for (let index = 0; index < pathParts.length; index += 1) {\n const part = pathParts[index];\n const existing = findDirectChildCommand(current, part);\n if (existing) {\n current = existing;\n continue;\n }\n\n const created = current.command(part);\n if (index < pathParts.length - 1) {\n created.description(\"Extension-provided command group.\");\n } else {\n created.description(\"Extension-provided command path.\");\n }\n current = created;\n }\n\n return current;\n}\n"],"names":[],"mappings":"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","debugId":"b2d550e5-da06-5832-85f4-a3c40208d78d"}
1
+ {"version":3,"file":"extension-command-help.js","sources":["cli/extension-command-help.ts"],"sourceRoot":"/","sourcesContent":["import { Command } from \"commander\";\nimport type {\n RegisteredExtensionCommandDefinition,\n RegisteredExtensionFlagDefinitions,\n} from \"../core/extensions/index.js\";\n\nexport interface ExtensionCommandArgumentHelpDescriptor {\n name: string;\n required: boolean;\n variadic: boolean;\n description?: string;\n}\n\nexport interface ExtensionCommandHelpDescriptor {\n command: string;\n action: string;\n description?: string;\n intent?: string;\n examples: string[];\n failure_hints: string[];\n arguments: ExtensionCommandArgumentHelpDescriptor[];\n flags: Array<Record<string, unknown>>;\n source?: {\n layer: \"global\" | \"project\";\n name: string;\n package?: string;\n };\n}\n\nexport interface HelpOptionSummary {\n flags: string;\n long: string | null;\n short: string | null;\n description: string;\n takes_value: boolean;\n value_required: boolean;\n value_name: string | null;\n variadic: boolean;\n required: boolean;\n aliases: string[];\n alias_for: string | null;\n default_value?: unknown;\n}\n\nexport function normalizeExtensionCommandPath(commandPath: string): string {\n return commandPath\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .filter((part) => part.length > 0)\n .join(\" \");\n}\n\nfunction toNonEmptyFlagString(value: unknown): string | null {\n if (typeof value !== \"string\") {\n return null;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nfunction toOptionalBoolean(value: unknown): boolean | undefined {\n return typeof value === \"boolean\" ? value : undefined;\n}\n\nfunction formatDynamicExtensionFlagHelpLine(definition: Record<string, unknown>): string | null {\n const visible = toOptionalBoolean(definition.visible);\n if (visible === false) {\n return null;\n }\n const longName = toNonEmptyFlagString(definition.long);\n if (!longName || !longName.startsWith(\"--\") || longName.length < 3) {\n return null;\n }\n\n const shortName = toNonEmptyFlagString(definition.short);\n const shortPrefix = shortName && shortName.startsWith(\"-\") && !shortName.startsWith(\"--\") ? `${shortName}, ` : \"\";\n const valueName = toNonEmptyFlagString(definition.value_name);\n const valueSuffix = valueName ? ` <${valueName}>` : \"\";\n const description = toNonEmptyFlagString(definition.description) ?? \"Extension-provided option.\";\n const markers: string[] = [];\n if (toOptionalBoolean(definition.required) === true) {\n markers.push(\"required\");\n }\n if (toOptionalBoolean(definition.enabled) === false) {\n markers.push(\"disabled\");\n }\n const markerSuffix = markers.length > 0 ? ` [${markers.join(\", \")}]` : \"\";\n return `${shortPrefix}${longName}${valueSuffix} ${description}${markerSuffix}`;\n}\n\nfunction buildDynamicExtensionFlagHelp(definitions: Array<Record<string, unknown>>): string | null {\n const lines = [\n ...new Set(\n definitions\n .map(formatDynamicExtensionFlagHelpLine)\n .filter((line): line is string => line !== null),\n ),\n ].sort((left, right) => left.localeCompare(right));\n if (lines.length === 0) {\n return null;\n }\n return `\\nExtension-provided flags:\\n ${lines.join(\"\\n \")}`;\n}\n\nexport function collectDynamicExtensionFlagHelpByCommand(\n registrations: RegisteredExtensionFlagDefinitions[],\n): Map<string, string> {\n const grouped = new Map<string, Array<Record<string, unknown>>>();\n for (const registration of registrations) {\n const commandPath = normalizeExtensionCommandPath(registration.target_command);\n if (commandPath.length === 0) {\n continue;\n }\n const existing = grouped.get(commandPath) ?? [];\n existing.push(...registration.flags);\n grouped.set(commandPath, existing);\n }\n\n const entries = [...grouped.entries()].sort(([left], [right]) => left.localeCompare(right));\n const helpByCommand = new Map<string, string>();\n for (const [commandPath, definitions] of entries) {\n const helpText = buildDynamicExtensionFlagHelp(definitions);\n if (!helpText) {\n continue;\n }\n helpByCommand.set(commandPath, helpText);\n }\n return helpByCommand;\n}\n\nfunction normalizeExtensionCommandAction(commandPath: string, action: string | undefined): string {\n if (typeof action !== \"string\" || action.trim().length === 0) {\n return commandPath.replace(/\\s+/g, \"-\");\n }\n return action.trim().toLowerCase();\n}\n\nfunction normalizeExtensionCommandStringList(values: string[] | undefined): string[] {\n if (!Array.isArray(values)) {\n return [];\n }\n const normalized: string[] = [];\n const seen = new Set<string>();\n for (const value of values) {\n if (typeof value !== \"string\") {\n continue;\n }\n const trimmed = value.trim();\n if (trimmed.length === 0 || seen.has(trimmed)) {\n continue;\n }\n seen.add(trimmed);\n normalized.push(trimmed);\n }\n return normalized;\n}\n\nfunction normalizeExtensionCommandArguments(\n values: Array<{ name?: unknown; required?: unknown; variadic?: unknown; description?: unknown }> | undefined,\n): ExtensionCommandArgumentHelpDescriptor[] {\n if (!Array.isArray(values)) {\n return [];\n }\n return values\n .map((value) => {\n const name = typeof value.name === \"string\" ? value.name.trim() : \"\";\n if (name.length === 0) {\n return null;\n }\n const normalized: ExtensionCommandArgumentHelpDescriptor = {\n name,\n required: value.required === true,\n variadic: value.variadic === true,\n };\n if (typeof value.description === \"string\" && value.description.trim().length > 0) {\n normalized.description = value.description.trim();\n }\n return normalized;\n })\n .filter((entry): entry is ExtensionCommandArgumentHelpDescriptor => entry !== null);\n}\n\nexport function collectExtensionCommandHelpDescriptors(\n commandHandlers: string[],\n commandDefinitions: RegisteredExtensionCommandDefinition[],\n flagRegistrations: RegisteredExtensionFlagDefinitions[],\n): Map<string, ExtensionCommandHelpDescriptor> {\n const definitionsByCommand = new Map<string, ExtensionCommandHelpDescriptor>();\n for (const definition of commandDefinitions) {\n const commandPath = normalizeExtensionCommandPath(definition.command);\n if (commandPath.length === 0) {\n continue;\n }\n const description =\n typeof definition.description === \"string\" && definition.description.trim().length > 0\n ? definition.description.trim()\n : undefined;\n const intent =\n typeof definition.intent === \"string\" && definition.intent.trim().length > 0\n ? definition.intent.trim()\n : undefined;\n definitionsByCommand.set(commandPath, {\n command: commandPath,\n action: normalizeExtensionCommandAction(commandPath, definition.action),\n description,\n intent,\n examples: normalizeExtensionCommandStringList(definition.examples),\n failure_hints: normalizeExtensionCommandStringList(definition.failure_hints),\n arguments: normalizeExtensionCommandArguments(definition.arguments),\n flags: [],\n source: {\n layer: definition.layer,\n name: definition.name,\n package: definition.source_package,\n },\n });\n }\n\n const flagsByCommand = new Map<string, Array<Record<string, unknown>>>();\n for (const registration of flagRegistrations) {\n const commandPath = normalizeExtensionCommandPath(registration.target_command);\n if (commandPath.length === 0) {\n continue;\n }\n const existing = flagsByCommand.get(commandPath) ?? [];\n existing.push(...registration.flags);\n flagsByCommand.set(commandPath, existing);\n }\n\n const commandSet = new Set<string>();\n for (const commandPath of commandHandlers) {\n const normalized = normalizeExtensionCommandPath(commandPath);\n if (normalized.length > 0) {\n commandSet.add(normalized);\n }\n }\n for (const commandPath of definitionsByCommand.keys()) {\n commandSet.add(commandPath);\n }\n for (const commandPath of flagsByCommand.keys()) {\n commandSet.add(commandPath);\n }\n\n const descriptors = new Map<string, ExtensionCommandHelpDescriptor>();\n const sortedCommands = [...commandSet].sort((left, right) => left.localeCompare(right));\n for (const commandPath of sortedCommands) {\n const definition = definitionsByCommand.get(commandPath);\n const flags = flagsByCommand.get(commandPath) ?? [];\n if (definition) {\n descriptors.set(commandPath, {\n ...definition,\n flags,\n });\n continue;\n }\n descriptors.set(commandPath, {\n command: commandPath,\n action: normalizeExtensionCommandAction(commandPath, undefined),\n examples: [],\n failure_hints: [],\n arguments: [],\n flags,\n });\n }\n\n return descriptors;\n}\n\nfunction buildExtensionArgumentToken(argument: ExtensionCommandArgumentHelpDescriptor): string {\n const variadicSuffix = argument.variadic ? \"...\" : \"\";\n if (argument.required) {\n return `<${argument.name}${variadicSuffix}>`;\n }\n return `[${argument.name}${variadicSuffix}]`;\n}\n\nexport function applyDynamicExtensionArguments(command: Command, descriptor: ExtensionCommandHelpDescriptor): void {\n for (const argument of descriptor.arguments) {\n command.argument(buildExtensionArgumentToken(argument), argument.description ?? \"Extension argument.\");\n }\n}\n\nfunction formatDynamicExtensionOptionFlags(definition: Record<string, unknown>): string | null {\n const visible = toOptionalBoolean(definition.visible);\n if (visible === false) {\n return null;\n }\n const longName = toNonEmptyFlagString(definition.long);\n const shortName = toNonEmptyFlagString(definition.short);\n const normalizedShort = shortName && shortName.startsWith(\"-\") && !shortName.startsWith(\"--\") ? shortName : null;\n const normalizedLong = longName && longName.startsWith(\"--\") && longName.length > 2 ? longName : null;\n if (!normalizedLong && !normalizedShort) {\n return null;\n }\n const optionValueName = toNonEmptyFlagString(definition.value_name);\n const optionValueSuffix = optionValueName ? ` <${optionValueName}>` : \"\";\n const optionNames = [normalizedShort, normalizedLong].filter((entry): entry is string => entry !== null);\n return `${optionNames.join(\", \")}${optionValueSuffix}`;\n}\n\nfunction formatDynamicExtensionParseOptionFlags(definition: Record<string, unknown>): string | null {\n const visible = toOptionalBoolean(definition.visible);\n if (visible === false) {\n return null;\n }\n const longName = toNonEmptyFlagString(definition.long);\n const shortName = toNonEmptyFlagString(definition.short);\n const normalizedShort = shortName && shortName.startsWith(\"-\") && !shortName.startsWith(\"--\") ? shortName : null;\n const normalizedLong = longName && longName.startsWith(\"--\") && longName.length > 2 ? longName : null;\n if (!normalizedLong && !normalizedShort) {\n return null;\n }\n const valueType = toNonEmptyFlagString(definition.value_type) ?? toNonEmptyFlagString(definition.type);\n const valueName = toNonEmptyFlagString(definition.value_name);\n const requiresValue = valueType !== \"boolean\" && (valueName !== null || valueType !== null || toOptionalBoolean(definition.required) === true);\n const valueSuffix = requiresValue ? ` <${valueName ?? \"value\"}>` : \"\";\n const optionNames = [normalizedShort, normalizedLong].filter((entry): entry is string => entry !== null);\n return `${optionNames.join(\", \")}${valueSuffix}`;\n}\n\nfunction formatDynamicExtensionOptionDescription(definition: Record<string, unknown>): string {\n const description = toNonEmptyFlagString(definition.description) ?? \"Extension-provided option.\";\n const markers: string[] = [];\n if (toOptionalBoolean(definition.required) === true) {\n markers.push(\"required\");\n }\n if (toOptionalBoolean(definition.enabled) === false) {\n markers.push(\"disabled\");\n }\n const markerSuffix = markers.length > 0 ? ` [${markers.join(\", \")}]` : \"\";\n return `${description}${markerSuffix}`;\n}\n\nfunction commandAlreadyHasOption(command: Command, definition: Record<string, unknown>): boolean {\n const longName = toNonEmptyFlagString(definition.long);\n const shortName = toNonEmptyFlagString(definition.short);\n return command.options.some((option) => {\n const optionWithNames = option as { long?: string; short?: string };\n return (\n (longName !== null && optionWithNames.long === longName) ||\n (shortName !== null && optionWithNames.short === shortName)\n );\n });\n}\n\nexport function applyDynamicExtensionFlagOptions(command: Command, definitions: Array<Record<string, unknown>>): void {\n for (const definition of definitions) {\n if (commandAlreadyHasOption(command, definition)) {\n continue;\n }\n const flags = formatDynamicExtensionParseOptionFlags(definition);\n if (!flags) {\n continue;\n }\n command.option(flags, formatDynamicExtensionOptionDescription(definition));\n }\n}\n\nfunction buildDynamicExtensionHelpOptionSummary(definition: Record<string, unknown>): HelpOptionSummary | null {\n const flags = formatDynamicExtensionOptionFlags(definition);\n if (!flags) {\n return null;\n }\n const longName = toNonEmptyFlagString(definition.long);\n const shortName = toNonEmptyFlagString(definition.short);\n const normalizedLong = longName && longName.startsWith(\"--\") && longName.length > 2 ? longName : null;\n const normalizedShort = shortName && shortName.startsWith(\"-\") && !shortName.startsWith(\"--\") ? shortName : null;\n const valueName = toNonEmptyFlagString(definition.value_name);\n const required = toOptionalBoolean(definition.required) === true;\n return {\n flags,\n long: normalizedLong,\n short: normalizedShort,\n description: formatDynamicExtensionOptionDescription(definition),\n takes_value: valueName !== null,\n value_required: valueName !== null,\n value_name: valueName,\n variadic: false,\n required,\n aliases: [],\n alias_for: null,\n };\n}\n\nexport function buildDynamicExtensionHelpOptionSummaries(descriptor: ExtensionCommandHelpDescriptor | undefined): HelpOptionSummary[] {\n if (!descriptor) {\n return [];\n }\n const summaries: HelpOptionSummary[] = [];\n const seen = new Set<string>();\n for (const definition of descriptor.flags) {\n const summary = buildDynamicExtensionHelpOptionSummary(definition);\n if (!summary || seen.has(summary.flags)) {\n continue;\n }\n seen.add(summary.flags);\n summaries.push(summary);\n }\n return summaries;\n}\n\nexport function mergeHelpOptionSummaries(base: HelpOptionSummary[], extension: HelpOptionSummary[]): HelpOptionSummary[] {\n if (extension.length === 0) {\n return base;\n }\n const merged = [...base];\n const seen = new Set(base.map((entry) => entry.flags));\n for (const entry of extension) {\n if (seen.has(entry.flags)) {\n continue;\n }\n seen.add(entry.flags);\n merged.push(entry);\n }\n return merged;\n}\n\nexport function buildDynamicExtensionCommandMetadataHelp(descriptor: ExtensionCommandHelpDescriptor): string | null {\n const lines: string[] = [];\n if (descriptor.intent) {\n lines.push(`Intent: ${descriptor.intent}`);\n }\n if (descriptor.action) {\n lines.push(`Action contract: ${descriptor.action}`);\n }\n if (descriptor.examples.length > 0) {\n lines.push(\"Examples:\");\n for (const example of descriptor.examples) {\n lines.push(` - ${example}`);\n }\n }\n if (descriptor.failure_hints.length > 0) {\n lines.push(\"Common failure hints:\");\n for (const hint of descriptor.failure_hints) {\n lines.push(` - ${hint}`);\n }\n }\n if (lines.length === 0) {\n return null;\n }\n return `\\nExtension command metadata:\\n ${lines.join(\"\\n \")}`;\n}\n\nexport function commandAliases(command: Command): string[] {\n const commandRecord = command as unknown as {\n aliases?: () => string[];\n alias?: () => string | undefined;\n _aliases?: string[];\n };\n if (typeof commandRecord.aliases === \"function\") {\n return commandRecord.aliases().map((value) => value.trim().toLowerCase()).filter((value) => value.length > 0);\n }\n if (typeof commandRecord.alias === \"function\") {\n const alias = commandRecord.alias();\n if (typeof alias === \"string\" && alias.trim().length > 0) {\n return [alias.trim().toLowerCase()];\n }\n }\n if (Array.isArray(commandRecord._aliases)) {\n return commandRecord._aliases.map((value) => value.trim().toLowerCase()).filter((value) => value.length > 0);\n }\n return [];\n}\n\nexport function findDirectChildCommand(parent: Command, name: string): Command | null {\n const normalizedTarget = name.trim().toLowerCase();\n return (\n parent.commands.find((entry) => {\n if (entry.name().trim().toLowerCase() === normalizedTarget) {\n return true;\n }\n return commandAliases(entry).includes(normalizedTarget);\n }) ?? null\n );\n}\n\nexport function findCommandByPath(root: Command, pathParts: string[]): Command | null {\n let current: Command = root;\n for (const part of pathParts) {\n const next = findDirectChildCommand(current, part);\n if (!next) {\n return null;\n }\n current = next;\n }\n return current;\n}\n\nexport function ensureCommandPath(root: Command, pathParts: string[]): Command | null {\n if (pathParts.length === 0) {\n return null;\n }\n\n let current: Command = root;\n for (let index = 0; index < pathParts.length; index += 1) {\n const part = pathParts[index];\n const existing = findDirectChildCommand(current, part);\n if (existing) {\n current = existing;\n continue;\n }\n\n const created = current.command(part);\n if (index < pathParts.length - 1) {\n created.description(\"Extension-provided command group.\");\n } else {\n created.description(\"Extension-provided command path.\");\n }\n current = created;\n }\n\n return current;\n}\n"],"names":[],"mappings":"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","debugId":"2afbf21c-b26d-53d0-bd93-762ebd9e366a"}
@@ -1,3 +1,5 @@
1
+ export declare function collectLooseCommandOptionKeysForDefinitions(definitions: Array<Record<string, unknown>>): Set<string>;
1
2
  export declare function validateLooseCommandOptionsWithFlagDefinitions(options: Record<string, unknown>, definitions: Array<Record<string, unknown>>, commandPath: string): void;
2
3
  export declare function coerceLooseCommandOptionsWithFlagDefinitions(options: Record<string, unknown>, definitions: Array<Record<string, unknown>>): Record<string, unknown>;
3
4
  export declare function parseLooseCommandOptions(args: string[]): Record<string, unknown>;
5
+ export declare function stripLooseCommandOptionTokens(args: string[], definitions: Array<Record<string, unknown>>): string[];
@@ -1,7 +1,8 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d166f748-b8c5-5837-a22e-8a0e34b28c72")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b2a33807-c231-539d-ba55-045ba504f088")}catch(e){}}();
3
3
  import { EXIT_CODE } from "../core/shared/constants.js";
4
4
  import { PmCliError } from "../core/shared/errors.js";
5
+ import { flattenFlagListValue, resolveFlagValueKind } from "../core/extensions/flag-value-types.js";
5
6
  const UNSAFE_LOOSE_OPTION_KEYS = new Set(["__proto__", "prototype", "constructor"]);
6
7
  function toLooseOptionKey(rawKey) {
7
8
  const key = rawKey.trim().toLowerCase();
@@ -83,19 +84,11 @@ function isUnsafeLooseOptionKey(key) {
83
84
  return UNSAFE_LOOSE_OPTION_KEYS.has(key);
84
85
  }
85
86
  function resolveLooseOptionCoercionKind(definition) {
86
- const explicitType = typeof definition.type === "string" ? definition.type.trim().toLowerCase() : undefined;
87
- const valueType = typeof definition.value_type === "string" ? definition.value_type.trim().toLowerCase() : undefined;
88
- const kind = explicitType ?? valueType;
89
- if (kind === "string") {
90
- return "string";
91
- }
92
- if (kind === "number" || kind === "int" || kind === "integer" || kind === "float") {
93
- return "number";
94
- }
95
- if (kind === "boolean" || kind === "bool") {
96
- return "boolean";
97
- }
98
- return null;
87
+ // `value_type` is the canonical field; the deprecated `type` alias resolves
88
+ // only when `value_type` is absent (FlagDefinition documents this precedence).
89
+ const raw = (typeof definition.value_type === "string" ? definition.value_type : undefined) ??
90
+ (typeof definition.type === "string" ? definition.type : undefined);
91
+ return resolveFlagValueKind(raw);
99
92
  }
100
93
  function collectLooseOptionKeys(definition) {
101
94
  const keys = [];
@@ -115,6 +108,15 @@ function collectLooseOptionKeys(definition) {
115
108
  }
116
109
  return [...new Set(keys)];
117
110
  }
111
+ export function collectLooseCommandOptionKeysForDefinitions(definitions) {
112
+ const keys = new Set();
113
+ for (const definition of definitions) {
114
+ for (const key of collectLooseOptionKeys(definition)) {
115
+ keys.add(key);
116
+ }
117
+ }
118
+ return keys;
119
+ }
118
120
  function resolveCanonicalLooseOptionKey(definition) {
119
121
  const long = typeof definition.long === "string" ? definition.long.trim() : "";
120
122
  if (long.startsWith("--")) {
@@ -213,6 +215,27 @@ function coerceLooseOptionValue(value, kind) {
213
215
  }
214
216
  return value;
215
217
  }
218
+ /**
219
+ * Flatten a (possibly repeated and/or comma-joined) value into a list, applying
220
+ * the declared coercion kind per element. Mirrors how core list flags such as
221
+ * `--tags` split comma values and accumulate repeated occurrences, so an
222
+ * extension flag declared `list: true` behaves identically. Empty segments are
223
+ * dropped and surrounding whitespace is trimmed.
224
+ */
225
+ function splitCommaListValue(value, kind) {
226
+ const entries = flattenFlagListValue(value);
227
+ return kind ? entries.map((entry) => coerceLooseOptionValue(entry, kind)) : entries;
228
+ }
229
+ /**
230
+ * Resolve the value applied when a flag is omitted entirely. List flags wrap the
231
+ * default into an accumulated array; scalar flags coerce by declared kind.
232
+ */
233
+ function applyFlagDefault(defaultValue, kind, isListFlag) {
234
+ if (isListFlag) {
235
+ return splitCommaListValue(defaultValue, kind);
236
+ }
237
+ return kind ? coerceLooseOptionValue(defaultValue, kind) : defaultValue;
238
+ }
216
239
  export function coerceLooseCommandOptionsWithFlagDefinitions(options, definitions) {
217
240
  if (definitions.length === 0) {
218
241
  return options;
@@ -237,10 +260,19 @@ export function coerceLooseCommandOptionsWithFlagDefinitions(options, definition
237
260
  delete coerced[key];
238
261
  }
239
262
  const kind = resolveLooseOptionCoercionKind(definition);
240
- if (!kind) {
263
+ const isListFlag = definition.list === true;
264
+ if (!Object.hasOwn(coerced, canonical)) {
265
+ // Flag was omitted entirely: apply the declared default when present.
266
+ if (definition.default !== undefined) {
267
+ coerced[canonical] = applyFlagDefault(definition.default, kind, isListFlag);
268
+ }
241
269
  continue;
242
270
  }
243
- if (!Object.hasOwn(coerced, canonical)) {
271
+ if (isListFlag) {
272
+ coerced[canonical] = splitCommaListValue(coerced[canonical], kind);
273
+ continue;
274
+ }
275
+ if (!kind) {
244
276
  continue;
245
277
  }
246
278
  coerced[canonical] = coerceLooseOptionValue(coerced[canonical], kind);
@@ -266,5 +298,45 @@ export function parseLooseCommandOptions(args) {
266
298
  }
267
299
  return options;
268
300
  }
301
+ export function stripLooseCommandOptionTokens(args, definitions) {
302
+ if (definitions.length === 0) {
303
+ return [...args];
304
+ }
305
+ const knownKeys = new Set();
306
+ const booleanKeys = new Set();
307
+ for (const definition of definitions) {
308
+ const valueKind = resolveLooseOptionCoercionKind(definition);
309
+ for (const key of collectLooseOptionKeys(definition)) {
310
+ knownKeys.add(key);
311
+ if (valueKind === "boolean") {
312
+ booleanKeys.add(key);
313
+ }
314
+ }
315
+ }
316
+ if (knownKeys.size === 0) {
317
+ return [...args];
318
+ }
319
+ const stripped = [];
320
+ let index = 0;
321
+ while (index < args.length) {
322
+ if (args[index] === "--") {
323
+ stripped.push(...args.slice(index + 1));
324
+ break;
325
+ }
326
+ const parsed = parseLooseOptionToken(args, index);
327
+ if (parsed) {
328
+ const normalizedKey = toLooseOptionKey(parsed.key);
329
+ if (knownKeys.has(normalizedKey)) {
330
+ const token = args[index] ?? "";
331
+ const consumed = booleanKeys.has(normalizedKey) && !token.includes("=") ? 1 : parsed.consumed;
332
+ index += consumed;
333
+ continue;
334
+ }
335
+ }
336
+ stripped.push(args[index]);
337
+ index += 1;
338
+ }
339
+ return stripped;
340
+ }
269
341
  //# sourceMappingURL=extension-command-options.js.map
270
- //# debugId=d166f748-b8c5-5837-a22e-8a0e34b28c72
342
+ //# debugId=b2a33807-c231-539d-ba55-045ba504f088
@@ -1 +1 @@
1
- {"version":3,"file":"extension-command-options.js","sources":["cli/extension-command-options.ts"],"sourceRoot":"/","sourcesContent":["import { EXIT_CODE } from \"../core/shared/constants.js\";\nimport { PmCliError } from \"../core/shared/errors.js\";\n\nconst UNSAFE_LOOSE_OPTION_KEYS = new Set([\"__proto__\", \"prototype\", \"constructor\"]);\n\nfunction toLooseOptionKey(rawKey: string): string {\n const key = rawKey.trim().toLowerCase();\n return key.replaceAll(/-([a-z0-9])/g, (_match, group: string) => group.toUpperCase());\n}\n\nfunction setLooseOptionValue(options: Record<string, unknown>, key: string, value: unknown): void {\n const existing = options[key];\n if (existing === undefined) {\n options[key] = value;\n return;\n }\n if (Array.isArray(existing)) {\n existing.push(value);\n options[key] = existing;\n return;\n }\n options[key] = [existing, value];\n}\n\ninterface ParsedLooseOptionToken {\n consumed: number;\n key: string;\n value: unknown;\n}\n\nfunction parseLooseOptionToken(args: string[], index: number): ParsedLooseOptionToken | null {\n const token = args[index];\n if (!token.startsWith(\"-\") || token === \"-\" || token === \"--\") {\n return null;\n }\n\n if (!token.startsWith(\"--\")) {\n const equalsIndex = token.indexOf(\"=\");\n if (equalsIndex >= 0) {\n return {\n consumed: 1,\n key: token.slice(1, equalsIndex).trim(),\n value: token.slice(equalsIndex + 1),\n };\n }\n const key = token.slice(1).trim();\n const next = args[index + 1];\n if (typeof next === \"string\" && !next.startsWith(\"-\")) {\n return {\n consumed: 2,\n key,\n value: next,\n };\n }\n return {\n consumed: 1,\n key,\n value: true,\n };\n }\n\n const equalsIndex = token.indexOf(\"=\");\n if (equalsIndex >= 0) {\n return {\n consumed: 1,\n key: token.slice(2, equalsIndex).trim(),\n value: token.slice(equalsIndex + 1),\n };\n }\n\n if (token.startsWith(\"--no-\")) {\n return {\n consumed: 1,\n key: token.slice(5).trim(),\n value: false,\n };\n }\n\n const key = token.slice(2).trim();\n const next = args[index + 1];\n if (typeof next === \"string\" && !next.startsWith(\"-\")) {\n return {\n consumed: 2,\n key,\n value: next,\n };\n }\n return {\n consumed: 1,\n key,\n value: true,\n };\n}\n\nfunction isUnsafeLooseOptionKey(key: string): boolean {\n return UNSAFE_LOOSE_OPTION_KEYS.has(key);\n}\n\ntype LooseOptionCoercionKind = \"string\" | \"number\" | \"boolean\";\n\nfunction resolveLooseOptionCoercionKind(definition: Record<string, unknown>): LooseOptionCoercionKind | null {\n const explicitType = typeof definition.type === \"string\" ? definition.type.trim().toLowerCase() : undefined;\n const valueType = typeof definition.value_type === \"string\" ? definition.value_type.trim().toLowerCase() : undefined;\n const kind = explicitType ?? valueType;\n if (kind === \"string\") {\n return \"string\";\n }\n if (kind === \"number\" || kind === \"int\" || kind === \"integer\" || kind === \"float\") {\n return \"number\";\n }\n if (kind === \"boolean\" || kind === \"bool\") {\n return \"boolean\";\n }\n return null;\n}\n\nfunction collectLooseOptionKeys(definition: Record<string, unknown>): string[] {\n const keys: string[] = [];\n const long = typeof definition.long === \"string\" ? definition.long.trim() : \"\";\n const short = typeof definition.short === \"string\" ? definition.short.trim() : \"\";\n if (long.startsWith(\"--\")) {\n const normalized = toLooseOptionKey(long.slice(2));\n if (normalized.length > 0 && !isUnsafeLooseOptionKey(normalized)) {\n keys.push(normalized);\n }\n }\n if (short.startsWith(\"-\") && !short.startsWith(\"--\")) {\n const normalized = toLooseOptionKey(short.slice(1));\n if (normalized.length > 0 && !isUnsafeLooseOptionKey(normalized)) {\n keys.push(normalized);\n }\n }\n return [...new Set(keys)];\n}\n\nfunction resolveCanonicalLooseOptionKey(definition: Record<string, unknown>): string | null {\n const long = typeof definition.long === \"string\" ? definition.long.trim() : \"\";\n if (long.startsWith(\"--\")) {\n const normalized = toLooseOptionKey(long.slice(2));\n if (normalized.length > 0 && !isUnsafeLooseOptionKey(normalized)) {\n return normalized;\n }\n }\n return collectLooseOptionKeys(definition)[0] ?? null;\n}\n\nfunction formatLooseOptionLabel(definition: Record<string, unknown>): string | null {\n const long = typeof definition.long === \"string\" ? definition.long.trim() : \"\";\n if (long.startsWith(\"--\") && long.length > 2) {\n return long;\n }\n const short = typeof definition.short === \"string\" ? definition.short.trim() : \"\";\n if (short.startsWith(\"-\") && !short.startsWith(\"--\") && short.length > 1) {\n return short;\n }\n return null;\n}\n\nexport function validateLooseCommandOptionsWithFlagDefinitions(\n options: Record<string, unknown>,\n definitions: Array<Record<string, unknown>>,\n commandPath: string,\n): void {\n if (definitions.length === 0) {\n return;\n }\n const allowed = new Set<string>();\n const disabled = new Map<string, string>();\n const required: Array<{ keys: string[]; label: string }> = [];\n const labels: string[] = [];\n for (const definition of definitions) {\n const keys = collectLooseOptionKeys(definition);\n const label = formatLooseOptionLabel(definition);\n if (label) {\n labels.push(label);\n }\n for (const key of keys) {\n allowed.add(key);\n if (definition.enabled === false) {\n disabled.set(key, label ?? `--${key}`);\n }\n }\n if (definition.required === true && definition.enabled !== false && keys.length > 0) {\n required.push({ keys, label: label ?? `--${keys[0]}` });\n }\n }\n for (const key of Object.keys(options)) {\n if (!allowed.has(key)) {\n const expected = labels.length > 0 ? ` Expected one of: ${[...new Set(labels)].join(\", \")}.` : \"\";\n throw new PmCliError(`Unknown option '--${key}' for extension command '${commandPath}'.${expected}`, EXIT_CODE.USAGE);\n }\n const disabledLabel = disabled.get(key);\n if (disabledLabel) {\n throw new PmCliError(`Option '${disabledLabel}' is disabled for extension command '${commandPath}'.`, EXIT_CODE.USAGE);\n }\n }\n for (const entry of required) {\n if (!entry.keys.some((key) => Object.hasOwn(options, key))) {\n throw new PmCliError(`Missing required option '${entry.label}' for extension command '${commandPath}'.`, EXIT_CODE.USAGE);\n }\n }\n}\n\nfunction coerceLooseOptionValue(value: unknown, kind: LooseOptionCoercionKind): unknown {\n if (Array.isArray(value)) {\n return value.map((entry) => coerceLooseOptionValue(entry, kind));\n }\n if (kind === \"string\") {\n if (typeof value === \"string\") {\n return value;\n }\n if (value === null || value === undefined) {\n return value;\n }\n return String(value);\n }\n if (kind === \"number\") {\n if (typeof value === \"number\") {\n return Number.isFinite(value) ? value : value;\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : value;\n }\n return value;\n }\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"string\") {\n const normalized = value.trim().toLowerCase();\n if (normalized === \"true\" || normalized === \"1\") {\n return true;\n }\n if (normalized === \"false\" || normalized === \"0\") {\n return false;\n }\n }\n return value;\n}\n\nexport function coerceLooseCommandOptionsWithFlagDefinitions(\n options: Record<string, unknown>,\n definitions: Array<Record<string, unknown>>,\n): Record<string, unknown> {\n if (definitions.length === 0) {\n return options;\n }\n const coerced = Object.create(null) as Record<string, unknown>;\n for (const [key, value] of Object.entries(options)) {\n coerced[key] = value;\n }\n for (const definition of definitions) {\n const canonical = resolveCanonicalLooseOptionKey(definition);\n if (!canonical) {\n continue;\n }\n for (const key of collectLooseOptionKeys(definition)) {\n if (key === canonical || !Object.hasOwn(coerced, key)) {\n continue;\n }\n if (Object.hasOwn(coerced, canonical)) {\n continue;\n }\n coerced[canonical] = coerced[key];\n delete coerced[key];\n }\n const kind = resolveLooseOptionCoercionKind(definition);\n if (!kind) {\n continue;\n }\n if (!Object.hasOwn(coerced, canonical)) {\n continue;\n }\n coerced[canonical] = coerceLooseOptionValue(coerced[canonical], kind);\n }\n return coerced;\n}\n\nexport function parseLooseCommandOptions(args: string[]): Record<string, unknown> {\n const options = Object.create(null) as Record<string, unknown>;\n let index = 0;\n while (index < args.length) {\n const parsed = parseLooseOptionToken(args, index);\n if (!parsed) {\n index += 1;\n continue;\n }\n\n const normalizedKey = toLooseOptionKey(parsed.key);\n if (normalizedKey.length === 0 || isUnsafeLooseOptionKey(normalizedKey)) {\n index += parsed.consumed;\n continue;\n }\n setLooseOptionValue(options, normalizedKey, parsed.value);\n index += parsed.consumed;\n }\n return options;\n}\n"],"names":[],"mappings":"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","debugId":"d166f748-b8c5-5837-a22e-8a0e34b28c72"}
1
+ {"version":3,"file":"extension-command-options.js","sources":["cli/extension-command-options.ts"],"sourceRoot":"/","sourcesContent":["import { EXIT_CODE } from \"../core/shared/constants.js\";\nimport { PmCliError } from \"../core/shared/errors.js\";\nimport { flattenFlagListValue, resolveFlagValueKind } from \"../core/extensions/flag-value-types.js\";\n\nconst UNSAFE_LOOSE_OPTION_KEYS = new Set([\"__proto__\", \"prototype\", \"constructor\"]);\n\nfunction toLooseOptionKey(rawKey: string): string {\n const key = rawKey.trim().toLowerCase();\n return key.replaceAll(/-([a-z0-9])/g, (_match, group: string) => group.toUpperCase());\n}\n\nfunction setLooseOptionValue(options: Record<string, unknown>, key: string, value: unknown): void {\n const existing = options[key];\n if (existing === undefined) {\n options[key] = value;\n return;\n }\n if (Array.isArray(existing)) {\n existing.push(value);\n options[key] = existing;\n return;\n }\n options[key] = [existing, value];\n}\n\ninterface ParsedLooseOptionToken {\n consumed: number;\n key: string;\n value: unknown;\n}\n\nfunction parseLooseOptionToken(args: string[], index: number): ParsedLooseOptionToken | null {\n const token = args[index];\n if (!token.startsWith(\"-\") || token === \"-\" || token === \"--\") {\n return null;\n }\n\n if (!token.startsWith(\"--\")) {\n const equalsIndex = token.indexOf(\"=\");\n if (equalsIndex >= 0) {\n return {\n consumed: 1,\n key: token.slice(1, equalsIndex).trim(),\n value: token.slice(equalsIndex + 1),\n };\n }\n const key = token.slice(1).trim();\n const next = args[index + 1];\n if (typeof next === \"string\" && !next.startsWith(\"-\")) {\n return {\n consumed: 2,\n key,\n value: next,\n };\n }\n return {\n consumed: 1,\n key,\n value: true,\n };\n }\n\n const equalsIndex = token.indexOf(\"=\");\n if (equalsIndex >= 0) {\n return {\n consumed: 1,\n key: token.slice(2, equalsIndex).trim(),\n value: token.slice(equalsIndex + 1),\n };\n }\n\n if (token.startsWith(\"--no-\")) {\n return {\n consumed: 1,\n key: token.slice(5).trim(),\n value: false,\n };\n }\n\n const key = token.slice(2).trim();\n const next = args[index + 1];\n if (typeof next === \"string\" && !next.startsWith(\"-\")) {\n return {\n consumed: 2,\n key,\n value: next,\n };\n }\n return {\n consumed: 1,\n key,\n value: true,\n };\n}\n\nfunction isUnsafeLooseOptionKey(key: string): boolean {\n return UNSAFE_LOOSE_OPTION_KEYS.has(key);\n}\n\ntype LooseOptionCoercionKind = \"string\" | \"number\" | \"boolean\";\n\nfunction resolveLooseOptionCoercionKind(definition: Record<string, unknown>): LooseOptionCoercionKind | null {\n // `value_type` is the canonical field; the deprecated `type` alias resolves\n // only when `value_type` is absent (FlagDefinition documents this precedence).\n const raw =\n (typeof definition.value_type === \"string\" ? definition.value_type : undefined) ??\n (typeof definition.type === \"string\" ? definition.type : undefined);\n return resolveFlagValueKind(raw);\n}\n\nfunction collectLooseOptionKeys(definition: Record<string, unknown>): string[] {\n const keys: string[] = [];\n const long = typeof definition.long === \"string\" ? definition.long.trim() : \"\";\n const short = typeof definition.short === \"string\" ? definition.short.trim() : \"\";\n if (long.startsWith(\"--\")) {\n const normalized = toLooseOptionKey(long.slice(2));\n if (normalized.length > 0 && !isUnsafeLooseOptionKey(normalized)) {\n keys.push(normalized);\n }\n }\n if (short.startsWith(\"-\") && !short.startsWith(\"--\")) {\n const normalized = toLooseOptionKey(short.slice(1));\n if (normalized.length > 0 && !isUnsafeLooseOptionKey(normalized)) {\n keys.push(normalized);\n }\n }\n return [...new Set(keys)];\n}\n\nexport function collectLooseCommandOptionKeysForDefinitions(\n definitions: Array<Record<string, unknown>>,\n): Set<string> {\n const keys = new Set<string>();\n for (const definition of definitions) {\n for (const key of collectLooseOptionKeys(definition)) {\n keys.add(key);\n }\n }\n return keys;\n}\n\nfunction resolveCanonicalLooseOptionKey(definition: Record<string, unknown>): string | null {\n const long = typeof definition.long === \"string\" ? definition.long.trim() : \"\";\n if (long.startsWith(\"--\")) {\n const normalized = toLooseOptionKey(long.slice(2));\n if (normalized.length > 0 && !isUnsafeLooseOptionKey(normalized)) {\n return normalized;\n }\n }\n return collectLooseOptionKeys(definition)[0] ?? null;\n}\n\nfunction formatLooseOptionLabel(definition: Record<string, unknown>): string | null {\n const long = typeof definition.long === \"string\" ? definition.long.trim() : \"\";\n if (long.startsWith(\"--\") && long.length > 2) {\n return long;\n }\n const short = typeof definition.short === \"string\" ? definition.short.trim() : \"\";\n if (short.startsWith(\"-\") && !short.startsWith(\"--\") && short.length > 1) {\n return short;\n }\n return null;\n}\n\nexport function validateLooseCommandOptionsWithFlagDefinitions(\n options: Record<string, unknown>,\n definitions: Array<Record<string, unknown>>,\n commandPath: string,\n): void {\n if (definitions.length === 0) {\n return;\n }\n const allowed = new Set<string>();\n const disabled = new Map<string, string>();\n const required: Array<{ keys: string[]; label: string }> = [];\n const labels: string[] = [];\n for (const definition of definitions) {\n const keys = collectLooseOptionKeys(definition);\n const label = formatLooseOptionLabel(definition);\n if (label) {\n labels.push(label);\n }\n for (const key of keys) {\n allowed.add(key);\n if (definition.enabled === false) {\n disabled.set(key, label ?? `--${key}`);\n }\n }\n if (definition.required === true && definition.enabled !== false && keys.length > 0) {\n required.push({ keys, label: label ?? `--${keys[0]}` });\n }\n }\n for (const key of Object.keys(options)) {\n if (!allowed.has(key)) {\n const expected = labels.length > 0 ? ` Expected one of: ${[...new Set(labels)].join(\", \")}.` : \"\";\n throw new PmCliError(`Unknown option '--${key}' for extension command '${commandPath}'.${expected}`, EXIT_CODE.USAGE);\n }\n const disabledLabel = disabled.get(key);\n if (disabledLabel) {\n throw new PmCliError(`Option '${disabledLabel}' is disabled for extension command '${commandPath}'.`, EXIT_CODE.USAGE);\n }\n }\n for (const entry of required) {\n if (!entry.keys.some((key) => Object.hasOwn(options, key))) {\n throw new PmCliError(`Missing required option '${entry.label}' for extension command '${commandPath}'.`, EXIT_CODE.USAGE);\n }\n }\n}\n\nfunction coerceLooseOptionValue(value: unknown, kind: LooseOptionCoercionKind): unknown {\n if (Array.isArray(value)) {\n return value.map((entry) => coerceLooseOptionValue(entry, kind));\n }\n if (kind === \"string\") {\n if (typeof value === \"string\") {\n return value;\n }\n if (value === null || value === undefined) {\n return value;\n }\n return String(value);\n }\n if (kind === \"number\") {\n if (typeof value === \"number\") {\n return Number.isFinite(value) ? value : value;\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : value;\n }\n return value;\n }\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"string\") {\n const normalized = value.trim().toLowerCase();\n if (normalized === \"true\" || normalized === \"1\") {\n return true;\n }\n if (normalized === \"false\" || normalized === \"0\") {\n return false;\n }\n }\n return value;\n}\n\n/**\n * Flatten a (possibly repeated and/or comma-joined) value into a list, applying\n * the declared coercion kind per element. Mirrors how core list flags such as\n * `--tags` split comma values and accumulate repeated occurrences, so an\n * extension flag declared `list: true` behaves identically. Empty segments are\n * dropped and surrounding whitespace is trimmed.\n */\nfunction splitCommaListValue(value: unknown, kind: LooseOptionCoercionKind | null): unknown[] {\n const entries = flattenFlagListValue(value);\n return kind ? entries.map((entry) => coerceLooseOptionValue(entry, kind)) : entries;\n}\n\n/**\n * Resolve the value applied when a flag is omitted entirely. List flags wrap the\n * default into an accumulated array; scalar flags coerce by declared kind.\n */\nfunction applyFlagDefault(\n defaultValue: unknown,\n kind: LooseOptionCoercionKind | null,\n isListFlag: boolean,\n): unknown {\n if (isListFlag) {\n return splitCommaListValue(defaultValue, kind);\n }\n return kind ? coerceLooseOptionValue(defaultValue, kind) : defaultValue;\n}\n\nexport function coerceLooseCommandOptionsWithFlagDefinitions(\n options: Record<string, unknown>,\n definitions: Array<Record<string, unknown>>,\n): Record<string, unknown> {\n if (definitions.length === 0) {\n return options;\n }\n const coerced = Object.create(null) as Record<string, unknown>;\n for (const [key, value] of Object.entries(options)) {\n coerced[key] = value;\n }\n for (const definition of definitions) {\n const canonical = resolveCanonicalLooseOptionKey(definition);\n if (!canonical) {\n continue;\n }\n for (const key of collectLooseOptionKeys(definition)) {\n if (key === canonical || !Object.hasOwn(coerced, key)) {\n continue;\n }\n if (Object.hasOwn(coerced, canonical)) {\n continue;\n }\n coerced[canonical] = coerced[key];\n delete coerced[key];\n }\n const kind = resolveLooseOptionCoercionKind(definition);\n const isListFlag = definition.list === true;\n if (!Object.hasOwn(coerced, canonical)) {\n // Flag was omitted entirely: apply the declared default when present.\n if (definition.default !== undefined) {\n coerced[canonical] = applyFlagDefault(definition.default, kind, isListFlag);\n }\n continue;\n }\n if (isListFlag) {\n coerced[canonical] = splitCommaListValue(coerced[canonical], kind);\n continue;\n }\n if (!kind) {\n continue;\n }\n coerced[canonical] = coerceLooseOptionValue(coerced[canonical], kind);\n }\n return coerced;\n}\n\nexport function parseLooseCommandOptions(args: string[]): Record<string, unknown> {\n const options = Object.create(null) as Record<string, unknown>;\n let index = 0;\n while (index < args.length) {\n const parsed = parseLooseOptionToken(args, index);\n if (!parsed) {\n index += 1;\n continue;\n }\n\n const normalizedKey = toLooseOptionKey(parsed.key);\n if (normalizedKey.length === 0 || isUnsafeLooseOptionKey(normalizedKey)) {\n index += parsed.consumed;\n continue;\n }\n setLooseOptionValue(options, normalizedKey, parsed.value);\n index += parsed.consumed;\n }\n return options;\n}\n\nexport function stripLooseCommandOptionTokens(\n args: string[],\n definitions: Array<Record<string, unknown>>,\n): string[] {\n if (definitions.length === 0) {\n return [...args];\n }\n const knownKeys = new Set<string>();\n const booleanKeys = new Set<string>();\n for (const definition of definitions) {\n const valueKind = resolveLooseOptionCoercionKind(definition);\n for (const key of collectLooseOptionKeys(definition)) {\n knownKeys.add(key);\n if (valueKind === \"boolean\") {\n booleanKeys.add(key);\n }\n }\n }\n if (knownKeys.size === 0) {\n return [...args];\n }\n\n const stripped: string[] = [];\n let index = 0;\n while (index < args.length) {\n if (args[index] === \"--\") {\n stripped.push(...args.slice(index + 1));\n break;\n }\n const parsed = parseLooseOptionToken(args, index);\n if (parsed) {\n const normalizedKey = toLooseOptionKey(parsed.key);\n if (knownKeys.has(normalizedKey)) {\n const token = args[index] ?? \"\";\n const consumed = booleanKeys.has(normalizedKey) && !token.includes(\"=\") ? 1 : parsed.consumed;\n index += consumed;\n continue;\n }\n }\n stripped.push(args[index]);\n index += 1;\n }\n return stripped;\n}\n"],"names":[],"mappings":"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","debugId":"b2a33807-c231-539d-ba55-045ba504f088"}