@unbrained/pm-cli 2026.7.1 → 2026.7.3

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 (625) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/CHANGELOG.md +25 -0
  3. package/CONTRIBUTING.md +2 -2
  4. package/README.md +1 -1
  5. package/dist/cli/commander-usage.d.ts +2 -0
  6. package/dist/cli/commander-usage.js +110 -86
  7. package/dist/cli/commander-usage.js.map +1 -1
  8. package/dist/cli/commands/activity.js +79 -57
  9. package/dist/cli/commands/activity.js.map +1 -1
  10. package/dist/cli/commands/aggregate.js +102 -79
  11. package/dist/cli/commands/aggregate.js.map +1 -1
  12. package/dist/cli/commands/calendar.js +278 -243
  13. package/dist/cli/commands/calendar.js.map +1 -1
  14. package/dist/cli/commands/close-many.js +176 -114
  15. package/dist/cli/commands/close-many.js.map +1 -1
  16. package/dist/cli/commands/close.js +157 -129
  17. package/dist/cli/commands/close.js.map +1 -1
  18. package/dist/cli/commands/comments-audit.js +50 -42
  19. package/dist/cli/commands/comments-audit.js.map +1 -1
  20. package/dist/cli/commands/config.d.ts +2 -0
  21. package/dist/cli/commands/config.js +443 -879
  22. package/dist/cli/commands/config.js.map +1 -1
  23. package/dist/cli/commands/context.js +365 -287
  24. package/dist/cli/commands/context.js.map +1 -1
  25. package/dist/cli/commands/contracts.js +352 -238
  26. package/dist/cli/commands/contracts.js.map +1 -1
  27. package/dist/cli/commands/create.js +32 -17
  28. package/dist/cli/commands/create.js.map +1 -1
  29. package/dist/cli/commands/dedupe-audit.js +46 -39
  30. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  31. package/dist/cli/commands/dedupe-merge.js +88 -69
  32. package/dist/cli/commands/dedupe-merge.js.map +1 -1
  33. package/dist/cli/commands/extension/doctor.js +56 -67
  34. package/dist/cli/commands/extension/doctor.js.map +1 -1
  35. package/dist/cli/commands/extension/shared.js +21 -15
  36. package/dist/cli/commands/extension/shared.js.map +1 -1
  37. package/dist/cli/commands/get.js +114 -81
  38. package/dist/cli/commands/get.js.map +1 -1
  39. package/dist/cli/commands/health.d.ts +17 -0
  40. package/dist/cli/commands/health.js +545 -417
  41. package/dist/cli/commands/health.js.map +1 -1
  42. package/dist/cli/commands/history-compact.js +209 -140
  43. package/dist/cli/commands/history-compact.js.map +1 -1
  44. package/dist/cli/commands/history-redact.js +162 -119
  45. package/dist/cli/commands/history-redact.js.map +1 -1
  46. package/dist/cli/commands/history-repair.js +120 -85
  47. package/dist/cli/commands/history-repair.js.map +1 -1
  48. package/dist/cli/commands/init-agent-guidance.js +32 -19
  49. package/dist/cli/commands/init-agent-guidance.js.map +1 -1
  50. package/dist/cli/commands/init.d.ts +8 -2
  51. package/dist/cli/commands/init.js +263 -162
  52. package/dist/cli/commands/init.js.map +1 -1
  53. package/dist/cli/commands/list.js +152 -102
  54. package/dist/cli/commands/list.js.map +1 -1
  55. package/dist/cli/commands/next.js +60 -40
  56. package/dist/cli/commands/next.js.map +1 -1
  57. package/dist/cli/commands/plan.js +373 -298
  58. package/dist/cli/commands/plan.js.map +1 -1
  59. package/dist/cli/commands/profile.js +23 -15
  60. package/dist/cli/commands/profile.js.map +1 -1
  61. package/dist/cli/commands/recurrence-parsers.js +43 -25
  62. package/dist/cli/commands/recurrence-parsers.js.map +1 -1
  63. package/dist/cli/commands/reindex.d.ts +21 -5
  64. package/dist/cli/commands/reindex.js +345 -205
  65. package/dist/cli/commands/reindex.js.map +1 -1
  66. package/dist/cli/commands/restore.d.ts +8 -7
  67. package/dist/cli/commands/restore.js +105 -69
  68. package/dist/cli/commands/restore.js.map +1 -1
  69. package/dist/cli/commands/schema.js +33 -30
  70. package/dist/cli/commands/schema.js.map +1 -1
  71. package/dist/cli/commands/search.d.ts +10 -2
  72. package/dist/cli/commands/search.js +503 -470
  73. package/dist/cli/commands/search.js.map +1 -1
  74. package/dist/cli/commands/telemetry.js +98 -87
  75. package/dist/cli/commands/telemetry.js.map +1 -1
  76. package/dist/cli/commands/test-all.js +237 -168
  77. package/dist/cli/commands/test-all.js.map +1 -1
  78. package/dist/cli/commands/test.d.ts +6 -5
  79. package/dist/cli/commands/test.js +424 -344
  80. package/dist/cli/commands/test.js.map +1 -1
  81. package/dist/cli/commands/update-many.js +57 -42
  82. package/dist/cli/commands/update-many.js.map +1 -1
  83. package/dist/cli/commands/update.d.ts +1 -1
  84. package/dist/cli/commands/update.js +738 -671
  85. package/dist/cli/commands/update.js.map +1 -1
  86. package/dist/cli/commands/validate.d.ts +20 -1
  87. package/dist/cli/commands/validate.js +478 -343
  88. package/dist/cli/commands/validate.js.map +1 -1
  89. package/dist/cli/error-guidance.js +406 -361
  90. package/dist/cli/error-guidance.js.map +1 -1
  91. package/dist/cli/extension-command-help.js +27 -19
  92. package/dist/cli/extension-command-help.js.map +1 -1
  93. package/dist/cli/help-json-payload.js +57 -49
  94. package/dist/cli/help-json-payload.js.map +1 -1
  95. package/dist/cli/main.d.ts +47 -0
  96. package/dist/cli/main.js +474 -371
  97. package/dist/cli/main.js.map +1 -1
  98. package/dist/cli/migration-gates.js +22 -45
  99. package/dist/cli/migration-gates.js.map +1 -1
  100. package/dist/cli/register-list-query.js +299 -310
  101. package/dist/cli/register-list-query.js.map +1 -1
  102. package/dist/cli/register-mutation.js +763 -779
  103. package/dist/cli/register-mutation.js.map +1 -1
  104. package/dist/cli/register-operations.js +386 -362
  105. package/dist/cli/register-operations.js.map +1 -1
  106. package/dist/cli/register-setup.js +120 -101
  107. package/dist/cli/register-setup.js.map +1 -1
  108. package/dist/cli/registration-helpers.d.ts +4 -0
  109. package/dist/cli/registration-helpers.js +45 -56
  110. package/dist/cli/registration-helpers.js.map +1 -1
  111. package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js → activity-5YWLSPGE.js} +9 -9
  112. package/dist/cli-bundle/chunks/activity-BIML7K2D.js +16 -0
  113. package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js → aggregate-2V2M3JZU.js} +107 -83
  114. package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js.map → aggregate-2V2M3JZU.js.map} +2 -2
  115. package/dist/cli-bundle/chunks/{aggregate-JTEF4BP7.js → aggregate-EK7DXML7.js} +108 -84
  116. package/dist/cli-bundle/chunks/aggregate-EK7DXML7.js.map +1 -0
  117. package/dist/cli-bundle/chunks/{append-LOVPGVPT.js → append-EZESUVJT.js} +8 -8
  118. package/dist/cli-bundle/chunks/{append-QCFJSDFL.js → append-JFG4WQMG.js} +8 -8
  119. package/dist/cli-bundle/chunks/{chunk-TP5Q5ZD3.js → chunk-32IUNTG4.js} +158 -119
  120. package/dist/cli-bundle/chunks/chunk-32IUNTG4.js.map +1 -0
  121. package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js → chunk-3W2HJKJX.js} +3 -3
  122. package/dist/cli-bundle/chunks/{chunk-VARHOHYV.js → chunk-4EXFFP7T.js} +86 -52
  123. package/dist/cli-bundle/chunks/chunk-4EXFFP7T.js.map +7 -0
  124. package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js → chunk-4PFVUUYV.js} +2 -2
  125. package/dist/cli-bundle/chunks/{chunk-JSU5P7VS.js → chunk-4WB6S4YX.js} +308 -184
  126. package/dist/cli-bundle/chunks/chunk-4WB6S4YX.js.map +1 -0
  127. package/dist/cli-bundle/chunks/{chunk-HXTQJXWT.js → chunk-572FKBRL.js} +61 -102
  128. package/dist/cli-bundle/chunks/chunk-572FKBRL.js.map +1 -0
  129. package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js → chunk-5E7N4T2Z.js} +2 -2
  130. package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js → chunk-5IZUBZBR.js} +3 -3
  131. package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js → chunk-5JIWFWOZ.js} +2 -2
  132. package/dist/cli-bundle/chunks/{chunk-FFMQB7WR.js → chunk-67LARBDL.js} +493 -404
  133. package/dist/cli-bundle/chunks/chunk-67LARBDL.js.map +1 -0
  134. package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js → chunk-6CDCWKSX.js} +4 -4
  135. package/dist/cli-bundle/chunks/{chunk-3K2M5OYU.js → chunk-6KRFL33E.js} +308 -184
  136. package/dist/cli-bundle/chunks/chunk-6KRFL33E.js.map +7 -0
  137. package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js → chunk-6NYJGMTY.js} +2 -2
  138. package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js → chunk-7CLLC75T.js} +4 -4
  139. package/dist/cli-bundle/chunks/{chunk-2466X6E4.js → chunk-7LYO6S5A.js} +8 -8
  140. package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js → chunk-A3OQ7TFW.js} +8 -8
  141. package/dist/cli-bundle/chunks/{chunk-5CGRF3L5.js → chunk-AIKU3IIL.js} +153 -90
  142. package/dist/cli-bundle/chunks/chunk-AIKU3IIL.js.map +1 -0
  143. package/dist/cli-bundle/chunks/{chunk-WYDHYJPO.js → chunk-AJHYQCBJ.js} +39 -5
  144. package/dist/cli-bundle/chunks/chunk-AJHYQCBJ.js.map +7 -0
  145. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js → chunk-B4O5S7I3.js} +79 -57
  146. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js.map → chunk-B4O5S7I3.js.map} +2 -2
  147. package/dist/cli-bundle/chunks/{chunk-OTUHB4HS.js → chunk-BE2SR6QL.js} +92 -77
  148. package/dist/cli-bundle/chunks/chunk-BE2SR6QL.js.map +1 -0
  149. package/dist/cli-bundle/chunks/{chunk-JLM7BHI7.js → chunk-BI4R7HI2.js} +75 -53
  150. package/dist/cli-bundle/chunks/chunk-BI4R7HI2.js.map +7 -0
  151. package/dist/cli-bundle/chunks/{chunk-AXIDKKAT.js → chunk-CXR3CMBQ.js} +33 -6
  152. package/dist/cli-bundle/chunks/chunk-CXR3CMBQ.js.map +1 -0
  153. package/dist/cli-bundle/chunks/{chunk-ZETXE4SE.js → chunk-ECU6MMTQ.js} +713 -613
  154. package/dist/cli-bundle/chunks/chunk-ECU6MMTQ.js.map +1 -0
  155. package/dist/cli-bundle/chunks/{chunk-2D4HATP2.js → chunk-EJ2OCBHF.js} +54 -30
  156. package/dist/cli-bundle/chunks/chunk-EJ2OCBHF.js.map +1 -0
  157. package/dist/cli-bundle/chunks/{chunk-BDTISOSD.js → chunk-EQURFOMH.js} +41 -26
  158. package/dist/cli-bundle/chunks/chunk-EQURFOMH.js.map +7 -0
  159. package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js → chunk-ER4ME5U2.js} +3 -3
  160. package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js → chunk-ERG65A2L.js} +2 -2
  161. package/dist/cli-bundle/chunks/{chunk-IZBR4NRW.js → chunk-F6WNBITZ.js} +157 -113
  162. package/dist/cli-bundle/chunks/chunk-F6WNBITZ.js.map +7 -0
  163. package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js → chunk-FH2H3CBD.js} +3 -3
  164. package/dist/cli-bundle/chunks/{chunk-JPECA746.js → chunk-FUFFPIYA.js} +2 -2
  165. package/dist/cli-bundle/chunks/{chunk-CF7RL6FR.js → chunk-FZJM2TXF.js} +110 -73
  166. package/dist/cli-bundle/chunks/chunk-FZJM2TXF.js.map +1 -0
  167. package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js → chunk-GUYNUXQT.js} +3 -3
  168. package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js → chunk-GVJE5T7Q.js} +2 -2
  169. package/dist/cli-bundle/chunks/{chunk-3J6JRJ3I.js → chunk-HB4FAT3O.js} +42 -60
  170. package/dist/cli-bundle/chunks/chunk-HB4FAT3O.js.map +7 -0
  171. package/dist/cli-bundle/chunks/{chunk-55SNVXRQ.js → chunk-HQAF23Q2.js} +626 -484
  172. package/dist/cli-bundle/chunks/chunk-HQAF23Q2.js.map +7 -0
  173. package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js → chunk-JBZ2NTKX.js} +2 -2
  174. package/dist/cli-bundle/chunks/{chunk-RMMQ74TG.js → chunk-JPATY4SE.js} +54 -30
  175. package/dist/cli-bundle/chunks/chunk-JPATY4SE.js.map +7 -0
  176. package/dist/cli-bundle/chunks/{chunk-IPYBJWTE.js → chunk-K5DT2YKM.js} +109 -72
  177. package/dist/cli-bundle/chunks/chunk-K5DT2YKM.js.map +7 -0
  178. package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js → chunk-KEZOIPCR.js} +3 -3
  179. package/dist/cli-bundle/chunks/{chunk-RVUALSJF.js → chunk-KHVGM5CS.js} +466 -365
  180. package/dist/cli-bundle/chunks/chunk-KHVGM5CS.js.map +7 -0
  181. package/dist/cli-bundle/chunks/{chunk-YITK2PJ6.js → chunk-KS6ATO47.js} +288 -175
  182. package/dist/cli-bundle/chunks/chunk-KS6ATO47.js.map +7 -0
  183. package/dist/cli-bundle/chunks/{chunk-7R4QEMZZ.js → chunk-L4SLHV6G.js} +463 -362
  184. package/dist/cli-bundle/chunks/chunk-L4SLHV6G.js.map +1 -0
  185. package/dist/cli-bundle/chunks/{chunk-RLDHZHQS.js → chunk-LBE5QFMZ.js} +158 -114
  186. package/dist/cli-bundle/chunks/chunk-LBE5QFMZ.js.map +1 -0
  187. package/dist/cli-bundle/chunks/{chunk-22WKIL3H.js → chunk-LCWQP6NM.js} +76 -54
  188. package/dist/cli-bundle/chunks/chunk-LCWQP6NM.js.map +1 -0
  189. package/dist/cli-bundle/chunks/{chunk-KNPEF7QG.js → chunk-LOWVNZBZ.js} +91 -76
  190. package/dist/cli-bundle/chunks/chunk-LOWVNZBZ.js.map +7 -0
  191. package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js → chunk-MDHWWBNZ.js} +3 -3
  192. package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js → chunk-MEZZZBYX.js} +2 -2
  193. package/dist/cli-bundle/chunks/{chunk-V3NOKJF2.js → chunk-MHRS5FUX.js} +288 -175
  194. package/dist/cli-bundle/chunks/chunk-MHRS5FUX.js.map +1 -0
  195. package/dist/cli-bundle/chunks/{chunk-3XZCOZ5J.js → chunk-NOIEVOK5.js} +391 -313
  196. package/dist/cli-bundle/chunks/chunk-NOIEVOK5.js.map +1 -0
  197. package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js → chunk-NZ7QIUP5.js} +4 -4
  198. package/dist/cli-bundle/chunks/{chunk-UYUYDGIB.js → chunk-OGLGI22K.js} +115 -67
  199. package/dist/cli-bundle/chunks/{chunk-UYUYDGIB.js.map → chunk-OGLGI22K.js.map} +1 -1
  200. package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js → chunk-P5L7Z2O6.js} +2 -2
  201. package/dist/cli-bundle/chunks/{chunk-BZCEN4JA.js → chunk-PULUSQAV.js} +492 -403
  202. package/dist/cli-bundle/chunks/chunk-PULUSQAV.js.map +7 -0
  203. package/dist/cli-bundle/chunks/{chunk-3VGN2UWE.js → chunk-QCDTQCMW.js} +22 -30
  204. package/dist/cli-bundle/chunks/chunk-QCDTQCMW.js.map +1 -0
  205. package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js → chunk-QNNQAAZ5.js} +24 -18
  206. package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js.map → chunk-QNNQAAZ5.js.map} +1 -1
  207. package/dist/cli-bundle/chunks/{chunk-MDPEOIGN.js → chunk-RAHINBVP.js} +60 -101
  208. package/dist/cli-bundle/chunks/chunk-RAHINBVP.js.map +7 -0
  209. package/dist/cli-bundle/chunks/{chunk-CWFNTKQJ.js → chunk-RJH5VQHW.js} +43 -61
  210. package/dist/cli-bundle/chunks/chunk-RJH5VQHW.js.map +1 -0
  211. package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js → chunk-SU2E4AWU.js} +6 -6
  212. package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js → chunk-SU3TB4NS.js} +2 -2
  213. package/dist/cli-bundle/chunks/{chunk-JWXRETDF.js → chunk-SYE6WMV6.js} +626 -484
  214. package/dist/cli-bundle/chunks/chunk-SYE6WMV6.js.map +1 -0
  215. package/dist/cli-bundle/chunks/{chunk-NWMZWYYB.js → chunk-T3P7PMZP.js} +42 -27
  216. package/dist/cli-bundle/chunks/chunk-T3P7PMZP.js.map +1 -0
  217. package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js → chunk-T4XBKJ3F.js} +4 -4
  218. package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js → chunk-T6AXEBOP.js} +23 -17
  219. package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js.map → chunk-T6AXEBOP.js.map} +2 -2
  220. package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js → chunk-TQ6AX5SQ.js} +58 -69
  221. package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js.map → chunk-TQ6AX5SQ.js.map} +2 -2
  222. package/dist/cli-bundle/chunks/{chunk-4XOIEKSD.js → chunk-U3S2B7TA.js} +86 -52
  223. package/dist/cli-bundle/chunks/chunk-U3S2B7TA.js.map +1 -0
  224. package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js → chunk-U5TR4N7J.js} +7 -7
  225. package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js → chunk-UMNQZS4H.js} +3 -3
  226. package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js → chunk-WJA3PXW7.js} +7 -7
  227. package/dist/cli-bundle/chunks/{chunk-RGEMWD6Q.js → chunk-WRYERRZX.js} +157 -118
  228. package/dist/cli-bundle/chunks/chunk-WRYERRZX.js.map +7 -0
  229. package/dist/cli-bundle/chunks/{chunk-NUHHPVVS.js → chunk-WYOIIFSE.js} +712 -612
  230. package/dist/cli-bundle/chunks/chunk-WYOIIFSE.js.map +7 -0
  231. package/dist/cli-bundle/chunks/{chunk-4DSGXSBL.js → chunk-XRYSCRZR.js} +116 -68
  232. package/dist/cli-bundle/chunks/{chunk-4DSGXSBL.js.map → chunk-XRYSCRZR.js.map} +3 -3
  233. package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js → chunk-YF746GTH.js} +59 -70
  234. package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js.map → chunk-YF746GTH.js.map} +1 -1
  235. package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js → chunk-YPWUSH72.js} +390 -312
  236. package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js.map → chunk-YPWUSH72.js.map} +2 -2
  237. package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js → chunk-YSDFIY7N.js} +3 -3
  238. package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js → chunk-YSGTMDWC.js} +2 -2
  239. package/dist/cli-bundle/chunks/{chunk-NFDPYAIP.js → chunk-YVKZ3ANP.js} +21 -29
  240. package/dist/cli-bundle/chunks/chunk-YVKZ3ANP.js.map +7 -0
  241. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js → chunk-Z4DGFQDH.js} +80 -58
  242. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js.map → chunk-Z4DGFQDH.js.map} +1 -1
  243. package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js → chunk-Z5F6XZXE.js} +6 -6
  244. package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js → chunk-Z7RPDF2Y.js} +3 -3
  245. package/dist/cli-bundle/chunks/{chunk-3S2KT7NG.js → chunk-ZFTKYWIF.js} +152 -89
  246. package/dist/cli-bundle/chunks/chunk-ZFTKYWIF.js.map +7 -0
  247. package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js → claim-2BGBGSVI.js} +8 -8
  248. package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js → claim-5GU7OE67.js} +8 -8
  249. package/dist/cli-bundle/chunks/close-6YODBUIV.js +14 -0
  250. package/dist/cli-bundle/chunks/{close-TQYAAFJP.js → close-AFVKPR57.js} +7 -7
  251. package/dist/cli-bundle/chunks/{close-many-BG5QQIDQ.js → close-many-7KLOSYLP.js} +186 -122
  252. package/dist/cli-bundle/chunks/close-many-7KLOSYLP.js.map +7 -0
  253. package/dist/cli-bundle/chunks/{close-many-LDRVEQY2.js → close-many-JKUJMHLG.js} +187 -123
  254. package/dist/cli-bundle/chunks/close-many-JKUJMHLG.js.map +1 -0
  255. package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js → comments-DNWHEBOS.js} +9 -9
  256. package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js → comments-RW23R3VE.js} +9 -9
  257. package/dist/cli-bundle/chunks/config-AUM5WBYA.js +1072 -0
  258. package/dist/cli-bundle/chunks/config-AUM5WBYA.js.map +7 -0
  259. package/dist/cli-bundle/chunks/config-OZWSA2NP.js +1062 -0
  260. package/dist/cli-bundle/chunks/config-OZWSA2NP.js.map +1 -0
  261. package/dist/cli-bundle/chunks/{context-B6275WPX.js → context-OYXRGY7S.js} +12 -12
  262. package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js → context-PKCEHQY3.js} +12 -12
  263. package/dist/cli-bundle/chunks/{contracts-HN7ABKLP.js → contracts-L6ODXNUM.js} +320 -199
  264. package/dist/cli-bundle/chunks/contracts-L6ODXNUM.js.map +7 -0
  265. package/dist/cli-bundle/chunks/{contracts-W4FZVVD6.js → contracts-X74F2GSM.js} +321 -200
  266. package/dist/cli-bundle/chunks/contracts-X74F2GSM.js.map +1 -0
  267. package/dist/cli-bundle/chunks/{copy-DEM4DATS.js → copy-6XOR3HKN.js} +5 -5
  268. package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js → copy-I4NCLBR4.js} +5 -5
  269. package/dist/cli-bundle/chunks/{create-RLRJMRTM.js → create-PM45M6PE.js} +12 -12
  270. package/dist/cli-bundle/chunks/create-Z7YCH3BE.js +28 -0
  271. package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js → delete-7YXHYG67.js} +5 -5
  272. package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js → delete-LPISP43T.js} +5 -5
  273. package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js → deps-N2T26FME.js} +5 -5
  274. package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js → deps-WATKQDE3.js} +5 -5
  275. package/dist/cli-bundle/chunks/{docs-GYZNVS26.js → docs-6LQ3GLM7.js} +7 -7
  276. package/dist/cli-bundle/chunks/{docs-26S44RXU.js → docs-Z3X6JZLT.js} +7 -7
  277. package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js → eval-6DCLG52D.js} +10 -10
  278. package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js → eval-Y3ZCUTHK.js} +10 -10
  279. package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js → extension-BNINIMT7.js} +11 -11
  280. package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js → extension-QWE4YYK5.js} +11 -11
  281. package/dist/cli-bundle/chunks/{files-NQHEXUZD.js → files-6SGKHS6O.js} +7 -7
  282. package/dist/cli-bundle/chunks/{files-MBNICQFM.js → files-FUYPSOFJ.js} +7 -7
  283. package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js → focus-2Q3K76G2.js} +6 -6
  284. package/dist/cli-bundle/chunks/{focus-XZW5423D.js → focus-ATLBWXXD.js} +6 -6
  285. package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js → gc-RUYEMNRF.js} +3 -3
  286. package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js → gc-TDWSDR66.js} +3 -3
  287. package/dist/cli-bundle/chunks/{get-A7MAOHCU.js → get-2WGLX74N.js} +120 -80
  288. package/dist/cli-bundle/chunks/get-2WGLX74N.js.map +7 -0
  289. package/dist/cli-bundle/chunks/{get-DSDEKJ3L.js → get-LY6M2JIM.js} +121 -81
  290. package/dist/cli-bundle/chunks/get-LY6M2JIM.js.map +1 -0
  291. package/dist/cli-bundle/chunks/{health-3IPFLKXB.js → health-4RKHYS3T.js} +535 -371
  292. package/dist/cli-bundle/chunks/health-4RKHYS3T.js.map +1 -0
  293. package/dist/cli-bundle/chunks/{health-GZXGBZ36.js → health-TMFVNYRA.js} +534 -370
  294. package/dist/cli-bundle/chunks/health-TMFVNYRA.js.map +7 -0
  295. package/dist/cli-bundle/chunks/history-CGNQJXFE.js +18 -0
  296. package/dist/cli-bundle/chunks/{history-NERDJNUB.js → history-SGRRS72R.js} +8 -8
  297. package/dist/cli-bundle/chunks/{history-compact-2WRZ2WK4.js → history-compact-LOED43R3.js} +213 -134
  298. package/dist/cli-bundle/chunks/history-compact-LOED43R3.js.map +7 -0
  299. package/dist/cli-bundle/chunks/{history-compact-HR7BB4LR.js → history-compact-V5DNAQHH.js} +214 -135
  300. package/dist/cli-bundle/chunks/history-compact-V5DNAQHH.js.map +1 -0
  301. package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js → history-redact-IRL7WJ3E.js} +9 -9
  302. package/dist/cli-bundle/chunks/history-redact-N3JK7VBW.js +19 -0
  303. package/dist/cli-bundle/chunks/{history-repair-XA3LC4GA.js → history-repair-4WVBVHFR.js} +124 -84
  304. package/dist/cli-bundle/chunks/history-repair-4WVBVHFR.js.map +1 -0
  305. package/dist/cli-bundle/chunks/{history-repair-LCMOS45X.js → history-repair-PGYQJMGD.js} +123 -83
  306. package/dist/cli-bundle/chunks/history-repair-PGYQJMGD.js.map +7 -0
  307. package/dist/cli-bundle/chunks/{init-64XDLQJB.js → init-4GESW7RM.js} +12 -12
  308. package/dist/cli-bundle/chunks/init-XIDPABA4.js +22 -0
  309. package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js → learnings-4BHWFFUV.js} +9 -9
  310. package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js → learnings-4FJY7WIW.js} +9 -9
  311. package/dist/cli-bundle/chunks/{list-G5Y65VF6.js → list-472TIOVK.js} +8 -8
  312. package/dist/cli-bundle/chunks/{list-DNBJVO3E.js → list-D7BF5CL2.js} +8 -8
  313. package/dist/cli-bundle/chunks/{next-FYTQF6HG.js → next-D5STGWI2.js} +71 -46
  314. package/dist/cli-bundle/chunks/next-D5STGWI2.js.map +1 -0
  315. package/dist/cli-bundle/chunks/{next-BCERKDUR.js → next-SFQZVX2B.js} +70 -45
  316. package/dist/cli-bundle/chunks/next-SFQZVX2B.js.map +7 -0
  317. package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js → notes-6KNOSLIT.js} +9 -9
  318. package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js → notes-W4UEICGF.js} +9 -9
  319. package/dist/cli-bundle/chunks/{plan-RKZHQVXR.js → plan-JO6V7BXO.js} +373 -279
  320. package/dist/cli-bundle/chunks/plan-JO6V7BXO.js.map +1 -0
  321. package/dist/cli-bundle/chunks/{plan-4WXEQCTN.js → plan-MJQW5XK3.js} +372 -278
  322. package/dist/cli-bundle/chunks/plan-MJQW5XK3.js.map +7 -0
  323. package/dist/cli-bundle/chunks/{profile-4OMM32CD.js → profile-3TOTMUR4.js} +27 -19
  324. package/dist/cli-bundle/chunks/profile-3TOTMUR4.js.map +7 -0
  325. package/dist/cli-bundle/chunks/{profile-QLER5ENE.js → profile-WIQY2KCV.js} +28 -20
  326. package/dist/cli-bundle/chunks/profile-WIQY2KCV.js.map +1 -0
  327. package/dist/cli-bundle/chunks/register-list-query-ELBHCCFI.js +416 -0
  328. package/dist/cli-bundle/chunks/register-list-query-ELBHCCFI.js.map +7 -0
  329. package/dist/cli-bundle/chunks/register-list-query-GAPQ6DM3.js +406 -0
  330. package/dist/cli-bundle/chunks/register-list-query-GAPQ6DM3.js.map +1 -0
  331. package/dist/cli-bundle/chunks/{register-mutation-KK7PHYYU.js → register-mutation-ROFE2YPC.js} +729 -702
  332. package/dist/cli-bundle/chunks/register-mutation-ROFE2YPC.js.map +7 -0
  333. package/dist/cli-bundle/chunks/{register-mutation-ENNDUAZG.js → register-mutation-SJWMVIJ2.js} +730 -703
  334. package/dist/cli-bundle/chunks/register-mutation-SJWMVIJ2.js.map +1 -0
  335. package/dist/cli-bundle/chunks/{register-operations-HZ6XERQG.js → register-operations-IADFVH53.js} +389 -365
  336. package/dist/cli-bundle/chunks/register-operations-IADFVH53.js.map +7 -0
  337. package/dist/cli-bundle/chunks/register-operations-MEKU3AKC.js +510 -0
  338. package/dist/cli-bundle/chunks/register-operations-MEKU3AKC.js.map +1 -0
  339. package/dist/cli-bundle/chunks/{register-setup-ZKJ53RS7.js → register-setup-3QJY43CY.js} +128 -103
  340. package/dist/cli-bundle/chunks/register-setup-3QJY43CY.js.map +7 -0
  341. package/dist/cli-bundle/chunks/{register-setup-P67EMBDJ.js → register-setup-AJWUSSQX.js} +129 -104
  342. package/dist/cli-bundle/chunks/register-setup-AJWUSSQX.js.map +1 -0
  343. package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js → restore-44IHMMZZ.js} +9 -9
  344. package/dist/cli-bundle/chunks/restore-EXHU34EU.js +17 -0
  345. package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js → scheduling-shortcuts-OLHNLAZY.js} +12 -12
  346. package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js → scheduling-shortcuts-TSBK4AY5.js} +12 -12
  347. package/dist/cli-bundle/chunks/{schema-73HR2OJW.js → schema-IB2NZZWD.js} +7 -7
  348. package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js → schema-VBCELP5G.js} +7 -7
  349. package/dist/cli-bundle/chunks/{search-AXPXKZER.js → search-7UBETML4.js} +10 -10
  350. package/dist/cli-bundle/chunks/{search-KILGT37L.js → search-R227JOL6.js} +10 -10
  351. package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js → stats-FAG7COEH.js} +6 -6
  352. package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js → stats-MCK7PLYS.js} +6 -6
  353. package/dist/cli-bundle/chunks/{telemetry-GAHHQTOS.js → telemetry-DRPDZMAO.js} +84 -70
  354. package/dist/cli-bundle/chunks/telemetry-DRPDZMAO.js.map +7 -0
  355. package/dist/cli-bundle/chunks/{telemetry-BZUF6H7G.js → telemetry-GVVUQSJQ.js} +85 -71
  356. package/dist/cli-bundle/chunks/telemetry-GVVUQSJQ.js.map +1 -0
  357. package/dist/cli-bundle/chunks/{test-PWDIZ255.js → test-QY44WAMR.js} +15 -15
  358. package/dist/cli-bundle/chunks/{test-ACD52Z3S.js → test-SY76DZTO.js} +15 -15
  359. package/dist/cli-bundle/chunks/test-all-QD6QAEG7.js +430 -0
  360. package/dist/cli-bundle/chunks/test-all-QD6QAEG7.js.map +7 -0
  361. package/dist/cli-bundle/chunks/test-all-USPJHXFR.js +427 -0
  362. package/dist/cli-bundle/chunks/test-all-USPJHXFR.js.map +1 -0
  363. package/dist/cli-bundle/chunks/{test-runs-UXIXPDKU.js → test-runs-MG5VIGSK.js} +185 -147
  364. package/dist/cli-bundle/chunks/test-runs-MG5VIGSK.js.map +1 -0
  365. package/dist/cli-bundle/chunks/{test-runs-PLRAZEFW.js → test-runs-QIR5MJPL.js} +184 -146
  366. package/dist/cli-bundle/chunks/test-runs-QIR5MJPL.js.map +7 -0
  367. package/dist/cli-bundle/chunks/update-A7EICML6.js +24 -0
  368. package/dist/cli-bundle/chunks/{update-KFX2SIAC.js → update-IKJZWLQC.js} +15 -15
  369. package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js → update-many-BEMTDA2X.js} +84 -69
  370. package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js.map → update-many-BEMTDA2X.js.map} +1 -1
  371. package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js → update-many-RATAARHU.js} +83 -68
  372. package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js.map → update-many-RATAARHU.js.map} +2 -2
  373. package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js → upgrade-NWMR3VQL.js} +11 -11
  374. package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js → upgrade-VU46BLJZ.js} +11 -11
  375. package/dist/cli-bundle/chunks/{validate-X5W76YJL.js → validate-GAJ6FUSI.js} +451 -321
  376. package/dist/cli-bundle/chunks/validate-GAJ6FUSI.js.map +1 -0
  377. package/dist/cli-bundle/chunks/{validate-MTUVL5VC.js → validate-NRY6MFXN.js} +450 -320
  378. package/dist/cli-bundle/chunks/validate-NRY6MFXN.js.map +7 -0
  379. package/dist/cli-bundle/main.js +1107 -916
  380. package/dist/cli-bundle/main.js.map +3 -3
  381. package/dist/core/config/nested-settings.js +89 -67
  382. package/dist/core/config/nested-settings.js.map +1 -1
  383. package/dist/core/governance/metadata-coverage.js +20 -28
  384. package/dist/core/governance/metadata-coverage.js.map +1 -1
  385. package/dist/core/history/drift-scan.js +93 -81
  386. package/dist/core/history/drift-scan.js.map +1 -1
  387. package/dist/core/item/item-type-definition.js +14 -14
  388. package/dist/core/item/item-type-definition.js.map +1 -1
  389. package/dist/core/item/type-registry.js +114 -99
  390. package/dist/core/item/type-registry.js.map +1 -1
  391. package/dist/core/output/mutation-projection.js +42 -26
  392. package/dist/core/output/mutation-projection.js.map +1 -1
  393. package/dist/core/schema/runtime-schema.js +97 -80
  394. package/dist/core/schema/runtime-schema.js.map +1 -1
  395. package/dist/core/schema/status-defs-file.js +26 -3
  396. package/dist/core/schema/status-defs-file.js.map +1 -1
  397. package/dist/core/search/corpus.js +25 -19
  398. package/dist/core/search/corpus.js.map +1 -1
  399. package/dist/core/search/semantic-defaults.js +64 -37
  400. package/dist/core/search/semantic-defaults.js.map +1 -1
  401. package/dist/core/search/vector-stores.js +32 -17
  402. package/dist/core/search/vector-stores.js.map +1 -1
  403. package/dist/core/sentry/helpers.js +31 -28
  404. package/dist/core/sentry/helpers.js.map +1 -1
  405. package/dist/core/sentry/instrument.js +54 -43
  406. package/dist/core/sentry/instrument.js.map +1 -1
  407. package/dist/core/shared/memo.d.ts +12 -0
  408. package/dist/core/shared/memo.js +25 -0
  409. package/dist/core/shared/memo.js.map +1 -0
  410. package/dist/core/shared/serialization.js +24 -14
  411. package/dist/core/shared/serialization.js.map +1 -1
  412. package/dist/core/shared/time.js +26 -4
  413. package/dist/core/shared/time.js.map +1 -1
  414. package/dist/core/store/front-matter-cache.d.ts +5 -0
  415. package/dist/core/store/front-matter-cache.js +316 -171
  416. package/dist/core/store/front-matter-cache.js.map +1 -1
  417. package/dist/core/store/item-store.js +33 -26
  418. package/dist/core/store/item-store.js.map +1 -1
  419. package/dist/core/store/settings.js +247 -203
  420. package/dist/core/store/settings.js.map +1 -1
  421. package/dist/core/test/background-runs.js +189 -160
  422. package/dist/core/test/background-runs.js.map +1 -1
  423. package/dist/sdk/cli-contracts/flag-contracts.js +71 -99
  424. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  425. package/dist/sdk/compose.js +51 -42
  426. package/dist/sdk/compose.js.map +1 -1
  427. package/docs/AGENT_GUIDE.md +2 -2
  428. package/docs/ARCHITECTURE.md +2 -2
  429. package/docs/COMMANDS.md +8 -4
  430. package/docs/CONFIGURATION.md +1 -1
  431. package/docs/EXTENSIONS.md +12 -12
  432. package/docs/ONBOARDING.md +4 -2
  433. package/docs/README.md +2 -0
  434. package/docs/examples/starter-extension/README.md +11 -10
  435. package/marketplace.json +3 -3
  436. package/package.json +2 -2
  437. package/packages/pm-beads/extensions/beads/runtime.ts +240 -167
  438. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +65 -58
  439. package/packages/pm-todos/extensions/todos/runtime.ts +65 -42
  440. package/plugins/pm-claude/.claude-plugin/plugin.json +2 -2
  441. package/plugins/pm-claude/README.md +6 -3
  442. package/plugins/pm-claude/commands/pm-init.md +1 -1
  443. package/dist/cli-bundle/chunks/activity-AW6XVFH6.js +0 -16
  444. package/dist/cli-bundle/chunks/aggregate-JTEF4BP7.js.map +0 -1
  445. package/dist/cli-bundle/chunks/chunk-22WKIL3H.js.map +0 -1
  446. package/dist/cli-bundle/chunks/chunk-2D4HATP2.js.map +0 -1
  447. package/dist/cli-bundle/chunks/chunk-3J6JRJ3I.js.map +0 -7
  448. package/dist/cli-bundle/chunks/chunk-3K2M5OYU.js.map +0 -7
  449. package/dist/cli-bundle/chunks/chunk-3S2KT7NG.js.map +0 -7
  450. package/dist/cli-bundle/chunks/chunk-3VGN2UWE.js.map +0 -1
  451. package/dist/cli-bundle/chunks/chunk-3XZCOZ5J.js.map +0 -1
  452. package/dist/cli-bundle/chunks/chunk-4XOIEKSD.js.map +0 -1
  453. package/dist/cli-bundle/chunks/chunk-55SNVXRQ.js.map +0 -7
  454. package/dist/cli-bundle/chunks/chunk-5CGRF3L5.js.map +0 -1
  455. package/dist/cli-bundle/chunks/chunk-7R4QEMZZ.js.map +0 -1
  456. package/dist/cli-bundle/chunks/chunk-AXIDKKAT.js.map +0 -1
  457. package/dist/cli-bundle/chunks/chunk-BDTISOSD.js.map +0 -7
  458. package/dist/cli-bundle/chunks/chunk-BZCEN4JA.js.map +0 -7
  459. package/dist/cli-bundle/chunks/chunk-CF7RL6FR.js.map +0 -1
  460. package/dist/cli-bundle/chunks/chunk-CWFNTKQJ.js.map +0 -1
  461. package/dist/cli-bundle/chunks/chunk-FFMQB7WR.js.map +0 -1
  462. package/dist/cli-bundle/chunks/chunk-HXTQJXWT.js.map +0 -1
  463. package/dist/cli-bundle/chunks/chunk-IPYBJWTE.js.map +0 -7
  464. package/dist/cli-bundle/chunks/chunk-IZBR4NRW.js.map +0 -7
  465. package/dist/cli-bundle/chunks/chunk-JLM7BHI7.js.map +0 -7
  466. package/dist/cli-bundle/chunks/chunk-JSU5P7VS.js.map +0 -1
  467. package/dist/cli-bundle/chunks/chunk-JWXRETDF.js.map +0 -1
  468. package/dist/cli-bundle/chunks/chunk-KNPEF7QG.js.map +0 -7
  469. package/dist/cli-bundle/chunks/chunk-MDPEOIGN.js.map +0 -7
  470. package/dist/cli-bundle/chunks/chunk-NFDPYAIP.js.map +0 -7
  471. package/dist/cli-bundle/chunks/chunk-NUHHPVVS.js.map +0 -7
  472. package/dist/cli-bundle/chunks/chunk-NWMZWYYB.js.map +0 -1
  473. package/dist/cli-bundle/chunks/chunk-OTUHB4HS.js.map +0 -1
  474. package/dist/cli-bundle/chunks/chunk-RGEMWD6Q.js.map +0 -7
  475. package/dist/cli-bundle/chunks/chunk-RLDHZHQS.js.map +0 -1
  476. package/dist/cli-bundle/chunks/chunk-RMMQ74TG.js.map +0 -7
  477. package/dist/cli-bundle/chunks/chunk-RVUALSJF.js.map +0 -7
  478. package/dist/cli-bundle/chunks/chunk-TP5Q5ZD3.js.map +0 -1
  479. package/dist/cli-bundle/chunks/chunk-V3NOKJF2.js.map +0 -1
  480. package/dist/cli-bundle/chunks/chunk-VARHOHYV.js.map +0 -7
  481. package/dist/cli-bundle/chunks/chunk-WYDHYJPO.js.map +0 -7
  482. package/dist/cli-bundle/chunks/chunk-YITK2PJ6.js.map +0 -7
  483. package/dist/cli-bundle/chunks/chunk-ZETXE4SE.js.map +0 -1
  484. package/dist/cli-bundle/chunks/close-E6ZZGCJY.js +0 -14
  485. package/dist/cli-bundle/chunks/close-many-BG5QQIDQ.js.map +0 -7
  486. package/dist/cli-bundle/chunks/close-many-LDRVEQY2.js.map +0 -1
  487. package/dist/cli-bundle/chunks/config-DMSU64QO.js +0 -1541
  488. package/dist/cli-bundle/chunks/config-DMSU64QO.js.map +0 -7
  489. package/dist/cli-bundle/chunks/config-QH2DICD6.js +0 -1531
  490. package/dist/cli-bundle/chunks/config-QH2DICD6.js.map +0 -1
  491. package/dist/cli-bundle/chunks/contracts-HN7ABKLP.js.map +0 -7
  492. package/dist/cli-bundle/chunks/contracts-W4FZVVD6.js.map +0 -1
  493. package/dist/cli-bundle/chunks/create-OH3BDGBB.js +0 -28
  494. package/dist/cli-bundle/chunks/get-A7MAOHCU.js.map +0 -7
  495. package/dist/cli-bundle/chunks/get-DSDEKJ3L.js.map +0 -1
  496. package/dist/cli-bundle/chunks/health-3IPFLKXB.js.map +0 -1
  497. package/dist/cli-bundle/chunks/health-GZXGBZ36.js.map +0 -7
  498. package/dist/cli-bundle/chunks/history-WSZHY3PN.js +0 -18
  499. package/dist/cli-bundle/chunks/history-compact-2WRZ2WK4.js.map +0 -7
  500. package/dist/cli-bundle/chunks/history-compact-HR7BB4LR.js.map +0 -1
  501. package/dist/cli-bundle/chunks/history-redact-MP6CH7U5.js +0 -19
  502. package/dist/cli-bundle/chunks/history-repair-LCMOS45X.js.map +0 -7
  503. package/dist/cli-bundle/chunks/history-repair-XA3LC4GA.js.map +0 -1
  504. package/dist/cli-bundle/chunks/init-PAX32BJA.js +0 -22
  505. package/dist/cli-bundle/chunks/next-BCERKDUR.js.map +0 -7
  506. package/dist/cli-bundle/chunks/next-FYTQF6HG.js.map +0 -1
  507. package/dist/cli-bundle/chunks/plan-4WXEQCTN.js.map +0 -7
  508. package/dist/cli-bundle/chunks/plan-RKZHQVXR.js.map +0 -1
  509. package/dist/cli-bundle/chunks/profile-4OMM32CD.js.map +0 -7
  510. package/dist/cli-bundle/chunks/profile-QLER5ENE.js.map +0 -1
  511. package/dist/cli-bundle/chunks/register-list-query-7LV46VAU.js +0 -400
  512. package/dist/cli-bundle/chunks/register-list-query-7LV46VAU.js.map +0 -1
  513. package/dist/cli-bundle/chunks/register-list-query-SNG5PGA4.js +0 -410
  514. package/dist/cli-bundle/chunks/register-list-query-SNG5PGA4.js.map +0 -7
  515. package/dist/cli-bundle/chunks/register-mutation-ENNDUAZG.js.map +0 -1
  516. package/dist/cli-bundle/chunks/register-mutation-KK7PHYYU.js.map +0 -7
  517. package/dist/cli-bundle/chunks/register-operations-C6OWLDSH.js +0 -486
  518. package/dist/cli-bundle/chunks/register-operations-C6OWLDSH.js.map +0 -1
  519. package/dist/cli-bundle/chunks/register-operations-HZ6XERQG.js.map +0 -7
  520. package/dist/cli-bundle/chunks/register-setup-P67EMBDJ.js.map +0 -1
  521. package/dist/cli-bundle/chunks/register-setup-ZKJ53RS7.js.map +0 -7
  522. package/dist/cli-bundle/chunks/restore-YALDGTQR.js +0 -17
  523. package/dist/cli-bundle/chunks/telemetry-BZUF6H7G.js.map +0 -1
  524. package/dist/cli-bundle/chunks/telemetry-GAHHQTOS.js.map +0 -7
  525. package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js +0 -358
  526. package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js.map +0 -1
  527. package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js +0 -361
  528. package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js.map +0 -7
  529. package/dist/cli-bundle/chunks/test-runs-PLRAZEFW.js.map +0 -7
  530. package/dist/cli-bundle/chunks/test-runs-UXIXPDKU.js.map +0 -1
  531. package/dist/cli-bundle/chunks/update-AMRSOIWP.js +0 -24
  532. package/dist/cli-bundle/chunks/validate-MTUVL5VC.js.map +0 -7
  533. package/dist/cli-bundle/chunks/validate-X5W76YJL.js.map +0 -1
  534. /package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js.map → activity-5YWLSPGE.js.map} +0 -0
  535. /package/dist/cli-bundle/chunks/{activity-AW6XVFH6.js.map → activity-BIML7K2D.js.map} +0 -0
  536. /package/dist/cli-bundle/chunks/{append-LOVPGVPT.js.map → append-EZESUVJT.js.map} +0 -0
  537. /package/dist/cli-bundle/chunks/{append-QCFJSDFL.js.map → append-JFG4WQMG.js.map} +0 -0
  538. /package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js.map → chunk-3W2HJKJX.js.map} +0 -0
  539. /package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js.map → chunk-4PFVUUYV.js.map} +0 -0
  540. /package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js.map → chunk-5E7N4T2Z.js.map} +0 -0
  541. /package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js.map → chunk-5IZUBZBR.js.map} +0 -0
  542. /package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js.map → chunk-5JIWFWOZ.js.map} +0 -0
  543. /package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js.map → chunk-6CDCWKSX.js.map} +0 -0
  544. /package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js.map → chunk-6NYJGMTY.js.map} +0 -0
  545. /package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js.map → chunk-7CLLC75T.js.map} +0 -0
  546. /package/dist/cli-bundle/chunks/{chunk-2466X6E4.js.map → chunk-7LYO6S5A.js.map} +0 -0
  547. /package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js.map → chunk-A3OQ7TFW.js.map} +0 -0
  548. /package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js.map → chunk-ER4ME5U2.js.map} +0 -0
  549. /package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js.map → chunk-ERG65A2L.js.map} +0 -0
  550. /package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js.map → chunk-FH2H3CBD.js.map} +0 -0
  551. /package/dist/cli-bundle/chunks/{chunk-JPECA746.js.map → chunk-FUFFPIYA.js.map} +0 -0
  552. /package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js.map → chunk-GUYNUXQT.js.map} +0 -0
  553. /package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js.map → chunk-GVJE5T7Q.js.map} +0 -0
  554. /package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js.map → chunk-JBZ2NTKX.js.map} +0 -0
  555. /package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js.map → chunk-KEZOIPCR.js.map} +0 -0
  556. /package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js.map → chunk-MDHWWBNZ.js.map} +0 -0
  557. /package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js.map → chunk-MEZZZBYX.js.map} +0 -0
  558. /package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js.map → chunk-NZ7QIUP5.js.map} +0 -0
  559. /package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js.map → chunk-P5L7Z2O6.js.map} +0 -0
  560. /package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js.map → chunk-SU2E4AWU.js.map} +0 -0
  561. /package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js.map → chunk-SU3TB4NS.js.map} +0 -0
  562. /package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js.map → chunk-T4XBKJ3F.js.map} +0 -0
  563. /package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js.map → chunk-U5TR4N7J.js.map} +0 -0
  564. /package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js.map → chunk-UMNQZS4H.js.map} +0 -0
  565. /package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js.map → chunk-WJA3PXW7.js.map} +0 -0
  566. /package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js.map → chunk-YSDFIY7N.js.map} +0 -0
  567. /package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js.map → chunk-YSGTMDWC.js.map} +0 -0
  568. /package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js.map → chunk-Z5F6XZXE.js.map} +0 -0
  569. /package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js.map → chunk-Z7RPDF2Y.js.map} +0 -0
  570. /package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js.map → claim-2BGBGSVI.js.map} +0 -0
  571. /package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js.map → claim-5GU7OE67.js.map} +0 -0
  572. /package/dist/cli-bundle/chunks/{close-E6ZZGCJY.js.map → close-6YODBUIV.js.map} +0 -0
  573. /package/dist/cli-bundle/chunks/{close-TQYAAFJP.js.map → close-AFVKPR57.js.map} +0 -0
  574. /package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js.map → comments-DNWHEBOS.js.map} +0 -0
  575. /package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js.map → comments-RW23R3VE.js.map} +0 -0
  576. /package/dist/cli-bundle/chunks/{context-B6275WPX.js.map → context-OYXRGY7S.js.map} +0 -0
  577. /package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js.map → context-PKCEHQY3.js.map} +0 -0
  578. /package/dist/cli-bundle/chunks/{copy-DEM4DATS.js.map → copy-6XOR3HKN.js.map} +0 -0
  579. /package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js.map → copy-I4NCLBR4.js.map} +0 -0
  580. /package/dist/cli-bundle/chunks/{create-RLRJMRTM.js.map → create-PM45M6PE.js.map} +0 -0
  581. /package/dist/cli-bundle/chunks/{create-OH3BDGBB.js.map → create-Z7YCH3BE.js.map} +0 -0
  582. /package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js.map → delete-7YXHYG67.js.map} +0 -0
  583. /package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js.map → delete-LPISP43T.js.map} +0 -0
  584. /package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js.map → deps-N2T26FME.js.map} +0 -0
  585. /package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js.map → deps-WATKQDE3.js.map} +0 -0
  586. /package/dist/cli-bundle/chunks/{docs-GYZNVS26.js.map → docs-6LQ3GLM7.js.map} +0 -0
  587. /package/dist/cli-bundle/chunks/{docs-26S44RXU.js.map → docs-Z3X6JZLT.js.map} +0 -0
  588. /package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js.map → eval-6DCLG52D.js.map} +0 -0
  589. /package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js.map → eval-Y3ZCUTHK.js.map} +0 -0
  590. /package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js.map → extension-BNINIMT7.js.map} +0 -0
  591. /package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js.map → extension-QWE4YYK5.js.map} +0 -0
  592. /package/dist/cli-bundle/chunks/{files-NQHEXUZD.js.map → files-6SGKHS6O.js.map} +0 -0
  593. /package/dist/cli-bundle/chunks/{files-MBNICQFM.js.map → files-FUYPSOFJ.js.map} +0 -0
  594. /package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js.map → focus-2Q3K76G2.js.map} +0 -0
  595. /package/dist/cli-bundle/chunks/{focus-XZW5423D.js.map → focus-ATLBWXXD.js.map} +0 -0
  596. /package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js.map → gc-RUYEMNRF.js.map} +0 -0
  597. /package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js.map → gc-TDWSDR66.js.map} +0 -0
  598. /package/dist/cli-bundle/chunks/{history-WSZHY3PN.js.map → history-CGNQJXFE.js.map} +0 -0
  599. /package/dist/cli-bundle/chunks/{history-NERDJNUB.js.map → history-SGRRS72R.js.map} +0 -0
  600. /package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js.map → history-redact-IRL7WJ3E.js.map} +0 -0
  601. /package/dist/cli-bundle/chunks/{history-redact-MP6CH7U5.js.map → history-redact-N3JK7VBW.js.map} +0 -0
  602. /package/dist/cli-bundle/chunks/{init-64XDLQJB.js.map → init-4GESW7RM.js.map} +0 -0
  603. /package/dist/cli-bundle/chunks/{init-PAX32BJA.js.map → init-XIDPABA4.js.map} +0 -0
  604. /package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js.map → learnings-4BHWFFUV.js.map} +0 -0
  605. /package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js.map → learnings-4FJY7WIW.js.map} +0 -0
  606. /package/dist/cli-bundle/chunks/{list-G5Y65VF6.js.map → list-472TIOVK.js.map} +0 -0
  607. /package/dist/cli-bundle/chunks/{list-DNBJVO3E.js.map → list-D7BF5CL2.js.map} +0 -0
  608. /package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js.map → notes-6KNOSLIT.js.map} +0 -0
  609. /package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js.map → notes-W4UEICGF.js.map} +0 -0
  610. /package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js.map → restore-44IHMMZZ.js.map} +0 -0
  611. /package/dist/cli-bundle/chunks/{restore-YALDGTQR.js.map → restore-EXHU34EU.js.map} +0 -0
  612. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js.map → scheduling-shortcuts-OLHNLAZY.js.map} +0 -0
  613. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js.map → scheduling-shortcuts-TSBK4AY5.js.map} +0 -0
  614. /package/dist/cli-bundle/chunks/{schema-73HR2OJW.js.map → schema-IB2NZZWD.js.map} +0 -0
  615. /package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js.map → schema-VBCELP5G.js.map} +0 -0
  616. /package/dist/cli-bundle/chunks/{search-AXPXKZER.js.map → search-7UBETML4.js.map} +0 -0
  617. /package/dist/cli-bundle/chunks/{search-KILGT37L.js.map → search-R227JOL6.js.map} +0 -0
  618. /package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js.map → stats-FAG7COEH.js.map} +0 -0
  619. /package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js.map → stats-MCK7PLYS.js.map} +0 -0
  620. /package/dist/cli-bundle/chunks/{test-PWDIZ255.js.map → test-QY44WAMR.js.map} +0 -0
  621. /package/dist/cli-bundle/chunks/{test-ACD52Z3S.js.map → test-SY76DZTO.js.map} +0 -0
  622. /package/dist/cli-bundle/chunks/{update-AMRSOIWP.js.map → update-A7EICML6.js.map} +0 -0
  623. /package/dist/cli-bundle/chunks/{update-KFX2SIAC.js.map → update-IKJZWLQC.js.map} +0 -0
  624. /package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js.map → upgrade-NWMR3VQL.js.map} +0 -0
  625. /package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js.map → upgrade-VU46BLJZ.js.map} +0 -0
