@unbrained/pm-cli 2026.7.5 → 2026.7.7

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 (597) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/cli/commands/annotation-command.d.ts +1 -0
  3. package/dist/cli/commands/annotation-command.js +29 -2
  4. package/dist/cli/commands/annotation-command.js.map +1 -1
  5. package/dist/cli/commands/comments.js +3 -4
  6. package/dist/cli/commands/comments.js.map +1 -1
  7. package/dist/cli/commands/extension/bundled-catalog.d.ts +3 -0
  8. package/dist/cli/commands/extension/bundled-catalog.js +38 -28
  9. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  10. package/dist/cli/commands/extension/install-sources.js +81 -18
  11. package/dist/cli/commands/extension/install-sources.js.map +1 -1
  12. package/dist/cli/commands/health.js +9 -5
  13. package/dist/cli/commands/health.js.map +1 -1
  14. package/dist/cli/commands/learnings.js +5 -3
  15. package/dist/cli/commands/learnings.js.map +1 -1
  16. package/dist/cli/commands/notes.js +5 -3
  17. package/dist/cli/commands/notes.js.map +1 -1
  18. package/dist/cli/commands/reindex.js +4 -3
  19. package/dist/cli/commands/reindex.js.map +1 -1
  20. package/dist/cli/commands/search.js +3 -3
  21. package/dist/cli/commands/search.js.map +1 -1
  22. package/dist/cli/commands/test.d.ts +9 -0
  23. package/dist/cli/commands/test.js +144 -105
  24. package/dist/cli/commands/test.js.map +1 -1
  25. package/dist/cli/extension-command-help.js +10 -2
  26. package/dist/cli/extension-command-help.js.map +1 -1
  27. package/dist/cli/register-list-query.d.ts +1 -1
  28. package/dist/cli/register-list-query.js +18 -27
  29. package/dist/cli/register-list-query.js.map +1 -1
  30. package/dist/cli/register-operations.d.ts +0 -8
  31. package/dist/cli/register-operations.js +41 -46
  32. package/dist/cli/register-operations.js.map +1 -1
  33. package/dist/cli/register-setup.js +113 -13
  34. package/dist/cli/register-setup.js.map +1 -1
  35. package/dist/cli/registration-helpers.d.ts +5 -1
  36. package/dist/cli/registration-helpers.js +14 -2
  37. package/dist/cli/registration-helpers.js.map +1 -1
  38. package/dist/cli-bundle/chunks/append-F7WPGIQL.js +11 -0
  39. package/dist/cli-bundle/chunks/{contracts-OJEXMKVW.js → append-PVCTBVJG.js} +8 -9
  40. package/dist/cli-bundle/chunks/{chunk-PPE4YUQM.js → chunk-2APXX4TZ.js} +17 -28
  41. package/dist/cli-bundle/chunks/chunk-2APXX4TZ.js.map +1 -0
  42. package/dist/cli-bundle/chunks/{docs-S6UTOTO5.js → chunk-2LEJGRQ7.js} +3 -12
  43. package/dist/cli-bundle/chunks/{docs-S6UTOTO5.js.map → chunk-2LEJGRQ7.js.map} +1 -1
  44. package/dist/cli-bundle/chunks/{chunk-T3ABIMGW.js → chunk-2TILG6F2.js} +3 -3
  45. package/dist/cli-bundle/chunks/{chunk-S5AYOUT5.js → chunk-3G6UMXT3.js} +6 -8
  46. package/dist/cli-bundle/chunks/{chunk-S5AYOUT5.js.map → chunk-3G6UMXT3.js.map} +1 -1
  47. package/dist/cli-bundle/chunks/{chunk-RCT3YJOK.js → chunk-3TYOW6RR.js} +8 -8
  48. package/dist/cli-bundle/chunks/{chunk-3JZNEQBA.js → chunk-3X542TEY.js} +7 -7
  49. package/dist/cli-bundle/chunks/{history-repair-EVTO6LIH.js → chunk-42LXP4VO.js} +14 -21
  50. package/dist/cli-bundle/chunks/{history-repair-EVTO6LIH.js.map → chunk-42LXP4VO.js.map} +1 -1
  51. package/dist/cli-bundle/chunks/{chunk-5J2XPTAD.js → chunk-43SIHQND.js} +36 -15
  52. package/dist/cli-bundle/chunks/chunk-43SIHQND.js.map +7 -0
  53. package/dist/cli-bundle/chunks/{history-repair-4N6SDVHK.js → chunk-43UQN754.js} +12 -19
  54. package/dist/cli-bundle/chunks/{history-repair-4N6SDVHK.js.map → chunk-43UQN754.js.map} +1 -1
  55. package/dist/cli-bundle/chunks/{chunk-OWTIRHX4.js → chunk-43YSKY75.js} +4 -6
  56. package/dist/cli-bundle/chunks/{chunk-OWTIRHX4.js.map → chunk-43YSKY75.js.map} +1 -1
  57. package/dist/cli-bundle/chunks/{notes-72YXN5JX.js → chunk-4BKDAEDF.js} +6 -13
  58. package/dist/cli-bundle/chunks/{notes-72YXN5JX.js.map → chunk-4BKDAEDF.js.map} +2 -2
  59. package/dist/cli-bundle/chunks/{close-many-AP4MWU36.js → chunk-4IQKDKGE.js} +18 -32
  60. package/dist/cli-bundle/chunks/{close-many-AP4MWU36.js.map → chunk-4IQKDKGE.js.map} +1 -1
  61. package/dist/cli-bundle/chunks/{chunk-ZCJAA3JK.js → chunk-4MZOKTI2.js} +6 -8
  62. package/dist/cli-bundle/chunks/{chunk-ZCJAA3JK.js.map → chunk-4MZOKTI2.js.map} +1 -1
  63. package/dist/cli-bundle/chunks/{chunk-IJ6CO3JV.js → chunk-52NS7JDP.js} +14 -20
  64. package/dist/cli-bundle/chunks/{chunk-IJ6CO3JV.js.map → chunk-52NS7JDP.js.map} +1 -1
  65. package/dist/cli-bundle/chunks/{chunk-T3F4DF23.js → chunk-565WYS5W.js} +12 -16
  66. package/dist/cli-bundle/chunks/{chunk-T3F4DF23.js.map → chunk-565WYS5W.js.map} +1 -1
  67. package/dist/cli-bundle/chunks/{copy-OTJOWFL6.js → chunk-5FIQ4EX3.js} +13 -19
  68. package/dist/cli-bundle/chunks/{copy-OTJOWFL6.js.map → chunk-5FIQ4EX3.js.map} +1 -1
  69. package/dist/cli-bundle/chunks/{config-V57QD47V.js → chunk-6G6O3OPQ.js} +259 -41
  70. package/dist/cli-bundle/chunks/chunk-6G6O3OPQ.js.map +1 -0
  71. package/dist/cli-bundle/chunks/{chunk-K3AGVXSF.js → chunk-6LCJRGPD.js} +9 -13
  72. package/dist/cli-bundle/chunks/{chunk-K3AGVXSF.js.map → chunk-6LCJRGPD.js.map} +1 -1
  73. package/dist/cli-bundle/chunks/{chunk-7MDXZAZS.js → chunk-6UQCNWFV.js} +6 -8
  74. package/dist/cli-bundle/chunks/{chunk-7MDXZAZS.js.map → chunk-6UQCNWFV.js.map} +1 -1
  75. package/dist/cli-bundle/chunks/{chunk-LEKT4K7I.js → chunk-6XTSYPPO.js} +1216 -387
  76. package/dist/cli-bundle/chunks/chunk-6XTSYPPO.js.map +7 -0
  77. package/dist/cli-bundle/chunks/chunk-7ML7JONU.js +5434 -0
  78. package/dist/cli-bundle/chunks/chunk-7ML7JONU.js.map +1 -0
  79. package/dist/cli-bundle/chunks/{chunk-TSPKZRRW.js → chunk-7PNQA24K.js} +30 -36
  80. package/dist/cli-bundle/chunks/{chunk-TSPKZRRW.js.map → chunk-7PNQA24K.js.map} +1 -1
  81. package/dist/cli-bundle/chunks/{chunk-YOF5VPKM.js → chunk-7VQ3JJN5.js} +2 -2
  82. package/dist/cli-bundle/chunks/{chunk-BFVHCAOO.js → chunk-7Y5N34HX.js} +8 -12
  83. package/dist/cli-bundle/chunks/{chunk-BFVHCAOO.js.map → chunk-7Y5N34HX.js.map} +1 -1
  84. package/dist/cli-bundle/chunks/{chunk-P5TFTLWW.js → chunk-AGAVEDIE.js} +7 -7
  85. package/dist/cli-bundle/chunks/{chunk-YFIE7YK6.js → chunk-AJUON7E6.js} +3 -3
  86. package/dist/cli-bundle/chunks/{close-many-OMZIGZB4.js → chunk-ARKHKYYS.js} +16 -30
  87. package/dist/cli-bundle/chunks/{close-many-OMZIGZB4.js.map → chunk-ARKHKYYS.js.map} +1 -1
  88. package/dist/cli-bundle/chunks/{chunk-7EQNAZX2.js → chunk-C5ACVMOI.js} +99 -51
  89. package/dist/cli-bundle/chunks/chunk-C5ACVMOI.js.map +7 -0
  90. package/dist/cli-bundle/chunks/{chunk-PJ3A56YF.js → chunk-CJQM7O7R.js} +16 -20
  91. package/dist/cli-bundle/chunks/{chunk-PJ3A56YF.js.map → chunk-CJQM7O7R.js.map} +1 -1
  92. package/dist/cli-bundle/chunks/{chunk-WISPVC2E.js → chunk-D2DCTFTL.js} +7 -9
  93. package/dist/cli-bundle/chunks/{chunk-WISPVC2E.js.map → chunk-D2DCTFTL.js.map} +1 -1
  94. package/dist/cli-bundle/chunks/{append-CZGUZ45Q.js → chunk-DDDWVPID.js} +7 -11
  95. package/dist/cli-bundle/chunks/{append-CZGUZ45Q.js.map → chunk-DDDWVPID.js.map} +1 -1
  96. package/dist/cli-bundle/chunks/{learnings-2HTPZNGZ.js → chunk-DG6BSXZ7.js} +6 -13
  97. package/dist/cli-bundle/chunks/{learnings-2HTPZNGZ.js.map → chunk-DG6BSXZ7.js.map} +2 -2
  98. package/dist/cli-bundle/chunks/{chunk-7WYXBPYQ.js → chunk-DR2V5OIV.js} +3 -3
  99. package/dist/cli-bundle/chunks/{chunk-YQMMMONE.js → chunk-E3LWJUGF.js} +4 -6
  100. package/dist/cli-bundle/chunks/{chunk-YQMMMONE.js.map → chunk-E3LWJUGF.js.map} +1 -1
  101. package/dist/cli-bundle/chunks/{chunk-D3UCE7RW.js → chunk-E3YQFSFE.js} +6 -10
  102. package/dist/cli-bundle/chunks/{chunk-D3UCE7RW.js.map → chunk-E3YQFSFE.js.map} +1 -1
  103. package/dist/cli-bundle/chunks/{chunk-PDXT6Q55.js → chunk-EDO7VXSO.js} +2 -2
  104. package/dist/cli-bundle/chunks/{chunk-FDBARR33.js → chunk-EIUBK2LT.js} +12 -18
  105. package/dist/cli-bundle/chunks/{chunk-FDBARR33.js.map → chunk-EIUBK2LT.js.map} +1 -1
  106. package/dist/cli-bundle/chunks/{chunk-HBYZDSK5.js → chunk-EMXPI36L.js} +14 -20
  107. package/dist/cli-bundle/chunks/{chunk-HBYZDSK5.js.map → chunk-EMXPI36L.js.map} +1 -1
  108. package/dist/cli-bundle/chunks/{chunk-4OFLJHX6.js → chunk-EOUVR7JN.js} +13 -8
  109. package/dist/cli-bundle/chunks/chunk-EOUVR7JN.js.map +1 -0
  110. package/dist/cli-bundle/chunks/{chunk-FUM6UMY4.js → chunk-EVEPHNXJ.js} +4 -4
  111. package/dist/cli-bundle/chunks/{deps-L2FPIAD3.js → chunk-F6MT7KKE.js} +6 -10
  112. package/dist/cli-bundle/chunks/{deps-L2FPIAD3.js.map → chunk-F6MT7KKE.js.map} +1 -1
  113. package/dist/cli-bundle/chunks/{chunk-FGQKEDE4.js → chunk-F6YC2A6X.js} +7 -11
  114. package/dist/cli-bundle/chunks/{chunk-FGQKEDE4.js.map → chunk-F6YC2A6X.js.map} +1 -1
  115. package/dist/cli-bundle/chunks/chunk-FILL6BB2.js +5514 -0
  116. package/dist/cli-bundle/chunks/chunk-FILL6BB2.js.map +7 -0
  117. package/dist/cli-bundle/chunks/{chunk-RX3HQSYG.js → chunk-FN6SB4HU.js} +2 -2
  118. package/dist/cli-bundle/chunks/chunk-GH73UOSJ.js +5359 -0
  119. package/dist/cli-bundle/chunks/chunk-GH73UOSJ.js.map +1 -0
  120. package/dist/cli-bundle/chunks/{chunk-JLA7EVYV.js → chunk-GLS6VMWI.js} +37 -16
  121. package/dist/cli-bundle/chunks/chunk-GLS6VMWI.js.map +1 -0
  122. package/dist/cli-bundle/chunks/{files-JPU3FNJ7.js → chunk-GPIDUMMN.js} +10 -17
  123. package/dist/cli-bundle/chunks/{files-JPU3FNJ7.js.map → chunk-GPIDUMMN.js.map} +1 -1
  124. package/dist/cli-bundle/chunks/{history-compact-3F6VELO7.js → chunk-GTM5HQL4.js} +15 -21
  125. package/dist/cli-bundle/chunks/{history-compact-3F6VELO7.js.map → chunk-GTM5HQL4.js.map} +1 -1
  126. package/dist/cli-bundle/chunks/{chunk-DLQ4ZTCU.js → chunk-H2SMKL2N.js} +8 -8
  127. package/dist/cli-bundle/chunks/{chunk-S4APD35C.js → chunk-HHEWQXPD.js} +6 -6
  128. package/dist/cli-bundle/chunks/chunk-HHEWQXPD.js.map +7 -0
  129. package/dist/cli-bundle/chunks/{chunk-C3PMDWGX.js → chunk-HX6QXV5P.js} +2 -2
  130. package/dist/cli-bundle/chunks/{copy-LEE6P6EM.js → chunk-I74FMIWA.js} +11 -17
  131. package/dist/cli-bundle/chunks/{copy-LEE6P6EM.js.map → chunk-I74FMIWA.js.map} +1 -1
  132. package/dist/cli-bundle/chunks/chunk-IDIBF4E2.js +804 -0
  133. package/dist/cli-bundle/chunks/chunk-IDIBF4E2.js.map +7 -0
  134. package/dist/cli-bundle/chunks/{comments-SAG5LSKL.js → chunk-II7R6KD4.js} +9 -13
  135. package/dist/cli-bundle/chunks/{comments-SAG5LSKL.js.map → chunk-II7R6KD4.js.map} +1 -1
  136. package/dist/cli-bundle/chunks/chunk-J2VGADNG.js +10320 -0
  137. package/dist/cli-bundle/chunks/chunk-J2VGADNG.js.map +1 -0
  138. package/dist/cli-bundle/chunks/{chunk-Y76TWC45.js → chunk-J7BOLHAV.js} +5 -7
  139. package/dist/cli-bundle/chunks/{chunk-Y76TWC45.js.map → chunk-J7BOLHAV.js.map} +1 -1
  140. package/dist/cli-bundle/chunks/{chunk-QHZO65XW.js → chunk-KTGJ2CBU.js} +4 -6
  141. package/dist/cli-bundle/chunks/{chunk-QHZO65XW.js.map → chunk-KTGJ2CBU.js.map} +1 -1
  142. package/dist/cli-bundle/chunks/{chunk-5VVUKE3U.js → chunk-LCFJ7XAM.js} +32 -2
  143. package/dist/cli-bundle/chunks/{chunk-5VVUKE3U.js.map → chunk-LCFJ7XAM.js.map} +3 -3
  144. package/dist/cli-bundle/chunks/{chunk-YMABYTNG.js → chunk-LZQU6XJG.js} +28 -34
  145. package/dist/cli-bundle/chunks/{chunk-YMABYTNG.js.map → chunk-LZQU6XJG.js.map} +1 -1
  146. package/dist/cli-bundle/chunks/{chunk-3Y4OESPP.js → chunk-M62RO3XK.js} +10 -14
  147. package/dist/cli-bundle/chunks/{chunk-3Y4OESPP.js.map → chunk-M62RO3XK.js.map} +1 -1
  148. package/dist/cli-bundle/chunks/{chunk-YPPVU5GX.js → chunk-MCEUKJKW.js} +9 -11
  149. package/dist/cli-bundle/chunks/{chunk-YPPVU5GX.js.map → chunk-MCEUKJKW.js.map} +1 -1
  150. package/dist/cli-bundle/chunks/{chunk-T5Y3QSNF.js → chunk-MHNMCDWR.js} +1447 -86
  151. package/dist/cli-bundle/chunks/chunk-MHNMCDWR.js.map +1 -0
  152. package/dist/cli-bundle/chunks/{chunk-HJE4JTKQ.js → chunk-MRFWUSVA.js} +4 -6
  153. package/dist/cli-bundle/chunks/{chunk-HJE4JTKQ.js.map → chunk-MRFWUSVA.js.map} +1 -1
  154. package/dist/cli-bundle/chunks/{chunk-P3VRG72Q.js → chunk-N6ZHDLUY.js} +6 -8
  155. package/dist/cli-bundle/chunks/{chunk-P3VRG72Q.js.map → chunk-N6ZHDLUY.js.map} +1 -1
  156. package/dist/cli-bundle/chunks/{delete-HQKGRNRZ.js → chunk-NWWL22C7.js} +8 -12
  157. package/dist/cli-bundle/chunks/{delete-HQKGRNRZ.js.map → chunk-NWWL22C7.js.map} +1 -1
  158. package/dist/cli-bundle/chunks/{chunk-N6DNM2FA.js → chunk-P3MJJW7P.js} +2 -2
  159. package/dist/cli-bundle/chunks/{chunk-5JE6SMYS.js → chunk-PDXJXEZJ.js} +2 -2
  160. package/dist/cli-bundle/chunks/{append-NSQBCXZJ.js → chunk-Q64AYQYW.js} +9 -13
  161. package/dist/cli-bundle/chunks/{append-NSQBCXZJ.js.map → chunk-Q64AYQYW.js.map} +1 -1
  162. package/dist/cli-bundle/chunks/{update-many-SLLAMHT7.js → chunk-QDABF2RB.js} +26 -47
  163. package/dist/cli-bundle/chunks/{update-many-SLLAMHT7.js.map → chunk-QDABF2RB.js.map} +1 -1
  164. package/dist/cli-bundle/chunks/{chunk-NBFCNJ7Q.js → chunk-QFBSP3NI.js} +529 -46
  165. package/dist/cli-bundle/chunks/chunk-QFBSP3NI.js.map +1 -0
  166. package/dist/cli-bundle/chunks/{focus-LFZ6IDBR.js → chunk-RB3KLPAH.js} +11 -16
  167. package/dist/cli-bundle/chunks/{focus-LFZ6IDBR.js.map → chunk-RB3KLPAH.js.map} +1 -1
  168. package/dist/cli-bundle/chunks/{chunk-YSAH5FY5.js → chunk-RY7PTTUB.js} +94 -53
  169. package/dist/cli-bundle/chunks/chunk-RY7PTTUB.js.map +1 -0
  170. package/dist/cli-bundle/chunks/{chunk-WVSGSZ6J.js → chunk-S547WBYG.js} +1477 -86
  171. package/dist/cli-bundle/chunks/chunk-S547WBYG.js.map +7 -0
  172. package/dist/cli-bundle/chunks/{update-many-DC7X3EWM.js → chunk-S5BNGFN5.js} +24 -45
  173. package/dist/cli-bundle/chunks/{update-many-DC7X3EWM.js.map → chunk-S5BNGFN5.js.map} +1 -1
  174. package/dist/cli-bundle/chunks/{focus-WNMYCVYA.js → chunk-S6VC2A2K.js} +9 -14
  175. package/dist/cli-bundle/chunks/{focus-WNMYCVYA.js.map → chunk-S6VC2A2K.js.map} +1 -1
  176. package/dist/cli-bundle/chunks/{learnings-YBIHY3D6.js → chunk-SIM5JDON.js} +7 -14
  177. package/dist/cli-bundle/chunks/{learnings-YBIHY3D6.js.map → chunk-SIM5JDON.js.map} +1 -1
  178. package/dist/cli-bundle/chunks/{chunk-ZD34OFFQ.js → chunk-SY75LYXR.js} +12 -7
  179. package/dist/cli-bundle/chunks/chunk-SY75LYXR.js.map +7 -0
  180. package/dist/cli-bundle/chunks/{chunk-TT42JUMF.js → chunk-TEISGNSH.js} +7 -7
  181. package/dist/cli-bundle/chunks/chunk-TEISGNSH.js.map +1 -0
  182. package/dist/cli-bundle/chunks/{chunk-AAEQMOC6.js → chunk-TEKZOS7M.js} +2 -2
  183. package/dist/cli-bundle/chunks/{chunk-4QQ6PM7M.js → chunk-TGUK6XN6.js} +14 -18
  184. package/dist/cli-bundle/chunks/{chunk-4QQ6PM7M.js.map → chunk-TGUK6XN6.js.map} +1 -1
  185. package/dist/cli-bundle/chunks/{plan-R4NDQ27E.js → chunk-TNC6MZUD.js} +10 -21
  186. package/dist/cli-bundle/chunks/{plan-R4NDQ27E.js.map → chunk-TNC6MZUD.js.map} +1 -1
  187. package/dist/cli-bundle/chunks/chunk-TZLYO4PP.js +10498 -0
  188. package/dist/cli-bundle/chunks/chunk-TZLYO4PP.js.map +7 -0
  189. package/dist/cli-bundle/chunks/{chunk-YD5FML7K.js → chunk-UO7XAZK6.js} +27 -4
  190. package/dist/cli-bundle/chunks/chunk-UO7XAZK6.js.map +1 -0
  191. package/dist/cli-bundle/chunks/{docs-6CRCSVKK.js → chunk-V5ZWKJNY.js} +5 -14
  192. package/dist/cli-bundle/chunks/{docs-6CRCSVKK.js.map → chunk-V5ZWKJNY.js.map} +1 -1
  193. package/dist/cli-bundle/chunks/{notes-NJ7IQJX4.js → chunk-VGO73OCK.js} +7 -14
  194. package/dist/cli-bundle/chunks/{notes-NJ7IQJX4.js.map → chunk-VGO73OCK.js.map} +1 -1
  195. package/dist/cli-bundle/chunks/{chunk-NER3KUUS.js → chunk-VLEA2UTQ.js} +2 -2
  196. package/dist/cli-bundle/chunks/{files-6P57MRKL.js → chunk-W5HXHC7C.js} +8 -15
  197. package/dist/cli-bundle/chunks/{files-6P57MRKL.js.map → chunk-W5HXHC7C.js.map} +1 -1
  198. package/dist/cli-bundle/chunks/{chunk-ZMD35NYG.js → chunk-WCWVEXGA.js} +2 -2
  199. package/dist/cli-bundle/chunks/chunk-X47MKQXU.js +6690 -0
  200. package/dist/cli-bundle/chunks/chunk-X47MKQXU.js.map +7 -0
  201. package/dist/cli-bundle/chunks/{delete-62JQTYT4.js → chunk-XBX5CBRQ.js} +6 -10
  202. package/dist/cli-bundle/chunks/{delete-62JQTYT4.js.map → chunk-XBX5CBRQ.js.map} +1 -1
  203. package/dist/cli-bundle/chunks/{chunk-MTTXDAK4.js → chunk-XC3X7BQR.js} +541 -44
  204. package/dist/cli-bundle/chunks/chunk-XC3X7BQR.js.map +7 -0
  205. package/dist/cli-bundle/chunks/{history-compact-656Y2TN4.js → chunk-XHCVAZGM.js} +17 -23
  206. package/dist/cli-bundle/chunks/{history-compact-656Y2TN4.js.map → chunk-XHCVAZGM.js.map} +1 -1
  207. package/dist/cli-bundle/chunks/{chunk-ZAHXPXVY.js → chunk-XPMXPR7K.js} +7 -9
  208. package/dist/cli-bundle/chunks/{chunk-ZAHXPXVY.js.map → chunk-XPMXPR7K.js.map} +1 -1
  209. package/dist/cli-bundle/chunks/{deps-55FTG6Z5.js → chunk-XS2TMNXR.js} +8 -12
  210. package/dist/cli-bundle/chunks/{deps-55FTG6Z5.js.map → chunk-XS2TMNXR.js.map} +1 -1
  211. package/dist/cli-bundle/chunks/{plan-XWY5T67S.js → chunk-XXIYUTLK.js} +12 -23
  212. package/dist/cli-bundle/chunks/{plan-XWY5T67S.js.map → chunk-XXIYUTLK.js.map} +1 -1
  213. package/dist/cli-bundle/chunks/{chunk-7QH7DHUB.js → chunk-XZWL7VNE.js} +1220 -398
  214. package/dist/cli-bundle/chunks/chunk-XZWL7VNE.js.map +1 -0
  215. package/dist/cli-bundle/chunks/chunk-Y5IKRUEM.js +6624 -0
  216. package/dist/cli-bundle/chunks/chunk-Y5IKRUEM.js.map +1 -0
  217. package/dist/cli-bundle/chunks/{chunk-ABRA3BHY.js → chunk-Y7KYVCZM.js} +12 -18
  218. package/dist/cli-bundle/chunks/{chunk-ABRA3BHY.js.map → chunk-Y7KYVCZM.js.map} +1 -1
  219. package/dist/cli-bundle/chunks/{chunk-UI5BJ6DO.js → chunk-YCVWWIKY.js} +17 -28
  220. package/dist/cli-bundle/chunks/chunk-YCVWWIKY.js.map +7 -0
  221. package/dist/cli-bundle/chunks/chunk-YH5NBDFA.js +780 -0
  222. package/dist/cli-bundle/chunks/chunk-YH5NBDFA.js.map +1 -0
  223. package/dist/cli-bundle/chunks/chunk-YNCFP5AR.js +5509 -0
  224. package/dist/cli-bundle/chunks/chunk-YNCFP5AR.js.map +7 -0
  225. package/dist/cli-bundle/chunks/{comments-MIW5MZOX.js → chunk-YPD7SQ5P.js} +8 -12
  226. package/dist/cli-bundle/chunks/{comments-MIW5MZOX.js.map → chunk-YPD7SQ5P.js.map} +2 -2
  227. package/dist/cli-bundle/chunks/{chunk-T35XLYZF.js → chunk-YPMZMKN7.js} +2 -2
  228. package/dist/cli-bundle/chunks/{chunk-R3ZBLGTC.js → chunk-YTD5GICJ.js} +4 -4
  229. package/dist/cli-bundle/chunks/{config-DJJKZB5R.js → chunk-ZNEG2UDO.js} +264 -39
  230. package/dist/cli-bundle/chunks/{config-DJJKZB5R.js.map → chunk-ZNEG2UDO.js.map} +4 -4
  231. package/dist/cli-bundle/chunks/{chunk-EEY54JMF.js → chunk-ZO7CLOY2.js} +3 -3
  232. package/dist/cli-bundle/chunks/{close-3YRR3XY6.js → close-3YYQ5OG2.js} +5 -9
  233. package/dist/cli-bundle/chunks/close-Z3Q4U7TS.js +12 -0
  234. package/dist/cli-bundle/chunks/close-many-3L2RXH3M.js +22 -0
  235. package/dist/cli-bundle/chunks/close-many-D366FTIG.js +26 -0
  236. package/dist/cli-bundle/chunks/comments-54XDJNFE.js +17 -0
  237. package/dist/cli-bundle/chunks/comments-HGHC2PN6.js +13 -0
  238. package/dist/cli-bundle/chunks/copy-44RT5GDW.js +13 -0
  239. package/dist/cli-bundle/chunks/copy-UGMUGHZA.js +9 -0
  240. package/dist/cli-bundle/chunks/{create-XWWQFQ6S.js → create-4GWJWPXG.js} +9 -14
  241. package/dist/cli-bundle/chunks/create-AZXCUYKP.js +25 -0
  242. package/dist/cli-bundle/chunks/delete-Y6SXIQ4X.js +10 -0
  243. package/dist/cli-bundle/chunks/delete-YQ2VPXNF.js +14 -0
  244. package/dist/cli-bundle/chunks/deps-BU5EBJDU.js +17 -0
  245. package/dist/cli-bundle/chunks/deps-FMANWFRP.js +13 -0
  246. package/dist/cli-bundle/chunks/docs-OQBSJNIA.js +18 -0
  247. package/dist/cli-bundle/chunks/docs-VNPBZXEL.js +14 -0
  248. package/dist/cli-bundle/chunks/files-72HZEBOE.js +18 -0
  249. package/dist/cli-bundle/chunks/{activity-YKAKZTZ4.js → files-HTSB2KJG.js} +13 -13
  250. package/dist/cli-bundle/chunks/focus-FOG4ALC2.js +14 -0
  251. package/dist/cli-bundle/chunks/focus-SUTMKXGX.js +10 -0
  252. package/dist/cli-bundle/chunks/history-compact-M6IFAMBP.js +25 -0
  253. package/dist/cli-bundle/chunks/history-compact-NEXRPP2O.js +21 -0
  254. package/dist/cli-bundle/chunks/{history-redact-54ICFKXM.js → history-redact-NQX3OGZP.js} +7 -11
  255. package/dist/cli-bundle/chunks/history-redact-WQJBZ3PX.js +17 -0
  256. package/dist/cli-bundle/chunks/history-repair-CBHMHAJO.js +19 -0
  257. package/dist/cli-bundle/chunks/history-repair-NHOJG7WO.js +23 -0
  258. package/dist/cli-bundle/chunks/learnings-M64NTSOR.js +13 -0
  259. package/dist/cli-bundle/chunks/learnings-T63JGKKN.js +17 -0
  260. package/dist/cli-bundle/chunks/notes-73WE2UV2.js +13 -0
  261. package/dist/cli-bundle/chunks/notes-U7L6HQQ2.js +17 -0
  262. package/dist/cli-bundle/chunks/plan-OSCNYFGC.js +24 -0
  263. package/dist/cli-bundle/chunks/plan-OSCNYFGC.js.map +7 -0
  264. package/dist/cli-bundle/chunks/plan-TN537L24.js +28 -0
  265. package/dist/cli-bundle/chunks/plan-TN537L24.js.map +1 -0
  266. package/dist/cli-bundle/chunks/profile-MHAMXMHQ.js +37 -0
  267. package/dist/cli-bundle/chunks/profile-MHAMXMHQ.js.map +1 -0
  268. package/dist/cli-bundle/chunks/profile-TIGLAKJ7.js +33 -0
  269. package/dist/cli-bundle/chunks/profile-TIGLAKJ7.js.map +7 -0
  270. package/dist/cli-bundle/chunks/{register-list-query-5H66WFYF.js → register-list-query-OHXD7G5N.js} +41 -33
  271. package/dist/cli-bundle/chunks/register-list-query-OHXD7G5N.js.map +7 -0
  272. package/dist/cli-bundle/chunks/{register-list-query-FB3FNDLZ.js → register-list-query-ZCRABAPN.js} +42 -34
  273. package/dist/cli-bundle/chunks/register-list-query-ZCRABAPN.js.map +1 -0
  274. package/dist/cli-bundle/chunks/{register-mutation-UJO23C7R.js → register-mutation-P3G4XP6Q.js} +36 -41
  275. package/dist/cli-bundle/chunks/{register-mutation-UJO23C7R.js.map → register-mutation-P3G4XP6Q.js.map} +1 -1
  276. package/dist/cli-bundle/chunks/{register-mutation-Z2ETYHKS.js → register-mutation-XX4H56PE.js} +34 -39
  277. package/dist/cli-bundle/chunks/{register-mutation-Z2ETYHKS.js.map → register-mutation-XX4H56PE.js.map} +1 -1
  278. package/dist/cli-bundle/chunks/{register-operations-A3XAM5J7.js → register-operations-V6PIYEDU.js} +80 -52
  279. package/dist/cli-bundle/chunks/register-operations-V6PIYEDU.js.map +1 -0
  280. package/dist/cli-bundle/chunks/{register-operations-SG7HBSUP.js → register-operations-V6VKTG54.js} +79 -51
  281. package/dist/cli-bundle/chunks/register-operations-V6VKTG54.js.map +7 -0
  282. package/dist/cli-bundle/chunks/{register-setup-K6U3NVY5.js → register-setup-6RVAWT6W.js} +129 -31
  283. package/dist/cli-bundle/chunks/register-setup-6RVAWT6W.js.map +7 -0
  284. package/dist/cli-bundle/chunks/{register-setup-I45OGJUV.js → register-setup-6YVUSQYD.js} +130 -32
  285. package/dist/cli-bundle/chunks/register-setup-6YVUSQYD.js.map +1 -0
  286. package/dist/cli-bundle/chunks/{restore-YJ2ET6AT.js → restore-HC3YSWF7.js} +7 -11
  287. package/dist/cli-bundle/chunks/restore-HC3YSWF7.js.map +1 -0
  288. package/dist/cli-bundle/chunks/restore-LFAMMRYZ.js +15 -0
  289. package/dist/cli-bundle/chunks/restore-LFAMMRYZ.js.map +7 -0
  290. package/dist/cli-bundle/chunks/{schema-2PUXCZ25.js → schema-DAGSYO6E.js} +6 -10
  291. package/dist/cli-bundle/chunks/schema-DAGSYO6E.js.map +7 -0
  292. package/dist/cli-bundle/chunks/{schema-Y6DXXK2F.js → schema-UBXJCQAC.js} +6 -10
  293. package/dist/cli-bundle/chunks/schema-UBXJCQAC.js.map +1 -0
  294. package/dist/cli-bundle/chunks/update-CJGG5WMV.js +21 -0
  295. package/dist/cli-bundle/chunks/update-CJGG5WMV.js.map +7 -0
  296. package/dist/cli-bundle/chunks/update-LKD64AFP.js +25 -0
  297. package/dist/cli-bundle/chunks/update-LKD64AFP.js.map +1 -0
  298. package/dist/cli-bundle/chunks/update-many-G4SM7BHC.js +31 -0
  299. package/dist/cli-bundle/chunks/update-many-G4SM7BHC.js.map +7 -0
  300. package/dist/cli-bundle/chunks/update-many-VLIV3D7R.js +35 -0
  301. package/dist/cli-bundle/chunks/update-many-VLIV3D7R.js.map +1 -0
  302. package/dist/cli-bundle/main.js +29 -31
  303. package/dist/cli-bundle/main.js.map +2 -2
  304. package/dist/cli-bundle/sdk-runtime.js +136 -54
  305. package/dist/cli-bundle/sdk-testing.js +7 -8
  306. package/dist/cli-bundle/sdk.js +132 -84
  307. package/dist/cli-bundle/sdk.js.map +2 -2
  308. package/dist/core/history/drift-scan.js +3 -8
  309. package/dist/core/history/drift-scan.js.map +1 -1
  310. package/dist/core/output/mutation-projection.js +11 -5
  311. package/dist/core/output/mutation-projection.js.map +1 -1
  312. package/dist/core/search/cache.js +3 -3
  313. package/dist/core/search/cache.js.map +1 -1
  314. package/dist/core/search/semantic-defaults.d.ts +2 -0
  315. package/dist/core/search/semantic-defaults.js +11 -4
  316. package/dist/core/search/semantic-defaults.js.map +1 -1
  317. package/dist/core/search/vector-stores.d.ts +1 -1
  318. package/dist/core/search/vector-stores.js +33 -7
  319. package/dist/core/search/vector-stores.js.map +1 -1
  320. package/dist/mcp/server.d.ts +22 -50
  321. package/dist/mcp/server.js +62 -916
  322. package/dist/mcp/server.js.map +1 -1
  323. package/dist/sdk/cli-contracts/flag-contracts.js +7 -7
  324. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  325. package/dist/sdk/cli-contracts/tool-schema.js +9 -7
  326. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
  327. package/dist/sdk/index.d.ts +4 -2
  328. package/dist/sdk/index.js +4 -4
  329. package/dist/sdk/index.js.map +1 -1
  330. package/dist/sdk/runtime.d.ts +312 -5
  331. package/dist/sdk/runtime.js +1391 -26
  332. package/dist/sdk/runtime.js.map +1 -1
  333. package/dist/sdk/start-task-status.d.ts +13 -0
  334. package/dist/sdk/start-task-status.js +19 -0
  335. package/dist/sdk/start-task-status.js.map +1 -0
  336. package/dist/sdk/workspace-contracts-cache.d.ts +17 -0
  337. package/dist/sdk/workspace-contracts-cache.js +36 -0
  338. package/dist/sdk/workspace-contracts-cache.js.map +1 -0
  339. package/docs/COMMANDS.md +10 -1
  340. package/docs/RELEASING.md +3 -1
  341. package/docs/SDK.md +81 -0
  342. package/docs/TESTING.md +3 -0
  343. package/docs/examples/sdk-app-embedding/run-embedded-pm.mjs +16 -2
  344. package/docs/examples/sdk-contract-consumer/inspect-contracts.mjs +16 -1
  345. package/package.json +1 -1
  346. package/dist/cli-bundle/chunks/activity-4XQIDNM5.js +0 -18
  347. package/dist/cli-bundle/chunks/aggregate-EQX2RGB7.js +0 -375
  348. package/dist/cli-bundle/chunks/aggregate-EQX2RGB7.js.map +0 -7
  349. package/dist/cli-bundle/chunks/aggregate-PEGZGJXD.js +0 -372
  350. package/dist/cli-bundle/chunks/aggregate-PEGZGJXD.js.map +0 -1
  351. package/dist/cli-bundle/chunks/chunk-37E72CNS.js +0 -217
  352. package/dist/cli-bundle/chunks/chunk-37E72CNS.js.map +0 -1
  353. package/dist/cli-bundle/chunks/chunk-3PL6LEKP.js +0 -1961
  354. package/dist/cli-bundle/chunks/chunk-3PL6LEKP.js.map +0 -1
  355. package/dist/cli-bundle/chunks/chunk-3U3VEWK6.js +0 -1749
  356. package/dist/cli-bundle/chunks/chunk-3U3VEWK6.js.map +0 -7
  357. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +0 -87
  358. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +0 -7
  359. package/dist/cli-bundle/chunks/chunk-4LRVSBO6.js +0 -822
  360. package/dist/cli-bundle/chunks/chunk-4LRVSBO6.js.map +0 -7
  361. package/dist/cli-bundle/chunks/chunk-4OFLJHX6.js.map +0 -1
  362. package/dist/cli-bundle/chunks/chunk-53BTLLAF.js +0 -2181
  363. package/dist/cli-bundle/chunks/chunk-53BTLLAF.js.map +0 -1
  364. package/dist/cli-bundle/chunks/chunk-57C2RLW5.js +0 -1704
  365. package/dist/cli-bundle/chunks/chunk-57C2RLW5.js.map +0 -1
  366. package/dist/cli-bundle/chunks/chunk-5B3X4Y22.js +0 -2330
  367. package/dist/cli-bundle/chunks/chunk-5B3X4Y22.js.map +0 -7
  368. package/dist/cli-bundle/chunks/chunk-5J2XPTAD.js.map +0 -7
  369. package/dist/cli-bundle/chunks/chunk-5JZ7APJU.js +0 -995
  370. package/dist/cli-bundle/chunks/chunk-5JZ7APJU.js.map +0 -1
  371. package/dist/cli-bundle/chunks/chunk-75U6M5ZD.js +0 -819
  372. package/dist/cli-bundle/chunks/chunk-75U6M5ZD.js.map +0 -1
  373. package/dist/cli-bundle/chunks/chunk-7C2O74AE.js +0 -23
  374. package/dist/cli-bundle/chunks/chunk-7C2O74AE.js.map +0 -7
  375. package/dist/cli-bundle/chunks/chunk-7EQNAZX2.js.map +0 -7
  376. package/dist/cli-bundle/chunks/chunk-7QH7DHUB.js.map +0 -1
  377. package/dist/cli-bundle/chunks/chunk-BVEUCSH2.js +0 -530
  378. package/dist/cli-bundle/chunks/chunk-BVEUCSH2.js.map +0 -7
  379. package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js +0 -275
  380. package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js.map +0 -7
  381. package/dist/cli-bundle/chunks/chunk-DRBV5UC2.js +0 -231
  382. package/dist/cli-bundle/chunks/chunk-DRBV5UC2.js.map +0 -7
  383. package/dist/cli-bundle/chunks/chunk-E2FUG6GD.js +0 -2184
  384. package/dist/cli-bundle/chunks/chunk-E2FUG6GD.js.map +0 -7
  385. package/dist/cli-bundle/chunks/chunk-EZFKWSC7.js +0 -1615
  386. package/dist/cli-bundle/chunks/chunk-EZFKWSC7.js.map +0 -7
  387. package/dist/cli-bundle/chunks/chunk-FJRKQREY.js +0 -228
  388. package/dist/cli-bundle/chunks/chunk-FJRKQREY.js.map +0 -1
  389. package/dist/cli-bundle/chunks/chunk-GIWXVMZ3.js +0 -3237
  390. package/dist/cli-bundle/chunks/chunk-GIWXVMZ3.js.map +0 -7
  391. package/dist/cli-bundle/chunks/chunk-HK72NWAD.js +0 -1570
  392. package/dist/cli-bundle/chunks/chunk-HK72NWAD.js.map +0 -1
  393. package/dist/cli-bundle/chunks/chunk-JFCVQXZX.js +0 -3206
  394. package/dist/cli-bundle/chunks/chunk-JFCVQXZX.js.map +0 -1
  395. package/dist/cli-bundle/chunks/chunk-JINYH2DB.js +0 -371
  396. package/dist/cli-bundle/chunks/chunk-JINYH2DB.js.map +0 -7
  397. package/dist/cli-bundle/chunks/chunk-JLA7EVYV.js.map +0 -1
  398. package/dist/cli-bundle/chunks/chunk-K32L7HZO.js +0 -76
  399. package/dist/cli-bundle/chunks/chunk-K32L7HZO.js.map +0 -1
  400. package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js +0 -79
  401. package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js.map +0 -7
  402. package/dist/cli-bundle/chunks/chunk-KL22PY6L.js +0 -915
  403. package/dist/cli-bundle/chunks/chunk-KL22PY6L.js.map +0 -1
  404. package/dist/cli-bundle/chunks/chunk-KLG4ZULO.js +0 -218
  405. package/dist/cli-bundle/chunks/chunk-KLG4ZULO.js.map +0 -7
  406. package/dist/cli-bundle/chunks/chunk-LEKT4K7I.js.map +0 -7
  407. package/dist/cli-bundle/chunks/chunk-MNZ7DRNC.js +0 -1858
  408. package/dist/cli-bundle/chunks/chunk-MNZ7DRNC.js.map +0 -1
  409. package/dist/cli-bundle/chunks/chunk-MTTXDAK4.js.map +0 -7
  410. package/dist/cli-bundle/chunks/chunk-MZ7VNEVY.js +0 -520
  411. package/dist/cli-bundle/chunks/chunk-MZ7VNEVY.js.map +0 -1
  412. package/dist/cli-bundle/chunks/chunk-N7X4WP6L.js +0 -1041
  413. package/dist/cli-bundle/chunks/chunk-N7X4WP6L.js.map +0 -7
  414. package/dist/cli-bundle/chunks/chunk-NBFCNJ7Q.js.map +0 -1
  415. package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js +0 -20
  416. package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js.map +0 -1
  417. package/dist/cli-bundle/chunks/chunk-OBA2WH65.js +0 -918
  418. package/dist/cli-bundle/chunks/chunk-OBA2WH65.js.map +0 -7
  419. package/dist/cli-bundle/chunks/chunk-OESSOFJ4.js +0 -1985
  420. package/dist/cli-bundle/chunks/chunk-OESSOFJ4.js.map +0 -7
  421. package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js +0 -238
  422. package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js.map +0 -1
  423. package/dist/cli-bundle/chunks/chunk-P5YORJRH.js +0 -1977
  424. package/dist/cli-bundle/chunks/chunk-P5YORJRH.js.map +0 -7
  425. package/dist/cli-bundle/chunks/chunk-PPAJG4GB.js +0 -1031
  426. package/dist/cli-bundle/chunks/chunk-PPAJG4GB.js.map +0 -1
  427. package/dist/cli-bundle/chunks/chunk-PPE4YUQM.js.map +0 -1
  428. package/dist/cli-bundle/chunks/chunk-QZ342C63.js +0 -220
  429. package/dist/cli-bundle/chunks/chunk-QZ342C63.js.map +0 -7
  430. package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js +0 -368
  431. package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js.map +0 -1
  432. package/dist/cli-bundle/chunks/chunk-S4APD35C.js.map +0 -7
  433. package/dist/cli-bundle/chunks/chunk-STPSZ2XY.js +0 -1149
  434. package/dist/cli-bundle/chunks/chunk-STPSZ2XY.js.map +0 -1
  435. package/dist/cli-bundle/chunks/chunk-T4MX77AK.js +0 -272
  436. package/dist/cli-bundle/chunks/chunk-T4MX77AK.js.map +0 -1
  437. package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js.map +0 -1
  438. package/dist/cli-bundle/chunks/chunk-TT42JUMF.js.map +0 -1
  439. package/dist/cli-bundle/chunks/chunk-UHKX7I75.js +0 -165
  440. package/dist/cli-bundle/chunks/chunk-UHKX7I75.js.map +0 -1
  441. package/dist/cli-bundle/chunks/chunk-UI5BJ6DO.js.map +0 -7
  442. package/dist/cli-bundle/chunks/chunk-US3T3W5J.js +0 -1932
  443. package/dist/cli-bundle/chunks/chunk-US3T3W5J.js.map +0 -1
  444. package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js +0 -175
  445. package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js.map +0 -7
  446. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +0 -84
  447. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +0 -1
  448. package/dist/cli-bundle/chunks/chunk-VZIYHZDX.js +0 -1868
  449. package/dist/cli-bundle/chunks/chunk-VZIYHZDX.js.map +0 -7
  450. package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js.map +0 -7
  451. package/dist/cli-bundle/chunks/chunk-XQCG2JGW.js +0 -1152
  452. package/dist/cli-bundle/chunks/chunk-XQCG2JGW.js.map +0 -7
  453. package/dist/cli-bundle/chunks/chunk-YD5FML7K.js.map +0 -1
  454. package/dist/cli-bundle/chunks/chunk-YSAH5FY5.js.map +0 -1
  455. package/dist/cli-bundle/chunks/chunk-YZIR4R3U.js +0 -1005
  456. package/dist/cli-bundle/chunks/chunk-YZIR4R3U.js.map +0 -7
  457. package/dist/cli-bundle/chunks/chunk-Z2CRRZYF.js +0 -215
  458. package/dist/cli-bundle/chunks/chunk-Z2CRRZYF.js.map +0 -1
  459. package/dist/cli-bundle/chunks/chunk-ZD34OFFQ.js.map +0 -7
  460. package/dist/cli-bundle/chunks/chunk-ZJB3UV5U.js +0 -2306
  461. package/dist/cli-bundle/chunks/chunk-ZJB3UV5U.js.map +0 -1
  462. package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js +0 -241
  463. package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js.map +0 -7
  464. package/dist/cli-bundle/chunks/claim-4DROPSIS.js +0 -144
  465. package/dist/cli-bundle/chunks/claim-4DROPSIS.js.map +0 -1
  466. package/dist/cli-bundle/chunks/claim-VX54TV5U.js +0 -147
  467. package/dist/cli-bundle/chunks/claim-VX54TV5U.js.map +0 -7
  468. package/dist/cli-bundle/chunks/close-OB2Y4QP5.js +0 -16
  469. package/dist/cli-bundle/chunks/config-V57QD47V.js.map +0 -1
  470. package/dist/cli-bundle/chunks/context-4OQGIPSO.js +0 -45
  471. package/dist/cli-bundle/chunks/context-WLA6IAWE.js +0 -49
  472. package/dist/cli-bundle/chunks/contracts-HXJLKCRI.js +0 -12
  473. package/dist/cli-bundle/chunks/create-WKOZKPQR.js +0 -30
  474. package/dist/cli-bundle/chunks/eval-N6UHFWVO.js +0 -288
  475. package/dist/cli-bundle/chunks/eval-N6UHFWVO.js.map +0 -7
  476. package/dist/cli-bundle/chunks/eval-PHOTWYHI.js +0 -278
  477. package/dist/cli-bundle/chunks/eval-PHOTWYHI.js.map +0 -1
  478. package/dist/cli-bundle/chunks/extension-NBAH62ML.js +0 -40
  479. package/dist/cli-bundle/chunks/extension-ZF6ZZPOU.js +0 -44
  480. package/dist/cli-bundle/chunks/gc-AETFKZ44.js +0 -398
  481. package/dist/cli-bundle/chunks/gc-AETFKZ44.js.map +0 -7
  482. package/dist/cli-bundle/chunks/gc-RLBP4QVN.js +0 -388
  483. package/dist/cli-bundle/chunks/gc-RLBP4QVN.js.map +0 -1
  484. package/dist/cli-bundle/chunks/get-NH2MPBCI.js +0 -283
  485. package/dist/cli-bundle/chunks/get-NH2MPBCI.js.map +0 -1
  486. package/dist/cli-bundle/chunks/get-P4ZQXCPZ.js +0 -286
  487. package/dist/cli-bundle/chunks/get-P4ZQXCPZ.js.map +0 -7
  488. package/dist/cli-bundle/chunks/health-3GVPMQBL.js +0 -1612
  489. package/dist/cli-bundle/chunks/health-3GVPMQBL.js.map +0 -1
  490. package/dist/cli-bundle/chunks/health-DNTM72GJ.js +0 -1615
  491. package/dist/cli-bundle/chunks/health-DNTM72GJ.js.map +0 -7
  492. package/dist/cli-bundle/chunks/history-RYKLC72X.js +0 -20
  493. package/dist/cli-bundle/chunks/history-SGPYRAFT.js +0 -24
  494. package/dist/cli-bundle/chunks/history-redact-4H3FCKF3.js +0 -21
  495. package/dist/cli-bundle/chunks/init-RPIPQUNV.js +0 -32
  496. package/dist/cli-bundle/chunks/init-SKQAESQS.js +0 -28
  497. package/dist/cli-bundle/chunks/list-64LHZ3HM.js +0 -32
  498. package/dist/cli-bundle/chunks/list-7LXBTEKI.js +0 -36
  499. package/dist/cli-bundle/chunks/next-7ODPAQ4U.js +0 -306
  500. package/dist/cli-bundle/chunks/next-7ODPAQ4U.js.map +0 -7
  501. package/dist/cli-bundle/chunks/next-ODJUM4ZM.js +0 -303
  502. package/dist/cli-bundle/chunks/next-ODJUM4ZM.js.map +0 -1
  503. package/dist/cli-bundle/chunks/profile-XQWEQKS3.js +0 -397
  504. package/dist/cli-bundle/chunks/profile-XQWEQKS3.js.map +0 -1
  505. package/dist/cli-bundle/chunks/profile-YRDHLMRO.js +0 -400
  506. package/dist/cli-bundle/chunks/profile-YRDHLMRO.js.map +0 -7
  507. package/dist/cli-bundle/chunks/register-list-query-5H66WFYF.js.map +0 -7
  508. package/dist/cli-bundle/chunks/register-list-query-FB3FNDLZ.js.map +0 -1
  509. package/dist/cli-bundle/chunks/register-operations-A3XAM5J7.js.map +0 -1
  510. package/dist/cli-bundle/chunks/register-operations-SG7HBSUP.js.map +0 -7
  511. package/dist/cli-bundle/chunks/register-setup-I45OGJUV.js.map +0 -1
  512. package/dist/cli-bundle/chunks/register-setup-K6U3NVY5.js.map +0 -7
  513. package/dist/cli-bundle/chunks/restore-PXOFL6AM.js +0 -19
  514. package/dist/cli-bundle/chunks/scheduling-shortcuts-SSC4MYWQ.js +0 -91
  515. package/dist/cli-bundle/chunks/scheduling-shortcuts-SSC4MYWQ.js.map +0 -7
  516. package/dist/cli-bundle/chunks/scheduling-shortcuts-ULRG7MNP.js +0 -88
  517. package/dist/cli-bundle/chunks/scheduling-shortcuts-ULRG7MNP.js.map +0 -1
  518. package/dist/cli-bundle/chunks/search-3S72CTD6.js +0 -38
  519. package/dist/cli-bundle/chunks/search-WNUNBQXO.js +0 -34
  520. package/dist/cli-bundle/chunks/stats-IJYTRQGV.js +0 -250
  521. package/dist/cli-bundle/chunks/stats-IJYTRQGV.js.map +0 -7
  522. package/dist/cli-bundle/chunks/stats-L2D5Y2O5.js +0 -240
  523. package/dist/cli-bundle/chunks/stats-L2D5Y2O5.js.map +0 -1
  524. package/dist/cli-bundle/chunks/telemetry-L2CVOKVN.js +0 -309
  525. package/dist/cli-bundle/chunks/telemetry-L2CVOKVN.js.map +0 -7
  526. package/dist/cli-bundle/chunks/telemetry-QBYWQA76.js +0 -306
  527. package/dist/cli-bundle/chunks/telemetry-QBYWQA76.js.map +0 -1
  528. package/dist/cli-bundle/chunks/test-DQ2QFJ7W.js +0 -45
  529. package/dist/cli-bundle/chunks/test-W7QBLVJS.js +0 -41
  530. package/dist/cli-bundle/chunks/test-all-636NTRTT.js +0 -434
  531. package/dist/cli-bundle/chunks/test-all-636NTRTT.js.map +0 -1
  532. package/dist/cli-bundle/chunks/test-all-DWYK3RG6.js +0 -437
  533. package/dist/cli-bundle/chunks/test-all-DWYK3RG6.js.map +0 -7
  534. package/dist/cli-bundle/chunks/test-runs-245OINZR.js +0 -28
  535. package/dist/cli-bundle/chunks/test-runs-ZRD4GCTT.js +0 -24
  536. package/dist/cli-bundle/chunks/update-SFLZPJXX.js +0 -30
  537. package/dist/cli-bundle/chunks/update-SJZ6S77U.js +0 -26
  538. package/dist/cli-bundle/chunks/upgrade-HFFXLZJA.js +0 -290
  539. package/dist/cli-bundle/chunks/upgrade-HFFXLZJA.js.map +0 -7
  540. package/dist/cli-bundle/chunks/upgrade-UYQKM7RF.js +0 -287
  541. package/dist/cli-bundle/chunks/upgrade-UYQKM7RF.js.map +0 -1
  542. package/dist/cli-bundle/chunks/validate-PA4FDTOV.js +0 -2143
  543. package/dist/cli-bundle/chunks/validate-PA4FDTOV.js.map +0 -7
  544. package/dist/cli-bundle/chunks/validate-Z7L75YEJ.js +0 -2105
  545. package/dist/cli-bundle/chunks/validate-Z7L75YEJ.js.map +0 -1
  546. /package/dist/cli-bundle/chunks/{activity-4XQIDNM5.js.map → append-F7WPGIQL.js.map} +0 -0
  547. /package/dist/cli-bundle/chunks/{activity-YKAKZTZ4.js.map → append-PVCTBVJG.js.map} +0 -0
  548. /package/dist/cli-bundle/chunks/{chunk-T3ABIMGW.js.map → chunk-2TILG6F2.js.map} +0 -0
  549. /package/dist/cli-bundle/chunks/{chunk-RCT3YJOK.js.map → chunk-3TYOW6RR.js.map} +0 -0
  550. /package/dist/cli-bundle/chunks/{chunk-3JZNEQBA.js.map → chunk-3X542TEY.js.map} +0 -0
  551. /package/dist/cli-bundle/chunks/{chunk-YOF5VPKM.js.map → chunk-7VQ3JJN5.js.map} +0 -0
  552. /package/dist/cli-bundle/chunks/{chunk-P5TFTLWW.js.map → chunk-AGAVEDIE.js.map} +0 -0
  553. /package/dist/cli-bundle/chunks/{chunk-YFIE7YK6.js.map → chunk-AJUON7E6.js.map} +0 -0
  554. /package/dist/cli-bundle/chunks/{chunk-7WYXBPYQ.js.map → chunk-DR2V5OIV.js.map} +0 -0
  555. /package/dist/cli-bundle/chunks/{chunk-PDXT6Q55.js.map → chunk-EDO7VXSO.js.map} +0 -0
  556. /package/dist/cli-bundle/chunks/{chunk-FUM6UMY4.js.map → chunk-EVEPHNXJ.js.map} +0 -0
  557. /package/dist/cli-bundle/chunks/{chunk-RX3HQSYG.js.map → chunk-FN6SB4HU.js.map} +0 -0
  558. /package/dist/cli-bundle/chunks/{chunk-DLQ4ZTCU.js.map → chunk-H2SMKL2N.js.map} +0 -0
  559. /package/dist/cli-bundle/chunks/{chunk-C3PMDWGX.js.map → chunk-HX6QXV5P.js.map} +0 -0
  560. /package/dist/cli-bundle/chunks/{chunk-N6DNM2FA.js.map → chunk-P3MJJW7P.js.map} +0 -0
  561. /package/dist/cli-bundle/chunks/{chunk-5JE6SMYS.js.map → chunk-PDXJXEZJ.js.map} +0 -0
  562. /package/dist/cli-bundle/chunks/{chunk-AAEQMOC6.js.map → chunk-TEKZOS7M.js.map} +0 -0
  563. /package/dist/cli-bundle/chunks/{chunk-NER3KUUS.js.map → chunk-VLEA2UTQ.js.map} +0 -0
  564. /package/dist/cli-bundle/chunks/{chunk-ZMD35NYG.js.map → chunk-WCWVEXGA.js.map} +0 -0
  565. /package/dist/cli-bundle/chunks/{chunk-T35XLYZF.js.map → chunk-YPMZMKN7.js.map} +0 -0
  566. /package/dist/cli-bundle/chunks/{chunk-R3ZBLGTC.js.map → chunk-YTD5GICJ.js.map} +0 -0
  567. /package/dist/cli-bundle/chunks/{chunk-EEY54JMF.js.map → chunk-ZO7CLOY2.js.map} +0 -0
  568. /package/dist/cli-bundle/chunks/{close-3YRR3XY6.js.map → close-3YYQ5OG2.js.map} +0 -0
  569. /package/dist/cli-bundle/chunks/{close-OB2Y4QP5.js.map → close-Z3Q4U7TS.js.map} +0 -0
  570. /package/dist/cli-bundle/chunks/{context-4OQGIPSO.js.map → close-many-3L2RXH3M.js.map} +0 -0
  571. /package/dist/cli-bundle/chunks/{context-WLA6IAWE.js.map → close-many-D366FTIG.js.map} +0 -0
  572. /package/dist/cli-bundle/chunks/{contracts-OJEXMKVW.js.map → comments-54XDJNFE.js.map} +0 -0
  573. /package/dist/cli-bundle/chunks/{contracts-HXJLKCRI.js.map → comments-HGHC2PN6.js.map} +0 -0
  574. /package/dist/cli-bundle/chunks/{create-XWWQFQ6S.js.map → copy-44RT5GDW.js.map} +0 -0
  575. /package/dist/cli-bundle/chunks/{create-WKOZKPQR.js.map → copy-UGMUGHZA.js.map} +0 -0
  576. /package/dist/cli-bundle/chunks/{extension-ZF6ZZPOU.js.map → create-4GWJWPXG.js.map} +0 -0
  577. /package/dist/cli-bundle/chunks/{extension-NBAH62ML.js.map → create-AZXCUYKP.js.map} +0 -0
  578. /package/dist/cli-bundle/chunks/{history-RYKLC72X.js.map → delete-Y6SXIQ4X.js.map} +0 -0
  579. /package/dist/cli-bundle/chunks/{history-SGPYRAFT.js.map → delete-YQ2VPXNF.js.map} +0 -0
  580. /package/dist/cli-bundle/chunks/{history-redact-54ICFKXM.js.map → deps-BU5EBJDU.js.map} +0 -0
  581. /package/dist/cli-bundle/chunks/{history-redact-4H3FCKF3.js.map → deps-FMANWFRP.js.map} +0 -0
  582. /package/dist/cli-bundle/chunks/{init-RPIPQUNV.js.map → docs-OQBSJNIA.js.map} +0 -0
  583. /package/dist/cli-bundle/chunks/{init-SKQAESQS.js.map → docs-VNPBZXEL.js.map} +0 -0
  584. /package/dist/cli-bundle/chunks/{list-64LHZ3HM.js.map → files-72HZEBOE.js.map} +0 -0
  585. /package/dist/cli-bundle/chunks/{list-7LXBTEKI.js.map → files-HTSB2KJG.js.map} +0 -0
  586. /package/dist/cli-bundle/chunks/{restore-YJ2ET6AT.js.map → focus-FOG4ALC2.js.map} +0 -0
  587. /package/dist/cli-bundle/chunks/{restore-PXOFL6AM.js.map → focus-SUTMKXGX.js.map} +0 -0
  588. /package/dist/cli-bundle/chunks/{schema-Y6DXXK2F.js.map → history-compact-M6IFAMBP.js.map} +0 -0
  589. /package/dist/cli-bundle/chunks/{schema-2PUXCZ25.js.map → history-compact-NEXRPP2O.js.map} +0 -0
  590. /package/dist/cli-bundle/chunks/{search-3S72CTD6.js.map → history-redact-NQX3OGZP.js.map} +0 -0
  591. /package/dist/cli-bundle/chunks/{search-WNUNBQXO.js.map → history-redact-WQJBZ3PX.js.map} +0 -0
  592. /package/dist/cli-bundle/chunks/{test-W7QBLVJS.js.map → history-repair-CBHMHAJO.js.map} +0 -0
  593. /package/dist/cli-bundle/chunks/{test-DQ2QFJ7W.js.map → history-repair-NHOJG7WO.js.map} +0 -0
  594. /package/dist/cli-bundle/chunks/{test-runs-ZRD4GCTT.js.map → learnings-M64NTSOR.js.map} +0 -0
  595. /package/dist/cli-bundle/chunks/{test-runs-245OINZR.js.map → learnings-T63JGKKN.js.map} +0 -0
  596. /package/dist/cli-bundle/chunks/{update-SJZ6S77U.js.map → notes-73WE2UV2.js.map} +0 -0
  597. /package/dist/cli-bundle/chunks/{update-SFLZPJXX.js.map → notes-U7L6HQQ2.js.map} +0 -0
