@unbrained/pm-cli 2026.7.5 → 2026.7.6

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 (825) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/cli-bundle/chunks/activity-WJCGCYPU.js +18 -0
  3. package/dist/cli-bundle/chunks/activity-Z6QUAUSG.js +22 -0
  4. package/dist/cli-bundle/chunks/aggregate-BDM6EIAR.js +25 -0
  5. package/dist/cli-bundle/chunks/aggregate-VQ2DHU3S.js +21 -0
  6. package/dist/cli-bundle/chunks/append-BGML6VLD.js +19 -0
  7. package/dist/cli-bundle/chunks/append-RKJYPU74.js +15 -0
  8. package/dist/cli-bundle/chunks/chunk-22KBU3MW.js +57 -0
  9. package/dist/cli-bundle/chunks/chunk-24YG75HI.js +634 -0
  10. package/dist/cli-bundle/chunks/chunk-2XG4IZON.js +218 -0
  11. package/dist/cli-bundle/chunks/chunk-3GCS5SKL.js +228 -0
  12. package/dist/cli-bundle/chunks/chunk-3KTN6IBA.js +2330 -0
  13. package/dist/cli-bundle/chunks/chunk-3N6RRO2Q.js +808 -0
  14. package/dist/cli-bundle/chunks/chunk-3N6RRO2Q.js.map +7 -0
  15. package/dist/cli-bundle/chunks/chunk-3UJRFJ5R.js +1573 -0
  16. package/dist/cli-bundle/chunks/chunk-3VHSI5FL.js +1001 -0
  17. package/dist/cli-bundle/chunks/chunk-425E4QL5.js +278 -0
  18. package/dist/cli-bundle/chunks/chunk-425E4QL5.js.map +7 -0
  19. package/dist/cli-bundle/chunks/chunk-45FYNUFJ.js +38 -0
  20. package/dist/cli-bundle/chunks/chunk-45FYNUFJ.js.map +1 -0
  21. package/dist/cli-bundle/chunks/chunk-46CUF5L6.js +1018 -0
  22. package/dist/cli-bundle/chunks/chunk-4CJFCTLM.js +222 -0
  23. package/dist/cli-bundle/chunks/chunk-4CJFCTLM.js.map +1 -0
  24. package/dist/cli-bundle/chunks/chunk-4HIFVN7N.js +249 -0
  25. package/dist/cli-bundle/chunks/chunk-4HIFVN7N.js.map +7 -0
  26. package/dist/cli-bundle/chunks/chunk-4IWYTWGF.js +819 -0
  27. package/dist/cli-bundle/chunks/chunk-4LELACOL.js +391 -0
  28. package/dist/cli-bundle/chunks/chunk-4LELACOL.js.map +1 -0
  29. package/dist/cli-bundle/chunks/chunk-4MZVRJOE.js +279 -0
  30. package/dist/cli-bundle/chunks/chunk-4MZVRJOE.js.map +1 -0
  31. package/dist/cli-bundle/chunks/chunk-4ZBE5GUN.js +184 -0
  32. package/dist/cli-bundle/chunks/chunk-4ZBE5GUN.js.map +7 -0
  33. package/dist/cli-bundle/chunks/chunk-57NWPFF2.js +5640 -0
  34. package/dist/cli-bundle/chunks/chunk-57NWPFF2.js.map +1 -0
  35. package/dist/cli-bundle/chunks/chunk-5AJXHQM7.js +268 -0
  36. package/dist/cli-bundle/chunks/chunk-5AJXHQM7.js.map +1 -0
  37. package/dist/cli-bundle/chunks/chunk-5BMM6XQY.js +508 -0
  38. package/dist/cli-bundle/chunks/chunk-5BMM6XQY.js.map +1 -0
  39. package/dist/cli-bundle/chunks/chunk-5GZ7TDD6.js +1868 -0
  40. package/dist/cli-bundle/chunks/chunk-5VAA4YHR.js +1749 -0
  41. package/dist/cli-bundle/chunks/chunk-64YKRTSV.js +1961 -0
  42. package/dist/cli-bundle/chunks/chunk-6LLVNJXT.js +429 -0
  43. package/dist/cli-bundle/chunks/chunk-6QBJLYBP.js +120 -0
  44. package/dist/cli-bundle/chunks/chunk-6QBJLYBP.js.map +1 -0
  45. package/dist/cli-bundle/chunks/chunk-7D7OOEYG.js +278 -0
  46. package/dist/cli-bundle/chunks/chunk-7D7OOEYG.js.map +7 -0
  47. package/dist/cli-bundle/chunks/chunk-7DT4WSH2.js +60 -0
  48. package/dist/cli-bundle/chunks/chunk-7WBAJSS6.js +102 -0
  49. package/dist/cli-bundle/chunks/chunk-AGHMOTGM.js +150 -0
  50. package/dist/cli-bundle/chunks/chunk-ALFPSEWO.js +112 -0
  51. package/dist/cli-bundle/chunks/chunk-AZYGZGGI.js +361 -0
  52. package/dist/cli-bundle/chunks/chunk-B6DUFX6H.js +1413 -0
  53. package/dist/cli-bundle/chunks/chunk-B6XS3R3O.js +275 -0
  54. package/dist/cli-bundle/chunks/chunk-B6XS3R3O.js.map +1 -0
  55. package/dist/cli-bundle/chunks/chunk-B7FRNMYN.js +421 -0
  56. package/dist/cli-bundle/chunks/chunk-B7FRNMYN.js.map +1 -0
  57. package/dist/cli-bundle/chunks/chunk-C5JBZRPU.js +1985 -0
  58. package/dist/cli-bundle/chunks/chunk-CFB33L7W.js +398 -0
  59. package/dist/cli-bundle/chunks/chunk-CFNGIXZP.js +784 -0
  60. package/dist/cli-bundle/chunks/chunk-CFNGIXZP.js.map +1 -0
  61. package/dist/cli-bundle/chunks/chunk-CL36D4PC.js +225 -0
  62. package/dist/cli-bundle/chunks/chunk-COSPOP7H.js +6677 -0
  63. package/dist/cli-bundle/chunks/chunk-COSPOP7H.js.map +7 -0
  64. package/dist/cli-bundle/chunks/chunk-COWTDV6B.js +3461 -0
  65. package/dist/cli-bundle/chunks/chunk-COWTDV6B.js.map +7 -0
  66. package/dist/cli-bundle/chunks/chunk-CRVYGJUI.js +553 -0
  67. package/dist/cli-bundle/chunks/chunk-CRVYGJUI.js.map +1 -0
  68. package/dist/cli-bundle/chunks/chunk-D2XRLB55.js +645 -0
  69. package/dist/cli-bundle/chunks/chunk-DEWEK6AN.js +1858 -0
  70. package/dist/cli-bundle/chunks/chunk-DMRNBQOI.js +1063 -0
  71. package/dist/cli-bundle/chunks/chunk-DMRNBQOI.js.map +1 -0
  72. package/dist/cli-bundle/chunks/chunk-E3SZTQ4K.js +1932 -0
  73. package/dist/cli-bundle/chunks/chunk-E42XTBSP.js +1359 -0
  74. package/dist/cli-bundle/chunks/chunk-E42XTBSP.js.map +7 -0
  75. package/dist/cli-bundle/chunks/chunk-EBRZZ54H.js +655 -0
  76. package/dist/cli-bundle/chunks/chunk-EBRZZ54H.js.map +1 -0
  77. package/dist/cli-bundle/chunks/chunk-EGAP5OWD.js +4712 -0
  78. package/dist/cli-bundle/chunks/chunk-EGAP5OWD.js.map +1 -0
  79. package/dist/cli-bundle/chunks/chunk-EGY6JBQ3.js +160 -0
  80. package/dist/cli-bundle/chunks/chunk-EKFNL33R.js +222 -0
  81. package/dist/cli-bundle/chunks/chunk-ENGQOEUY.js +1704 -0
  82. package/dist/cli-bundle/chunks/chunk-EOKXK3R3.js +2046 -0
  83. package/dist/cli-bundle/chunks/chunk-F3K4JGFD.js +121 -0
  84. package/dist/cli-bundle/chunks/chunk-FLZSGSQR.js +231 -0
  85. package/dist/cli-bundle/chunks/chunk-FOUYJE4A.js +2090 -0
  86. package/dist/cli-bundle/chunks/chunk-FOUYJE4A.js.map +1 -0
  87. package/dist/cli-bundle/chunks/chunk-FT3QTERD.js +550 -0
  88. package/dist/cli-bundle/chunks/chunk-G24G7ZAV.js +1570 -0
  89. package/dist/cli-bundle/chunks/chunk-G64OCSKU.js +444 -0
  90. package/dist/cli-bundle/chunks/chunk-GANUTS7W.js +1775 -0
  91. package/dist/cli-bundle/chunks/chunk-GBAX2ZAQ.js +401 -0
  92. package/dist/cli-bundle/chunks/chunk-GDDAGPWJ.js +105 -0
  93. package/dist/cli-bundle/chunks/chunk-GDDAGPWJ.js.map +1 -0
  94. package/dist/cli-bundle/chunks/chunk-GEYZ4G4O.js +239 -0
  95. package/dist/cli-bundle/chunks/chunk-GEYZ4G4O.js.map +1 -0
  96. package/dist/cli-bundle/chunks/chunk-GJ7QC5DJ.js +624 -0
  97. package/dist/cli-bundle/chunks/chunk-GPLPTGOV.js +530 -0
  98. package/dist/cli-bundle/chunks/chunk-GZRDYONU.js +1005 -0
  99. package/dist/cli-bundle/chunks/chunk-HFDADVJZ.js +1356 -0
  100. package/dist/cli-bundle/chunks/chunk-HFDADVJZ.js.map +1 -0
  101. package/dist/cli-bundle/chunks/chunk-HIHMT6WS.js +41 -0
  102. package/dist/cli-bundle/chunks/chunk-HIHMT6WS.js.map +7 -0
  103. package/dist/cli-bundle/chunks/chunk-HN6NSXNW.js +277 -0
  104. package/dist/cli-bundle/chunks/chunk-HN6NSXNW.js.map +7 -0
  105. package/dist/cli-bundle/chunks/chunk-HOVCGJSD.js +293 -0
  106. package/dist/cli-bundle/chunks/chunk-HOVCGJSD.js.map +1 -0
  107. package/dist/cli-bundle/chunks/chunk-I36Y7PCE.js +38 -0
  108. package/dist/cli-bundle/chunks/chunk-I36Y7PCE.js.map +1 -0
  109. package/dist/cli-bundle/chunks/chunk-IQNVQHOP.js +309 -0
  110. package/dist/cli-bundle/chunks/chunk-IQNVQHOP.js.map +7 -0
  111. package/dist/cli-bundle/chunks/chunk-IWVU4C2F.js +358 -0
  112. package/dist/cli-bundle/chunks/chunk-IX5BXEMX.js +267 -0
  113. package/dist/cli-bundle/chunks/chunk-JDDLOQAE.js +265 -0
  114. package/dist/cli-bundle/chunks/chunk-JJP45OEI.js +119 -0
  115. package/dist/cli-bundle/chunks/chunk-JQXPY7DN.js +2257 -0
  116. package/dist/cli-bundle/chunks/chunk-JQXPY7DN.js.map +7 -0
  117. package/dist/cli-bundle/chunks/chunk-JVH7QBVV.js +24 -0
  118. package/dist/cli-bundle/chunks/chunk-JVH7QBVV.js.map +1 -0
  119. package/dist/cli-bundle/chunks/chunk-K46RF36U.js +207 -0
  120. package/dist/cli-bundle/chunks/chunk-KERMZVY5.js +371 -0
  121. package/dist/cli-bundle/chunks/chunk-KERMZVY5.js.map +7 -0
  122. package/dist/cli-bundle/chunks/chunk-KGFUY7WN.js +814 -0
  123. package/dist/cli-bundle/chunks/chunk-KSRUHV2H.js +76 -0
  124. package/dist/cli-bundle/chunks/chunk-KSRUHV2H.js.map +1 -0
  125. package/dist/cli-bundle/chunks/chunk-KUOOJR35.js +260 -0
  126. package/dist/cli-bundle/chunks/chunk-L5PSPMZ4.js +277 -0
  127. package/dist/cli-bundle/chunks/chunk-LK6XLOGP.js +5799 -0
  128. package/dist/cli-bundle/chunks/chunk-LK6XLOGP.js.map +7 -0
  129. package/dist/cli-bundle/chunks/chunk-LP3HSFZ2.js +140 -0
  130. package/dist/cli-bundle/chunks/chunk-LP3HSFZ2.js.map +1 -0
  131. package/dist/cli-bundle/chunks/chunk-LPSSSDJR.js +1239 -0
  132. package/dist/cli-bundle/chunks/chunk-M7JNBQAD.js +225 -0
  133. package/dist/cli-bundle/chunks/chunk-M7JNBQAD.js.map +7 -0
  134. package/dist/cli-bundle/chunks/chunk-MA4SM3QZ.js +655 -0
  135. package/dist/cli-bundle/chunks/chunk-MAWDPCJW.js +1601 -0
  136. package/dist/cli-bundle/chunks/chunk-MAWDPCJW.js.map +1 -0
  137. package/dist/cli-bundle/chunks/chunk-MFAZSEM5.js +1031 -0
  138. package/dist/cli-bundle/chunks/chunk-MFSCBT5Q.js +995 -0
  139. package/dist/cli-bundle/chunks/chunk-ML5X7DP2.js +296 -0
  140. package/dist/cli-bundle/chunks/chunk-ML5X7DP2.js.map +1 -0
  141. package/dist/cli-bundle/chunks/chunk-MLIYFOE7.js +357 -0
  142. package/dist/cli-bundle/chunks/chunk-MR6FJ7LL.js +2043 -0
  143. package/dist/cli-bundle/chunks/chunk-MR6FJ7LL.js.map +7 -0
  144. package/dist/cli-bundle/chunks/chunk-MUH7A3FD.js +61 -0
  145. package/dist/cli-bundle/chunks/chunk-MVSP7WGJ.js +108 -0
  146. package/dist/cli-bundle/chunks/chunk-MVSP7WGJ.js.map +7 -0
  147. package/dist/cli-bundle/chunks/chunk-MVYWGY2A.js +262 -0
  148. package/dist/cli-bundle/chunks/chunk-MWMVPCIE.js +1423 -0
  149. package/dist/cli-bundle/chunks/chunk-MXYA5SAJ.js +2033 -0
  150. package/dist/cli-bundle/chunks/chunk-MXYA5SAJ.js.map +1 -0
  151. package/dist/cli-bundle/chunks/chunk-N745W3B3.js +1604 -0
  152. package/dist/cli-bundle/chunks/chunk-N745W3B3.js.map +7 -0
  153. package/dist/cli-bundle/chunks/chunk-NB7RLQFW.js +57 -0
  154. package/dist/cli-bundle/chunks/chunk-NB7RLQFW.js.map +7 -0
  155. package/dist/cli-bundle/chunks/chunk-NC33K5ZS.js +123 -0
  156. package/dist/cli-bundle/chunks/chunk-NC33K5ZS.js.map +7 -0
  157. package/dist/cli-bundle/chunks/chunk-NGXQ3PFT.js +263 -0
  158. package/dist/cli-bundle/chunks/chunk-NMP5I3I5.js +1615 -0
  159. package/dist/cli-bundle/chunks/chunk-NO442GWJ.js +41 -0
  160. package/dist/cli-bundle/chunks/chunk-NO442GWJ.js.map +7 -0
  161. package/dist/cli-bundle/chunks/chunk-NZEHECMW.js +658 -0
  162. package/dist/cli-bundle/chunks/chunk-NZEHECMW.js.map +7 -0
  163. package/dist/cli-bundle/chunks/chunk-O6AWCQRQ.js +124 -0
  164. package/dist/cli-bundle/chunks/chunk-OGWQ2IEP.js +240 -0
  165. package/dist/cli-bundle/chunks/chunk-PZUGEOPS.js +143 -0
  166. package/dist/cli-bundle/chunks/chunk-PZUGEOPS.js.map +7 -0
  167. package/dist/cli-bundle/chunks/chunk-QLMX7SRD.js +210 -0
  168. package/dist/cli-bundle/chunks/chunk-QX6HM775.js +398 -0
  169. package/dist/cli-bundle/chunks/chunk-QX6HM775.js.map +7 -0
  170. package/dist/cli-bundle/chunks/chunk-R5BMJX33.js +27 -0
  171. package/dist/cli-bundle/chunks/chunk-R5BMJX33.js.map +7 -0
  172. package/dist/cli-bundle/chunks/chunk-RCQZK2GO.js +296 -0
  173. package/dist/cli-bundle/chunks/chunk-RCQZK2GO.js.map +7 -0
  174. package/dist/cli-bundle/chunks/chunk-RFNYTESG.js +520 -0
  175. package/dist/cli-bundle/chunks/chunk-RKQOO2UM.js +79 -0
  176. package/dist/cli-bundle/chunks/chunk-RKQOO2UM.js.map +7 -0
  177. package/dist/cli-bundle/chunks/chunk-RQLT6ZWB.js +282 -0
  178. package/dist/cli-bundle/chunks/chunk-RQLT6ZWB.js.map +7 -0
  179. package/dist/cli-bundle/chunks/chunk-S3JS6YVZ.js +274 -0
  180. package/dist/cli-bundle/chunks/chunk-S3JS6YVZ.js.map +1 -0
  181. package/dist/cli-bundle/chunks/chunk-SCUR7K7N.js +2198 -0
  182. package/dist/cli-bundle/chunks/chunk-SGMFPXKR.js +68 -0
  183. package/dist/cli-bundle/chunks/chunk-SGMFPXKR.js.map +1 -0
  184. package/dist/cli-bundle/chunks/chunk-SHQY2IDC.js +1977 -0
  185. package/dist/cli-bundle/chunks/chunk-SMB7RV23.js +130 -0
  186. package/dist/cli-bundle/chunks/chunk-SPZ6DOGY.js +1041 -0
  187. package/dist/cli-bundle/chunks/chunk-SQOIV3OQ.js +563 -0
  188. package/dist/cli-bundle/chunks/chunk-SQOIV3OQ.js.map +7 -0
  189. package/dist/cli-bundle/chunks/chunk-SQYJ4HF2.js +1765 -0
  190. package/dist/cli-bundle/chunks/chunk-T42JWV3F.js +822 -0
  191. package/dist/cli-bundle/chunks/chunk-TKD5VCTD.js +6567 -0
  192. package/dist/cli-bundle/chunks/chunk-TKD5VCTD.js.map +1 -0
  193. package/dist/cli-bundle/chunks/chunk-TULGS6X6.js +2132 -0
  194. package/dist/cli-bundle/chunks/chunk-TZXRBVAM.js +2306 -0
  195. package/dist/cli-bundle/chunks/chunk-UH7T2DAX.js +181 -0
  196. package/dist/cli-bundle/chunks/chunk-UH7T2DAX.js.map +1 -0
  197. package/dist/cli-bundle/chunks/chunk-VIIUS6N6.js +4773 -0
  198. package/dist/cli-bundle/chunks/chunk-VIIUS6N6.js.map +7 -0
  199. package/dist/cli-bundle/chunks/chunk-VPIM42PC.js +367 -0
  200. package/dist/cli-bundle/chunks/chunk-VQRSPVME.js +368 -0
  201. package/dist/cli-bundle/chunks/chunk-VQRSPVME.js.map +1 -0
  202. package/dist/cli-bundle/chunks/chunk-W3DSJQIO.js +447 -0
  203. package/dist/cli-bundle/chunks/chunk-W572BIEB.js +1249 -0
  204. package/dist/cli-bundle/chunks/chunk-W6DYWXPQ.js +1073 -0
  205. package/dist/cli-bundle/chunks/chunk-W6DYWXPQ.js.map +7 -0
  206. package/dist/cli-bundle/chunks/chunk-WG34ZNQQ.js +3423 -0
  207. package/dist/cli-bundle/chunks/chunk-WG34ZNQQ.js.map +1 -0
  208. package/dist/cli-bundle/chunks/chunk-WLSM645P.js +2247 -0
  209. package/dist/cli-bundle/chunks/chunk-WLSM645P.js.map +1 -0
  210. package/dist/cli-bundle/chunks/chunk-WRTENIX3.js +215 -0
  211. package/dist/cli-bundle/chunks/chunk-WSBLYDWV.js +388 -0
  212. package/dist/cli-bundle/chunks/chunk-WSBLYDWV.js.map +1 -0
  213. package/dist/cli-bundle/chunks/chunk-XB7KFVFI.js +533 -0
  214. package/dist/cli-bundle/chunks/chunk-XC5BURG2.js +306 -0
  215. package/dist/cli-bundle/chunks/chunk-XC5BURG2.js.map +1 -0
  216. package/dist/cli-bundle/chunks/chunk-XDB7RWQT.js +424 -0
  217. package/dist/cli-bundle/chunks/chunk-XDB7RWQT.js.map +7 -0
  218. package/dist/cli-bundle/chunks/chunk-XG625QP4.js +58 -0
  219. package/dist/cli-bundle/chunks/chunk-XHET7YUZ.js +71 -0
  220. package/dist/cli-bundle/chunks/chunk-XHET7YUZ.js.map +7 -0
  221. package/dist/cli-bundle/chunks/chunk-XUC7PI2H.js +243 -0
  222. package/dist/cli-bundle/chunks/chunk-Y46GD4IX.js +116 -0
  223. package/dist/cli-bundle/chunks/chunk-Y4M7CPQP.js +804 -0
  224. package/dist/cli-bundle/chunks/chunk-Y6BK55A3.js +2128 -0
  225. package/dist/cli-bundle/chunks/chunk-Y6BK55A3.js.map +7 -0
  226. package/dist/cli-bundle/chunks/chunk-YN7Y6DQZ.js +426 -0
  227. package/dist/cli-bundle/chunks/chunk-Z3U3U5KD.js +511 -0
  228. package/dist/cli-bundle/chunks/chunk-Z3U3U5KD.js.map +7 -0
  229. package/dist/cli-bundle/chunks/chunk-ZGK4L4JM.js +133 -0
  230. package/dist/cli-bundle/chunks/chunk-ZJ262CED.js +394 -0
  231. package/dist/cli-bundle/chunks/chunk-ZJ262CED.js.map +7 -0
  232. package/dist/cli-bundle/chunks/chunk-ZO3XKAOP.js +299 -0
  233. package/dist/cli-bundle/chunks/chunk-ZO3XKAOP.js.map +7 -0
  234. package/dist/cli-bundle/chunks/chunk-ZSUS2OD3.js +2105 -0
  235. package/dist/cli-bundle/chunks/chunk-ZWBEPGD7.js +54 -0
  236. package/dist/cli-bundle/chunks/chunk-ZWBEPGD7.js.map +1 -0
  237. package/dist/cli-bundle/chunks/chunk-ZZD4J5XY.js +1570 -0
  238. package/dist/cli-bundle/chunks/claim-RFS7BROJ.js +19 -0
  239. package/dist/cli-bundle/chunks/claim-XP5AWZ5H.js +23 -0
  240. package/dist/cli-bundle/chunks/close-2SSSHHUZ.js +20 -0
  241. package/dist/cli-bundle/chunks/close-GEANHQ2J.js +16 -0
  242. package/dist/cli-bundle/chunks/close-many-CMZW7ITN.js +31 -0
  243. package/dist/cli-bundle/chunks/close-many-ZFDIG6M7.js +27 -0
  244. package/dist/cli-bundle/chunks/comments-MFSYVNNU.js +21 -0
  245. package/dist/cli-bundle/chunks/comments-XUBPXDYX.js +17 -0
  246. package/dist/cli-bundle/chunks/config-D7XQMONX.js +18 -0
  247. package/dist/cli-bundle/chunks/config-T4FHBSYN.js +22 -0
  248. package/dist/cli-bundle/chunks/context-DIU275XI.js +48 -0
  249. package/dist/cli-bundle/chunks/context-JCOYB4LZ.js +44 -0
  250. package/dist/cli-bundle/chunks/contracts-BVO7CSLK.js +12 -0
  251. package/dist/cli-bundle/chunks/contracts-NYPEW2G4.js +16 -0
  252. package/dist/cli-bundle/chunks/copy-32ROBIDL.js +17 -0
  253. package/dist/cli-bundle/chunks/copy-NAGLGMHZ.js +13 -0
  254. package/dist/cli-bundle/chunks/create-4V7SWNBB.js +30 -0
  255. package/dist/cli-bundle/chunks/create-E77SDCUP.js +34 -0
  256. package/dist/cli-bundle/chunks/delete-NQI5OSKN.js +14 -0
  257. package/dist/cli-bundle/chunks/delete-RA5KTCLB.js +18 -0
  258. package/dist/cli-bundle/chunks/deps-32SU7HO5.js +21 -0
  259. package/dist/cli-bundle/chunks/deps-T7SCWXEX.js +17 -0
  260. package/dist/cli-bundle/chunks/docs-RRUPT7O2.js +22 -0
  261. package/dist/cli-bundle/chunks/docs-WL2IWGWV.js +18 -0
  262. package/dist/cli-bundle/chunks/eval-NF2J5SHR.js +23 -0
  263. package/dist/cli-bundle/chunks/eval-SKDT3MZU.js +27 -0
  264. package/dist/cli-bundle/chunks/extension-LAXKCAYE.js +42 -0
  265. package/dist/cli-bundle/chunks/extension-LAXKCAYE.js.map +1 -0
  266. package/dist/cli-bundle/chunks/extension-ZISPBRBC.js +38 -0
  267. package/dist/cli-bundle/chunks/extension-ZISPBRBC.js.map +7 -0
  268. package/dist/cli-bundle/chunks/files-EWRQHGIS.js +22 -0
  269. package/dist/cli-bundle/chunks/files-EWRQHGIS.js.map +7 -0
  270. package/dist/cli-bundle/chunks/files-PYKR2UUG.js +26 -0
  271. package/dist/cli-bundle/chunks/files-PYKR2UUG.js.map +1 -0
  272. package/dist/cli-bundle/chunks/focus-4T7TM4MT.js +18 -0
  273. package/dist/cli-bundle/chunks/focus-4T7TM4MT.js.map +1 -0
  274. package/dist/cli-bundle/chunks/focus-L3YUASOD.js +14 -0
  275. package/dist/cli-bundle/chunks/focus-L3YUASOD.js.map +7 -0
  276. package/dist/cli-bundle/chunks/gc-2DNMPXMC.js +16 -0
  277. package/dist/cli-bundle/chunks/gc-2DNMPXMC.js.map +1 -0
  278. package/dist/cli-bundle/chunks/gc-2PCTYYRI.js +12 -0
  279. package/dist/cli-bundle/chunks/gc-2PCTYYRI.js.map +7 -0
  280. package/dist/cli-bundle/chunks/get-7DMITJ3G.js +23 -0
  281. package/dist/cli-bundle/chunks/get-7DMITJ3G.js.map +1 -0
  282. package/dist/cli-bundle/chunks/get-VKQXCXLL.js +19 -0
  283. package/dist/cli-bundle/chunks/get-VKQXCXLL.js.map +7 -0
  284. package/dist/cli-bundle/chunks/health-CVSTAR2F.js +31 -0
  285. package/dist/cli-bundle/chunks/health-CVSTAR2F.js.map +7 -0
  286. package/dist/cli-bundle/chunks/health-TV3GKTFN.js +35 -0
  287. package/dist/cli-bundle/chunks/health-TV3GKTFN.js.map +1 -0
  288. package/dist/cli-bundle/chunks/history-D4JUX5XV.js +20 -0
  289. package/dist/cli-bundle/chunks/history-D4JUX5XV.js.map +7 -0
  290. package/dist/cli-bundle/chunks/history-LQ2UWZTE.js +24 -0
  291. package/dist/cli-bundle/chunks/history-LQ2UWZTE.js.map +1 -0
  292. package/dist/cli-bundle/chunks/history-compact-3MNXLKAT.js +29 -0
  293. package/dist/cli-bundle/chunks/history-compact-3MNXLKAT.js.map +1 -0
  294. package/dist/cli-bundle/chunks/history-compact-QWEO32FP.js +25 -0
  295. package/dist/cli-bundle/chunks/history-compact-QWEO32FP.js.map +7 -0
  296. package/dist/cli-bundle/chunks/history-redact-3OIVBVIY.js +21 -0
  297. package/dist/cli-bundle/chunks/history-redact-3OIVBVIY.js.map +7 -0
  298. package/dist/cli-bundle/chunks/history-redact-P6DYF55G.js +25 -0
  299. package/dist/cli-bundle/chunks/history-redact-P6DYF55G.js.map +1 -0
  300. package/dist/cli-bundle/chunks/history-repair-I3E73UGQ.js +23 -0
  301. package/dist/cli-bundle/chunks/history-repair-I3E73UGQ.js.map +7 -0
  302. package/dist/cli-bundle/chunks/history-repair-ZJQFMWPD.js +27 -0
  303. package/dist/cli-bundle/chunks/history-repair-ZJQFMWPD.js.map +1 -0
  304. package/dist/cli-bundle/chunks/init-C3LJPWQZ.js +30 -0
  305. package/dist/cli-bundle/chunks/init-C3LJPWQZ.js.map +1 -0
  306. package/dist/cli-bundle/chunks/init-J3DPGWQI.js +26 -0
  307. package/dist/cli-bundle/chunks/init-J3DPGWQI.js.map +7 -0
  308. package/dist/cli-bundle/chunks/learnings-5BO2SNDW.js +21 -0
  309. package/dist/cli-bundle/chunks/learnings-5BO2SNDW.js.map +1 -0
  310. package/dist/cli-bundle/chunks/learnings-OGP4JB4I.js +17 -0
  311. package/dist/cli-bundle/chunks/learnings-OGP4JB4I.js.map +7 -0
  312. package/dist/cli-bundle/chunks/list-O5NZVSPN.js +36 -0
  313. package/dist/cli-bundle/chunks/list-O5NZVSPN.js.map +1 -0
  314. package/dist/cli-bundle/chunks/list-Z55YCNTC.js +32 -0
  315. package/dist/cli-bundle/chunks/list-Z55YCNTC.js.map +7 -0
  316. package/dist/cli-bundle/chunks/next-GBNTGXFC.js +28 -0
  317. package/dist/cli-bundle/chunks/next-GBNTGXFC.js.map +7 -0
  318. package/dist/cli-bundle/chunks/next-QKW7PTKE.js +32 -0
  319. package/dist/cli-bundle/chunks/next-QKW7PTKE.js.map +1 -0
  320. package/dist/cli-bundle/chunks/notes-R5FZTKWF.js +17 -0
  321. package/dist/cli-bundle/chunks/notes-R5FZTKWF.js.map +7 -0
  322. package/dist/cli-bundle/chunks/notes-WCGIULVG.js +21 -0
  323. package/dist/cli-bundle/chunks/notes-WCGIULVG.js.map +1 -0
  324. package/dist/cli-bundle/chunks/plan-ADISFYH4.js +29 -0
  325. package/dist/cli-bundle/chunks/plan-ADISFYH4.js.map +7 -0
  326. package/dist/cli-bundle/chunks/plan-CHVE7PBR.js +33 -0
  327. package/dist/cli-bundle/chunks/plan-CHVE7PBR.js.map +1 -0
  328. package/dist/cli-bundle/chunks/profile-LD23PSI6.js +37 -0
  329. package/dist/cli-bundle/chunks/profile-LD23PSI6.js.map +7 -0
  330. package/dist/cli-bundle/chunks/profile-ZXGSKBJD.js +41 -0
  331. package/dist/cli-bundle/chunks/profile-ZXGSKBJD.js.map +1 -0
  332. package/dist/cli-bundle/chunks/register-list-query-B42JCCOI.js +409 -0
  333. package/dist/cli-bundle/chunks/register-list-query-OEYQHFXO.js +419 -0
  334. package/dist/cli-bundle/chunks/register-mutation-3QXIHCQG.js +1273 -0
  335. package/dist/cli-bundle/chunks/register-mutation-IAEST26S.js +1256 -0
  336. package/dist/cli-bundle/chunks/register-operations-I3M3U7DS.js +19 -0
  337. package/dist/cli-bundle/chunks/register-operations-I3M3U7DS.js.map +7 -0
  338. package/dist/cli-bundle/chunks/register-operations-UHKENLZV.js +23 -0
  339. package/dist/cli-bundle/chunks/register-operations-UHKENLZV.js.map +1 -0
  340. package/dist/cli-bundle/chunks/register-setup-3ZVVX2VN.js +324 -0
  341. package/dist/cli-bundle/chunks/register-setup-3ZVVX2VN.js.map +7 -0
  342. package/dist/cli-bundle/chunks/register-setup-Q6KFNIOZ.js +321 -0
  343. package/dist/cli-bundle/chunks/register-setup-Q6KFNIOZ.js.map +1 -0
  344. package/dist/cli-bundle/chunks/restore-5RQHAPMA.js +23 -0
  345. package/dist/cli-bundle/chunks/restore-5RQHAPMA.js.map +1 -0
  346. package/dist/cli-bundle/chunks/restore-PNEIBBLW.js +19 -0
  347. package/dist/cli-bundle/chunks/restore-PNEIBBLW.js.map +7 -0
  348. package/dist/cli-bundle/chunks/scheduling-shortcuts-4G56YHVQ.js +29 -0
  349. package/dist/cli-bundle/chunks/scheduling-shortcuts-4G56YHVQ.js.map +1 -0
  350. package/dist/cli-bundle/chunks/scheduling-shortcuts-75DULBYP.js +25 -0
  351. package/dist/cli-bundle/chunks/scheduling-shortcuts-75DULBYP.js.map +7 -0
  352. package/dist/cli-bundle/chunks/schema-245WW4G2.js +78 -0
  353. package/dist/cli-bundle/chunks/schema-245WW4G2.js.map +1 -0
  354. package/dist/cli-bundle/chunks/schema-HBORFC6B.js +74 -0
  355. package/dist/cli-bundle/chunks/schema-HBORFC6B.js.map +7 -0
  356. package/dist/cli-bundle/chunks/search-AOZC5SIK.js +34 -0
  357. package/dist/cli-bundle/chunks/search-AOZC5SIK.js.map +7 -0
  358. package/dist/cli-bundle/chunks/search-DRXPGHD7.js +38 -0
  359. package/dist/cli-bundle/chunks/search-DRXPGHD7.js.map +1 -0
  360. package/dist/cli-bundle/chunks/stats-NJG4NLHG.js +21 -0
  361. package/dist/cli-bundle/chunks/stats-NJG4NLHG.js.map +1 -0
  362. package/dist/cli-bundle/chunks/stats-RG6AG4N2.js +17 -0
  363. package/dist/cli-bundle/chunks/stats-RG6AG4N2.js.map +7 -0
  364. package/dist/cli-bundle/chunks/telemetry-HQC2JJIF.js +14 -0
  365. package/dist/cli-bundle/chunks/telemetry-HQC2JJIF.js.map +7 -0
  366. package/dist/cli-bundle/chunks/telemetry-MPNL3HHY.js +18 -0
  367. package/dist/cli-bundle/chunks/telemetry-MPNL3HHY.js.map +1 -0
  368. package/dist/cli-bundle/chunks/test-6CMOCWUC.js +39 -0
  369. package/dist/cli-bundle/chunks/test-6CMOCWUC.js.map +7 -0
  370. package/dist/cli-bundle/chunks/test-RI7XHBZL.js +43 -0
  371. package/dist/cli-bundle/chunks/test-RI7XHBZL.js.map +1 -0
  372. package/dist/cli-bundle/chunks/test-all-7R7YRZIA.js +29 -0
  373. package/dist/cli-bundle/chunks/test-all-7R7YRZIA.js.map +7 -0
  374. package/dist/cli-bundle/chunks/test-all-QEIORFYW.js +33 -0
  375. package/dist/cli-bundle/chunks/test-all-QEIORFYW.js.map +1 -0
  376. package/dist/cli-bundle/chunks/test-runs-5Y2BOU2S.js +28 -0
  377. package/dist/cli-bundle/chunks/test-runs-5Y2BOU2S.js.map +1 -0
  378. package/dist/cli-bundle/chunks/test-runs-PVGC3GRZ.js +24 -0
  379. package/dist/cli-bundle/chunks/test-runs-PVGC3GRZ.js.map +7 -0
  380. package/dist/cli-bundle/chunks/update-QVJDFEAP.js +30 -0
  381. package/dist/cli-bundle/chunks/update-QVJDFEAP.js.map +1 -0
  382. package/dist/cli-bundle/chunks/update-VQVHAY6X.js +26 -0
  383. package/dist/cli-bundle/chunks/update-VQVHAY6X.js.map +7 -0
  384. package/dist/cli-bundle/chunks/update-many-S7XWBSB3.js +37 -0
  385. package/dist/cli-bundle/chunks/update-many-S7XWBSB3.js.map +7 -0
  386. package/dist/cli-bundle/chunks/update-many-YIYW6XQ6.js +41 -0
  387. package/dist/cli-bundle/chunks/update-many-YIYW6XQ6.js.map +1 -0
  388. package/dist/cli-bundle/chunks/upgrade-OPRXA56R.js +24 -0
  389. package/dist/cli-bundle/chunks/upgrade-OPRXA56R.js.map +7 -0
  390. package/dist/cli-bundle/chunks/upgrade-WH4BTQLX.js +28 -0
  391. package/dist/cli-bundle/chunks/upgrade-WH4BTQLX.js.map +1 -0
  392. package/dist/cli-bundle/chunks/validate-4NTXSB62.js +36 -0
  393. package/dist/cli-bundle/chunks/validate-4NTXSB62.js.map +1 -0
  394. package/dist/cli-bundle/chunks/validate-MUFXQZMI.js +32 -0
  395. package/dist/cli-bundle/chunks/validate-MUFXQZMI.js.map +7 -0
  396. package/dist/cli-bundle/main.js +16 -16
  397. package/dist/cli-bundle/sdk-runtime.js +88 -28
  398. package/dist/cli-bundle/sdk-testing.js +6 -6
  399. package/dist/cli-bundle/sdk.js +92 -49
  400. package/dist/cli-bundle/sdk.js.map +2 -2
  401. package/dist/mcp/server.d.ts +22 -50
  402. package/dist/mcp/server.js +62 -916
  403. package/dist/mcp/server.js.map +1 -1
  404. package/dist/sdk/index.d.ts +4 -2
  405. package/dist/sdk/index.js +4 -4
  406. package/dist/sdk/index.js.map +1 -1
  407. package/dist/sdk/runtime.d.ts +168 -4
  408. package/dist/sdk/runtime.js +1149 -25
  409. package/dist/sdk/runtime.js.map +1 -1
  410. package/dist/sdk/workspace-contracts-cache.d.ts +17 -0
  411. package/dist/sdk/workspace-contracts-cache.js +36 -0
  412. package/dist/sdk/workspace-contracts-cache.js.map +1 -0
  413. package/docs/RELEASING.md +3 -1
  414. package/docs/SDK.md +46 -0
  415. package/docs/examples/sdk-app-embedding/run-embedded-pm.mjs +16 -2
  416. package/docs/examples/sdk-contract-consumer/inspect-contracts.mjs +16 -1
  417. package/package.json +1 -1
  418. package/dist/cli-bundle/chunks/activity-4XQIDNM5.js +0 -18
  419. package/dist/cli-bundle/chunks/activity-YKAKZTZ4.js +0 -22
  420. package/dist/cli-bundle/chunks/aggregate-EQX2RGB7.js +0 -375
  421. package/dist/cli-bundle/chunks/aggregate-EQX2RGB7.js.map +0 -7
  422. package/dist/cli-bundle/chunks/aggregate-PEGZGJXD.js +0 -372
  423. package/dist/cli-bundle/chunks/aggregate-PEGZGJXD.js.map +0 -1
  424. package/dist/cli-bundle/chunks/append-CZGUZ45Q.js +0 -73
  425. package/dist/cli-bundle/chunks/append-CZGUZ45Q.js.map +0 -7
  426. package/dist/cli-bundle/chunks/append-NSQBCXZJ.js +0 -70
  427. package/dist/cli-bundle/chunks/append-NSQBCXZJ.js.map +0 -1
  428. package/dist/cli-bundle/chunks/chunk-3JZNEQBA.js +0 -1413
  429. package/dist/cli-bundle/chunks/chunk-3PL6LEKP.js +0 -1961
  430. package/dist/cli-bundle/chunks/chunk-3U3VEWK6.js +0 -1749
  431. package/dist/cli-bundle/chunks/chunk-3Y4OESPP.js +0 -277
  432. package/dist/cli-bundle/chunks/chunk-4LRVSBO6.js +0 -822
  433. package/dist/cli-bundle/chunks/chunk-4OFLJHX6.js +0 -356
  434. package/dist/cli-bundle/chunks/chunk-4QQ6PM7M.js +0 -1249
  435. package/dist/cli-bundle/chunks/chunk-53BTLLAF.js +0 -2181
  436. package/dist/cli-bundle/chunks/chunk-53BTLLAF.js.map +0 -1
  437. package/dist/cli-bundle/chunks/chunk-57C2RLW5.js +0 -1704
  438. package/dist/cli-bundle/chunks/chunk-5B3X4Y22.js +0 -2330
  439. package/dist/cli-bundle/chunks/chunk-5J2XPTAD.js +0 -225
  440. package/dist/cli-bundle/chunks/chunk-5JE6SMYS.js +0 -262
  441. package/dist/cli-bundle/chunks/chunk-5JZ7APJU.js +0 -995
  442. package/dist/cli-bundle/chunks/chunk-5VVUKE3U.js +0 -5789
  443. package/dist/cli-bundle/chunks/chunk-5VVUKE3U.js.map +0 -7
  444. package/dist/cli-bundle/chunks/chunk-75U6M5ZD.js +0 -819
  445. package/dist/cli-bundle/chunks/chunk-7EQNAZX2.js +0 -1018
  446. package/dist/cli-bundle/chunks/chunk-7MDXZAZS.js +0 -102
  447. package/dist/cli-bundle/chunks/chunk-7QH7DHUB.js +0 -2046
  448. package/dist/cli-bundle/chunks/chunk-7WYXBPYQ.js +0 -358
  449. package/dist/cli-bundle/chunks/chunk-AAEQMOC6.js +0 -150
  450. package/dist/cli-bundle/chunks/chunk-ABRA3BHY.js +0 -429
  451. package/dist/cli-bundle/chunks/chunk-BFVHCAOO.js +0 -240
  452. package/dist/cli-bundle/chunks/chunk-BVEUCSH2.js +0 -530
  453. package/dist/cli-bundle/chunks/chunk-C3PMDWGX.js +0 -160
  454. package/dist/cli-bundle/chunks/chunk-D3UCE7RW.js +0 -243
  455. package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js +0 -275
  456. package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js.map +0 -7
  457. package/dist/cli-bundle/chunks/chunk-DLQ4ZTCU.js +0 -634
  458. package/dist/cli-bundle/chunks/chunk-DRBV5UC2.js +0 -231
  459. package/dist/cli-bundle/chunks/chunk-E2FUG6GD.js +0 -2184
  460. package/dist/cli-bundle/chunks/chunk-E2FUG6GD.js.map +0 -7
  461. package/dist/cli-bundle/chunks/chunk-EEY54JMF.js +0 -60
  462. package/dist/cli-bundle/chunks/chunk-EZFKWSC7.js +0 -1615
  463. package/dist/cli-bundle/chunks/chunk-FDBARR33.js +0 -655
  464. package/dist/cli-bundle/chunks/chunk-FGQKEDE4.js +0 -447
  465. package/dist/cli-bundle/chunks/chunk-FJRKQREY.js +0 -228
  466. package/dist/cli-bundle/chunks/chunk-FUM6UMY4.js +0 -804
  467. package/dist/cli-bundle/chunks/chunk-GIWXVMZ3.js +0 -3237
  468. package/dist/cli-bundle/chunks/chunk-GIWXVMZ3.js.map +0 -7
  469. package/dist/cli-bundle/chunks/chunk-HBYZDSK5.js +0 -426
  470. package/dist/cli-bundle/chunks/chunk-HJE4JTKQ.js +0 -124
  471. package/dist/cli-bundle/chunks/chunk-HK72NWAD.js +0 -1570
  472. package/dist/cli-bundle/chunks/chunk-IJ6CO3JV.js +0 -645
  473. package/dist/cli-bundle/chunks/chunk-JFCVQXZX.js +0 -3206
  474. package/dist/cli-bundle/chunks/chunk-JFCVQXZX.js.map +0 -1
  475. package/dist/cli-bundle/chunks/chunk-JLA7EVYV.js +0 -222
  476. package/dist/cli-bundle/chunks/chunk-K32L7HZO.js +0 -76
  477. package/dist/cli-bundle/chunks/chunk-K32L7HZO.js.map +0 -1
  478. package/dist/cli-bundle/chunks/chunk-K3AGVXSF.js +0 -444
  479. package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js +0 -79
  480. package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js.map +0 -7
  481. package/dist/cli-bundle/chunks/chunk-KL22PY6L.js +0 -915
  482. package/dist/cli-bundle/chunks/chunk-KL22PY6L.js.map +0 -1
  483. package/dist/cli-bundle/chunks/chunk-KLG4ZULO.js +0 -218
  484. package/dist/cli-bundle/chunks/chunk-LEKT4K7I.js +0 -2105
  485. package/dist/cli-bundle/chunks/chunk-MNZ7DRNC.js +0 -1858
  486. package/dist/cli-bundle/chunks/chunk-MTTXDAK4.js +0 -2198
  487. package/dist/cli-bundle/chunks/chunk-MZ7VNEVY.js +0 -520
  488. package/dist/cli-bundle/chunks/chunk-N6DNM2FA.js +0 -116
  489. package/dist/cli-bundle/chunks/chunk-N7X4WP6L.js +0 -1041
  490. package/dist/cli-bundle/chunks/chunk-NBFCNJ7Q.js +0 -2132
  491. package/dist/cli-bundle/chunks/chunk-NER3KUUS.js +0 -260
  492. package/dist/cli-bundle/chunks/chunk-OBA2WH65.js +0 -918
  493. package/dist/cli-bundle/chunks/chunk-OBA2WH65.js.map +0 -7
  494. package/dist/cli-bundle/chunks/chunk-OESSOFJ4.js +0 -1985
  495. package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js +0 -238
  496. package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js.map +0 -1
  497. package/dist/cli-bundle/chunks/chunk-OWTIRHX4.js +0 -112
  498. package/dist/cli-bundle/chunks/chunk-P3VRG72Q.js +0 -1765
  499. package/dist/cli-bundle/chunks/chunk-P5TFTLWW.js +0 -1423
  500. package/dist/cli-bundle/chunks/chunk-P5YORJRH.js +0 -1977
  501. package/dist/cli-bundle/chunks/chunk-PDXT6Q55.js +0 -58
  502. package/dist/cli-bundle/chunks/chunk-PJ3A56YF.js +0 -1239
  503. package/dist/cli-bundle/chunks/chunk-PPAJG4GB.js +0 -1031
  504. package/dist/cli-bundle/chunks/chunk-PPE4YUQM.js +0 -4725
  505. package/dist/cli-bundle/chunks/chunk-PPE4YUQM.js.map +0 -1
  506. package/dist/cli-bundle/chunks/chunk-QHZO65XW.js +0 -1775
  507. package/dist/cli-bundle/chunks/chunk-R3ZBLGTC.js +0 -814
  508. package/dist/cli-bundle/chunks/chunk-RCT3YJOK.js +0 -624
  509. package/dist/cli-bundle/chunks/chunk-RX3HQSYG.js +0 -265
  510. package/dist/cli-bundle/chunks/chunk-S4APD35C.js +0 -210
  511. package/dist/cli-bundle/chunks/chunk-S5AYOUT5.js +0 -130
  512. package/dist/cli-bundle/chunks/chunk-STPSZ2XY.js +0 -1149
  513. package/dist/cli-bundle/chunks/chunk-STPSZ2XY.js.map +0 -1
  514. package/dist/cli-bundle/chunks/chunk-T35XLYZF.js +0 -263
  515. package/dist/cli-bundle/chunks/chunk-T3ABIMGW.js +0 -361
  516. package/dist/cli-bundle/chunks/chunk-T3F4DF23.js +0 -267
  517. package/dist/cli-bundle/chunks/chunk-T4MX77AK.js +0 -272
  518. package/dist/cli-bundle/chunks/chunk-T4MX77AK.js.map +0 -1
  519. package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js +0 -5354
  520. package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js.map +0 -1
  521. package/dist/cli-bundle/chunks/chunk-TSPKZRRW.js +0 -1570
  522. package/dist/cli-bundle/chunks/chunk-TT42JUMF.js +0 -207
  523. package/dist/cli-bundle/chunks/chunk-UHKX7I75.js +0 -165
  524. package/dist/cli-bundle/chunks/chunk-UHKX7I75.js.map +0 -1
  525. package/dist/cli-bundle/chunks/chunk-UI5BJ6DO.js +0 -4786
  526. package/dist/cli-bundle/chunks/chunk-UI5BJ6DO.js.map +0 -7
  527. package/dist/cli-bundle/chunks/chunk-US3T3W5J.js +0 -1932
  528. package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js +0 -175
  529. package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js.map +0 -7
  530. package/dist/cli-bundle/chunks/chunk-VZIYHZDX.js +0 -1868
  531. package/dist/cli-bundle/chunks/chunk-WISPVC2E.js +0 -401
  532. package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js +0 -5434
  533. package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js.map +0 -7
  534. package/dist/cli-bundle/chunks/chunk-XQCG2JGW.js +0 -1152
  535. package/dist/cli-bundle/chunks/chunk-XQCG2JGW.js.map +0 -7
  536. package/dist/cli-bundle/chunks/chunk-Y76TWC45.js +0 -550
  537. package/dist/cli-bundle/chunks/chunk-YD5FML7K.js +0 -5630
  538. package/dist/cli-bundle/chunks/chunk-YD5FML7K.js.map +0 -1
  539. package/dist/cli-bundle/chunks/chunk-YFIE7YK6.js +0 -57
  540. package/dist/cli-bundle/chunks/chunk-YMABYTNG.js +0 -1573
  541. package/dist/cli-bundle/chunks/chunk-YOF5VPKM.js +0 -119
  542. package/dist/cli-bundle/chunks/chunk-YPPVU5GX.js +0 -398
  543. package/dist/cli-bundle/chunks/chunk-YQMMMONE.js +0 -133
  544. package/dist/cli-bundle/chunks/chunk-YSAH5FY5.js +0 -1001
  545. package/dist/cli-bundle/chunks/chunk-YZIR4R3U.js +0 -1005
  546. package/dist/cli-bundle/chunks/chunk-Z2CRRZYF.js +0 -215
  547. package/dist/cli-bundle/chunks/chunk-ZAHXPXVY.js +0 -533
  548. package/dist/cli-bundle/chunks/chunk-ZCJAA3JK.js +0 -121
  549. package/dist/cli-bundle/chunks/chunk-ZD34OFFQ.js +0 -366
  550. package/dist/cli-bundle/chunks/chunk-ZJB3UV5U.js +0 -2306
  551. package/dist/cli-bundle/chunks/chunk-ZMD35NYG.js +0 -61
  552. package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js +0 -241
  553. package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js.map +0 -7
  554. package/dist/cli-bundle/chunks/claim-4DROPSIS.js +0 -144
  555. package/dist/cli-bundle/chunks/claim-4DROPSIS.js.map +0 -1
  556. package/dist/cli-bundle/chunks/claim-VX54TV5U.js +0 -147
  557. package/dist/cli-bundle/chunks/claim-VX54TV5U.js.map +0 -7
  558. package/dist/cli-bundle/chunks/close-3YRR3XY6.js +0 -20
  559. package/dist/cli-bundle/chunks/close-OB2Y4QP5.js +0 -16
  560. package/dist/cli-bundle/chunks/close-many-AP4MWU36.js +0 -397
  561. package/dist/cli-bundle/chunks/close-many-AP4MWU36.js.map +0 -1
  562. package/dist/cli-bundle/chunks/close-many-OMZIGZB4.js +0 -400
  563. package/dist/cli-bundle/chunks/close-many-OMZIGZB4.js.map +0 -7
  564. package/dist/cli-bundle/chunks/comments-MIW5MZOX.js +0 -128
  565. package/dist/cli-bundle/chunks/comments-MIW5MZOX.js.map +0 -7
  566. package/dist/cli-bundle/chunks/comments-SAG5LSKL.js +0 -125
  567. package/dist/cli-bundle/chunks/comments-SAG5LSKL.js.map +0 -1
  568. package/dist/cli-bundle/chunks/config-DJJKZB5R.js +0 -1075
  569. package/dist/cli-bundle/chunks/config-DJJKZB5R.js.map +0 -7
  570. package/dist/cli-bundle/chunks/config-V57QD47V.js +0 -1065
  571. package/dist/cli-bundle/chunks/config-V57QD47V.js.map +0 -1
  572. package/dist/cli-bundle/chunks/context-4OQGIPSO.js +0 -45
  573. package/dist/cli-bundle/chunks/context-WLA6IAWE.js +0 -49
  574. package/dist/cli-bundle/chunks/contracts-HXJLKCRI.js +0 -12
  575. package/dist/cli-bundle/chunks/contracts-OJEXMKVW.js +0 -16
  576. package/dist/cli-bundle/chunks/copy-LEE6P6EM.js +0 -184
  577. package/dist/cli-bundle/chunks/copy-LEE6P6EM.js.map +0 -7
  578. package/dist/cli-bundle/chunks/copy-OTJOWFL6.js +0 -181
  579. package/dist/cli-bundle/chunks/copy-OTJOWFL6.js.map +0 -1
  580. package/dist/cli-bundle/chunks/create-WKOZKPQR.js +0 -30
  581. package/dist/cli-bundle/chunks/create-XWWQFQ6S.js +0 -34
  582. package/dist/cli-bundle/chunks/delete-62JQTYT4.js +0 -59
  583. package/dist/cli-bundle/chunks/delete-62JQTYT4.js.map +0 -7
  584. package/dist/cli-bundle/chunks/delete-HQKGRNRZ.js +0 -56
  585. package/dist/cli-bundle/chunks/delete-HQKGRNRZ.js.map +0 -1
  586. package/dist/cli-bundle/chunks/deps-55FTG6Z5.js +0 -224
  587. package/dist/cli-bundle/chunks/deps-55FTG6Z5.js.map +0 -1
  588. package/dist/cli-bundle/chunks/deps-L2FPIAD3.js +0 -227
  589. package/dist/cli-bundle/chunks/deps-L2FPIAD3.js.map +0 -7
  590. package/dist/cli-bundle/chunks/docs-6CRCSVKK.js +0 -33
  591. package/dist/cli-bundle/chunks/docs-6CRCSVKK.js.map +0 -1
  592. package/dist/cli-bundle/chunks/docs-S6UTOTO5.js +0 -36
  593. package/dist/cli-bundle/chunks/docs-S6UTOTO5.js.map +0 -7
  594. package/dist/cli-bundle/chunks/eval-N6UHFWVO.js +0 -288
  595. package/dist/cli-bundle/chunks/eval-N6UHFWVO.js.map +0 -7
  596. package/dist/cli-bundle/chunks/eval-PHOTWYHI.js +0 -278
  597. package/dist/cli-bundle/chunks/eval-PHOTWYHI.js.map +0 -1
  598. package/dist/cli-bundle/chunks/extension-NBAH62ML.js +0 -40
  599. package/dist/cli-bundle/chunks/extension-ZF6ZZPOU.js +0 -44
  600. package/dist/cli-bundle/chunks/files-6P57MRKL.js +0 -301
  601. package/dist/cli-bundle/chunks/files-6P57MRKL.js.map +0 -7
  602. package/dist/cli-bundle/chunks/files-JPU3FNJ7.js +0 -298
  603. package/dist/cli-bundle/chunks/files-JPU3FNJ7.js.map +0 -1
  604. package/dist/cli-bundle/chunks/focus-LFZ6IDBR.js +0 -106
  605. package/dist/cli-bundle/chunks/focus-LFZ6IDBR.js.map +0 -1
  606. package/dist/cli-bundle/chunks/focus-WNMYCVYA.js +0 -109
  607. package/dist/cli-bundle/chunks/focus-WNMYCVYA.js.map +0 -7
  608. package/dist/cli-bundle/chunks/gc-AETFKZ44.js +0 -398
  609. package/dist/cli-bundle/chunks/gc-AETFKZ44.js.map +0 -7
  610. package/dist/cli-bundle/chunks/gc-RLBP4QVN.js +0 -388
  611. package/dist/cli-bundle/chunks/gc-RLBP4QVN.js.map +0 -1
  612. package/dist/cli-bundle/chunks/get-NH2MPBCI.js +0 -283
  613. package/dist/cli-bundle/chunks/get-NH2MPBCI.js.map +0 -1
  614. package/dist/cli-bundle/chunks/get-P4ZQXCPZ.js +0 -286
  615. package/dist/cli-bundle/chunks/get-P4ZQXCPZ.js.map +0 -7
  616. package/dist/cli-bundle/chunks/health-3GVPMQBL.js +0 -1612
  617. package/dist/cli-bundle/chunks/health-3GVPMQBL.js.map +0 -1
  618. package/dist/cli-bundle/chunks/health-DNTM72GJ.js +0 -1615
  619. package/dist/cli-bundle/chunks/health-DNTM72GJ.js.map +0 -7
  620. package/dist/cli-bundle/chunks/history-RYKLC72X.js +0 -20
  621. package/dist/cli-bundle/chunks/history-SGPYRAFT.js +0 -24
  622. package/dist/cli-bundle/chunks/history-compact-3F6VELO7.js +0 -565
  623. package/dist/cli-bundle/chunks/history-compact-3F6VELO7.js.map +0 -7
  624. package/dist/cli-bundle/chunks/history-compact-656Y2TN4.js +0 -555
  625. package/dist/cli-bundle/chunks/history-compact-656Y2TN4.js.map +0 -1
  626. package/dist/cli-bundle/chunks/history-redact-4H3FCKF3.js +0 -21
  627. package/dist/cli-bundle/chunks/history-redact-54ICFKXM.js +0 -25
  628. package/dist/cli-bundle/chunks/history-repair-4N6SDVHK.js +0 -281
  629. package/dist/cli-bundle/chunks/history-repair-4N6SDVHK.js.map +0 -7
  630. package/dist/cli-bundle/chunks/history-repair-EVTO6LIH.js +0 -278
  631. package/dist/cli-bundle/chunks/history-repair-EVTO6LIH.js.map +0 -1
  632. package/dist/cli-bundle/chunks/init-RPIPQUNV.js +0 -32
  633. package/dist/cli-bundle/chunks/init-SKQAESQS.js +0 -28
  634. package/dist/cli-bundle/chunks/learnings-2HTPZNGZ.js +0 -48
  635. package/dist/cli-bundle/chunks/learnings-2HTPZNGZ.js.map +0 -7
  636. package/dist/cli-bundle/chunks/learnings-YBIHY3D6.js +0 -45
  637. package/dist/cli-bundle/chunks/learnings-YBIHY3D6.js.map +0 -1
  638. package/dist/cli-bundle/chunks/list-64LHZ3HM.js +0 -32
  639. package/dist/cli-bundle/chunks/list-7LXBTEKI.js +0 -36
  640. package/dist/cli-bundle/chunks/next-7ODPAQ4U.js +0 -306
  641. package/dist/cli-bundle/chunks/next-7ODPAQ4U.js.map +0 -7
  642. package/dist/cli-bundle/chunks/next-ODJUM4ZM.js +0 -303
  643. package/dist/cli-bundle/chunks/next-ODJUM4ZM.js.map +0 -1
  644. package/dist/cli-bundle/chunks/notes-72YXN5JX.js +0 -48
  645. package/dist/cli-bundle/chunks/notes-72YXN5JX.js.map +0 -7
  646. package/dist/cli-bundle/chunks/notes-NJ7IQJX4.js +0 -45
  647. package/dist/cli-bundle/chunks/notes-NJ7IQJX4.js.map +0 -1
  648. package/dist/cli-bundle/chunks/plan-R4NDQ27E.js +0 -1366
  649. package/dist/cli-bundle/chunks/plan-R4NDQ27E.js.map +0 -7
  650. package/dist/cli-bundle/chunks/plan-XWY5T67S.js +0 -1363
  651. package/dist/cli-bundle/chunks/plan-XWY5T67S.js.map +0 -1
  652. package/dist/cli-bundle/chunks/profile-XQWEQKS3.js +0 -397
  653. package/dist/cli-bundle/chunks/profile-XQWEQKS3.js.map +0 -1
  654. package/dist/cli-bundle/chunks/profile-YRDHLMRO.js +0 -400
  655. package/dist/cli-bundle/chunks/profile-YRDHLMRO.js.map +0 -7
  656. package/dist/cli-bundle/chunks/register-list-query-5H66WFYF.js +0 -419
  657. package/dist/cli-bundle/chunks/register-list-query-FB3FNDLZ.js +0 -409
  658. package/dist/cli-bundle/chunks/register-mutation-UJO23C7R.js +0 -1256
  659. package/dist/cli-bundle/chunks/register-mutation-Z2ETYHKS.js +0 -1273
  660. package/dist/cli-bundle/chunks/register-operations-A3XAM5J7.js +0 -513
  661. package/dist/cli-bundle/chunks/register-operations-A3XAM5J7.js.map +0 -1
  662. package/dist/cli-bundle/chunks/register-operations-SG7HBSUP.js +0 -516
  663. package/dist/cli-bundle/chunks/register-operations-SG7HBSUP.js.map +0 -7
  664. package/dist/cli-bundle/chunks/register-setup-I45OGJUV.js +0 -323
  665. package/dist/cli-bundle/chunks/register-setup-I45OGJUV.js.map +0 -1
  666. package/dist/cli-bundle/chunks/register-setup-K6U3NVY5.js +0 -326
  667. package/dist/cli-bundle/chunks/register-setup-K6U3NVY5.js.map +0 -7
  668. package/dist/cli-bundle/chunks/restore-PXOFL6AM.js +0 -19
  669. package/dist/cli-bundle/chunks/restore-YJ2ET6AT.js +0 -23
  670. package/dist/cli-bundle/chunks/scheduling-shortcuts-SSC4MYWQ.js +0 -91
  671. package/dist/cli-bundle/chunks/scheduling-shortcuts-SSC4MYWQ.js.map +0 -7
  672. package/dist/cli-bundle/chunks/scheduling-shortcuts-ULRG7MNP.js +0 -88
  673. package/dist/cli-bundle/chunks/scheduling-shortcuts-ULRG7MNP.js.map +0 -1
  674. package/dist/cli-bundle/chunks/schema-2PUXCZ25.js +0 -74
  675. package/dist/cli-bundle/chunks/schema-Y6DXXK2F.js +0 -78
  676. package/dist/cli-bundle/chunks/search-3S72CTD6.js +0 -38
  677. package/dist/cli-bundle/chunks/search-WNUNBQXO.js +0 -34
  678. package/dist/cli-bundle/chunks/stats-IJYTRQGV.js +0 -250
  679. package/dist/cli-bundle/chunks/stats-IJYTRQGV.js.map +0 -7
  680. package/dist/cli-bundle/chunks/stats-L2D5Y2O5.js +0 -240
  681. package/dist/cli-bundle/chunks/stats-L2D5Y2O5.js.map +0 -1
  682. package/dist/cli-bundle/chunks/telemetry-L2CVOKVN.js +0 -309
  683. package/dist/cli-bundle/chunks/telemetry-L2CVOKVN.js.map +0 -7
  684. package/dist/cli-bundle/chunks/telemetry-QBYWQA76.js +0 -306
  685. package/dist/cli-bundle/chunks/telemetry-QBYWQA76.js.map +0 -1
  686. package/dist/cli-bundle/chunks/test-DQ2QFJ7W.js +0 -45
  687. package/dist/cli-bundle/chunks/test-W7QBLVJS.js +0 -41
  688. package/dist/cli-bundle/chunks/test-all-636NTRTT.js +0 -434
  689. package/dist/cli-bundle/chunks/test-all-636NTRTT.js.map +0 -1
  690. package/dist/cli-bundle/chunks/test-all-DWYK3RG6.js +0 -437
  691. package/dist/cli-bundle/chunks/test-all-DWYK3RG6.js.map +0 -7
  692. package/dist/cli-bundle/chunks/test-runs-245OINZR.js +0 -28
  693. package/dist/cli-bundle/chunks/test-runs-ZRD4GCTT.js +0 -24
  694. package/dist/cli-bundle/chunks/update-SFLZPJXX.js +0 -30
  695. package/dist/cli-bundle/chunks/update-SJZ6S77U.js +0 -26
  696. package/dist/cli-bundle/chunks/update-many-DC7X3EWM.js +0 -671
  697. package/dist/cli-bundle/chunks/update-many-DC7X3EWM.js.map +0 -7
  698. package/dist/cli-bundle/chunks/update-many-SLLAMHT7.js +0 -668
  699. package/dist/cli-bundle/chunks/update-many-SLLAMHT7.js.map +0 -1
  700. package/dist/cli-bundle/chunks/upgrade-HFFXLZJA.js +0 -290
  701. package/dist/cli-bundle/chunks/upgrade-HFFXLZJA.js.map +0 -7
  702. package/dist/cli-bundle/chunks/upgrade-UYQKM7RF.js +0 -287
  703. package/dist/cli-bundle/chunks/upgrade-UYQKM7RF.js.map +0 -1
  704. package/dist/cli-bundle/chunks/validate-PA4FDTOV.js +0 -2143
  705. package/dist/cli-bundle/chunks/validate-PA4FDTOV.js.map +0 -7
  706. package/dist/cli-bundle/chunks/validate-Z7L75YEJ.js +0 -2105
  707. package/dist/cli-bundle/chunks/validate-Z7L75YEJ.js.map +0 -1
  708. /package/dist/cli-bundle/chunks/{activity-4XQIDNM5.js.map → activity-WJCGCYPU.js.map} +0 -0
  709. /package/dist/cli-bundle/chunks/{activity-YKAKZTZ4.js.map → activity-Z6QUAUSG.js.map} +0 -0
  710. /package/dist/cli-bundle/chunks/{close-3YRR3XY6.js.map → aggregate-BDM6EIAR.js.map} +0 -0
  711. /package/dist/cli-bundle/chunks/{close-OB2Y4QP5.js.map → aggregate-VQ2DHU3S.js.map} +0 -0
  712. /package/dist/cli-bundle/chunks/{context-WLA6IAWE.js.map → append-BGML6VLD.js.map} +0 -0
  713. /package/dist/cli-bundle/chunks/{context-4OQGIPSO.js.map → append-RKJYPU74.js.map} +0 -0
  714. /package/dist/cli-bundle/chunks/{chunk-YFIE7YK6.js.map → chunk-22KBU3MW.js.map} +0 -0
  715. /package/dist/cli-bundle/chunks/{chunk-DLQ4ZTCU.js.map → chunk-24YG75HI.js.map} +0 -0
  716. /package/dist/cli-bundle/chunks/{chunk-KLG4ZULO.js.map → chunk-2XG4IZON.js.map} +0 -0
  717. /package/dist/cli-bundle/chunks/{chunk-FJRKQREY.js.map → chunk-3GCS5SKL.js.map} +0 -0
  718. /package/dist/cli-bundle/chunks/{chunk-5B3X4Y22.js.map → chunk-3KTN6IBA.js.map} +0 -0
  719. /package/dist/cli-bundle/chunks/{chunk-YMABYTNG.js.map → chunk-3UJRFJ5R.js.map} +0 -0
  720. /package/dist/cli-bundle/chunks/{chunk-YSAH5FY5.js.map → chunk-3VHSI5FL.js.map} +0 -0
  721. /package/dist/cli-bundle/chunks/{chunk-7EQNAZX2.js.map → chunk-46CUF5L6.js.map} +0 -0
  722. /package/dist/cli-bundle/chunks/{chunk-75U6M5ZD.js.map → chunk-4IWYTWGF.js.map} +0 -0
  723. /package/dist/cli-bundle/chunks/{chunk-VZIYHZDX.js.map → chunk-5GZ7TDD6.js.map} +0 -0
  724. /package/dist/cli-bundle/chunks/{chunk-3U3VEWK6.js.map → chunk-5VAA4YHR.js.map} +0 -0
  725. /package/dist/cli-bundle/chunks/{chunk-3PL6LEKP.js.map → chunk-64YKRTSV.js.map} +0 -0
  726. /package/dist/cli-bundle/chunks/{chunk-ABRA3BHY.js.map → chunk-6LLVNJXT.js.map} +0 -0
  727. /package/dist/cli-bundle/chunks/{chunk-EEY54JMF.js.map → chunk-7DT4WSH2.js.map} +0 -0
  728. /package/dist/cli-bundle/chunks/{chunk-7MDXZAZS.js.map → chunk-7WBAJSS6.js.map} +0 -0
  729. /package/dist/cli-bundle/chunks/{chunk-AAEQMOC6.js.map → chunk-AGHMOTGM.js.map} +0 -0
  730. /package/dist/cli-bundle/chunks/{chunk-OWTIRHX4.js.map → chunk-ALFPSEWO.js.map} +0 -0
  731. /package/dist/cli-bundle/chunks/{chunk-T3ABIMGW.js.map → chunk-AZYGZGGI.js.map} +0 -0
  732. /package/dist/cli-bundle/chunks/{chunk-3JZNEQBA.js.map → chunk-B6DUFX6H.js.map} +0 -0
  733. /package/dist/cli-bundle/chunks/{chunk-OESSOFJ4.js.map → chunk-C5JBZRPU.js.map} +0 -0
  734. /package/dist/cli-bundle/chunks/{chunk-YPPVU5GX.js.map → chunk-CFB33L7W.js.map} +0 -0
  735. /package/dist/cli-bundle/chunks/{chunk-5J2XPTAD.js.map → chunk-CL36D4PC.js.map} +0 -0
  736. /package/dist/cli-bundle/chunks/{chunk-IJ6CO3JV.js.map → chunk-D2XRLB55.js.map} +0 -0
  737. /package/dist/cli-bundle/chunks/{chunk-MNZ7DRNC.js.map → chunk-DEWEK6AN.js.map} +0 -0
  738. /package/dist/cli-bundle/chunks/{chunk-US3T3W5J.js.map → chunk-E3SZTQ4K.js.map} +0 -0
  739. /package/dist/cli-bundle/chunks/{chunk-C3PMDWGX.js.map → chunk-EGY6JBQ3.js.map} +0 -0
  740. /package/dist/cli-bundle/chunks/{chunk-JLA7EVYV.js.map → chunk-EKFNL33R.js.map} +0 -0
  741. /package/dist/cli-bundle/chunks/{chunk-57C2RLW5.js.map → chunk-ENGQOEUY.js.map} +0 -0
  742. /package/dist/cli-bundle/chunks/{chunk-7QH7DHUB.js.map → chunk-EOKXK3R3.js.map} +0 -0
  743. /package/dist/cli-bundle/chunks/{chunk-ZCJAA3JK.js.map → chunk-F3K4JGFD.js.map} +0 -0
  744. /package/dist/cli-bundle/chunks/{chunk-DRBV5UC2.js.map → chunk-FLZSGSQR.js.map} +0 -0
  745. /package/dist/cli-bundle/chunks/{chunk-Y76TWC45.js.map → chunk-FT3QTERD.js.map} +0 -0
  746. /package/dist/cli-bundle/chunks/{chunk-HK72NWAD.js.map → chunk-G24G7ZAV.js.map} +0 -0
  747. /package/dist/cli-bundle/chunks/{chunk-K3AGVXSF.js.map → chunk-G64OCSKU.js.map} +0 -0
  748. /package/dist/cli-bundle/chunks/{chunk-QHZO65XW.js.map → chunk-GANUTS7W.js.map} +0 -0
  749. /package/dist/cli-bundle/chunks/{chunk-WISPVC2E.js.map → chunk-GBAX2ZAQ.js.map} +0 -0
  750. /package/dist/cli-bundle/chunks/{chunk-RCT3YJOK.js.map → chunk-GJ7QC5DJ.js.map} +0 -0
  751. /package/dist/cli-bundle/chunks/{chunk-BVEUCSH2.js.map → chunk-GPLPTGOV.js.map} +0 -0
  752. /package/dist/cli-bundle/chunks/{chunk-YZIR4R3U.js.map → chunk-GZRDYONU.js.map} +0 -0
  753. /package/dist/cli-bundle/chunks/{chunk-7WYXBPYQ.js.map → chunk-IWVU4C2F.js.map} +0 -0
  754. /package/dist/cli-bundle/chunks/{chunk-T3F4DF23.js.map → chunk-IX5BXEMX.js.map} +0 -0
  755. /package/dist/cli-bundle/chunks/{chunk-RX3HQSYG.js.map → chunk-JDDLOQAE.js.map} +0 -0
  756. /package/dist/cli-bundle/chunks/{chunk-YOF5VPKM.js.map → chunk-JJP45OEI.js.map} +0 -0
  757. /package/dist/cli-bundle/chunks/{chunk-TT42JUMF.js.map → chunk-K46RF36U.js.map} +0 -0
  758. /package/dist/cli-bundle/chunks/{chunk-R3ZBLGTC.js.map → chunk-KGFUY7WN.js.map} +0 -0
  759. /package/dist/cli-bundle/chunks/{chunk-NER3KUUS.js.map → chunk-KUOOJR35.js.map} +0 -0
  760. /package/dist/cli-bundle/chunks/{chunk-3Y4OESPP.js.map → chunk-L5PSPMZ4.js.map} +0 -0
  761. /package/dist/cli-bundle/chunks/{chunk-PJ3A56YF.js.map → chunk-LPSSSDJR.js.map} +0 -0
  762. /package/dist/cli-bundle/chunks/{chunk-FDBARR33.js.map → chunk-MA4SM3QZ.js.map} +0 -0
  763. /package/dist/cli-bundle/chunks/{chunk-PPAJG4GB.js.map → chunk-MFAZSEM5.js.map} +0 -0
  764. /package/dist/cli-bundle/chunks/{chunk-5JZ7APJU.js.map → chunk-MFSCBT5Q.js.map} +0 -0
  765. /package/dist/cli-bundle/chunks/{chunk-4OFLJHX6.js.map → chunk-MLIYFOE7.js.map} +0 -0
  766. /package/dist/cli-bundle/chunks/{chunk-ZMD35NYG.js.map → chunk-MUH7A3FD.js.map} +0 -0
  767. /package/dist/cli-bundle/chunks/{chunk-5JE6SMYS.js.map → chunk-MVYWGY2A.js.map} +0 -0
  768. /package/dist/cli-bundle/chunks/{chunk-P5TFTLWW.js.map → chunk-MWMVPCIE.js.map} +0 -0
  769. /package/dist/cli-bundle/chunks/{chunk-T35XLYZF.js.map → chunk-NGXQ3PFT.js.map} +0 -0
  770. /package/dist/cli-bundle/chunks/{chunk-EZFKWSC7.js.map → chunk-NMP5I3I5.js.map} +0 -0
  771. /package/dist/cli-bundle/chunks/{chunk-HJE4JTKQ.js.map → chunk-O6AWCQRQ.js.map} +0 -0
  772. /package/dist/cli-bundle/chunks/{chunk-BFVHCAOO.js.map → chunk-OGWQ2IEP.js.map} +0 -0
  773. /package/dist/cli-bundle/chunks/{chunk-S4APD35C.js.map → chunk-QLMX7SRD.js.map} +0 -0
  774. /package/dist/cli-bundle/chunks/{chunk-MZ7VNEVY.js.map → chunk-RFNYTESG.js.map} +0 -0
  775. /package/dist/cli-bundle/chunks/{chunk-MTTXDAK4.js.map → chunk-SCUR7K7N.js.map} +0 -0
  776. /package/dist/cli-bundle/chunks/{chunk-P5YORJRH.js.map → chunk-SHQY2IDC.js.map} +0 -0
  777. /package/dist/cli-bundle/chunks/{chunk-S5AYOUT5.js.map → chunk-SMB7RV23.js.map} +0 -0
  778. /package/dist/cli-bundle/chunks/{chunk-N7X4WP6L.js.map → chunk-SPZ6DOGY.js.map} +0 -0
  779. /package/dist/cli-bundle/chunks/{chunk-P3VRG72Q.js.map → chunk-SQYJ4HF2.js.map} +0 -0
  780. /package/dist/cli-bundle/chunks/{chunk-4LRVSBO6.js.map → chunk-T42JWV3F.js.map} +0 -0
  781. /package/dist/cli-bundle/chunks/{chunk-NBFCNJ7Q.js.map → chunk-TULGS6X6.js.map} +0 -0
  782. /package/dist/cli-bundle/chunks/{chunk-ZJB3UV5U.js.map → chunk-TZXRBVAM.js.map} +0 -0
  783. /package/dist/cli-bundle/chunks/{chunk-ZD34OFFQ.js.map → chunk-VPIM42PC.js.map} +0 -0
  784. /package/dist/cli-bundle/chunks/{chunk-FGQKEDE4.js.map → chunk-W3DSJQIO.js.map} +0 -0
  785. /package/dist/cli-bundle/chunks/{chunk-4QQ6PM7M.js.map → chunk-W572BIEB.js.map} +0 -0
  786. /package/dist/cli-bundle/chunks/{chunk-Z2CRRZYF.js.map → chunk-WRTENIX3.js.map} +0 -0
  787. /package/dist/cli-bundle/chunks/{chunk-ZAHXPXVY.js.map → chunk-XB7KFVFI.js.map} +0 -0
  788. /package/dist/cli-bundle/chunks/{chunk-PDXT6Q55.js.map → chunk-XG625QP4.js.map} +0 -0
  789. /package/dist/cli-bundle/chunks/{chunk-D3UCE7RW.js.map → chunk-XUC7PI2H.js.map} +0 -0
  790. /package/dist/cli-bundle/chunks/{chunk-N6DNM2FA.js.map → chunk-Y46GD4IX.js.map} +0 -0
  791. /package/dist/cli-bundle/chunks/{chunk-FUM6UMY4.js.map → chunk-Y4M7CPQP.js.map} +0 -0
  792. /package/dist/cli-bundle/chunks/{chunk-HBYZDSK5.js.map → chunk-YN7Y6DQZ.js.map} +0 -0
  793. /package/dist/cli-bundle/chunks/{chunk-YQMMMONE.js.map → chunk-ZGK4L4JM.js.map} +0 -0
  794. /package/dist/cli-bundle/chunks/{chunk-LEKT4K7I.js.map → chunk-ZSUS2OD3.js.map} +0 -0
  795. /package/dist/cli-bundle/chunks/{chunk-TSPKZRRW.js.map → chunk-ZZD4J5XY.js.map} +0 -0
  796. /package/dist/cli-bundle/chunks/{contracts-HXJLKCRI.js.map → claim-RFS7BROJ.js.map} +0 -0
  797. /package/dist/cli-bundle/chunks/{contracts-OJEXMKVW.js.map → claim-XP5AWZ5H.js.map} +0 -0
  798. /package/dist/cli-bundle/chunks/{create-XWWQFQ6S.js.map → close-2SSSHHUZ.js.map} +0 -0
  799. /package/dist/cli-bundle/chunks/{create-WKOZKPQR.js.map → close-GEANHQ2J.js.map} +0 -0
  800. /package/dist/cli-bundle/chunks/{extension-ZF6ZZPOU.js.map → close-many-CMZW7ITN.js.map} +0 -0
  801. /package/dist/cli-bundle/chunks/{extension-NBAH62ML.js.map → close-many-ZFDIG6M7.js.map} +0 -0
  802. /package/dist/cli-bundle/chunks/{history-SGPYRAFT.js.map → comments-MFSYVNNU.js.map} +0 -0
  803. /package/dist/cli-bundle/chunks/{history-RYKLC72X.js.map → comments-XUBPXDYX.js.map} +0 -0
  804. /package/dist/cli-bundle/chunks/{history-redact-4H3FCKF3.js.map → config-D7XQMONX.js.map} +0 -0
  805. /package/dist/cli-bundle/chunks/{history-redact-54ICFKXM.js.map → config-T4FHBSYN.js.map} +0 -0
  806. /package/dist/cli-bundle/chunks/{init-RPIPQUNV.js.map → context-DIU275XI.js.map} +0 -0
  807. /package/dist/cli-bundle/chunks/{init-SKQAESQS.js.map → context-JCOYB4LZ.js.map} +0 -0
  808. /package/dist/cli-bundle/chunks/{list-64LHZ3HM.js.map → contracts-BVO7CSLK.js.map} +0 -0
  809. /package/dist/cli-bundle/chunks/{list-7LXBTEKI.js.map → contracts-NYPEW2G4.js.map} +0 -0
  810. /package/dist/cli-bundle/chunks/{restore-YJ2ET6AT.js.map → copy-32ROBIDL.js.map} +0 -0
  811. /package/dist/cli-bundle/chunks/{restore-PXOFL6AM.js.map → copy-NAGLGMHZ.js.map} +0 -0
  812. /package/dist/cli-bundle/chunks/{schema-2PUXCZ25.js.map → create-4V7SWNBB.js.map} +0 -0
  813. /package/dist/cli-bundle/chunks/{schema-Y6DXXK2F.js.map → create-E77SDCUP.js.map} +0 -0
  814. /package/dist/cli-bundle/chunks/{search-WNUNBQXO.js.map → delete-NQI5OSKN.js.map} +0 -0
  815. /package/dist/cli-bundle/chunks/{search-3S72CTD6.js.map → delete-RA5KTCLB.js.map} +0 -0
  816. /package/dist/cli-bundle/chunks/{test-DQ2QFJ7W.js.map → deps-32SU7HO5.js.map} +0 -0
  817. /package/dist/cli-bundle/chunks/{test-W7QBLVJS.js.map → deps-T7SCWXEX.js.map} +0 -0
  818. /package/dist/cli-bundle/chunks/{test-runs-245OINZR.js.map → docs-RRUPT7O2.js.map} +0 -0
  819. /package/dist/cli-bundle/chunks/{test-runs-ZRD4GCTT.js.map → docs-WL2IWGWV.js.map} +0 -0
  820. /package/dist/cli-bundle/chunks/{update-SJZ6S77U.js.map → eval-NF2J5SHR.js.map} +0 -0
  821. /package/dist/cli-bundle/chunks/{update-SFLZPJXX.js.map → eval-SKDT3MZU.js.map} +0 -0
  822. /package/dist/cli-bundle/chunks/{register-list-query-FB3FNDLZ.js.map → register-list-query-B42JCCOI.js.map} +0 -0
  823. /package/dist/cli-bundle/chunks/{register-list-query-5H66WFYF.js.map → register-list-query-OEYQHFXO.js.map} +0 -0
  824. /package/dist/cli-bundle/chunks/{register-mutation-Z2ETYHKS.js.map → register-mutation-3QXIHCQG.js.map} +0 -0
  825. /package/dist/cli-bundle/chunks/{register-mutation-UJO23C7R.js.map → register-mutation-IAEST26S.js.map} +0 -0