@@ -4,7 +4,7 @@
4
4
  * Implements the pm contracts command surface and its agent-facing runtime behavior.
5
5
  */
6
6
 
7
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="98b192d1-a27b-513e-8089-5626e03f2be1")}catch(e){}}();
7
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="24d15738-45bd-5dd2-95e1-699f9c6061bd")}catch(e){}}();
8
8
  import { EXIT_CODE, SETTINGS_DEFAULTS } from "../../core/shared/constants.js";
9
9
  import { PmCliError } from "../../core/shared/errors.js";
10
10
  import { activateExtensions, getActiveExtensionRegistrations, loadExtensions, } from "../../core/extensions/index.js";
@@ -376,6 +376,11 @@ function normalizeStringList(values) {
376
376
  }
377
377
  return normalized;
378
378
  }
379
+ function assignExtensionFlagBoolean(contract, key, enabled) {
380
+ if (enabled) {
381
+ contract[key] = true;
382
+ }
383
+ }
379
384
  function toExtensionFlagContract(definition) {
380
385
  const longName = toOptionalTrimmedString(definition.long);
381
386
  const shortName = toOptionalTrimmedString(definition.short);
@@ -393,16 +398,13 @@ function toExtensionFlagContract(definition) {
393
398
  if (normalizedShort && normalizedLong) {
394
399
  contract.short = normalizedShort;
395
400
  }
401
+ assignExtensionFlagBoolean(contract, "required", definition.required === true);
402
+ assignExtensionFlagBoolean(contract, "repeatable", definition.repeatable === true);
403
+ assignExtensionFlagBoolean(contract, "list", definition.list === true);
396
404
  const description = toOptionalTrimmedString(definition.description);
397
405
  if (description) {
398
406
  contract.description = description;
399
407
  }
400
- if (definition.required === true) {
401
- contract.required = true;
402
- }
403
- if (definition.repeatable === true) {
404
- contract.repeatable = true;
405
- }
406
408
  const valueName = toOptionalTrimmedString(definition.value_name);
407
409
  if (valueName) {
408
410
  contract.value_name = valueName;
@@ -553,6 +555,31 @@ function extensionSchemaPropertyNameFromFlag(flag) {
553
555
  const cleaned = camelCased.replace(/[^a-zA-Z0-9]/g, "");
554
556
  return cleaned.length > 0 ? cleaned : null;
555
557
  }
558
+ function buildExtensionArgumentSchema(argument, action) {
559
+ if (argument.variadic) {
560
+ return {
561
+ type: "array",
562
+ items: { type: "string" },
563
+ description: argument.description ??
564
+ `Variadic argument '${argument.name}' for extension action '${action}'.`,
565
+ };
566
+ }
567
+ return {
568
+ type: "string",
569
+ description: argument.description ??
570
+ `Argument '${argument.name}' for extension action '${action}'.`,
571
+ };
572
+ }
573
+ function buildExtensionFlagSchema(flag, action) {
574
+ const valueType = flag.value_type ?? "boolean";
575
+ const schemaType = valueType === "boolean" ? "boolean" : valueType === "number" ? ["number", "string"] : "string";
576
+ const acceptsMultipleValues = flag.repeatable === true || flag.list === true;
577
+ return {
578
+ type: acceptsMultipleValues ? "array" : schemaType,
579
+ ...(acceptsMultipleValues ? { items: { type: schemaType } } : {}),
580
+ description: flag.description ?? `Extension option '${flag.flag}' for action '${action}'.`,
581
+ };
582
+ }
556
583
  function buildExtensionActionSchemaBranch(contract) {
557
584
  const commands = contract.command
558
585
  .split("|")
@@ -569,21 +596,7 @@ function buildExtensionActionSchemaBranch(contract) {
569
596
  };
570
597
  const required = ["action"];
571
598
  for (const argument of contract.arguments) {
572
- if (argument.variadic) {
573
- properties[argument.name] = {
574
- type: "array",
575
- items: { type: "string" },
576
- description: argument.description ??
577
- `Variadic argument '${argument.name}' for extension action '${contract.action}'.`,
578
- };
579
- }
580
- else {
581
- properties[argument.name] = {
582
- type: "string",
583
- description: argument.description ??
584
- `Argument '${argument.name}' for extension action '${contract.action}'.`,
585
- };
586
- }
599
+ properties[argument.name] = buildExtensionArgumentSchema(argument, contract.action);
587
600
  if (argument.required) {
588
601
  required.push(argument.name);
589
602
  }
@@ -593,13 +606,7 @@ function buildExtensionActionSchemaBranch(contract) {
593
606
  if (!propertyName || properties[propertyName] !== undefined) {
594
607
  continue;
595
608
  }
596
- const valueType = flag.value_type ?? "boolean";
597
- const schemaType = valueType === "boolean" ? "boolean" : valueType === "number" ? ["number", "string"] : "string";
598
- properties[propertyName] = {
599
- type: flag.repeatable ? "array" : schemaType,
600
- ...(flag.repeatable ? { items: { type: schemaType } } : {}),
601
- description: flag.description ?? `Extension option '${flag.flag}' for action '${contract.action}'.`,
602
- };
609
+ properties[propertyName] = buildExtensionFlagSchema(flag, contract.action);
603
610
  if (flag.required === true) {
604
611
  required.push(propertyName);
605
612
  }
@@ -1056,68 +1063,95 @@ function attachCreateRequiredOptionContracts(schema, metadata) {
1056
1063
  oneOf: enrichedBranches,
1057
1064
  };
1058
1065
  }
1059
- /**
1060
- * Implements run contracts for the public runtime surface of this module.
1061
- */
1062
- export async function runContracts(options, global) {
1063
- const selectedAction = normalizeToken(options.action);
1064
- const selectedCommand = normalizeToken(options.command);
1066
+ function resolveContractsSelection(options) {
1065
1067
  const schemaOnly = options.schemaOnly === true;
1066
1068
  const flagsOnly = options.flagsOnly === true;
1067
1069
  const availabilityOnly = options.availabilityOnly === true;
1068
1070
  const runtimeOnly = options.runtimeOnly === true;
1069
1071
  const fullOutput = options.full === true;
1072
+ const selectedAction = normalizeToken(options.action);
1073
+ const selectedCommand = normalizeToken(options.command);
1070
1074
  const unfilteredDefaultBriefMode = !fullOutput && !schemaOnly && !flagsOnly && !availabilityOnly && !selectedAction && !selectedCommand;
1071
- // Agent token-cost guard: when no filter and no projection flag and not --full,
1072
- // skip the giant schema oneOf union (the 200KB+ chunk). Restore via --full
1073
- // or by scoping to a specific --command/--action.
1074
- const omitUnfilteredSchema = unfilteredDefaultBriefMode;
1075
- const omitUnfilteredCommandFlags = unfilteredDefaultBriefMode;
1076
- const omitUnfilteredCommanderAliases = unfilteredDefaultBriefMode;
1077
- const projectionFlagsEnabled = [
1075
+ return {
1076
+ selectedAction,
1077
+ selectedCommand,
1078
1078
  schemaOnly,
1079
1079
  flagsOnly,
1080
1080
  availabilityOnly,
1081
+ runtimeOnly,
1082
+ fullOutput,
1083
+ omitUnfilteredSchema: unfilteredDefaultBriefMode,
1084
+ omitUnfilteredCommandFlags: unfilteredDefaultBriefMode,
1085
+ omitUnfilteredCommanderAliases: unfilteredDefaultBriefMode,
1086
+ };
1087
+ }
1088
+ function assertSingleContractsProjection(selection) {
1089
+ const projectionFlagsEnabled = [
1090
+ selection.schemaOnly,
1091
+ selection.flagsOnly,
1092
+ selection.availabilityOnly,
1081
1093
  ].filter((value) => value).length;
1082
1094
  if (projectionFlagsEnabled > 1) {
1083
1095
  throw new PmCliError("Choose only one projection flag: --schema-only, --flags-only, or --availability-only.", EXIT_CODE.USAGE);
1084
1096
  }
1085
- const pmRoot = resolvePmRoot(process.cwd(), global.path);
1086
- let settings = structuredClone(SETTINGS_DEFAULTS);
1097
+ }
1098
+ async function readContractsSettings(pmRoot) {
1087
1099
  try {
1088
- settings = await readSettings(pmRoot);
1100
+ return await readSettings(pmRoot);
1089
1101
  }
1090
1102
  catch {
1091
- settings = structuredClone(SETTINGS_DEFAULTS);
1103
+ return structuredClone(SETTINGS_DEFAULTS);
1092
1104
  }
1105
+ }
1106
+ async function resolveContractsRuntimeContext(global, pmRoot) {
1107
+ const settings = await readContractsSettings(pmRoot);
1093
1108
  const runtimeProbe = await resolveRuntimeExtensionActionProbe(global);
1094
1109
  const typeRegistry = resolveItemTypeRegistry(settings, runtimeProbe.registrations ?? getActiveExtensionRegistrations());
1095
- const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
1096
1110
  const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);
1097
- const runtimeFieldFlagMap = buildRuntimeFieldFlagContracts(runtimeFieldRegistry);
1098
- const createRequiredOptionContracts = buildCreateRequiredOptionContracts(typeRegistry);
1099
1111
  const extensionContracts = collectExtensionCommandContracts(runtimeProbe);
1100
- const mergedExtensionContracts = mergeExtensionContractsByAction(extensionContracts);
1101
- const extensionFlagMap = collectExtensionFlagContractsByCommand(runtimeProbe.flagRegistrations);
1102
- const includePackageOwnedActions = (selectedAction !== undefined && PACKAGE_OWNED_ACTIONS.has(selectedAction) && availabilityOnly) ||
1103
- (selectedCommand !== undefined && PACKAGE_OWNED_COMMANDS.has(selectedCommand) && availabilityOnly);
1104
- const actionDescriptors = collectActionContractDescriptors(mergedExtensionContracts, { includePackageOwnedActions });
1105
- if (includePackageOwnedActions &&
1106
- selectedCommand !== undefined &&
1107
- PACKAGE_OWNED_COMMANDS.has(selectedCommand) &&
1108
- !actionDescriptors.some((entry) => entry.command_path === selectedCommand)) {
1112
+ return {
1113
+ settings,
1114
+ runtimeProbe,
1115
+ typeRegistry,
1116
+ statusRegistry: resolveRuntimeStatusRegistry(settings.schema),
1117
+ runtimeFieldRegistry,
1118
+ runtimeFieldFlagMap: buildRuntimeFieldFlagContracts(runtimeFieldRegistry),
1119
+ createRequiredOptionContracts: buildCreateRequiredOptionContracts(typeRegistry),
1120
+ extensionContracts,
1121
+ mergedExtensionContracts: mergeExtensionContractsByAction(extensionContracts),
1122
+ extensionFlagMap: collectExtensionFlagContractsByCommand(runtimeProbe.flagRegistrations),
1123
+ };
1124
+ }
1125
+ function shouldIncludePackageOwnedActions(selection) {
1126
+ return (selection.availabilityOnly &&
1127
+ ((selection.selectedAction !== undefined && PACKAGE_OWNED_ACTIONS.has(selection.selectedAction)) ||
1128
+ (selection.selectedCommand !== undefined && PACKAGE_OWNED_COMMANDS.has(selection.selectedCommand))));
1129
+ }
1130
+ function collectContractsActionDescriptors(selection, mergedExtensionContracts) {
1131
+ const actionDescriptors = collectActionContractDescriptors(mergedExtensionContracts, {
1132
+ includePackageOwnedActions: shouldIncludePackageOwnedActions(selection),
1133
+ });
1134
+ if (shouldIncludePackageOwnedActions(selection) &&
1135
+ selection.selectedCommand !== undefined &&
1136
+ PACKAGE_OWNED_COMMANDS.has(selection.selectedCommand) &&
1137
+ !actionDescriptors.some((entry) => entry.command_path === selection.selectedCommand)) {
1109
1138
  actionDescriptors.push({
1110
- action: packageOwnedActionForCommand(selectedCommand),
1139
+ action: packageOwnedActionForCommand(selection.selectedCommand),
1111
1140
  provider: "extension",
1112
1141
  requires_extension: true,
1113
- command_path: selectedCommand,
1142
+ command_path: selection.selectedCommand,
1114
1143
  });
1115
1144
  }
1145
+ return actionDescriptors;
1146
+ }
1147
+ function assertKnownContractsAction(selection, actionDescriptors) {
1116
1148
  const actionNames = new Set(actionDescriptors.map((entry) => entry.action));
1117
- if (selectedAction && !actionNames.has(selectedAction)) {
1118
- throw new PmCliError(`Unknown action: "${options.action}".`, EXIT_CODE.USAGE);
1149
+ if (selection.selectedAction && !actionNames.has(selection.selectedAction)) {
1150
+ throw new PmCliError(`Unknown action: "${selection.selectedAction}".`, EXIT_CODE.USAGE);
1119
1151
  }
1120
- const commandCatalog = [
1152
+ }
1153
+ function buildContractsCommandCatalog(actionDescriptors, mergedExtensionContracts) {
1154
+ return [
1121
1155
  ...new Set([
1122
1156
  ...PM_CORE_COMMAND_NAMES.filter((entry) => !PACKAGE_OWNED_COMMANDS.has(entry)),
1123
1157
  ...[...CORE_COMMAND_FLAG_CONTRACTS_BY_COMMAND.keys()].filter((entry) => !PACKAGE_OWNED_COMMANDS.has(entry)),
@@ -1129,78 +1163,121 @@ export async function runContracts(options, global) {
1129
1163
  .map((entry) => normalizeCommandPath(entry))
1130
1164
  .filter((entry) => entry.length > 0)
1131
1165
  .sort((left, right) => left.localeCompare(right));
1166
+ }
1167
+ function buildCommandNamespaceError(command, namespaceChildren) {
1168
+ const displayedNamespaceChildren = namespaceChildren.slice(0, COMMAND_NAMESPACE_DISPLAY_LIMIT);
1169
+ const hiddenNamespaceChildCount = namespaceChildren.length - displayedNamespaceChildren.length;
1170
+ const displayedChildCommandList = hiddenNamespaceChildCount > 0
1171
+ ? `${displayedNamespaceChildren.join(", ")}, and ${hiddenNamespaceChildCount} more`
1172
+ : displayedNamespaceChildren.join(", ");
1173
+ const fallbackCandidates = namespaceChildren.slice(0, COMMAND_NAMESPACE_FALLBACK_LIMIT);
1174
+ const childCommandExamples = namespaceChildren
1175
+ .slice(0, 5)
1176
+ .map((childCommand) => `pm contracts --command "${childCommand}" --flags-only --json`);
1177
+ const suggestedChildCommand = namespaceChildren[0];
1178
+ return new PmCliError(`Command "${command}" is a command namespace. Choose a concrete child command: ${displayedChildCommandList}.`, EXIT_CODE.USAGE, {
1179
+ code: "command_namespace",
1180
+ required: "Use a concrete child command path listed under this namespace.",
1181
+ why: "Command groups expose help at the namespace root, but command flag contracts belong to executable child commands.",
1182
+ examples: childCommandExamples,
1183
+ nextSteps: [`Retry with a child command, for example: ${childCommandExamples[0]}`],
1184
+ recovery: {
1185
+ suggested_retry: `pm contracts --command "${suggestedChildCommand}" --flags-only --json`,
1186
+ fallback_candidates: fallbackCandidates.map((childCommand) => ({
1187
+ source: "command_namespace",
1188
+ command: `pm contracts --command "${childCommand}" --flags-only --json`,
1189
+ reason: `Child command under ${command}`,
1190
+ })),
1191
+ },
1192
+ });
1193
+ }
1194
+ function buildPackageOwnedCommandError(command, packageHint) {
1195
+ return new PmCliError(`Unknown command: "${command}". Command "${command}" is provided by the optional "${packageHint}" package. Run "pm install ${packageHint} --project" and retry.`, EXIT_CODE.USAGE, {
1196
+ code: "unknown_command",
1197
+ required: `Install the optional "${packageHint}" package, or choose a command from pm contracts --flags-only --json.`,
1198
+ why: "Command contracts include core commands plus commands registered by active packages and extensions.",
1199
+ examples: [`pm install ${packageHint} --project`, `pm contracts --command ${command} --flags-only --json`],
1200
+ nextSteps: [`Install the optional package first: pm install ${packageHint} --project`],
1201
+ recovery: {
1202
+ suggested_retry: `pm install ${packageHint} --project`,
1203
+ },
1204
+ });
1205
+ }
1206
+ function buildUnknownCommandError(command) {
1207
+ return new PmCliError(`Unknown command: "${command}".`, EXIT_CODE.USAGE, {
1208
+ code: "unknown_command",
1209
+ required: "Use a command path listed by pm contracts --flags-only --json.",
1210
+ why: "Command contracts are generated from the active core, package, and extension command registry.",
1211
+ examples: ["pm contracts --flags-only --json", "pm --help"],
1212
+ nextSteps: ["Verify spelling and active packages/extensions, then rerun with a known command path."],
1213
+ recovery: {
1214
+ suggested_retry: "pm contracts --flags-only --json",
1215
+ },
1216
+ });
1217
+ }
1218
+ function assertKnownContractsCommand(selection, commandCatalog) {
1219
+ if (!selection.selectedCommand) {
1220
+ return;
1221
+ }
1132
1222
  const commandNames = new Set(commandCatalog);
1133
- if (selectedCommand && !commandNames.has(selectedCommand)) {
1134
- const namespaceChildren = commandCatalog.filter((command) => command.startsWith(`${selectedCommand} `));
1135
- if (namespaceChildren.length > 0) {
1136
- const displayedNamespaceChildren = namespaceChildren.slice(0, COMMAND_NAMESPACE_DISPLAY_LIMIT);
1137
- const hiddenNamespaceChildCount = namespaceChildren.length - displayedNamespaceChildren.length;
1138
- const displayedChildCommandList = hiddenNamespaceChildCount > 0
1139
- ? `${displayedNamespaceChildren.join(", ")}, and ${hiddenNamespaceChildCount} more`
1140
- : displayedNamespaceChildren.join(", ");
1141
- const fallbackCandidates = namespaceChildren.slice(0, COMMAND_NAMESPACE_FALLBACK_LIMIT);
1142
- const childCommandExamples = namespaceChildren
1143
- .slice(0, 5)
1144
- .map((command) => `pm contracts --command "${command}" --flags-only --json`);
1145
- const suggestedChildCommand = namespaceChildren[0];
1146
- throw new PmCliError(`Command "${options.command}" is a command namespace. Choose a concrete child command: ${displayedChildCommandList}.`, EXIT_CODE.USAGE, {
1147
- code: "command_namespace",
1148
- required: "Use a concrete child command path listed under this namespace.",
1149
- why: "Command groups expose help at the namespace root, but command flag contracts belong to executable child commands.",
1150
- examples: childCommandExamples,
1151
- nextSteps: [
1152
- `Retry with a child command, for example: ${childCommandExamples[0]}`,
1153
- ],
1154
- recovery: {
1155
- suggested_retry: `pm contracts --command "${suggestedChildCommand}" --flags-only --json`,
1156
- fallback_candidates: fallbackCandidates.map((command) => ({
1157
- source: "command_namespace",
1158
- command: `pm contracts --command "${command}" --flags-only --json`,
1159
- reason: `Child command under ${selectedCommand}`,
1160
- })),
1161
- },
1162
- });
1163
- }
1164
- const packageHint = PACKAGE_OWNED_COMMAND_INSTALL_HINTS.get(selectedCommand);
1165
- if (packageHint) {
1166
- throw new PmCliError(`Unknown command: "${options.command}". Command "${selectedCommand}" is provided by the optional "${packageHint}" package. Run "pm install ${packageHint} --project" and retry.`, EXIT_CODE.USAGE, {
1167
- code: "unknown_command",
1168
- required: `Install the optional "${packageHint}" package, or choose a command from pm contracts --flags-only --json.`,
1169
- why: "Command contracts include core commands plus commands registered by active packages and extensions.",
1170
- examples: [`pm install ${packageHint} --project`, `pm contracts --command ${selectedCommand} --flags-only --json`],
1171
- nextSteps: [`Install the optional package first: pm install ${packageHint} --project`],
1172
- recovery: {
1173
- suggested_retry: `pm install ${packageHint} --project`,
1174
- },
1175
- });
1176
- }
1177
- throw new PmCliError(`Unknown command: "${options.command}".`, EXIT_CODE.USAGE, {
1178
- code: "unknown_command",
1179
- required: "Use a command path listed by pm contracts --flags-only --json.",
1180
- why: "Command contracts are generated from the active core, package, and extension command registry.",
1181
- examples: ["pm contracts --flags-only --json", "pm --help"],
1182
- nextSteps: ["Verify spelling and active packages/extensions, then rerun with a known command path."],
1183
- recovery: {
1184
- suggested_retry: "pm contracts --flags-only --json",
1185
- },
1186
- });
1223
+ if (commandNames.has(selection.selectedCommand)) {
1224
+ return;
1187
1225
  }
1188
- const selectedPackageOwnedAction = selectedCommand
1189
- ? PACKAGE_OWNED_COMMAND_ACTIONS.get(selectedCommand)
1226
+ const namespaceChildren = commandCatalog.filter((command) => command.startsWith(`${selection.selectedCommand} `));
1227
+ if (namespaceChildren.length > 0) {
1228
+ throw buildCommandNamespaceError(selection.selectedCommand, namespaceChildren);
1229
+ }
1230
+ const packageHint = PACKAGE_OWNED_COMMAND_INSTALL_HINTS.get(selection.selectedCommand);
1231
+ if (packageHint) {
1232
+ throw buildPackageOwnedCommandError(selection.selectedCommand, packageHint);
1233
+ }
1234
+ throw buildUnknownCommandError(selection.selectedCommand);
1235
+ }
1236
+ function resolveContractsActionContext(selection, runtime) {
1237
+ const actionDescriptors = collectContractsActionDescriptors(selection, runtime.mergedExtensionContracts);
1238
+ assertKnownContractsAction(selection, actionDescriptors);
1239
+ const commandCatalog = buildContractsCommandCatalog(actionDescriptors, runtime.mergedExtensionContracts);
1240
+ assertKnownContractsCommand(selection, commandCatalog);
1241
+ const selectedPackageOwnedAction = selection.selectedCommand
1242
+ ? PACKAGE_OWNED_COMMAND_ACTIONS.get(selection.selectedCommand)
1190
1243
  : undefined;
1191
- const commandScopedDescriptors = selectedCommand
1244
+ const commandScopedDescriptors = selection.selectedCommand
1192
1245
  ? actionDescriptors.filter((descriptor) => selectedPackageOwnedAction
1193
1246
  ? descriptor.action === selectedPackageOwnedAction
1194
- : actionDescriptorMatchesSelectedCommand(descriptor, selectedCommand))
1247
+ : actionDescriptorMatchesSelectedCommand(descriptor, selection.selectedCommand))
1195
1248
  : actionDescriptors;
1196
- if (selectedCommand &&
1197
- selectedAction &&
1198
- !commandScopedDescriptors.some((descriptor) => descriptor.action === selectedAction)) {
1199
- throw new PmCliError(`Action "${options.action}" is not mapped to command "${options.command}" in contracts output.`, EXIT_CODE.USAGE);
1249
+ if (selection.selectedCommand &&
1250
+ selection.selectedAction &&
1251
+ !commandScopedDescriptors.some((descriptor) => descriptor.action === selection.selectedAction)) {
1252
+ throw new PmCliError(`Action "${selection.selectedAction}" is not mapped to command "${selection.selectedCommand}" in contracts output.`, EXIT_CODE.USAGE);
1200
1253
  }
1201
- const schema = PM_TOOL_PARAMETERS_SCHEMA;
1202
- const schemaBranches = extractActionBranches(schema);
1203
- const schemaActionSet = new Set(schemaBranches
1254
+ const scopedActionDescriptors = selection.selectedAction
1255
+ ? commandScopedDescriptors.filter((descriptor) => descriptor.action === selection.selectedAction)
1256
+ : commandScopedDescriptors;
1257
+ const allActionAvailability = [
1258
+ ...new Map(scopedActionDescriptors
1259
+ .map((descriptor) => resolveActionAvailability(descriptor, runtime.runtimeProbe))
1260
+ .map((entry) => [
1261
+ /* c8 ignore next -- keyed dedupe by action|path is covered by runtime policy integration tests. */
1262
+ selectedPackageOwnedAction ? entry.action : `${entry.action}|${entry.command_path ?? ""}`,
1263
+ entry,
1264
+ ])).values(),
1265
+ ];
1266
+ const actionAvailability = selection.runtimeOnly && !selection.selectedAction && !selection.availabilityOnly
1267
+ ? allActionAvailability.filter((entry) => entry.invocable)
1268
+ : allActionAvailability;
1269
+ return {
1270
+ actionDescriptors,
1271
+ commandCatalog,
1272
+ commandScopedDescriptors,
1273
+ scopedActionDescriptors,
1274
+ selectedPackageOwnedAction,
1275
+ actionAvailability,
1276
+ actions: [...new Set(actionAvailability.map((entry) => entry.action))],
1277
+ };
1278
+ }
1279
+ function buildSchemaActionSet(schema) {
1280
+ return new Set(extractActionBranches(schema)
1204
1281
  .map((entry) => {
1205
1282
  const properties = entry.properties;
1206
1283
  /* c8 ignore start -- PM_TOOL_PARAMETERS_SCHEMA action branches always carry a properties object; the property-less fallback is validated in schema-level contract tests. */
@@ -1220,145 +1297,182 @@ export async function runContracts(options, global) {
1220
1297
  /* c8 ignore stop */
1221
1298
  })
1222
1299
  .filter((entry) => entry !== null));
1300
+ }
1301
+ function buildMergedContractsSchema(mergedExtensionContracts) {
1302
+ const schema = PM_TOOL_PARAMETERS_SCHEMA;
1303
+ const schemaBranches = extractActionBranches(schema);
1304
+ const schemaActionSet = buildSchemaActionSet(schema);
1223
1305
  const extensionBranches = mergedExtensionContracts
1224
1306
  .filter((contract) => !schemaActionSet.has(contract.action))
1225
1307
  .map((contract) => buildExtensionActionSchemaBranch(contract));
1226
- const mergedSchema = extensionBranches.length > 0
1308
+ return extensionBranches.length > 0
1227
1309
  ? {
1228
1310
  ...schema,
1229
1311
  oneOf: [...schemaBranches, ...extensionBranches],
1230
1312
  }
1231
1313
  : schema;
1232
- const scopedActionDescriptors = selectedAction
1233
- ? commandScopedDescriptors.filter((descriptor) => descriptor.action === selectedAction)
1234
- : commandScopedDescriptors;
1235
- const allActionAvailability = [
1236
- ...new Map(scopedActionDescriptors
1237
- .map((descriptor) => resolveActionAvailability(descriptor, runtimeProbe))
1238
- .map((entry) => [
1239
- /* c8 ignore next -- keyed dedupe by action|path is covered by runtime policy integration tests. */
1240
- selectedPackageOwnedAction ? entry.action : `${entry.action}|${entry.command_path ?? ""}`,
1241
- entry,
1242
- ])).values(),
1243
- ];
1244
- const actionAvailability = runtimeOnly && !selectedAction && !availabilityOnly
1245
- ? allActionAvailability.filter((entry) => entry.invocable)
1246
- : allActionAvailability;
1247
- const actions = [...new Set(actionAvailability.map((entry) => entry.action))];
1248
- const descriptorActionSet = new Set(actionDescriptors.map((descriptor) => descriptor.action));
1249
- let filteredSchema = selectedAction
1250
- ? filterSchemaByAction(mergedSchema, selectedAction)
1251
- : selectedCommand
1252
- ? filterSchemaByActions(mergedSchema, new Set(scopedActionDescriptors.map((descriptor) => descriptor.action)))
1314
+ }
1315
+ function filterContractsSchema(selection, actionContext, mergedSchema) {
1316
+ const descriptorActionSet = new Set(actionContext.actionDescriptors.map((descriptor) => descriptor.action));
1317
+ const filteredSchema = selection.selectedAction
1318
+ ? filterSchemaByAction(mergedSchema, selection.selectedAction)
1319
+ : selection.selectedCommand
1320
+ ? filterSchemaByActions(mergedSchema, new Set(actionContext.scopedActionDescriptors.map((descriptor) => descriptor.action)))
1253
1321
  : filterSchemaByActions(mergedSchema, descriptorActionSet);
1254
- if (runtimeOnly && !selectedAction) {
1255
- filteredSchema = filterSchemaByActions(filteredSchema, new Set(actions));
1256
- }
1257
- const includeSchemaSurface = !flagsOnly && !availabilityOnly;
1258
- if (includeSchemaSurface) {
1259
- filteredSchema = attachCreateRequiredOptionContracts(filteredSchema, createRequiredOptionContracts);
1260
- }
1261
- const commands = selectedCommand !== undefined
1262
- ? [selectedCommand]
1263
- : selectedAction
1264
- ? resolveScopedCommandsFromActionDescriptors(scopedActionDescriptors, commandCatalog)
1265
- : commandCatalog;
1266
- const outputCommands = flagsOnly && selectedCommand === undefined && selectedAction === undefined
1322
+ return selection.runtimeOnly && !selection.selectedAction
1323
+ ? filterSchemaByActions(filteredSchema, new Set(actionContext.actions))
1324
+ : filteredSchema;
1325
+ }
1326
+ function resolveContractsSchemaContext(selection, runtime, actionContext) {
1327
+ const mergedSchema = buildMergedContractsSchema(runtime.mergedExtensionContracts);
1328
+ const includeSchemaSurface = !selection.flagsOnly && !selection.availabilityOnly;
1329
+ const filteredSchema = includeSchemaSurface
1330
+ ? attachCreateRequiredOptionContracts(filterContractsSchema(selection, actionContext, mergedSchema), runtime.createRequiredOptionContracts)
1331
+ : filterContractsSchema(selection, actionContext, mergedSchema);
1332
+ return { mergedSchema, filteredSchema };
1333
+ }
1334
+ function resolveContractsCommands(selection, actionContext) {
1335
+ if (selection.selectedCommand !== undefined) {
1336
+ return [selection.selectedCommand];
1337
+ }
1338
+ if (selection.selectedAction) {
1339
+ return resolveScopedCommandsFromActionDescriptors(actionContext.scopedActionDescriptors, actionContext.commandCatalog);
1340
+ }
1341
+ return actionContext.commandCatalog;
1342
+ }
1343
+ function resolveOutputCommands(selection, commands) {
1344
+ return selection.flagsOnly && selection.selectedCommand === undefined && selection.selectedAction === undefined
1267
1345
  ? compactCommandAliasSurface(commands)
1268
1346
  : commands;
1269
- const commandAliases = buildCommandAliasSurface(commands);
1270
- const extensionCommandContracts = selectedCommand
1271
- ? extensionContracts.filter((entry) => entry.command === selectedCommand)
1272
- : selectedAction
1273
- ? extensionContracts.filter((entry) => outputCommands.includes(normalizeCommandPath(entry.command)))
1274
- : extensionContracts;
1275
- const includeRuntimeContractSections = !(flagsOnly && !fullOutput);
1276
- const result = {
1347
+ }
1348
+ function resolveExtensionCommandContracts(selection, runtime, outputCommands) {
1349
+ if (selection.selectedCommand) {
1350
+ return runtime.extensionContracts.filter((entry) => splitCommandPathAliases(entry.command).includes(selection.selectedCommand));
1351
+ }
1352
+ if (selection.selectedAction) {
1353
+ const outputCommandSet = new Set(outputCommands);
1354
+ return runtime.extensionContracts.filter((entry) => splitCommandPathAliases(entry.command).some((command) => outputCommandSet.has(command)));
1355
+ }
1356
+ return runtime.extensionContracts;
1357
+ }
1358
+ function createContractsResult(selection, schemaContext, actionContext, outputCommands) {
1359
+ return {
1277
1360
  schema_version:
1278
1361
  /* c8 ignore next -- schema version/id fallbacks are exercised by schema snapshot tests. */
1279
- typeof mergedSchema["x-schema-version"] === "string"
1280
- ? mergedSchema["x-schema-version"]
1362
+ typeof schemaContext.mergedSchema["x-schema-version"] === "string"
1363
+ ? schemaContext.mergedSchema["x-schema-version"]
1281
1364
  : null,
1282
1365
  schema_id:
1283
1366
  /* c8 ignore next -- schema version/id fallbacks are exercised by schema snapshot tests. */
1284
- typeof mergedSchema.$id === "string"
1285
- ? mergedSchema.$id
1367
+ typeof schemaContext.mergedSchema.$id === "string"
1368
+ ? schemaContext.mergedSchema.$id
1286
1369
  : null,
1287
1370
  selected: {
1288
- action: selectedAction ?? null,
1289
- command: selectedCommand ?? null,
1290
- schema_only: schemaOnly,
1291
- flags_only: flagsOnly,
1292
- availability_only: availabilityOnly,
1293
- runtime_only: runtimeOnly,
1294
- command_scoped: selectedCommand !== undefined,
1371
+ action: selection.selectedAction ?? null,
1372
+ command: selection.selectedCommand ?? null,
1373
+ schema_only: selection.schemaOnly,
1374
+ flags_only: selection.flagsOnly,
1375
+ availability_only: selection.availabilityOnly,
1376
+ runtime_only: selection.runtimeOnly,
1377
+ command_scoped: selection.selectedCommand !== undefined,
1295
1378
  },
1296
1379
  commands: outputCommands,
1380
+ ...(!selection.flagsOnly
1381
+ ? {
1382
+ actions: actionContext.actions,
1383
+ action_availability: actionContext.actionAvailability,
1384
+ }
1385
+ : {}),
1297
1386
  };
1298
- if (includeRuntimeContractSections) {
1299
- result.runtime_schema = {
1300
- statuses: statusRegistry.definitions.map((definition) => definition.id),
1301
- open_status: statusRegistry.open_status,
1302
- close_status: statusRegistry.close_status,
1303
- canceled_status: statusRegistry.canceled_status,
1304
- types: [...typeRegistry.types],
1305
- fields_by_command: Object.fromEntries([...runtimeFieldRegistry.command_to_fields.entries()].map(([command, definitions]) => [
1306
- command,
1307
- [
1308
- ...new Set(definitions.map((definition) => `--${definition.cli_flag}`)),
1309
- ].sort((left, right) => left.localeCompare(right)),
1310
- ])),
1311
- };
1312
- result.extension_contracts = {
1313
- capabilities: [...PM_EXTENSION_CAPABILITY_CONTRACTS],
1314
- services: [...PM_EXTENSION_SERVICE_NAME_CONTRACTS],
1315
- policy_modes: [...PM_EXTENSION_POLICY_MODE_CONTRACTS],
1316
- policy_surfaces: [...PM_EXTENSION_POLICY_SURFACE_CONTRACTS],
1317
- trust_modes: [...PM_EXTENSION_TRUST_MODE_CONTRACTS],
1318
- sandbox_profiles: [...PM_EXTENSION_SANDBOX_PROFILE_CONTRACTS],
1319
- manifest_versions: [1, 2],
1320
- compatibility: {
1321
- current: "v2",
1322
- previous: ["v1"],
1323
- breaking_strategy: "versioned_breaking",
1324
- },
1325
- };
1326
- }
1327
- if (!flagsOnly) {
1328
- result.actions = actions;
1329
- result.action_availability = actionAvailability;
1387
+ }
1388
+ function attachRuntimeContractsResult(result, runtime) {
1389
+ result.runtime_schema = {
1390
+ statuses: runtime.statusRegistry.definitions.map((definition) => definition.id),
1391
+ open_status: runtime.statusRegistry.open_status,
1392
+ close_status: runtime.statusRegistry.close_status,
1393
+ canceled_status: runtime.statusRegistry.canceled_status,
1394
+ types: [...runtime.typeRegistry.types],
1395
+ fields_by_command: Object.fromEntries([...runtime.runtimeFieldRegistry.command_to_fields.entries()].map(([command, definitions]) => [
1396
+ command,
1397
+ [...new Set(definitions.map((definition) => `--${definition.cli_flag}`))].sort((left, right) => left.localeCompare(right)),
1398
+ ])),
1399
+ };
1400
+ result.extension_contracts = {
1401
+ capabilities: [...PM_EXTENSION_CAPABILITY_CONTRACTS],
1402
+ services: [...PM_EXTENSION_SERVICE_NAME_CONTRACTS],
1403
+ policy_modes: [...PM_EXTENSION_POLICY_MODE_CONTRACTS],
1404
+ policy_surfaces: [...PM_EXTENSION_POLICY_SURFACE_CONTRACTS],
1405
+ trust_modes: [...PM_EXTENSION_TRUST_MODE_CONTRACTS],
1406
+ sandbox_profiles: [...PM_EXTENSION_SANDBOX_PROFILE_CONTRACTS],
1407
+ manifest_versions: [1, 2],
1408
+ compatibility: {
1409
+ current: "v2",
1410
+ previous: ["v1"],
1411
+ breaking_strategy: "versioned_breaking",
1412
+ },
1413
+ };
1414
+ }
1415
+ function attachSchemaContractsResult(result, selection, schemaContext, extensionCommandContracts) {
1416
+ if (selection.flagsOnly || selection.availabilityOnly) {
1417
+ return;
1330
1418
  }
1331
- if (includeSchemaSurface && !omitUnfilteredSchema) {
1332
- result.schema = filteredSchema;
1419
+ if (!selection.omitUnfilteredSchema) {
1420
+ result.schema = schemaContext.filteredSchema;
1333
1421
  result.extension_commands = extensionCommandContracts;
1422
+ return;
1334
1423
  }
1335
- else if (includeSchemaSurface && omitUnfilteredSchema) {
1336
- result.schema_omitted_reason = "unfiltered_default_brief";
1337
- result.extension_commands = extensionCommandContracts;
1424
+ result.schema_omitted_reason = "unfiltered_default_brief";
1425
+ result.extension_commands = extensionCommandContracts;
1426
+ }
1427
+ function attachFlagContractsResult(result, selection, runtime, outputCommands, commandAliases) {
1428
+ if (selection.schemaOnly || selection.availabilityOnly) {
1429
+ return;
1338
1430
  }
1339
- if (!schemaOnly && !availabilityOnly) {
1340
- if (!omitUnfilteredCommandFlags) {
1341
- result.command_flags = buildCommandFlagSurface(outputCommands, extensionFlagMap, runtimeFieldFlagMap);
1342
- }
1343
- else {
1344
- result.command_flags_omitted_reason = "unfiltered_default_brief";
1345
- }
1346
- if (commandAliases.length > 0) {
1347
- result.command_aliases = commandAliases;
1348
- }
1431
+ if (!selection.omitUnfilteredCommandFlags) {
1432
+ result.command_flags = buildCommandFlagSurface(outputCommands, runtime.extensionFlagMap, runtime.runtimeFieldFlagMap);
1349
1433
  }
1350
- if (!schemaOnly && !flagsOnly && !availabilityOnly) {
1351
- if (!omitUnfilteredCommanderAliases) {
1352
- result.commander_aliases = buildCommanderAliasSurface();
1353
- }
1354
- else {
1355
- result.commander_aliases_omitted_reason = "unfiltered_default_brief";
1356
- }
1434
+ else {
1435
+ result.command_flags_omitted_reason = "unfiltered_default_brief";
1436
+ }
1437
+ if (commandAliases.length > 0) {
1438
+ result.command_aliases = commandAliases;
1439
+ }
1440
+ }
1441
+ function attachCommanderAliasContractsResult(result, selection) {
1442
+ if (selection.schemaOnly || selection.flagsOnly || selection.availabilityOnly) {
1443
+ return;
1357
1444
  }
1445
+ if (!selection.omitUnfilteredCommanderAliases) {
1446
+ result.commander_aliases = buildCommanderAliasSurface();
1447
+ return;
1448
+ }
1449
+ result.commander_aliases_omitted_reason = "unfiltered_default_brief";
1450
+ }
1451
+ /**
1452
+ * Implements run contracts for the public runtime surface of this module.
1453
+ */
1454
+ export async function runContracts(options, global) {
1455
+ const selection = resolveContractsSelection(options);
1456
+ assertSingleContractsProjection(selection);
1457
+ const pmRoot = resolvePmRoot(process.cwd(), global.path);
1458
+ const runtime = await resolveContractsRuntimeContext(global, pmRoot);
1459
+ const actionContext = resolveContractsActionContext(selection, runtime);
1460
+ const schemaContext = resolveContractsSchemaContext(selection, runtime, actionContext);
1461
+ const commands = resolveContractsCommands(selection, actionContext);
1462
+ const outputCommands = resolveOutputCommands(selection, commands);
1463
+ const commandAliases = buildCommandAliasSurface(commands);
1464
+ const extensionCommandContracts = resolveExtensionCommandContracts(selection, runtime, outputCommands);
1465
+ const result = createContractsResult(selection, schemaContext, actionContext, outputCommands);
1466
+ if (!(selection.flagsOnly && !selection.fullOutput)) {
1467
+ attachRuntimeContractsResult(result, runtime);
1468
+ }
1469
+ attachSchemaContractsResult(result, selection, schemaContext, extensionCommandContracts);
1470
+ attachFlagContractsResult(result, selection, runtime, outputCommands, commandAliases);
1471
+ attachCommanderAliasContractsResult(result, selection);
1358
1472
  // pm-4os2: snapshot the static MCP tool surface in the full projection so
1359
1473
  // `pnpm contracts:check` (CI static gate) fails on unintended inputSchema
1360
1474
  // drift in src/mcp/tool-definitions.ts.
1361
- if (fullOutput && !schemaOnly && !flagsOnly && !availabilityOnly) {
1475
+ if (selection.fullOutput && !selection.schemaOnly && !selection.flagsOnly && !selection.availabilityOnly) {
1362
1476
  result.mcp_tools = buildMcpToolContracts();
1363
1477
  }
1364
1478
  return result;
@@ -1390,4 +1504,4 @@ export const _testOnlyContractsCommand = {
1390
1504
  toRuntimeShortFlagToken,
1391
1505
  };
1392
1506
  //# sourceMappingURL=contracts.js.map
1393
- //# debugId=98b192d1-a27b-513e-8089-5626e03f2be1
1507
+ //# debugId=24d15738-45bd-5dd2-95e1-699f9c6061bd