@@ -1,520 +0,0 @@
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]="f38e3071-bb2a-530d-81ee-256b76a93b0c")}catch(e){}}();
3
- import {
4
- parseOptionalNumber
5
- } from "./chunk-7WYXBPYQ.js";
6
- import {
7
- splitCommaList
8
- } from "./chunk-P4SESZGT.js";
9
- import {
10
- PmCliError
11
- } from "./chunk-US3T3W5J.js";
12
- import {
13
- EXIT_CODE,
14
- SCOPE_VALUES
15
- } from "./chunk-YD5FML7K.js";
16
-
17
- // dist/cli/commands/linked-test-entry.js
18
- var STRUCTURED_LINKED_TEST_KEYS = [
19
- "command",
20
- "cmd",
21
- "path",
22
- "scope",
23
- "timeout",
24
- "timeout_seconds",
25
- "pm_context_mode",
26
- "env_set",
27
- "env_clear",
28
- "shared_host_safe",
29
- "assert_stdout_contains",
30
- "assert_stdout_regex",
31
- "assert_stderr_contains",
32
- "assert_stderr_regex",
33
- "assert_stdout_min_lines",
34
- "assert_json_field_equals",
35
- "assert_json_field_gte",
36
- "note"
37
- ];
38
- var STRUCTURED_LINKED_TEST_KEY_SET = new Set(STRUCTURED_LINKED_TEST_KEYS);
39
- var STRUCTURED_LINKED_TEST_KEY_PATTERN = STRUCTURED_LINKED_TEST_KEYS.map((key) => key.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|");
40
- var STRUCTURED_LINKED_TEST_ENTRY_PATTERN = new RegExp(`^(?:[-*+]\\s+)?(?:${STRUCTURED_LINKED_TEST_KEY_PATTERN})\\s*[:=]`, "i");
41
- function looksLikeStructuredLinkedTestEntry(raw) {
42
- if (raw.startsWith("```") || raw.includes("\n")) {
43
- return true;
44
- }
45
- return STRUCTURED_LINKED_TEST_ENTRY_PATTERN.test(raw);
46
- }
47
- function normalizeStructuredLinkedTestEntry(kv, optionName) {
48
- const normalizedKv = {};
49
- const unknownKeys = [];
50
- for (const [key, value] of Object.entries(kv)) {
51
- const normalizedKey = key.toLowerCase();
52
- if (!STRUCTURED_LINKED_TEST_KEY_SET.has(normalizedKey)) {
53
- unknownKeys.push(key);
54
- continue;
55
- }
56
- normalizedKv[normalizedKey] = value;
57
- }
58
- if (unknownKeys.length > 0) {
59
- throw new PmCliError(`${optionName} does not recognize key${unknownKeys.length > 1 ? "s" : ""} ${unknownKeys.map((key) => `"${key}"`).join(", ")}. Allowed keys: ${STRUCTURED_LINKED_TEST_KEYS.join(", ")}.`, EXIT_CODE.USAGE);
60
- }
61
- if (normalizedKv.cmd !== void 0) {
62
- if (normalizedKv.command !== void 0 && normalizedKv.command.trim() !== normalizedKv.cmd.trim()) {
63
- throw new PmCliError(`${optionName} command and cmd must match when both are provided`, EXIT_CODE.USAGE);
64
- }
65
- const { cmd, ...rest } = normalizedKv;
66
- return { ...rest, command: rest.command ?? cmd };
67
- }
68
- return normalizedKv;
69
- }
70
-
71
- // dist/cli/commands/linked-test-parsers.js
72
- var LINKED_TEST_PROTECTED_ENV_KEYS = /* @__PURE__ */ new Set(["PM_PATH", "PM_GLOBAL_PATH", "FORCE_COLOR"]);
73
- var LINKED_TEST_ENV_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
74
- var LINKED_TEST_PM_CONTEXT_MODE_VALUES = ["schema", "tracker", "auto"];
75
- function parseLinkedTestEnvSet(raw, optionName) {
76
- if (!raw) {
77
- return void 0;
78
- }
79
- const assignments = raw.split(/[;\n]/).map((entry) => entry.trim()).filter((entry) => entry.length > 0);
80
- if (assignments.length === 0) {
81
- throw new PmCliError(`${optionName} env_set must include at least one KEY=VALUE assignment`, EXIT_CODE.USAGE);
82
- }
83
- const envSet = {};
84
- for (const assignment of assignments) {
85
- const separatorIndex = assignment.indexOf("=");
86
- if (separatorIndex <= 0) {
87
- throw new PmCliError(`${optionName} env_set entries must use KEY=VALUE and be separated by semicolons. Example: env_set=PORT=0;PLAYWRIGHT_BASE_URL=http://127.0.0.1:4173`, EXIT_CODE.USAGE);
88
- }
89
- const key = assignment.slice(0, separatorIndex).trim();
90
- const value = assignment.slice(separatorIndex + 1);
91
- if (!LINKED_TEST_ENV_NAME_PATTERN.test(key)) {
92
- throw new PmCliError(`${optionName} env_set key "${key}" is invalid`, EXIT_CODE.USAGE);
93
- }
94
- if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {
95
- throw new PmCliError(`${optionName} env_set key "${key}" is reserved for sandbox safety`, EXIT_CODE.USAGE);
96
- }
97
- envSet[key] = value;
98
- }
99
- return Object.keys(envSet).length > 0 ? envSet : void 0;
100
- }
101
- function parseLinkedTestEnvClear(raw, optionName) {
102
- if (!raw) {
103
- return void 0;
104
- }
105
- const keys = splitCommaList(raw, { separators: /[;,\n]/ });
106
- if (keys.length === 0) {
107
- throw new PmCliError(`${optionName} env_clear must include at least one environment variable name`, EXIT_CODE.USAGE);
108
- }
109
- for (const key of keys) {
110
- if (!LINKED_TEST_ENV_NAME_PATTERN.test(key)) {
111
- throw new PmCliError(`${optionName} env_clear key "${key}" is invalid`, EXIT_CODE.USAGE);
112
- }
113
- if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {
114
- throw new PmCliError(`${optionName} env_clear key "${key}" is reserved for sandbox safety`, EXIT_CODE.USAGE);
115
- }
116
- }
117
- return keys;
118
- }
119
- function parseLinkedTestBoolean(raw, optionName, fieldLabel) {
120
- if (!raw) {
121
- return void 0;
122
- }
123
- const value = raw.trim().toLowerCase();
124
- if (value === "true" || value === "1" || value === "yes") {
125
- return true;
126
- }
127
- if (value === "false" || value === "0" || value === "no") {
128
- return false;
129
- }
130
- throw new PmCliError(`${optionName} ${fieldLabel} must be one of true|false|1|0|yes|no`, EXIT_CODE.USAGE);
131
- }
132
- function parseLinkedTestContextMode(raw, optionName) {
133
- if (!raw) {
134
- return void 0;
135
- }
136
- const value = raw.trim().toLowerCase();
137
- if (LINKED_TEST_PM_CONTEXT_MODE_VALUES.includes(value)) {
138
- return value;
139
- }
140
- throw new PmCliError(`${optionName} pm_context_mode must be one of: ${LINKED_TEST_PM_CONTEXT_MODE_VALUES.join(", ")}`, EXIT_CODE.USAGE);
141
- }
142
- function parseLinkedTestStringList(raw) {
143
- if (!raw) {
144
- return void 0;
145
- }
146
- const values = splitCommaList(raw, { separators: /[;\n]/ });
147
- return values.length > 0 ? values : void 0;
148
- }
149
- function parseLinkedTestRegexList(raw, optionName, fieldLabel) {
150
- const values = parseLinkedTestStringList(raw);
151
- if (!values || values.length === 0) {
152
- return void 0;
153
- }
154
- for (const pattern of values) {
155
- try {
156
- new RegExp(pattern, "m");
157
- } catch (error) {
158
- throw new PmCliError(
159
- /* c8 ignore next -- RegExp only throws SyntaxError (an Error); String(error) fallback is defensive. */
160
- `${optionName} ${fieldLabel} includes invalid regex "${pattern}": ${error instanceof Error ? error.message : String(error)}`,
161
- EXIT_CODE.USAGE
162
- );
163
- }
164
- }
165
- return values;
166
- }
167
- function parseLinkedTestMinLines(raw, optionName) {
168
- if (!raw) {
169
- return void 0;
170
- }
171
- const parsed = parseOptionalNumber(raw, "assert_stdout_min_lines");
172
- if (!Number.isInteger(parsed) || parsed < 0) {
173
- throw new PmCliError(`${optionName} assert_stdout_min_lines must be an integer >= 0`, EXIT_CODE.USAGE);
174
- }
175
- return parsed;
176
- }
177
- function parseLinkedTestAssertionEqualsMap(raw, optionName) {
178
- if (!raw) {
179
- return void 0;
180
- }
181
- const assignments = raw.split(/[;\n]/).map((entry) => entry.trim()).filter((entry) => entry.length > 0);
182
- if (assignments.length === 0) {
183
- throw new PmCliError(`${optionName} assert_json_field_equals must include at least one path=value assignment`, EXIT_CODE.USAGE);
184
- }
185
- const values = {};
186
- for (const assignment of assignments) {
187
- const separatorIndex = assignment.indexOf("=");
188
- if (separatorIndex <= 0) {
189
- throw new PmCliError(`${optionName} assert_json_field_equals entries must use path=value and be separated by semicolons`, EXIT_CODE.USAGE);
190
- }
191
- const key = assignment.slice(0, separatorIndex).trim();
192
- const value = assignment.slice(separatorIndex + 1).trim();
193
- if (key.length === 0 || value.length === 0) {
194
- throw new PmCliError(`${optionName} assert_json_field_equals entries must include non-empty path and value`, EXIT_CODE.USAGE);
195
- }
196
- values[key] = value;
197
- }
198
- return Object.keys(values).length > 0 ? values : void 0;
199
- }
200
- function parseLinkedTestAssertionGteMap(raw, optionName) {
201
- if (!raw) {
202
- return void 0;
203
- }
204
- const assignments = raw.split(/[;\n]/).map((entry) => entry.trim()).filter((entry) => entry.length > 0);
205
- if (assignments.length === 0) {
206
- throw new PmCliError(`${optionName} assert_json_field_gte must include at least one path=value assignment`, EXIT_CODE.USAGE);
207
- }
208
- const values = {};
209
- for (const assignment of assignments) {
210
- const separatorIndex = assignment.indexOf("=");
211
- if (separatorIndex <= 0) {
212
- throw new PmCliError(`${optionName} assert_json_field_gte entries must use path=value and be separated by semicolons`, EXIT_CODE.USAGE);
213
- }
214
- const key = assignment.slice(0, separatorIndex).trim();
215
- const valueRaw = assignment.slice(separatorIndex + 1).trim();
216
- if (key.length === 0 || valueRaw.length === 0) {
217
- throw new PmCliError(`${optionName} assert_json_field_gte entries must include non-empty path and value`, EXIT_CODE.USAGE);
218
- }
219
- const value = Number.parseFloat(valueRaw);
220
- if (!Number.isFinite(value)) {
221
- throw new PmCliError(`${optionName} assert_json_field_gte value for "${key}" must be numeric`, EXIT_CODE.USAGE);
222
- }
223
- values[key] = value;
224
- }
225
- return Object.keys(values).length > 0 ? values : void 0;
226
- }
227
- var LINKED_TEST_JSON_KEY_SET = new Set(STRUCTURED_LINKED_TEST_KEYS);
228
- function isPlainObject(value) {
229
- return typeof value === "object" && value !== null && !Array.isArray(value);
230
- }
231
- function normalizeJsonEntryKeys(entry, fail) {
232
- const normalized = {};
233
- const unknownKeys = [];
234
- for (const [key, value] of Object.entries(entry)) {
235
- const normalizedKey = key.toLowerCase();
236
- if (!LINKED_TEST_JSON_KEY_SET.has(normalizedKey)) {
237
- unknownKeys.push(key);
238
- continue;
239
- }
240
- if (Object.hasOwn(normalized, normalizedKey)) {
241
- throw fail(`provides key "${key}" more than once after case normalization`);
242
- }
243
- normalized[normalizedKey] = value;
244
- }
245
- if (unknownKeys.length > 0) {
246
- throw fail(`does not recognize key${unknownKeys.length > 1 ? "s" : ""} ${unknownKeys.map((key) => `"${key}"`).join(", ")}. Allowed keys: ${STRUCTURED_LINKED_TEST_KEYS.join(", ")}.`);
247
- }
248
- return normalized;
249
- }
250
- function readJsonEntryString(entry, key, fail) {
251
- if (!Object.hasOwn(entry, key)) {
252
- return void 0;
253
- }
254
- const value = entry[key];
255
- if (value === void 0) {
256
- return void 0;
257
- }
258
- if (typeof value !== "string") {
259
- throw fail(`field "${key}" must be a JSON string`);
260
- }
261
- return value;
262
- }
263
- function readJsonEntryStringList(entry, key, fail) {
264
- if (!Object.hasOwn(entry, key)) {
265
- return void 0;
266
- }
267
- const value = entry[key];
268
- if (value === void 0) {
269
- return void 0;
270
- }
271
- const list = typeof value === "string" ? [value] : value;
272
- if (!Array.isArray(list) || list.some((item) => typeof item !== "string")) {
273
- throw fail(`field "${key}" must be a string or an array of strings`);
274
- }
275
- const values = list.filter((item) => item.length > 0);
276
- return values.length > 0 ? values : void 0;
277
- }
278
- function readJsonEntryRegexList(entry, key, fail) {
279
- const values = readJsonEntryStringList(entry, key, fail);
280
- if (!values) {
281
- return void 0;
282
- }
283
- for (const pattern of values) {
284
- try {
285
- new RegExp(pattern, "m");
286
- } catch (error) {
287
- throw fail(
288
- /* c8 ignore next -- RegExp only throws SyntaxError (an Error); String(error) fallback is defensive. */
289
- `field "${key}" includes invalid regex "${pattern}": ${error instanceof Error ? error.message : String(error)}`
290
- );
291
- }
292
- }
293
- return values;
294
- }
295
- function readJsonEntryNumber(value, key, fail) {
296
- const parsed = typeof value === "number" ? value : typeof value === "string" && value.trim().length > 0 ? Number(value.trim()) : Number.NaN;
297
- if (typeof value === "boolean" || !Number.isFinite(parsed)) {
298
- throw fail(`field "${key}" must be a finite number (or numeric string)`);
299
- }
300
- return parsed;
301
- }
302
- function readJsonEntryTimeoutSeconds(entry, fail) {
303
- const timeoutSecondsRaw = entry.timeout_seconds;
304
- const timeoutAliasRaw = entry.timeout;
305
- if (timeoutSecondsRaw === void 0 && timeoutAliasRaw === void 0) {
306
- return void 0;
307
- }
308
- const timeoutSeconds = timeoutSecondsRaw === void 0 ? void 0 : readJsonEntryNumber(timeoutSecondsRaw, "timeout_seconds", fail);
309
- const timeoutAlias = timeoutAliasRaw === void 0 ? void 0 : readJsonEntryNumber(timeoutAliasRaw, "timeout", fail);
310
- if (timeoutSeconds !== void 0 && timeoutAlias !== void 0 && timeoutSeconds !== timeoutAlias) {
311
- throw fail("timeout and timeout_seconds must match when both are provided");
312
- }
313
- const timeout = timeoutSeconds ?? timeoutAlias;
314
- if (!Number.isInteger(timeout) || timeout <= 0) {
315
- throw fail("timeout_seconds must be a positive integer");
316
- }
317
- return timeout;
318
- }
319
- function readJsonEntryScope(entry, fail) {
320
- const value = readJsonEntryString(entry, "scope", fail);
321
- if (value === void 0) {
322
- return "project";
323
- }
324
- if (!SCOPE_VALUES.includes(value)) {
325
- throw fail(`field "scope" must be one of: ${SCOPE_VALUES.join(", ")}`);
326
- }
327
- return value;
328
- }
329
- function readJsonEntryEnvSet(entry, fail) {
330
- if (!Object.hasOwn(entry, "env_set")) {
331
- return void 0;
332
- }
333
- const value = entry.env_set;
334
- if (value === void 0) {
335
- return void 0;
336
- }
337
- if (!isPlainObject(value)) {
338
- throw fail('field "env_set" must be a JSON object mapping environment names to string values');
339
- }
340
- const envSet = {};
341
- for (const [key, entryValue] of Object.entries(value)) {
342
- if (typeof entryValue !== "string") {
343
- throw fail(`field "env_set" value for "${key}" must be a string`);
344
- }
345
- if (!LINKED_TEST_ENV_NAME_PATTERN.test(key)) {
346
- throw fail(`field "env_set" key "${key}" is invalid`);
347
- }
348
- if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {
349
- throw fail(`field "env_set" key "${key}" is reserved for sandbox safety`);
350
- }
351
- envSet[key] = entryValue;
352
- }
353
- return Object.keys(envSet).length > 0 ? envSet : void 0;
354
- }
355
- function readJsonEntryEnvClear(entry, fail) {
356
- const keys = readJsonEntryStringList(entry, "env_clear", fail);
357
- if (!keys) {
358
- return void 0;
359
- }
360
- for (const key of keys) {
361
- if (!LINKED_TEST_ENV_NAME_PATTERN.test(key)) {
362
- throw fail(`field "env_clear" key "${key}" is invalid`);
363
- }
364
- if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {
365
- throw fail(`field "env_clear" key "${key}" is reserved for sandbox safety`);
366
- }
367
- }
368
- return keys;
369
- }
370
- function readJsonEntryBoolean(entry, key, fail) {
371
- if (!Object.hasOwn(entry, key)) {
372
- return void 0;
373
- }
374
- const value = entry[key];
375
- if (value === void 0) {
376
- return void 0;
377
- }
378
- if (typeof value !== "boolean") {
379
- throw fail(`field "${key}" must be a JSON boolean (true or false)`);
380
- }
381
- return value;
382
- }
383
- function readJsonEntryMinLines(entry, fail) {
384
- if (!Object.hasOwn(entry, "assert_stdout_min_lines")) {
385
- return void 0;
386
- }
387
- const value = entry.assert_stdout_min_lines;
388
- if (value === void 0) {
389
- return void 0;
390
- }
391
- const parsed = readJsonEntryNumber(value, "assert_stdout_min_lines", fail);
392
- if (!Number.isInteger(parsed) || parsed < 0) {
393
- throw fail('field "assert_stdout_min_lines" must be an integer >= 0');
394
- }
395
- return parsed;
396
- }
397
- function readJsonEntryEqualsMap(entry, fail) {
398
- if (!Object.hasOwn(entry, "assert_json_field_equals")) {
399
- return void 0;
400
- }
401
- const value = entry.assert_json_field_equals;
402
- if (value === void 0) {
403
- return void 0;
404
- }
405
- if (!isPlainObject(value)) {
406
- throw fail('field "assert_json_field_equals" must be a JSON object mapping field paths to expected values');
407
- }
408
- const values = {};
409
- for (const [key, entryValue] of Object.entries(value)) {
410
- if (key.trim().length === 0) {
411
- throw fail('field "assert_json_field_equals" keys must be non-empty field paths');
412
- }
413
- if (typeof entryValue !== "string" && typeof entryValue !== "number" && typeof entryValue !== "boolean") {
414
- throw fail(`field "assert_json_field_equals" value for "${key}" must be a string, number, or boolean`);
415
- }
416
- values[key] = String(entryValue);
417
- }
418
- return Object.keys(values).length > 0 ? values : void 0;
419
- }
420
- function readJsonEntryGteMap(entry, fail) {
421
- if (!Object.hasOwn(entry, "assert_json_field_gte")) {
422
- return void 0;
423
- }
424
- const value = entry.assert_json_field_gte;
425
- if (value === void 0) {
426
- return void 0;
427
- }
428
- if (!isPlainObject(value)) {
429
- throw fail('field "assert_json_field_gte" must be a JSON object mapping field paths to numeric minimums');
430
- }
431
- const values = {};
432
- for (const [key, entryValue] of Object.entries(value)) {
433
- if (key.trim().length === 0) {
434
- throw fail('field "assert_json_field_gte" keys must be non-empty field paths');
435
- }
436
- values[key] = readJsonEntryNumber(entryValue, `assert_json_field_gte.${key}`, fail);
437
- }
438
- return Object.keys(values).length > 0 ? values : void 0;
439
- }
440
- function parseLinkedTestJsonEntry(rawEntry, label, optionName) {
441
- const fail = (message) => new PmCliError(`${optionName} ${label} ${message}`, EXIT_CODE.USAGE);
442
- if (!isPlainObject(rawEntry)) {
443
- throw fail(`must be a JSON object with linked-test fields. Allowed keys: ${STRUCTURED_LINKED_TEST_KEYS.join(", ")}.`);
444
- }
445
- const entry = normalizeJsonEntryKeys(rawEntry, fail);
446
- const commandValue = readJsonEntryString(entry, "command", fail);
447
- const cmdAlias = readJsonEntryString(entry, "cmd", fail);
448
- if (commandValue !== void 0 && cmdAlias !== void 0 && commandValue !== cmdAlias) {
449
- throw fail("command and cmd must match when both are provided");
450
- }
451
- const command = commandValue ?? cmdAlias;
452
- if (command === void 0 || command.trim().length === 0) {
453
- throw fail('requires a non-empty "command" string');
454
- }
455
- const pathValue = readJsonEntryString(entry, "path", fail);
456
- const pmContextModeValue = readJsonEntryString(entry, "pm_context_mode", fail);
457
- if (pmContextModeValue !== void 0 && !LINKED_TEST_PM_CONTEXT_MODE_VALUES.includes(pmContextModeValue)) {
458
- throw fail(`field "pm_context_mode" must be one of: ${LINKED_TEST_PM_CONTEXT_MODE_VALUES.join(", ")}`);
459
- }
460
- const noteValue = readJsonEntryString(entry, "note", fail);
461
- return {
462
- command,
463
- path: pathValue !== void 0 && pathValue.length > 0 ? pathValue : void 0,
464
- scope: readJsonEntryScope(entry, fail),
465
- timeout_seconds: readJsonEntryTimeoutSeconds(entry, fail),
466
- pm_context_mode: pmContextModeValue,
467
- env_set: readJsonEntryEnvSet(entry, fail),
468
- env_clear: readJsonEntryEnvClear(entry, fail),
469
- shared_host_safe: readJsonEntryBoolean(entry, "shared_host_safe", fail),
470
- assert_stdout_contains: readJsonEntryStringList(entry, "assert_stdout_contains", fail),
471
- assert_stdout_regex: readJsonEntryRegexList(entry, "assert_stdout_regex", fail),
472
- assert_stderr_contains: readJsonEntryStringList(entry, "assert_stderr_contains", fail),
473
- assert_stderr_regex: readJsonEntryRegexList(entry, "assert_stderr_regex", fail),
474
- assert_stdout_min_lines: readJsonEntryMinLines(entry, fail),
475
- assert_json_field_equals: readJsonEntryEqualsMap(entry, fail),
476
- assert_json_field_gte: readJsonEntryGteMap(entry, fail),
477
- note: noteValue !== void 0 && noteValue.trim().length > 0 ? noteValue.trim() : void 0
478
- };
479
- }
480
- function parseLinkedTestJsonEntries(raw, optionName) {
481
- const trimmed = raw.trim();
482
- if (trimmed.length === 0) {
483
- throw new PmCliError(`${optionName} requires a JSON object or array of objects describing linked-test entries`, EXIT_CODE.USAGE);
484
- }
485
- let parsed;
486
- try {
487
- parsed = JSON.parse(trimmed);
488
- } catch (error) {
489
- throw new PmCliError(
490
- /* c8 ignore next -- JSON.parse only throws SyntaxError (an Error); String(error) fallback is defensive. */
491
- `${optionName} value is not valid JSON: ${error instanceof Error ? error.message : String(error)}. Provide a JSON object or array of objects, e.g. '{"command":"node scripts/check.js --flag value, with commas","timeout_seconds":120}'.`,
492
- EXIT_CODE.USAGE
493
- );
494
- }
495
- const entries = Array.isArray(parsed) ? parsed : [parsed];
496
- if (entries.length === 0) {
497
- throw new PmCliError(`${optionName} array must include at least one linked-test entry object`, EXIT_CODE.USAGE);
498
- }
499
- return entries.map((entry, index) => parseLinkedTestJsonEntry(entry, entries.length > 1 ? `entry ${index + 1}` : "entry", optionName));
500
- }
501
-
502
- export {
503
- looksLikeStructuredLinkedTestEntry,
504
- normalizeStructuredLinkedTestEntry,
505
- LINKED_TEST_PROTECTED_ENV_KEYS,
506
- LINKED_TEST_PM_CONTEXT_MODE_VALUES,
507
- parseLinkedTestEnvSet,
508
- parseLinkedTestEnvClear,
509
- parseLinkedTestBoolean,
510
- parseLinkedTestContextMode,
511
- parseLinkedTestStringList,
512
- parseLinkedTestRegexList,
513
- parseLinkedTestMinLines,
514
- parseLinkedTestAssertionEqualsMap,
515
- parseLinkedTestAssertionGteMap,
516
- parseLinkedTestJsonEntries
517
- };
518
- //# sourceMappingURL=chunk-MZ7VNEVY.js.map
519
-
520
- //# debugId=f38e3071-bb2a-530d-81ee-256b76a93b0c
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../../../../cli/commands/linked-test-entry.ts","../../../../../../../../cli/commands/linked-test-parsers.ts"],"sourcesContent":["/**\n * @module cli/commands/linked-test-entry\n *\n * Implements the pm linked test entry command surface and its agent-facing runtime behavior.\n */\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\n\n// Keys accepted inside a structured linked-test entry. `cmd` is an alias for\n// `command`; everything else maps 1:1 to a LinkedTest field.\nexport const STRUCTURED_LINKED_TEST_KEYS = [\n \"command\",\n \"cmd\",\n \"path\",\n \"scope\",\n \"timeout\",\n \"timeout_seconds\",\n \"pm_context_mode\",\n \"env_set\",\n \"env_clear\",\n \"shared_host_safe\",\n \"assert_stdout_contains\",\n \"assert_stdout_regex\",\n \"assert_stderr_contains\",\n \"assert_stderr_regex\",\n \"assert_stdout_min_lines\",\n \"assert_json_field_equals\",\n \"assert_json_field_gte\",\n \"note\",\n] as const;\n\nconst STRUCTURED_LINKED_TEST_KEY_SET = new Set<string>(STRUCTURED_LINKED_TEST_KEYS);\nconst STRUCTURED_LINKED_TEST_KEY_PATTERN = STRUCTURED_LINKED_TEST_KEYS.map((key) =>\n key.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"),\n).join(\"|\");\nconst STRUCTURED_LINKED_TEST_ENTRY_PATTERN = new RegExp(\n `^(?:[-*+]\\\\s+)?(?:${STRUCTURED_LINKED_TEST_KEY_PATTERN})\\\\s*[:=]`,\n \"i\",\n);\n\n/**\n * Implements looks like structured linked test entry for the public runtime surface of this module.\n */\nexport function looksLikeStructuredLinkedTestEntry(raw: string): boolean {\n if (raw.startsWith(\"```\") || raw.includes(\"\\n\")) {\n return true;\n }\n return STRUCTURED_LINKED_TEST_ENTRY_PATTERN.test(raw);\n}\n\n/**\n * Implements normalize structured linked test entry for the public runtime surface of this module.\n */\nexport function normalizeStructuredLinkedTestEntry(\n kv: Record<string, string>,\n optionName: \"--add\" | \"--test\",\n): Record<string, string> {\n const normalizedKv: Record<string, string> = {};\n const unknownKeys: string[] = [];\n for (const [key, value] of Object.entries(kv)) {\n const normalizedKey = key.toLowerCase();\n if (!STRUCTURED_LINKED_TEST_KEY_SET.has(normalizedKey)) {\n unknownKeys.push(key);\n continue;\n }\n normalizedKv[normalizedKey] = value;\n }\n if (unknownKeys.length > 0) {\n throw new PmCliError(\n `${optionName} does not recognize key${unknownKeys.length > 1 ? \"s\" : \"\"} ${unknownKeys\n .map((key) => `\"${key}\"`)\n .join(\", \")}. Allowed keys: ${STRUCTURED_LINKED_TEST_KEYS.join(\", \")}.`,\n EXIT_CODE.USAGE,\n );\n }\n if (normalizedKv.cmd !== undefined) {\n if (normalizedKv.command !== undefined && normalizedKv.command.trim() !== normalizedKv.cmd.trim()) {\n throw new PmCliError(`${optionName} command and cmd must match when both are provided`, EXIT_CODE.USAGE);\n }\n const { cmd, ...rest } = normalizedKv;\n return { ...rest, command: rest.command ?? cmd };\n }\n return normalizedKv;\n}\n","/**\n * @module cli/commands/linked-test-parsers\n *\n * Implements the pm linked test parsers command surface and its agent-facing runtime behavior.\n */\nimport { parseOptionalNumber } from \"../../core/item/parse.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { splitCommaList } from \"../../core/shared/split-comma-list.js\";\nimport { STRUCTURED_LINKED_TEST_KEYS } from \"./linked-test-entry.js\";\nimport { SCOPE_VALUES } from \"../../types/index.js\";\nimport type { LinkedTest, LinkScope } from \"../../types/index.js\";\n\n/**\n * Shared linked-test field parsers used by the `create` and `test` commands.\n *\n * Extracted verbatim from create.ts and test.ts (pm-why9). The two copies were\n * byte-identical apart from their empty-input guard: create called these with\n * raw (untrimmed) values and used `if (!normalized)`; test called them with\n * pre-`.trim()`-ed values and used `if (!raw || raw.trim().length === 0)`.\n *\n * Both reduce to the same observable behaviour when the guard is the plain\n * falsy check used here: create's call sites still pass untrimmed values\n * (behaviour preserved exactly), and test's call sites pre-trim so a\n * whitespace-only value collapses to \"\" and is rejected by `!raw` exactly as\n * before. Error strings and parsing semantics are identical to both originals.\n */\n\nexport const LINKED_TEST_PROTECTED_ENV_KEYS = new Set([\"PM_PATH\", \"PM_GLOBAL_PATH\", \"FORCE_COLOR\"]);\nexport const LINKED_TEST_ENV_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;\nexport const LINKED_TEST_PM_CONTEXT_MODE_VALUES = [\"schema\", \"tracker\", \"auto\"] as const;\n/**\n * Restricts linked test pm context mode values accepted by command, SDK, and storage contracts.\n */\nexport type LinkedTestPmContextMode = (typeof LINKED_TEST_PM_CONTEXT_MODE_VALUES)[number];\n\n/**\n * Implements parse linked test env set for the public runtime surface of this module.\n */\nexport function parseLinkedTestEnvSet(raw: string | undefined, optionName: string): Record<string, string> | undefined {\n if (!raw) {\n return undefined;\n }\n const assignments = raw\n .split(/[;\\n]/)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n if (assignments.length === 0) {\n throw new PmCliError(`${optionName} env_set must include at least one KEY=VALUE assignment`, EXIT_CODE.USAGE);\n }\n const envSet: Record<string, string> = {};\n for (const assignment of assignments) {\n const separatorIndex = assignment.indexOf(\"=\");\n if (separatorIndex <= 0) {\n throw new PmCliError(\n `${optionName} env_set entries must use KEY=VALUE and be separated by semicolons. Example: env_set=PORT=0;PLAYWRIGHT_BASE_URL=http://127.0.0.1:4173`,\n EXIT_CODE.USAGE,\n );\n }\n const key = assignment.slice(0, separatorIndex).trim();\n const value = assignment.slice(separatorIndex + 1);\n if (!LINKED_TEST_ENV_NAME_PATTERN.test(key)) {\n throw new PmCliError(`${optionName} env_set key \"${key}\" is invalid`, EXIT_CODE.USAGE);\n }\n if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {\n throw new PmCliError(`${optionName} env_set key \"${key}\" is reserved for sandbox safety`, EXIT_CODE.USAGE);\n }\n envSet[key] = value;\n }\n /* c8 ignore start -- envSet always has >=1 key here (assignments is non-empty and each adds one); the undefined branch is defensive. */\n return Object.keys(envSet).length > 0 ? envSet : undefined;\n /* c8 ignore stop */\n}\n\n/**\n * Implements parse linked test env clear for the public runtime surface of this module.\n */\nexport function parseLinkedTestEnvClear(raw: string | undefined, optionName: string): string[] | undefined {\n if (!raw) {\n return undefined;\n }\n const keys = splitCommaList(raw, { separators: /[;,\\n]/ });\n if (keys.length === 0) {\n throw new PmCliError(`${optionName} env_clear must include at least one environment variable name`, EXIT_CODE.USAGE);\n }\n for (const key of keys) {\n if (!LINKED_TEST_ENV_NAME_PATTERN.test(key)) {\n throw new PmCliError(`${optionName} env_clear key \"${key}\" is invalid`, EXIT_CODE.USAGE);\n }\n if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {\n throw new PmCliError(`${optionName} env_clear key \"${key}\" is reserved for sandbox safety`, EXIT_CODE.USAGE);\n }\n }\n return keys;\n}\n\n/**\n * Implements parse linked test boolean for the public runtime surface of this module.\n */\nexport function parseLinkedTestBoolean(raw: string | undefined, optionName: string, fieldLabel: string): boolean | undefined {\n if (!raw) {\n return undefined;\n }\n const value = raw.trim().toLowerCase();\n if (value === \"true\" || value === \"1\" || value === \"yes\") {\n return true;\n }\n if (value === \"false\" || value === \"0\" || value === \"no\") {\n return false;\n }\n throw new PmCliError(`${optionName} ${fieldLabel} must be one of true|false|1|0|yes|no`, EXIT_CODE.USAGE);\n}\n\n/**\n * Implements parse linked test context mode for the public runtime surface of this module.\n */\nexport function parseLinkedTestContextMode(\n raw: string | undefined,\n optionName: string,\n): LinkedTest[\"pm_context_mode\"] | undefined {\n if (!raw) {\n return undefined;\n }\n const value = raw.trim().toLowerCase();\n if ((LINKED_TEST_PM_CONTEXT_MODE_VALUES as readonly string[]).includes(value)) {\n return value as LinkedTest[\"pm_context_mode\"];\n }\n throw new PmCliError(\n `${optionName} pm_context_mode must be one of: ${LINKED_TEST_PM_CONTEXT_MODE_VALUES.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n}\n\n/**\n * Implements parse linked test string list for the public runtime surface of this module.\n */\nexport function parseLinkedTestStringList(raw: string | undefined): string[] | undefined {\n if (!raw) {\n return undefined;\n }\n const values = splitCommaList(raw, { separators: /[;\\n]/ });\n return values.length > 0 ? values : undefined;\n}\n\n/**\n * Implements parse linked test regex list for the public runtime surface of this module.\n */\nexport function parseLinkedTestRegexList(raw: string | undefined, optionName: string, fieldLabel: string): string[] | undefined {\n const values = parseLinkedTestStringList(raw);\n if (!values || values.length === 0) {\n return undefined;\n }\n for (const pattern of values) {\n try {\n // Validate regex syntax early so malformed assertions fail at parse time.\n // User-provided, per-item patterns only run during local CLI validation.\n new RegExp(pattern, \"m\");\n } catch (error: unknown) {\n throw new PmCliError(\n /* c8 ignore next -- RegExp only throws SyntaxError (an Error); String(error) fallback is defensive. */\n `${optionName} ${fieldLabel} includes invalid regex \"${pattern}\": ${error instanceof Error ? error.message : String(error)}`,\n EXIT_CODE.USAGE,\n );\n }\n }\n return values;\n}\n\n/**\n * Implements parse linked test min lines for the public runtime surface of this module.\n */\nexport function parseLinkedTestMinLines(raw: string | undefined, optionName: string): number | undefined {\n if (!raw) {\n return undefined;\n }\n const parsed = parseOptionalNumber(raw, \"assert_stdout_min_lines\");\n if (!Number.isInteger(parsed) || parsed < 0) {\n throw new PmCliError(`${optionName} assert_stdout_min_lines must be an integer >= 0`, EXIT_CODE.USAGE);\n }\n return parsed;\n}\n\n/**\n * Implements parse linked test assertion equals map for the public runtime surface of this module.\n */\nexport function parseLinkedTestAssertionEqualsMap(raw: string | undefined, optionName: string): Record<string, string> | undefined {\n if (!raw) {\n return undefined;\n }\n const assignments = raw\n .split(/[;\\n]/)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n if (assignments.length === 0) {\n throw new PmCliError(`${optionName} assert_json_field_equals must include at least one path=value assignment`, EXIT_CODE.USAGE);\n }\n const values: Record<string, string> = {};\n for (const assignment of assignments) {\n const separatorIndex = assignment.indexOf(\"=\");\n if (separatorIndex <= 0) {\n throw new PmCliError(\n `${optionName} assert_json_field_equals entries must use path=value and be separated by semicolons`,\n EXIT_CODE.USAGE,\n );\n }\n const key = assignment.slice(0, separatorIndex).trim();\n const value = assignment.slice(separatorIndex + 1).trim();\n if (key.length === 0 || value.length === 0) {\n throw new PmCliError(`${optionName} assert_json_field_equals entries must include non-empty path and value`, EXIT_CODE.USAGE);\n }\n values[key] = value;\n }\n /* c8 ignore start -- values always has >=1 key here (assignments is non-empty and each adds one); the undefined branch is defensive. */\n return Object.keys(values).length > 0 ? values : undefined;\n /* c8 ignore stop */\n}\n\n/**\n * Implements parse linked test assertion gte map for the public runtime surface of this module.\n */\nexport function parseLinkedTestAssertionGteMap(raw: string | undefined, optionName: string): Record<string, number> | undefined {\n if (!raw) {\n return undefined;\n }\n const assignments = raw\n .split(/[;\\n]/)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n if (assignments.length === 0) {\n throw new PmCliError(`${optionName} assert_json_field_gte must include at least one path=value assignment`, EXIT_CODE.USAGE);\n }\n const values: Record<string, number> = {};\n for (const assignment of assignments) {\n const separatorIndex = assignment.indexOf(\"=\");\n if (separatorIndex <= 0) {\n throw new PmCliError(\n `${optionName} assert_json_field_gte entries must use path=value and be separated by semicolons`,\n EXIT_CODE.USAGE,\n );\n }\n const key = assignment.slice(0, separatorIndex).trim();\n const valueRaw = assignment.slice(separatorIndex + 1).trim();\n if (key.length === 0 || valueRaw.length === 0) {\n throw new PmCliError(`${optionName} assert_json_field_gte entries must include non-empty path and value`, EXIT_CODE.USAGE);\n }\n const value = Number.parseFloat(valueRaw);\n if (!Number.isFinite(value)) {\n throw new PmCliError(`${optionName} assert_json_field_gte value for \"${key}\" must be numeric`, EXIT_CODE.USAGE);\n }\n values[key] = value;\n }\n /* c8 ignore start -- values always has >=1 key here (assignments is non-empty and each adds one); the undefined branch is defensive. */\n return Object.keys(values).length > 0 ? values : undefined;\n /* c8 ignore stop */\n}\n\n/**\n * Strict JSON linked-test entry parsing for `pm test --add-json` (pm-vcr2).\n *\n * Accepts a JSON object or array of objects whose keys match the structured\n * linked-test fields. Unlike `--add` CSV parsing, command strings are stored\n * verbatim: commas, nested quotes, `--` separators, and shell variables like\n * `$tmp` survive byte-identically.\n */\n\nconst LINKED_TEST_JSON_KEY_SET = new Set<string>(STRUCTURED_LINKED_TEST_KEYS);\n\ntype JsonRecord = Record<string, unknown>;\n\nfunction isPlainObject(value: unknown): value is JsonRecord {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction normalizeJsonEntryKeys(entry: JsonRecord, fail: (message: string) => PmCliError): JsonRecord {\n const normalized: JsonRecord = {};\n const unknownKeys: string[] = [];\n for (const [key, value] of Object.entries(entry)) {\n const normalizedKey = key.toLowerCase();\n if (!LINKED_TEST_JSON_KEY_SET.has(normalizedKey)) {\n unknownKeys.push(key);\n continue;\n }\n if (Object.hasOwn(normalized, normalizedKey)) {\n throw fail(`provides key \"${key}\" more than once after case normalization`);\n }\n normalized[normalizedKey] = value;\n }\n if (unknownKeys.length > 0) {\n throw fail(\n `does not recognize key${unknownKeys.length > 1 ? \"s\" : \"\"} ${unknownKeys.map((key) => `\"${key}\"`).join(\", \")}. Allowed keys: ${STRUCTURED_LINKED_TEST_KEYS.join(\", \")}.`,\n );\n }\n return normalized;\n}\n\nfunction readJsonEntryString(entry: JsonRecord, key: string, fail: (message: string) => PmCliError): string | undefined {\n if (!Object.hasOwn(entry, key)) {\n return undefined;\n }\n const value = entry[key];\n if (value === undefined) {\n return undefined;\n }\n if (typeof value !== \"string\") {\n throw fail(`field \"${key}\" must be a JSON string`);\n }\n return value;\n}\n\nfunction readJsonEntryStringList(entry: JsonRecord, key: string, fail: (message: string) => PmCliError): string[] | undefined {\n if (!Object.hasOwn(entry, key)) {\n return undefined;\n }\n const value = entry[key];\n if (value === undefined) {\n return undefined;\n }\n const list = typeof value === \"string\" ? [value] : value;\n if (!Array.isArray(list) || list.some((item) => typeof item !== \"string\")) {\n throw fail(`field \"${key}\" must be a string or an array of strings`);\n }\n const values = (list as string[]).filter((item) => item.length > 0);\n return values.length > 0 ? values : undefined;\n}\n\nfunction readJsonEntryRegexList(entry: JsonRecord, key: string, fail: (message: string) => PmCliError): string[] | undefined {\n const values = readJsonEntryStringList(entry, key, fail);\n if (!values) {\n return undefined;\n }\n for (const pattern of values) {\n try {\n new RegExp(pattern, \"m\");\n } catch (error: unknown) {\n throw fail(\n /* c8 ignore next -- RegExp only throws SyntaxError (an Error); String(error) fallback is defensive. */\n `field \"${key}\" includes invalid regex \"${pattern}\": ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n }\n return values;\n}\n\nfunction readJsonEntryNumber(value: unknown, key: string, fail: (message: string) => PmCliError): number {\n const parsed =\n typeof value === \"number\"\n ? value\n : typeof value === \"string\" && value.trim().length > 0\n ? Number(value.trim())\n : Number.NaN;\n if (typeof value === \"boolean\" || !Number.isFinite(parsed)) {\n throw fail(`field \"${key}\" must be a finite number (or numeric string)`);\n }\n return parsed;\n}\n\nfunction readJsonEntryTimeoutSeconds(entry: JsonRecord, fail: (message: string) => PmCliError): number | undefined {\n const timeoutSecondsRaw = entry.timeout_seconds;\n const timeoutAliasRaw = entry.timeout;\n if (timeoutSecondsRaw === undefined && timeoutAliasRaw === undefined) {\n return undefined;\n }\n const timeoutSeconds = timeoutSecondsRaw === undefined ? undefined : readJsonEntryNumber(timeoutSecondsRaw, \"timeout_seconds\", fail);\n const timeoutAlias = timeoutAliasRaw === undefined ? undefined : readJsonEntryNumber(timeoutAliasRaw, \"timeout\", fail);\n if (timeoutSeconds !== undefined && timeoutAlias !== undefined && timeoutSeconds !== timeoutAlias) {\n throw fail(\"timeout and timeout_seconds must match when both are provided\");\n }\n const timeout = timeoutSeconds ?? (timeoutAlias as number);\n if (!Number.isInteger(timeout) || timeout <= 0) {\n throw fail(\"timeout_seconds must be a positive integer\");\n }\n return timeout;\n}\n\nfunction readJsonEntryScope(entry: JsonRecord, fail: (message: string) => PmCliError): LinkScope {\n const value = readJsonEntryString(entry, \"scope\", fail);\n if (value === undefined) {\n return \"project\";\n }\n if (!(SCOPE_VALUES as readonly string[]).includes(value)) {\n throw fail(`field \"scope\" must be one of: ${SCOPE_VALUES.join(\", \")}`);\n }\n return value as LinkScope;\n}\n\nfunction readJsonEntryEnvSet(entry: JsonRecord, fail: (message: string) => PmCliError): Record<string, string> | undefined {\n if (!Object.hasOwn(entry, \"env_set\")) {\n return undefined;\n }\n const value = entry.env_set;\n if (value === undefined) {\n return undefined;\n }\n if (!isPlainObject(value)) {\n throw fail('field \"env_set\" must be a JSON object mapping environment names to string values');\n }\n const envSet: Record<string, string> = {};\n for (const [key, entryValue] of Object.entries(value)) {\n if (typeof entryValue !== \"string\") {\n throw fail(`field \"env_set\" value for \"${key}\" must be a string`);\n }\n if (!LINKED_TEST_ENV_NAME_PATTERN.test(key)) {\n throw fail(`field \"env_set\" key \"${key}\" is invalid`);\n }\n if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {\n throw fail(`field \"env_set\" key \"${key}\" is reserved for sandbox safety`);\n }\n envSet[key] = entryValue;\n }\n return Object.keys(envSet).length > 0 ? envSet : undefined;\n}\n\nfunction readJsonEntryEnvClear(entry: JsonRecord, fail: (message: string) => PmCliError): string[] | undefined {\n const keys = readJsonEntryStringList(entry, \"env_clear\", fail);\n if (!keys) {\n return undefined;\n }\n for (const key of keys) {\n if (!LINKED_TEST_ENV_NAME_PATTERN.test(key)) {\n throw fail(`field \"env_clear\" key \"${key}\" is invalid`);\n }\n if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {\n throw fail(`field \"env_clear\" key \"${key}\" is reserved for sandbox safety`);\n }\n }\n return keys;\n}\n\nfunction readJsonEntryBoolean(entry: JsonRecord, key: string, fail: (message: string) => PmCliError): boolean | undefined {\n if (!Object.hasOwn(entry, key)) {\n return undefined;\n }\n const value = entry[key];\n if (value === undefined) {\n return undefined;\n }\n if (typeof value !== \"boolean\") {\n throw fail(`field \"${key}\" must be a JSON boolean (true or false)`);\n }\n return value;\n}\n\nfunction readJsonEntryMinLines(entry: JsonRecord, fail: (message: string) => PmCliError): number | undefined {\n if (!Object.hasOwn(entry, \"assert_stdout_min_lines\")) {\n return undefined;\n }\n const value = entry.assert_stdout_min_lines;\n if (value === undefined) {\n return undefined;\n }\n const parsed = readJsonEntryNumber(value, \"assert_stdout_min_lines\", fail);\n if (!Number.isInteger(parsed) || parsed < 0) {\n throw fail('field \"assert_stdout_min_lines\" must be an integer >= 0');\n }\n return parsed;\n}\n\nfunction readJsonEntryEqualsMap(entry: JsonRecord, fail: (message: string) => PmCliError): Record<string, string> | undefined {\n if (!Object.hasOwn(entry, \"assert_json_field_equals\")) {\n return undefined;\n }\n const value = entry.assert_json_field_equals;\n if (value === undefined) {\n return undefined;\n }\n if (!isPlainObject(value)) {\n throw fail('field \"assert_json_field_equals\" must be a JSON object mapping field paths to expected values');\n }\n const values: Record<string, string> = {};\n for (const [key, entryValue] of Object.entries(value)) {\n if (key.trim().length === 0) {\n throw fail('field \"assert_json_field_equals\" keys must be non-empty field paths');\n }\n if (typeof entryValue !== \"string\" && typeof entryValue !== \"number\" && typeof entryValue !== \"boolean\") {\n throw fail(`field \"assert_json_field_equals\" value for \"${key}\" must be a string, number, or boolean`);\n }\n values[key] = String(entryValue);\n }\n return Object.keys(values).length > 0 ? values : undefined;\n}\n\nfunction readJsonEntryGteMap(entry: JsonRecord, fail: (message: string) => PmCliError): Record<string, number> | undefined {\n if (!Object.hasOwn(entry, \"assert_json_field_gte\")) {\n return undefined;\n }\n const value = entry.assert_json_field_gte;\n if (value === undefined) {\n return undefined;\n }\n if (!isPlainObject(value)) {\n throw fail('field \"assert_json_field_gte\" must be a JSON object mapping field paths to numeric minimums');\n }\n const values: Record<string, number> = {};\n for (const [key, entryValue] of Object.entries(value)) {\n if (key.trim().length === 0) {\n throw fail('field \"assert_json_field_gte\" keys must be non-empty field paths');\n }\n values[key] = readJsonEntryNumber(entryValue, `assert_json_field_gte.${key}`, fail);\n }\n return Object.keys(values).length > 0 ? values : undefined;\n}\n\nfunction parseLinkedTestJsonEntry(rawEntry: unknown, label: string, optionName: string): LinkedTest {\n const fail = (message: string): PmCliError => new PmCliError(`${optionName} ${label} ${message}`, EXIT_CODE.USAGE);\n if (!isPlainObject(rawEntry)) {\n throw fail(`must be a JSON object with linked-test fields. Allowed keys: ${STRUCTURED_LINKED_TEST_KEYS.join(\", \")}.`);\n }\n const entry = normalizeJsonEntryKeys(rawEntry, fail);\n const commandValue = readJsonEntryString(entry, \"command\", fail);\n const cmdAlias = readJsonEntryString(entry, \"cmd\", fail);\n if (commandValue !== undefined && cmdAlias !== undefined && commandValue !== cmdAlias) {\n throw fail(\"command and cmd must match when both are provided\");\n }\n const command = commandValue ?? cmdAlias;\n if (command === undefined || command.trim().length === 0) {\n throw fail('requires a non-empty \"command\" string');\n }\n const pathValue = readJsonEntryString(entry, \"path\", fail);\n const pmContextModeValue = readJsonEntryString(entry, \"pm_context_mode\", fail);\n if (pmContextModeValue !== undefined && !(LINKED_TEST_PM_CONTEXT_MODE_VALUES as readonly string[]).includes(pmContextModeValue)) {\n throw fail(`field \"pm_context_mode\" must be one of: ${LINKED_TEST_PM_CONTEXT_MODE_VALUES.join(\", \")}`);\n }\n const noteValue = readJsonEntryString(entry, \"note\", fail);\n return {\n command,\n path: pathValue !== undefined && pathValue.length > 0 ? pathValue : undefined,\n scope: readJsonEntryScope(entry, fail),\n timeout_seconds: readJsonEntryTimeoutSeconds(entry, fail),\n pm_context_mode: pmContextModeValue as LinkedTest[\"pm_context_mode\"],\n env_set: readJsonEntryEnvSet(entry, fail),\n env_clear: readJsonEntryEnvClear(entry, fail),\n shared_host_safe: readJsonEntryBoolean(entry, \"shared_host_safe\", fail),\n assert_stdout_contains: readJsonEntryStringList(entry, \"assert_stdout_contains\", fail),\n assert_stdout_regex: readJsonEntryRegexList(entry, \"assert_stdout_regex\", fail),\n assert_stderr_contains: readJsonEntryStringList(entry, \"assert_stderr_contains\", fail),\n assert_stderr_regex: readJsonEntryRegexList(entry, \"assert_stderr_regex\", fail),\n assert_stdout_min_lines: readJsonEntryMinLines(entry, fail),\n assert_json_field_equals: readJsonEntryEqualsMap(entry, fail),\n assert_json_field_gte: readJsonEntryGteMap(entry, fail),\n note: noteValue !== undefined && noteValue.trim().length > 0 ? noteValue.trim() : undefined,\n };\n}\n\n/**\n * Implements parse linked test json entries for the public runtime surface of this module.\n */\nexport function parseLinkedTestJsonEntries(raw: string, optionName: string): LinkedTest[] {\n const trimmed = raw.trim();\n if (trimmed.length === 0) {\n throw new PmCliError(\n `${optionName} requires a JSON object or array of objects describing linked-test entries`,\n EXIT_CODE.USAGE,\n );\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(trimmed) as unknown;\n } catch (error: unknown) {\n throw new PmCliError(\n /* c8 ignore next -- JSON.parse only throws SyntaxError (an Error); String(error) fallback is defensive. */\n `${optionName} value is not valid JSON: ${error instanceof Error ? error.message : String(error)}. Provide a JSON object or array of objects, e.g. '{\"command\":\"node scripts/check.js --flag value, with commas\",\"timeout_seconds\":120}'.`,\n EXIT_CODE.USAGE,\n );\n }\n const entries = Array.isArray(parsed) ? parsed : [parsed];\n if (entries.length === 0) {\n throw new PmCliError(`${optionName} array must include at least one linked-test entry object`, EXIT_CODE.USAGE);\n }\n return entries.map((entry, index) =>\n parseLinkedTestJsonEntry(entry, entries.length > 1 ? `entry ${index + 1}` : \"entry\", optionName),\n );\n}\n\nexport const _testOnlyLinkedTestParsers = {\n parseLinkedTestJsonEntry,\n};\n"],"names":[],"mappings":"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","debugId":"f38e3071-bb2a-530d-81ee-256b76a93b0c"}