@@ -1,1961 +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]="58f10529-0722-5f3d-bc54-ca618699dc49")}catch(e){}}();
3
- import {
4
- LINKED_TEST_PM_CONTEXT_MODE_VALUES,
5
- LINKED_TEST_PROTECTED_ENV_KEYS,
6
- looksLikeStructuredLinkedTestEntry,
7
- normalizeStructuredLinkedTestEntry,
8
- parseLinkedTestAssertionEqualsMap,
9
- parseLinkedTestAssertionGteMap,
10
- parseLinkedTestBoolean,
11
- parseLinkedTestContextMode,
12
- parseLinkedTestEnvClear,
13
- parseLinkedTestEnvSet,
14
- parseLinkedTestJsonEntries,
15
- parseLinkedTestMinLines,
16
- parseLinkedTestRegexList,
17
- parseLinkedTestStringList
18
- } from "./chunk-MZ7VNEVY.js";
19
- import {
20
- createStdinTokenResolver,
21
- parseCsvKv,
22
- parseOptionalNumber
23
- } from "./chunk-7WYXBPYQ.js";
24
- import {
25
- runInit
26
- } from "./chunk-5JZ7APJU.js";
27
- import {
28
- locateItem,
29
- mutateItem,
30
- readLocatedItem
31
- } from "./chunk-57C2RLW5.js";
32
- import {
33
- compareTimestampStrings,
34
- nowIso
35
- } from "./chunk-FJRKQREY.js";
36
- import {
37
- PmCliError,
38
- getActiveExtensionRegistrations,
39
- readSettings,
40
- stableValueEquals
41
- } from "./chunk-US3T3W5J.js";
42
- import {
43
- EXIT_CODE,
44
- ITEM_FILE_EXTENSIONS,
45
- SCOPE_VALUES,
46
- getSettingsPath,
47
- pathExists,
48
- resolveGlobalPmRoot,
49
- resolveItemTypeRegistry,
50
- resolvePmRoot
51
- } from "./chunk-YD5FML7K.js";
52
-
53
- // dist/cli/commands/test.js
54
- import { spawn } from "node:child_process";
55
- import { cp, mkdir, mkdtemp, readdir, rm } from "node:fs/promises";
56
- import { tmpdir } from "node:os";
57
- import path from "node:path";
58
-
59
- // dist/core/test/item-test-run-tracking.js
60
- var DEFAULT_TRACKED_TEST_RUN_HISTORY_LIMIT = 20;
61
- function trackedTestRunHistoryLimit() {
62
- const raw = process.env.PM_TRACKED_TEST_RUN_HISTORY_LIMIT;
63
- if (!raw || raw.trim().length === 0) {
64
- return DEFAULT_TRACKED_TEST_RUN_HISTORY_LIMIT;
65
- }
66
- const parsed = Number.parseInt(raw, 10);
67
- if (!Number.isFinite(parsed) || parsed <= 0) {
68
- return DEFAULT_TRACKED_TEST_RUN_HISTORY_LIMIT;
69
- }
70
- return parsed;
71
- }
72
- function normalizeTrackedTestRunSummaries(entries) {
73
- return [...entries].filter((entry) => entry.run_id.trim().length > 0 && entry.started_at.trim().length > 0 && entry.finished_at.trim().length > 0 && entry.recorded_at.trim().length > 0).sort((left, right) => {
74
- const byRecorded = compareTimestampStrings(left.recorded_at, right.recorded_at);
75
- if (byRecorded !== 0)
76
- return byRecorded;
77
- const byRunId = left.run_id.localeCompare(right.run_id);
78
- if (byRunId !== 0)
79
- return byRunId;
80
- return left.kind.localeCompare(right.kind);
81
- });
82
- }
83
- async function appendTrackedTestRunSummary(options) {
84
- const historyLimit = trackedTestRunHistoryLimit();
85
- await mutateItem({
86
- pmRoot: options.pmRoot,
87
- settings: options.settings,
88
- id: options.itemId,
89
- op: "test_run_track",
90
- author: options.author,
91
- message: options.message,
92
- force: false,
93
- mutate(document) {
94
- const current = document.metadata.test_runs ?? [];
95
- const next = normalizeTrackedTestRunSummaries([...current, options.entry]);
96
- const bounded = next.length > historyLimit ? next.slice(next.length - historyLimit) : next;
97
- document.metadata.test_runs = bounded;
98
- return { changedFields: ["test_runs"] };
99
- }
100
- });
101
- }
102
-
103
- // dist/core/test/run-selectors.js
104
- var MAX_SELECTOR_ENTRY_LABEL_LENGTH = 100;
105
- function parseOnlyIndexValue(raw, optionName = "--only-index") {
106
- const value = typeof raw === "number" ? raw : Number(String(raw).trim());
107
- if (!Number.isInteger(value) || value < 1) {
108
- throw new PmCliError(`${optionName} requires a 1-based integer index into the linked-test list (got "${raw}"). Use pm test <id> --list to inspect positions.`, EXIT_CODE.USAGE);
109
- }
110
- return value;
111
- }
112
- function summarizeSelectorEntry(entry) {
113
- const label = entry.command ?? entry.path ?? "<no command>";
114
- const normalized = label.replaceAll(/\s+/g, " ").trim() || "<no command>";
115
- if (normalized.length <= MAX_SELECTOR_ENTRY_LABEL_LENGTH) {
116
- return normalized;
117
- }
118
- return `${normalized.slice(0, MAX_SELECTOR_ENTRY_LABEL_LENGTH - 3)}...`;
119
- }
120
- function describeLinkedTestEntries(tests) {
121
- return tests.map((entry, index) => `${index + 1}. ${summarizeSelectorEntry(entry)}`).join("; ");
122
- }
123
- function activeSelectorKinds(selector) {
124
- const kinds = [];
125
- if (selector.match !== void 0) {
126
- kinds.push("match");
127
- }
128
- if (selector.onlyIndex !== void 0) {
129
- kinds.push("only-index");
130
- }
131
- if (selector.onlyLast === true) {
132
- kinds.push("only-last");
133
- }
134
- return kinds;
135
- }
136
- function entryMatchesSubstring(entry, needle) {
137
- const command = entry.command?.toLowerCase() ?? "";
138
- const entryPath = entry.path?.toLowerCase() ?? "";
139
- return command.includes(needle) || entryPath.includes(needle);
140
- }
141
- function resolveLinkedTestRunSelection(tests, selector) {
142
- const kinds = activeSelectorKinds(selector);
143
- if (kinds.length === 0) {
144
- return {
145
- selector: null,
146
- requested: null,
147
- selected: tests,
148
- selected_indexes: tests.map((_, index) => index + 1),
149
- selected_count: tests.length,
150
- skipped_count: 0
151
- };
152
- }
153
- if (kinds.length > 1) {
154
- throw new PmCliError(`Combine at most one linked-test selector per run: ${kinds.map((kind2) => `--${kind2}`).join(" and ")} were provided. Pick one of --match, --only-index, --only-last.`, EXIT_CODE.USAGE);
155
- }
156
- const kind = kinds[0];
157
- if (tests.length === 0) {
158
- throw new PmCliError(`--${kind} matched no linked tests because this item has none. Add one first with --add, --command, or --add-json.`, EXIT_CODE.USAGE);
159
- }
160
- if (kind === "match") {
161
- const needle = selector.match.trim().toLowerCase();
162
- if (needle.length === 0) {
163
- throw new PmCliError("--match requires a non-empty substring to match against linked-test command/path values", EXIT_CODE.USAGE);
164
- }
165
- const selectedIndexes = [];
166
- const selected = [];
167
- for (let index = 0; index < tests.length; index += 1) {
168
- if (entryMatchesSubstring(tests[index], needle)) {
169
- selected.push(tests[index]);
170
- selectedIndexes.push(index + 1);
171
- }
172
- }
173
- if (selected.length === 0) {
174
- throw new PmCliError(`--match "${selector.match}" matched none of the ${tests.length} linked test(s). Available entries: ${describeLinkedTestEntries(tests)}`, EXIT_CODE.USAGE);
175
- }
176
- return {
177
- selector: "match",
178
- requested: selector.match,
179
- selected,
180
- selected_indexes: selectedIndexes,
181
- selected_count: selected.length,
182
- skipped_count: tests.length - selected.length
183
- };
184
- }
185
- if (kind === "only-index") {
186
- const index = parseOnlyIndexValue(selector.onlyIndex);
187
- if (index > tests.length) {
188
- throw new PmCliError(`--only-index ${index} is out of range: this item has ${tests.length} linked test(s). Available entries: ${describeLinkedTestEntries(tests)}`, EXIT_CODE.USAGE);
189
- }
190
- return {
191
- selector: "only-index",
192
- requested: String(index),
193
- selected: [tests[index - 1]],
194
- selected_indexes: [index],
195
- selected_count: 1,
196
- skipped_count: tests.length - 1
197
- };
198
- }
199
- return {
200
- selector: "only-last",
201
- requested: "last",
202
- selected: [tests[tests.length - 1]],
203
- selected_indexes: [tests.length],
204
- selected_count: 1,
205
- skipped_count: tests.length - 1
206
- };
207
- }
208
-
209
- // dist/cli/commands/test/linked-command-detection.js
210
- var PM_GLOBAL_FLAGS_WITH_VALUE = /* @__PURE__ */ new Set(["--path"]);
211
- var NPX_FLAGS_WITH_VALUE = /* @__PURE__ */ new Set(["-p", "--package", "-c", "--call"]);
212
- var PNPM_GLOBAL_FLAGS_WITH_VALUE = /* @__PURE__ */ new Set([
213
- "-c",
214
- "-C",
215
- "--config",
216
- "--dir",
217
- "--filter",
218
- "--workspace-dir"
219
- ]);
220
- var NPM_GLOBAL_FLAGS_WITH_VALUE = /* @__PURE__ */ new Set(["-C", "--prefix", "--userconfig", "--cache"]);
221
- var YARN_GLOBAL_FLAGS_WITH_VALUE = /* @__PURE__ */ new Set(["--cwd"]);
222
- var BUN_GLOBAL_FLAGS_WITH_VALUE = /* @__PURE__ */ new Set(["--cwd"]);
223
- var NPM_EXEC_SUBCOMMANDS = /* @__PURE__ */ new Set(["exec", "x"]);
224
- var SCRIPT_RUN_SUBCOMMANDS = /* @__PURE__ */ new Set(["run", "run-script"]);
225
- var SCRIPT_RUN_FLAGS_WITH_VALUE = /* @__PURE__ */ new Set(["-C", "--dir", "--cwd", "-w", "--workspace", "--filter"]);
226
- function splitNormalizedCommandSegments(normalizedCommand) {
227
- return normalizedCommand.split(/&&|\|\||\||;/).map((segment) => segment.trim()).filter((segment) => segment.length > 0);
228
- }
229
- function stripLeadingEnvAssignments(tokens) {
230
- let start = 0;
231
- if (tokens[start] === "env") {
232
- start += 1;
233
- }
234
- while (start < tokens.length) {
235
- const token = tokens[start];
236
- if (/^(?:[a-z_][a-z0-9_]*|\$env:[a-z_][a-z0-9_]*)=.*/.test(token)) {
237
- start += 1;
238
- continue;
239
- }
240
- break;
241
- }
242
- return tokens.slice(start);
243
- }
244
- function firstPmSubcommand(args) {
245
- let index = 0;
246
- while (index < args.length) {
247
- const token = args[index];
248
- if (token === "--") {
249
- index += 1;
250
- continue;
251
- }
252
- if (token.startsWith("-")) {
253
- if (PM_GLOBAL_FLAGS_WITH_VALUE.has(token)) {
254
- index += 2;
255
- continue;
256
- }
257
- index += 1;
258
- continue;
259
- }
260
- return token;
261
- }
262
- return void 0;
263
- }
264
- function isPmExecutableToken(token) {
265
- return token === "pm" || token === "pm.cmd" || token === "pm.exe" || token.endsWith("/pm") || token.endsWith("/pm.cmd") || token.endsWith("/pm.exe");
266
- }
267
- function normalizePackageSpecifier(token) {
268
- const trimmed = token.trim();
269
- if (!trimmed.startsWith("@")) {
270
- const versionSeparator2 = trimmed.indexOf("@");
271
- return versionSeparator2 === -1 ? trimmed : trimmed.slice(0, versionSeparator2);
272
- }
273
- const scopeSeparator = trimmed.indexOf("/");
274
- if (scopeSeparator === -1) {
275
- return trimmed;
276
- }
277
- const versionSeparator = trimmed.indexOf("@", scopeSeparator + 1);
278
- return versionSeparator === -1 ? trimmed : trimmed.slice(0, versionSeparator);
279
- }
280
- function isPmCliPackageToken(token) {
281
- const normalizedSpecifier = normalizePackageSpecifier(token);
282
- return normalizedSpecifier === "pm-cli" || normalizedSpecifier.endsWith("/pm-cli") || token === "pm-cli" || token.endsWith("/pm-cli");
283
- }
284
- function isPmCliScriptToken(token) {
285
- return token === "dist/cli.js" || token === "./dist/cli.js" || token.endsWith("/dist/cli.js");
286
- }
287
- function parseNpxCommand(tokens) {
288
- let index = 0;
289
- while (index < tokens.length) {
290
- const token = tokens[index];
291
- if (token === "--") {
292
- index += 1;
293
- break;
294
- }
295
- if (!token.startsWith("-")) {
296
- break;
297
- }
298
- if (token.includes("=")) {
299
- index += 1;
300
- continue;
301
- }
302
- if (NPX_FLAGS_WITH_VALUE.has(token)) {
303
- index += 2;
304
- continue;
305
- }
306
- index += 1;
307
- }
308
- const command = tokens[index];
309
- if (!command) {
310
- return null;
311
- }
312
- return {
313
- command,
314
- args: tokens.slice(index + 1)
315
- };
316
- }
317
- function parseLauncherSubcommand(tokens, flagsWithValue) {
318
- let index = 0;
319
- while (index < tokens.length) {
320
- const token = tokens[index];
321
- if (token === "--") {
322
- index += 1;
323
- continue;
324
- }
325
- if (token.startsWith("-")) {
326
- if (token.includes("=")) {
327
- index += 1;
328
- continue;
329
- }
330
- if (flagsWithValue.has(token)) {
331
- index += 2;
332
- continue;
333
- }
334
- index += 1;
335
- continue;
336
- }
337
- return {
338
- subcommand: token,
339
- args: tokens.slice(index + 1)
340
- };
341
- }
342
- return null;
343
- }
344
- function parsePnpmDlxCommand(tokens) {
345
- const parsed = parseLauncherSubcommand(tokens, PNPM_GLOBAL_FLAGS_WITH_VALUE);
346
- if (parsed?.subcommand !== "dlx") {
347
- return null;
348
- }
349
- return parseNpxCommand(parsed.args);
350
- }
351
- function parseNpmExecCommand(tokens) {
352
- const parsed = parseLauncherSubcommand(tokens, NPM_GLOBAL_FLAGS_WITH_VALUE);
353
- if (!parsed || !NPM_EXEC_SUBCOMMANDS.has(parsed.subcommand)) {
354
- return null;
355
- }
356
- return parseNpxCommand(parsed.args);
357
- }
358
- function resolvePmSubcommandContext(args) {
359
- let index = 0;
360
- while (index < args.length) {
361
- const token = args[index];
362
- if (token === "--") {
363
- index += 1;
364
- continue;
365
- }
366
- if (token.startsWith("-")) {
367
- if (PM_GLOBAL_FLAGS_WITH_VALUE.has(token)) {
368
- index += 2;
369
- continue;
370
- }
371
- index += 1;
372
- continue;
373
- }
374
- return {
375
- subcommand: token,
376
- remaining: args.slice(index + 1)
377
- };
378
- }
379
- return null;
380
- }
381
- function firstPositionalToken(tokens) {
382
- for (const token of tokens) {
383
- if (!token.startsWith("-")) {
384
- return token;
385
- }
386
- }
387
- return void 0;
388
- }
389
-
390
- // dist/cli/commands/test.js
391
- var TEST_OUTPUT_MAX_BUFFER_BYTES = 20 * 1024 * 1024;
392
- var DEFAULT_LINKED_TEST_TIMEOUT_FORCE_KILL_DELAY_MS = 3e3;
393
- var DEFAULT_LINKED_TEST_HEARTBEAT_INTERVAL_MS = 1e4;
394
- var DEFAULT_LINKED_TEST_PIPE_CLOSE_GRACE_MS = 5e3;
395
- var MAX_LINKED_TEST_COMMAND_LABEL_LENGTH = 120;
396
- var LINKED_TEST_TRACKER_DIRS_TO_SKIP = /* @__PURE__ */ new Set(["locks", "extensions", "runtime"]);
397
- var LINKED_TEST_ITEM_COUNT_DIRS_TO_SKIP = /* @__PURE__ */ new Set(["history", "index", "search", "extensions", "locks", "runtime"]);
398
- var LINKED_TEST_INFRA_COLLISION_PATTERNS = [
399
- /eaddrinuse/i,
400
- /address already in use/i,
401
- /port\s+\d+\s+is already in use/i,
402
- /web server[^.\n]*already running/i,
403
- /failed to listen on/i
404
- ];
405
- var PM_SUBCOMMANDS_WITH_ITEM_REFERENCE = /* @__PURE__ */ new Set([
406
- "get",
407
- "history",
408
- "restore",
409
- "update",
410
- "close",
411
- "delete",
412
- "append",
413
- "claim",
414
- "release",
415
- "comments",
416
- "notes",
417
- "learnings",
418
- "files",
419
- "docs",
420
- "deps",
421
- "test"
422
- ]);
423
- var PM_TRACKER_READ_SUBCOMMANDS = /* @__PURE__ */ new Set([
424
- "activity",
425
- "calendar",
426
- "context",
427
- "ctx",
428
- "deps",
429
- "get",
430
- "health",
431
- "history",
432
- "list",
433
- "list-all",
434
- "list-blocked",
435
- "list-canceled",
436
- "list-closed",
437
- "list-draft",
438
- "list-in-progress",
439
- "list-open",
440
- "search",
441
- "stats",
442
- "test-all",
443
- "validate"
444
- ]);
445
- function readPositiveIntegerEnv(name, fallback) {
446
- const raw = process.env[name];
447
- if (typeof raw !== "string" || raw.trim().length === 0) {
448
- return fallback;
449
- }
450
- const parsed = Number.parseInt(raw, 10);
451
- if (!Number.isFinite(parsed) || parsed <= 0) {
452
- return fallback;
453
- }
454
- return parsed;
455
- }
456
- function linkedTestTimeoutForceKillDelayMs() {
457
- return readPositiveIntegerEnv("PM_LINKED_TEST_TIMEOUT_FORCE_KILL_DELAY_MS", DEFAULT_LINKED_TEST_TIMEOUT_FORCE_KILL_DELAY_MS);
458
- }
459
- function linkedTestHeartbeatIntervalMs() {
460
- return readPositiveIntegerEnv("PM_LINKED_TEST_HEARTBEAT_INTERVAL_MS", DEFAULT_LINKED_TEST_HEARTBEAT_INTERVAL_MS);
461
- }
462
- function linkedTestPipeCloseGraceMs() {
463
- return readPositiveIntegerEnv("PM_LINKED_TEST_PIPE_CLOSE_GRACE_MS", DEFAULT_LINKED_TEST_PIPE_CLOSE_GRACE_MS);
464
- }
465
- function resolveAuthor(candidate, fallback) {
466
- const resolved = candidate ?? process.env.PM_AUTHOR ?? fallback;
467
- const trimmed = resolved.trim();
468
- return trimmed || "unknown";
469
- }
470
- function resolveTrackedRunId(kind) {
471
- const fromEnv = process.env.PM_BACKGROUND_TEST_RUN_ID?.trim();
472
- if (fromEnv && fromEnv.length > 0) {
473
- return fromEnv;
474
- }
475
- return `${kind}-local-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
476
- }
477
- function summarizeRunResultStatuses(results) {
478
- let passed = 0;
479
- let failed = 0;
480
- let skipped = 0;
481
- for (const entry of results) {
482
- if (entry.status === "passed") {
483
- passed += 1;
484
- continue;
485
- }
486
- if (entry.status === "failed") {
487
- failed += 1;
488
- continue;
489
- }
490
- skipped += 1;
491
- }
492
- return { passed, failed, skipped };
493
- }
494
- function summarizeContextPreflight(runResults) {
495
- let checkedPmCommands = 0;
496
- let trackerReadCommands = 0;
497
- let mismatches = 0;
498
- let autoRemediated = 0;
499
- for (const result of runResults) {
500
- const context = result.execution_context;
501
- if (!context || context.is_pm_command !== true) {
502
- continue;
503
- }
504
- checkedPmCommands += 1;
505
- if (context.is_pm_tracker_read_command === true) {
506
- trackerReadCommands += 1;
507
- }
508
- if (context.mismatch_detected === true) {
509
- mismatches += 1;
510
- }
511
- if (context.auto_pm_context_applied === true) {
512
- autoRemediated += 1;
513
- }
514
- }
515
- return {
516
- checked_pm_commands: checkedPmCommands,
517
- tracker_read_commands: trackerReadCommands,
518
- mismatches,
519
- auto_remediated: autoRemediated
520
- };
521
- }
522
- function ensureScope(raw) {
523
- const value = raw ?? "project";
524
- if (!SCOPE_VALUES.includes(value)) {
525
- throw new PmCliError(`Invalid scope "${raw}"`, EXIT_CODE.USAGE);
526
- }
527
- return value;
528
- }
529
- function parsePmContextMode(raw) {
530
- if (!raw) {
531
- return "schema";
532
- }
533
- const normalized = raw.trim().toLowerCase();
534
- if (LINKED_TEST_PM_CONTEXT_MODE_VALUES.includes(normalized)) {
535
- return normalized;
536
- }
537
- throw new PmCliError(`Invalid --pm-context value "${raw}". Expected one of: ${LINKED_TEST_PM_CONTEXT_MODE_VALUES.join(", ")}`, EXIT_CODE.USAGE);
538
- }
539
- function resolveLinkedTestRequestedContextMode(linkedTest, runLevelMode, overrideLinkedPmContext) {
540
- if (overrideLinkedPmContext) {
541
- return runLevelMode;
542
- }
543
- if (typeof linkedTest.pm_context_mode !== "string" || linkedTest.pm_context_mode.trim().length === 0) {
544
- return runLevelMode;
545
- }
546
- return parsePmContextMode(linkedTest.pm_context_mode);
547
- }
548
- function resolveLinkedTestEffectiveContextMode(requestedMode, isPmTrackerReadCommand) {
549
- if (requestedMode === "auto") {
550
- return isPmTrackerReadCommand ? "tracker" : "schema";
551
- }
552
- return requestedMode;
553
- }
554
- function hasLinkedTestAssertions(linkedTest) {
555
- return (linkedTest.assert_stdout_contains?.length ?? 0) > 0 || (linkedTest.assert_stdout_regex?.length ?? 0) > 0 || (linkedTest.assert_stderr_contains?.length ?? 0) > 0 || (linkedTest.assert_stderr_regex?.length ?? 0) > 0 || typeof linkedTest.assert_stdout_min_lines === "number" || Object.keys(linkedTest.assert_json_field_equals ?? {}).length > 0 || Object.keys(linkedTest.assert_json_field_gte ?? {}).length > 0;
556
- }
557
- function buildPmContextMismatchHint(params) {
558
- const { executionContext, runLevelPmContextMode, linkedOverridePmContextMode } = params;
559
- if (!executionContext.is_pm_tracker_read_command || !executionContext.mismatch_detected) {
560
- return "";
561
- }
562
- if (runLevelPmContextMode === "tracker" && linkedOverridePmContextMode === "schema") {
563
- return " Linked test metadata pm_context_mode=schema overrides run-level --pm-context tracker. Set pm_context_mode=tracker (or auto) on the linked test, or remove the override, to run against seeded tracker data.";
564
- }
565
- if (executionContext.pm_context_mode === "schema") {
566
- return " Use --pm-context tracker to run PM tracker-read commands against seeded tracker data.";
567
- }
568
- return "";
569
- }
570
- function mergeEnvSetDirectives(entries, optionName) {
571
- const merged = {};
572
- if (!entries) {
573
- return merged;
574
- }
575
- for (const entry of entries) {
576
- const parsed = parseLinkedTestEnvSet(entry, optionName);
577
- if (!parsed) {
578
- continue;
579
- }
580
- for (const [key, value] of Object.entries(parsed)) {
581
- merged[key] = value;
582
- }
583
- }
584
- return merged;
585
- }
586
- function mergeEnvClearDirectives(entries, optionName) {
587
- if (!entries) {
588
- return [];
589
- }
590
- const values = [];
591
- for (const entry of entries) {
592
- const parsed = parseLinkedTestEnvClear(entry, optionName);
593
- if (parsed) {
594
- values.push(...parsed);
595
- }
596
- }
597
- return [...new Set(values)];
598
- }
599
- function looksLikePrefixedItemId(token, idPrefix) {
600
- const normalizedPrefix = idPrefix.trim().toLowerCase().replace(/-+$/, "");
601
- if (normalizedPrefix.length === 0) {
602
- return false;
603
- }
604
- const normalized = token.trim().toLowerCase();
605
- if (!normalized.startsWith(`${normalizedPrefix}-`)) {
606
- return false;
607
- }
608
- return normalized.length > normalizedPrefix.length + 1;
609
- }
610
- function extractPmInvocationArgsFromSegment(segment) {
611
- const rawTokens = segment.split(" ").filter((token) => token.length > 0);
612
- const tokens = stripLeadingEnvAssignments(rawTokens);
613
- if (tokens.length === 0) {
614
- return null;
615
- }
616
- const [executable, ...args] = tokens;
617
- if (isPmExecutableToken(executable) || isPmCliScriptToken(executable)) {
618
- return args;
619
- }
620
- if (executable === "node" && args.length > 0 && isPmCliScriptToken(args[0])) {
621
- return args.slice(1);
622
- }
623
- return extractPackageManagerPmInvocationArgs(executable, args);
624
- }
625
- function extractPackageManagerPmInvocationArgs(executable, args) {
626
- const parsed = parsePackageManagerPmInvocation(executable, args);
627
- if (!parsed || !isPmExecutableToken(parsed.command) && !isPmCliPackageToken(parsed.command)) {
628
- return null;
629
- }
630
- return parsed.args;
631
- }
632
- function parsePackageManagerPmInvocation(executable, args) {
633
- if (executable === "npx" || executable === "bunx") {
634
- return parseNpxCommand(args);
635
- }
636
- if (executable === "pnpm") {
637
- return parsePnpmDlxCommand(args);
638
- }
639
- if (executable === "npm") {
640
- return parseNpmExecCommand(args);
641
- }
642
- return null;
643
- }
644
- function commandInvokesPmCli(command) {
645
- const normalizedCommand = normalizeCommandForValidation(command);
646
- return splitNormalizedCommandSegments(normalizedCommand).some((segment) => extractPmInvocationArgsFromSegment(segment) !== null);
647
- }
648
- function commandInvokesPmTrackerReadCommand(command) {
649
- const normalizedCommand = normalizeCommandForValidation(command);
650
- return splitNormalizedCommandSegments(normalizedCommand).some((segment) => {
651
- const invocationArgs = extractPmInvocationArgsFromSegment(segment);
652
- if (!invocationArgs) {
653
- return false;
654
- }
655
- const context = resolvePmSubcommandContext(invocationArgs);
656
- if (!context) {
657
- return false;
658
- }
659
- return PM_TRACKER_READ_SUBCOMMANDS.has(context.subcommand);
660
- });
661
- }
662
- function extractReferencedPmItemIdsFromCommand(command, idPrefix = "pm") {
663
- const normalizedCommand = normalizeCommandForValidation(command);
664
- const ids = /* @__PURE__ */ new Set();
665
- for (const segment of splitNormalizedCommandSegments(normalizedCommand)) {
666
- const invocationArgs = extractPmInvocationArgsFromSegment(segment);
667
- if (!invocationArgs) {
668
- continue;
669
- }
670
- const context = resolvePmSubcommandContext(invocationArgs);
671
- if (!context) {
672
- continue;
673
- }
674
- if (!PM_SUBCOMMANDS_WITH_ITEM_REFERENCE.has(context.subcommand)) {
675
- continue;
676
- }
677
- const candidate = firstPositionalToken(context.remaining);
678
- if (!candidate) {
679
- continue;
680
- }
681
- if (looksLikePrefixedItemId(candidate, idPrefix)) {
682
- ids.add(candidate);
683
- }
684
- }
685
- return [...ids].sort((left, right) => left.localeCompare(right));
686
- }
687
- function resolveDirectRunnerSubcommand(parsed) {
688
- if (!parsed) {
689
- return void 0;
690
- }
691
- if (!SCRIPT_RUN_SUBCOMMANDS.has(parsed.subcommand)) {
692
- return parsed.subcommand;
693
- }
694
- return parseLauncherSubcommand(parsed.args, SCRIPT_RUN_FLAGS_WITH_VALUE)?.subcommand;
695
- }
696
- function firstDirectTestRunnerSubcommand(executable, args) {
697
- if (executable === "npx" || executable === "bunx") {
698
- return parseNpxCommand(args)?.command;
699
- }
700
- if (executable === "pnpm") {
701
- return resolveDirectRunnerSubcommand(parseLauncherSubcommand(args, PNPM_GLOBAL_FLAGS_WITH_VALUE));
702
- }
703
- if (executable === "npm") {
704
- return resolveDirectRunnerSubcommand(parseLauncherSubcommand(args, NPM_GLOBAL_FLAGS_WITH_VALUE));
705
- }
706
- if (executable === "yarn") {
707
- return resolveDirectRunnerSubcommand(parseLauncherSubcommand(args, YARN_GLOBAL_FLAGS_WITH_VALUE));
708
- }
709
- if (executable === "bun") {
710
- return resolveDirectRunnerSubcommand(parseLauncherSubcommand(args, BUN_GLOBAL_FLAGS_WITH_VALUE));
711
- }
712
- return void 0;
713
- }
714
- function isDirectTestRunnerSubcommand(token) {
715
- if (!token) {
716
- return false;
717
- }
718
- return token === "vitest" || token === "test" || token.startsWith("test:");
719
- }
720
- function parsedLauncherInvokesRecursiveTestAll(parsed) {
721
- if (!parsed) {
722
- return false;
723
- }
724
- if (!isPmExecutableToken(parsed.command) && !isPmCliPackageToken(parsed.command)) {
725
- return false;
726
- }
727
- return firstPmSubcommand(parsed.args) === "test-all";
728
- }
729
- function segmentInvokesRecursiveTestAll(segment) {
730
- const rawTokens = segment.split(" ").filter((token) => token.length > 0);
731
- const tokens = stripLeadingEnvAssignments(rawTokens);
732
- if (tokens.length === 0) {
733
- return false;
734
- }
735
- const [executable, ...args] = tokens;
736
- if (isPmExecutableToken(executable) || isPmCliScriptToken(executable)) {
737
- return firstPmSubcommand(args) === "test-all";
738
- }
739
- if (executable === "node" && args.length > 0 && isPmCliScriptToken(args[0])) {
740
- return firstPmSubcommand(args.slice(1)) === "test-all";
741
- }
742
- if (executable === "npx" || executable === "bunx") {
743
- return parsedLauncherInvokesRecursiveTestAll(parseNpxCommand(args));
744
- }
745
- if (executable === "pnpm") {
746
- return parsedLauncherInvokesRecursiveTestAll(parsePnpmDlxCommand(args));
747
- }
748
- if (executable === "npm") {
749
- return parsedLauncherInvokesRecursiveTestAll(parseNpmExecCommand(args));
750
- }
751
- return false;
752
- }
753
- function invokesRecursiveTestAllCommand(command) {
754
- const normalized = normalizeCommandForValidation(command);
755
- return splitNormalizedCommandSegments(normalized).some((segment) => segmentInvokesRecursiveTestAll(segment));
756
- }
757
- function assertNoRecursiveTestAllCommand(command) {
758
- if (!invokesRecursiveTestAllCommand(command))
759
- return;
760
- throw new PmCliError('Linked test commands must not invoke "pm test-all"; this creates recursive orchestration.', EXIT_CODE.USAGE);
761
- }
762
- function normalizeCommandForValidation(command) {
763
- return command.trim().replaceAll("\\", "/").replaceAll('"', "").replaceAll("'", "").replaceAll(/\s+/g, " ").toLowerCase();
764
- }
765
- function commandUsesSandboxRunner(normalizedCommand) {
766
- return normalizedCommand.includes("node scripts/run-tests.mjs ") || normalizedCommand.endsWith("node scripts/run-tests.mjs") || normalizedCommand.includes("node ./scripts/run-tests.mjs ") || normalizedCommand.endsWith("node ./scripts/run-tests.mjs");
767
- }
768
- function segmentHasExplicitSandboxEnv(normalizedSegment) {
769
- const hasExplicitPmPath = /\bpm_path\s*=/.test(normalizedSegment) || /\$env:pm_path\s*=/.test(normalizedSegment);
770
- const hasExplicitPmGlobalPath = /\bpm_global_path\s*=/.test(normalizedSegment) || /\$env:pm_global_path\s*=/.test(normalizedSegment);
771
- return hasExplicitPmPath && hasExplicitPmGlobalPath;
772
- }
773
- function segmentInvokesUnsafeDirectTestRunner(normalizedSegment) {
774
- const rawTokens = normalizedSegment.split(" ").filter((token) => token.length > 0);
775
- const tokens = stripLeadingEnvAssignments(rawTokens);
776
- if (tokens.length === 0) {
777
- return false;
778
- }
779
- const [executable, ...args] = tokens;
780
- if (executable === "vitest" || executable.endsWith("/vitest") || executable.endsWith("/vitest.mjs")) {
781
- return true;
782
- }
783
- if (executable === "node") {
784
- return nodeArgsInvokeUnsafeDirectTestRunner(args);
785
- }
786
- return packageManagerInvokesUnsafeDirectTestRunner(executable, args);
787
- }
788
- function nodeArgsInvokeUnsafeDirectTestRunner(args) {
789
- return args.includes("--test") || args.some((arg) => arg === "vitest" || arg === "vitest.mjs" || arg.endsWith("/vitest") || arg.endsWith("/vitest.mjs"));
790
- }
791
- function packageManagerInvokesUnsafeDirectTestRunner(executable, args) {
792
- if (executable === "npx" || executable === "bunx") {
793
- return isDirectTestRunnerSubcommand(parseNpxCommand(args)?.command);
794
- }
795
- if (executable === "pnpm" || executable === "npm") {
796
- return isDirectTestRunnerSubcommand(parsePackageManagerPmInvocation(executable, args)?.command) || firstDirectTestRunnerSubcommand(executable, args) === "vitest";
797
- }
798
- return (executable === "yarn" || executable === "bun") && firstDirectTestRunnerSubcommand(executable, args) === "vitest";
799
- }
800
- function assertSandboxSafeTestRunnerCommand(command) {
801
- const normalized = normalizeCommandForValidation(command);
802
- const segments = splitNormalizedCommandSegments(normalized);
803
- const hasUnsafeDirectRunnerSegment = segments.some((segment) => !commandUsesSandboxRunner(segment) && segmentInvokesUnsafeDirectTestRunner(segment) && !segmentHasExplicitSandboxEnv(segment));
804
- if (!hasUnsafeDirectRunnerSegment) {
805
- return;
806
- }
807
- throw new PmCliError('Linked test runner commands must be sandbox-safe: use "node scripts/run-tests.mjs <test|coverage>", use a package-manager script such as "pnpm test", or include PM_PATH=... PM_GLOBAL_PATH=... INLINE in the command string (exporting them in your shell environment is not checked). Example: "PM_PATH=/tmp/pm-x PM_GLOBAL_PATH=/tmp/pm-x-g vitest run".', EXIT_CODE.USAGE);
808
- }
809
- function getRuntimeSafetySkipReason(command) {
810
- if (!invokesRecursiveTestAllCommand(command))
811
- return void 0;
812
- return 'Linked test command skipped: Linked test commands must not invoke "pm test-all"; this creates recursive orchestration.';
813
- }
814
- function parseAddEntries(raw) {
815
- if (!raw)
816
- return [];
817
- return raw.map(parseAddEntry);
818
- }
819
- function parseAddEntry(entry) {
820
- const trimmed = entry.trim();
821
- const kv = looksLikeStructuredLinkedTestEntry(trimmed) ? normalizeStructuredLinkedTestEntry(parseCsvKv(entry, "--add"), "--add") : { command: trimmed };
822
- const command = trimLinkedTestEntryField(kv.command);
823
- if (!command) {
824
- throw new PmCliError("--add requires command=<value> or a bare command (path=<value> is optional metadata)", EXIT_CODE.USAGE);
825
- }
826
- assertNoRecursiveTestAllCommand(command);
827
- assertSandboxSafeTestRunnerCommand(command);
828
- return {
829
- command,
830
- path: trimLinkedTestEntryField(kv.path),
831
- scope: ensureScope(kv.scope),
832
- timeout_seconds: parseLinkedTestTimeoutSeconds(trimLinkedTestEntryField(kv.timeout_seconds), trimLinkedTestEntryField(kv.timeout)),
833
- pm_context_mode: parseLinkedTestContextMode(trimLinkedTestEntryField(kv.pm_context_mode), "--add"),
834
- env_set: parseLinkedTestEnvSet(trimLinkedTestEntryField(kv.env_set), "--add"),
835
- env_clear: parseLinkedTestEnvClear(trimLinkedTestEntryField(kv.env_clear), "--add"),
836
- shared_host_safe: parseLinkedTestBoolean(trimLinkedTestEntryField(kv.shared_host_safe), "--add", "shared_host_safe"),
837
- assert_stdout_contains: parseLinkedTestStringList(trimLinkedTestEntryField(kv.assert_stdout_contains)),
838
- assert_stdout_regex: parseLinkedTestRegexList(trimLinkedTestEntryField(kv.assert_stdout_regex), "--add", "assert_stdout_regex"),
839
- assert_stderr_contains: parseLinkedTestStringList(trimLinkedTestEntryField(kv.assert_stderr_contains)),
840
- assert_stderr_regex: parseLinkedTestRegexList(trimLinkedTestEntryField(kv.assert_stderr_regex), "--add", "assert_stderr_regex"),
841
- assert_stdout_min_lines: parseLinkedTestMinLines(trimLinkedTestEntryField(kv.assert_stdout_min_lines), "--add"),
842
- assert_json_field_equals: parseLinkedTestAssertionEqualsMap(trimLinkedTestEntryField(kv.assert_json_field_equals), "--add"),
843
- assert_json_field_gte: parseLinkedTestAssertionGteMap(trimLinkedTestEntryField(kv.assert_json_field_gte), "--add"),
844
- note: trimLinkedTestEntryField(kv.note)
845
- };
846
- }
847
- function trimLinkedTestEntryField(value) {
848
- const trimmed = value?.trim();
849
- return trimmed && trimmed.length > 0 ? trimmed : void 0;
850
- }
851
- function parseLinkedTestTimeoutSeconds(timeoutSecondsRaw, timeoutAliasRaw) {
852
- if (timeoutSecondsRaw && timeoutAliasRaw && timeoutSecondsRaw !== timeoutAliasRaw) {
853
- throw new PmCliError("--add timeout and timeout_seconds must match when both are provided", EXIT_CODE.USAGE);
854
- }
855
- const timeoutRaw = timeoutSecondsRaw ?? timeoutAliasRaw;
856
- return timeoutRaw === void 0 ? void 0 : Math.floor(parseOptionalNumber(timeoutRaw, "timeout_seconds"));
857
- }
858
- function parseAddJsonEntries(raw) {
859
- if (!raw)
860
- return [];
861
- return raw.flatMap((entry) => {
862
- const parsed = parseLinkedTestJsonEntries(entry, "--add-json");
863
- for (const linkedTest of parsed) {
864
- const command = linkedTest.command;
865
- if (!command) {
866
- throw new PmCliError("--add-json requires a non-empty command string", EXIT_CODE.USAGE);
867
- }
868
- assertNoRecursiveTestAllCommand(command);
869
- assertSandboxSafeTestRunnerCommand(command);
870
- }
871
- return parsed;
872
- });
873
- }
874
- function parseRemoveEntries(raw) {
875
- if (!raw)
876
- return [];
877
- return raw.map((entry) => {
878
- const trimmed = entry.trim();
879
- if (!trimmed) {
880
- throw new PmCliError("--remove requires command or path value", EXIT_CODE.USAGE);
881
- }
882
- if (trimmed.includes("=") || /^(?:[-*+]\s+)?(?:path|command)\s*[:=]/i.test(trimmed) || trimmed.startsWith("```")) {
883
- const kv = parseCsvKv(trimmed, "--remove");
884
- const value = kv.path ?? kv.command;
885
- if (!value?.trim()) {
886
- throw new PmCliError("--remove requires command=<value> and/or path=<value>", EXIT_CODE.USAGE);
887
- }
888
- return value.trim();
889
- }
890
- return trimmed;
891
- });
892
- }
893
- function closeLinkedTestStdin(child) {
894
- try {
895
- child.stdin?.end();
896
- } catch {
897
- }
898
- }
899
- function summarizeLinkedTestCommand(command) {
900
- const normalized = command.trim().replaceAll(/\s+/g, " ");
901
- if (normalized.length <= MAX_LINKED_TEST_COMMAND_LABEL_LENGTH) {
902
- return normalized;
903
- }
904
- return `${normalized.slice(0, MAX_LINKED_TEST_COMMAND_LABEL_LENGTH - 3)}...`;
905
- }
906
- function shouldEmitLinkedTestProgress(mode) {
907
- if (mode === "off") {
908
- return false;
909
- }
910
- if (mode === "always") {
911
- return true;
912
- }
913
- return process.stderr.isTTY === true;
914
- }
915
- function emitLinkedTestProgress(message) {
916
- try {
917
- process.stderr.write(`${message}
918
- `);
919
- } catch {
920
- }
921
- }
922
- function beginLinkedTestProgress(context, mode) {
923
- if (!shouldEmitLinkedTestProgress(mode)) {
924
- return null;
925
- }
926
- const commandLabel = summarizeLinkedTestCommand(context.command);
927
- const startAt = Date.now();
928
- emitLinkedTestProgress(`[pm test] linked-test ${context.index}/${context.total} start timeout_ms=${context.timeoutMs} command="${commandLabel}"`);
929
- const heartbeat = setInterval(() => {
930
- const elapsedMs = Date.now() - startAt;
931
- emitLinkedTestProgress(`[pm test] linked-test ${context.index}/${context.total} running elapsed_ms=${elapsedMs} command="${commandLabel}"`);
932
- }, linkedTestHeartbeatIntervalMs());
933
- heartbeat.unref?.();
934
- return heartbeat;
935
- }
936
- function endLinkedTestProgress(context, executionResult, startedAt, mode) {
937
- if (!shouldEmitLinkedTestProgress(mode)) {
938
- return;
939
- }
940
- const commandLabel = summarizeLinkedTestCommand(context.command);
941
- const elapsedMs = Date.now() - startedAt;
942
- const failed = executionResult.timedOut || executionResult.maxBufferExceeded || executionResult.exitCode !== 0;
943
- const statusLabel = failed ? "failed" : "passed";
944
- const reasonTokens = [];
945
- if (executionResult.timedOut) {
946
- reasonTokens.push("reason=timeout");
947
- }
948
- if (executionResult.maxBufferExceeded) {
949
- reasonTokens.push("reason=max_buffer");
950
- }
951
- if (executionResult.signal) {
952
- reasonTokens.push(`signal=${executionResult.signal}`);
953
- }
954
- const exitLabel = executionResult.exitCode === null ? "null" : String(executionResult.exitCode);
955
- const reasonSuffix = reasonTokens.length > 0 ? ` ${reasonTokens.join(" ")}` : "";
956
- emitLinkedTestProgress(`[pm test] linked-test ${context.index}/${context.total} end status=${statusLabel} exit_code=${exitLabel} elapsed_ms=${elapsedMs}${reasonSuffix} command="${commandLabel}"`);
957
- }
958
- async function killProcessTree(pid) {
959
- if (!Number.isInteger(pid) || pid <= 0) {
960
- return;
961
- }
962
- if (process.platform === "win32") {
963
- await new Promise((resolve) => {
964
- const killer = spawn("taskkill", ["/pid", String(pid), "/T", "/F"], {
965
- stdio: "ignore",
966
- windowsHide: true
967
- });
968
- killer.on("error", () => resolve());
969
- killer.on("close", () => resolve());
970
- });
971
- return;
972
- }
973
- try {
974
- process.kill(-pid, "SIGKILL");
975
- return;
976
- } catch {
977
- }
978
- try {
979
- process.kill(pid, "SIGKILL");
980
- } catch {
981
- }
982
- }
983
- async function runLinkedTestCommand(command, timeoutMs, env, progressContext, progressMode) {
984
- const startedAt = Date.now();
985
- const heartbeat = beginLinkedTestProgress(progressContext, progressMode);
986
- const child = spawn(command, {
987
- cwd: process.cwd(),
988
- env,
989
- shell: true,
990
- windowsHide: true,
991
- detached: process.platform !== "win32",
992
- stdio: ["pipe", "pipe", "pipe"]
993
- });
994
- closeLinkedTestStdin(child);
995
- let stdout = "";
996
- let stderr = "";
997
- let stdoutBytes = 0;
998
- let stderrBytes = 0;
999
- let timedOut = false;
1000
- let maxBufferExceeded = false;
1001
- let spawnError;
1002
- let forceKillTimer = null;
1003
- let timedOutTimer = null;
1004
- let terminationRequested = false;
1005
- const clearTimers = () => {
1006
- if (heartbeat) {
1007
- clearInterval(heartbeat);
1008
- }
1009
- if (timedOutTimer) {
1010
- clearTimeout(timedOutTimer);
1011
- timedOutTimer = null;
1012
- }
1013
- if (forceKillTimer) {
1014
- clearTimeout(forceKillTimer);
1015
- forceKillTimer = null;
1016
- }
1017
- };
1018
- const requestTermination = async () => {
1019
- if (terminationRequested) {
1020
- return;
1021
- }
1022
- terminationRequested = true;
1023
- const pid = child.pid;
1024
- if (!pid || pid <= 0) {
1025
- try {
1026
- child.kill("SIGTERM");
1027
- } catch {
1028
- }
1029
- return;
1030
- }
1031
- if (process.platform === "win32") {
1032
- await killProcessTree(pid);
1033
- return;
1034
- }
1035
- try {
1036
- process.kill(-pid, "SIGTERM");
1037
- } catch {
1038
- try {
1039
- child.kill("SIGTERM");
1040
- } catch {
1041
- }
1042
- }
1043
- forceKillTimer = setTimeout(() => {
1044
- void killProcessTree(pid);
1045
- }, linkedTestTimeoutForceKillDelayMs());
1046
- forceKillTimer.unref?.();
1047
- };
1048
- const appendChunk = (chunk, target) => {
1049
- const text = typeof chunk === "string" ? chunk : chunk.toString("utf8");
1050
- const bytes = Buffer.byteLength(text);
1051
- if (target === "stdout") {
1052
- stdoutBytes += bytes;
1053
- if (stdoutBytes <= TEST_OUTPUT_MAX_BUFFER_BYTES) {
1054
- stdout += text;
1055
- }
1056
- } else {
1057
- stderrBytes += bytes;
1058
- if (stderrBytes <= TEST_OUTPUT_MAX_BUFFER_BYTES) {
1059
- stderr += text;
1060
- }
1061
- }
1062
- if (!maxBufferExceeded && (stdoutBytes > TEST_OUTPUT_MAX_BUFFER_BYTES || stderrBytes > TEST_OUTPUT_MAX_BUFFER_BYTES)) {
1063
- maxBufferExceeded = true;
1064
- void requestTermination();
1065
- }
1066
- };
1067
- child.stdout?.on("data", (chunk) => appendChunk(chunk, "stdout"));
1068
- child.stderr?.on("data", (chunk) => appendChunk(chunk, "stderr"));
1069
- child.on("error", (error) => {
1070
- spawnError = error.message;
1071
- });
1072
- timedOutTimer = setTimeout(() => {
1073
- timedOut = true;
1074
- void requestTermination();
1075
- }, timeoutMs);
1076
- timedOutTimer.unref?.();
1077
- const { code, signal } = await new Promise((resolve) => {
1078
- let settled = false;
1079
- let pipeCloseGraceTimer = null;
1080
- const settle = (value, destroyPipes = false) => {
1081
- if (settled) {
1082
- return;
1083
- }
1084
- settled = true;
1085
- if (pipeCloseGraceTimer) {
1086
- clearTimeout(pipeCloseGraceTimer);
1087
- pipeCloseGraceTimer = null;
1088
- }
1089
- if (destroyPipes) {
1090
- child.stdin?.destroy();
1091
- child.stdout?.destroy();
1092
- child.stderr?.destroy();
1093
- }
1094
- resolve(value);
1095
- };
1096
- child.on("exit", (exitCode, exitSignal) => {
1097
- if (settled) {
1098
- return;
1099
- }
1100
- pipeCloseGraceTimer = setTimeout(() => {
1101
- settle({
1102
- code: exitCode,
1103
- signal: exitSignal
1104
- }, true);
1105
- }, linkedTestPipeCloseGraceMs());
1106
- pipeCloseGraceTimer.unref?.();
1107
- });
1108
- child.on("close", (closeCode, closeSignal) => {
1109
- settle({
1110
- code: closeCode,
1111
- signal: closeSignal
1112
- });
1113
- });
1114
- });
1115
- clearTimers();
1116
- const executionResult = {
1117
- stdout,
1118
- stderr,
1119
- exitCode: code,
1120
- signal,
1121
- timedOut,
1122
- maxBufferExceeded,
1123
- spawnError
1124
- };
1125
- endLinkedTestProgress(progressContext, executionResult, startedAt, progressMode);
1126
- return executionResult;
1127
- }
1128
- function formatLinkedTestExecutionError(result, timeoutMs) {
1129
- const details = [];
1130
- if (result.maxBufferExceeded) {
1131
- details.push(`Linked test output exceeded maxBuffer=${TEST_OUTPUT_MAX_BUFFER_BYTES} bytes. Reduce output volume or split the command.`);
1132
- }
1133
- if (result.timedOut && timeoutMs > 0) {
1134
- details.push(`Linked test timed out after ${timeoutMs}ms.`);
1135
- }
1136
- const signalMessage = result.signal ? `Linked test command terminated by signal ${result.signal}.` : void 0;
1137
- const baseMessage = result.spawnError?.trim() || signalMessage || "Linked test command failed.";
1138
- if (details.length === 0) {
1139
- return baseMessage;
1140
- }
1141
- return `${baseMessage} ${details.join(" ")}`;
1142
- }
1143
- function hasInfraCollisionSignal(result) {
1144
- const combined = [result.spawnError ?? "", result.stderr, result.stdout].join("\n");
1145
- return LINKED_TEST_INFRA_COLLISION_PATTERNS.some((pattern) => pattern.test(combined));
1146
- }
1147
- function classifyLinkedTestFailure(result) {
1148
- if (hasInfraCollisionSignal(result)) {
1149
- return "infra_collision";
1150
- }
1151
- if (result.timedOut) {
1152
- return "timeout";
1153
- }
1154
- if (result.maxBufferExceeded) {
1155
- return "max_buffer";
1156
- }
1157
- if (result.spawnError) {
1158
- return "spawn_error";
1159
- }
1160
- if (result.signal) {
1161
- return "signal";
1162
- }
1163
- return "assertion_failure";
1164
- }
1165
- function createEmptyFailureCategoryCounts() {
1166
- return {
1167
- infra_collision: 0,
1168
- assertion_failure: 0,
1169
- empty_run: 0,
1170
- timeout: 0,
1171
- max_buffer: 0,
1172
- spawn_error: 0,
1173
- signal: 0
1174
- };
1175
- }
1176
- function countFailureCategories(runResults) {
1177
- const counts = createEmptyFailureCategoryCounts();
1178
- for (const result of runResults) {
1179
- if (result.status !== "failed" || !result.failure_category) {
1180
- continue;
1181
- }
1182
- counts[result.failure_category] += 1;
1183
- }
1184
- return counts;
1185
- }
1186
- function applyEnvDirectiveStage(env, directives) {
1187
- for (const [key, value] of Object.entries(directives.env_set)) {
1188
- if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {
1189
- continue;
1190
- }
1191
- env[key] = value;
1192
- }
1193
- for (const key of directives.env_clear) {
1194
- if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {
1195
- continue;
1196
- }
1197
- delete env[key];
1198
- }
1199
- }
1200
- function applySharedHostSafeDefaults(env) {
1201
- if (env.PORT === void 0) {
1202
- env.PORT = "0";
1203
- }
1204
- if (env.HOST === void 0) {
1205
- env.HOST = "127.0.0.1";
1206
- }
1207
- if (env.PM_SHARED_HOST_SAFE === void 0) {
1208
- env.PM_SHARED_HOST_SAFE = "1";
1209
- }
1210
- if (env.PLAYWRIGHT_HTML_OPEN === void 0) {
1211
- env.PLAYWRIGHT_HTML_OPEN = "never";
1212
- }
1213
- if (env.PW_TEST_HTML_REPORT_OPEN === void 0) {
1214
- env.PW_TEST_HTML_REPORT_OPEN = "never";
1215
- }
1216
- }
1217
- function resolveEffectiveLinkedTestDirectives(runtimeDirectives, linkedTest) {
1218
- const envSet = { ...runtimeDirectives.env_set, ...linkedTest.env_set };
1219
- const envClear = [.../* @__PURE__ */ new Set([...runtimeDirectives.env_clear, ...linkedTest.env_clear ?? []])];
1220
- const sharedHostSafe = linkedTest.shared_host_safe ?? runtimeDirectives.shared_host_safe;
1221
- return {
1222
- env_set: envSet,
1223
- env_clear: envClear,
1224
- shared_host_safe: sharedHostSafe
1225
- };
1226
- }
1227
- function resolveRuntimeDirectives(envSetEntries, envClearEntries, sharedHostSafe) {
1228
- return {
1229
- env_set: mergeEnvSetDirectives(envSetEntries, "--env-set"),
1230
- env_clear: mergeEnvClearDirectives(envClearEntries, "--env-clear"),
1231
- shared_host_safe: sharedHostSafe === true
1232
- };
1233
- }
1234
- async function copyIntoSandboxIfPresent(sourcePath, targetPath, recursive = false) {
1235
- if (!await pathExists(sourcePath)) {
1236
- return;
1237
- }
1238
- await mkdir(path.dirname(targetPath), { recursive: true });
1239
- try {
1240
- if (recursive) {
1241
- await cp(sourcePath, targetPath, { recursive: true, force: true });
1242
- return;
1243
- }
1244
- await cp(sourcePath, targetPath, { force: true });
1245
- } catch (error) {
1246
- if (typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT") {
1247
- return;
1248
- }
1249
- throw error;
1250
- }
1251
- }
1252
- async function seedLinkedTestSandbox(sandboxPmPath, sandboxGlobalPath, sourceRoots) {
1253
- await copyIntoSandboxIfPresent(getSettingsPath(sourceRoots.projectPmRoot), getSettingsPath(sandboxPmPath));
1254
- await copyIntoSandboxIfPresent(path.join(sourceRoots.projectPmRoot, "extensions"), path.join(sandboxPmPath, "extensions"), true);
1255
- await copyIntoSandboxIfPresent(getSettingsPath(sourceRoots.globalPmRoot), getSettingsPath(sandboxGlobalPath));
1256
- await copyIntoSandboxIfPresent(path.join(sourceRoots.globalPmRoot, "extensions"), path.join(sandboxGlobalPath, "extensions"), true);
1257
- }
1258
- async function seedLinkedTestTrackerData(sourceRoot, sandboxRoot) {
1259
- if (!await pathExists(sourceRoot)) {
1260
- return;
1261
- }
1262
- const entries = await readdir(sourceRoot, { withFileTypes: true });
1263
- for (const entry of entries) {
1264
- if (LINKED_TEST_TRACKER_DIRS_TO_SKIP.has(entry.name)) {
1265
- continue;
1266
- }
1267
- const sourcePath = path.join(sourceRoot, entry.name);
1268
- const targetPath = path.join(sandboxRoot, entry.name);
1269
- if (entry.isDirectory()) {
1270
- await copyIntoSandboxIfPresent(sourcePath, targetPath, true);
1271
- continue;
1272
- }
1273
- if (entry.isFile()) {
1274
- await copyIntoSandboxIfPresent(sourcePath, targetPath);
1275
- }
1276
- }
1277
- }
1278
- async function countLinkedTestItemFiles(pmRoot) {
1279
- if (!await pathExists(pmRoot)) {
1280
- return 0;
1281
- }
1282
- let total = 0;
1283
- const entries = await readdir(pmRoot, { withFileTypes: true });
1284
- for (const entry of entries) {
1285
- if (!entry.isDirectory() || LINKED_TEST_ITEM_COUNT_DIRS_TO_SKIP.has(entry.name)) {
1286
- continue;
1287
- }
1288
- const folderPath = path.join(pmRoot, entry.name);
1289
- let files;
1290
- try {
1291
- files = await readdir(folderPath, { withFileTypes: true });
1292
- } catch {
1293
- continue;
1294
- }
1295
- for (const file of files) {
1296
- if (!file.isFile()) {
1297
- continue;
1298
- }
1299
- if (ITEM_FILE_EXTENSIONS.some((extension) => file.name.toLowerCase().endsWith(extension))) {
1300
- total += 1;
1301
- }
1302
- }
1303
- }
1304
- return total;
1305
- }
1306
- function resolveLinkedTestFailureExitCode(execution) {
1307
- const rawExitCode = typeof execution.exitCode === "number" ? execution.exitCode : 1;
1308
- if ((execution.timedOut || execution.maxBufferExceeded) && rawExitCode === 0) {
1309
- return 1;
1310
- }
1311
- return rawExitCode;
1312
- }
1313
- function splitJsonPathSegments(fieldPath) {
1314
- const segments = [];
1315
- const tokens = fieldPath.match(/[^.[\]]+|\[\d+\]/g) ?? [];
1316
- for (const token of tokens) {
1317
- if (token.startsWith("[") && token.endsWith("]")) {
1318
- const parsedIndex = Number.parseInt(token.slice(1, -1), 10);
1319
- if (!Number.isInteger(parsedIndex) || parsedIndex < 0) {
1320
- return [];
1321
- }
1322
- segments.push(parsedIndex);
1323
- continue;
1324
- }
1325
- segments.push(token);
1326
- }
1327
- return segments;
1328
- }
1329
- function readJsonPathValue(root, fieldPath) {
1330
- const normalizedPath = fieldPath.trim();
1331
- if (normalizedPath.length === 0) {
1332
- return { found: false, value: void 0 };
1333
- }
1334
- const segments = splitJsonPathSegments(normalizedPath);
1335
- if (segments.length === 0) {
1336
- return { found: false, value: void 0 };
1337
- }
1338
- let current = root;
1339
- for (const segment of segments) {
1340
- if (typeof segment === "number") {
1341
- if (!Array.isArray(current) || segment >= current.length) {
1342
- return { found: false, value: void 0 };
1343
- }
1344
- current = current[segment];
1345
- continue;
1346
- }
1347
- if (typeof current !== "object" || current === null || !(segment in current)) {
1348
- return { found: false, value: void 0 };
1349
- }
1350
- current = current[segment];
1351
- }
1352
- return { found: true, value: current };
1353
- }
1354
- function parseAssertionLiteral(raw) {
1355
- const trimmed = raw.trim();
1356
- if (trimmed === "true") {
1357
- return true;
1358
- }
1359
- if (trimmed === "false") {
1360
- return false;
1361
- }
1362
- if (trimmed === "null") {
1363
- return null;
1364
- }
1365
- const numeric = Number(trimmed);
1366
- if (trimmed.length > 0 && Number.isFinite(numeric)) {
1367
- return numeric;
1368
- }
1369
- if (trimmed.startsWith("{") && trimmed.endsWith("}") || trimmed.startsWith("[") && trimmed.endsWith("]")) {
1370
- try {
1371
- return JSON.parse(trimmed);
1372
- } catch {
1373
- }
1374
- }
1375
- return trimmed;
1376
- }
1377
- function compareAssertionValues(actual, expected) {
1378
- if (typeof actual === "object" && actual !== null && typeof expected === "object" && expected !== null) {
1379
- return stableValueEquals(actual, expected);
1380
- }
1381
- return Object.is(actual, expected);
1382
- }
1383
- function evaluateLinkedTestAssertions(linkedTest, stdout, stderr) {
1384
- const failures = [];
1385
- failures.push(...evaluateContainsAssertions("stdout", stdout, linkedTest.assert_stdout_contains));
1386
- failures.push(...evaluateRegexAssertions("stdout", stdout, linkedTest.assert_stdout_regex));
1387
- failures.push(...evaluateContainsAssertions("stderr", stderr, linkedTest.assert_stderr_contains));
1388
- failures.push(...evaluateRegexAssertions("stderr", stderr, linkedTest.assert_stderr_regex));
1389
- failures.push(...evaluateStdoutLineCountAssertion(stdout, linkedTest.assert_stdout_min_lines));
1390
- const jsonEqualsAssertions = linkedTest.assert_json_field_equals ?? {};
1391
- const jsonGteAssertions = linkedTest.assert_json_field_gte ?? {};
1392
- const needsJsonAssertions = Object.keys(jsonEqualsAssertions).length > 0 || Object.keys(jsonGteAssertions).length > 0;
1393
- if (!needsJsonAssertions) {
1394
- return failures;
1395
- }
1396
- let parsedJson;
1397
- try {
1398
- parsedJson = JSON.parse(stdout);
1399
- } catch (error) {
1400
- failures.push(`stdout is not valid JSON for assert_json_field_* checks: ${error instanceof Error ? error.message : String(error)}`);
1401
- return failures;
1402
- }
1403
- for (const [fieldPath, expectedRaw] of Object.entries(jsonEqualsAssertions)) {
1404
- const resolved = readJsonPathValue(parsedJson, fieldPath);
1405
- if (!resolved.found) {
1406
- failures.push(`assert_json_field_equals missing path "${fieldPath}"`);
1407
- continue;
1408
- }
1409
- const expected = parseAssertionLiteral(expectedRaw);
1410
- if (!compareAssertionValues(resolved.value, expected)) {
1411
- failures.push(`assert_json_field_equals mismatch at "${fieldPath}" (expected=${JSON.stringify(expected)} actual=${JSON.stringify(resolved.value)})`);
1412
- }
1413
- }
1414
- for (const [fieldPath, expectedMinimum] of Object.entries(jsonGteAssertions)) {
1415
- const resolved = readJsonPathValue(parsedJson, fieldPath);
1416
- if (!resolved.found) {
1417
- failures.push(`assert_json_field_gte missing path "${fieldPath}"`);
1418
- continue;
1419
- }
1420
- if (typeof resolved.value !== "number" || !Number.isFinite(resolved.value)) {
1421
- failures.push(`assert_json_field_gte path "${fieldPath}" resolved to non-numeric value`);
1422
- continue;
1423
- }
1424
- if (resolved.value < expectedMinimum) {
1425
- failures.push(`assert_json_field_gte failed at "${fieldPath}" (expected >= ${expectedMinimum}, actual ${resolved.value})`);
1426
- }
1427
- }
1428
- return failures;
1429
- }
1430
- function evaluateContainsAssertions(streamName, output, expectedValues) {
1431
- const failures = [];
1432
- for (const expected of expectedValues ?? []) {
1433
- if (!output.includes(expected)) {
1434
- failures.push(`${streamName} missing required text: "${expected}"`);
1435
- }
1436
- }
1437
- return failures;
1438
- }
1439
- function evaluateRegexAssertions(streamName, output, patterns) {
1440
- const failures = [];
1441
- for (const pattern of patterns ?? []) {
1442
- try {
1443
- const regex = new RegExp(pattern, "m");
1444
- if (!regex.test(output)) {
1445
- failures.push(`${streamName} failed regex assertion: /${pattern}/m`);
1446
- }
1447
- } catch (error) {
1448
- failures.push(`${streamName} regex assertion is invalid: /${pattern}/ (${error instanceof Error ? error.message : String(error)})`);
1449
- }
1450
- }
1451
- return failures;
1452
- }
1453
- function evaluateStdoutLineCountAssertion(stdout, minimum) {
1454
- if (typeof minimum !== "number") {
1455
- return [];
1456
- }
1457
- const lineCount = stdout.split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0).length;
1458
- return lineCount < minimum ? [`stdout line count ${lineCount} is below required minimum ${minimum}`] : [];
1459
- }
1460
- var EMPTY_LINKED_TEST_RUN_PATTERNS = [
1461
- { code: "no_projects_matched_filters", regex: /\bNo projects matched the filters\b/i },
1462
- { code: "no_test_files_found", regex: /\bNo test files found\b/i },
1463
- { code: "no_tests_found", regex: /\bNo tests found\b/i },
1464
- { code: "no_matching_tests", regex: /\bNo matching tests?\b/i },
1465
- { code: "collected_zero_items", regex: /\bcollected 0 items?\b/i }
1466
- ];
1467
- function detectEmptyLinkedTestRun(stdout, stderr) {
1468
- const combined = `${stdout}
1469
- ${stderr}`;
1470
- for (const pattern of EMPTY_LINKED_TEST_RUN_PATTERNS) {
1471
- if (pattern.regex.test(combined)) {
1472
- return pattern.code;
1473
- }
1474
- }
1475
- return null;
1476
- }
1477
- function createLinkedTestSandboxLayout(sandboxRoot) {
1478
- return {
1479
- root: sandboxRoot,
1480
- schemaProjectPmPath: path.join(sandboxRoot, "schema", "project", ".agents", "pm"),
1481
- schemaGlobalPmPath: path.join(sandboxRoot, "schema", "global"),
1482
- trackerProjectPmPath: path.join(sandboxRoot, "tracker", "project", ".agents", "pm"),
1483
- trackerGlobalPmPath: path.join(sandboxRoot, "tracker", "global")
1484
- };
1485
- }
1486
- async function initializeLinkedTestSandboxes(layout) {
1487
- await runInit(void 0, { path: layout.schemaProjectPmPath });
1488
- await runInit(void 0, { path: layout.schemaGlobalPmPath });
1489
- await runInit(void 0, { path: layout.trackerProjectPmPath });
1490
- await runInit(void 0, { path: layout.trackerGlobalPmPath });
1491
- }
1492
- async function seedLinkedTestSandboxesFromSource(layout, sourceRoots) {
1493
- if (!sourceRoots) {
1494
- return;
1495
- }
1496
- await seedLinkedTestSandbox(layout.schemaProjectPmPath, layout.schemaGlobalPmPath, sourceRoots);
1497
- await seedLinkedTestSandbox(layout.trackerProjectPmPath, layout.trackerGlobalPmPath, sourceRoots);
1498
- await seedLinkedTestTrackerData(sourceRoots.projectPmRoot, layout.trackerProjectPmPath);
1499
- await seedLinkedTestTrackerData(sourceRoots.globalPmRoot, layout.trackerGlobalPmPath);
1500
- }
1501
- async function countLinkedTestSandboxItems(layout, sourceRoots) {
1502
- return {
1503
- sourceProjectItemCount: sourceRoots ? await countLinkedTestItemFiles(sourceRoots.projectPmRoot) : 0,
1504
- sourceGlobalItemCount: sourceRoots ? await countLinkedTestItemFiles(sourceRoots.globalPmRoot) : 0,
1505
- schemaProjectItemCount: await countLinkedTestItemFiles(layout.schemaProjectPmPath),
1506
- schemaGlobalItemCount: await countLinkedTestItemFiles(layout.schemaGlobalPmPath),
1507
- trackerProjectItemCount: await countLinkedTestItemFiles(layout.trackerProjectPmPath),
1508
- trackerGlobalItemCount: await countLinkedTestItemFiles(layout.trackerGlobalPmPath)
1509
- };
1510
- }
1511
- function buildLinkedTestExecutionContext(params) {
1512
- const trackerMode = params.effectivePmContextMode === "tracker";
1513
- const selectedSandboxProjectPmPath = trackerMode ? params.layout.trackerProjectPmPath : params.layout.schemaProjectPmPath;
1514
- const selectedSandboxGlobalPmPath = trackerMode ? params.layout.trackerGlobalPmPath : params.layout.schemaGlobalPmPath;
1515
- const selectedSandboxProjectItemCount = trackerMode ? params.counts.trackerProjectItemCount : params.counts.schemaProjectItemCount;
1516
- const selectedSandboxGlobalItemCount = trackerMode ? params.counts.trackerGlobalItemCount : params.counts.schemaGlobalItemCount;
1517
- return {
1518
- requested_pm_context_mode: params.requestedPmContextMode,
1519
- pm_context_mode: params.effectivePmContextMode,
1520
- auto_pm_context_applied: params.autoPmContextApplied,
1521
- is_pm_command: params.isPmCommand,
1522
- is_pm_tracker_read_command: params.isPmTrackerReadCommand,
1523
- source_project_pm_path: params.sourceRoots?.projectPmRoot ?? "",
1524
- sandbox_project_pm_path: selectedSandboxProjectPmPath,
1525
- source_global_pm_path: params.sourceRoots?.globalPmRoot ?? "",
1526
- sandbox_global_pm_path: selectedSandboxGlobalPmPath,
1527
- source_project_item_count: params.counts.sourceProjectItemCount,
1528
- sandbox_project_item_count: selectedSandboxProjectItemCount,
1529
- source_global_item_count: params.counts.sourceGlobalItemCount,
1530
- sandbox_global_item_count: selectedSandboxGlobalItemCount,
1531
- mismatch_detected: params.isPmCommand && params.counts.sourceProjectItemCount !== selectedSandboxProjectItemCount,
1532
- project_extensions_seeded: Boolean(params.sourceRoots),
1533
- global_extensions_seeded: Boolean(params.sourceRoots)
1534
- };
1535
- }
1536
- function resolveLinkedTestCommandContext(params) {
1537
- const linkedOverridePmContextMode = typeof params.linkedTest.pm_context_mode === "string" && params.linkedTest.pm_context_mode.trim().length > 0 ? parsePmContextMode(params.linkedTest.pm_context_mode) : void 0;
1538
- const command = typeof params.linkedTest.command === "string" && params.linkedTest.command.length > 0 ? params.linkedTest.command : void 0;
1539
- const isPmCommand = command ? commandInvokesPmCli(command) : false;
1540
- const isPmTrackerReadCommand = isPmCommand && command ? commandInvokesPmTrackerReadCommand(command) : false;
1541
- const autoPmContextApplied = params.options?.autoPmContext === true && isPmTrackerReadCommand;
1542
- const requestedPmContextMode = autoPmContextApplied ? "auto" : resolveLinkedTestRequestedContextMode(params.linkedTest, params.runLevelPmContextMode, params.options?.overrideLinkedPmContext === true);
1543
- const effectivePmContextMode = resolveLinkedTestEffectiveContextMode(requestedPmContextMode, isPmTrackerReadCommand);
1544
- return {
1545
- linkedOverridePmContextMode,
1546
- executionContext: buildLinkedTestExecutionContext({
1547
- layout: params.layout,
1548
- counts: params.counts,
1549
- sourceRoots: params.sourceRoots,
1550
- isPmCommand,
1551
- isPmTrackerReadCommand,
1552
- requestedPmContextMode,
1553
- effectivePmContextMode,
1554
- autoPmContextApplied
1555
- })
1556
- };
1557
- }
1558
- function buildLinkedTestSkippedResult(linkedTest, executionContext, error) {
1559
- return {
1560
- command: linkedTest.command,
1561
- path: linkedTest.path,
1562
- status: "skipped",
1563
- execution_context: executionContext,
1564
- error
1565
- };
1566
- }
1567
- function buildLinkedTestAssertionFailureResult(linkedTest, executionContext, error, output) {
1568
- return {
1569
- command: linkedTest.command,
1570
- path: linkedTest.path,
1571
- status: "failed",
1572
- exit_code: 1,
1573
- failure_category: "assertion_failure",
1574
- execution_context: executionContext,
1575
- ...output ? { stdout: output.stdout, stderr: output.stderr } : {},
1576
- error
1577
- };
1578
- }
1579
- function resolveLinkedTestPreflightResult(params) {
1580
- if (!params.linkedTest.command) {
1581
- return buildLinkedTestSkippedResult(params.linkedTest, params.executionContext, "No command configured for this linked test.");
1582
- }
1583
- const runtimeSafetySkipReason = getRuntimeSafetySkipReason(params.linkedTest.command);
1584
- if (runtimeSafetySkipReason) {
1585
- return buildLinkedTestSkippedResult(params.linkedTest, params.executionContext, runtimeSafetySkipReason);
1586
- }
1587
- const failOnMismatchByDefault = params.executionContext.pm_context_mode === "schema" && params.executionContext.is_pm_tracker_read_command && params.executionContext.mismatch_detected;
1588
- const failOnMismatchByFlag = params.options?.failOnContextMismatch === true && params.executionContext.is_pm_command && params.executionContext.mismatch_detected;
1589
- if (failOnMismatchByDefault || failOnMismatchByFlag) {
1590
- const mismatchHint = buildPmContextMismatchHint({
1591
- executionContext: params.executionContext,
1592
- runLevelPmContextMode: params.runLevelPmContextMode,
1593
- linkedOverridePmContextMode: params.linkedOverridePmContextMode
1594
- });
1595
- const mismatchPrefix = params.options?.checkContext === true ? "Linked test preflight PM context mismatch detected" : "Linked test PM context mismatch detected";
1596
- return buildLinkedTestAssertionFailureResult(params.linkedTest, params.executionContext, `${mismatchPrefix} (source_project_items=${params.executionContext.source_project_item_count}, sandbox_project_items=${params.executionContext.sandbox_project_item_count}).${mismatchHint}`);
1597
- }
1598
- if (params.options?.requireAssertionsForPm === true && params.executionContext.is_pm_command && !hasLinkedTestAssertions(params.linkedTest)) {
1599
- return buildLinkedTestAssertionFailureResult(params.linkedTest, params.executionContext, "Linked PM command requires assertions when --require-assertions-for-pm is enabled.");
1600
- }
1601
- return null;
1602
- }
1603
- function buildLinkedTestExecutionEnv(params) {
1604
- const effectiveDirectives = resolveEffectiveLinkedTestDirectives(params.runtimeDirectives, params.linkedTest);
1605
- const executionEnv = { ...process.env };
1606
- applyEnvDirectiveStage(executionEnv, params.runtimeDirectives);
1607
- applyEnvDirectiveStage(executionEnv, {
1608
- env_set: params.linkedTest.env_set ?? {},
1609
- env_clear: params.linkedTest.env_clear ?? []
1610
- });
1611
- if (effectiveDirectives.shared_host_safe) {
1612
- applySharedHostSafeDefaults(executionEnv);
1613
- }
1614
- executionEnv.FORCE_COLOR = "0";
1615
- executionEnv.PM_PATH = params.executionContext.sandbox_project_pm_path;
1616
- executionEnv.PM_GLOBAL_PATH = params.executionContext.sandbox_global_pm_path;
1617
- return executionEnv;
1618
- }
1619
- function buildLinkedTestPassedResult(linkedTest, executionContext, execution) {
1620
- return {
1621
- command: linkedTest.command,
1622
- path: linkedTest.path,
1623
- status: "passed",
1624
- exit_code: 0,
1625
- execution_context: executionContext,
1626
- stdout: execution.stdout,
1627
- stderr: execution.stderr
1628
- };
1629
- }
1630
- function buildLinkedTestEmptyRunResult(params) {
1631
- return {
1632
- command: params.linkedTest.command,
1633
- path: params.linkedTest.path,
1634
- status: "failed",
1635
- exit_code: 1,
1636
- failure_category: "empty_run",
1637
- execution_context: params.executionContext,
1638
- stdout: params.execution.stdout,
1639
- stderr: params.execution.stderr,
1640
- error: `Linked test reported an empty test run (${params.emptyRunSignal}) while --fail-on-empty-test-run is enabled. Update test selection or disable --fail-on-empty-test-run for this run.`
1641
- };
1642
- }
1643
- function buildLinkedTestCommandFailureResult(params) {
1644
- return {
1645
- command: params.linkedTest.command,
1646
- path: params.linkedTest.path,
1647
- status: "failed",
1648
- exit_code: resolveLinkedTestFailureExitCode(params.execution),
1649
- failure_category: classifyLinkedTestFailure(params.execution),
1650
- execution_context: params.executionContext,
1651
- stdout: params.execution.stdout,
1652
- stderr: params.execution.stderr,
1653
- error: formatLinkedTestExecutionError(params.execution, params.timeoutMs)
1654
- };
1655
- }
1656
- function buildLinkedTestPassedExecutionResult(params) {
1657
- if (params.options?.failOnEmptyTestRun === true) {
1658
- const emptyRunSignal = detectEmptyLinkedTestRun(params.execution.stdout, params.execution.stderr);
1659
- if (emptyRunSignal) {
1660
- return buildLinkedTestEmptyRunResult({ ...params, emptyRunSignal });
1661
- }
1662
- }
1663
- const assertionFailures = evaluateLinkedTestAssertions(params.linkedTest, params.execution.stdout, params.execution.stderr);
1664
- if (assertionFailures.length > 0) {
1665
- return buildLinkedTestAssertionFailureResult(params.linkedTest, params.executionContext, `Linked test assertion(s) failed: ${assertionFailures.join("; ")}`, params.execution);
1666
- }
1667
- return buildLinkedTestPassedResult(params.linkedTest, params.executionContext, params.execution);
1668
- }
1669
- async function runSingleLinkedTest(params) {
1670
- const command = params.linkedTest.command ?? "";
1671
- const timeoutMs = (params.linkedTest.timeout_seconds ?? params.defaultTimeoutSeconds ?? 120) * 1e3;
1672
- const execution = await runLinkedTestCommand(command, timeoutMs, buildLinkedTestExecutionEnv(params), {
1673
- index: params.index + 1,
1674
- total: params.total,
1675
- timeoutMs,
1676
- command
1677
- }, params.progressMode);
1678
- const passed = execution.exitCode === 0 && !execution.timedOut && !execution.maxBufferExceeded;
1679
- return passed ? buildLinkedTestPassedExecutionResult({ ...params, execution }) : buildLinkedTestCommandFailureResult({ ...params, execution, timeoutMs });
1680
- }
1681
- async function runLinkedTests(tests, defaultTimeoutSeconds, options) {
1682
- const results = [];
1683
- const sandboxRoot = await mkdtemp(path.join(tmpdir(), "pm-linked-test-"));
1684
- const layout = createLinkedTestSandboxLayout(sandboxRoot);
1685
- const runLevelPmContextMode = parsePmContextMode(options?.pmContext);
1686
- const progressMode = options?.progress === true ? "always" : "auto";
1687
- const runtimeDirectives = resolveRuntimeDirectives(options?.envSet, options?.envClear, options?.sharedHostSafe);
1688
- const sourceRoots = options?.sourceRoots;
1689
- try {
1690
- await initializeLinkedTestSandboxes(layout);
1691
- await seedLinkedTestSandboxesFromSource(layout, sourceRoots);
1692
- const counts = await countLinkedTestSandboxItems(layout, sourceRoots);
1693
- for (let index = 0; index < tests.length; index += 1) {
1694
- const linkedTest = tests[index];
1695
- const commandContext = resolveLinkedTestCommandContext({
1696
- linkedTest,
1697
- layout,
1698
- counts,
1699
- sourceRoots,
1700
- runLevelPmContextMode,
1701
- options
1702
- });
1703
- const preflightResult = resolveLinkedTestPreflightResult({
1704
- linkedTest,
1705
- executionContext: commandContext.executionContext,
1706
- runLevelPmContextMode,
1707
- linkedOverridePmContextMode: commandContext.linkedOverridePmContextMode,
1708
- options
1709
- });
1710
- if (preflightResult) {
1711
- results.push(preflightResult);
1712
- continue;
1713
- }
1714
- results.push(await runSingleLinkedTest({
1715
- linkedTest,
1716
- index,
1717
- total: tests.length,
1718
- defaultTimeoutSeconds,
1719
- runtimeDirectives,
1720
- progressMode,
1721
- executionContext: commandContext.executionContext,
1722
- options
1723
- }));
1724
- }
1725
- } finally {
1726
- await rm(layout.root, { recursive: true, force: true, maxRetries: 3, retryDelay: 100 });
1727
- }
1728
- return results;
1729
- }
1730
- function hasTestRuntimeDirectiveFlags(options) {
1731
- return (options.envSet?.length ?? 0) > 0 || (options.envClear?.length ?? 0) > 0 || options.sharedHostSafe === true || options.pmContext !== void 0 || options.overrideLinkedPmContext === true || options.failOnContextMismatch === true || options.failOnSkipped === true || options.failOnEmptyTestRun === true || options.requireAssertionsForPm === true || options.checkContext === true || options.autoPmContext === true;
1732
- }
1733
- function assertTestRunFlagUsage(options) {
1734
- if (hasTestRuntimeDirectiveFlags(options) && options.run !== true) {
1735
- throw new PmCliError("--env-set, --env-clear, --shared-host-safe, --pm-context, --override-linked-pm-context, --fail-on-context-mismatch, --fail-on-skipped, --fail-on-empty-test-run, --require-assertions-for-pm, --check-context, and --auto-pm-context require --run", EXIT_CODE.USAGE);
1736
- }
1737
- const hasSelectorFlags = options.match !== void 0 || options.onlyIndex !== void 0 || options.onlyLast === true;
1738
- if (hasSelectorFlags && options.run !== true) {
1739
- throw new PmCliError("--match, --only-index, and --only-last require --run", EXIT_CODE.USAGE);
1740
- }
1741
- }
1742
- async function resolveLinkedTestItem(params) {
1743
- const { id, options, pmRoot, settings, typeToFolder, adds, removes } = params;
1744
- if (adds.length === 0 && removes.length === 0) {
1745
- const located = await locateItem(pmRoot, id, settings.id_prefix, settings.item_format, typeToFolder);
1746
- if (!located) {
1747
- throw new PmCliError(`Item ${id} not found`, EXIT_CODE.NOT_FOUND);
1748
- }
1749
- const loaded = await readLocatedItem(located, { schema: settings.schema });
1750
- return { itemId: located.id, tests: loaded.document.metadata.tests ?? [], changed: false };
1751
- }
1752
- const result = await mutateItem({
1753
- pmRoot,
1754
- settings,
1755
- id,
1756
- op: "tests_add",
1757
- author: resolveAuthor(options.author, settings.author_default),
1758
- message: options.message,
1759
- force: options.force,
1760
- skipNoop: true,
1761
- mutate(document) {
1762
- const previous = document.metadata.tests ?? [];
1763
- const next = [...previous];
1764
- for (const add of adds) {
1765
- const exists = next.some((entry) => entry.command === add.command && entry.path === add.path && entry.scope === add.scope && entry.pm_context_mode === add.pm_context_mode);
1766
- if (!exists) {
1767
- next.push(add);
1768
- }
1769
- }
1770
- if (removes.length > 0) {
1771
- for (let i = next.length - 1; i >= 0; i -= 1) {
1772
- const entry = next[i];
1773
- if (removes.includes(entry.path ?? "") || removes.includes(entry.command ?? "")) {
1774
- next.splice(i, 1);
1775
- }
1776
- }
1777
- }
1778
- document.metadata.tests = next;
1779
- return { changedFields: stableValueEquals(previous, next) ? [] : ["tests"] };
1780
- }
1781
- });
1782
- return {
1783
- itemId: result.item.id,
1784
- tests: result.item.tests ?? [],
1785
- changed: result.changedFields.length > 0
1786
- };
1787
- }
1788
- function resolveTestRunOptions(options, tests) {
1789
- assertTestRunFlagUsage(options);
1790
- const selectorInput = {
1791
- match: options.match,
1792
- onlyIndex: options.onlyIndex === void 0 ? void 0 : parseOnlyIndexValue(options.onlyIndex),
1793
- onlyLast: options.onlyLast
1794
- };
1795
- const runSelection = options.run === true ? resolveLinkedTestRunSelection(tests, selectorInput) : void 0;
1796
- return {
1797
- defaultTimeoutSeconds: options.timeout === void 0 ? void 0 : parseOptionalNumber(options.timeout, "timeout"),
1798
- pmContextMode: parsePmContextMode(options.pmContext),
1799
- runSelection,
1800
- testsToRun: runSelection?.selected ?? tests
1801
- };
1802
- }
1803
- async function executeSelectedLinkedTests(params) {
1804
- const { options, runOptions, pmRoot } = params;
1805
- if (options.run !== true) {
1806
- return [];
1807
- }
1808
- return await runLinkedTests(runOptions.testsToRun, runOptions.defaultTimeoutSeconds, {
1809
- progress: options.progress,
1810
- envSet: options.envSet,
1811
- envClear: options.envClear,
1812
- sharedHostSafe: options.sharedHostSafe,
1813
- pmContext: runOptions.pmContextMode,
1814
- overrideLinkedPmContext: options.overrideLinkedPmContext,
1815
- failOnContextMismatch: options.failOnContextMismatch,
1816
- failOnEmptyTestRun: options.failOnEmptyTestRun,
1817
- requireAssertionsForPm: options.requireAssertionsForPm,
1818
- checkContext: options.checkContext,
1819
- autoPmContext: options.autoPmContext,
1820
- sourceRoots: {
1821
- projectPmRoot: pmRoot,
1822
- globalPmRoot: resolveGlobalPmRoot(process.cwd())
1823
- }
1824
- });
1825
- }
1826
- function buildTestWarnings(options, runSelection, runResults) {
1827
- const warnings = [];
1828
- if (runSelection && runSelection.selector !== null) {
1829
- warnings.push(`linked_test_selection:${runSelection.selector}=${runSelection.requested};selected=${runSelection.selected_count};skipped=${runSelection.skipped_count};indexes=${runSelection.selected_indexes.join(",")}`);
1830
- }
1831
- if (options.run === true && options.checkContext === true) {
1832
- const preflight = summarizeContextPreflight(runResults);
1833
- warnings.push(`context_preflight:checked_pm_commands=${preflight.checked_pm_commands};tracker_read_commands=${preflight.tracker_read_commands};mismatches=${preflight.mismatches};auto_remediated=${preflight.auto_remediated}`);
1834
- }
1835
- return warnings;
1836
- }
1837
- async function recordTestRunSummary(params) {
1838
- const { options, pmRoot, settings, itemId, runStartedAt, runResults, failOnSkippedTriggered, warnings } = params;
1839
- if (options.run !== true || !runStartedAt || settings.testing.record_results_to_items !== true) {
1840
- return;
1841
- }
1842
- const summary = summarizeRunResultStatuses(runResults);
1843
- const trackedRunId = resolveTrackedRunId("test");
1844
- const attemptRaw = process.env.PM_BACKGROUND_TEST_RUN_ATTEMPT?.trim();
1845
- const parsedAttempt = attemptRaw ? Number.parseInt(attemptRaw, 10) : Number.NaN;
1846
- const resumedFrom = process.env.PM_BACKGROUND_TEST_RUN_RESUMED_FROM?.trim();
1847
- try {
1848
- await appendTrackedTestRunSummary({
1849
- pmRoot,
1850
- settings,
1851
- itemId,
1852
- author: resolveAuthor(options.author, settings.author_default),
1853
- message: `Track test run summary (${trackedRunId})`,
1854
- entry: {
1855
- run_id: trackedRunId,
1856
- kind: "test",
1857
- status: summary.failed > 0 || failOnSkippedTriggered === true ? "failed" : "passed",
1858
- started_at: runStartedAt,
1859
- finished_at: nowIso(),
1860
- recorded_at: nowIso(),
1861
- attempt: Number.isFinite(parsedAttempt) && parsedAttempt >= 1 ? parsedAttempt : void 0,
1862
- resumed_from: resumedFrom && resumedFrom.length > 0 ? resumedFrom : void 0,
1863
- passed: summary.passed,
1864
- failed: summary.failed,
1865
- skipped: summary.skipped,
1866
- fail_on_skipped_triggered: failOnSkippedTriggered ? true : void 0
1867
- }
1868
- });
1869
- } catch (error) {
1870
- warnings.push(`test_result_tracking_failed:${itemId}:${error instanceof Error ? error.message : String(error)}`);
1871
- }
1872
- }
1873
- async function runTest(id, options, global) {
1874
- const stdinResolver = createStdinTokenResolver();
1875
- const pmRoot = resolvePmRoot(process.cwd(), global.path);
1876
- if (!await pathExists(getSettingsPath(pmRoot))) {
1877
- throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
1878
- }
1879
- const settings = await readSettings(pmRoot);
1880
- const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
1881
- const resolvedAdds = await stdinResolver.resolveList(options.add, "--add");
1882
- const resolvedAddJsons = await stdinResolver.resolveList(options.addJson, "--add-json");
1883
- const resolvedRemoves = await stdinResolver.resolveList(options.remove, "--remove");
1884
- const adds = [...parseAddEntries(resolvedAdds), ...parseAddJsonEntries(resolvedAddJsons)];
1885
- const removes = parseRemoveEntries(resolvedRemoves);
1886
- const item = await resolveLinkedTestItem({
1887
- id,
1888
- options,
1889
- pmRoot,
1890
- settings,
1891
- typeToFolder: typeRegistry.type_to_folder,
1892
- adds,
1893
- removes
1894
- });
1895
- const runOptions = resolveTestRunOptions(options, item.tests);
1896
- const runStartedAt = options.run === true ? nowIso() : void 0;
1897
- const runResults = await executeSelectedLinkedTests({ options, runOptions, pmRoot });
1898
- const failureCategories = countFailureCategories(runResults);
1899
- const failOnSkippedTriggered = options.run === true && options.failOnSkipped === true && runResults.some((entry) => entry.status === "skipped");
1900
- const warnings = buildTestWarnings(options, runOptions.runSelection, runResults);
1901
- await recordTestRunSummary({ options, pmRoot, settings, itemId: item.itemId, runStartedAt, runResults, failOnSkippedTriggered, warnings });
1902
- return {
1903
- ok: runResults.every((entry) => entry.status !== "failed") && failOnSkippedTriggered !== true,
1904
- id: item.itemId,
1905
- tests: item.tests,
1906
- run_results: runResults,
1907
- failure_categories: failureCategories,
1908
- selection: runOptions.runSelection ? {
1909
- selector: runOptions.runSelection.selector,
1910
- requested: runOptions.runSelection.requested,
1911
- selected_indexes: runOptions.runSelection.selected_indexes,
1912
- selected_count: runOptions.runSelection.selected_count,
1913
- skipped_count: runOptions.runSelection.skipped_count
1914
- } : void 0,
1915
- fail_on_skipped_triggered: failOnSkippedTriggered ? true : void 0,
1916
- warnings: warnings.length > 0 ? warnings : void 0,
1917
- changed: item.changed,
1918
- count: item.tests.length
1919
- };
1920
- }
1921
- var _testOnlyTestCommand = {
1922
- buildPmContextMismatchHint,
1923
- commandInvokesPmCli,
1924
- commandInvokesPmTrackerReadCommand,
1925
- copyIntoSandboxIfPresent,
1926
- countLinkedTestItemFiles,
1927
- ensureScope,
1928
- evaluateLinkedTestAssertions,
1929
- extractPmInvocationArgsFromSegment,
1930
- firstDirectTestRunnerSubcommand,
1931
- hasLinkedTestAssertions,
1932
- parseAddJsonEntries,
1933
- parsePmContextMode,
1934
- readJsonPathValue,
1935
- resolveAuthor,
1936
- resolveDirectRunnerSubcommand,
1937
- resolveLinkedTestEffectiveContextMode,
1938
- resolveLinkedTestFailureExitCode,
1939
- resolveLinkedTestRequestedContextMode,
1940
- resolveTrackedRunId,
1941
- runLinkedTestCommand,
1942
- seedLinkedTestSandbox,
1943
- seedLinkedTestTrackerData,
1944
- splitJsonPathSegments,
1945
- summarizeRunResultStatuses
1946
- };
1947
-
1948
- export {
1949
- appendTrackedTestRunSummary,
1950
- summarizeContextPreflight,
1951
- extractReferencedPmItemIdsFromCommand,
1952
- classifyLinkedTestFailure,
1953
- countFailureCategories,
1954
- resolveLinkedTestFailureExitCode,
1955
- runLinkedTests,
1956
- runTest,
1957
- _testOnlyTestCommand
1958
- };
1959
- //# sourceMappingURL=chunk-3PL6LEKP.js.map
1960
-
1961
- //# debugId=58f10529-0722-5f3d-bc54-ca618699dc49