@unbrained/pm-cli 2026.7.6 → 2026.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (666) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/cli/commands/annotation-command.d.ts +1 -0
  3. package/dist/cli/commands/annotation-command.js +29 -2
  4. package/dist/cli/commands/annotation-command.js.map +1 -1
  5. package/dist/cli/commands/comments.js +3 -4
  6. package/dist/cli/commands/comments.js.map +1 -1
  7. package/dist/cli/commands/extension/bundled-catalog.d.ts +3 -0
  8. package/dist/cli/commands/extension/bundled-catalog.js +38 -28
  9. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  10. package/dist/cli/commands/extension/install-sources.js +81 -18
  11. package/dist/cli/commands/extension/install-sources.js.map +1 -1
  12. package/dist/cli/commands/health.js +9 -5
  13. package/dist/cli/commands/health.js.map +1 -1
  14. package/dist/cli/commands/learnings.js +5 -3
  15. package/dist/cli/commands/learnings.js.map +1 -1
  16. package/dist/cli/commands/notes.js +5 -3
  17. package/dist/cli/commands/notes.js.map +1 -1
  18. package/dist/cli/commands/reindex.js +4 -3
  19. package/dist/cli/commands/reindex.js.map +1 -1
  20. package/dist/cli/commands/search.js +3 -3
  21. package/dist/cli/commands/search.js.map +1 -1
  22. package/dist/cli/commands/test.d.ts +9 -0
  23. package/dist/cli/commands/test.js +144 -105
  24. package/dist/cli/commands/test.js.map +1 -1
  25. package/dist/cli/extension-command-help.js +10 -2
  26. package/dist/cli/extension-command-help.js.map +1 -1
  27. package/dist/cli/register-list-query.d.ts +1 -1
  28. package/dist/cli/register-list-query.js +18 -27
  29. package/dist/cli/register-list-query.js.map +1 -1
  30. package/dist/cli/register-operations.d.ts +0 -8
  31. package/dist/cli/register-operations.js +41 -46
  32. package/dist/cli/register-operations.js.map +1 -1
  33. package/dist/cli/register-setup.js +113 -13
  34. package/dist/cli/register-setup.js.map +1 -1
  35. package/dist/cli/registration-helpers.d.ts +5 -1
  36. package/dist/cli/registration-helpers.js +14 -2
  37. package/dist/cli/registration-helpers.js.map +1 -1
  38. package/dist/cli-bundle/chunks/append-F7WPGIQL.js +11 -0
  39. package/dist/cli-bundle/chunks/{gc-2DNMPXMC.js → append-PVCTBVJG.js} +8 -9
  40. package/dist/cli-bundle/chunks/{chunk-EGAP5OWD.js → chunk-2APXX4TZ.js} +16 -14
  41. package/dist/cli-bundle/chunks/chunk-2APXX4TZ.js.map +1 -0
  42. package/dist/cli-bundle/chunks/{chunk-R5BMJX33.js → chunk-2LEJGRQ7.js} +2 -2
  43. package/dist/cli-bundle/chunks/{chunk-AZYGZGGI.js → chunk-2TILG6F2.js} +3 -3
  44. package/dist/cli-bundle/chunks/{chunk-SMB7RV23.js → chunk-3G6UMXT3.js} +6 -8
  45. package/dist/cli-bundle/chunks/{chunk-SMB7RV23.js.map → chunk-3G6UMXT3.js.map} +1 -1
  46. package/dist/cli-bundle/chunks/{chunk-GJ7QC5DJ.js → chunk-3TYOW6RR.js} +8 -8
  47. package/dist/cli-bundle/chunks/{chunk-B6DUFX6H.js → chunk-3X542TEY.js} +7 -7
  48. package/dist/cli-bundle/chunks/{chunk-B6XS3R3O.js → chunk-42LXP4VO.js} +12 -16
  49. package/dist/cli-bundle/chunks/{chunk-B6XS3R3O.js.map → chunk-42LXP4VO.js.map} +1 -1
  50. package/dist/cli-bundle/chunks/{chunk-CL36D4PC.js → chunk-43SIHQND.js} +36 -15
  51. package/dist/cli-bundle/chunks/chunk-43SIHQND.js.map +7 -0
  52. package/dist/cli-bundle/chunks/{chunk-7D7OOEYG.js → chunk-43UQN754.js} +10 -14
  53. package/dist/cli-bundle/chunks/{chunk-7D7OOEYG.js.map → chunk-43UQN754.js.map} +1 -1
  54. package/dist/cli-bundle/chunks/{chunk-ALFPSEWO.js → chunk-43YSKY75.js} +4 -6
  55. package/dist/cli-bundle/chunks/{chunk-ALFPSEWO.js.map → chunk-43YSKY75.js.map} +1 -1
  56. package/dist/cli-bundle/chunks/{chunk-NO442GWJ.js → chunk-4BKDAEDF.js} +5 -5
  57. package/dist/cli-bundle/chunks/{chunk-NO442GWJ.js.map → chunk-4BKDAEDF.js.map} +2 -2
  58. package/dist/cli-bundle/chunks/{chunk-4LELACOL.js → chunk-4IQKDKGE.js} +15 -23
  59. package/dist/cli-bundle/chunks/{chunk-4LELACOL.js.map → chunk-4IQKDKGE.js.map} +1 -1
  60. package/dist/cli-bundle/chunks/{chunk-F3K4JGFD.js → chunk-4MZOKTI2.js} +6 -8
  61. package/dist/cli-bundle/chunks/{chunk-F3K4JGFD.js.map → chunk-4MZOKTI2.js.map} +1 -1
  62. package/dist/cli-bundle/chunks/{chunk-D2XRLB55.js → chunk-52NS7JDP.js} +14 -20
  63. package/dist/cli-bundle/chunks/{chunk-D2XRLB55.js.map → chunk-52NS7JDP.js.map} +1 -1
  64. package/dist/cli-bundle/chunks/{chunk-IX5BXEMX.js → chunk-565WYS5W.js} +12 -16
  65. package/dist/cli-bundle/chunks/{chunk-IX5BXEMX.js.map → chunk-565WYS5W.js.map} +1 -1
  66. package/dist/cli-bundle/chunks/{chunk-UH7T2DAX.js → chunk-5FIQ4EX3.js} +12 -18
  67. package/dist/cli-bundle/chunks/{chunk-UH7T2DAX.js.map → chunk-5FIQ4EX3.js.map} +1 -1
  68. package/dist/cli-bundle/chunks/{chunk-DMRNBQOI.js → chunk-6G6O3OPQ.js} +256 -36
  69. package/dist/cli-bundle/chunks/chunk-6G6O3OPQ.js.map +1 -0
  70. package/dist/cli-bundle/chunks/{chunk-G64OCSKU.js → chunk-6LCJRGPD.js} +9 -13
  71. package/dist/cli-bundle/chunks/{chunk-G64OCSKU.js.map → chunk-6LCJRGPD.js.map} +1 -1
  72. package/dist/cli-bundle/chunks/{chunk-7WBAJSS6.js → chunk-6UQCNWFV.js} +6 -8
  73. package/dist/cli-bundle/chunks/{chunk-7WBAJSS6.js.map → chunk-6UQCNWFV.js.map} +1 -1
  74. package/dist/cli-bundle/chunks/{chunk-ZSUS2OD3.js → chunk-6XTSYPPO.js} +1216 -387
  75. package/dist/cli-bundle/chunks/chunk-6XTSYPPO.js.map +7 -0
  76. package/dist/cli-bundle/chunks/chunk-7ML7JONU.js +5434 -0
  77. package/dist/cli-bundle/chunks/chunk-7ML7JONU.js.map +1 -0
  78. package/dist/cli-bundle/chunks/{chunk-ZZD4J5XY.js → chunk-7PNQA24K.js} +30 -36
  79. package/dist/cli-bundle/chunks/{chunk-ZZD4J5XY.js.map → chunk-7PNQA24K.js.map} +1 -1
  80. package/dist/cli-bundle/chunks/{chunk-JJP45OEI.js → chunk-7VQ3JJN5.js} +2 -2
  81. package/dist/cli-bundle/chunks/{chunk-OGWQ2IEP.js → chunk-7Y5N34HX.js} +8 -12
  82. package/dist/cli-bundle/chunks/{chunk-OGWQ2IEP.js.map → chunk-7Y5N34HX.js.map} +1 -1
  83. package/dist/cli-bundle/chunks/{chunk-MWMVPCIE.js → chunk-AGAVEDIE.js} +7 -7
  84. package/dist/cli-bundle/chunks/{chunk-22KBU3MW.js → chunk-AJUON7E6.js} +3 -3
  85. package/dist/cli-bundle/chunks/{chunk-ZJ262CED.js → chunk-ARKHKYYS.js} +13 -21
  86. package/dist/cli-bundle/chunks/{chunk-ZJ262CED.js.map → chunk-ARKHKYYS.js.map} +1 -1
  87. package/dist/cli-bundle/chunks/{chunk-46CUF5L6.js → chunk-C5ACVMOI.js} +99 -51
  88. package/dist/cli-bundle/chunks/chunk-C5ACVMOI.js.map +7 -0
  89. package/dist/cli-bundle/chunks/{chunk-LPSSSDJR.js → chunk-CJQM7O7R.js} +16 -20
  90. package/dist/cli-bundle/chunks/{chunk-LPSSSDJR.js.map → chunk-CJQM7O7R.js.map} +1 -1
  91. package/dist/cli-bundle/chunks/{chunk-GBAX2ZAQ.js → chunk-D2DCTFTL.js} +10 -12
  92. package/dist/cli-bundle/chunks/{chunk-GBAX2ZAQ.js.map → chunk-D2DCTFTL.js.map} +1 -1
  93. package/dist/cli-bundle/chunks/{chunk-XHET7YUZ.js → chunk-DDDWVPID.js} +8 -10
  94. package/dist/cli-bundle/chunks/{chunk-XHET7YUZ.js.map → chunk-DDDWVPID.js.map} +1 -1
  95. package/dist/cli-bundle/chunks/{chunk-HIHMT6WS.js → chunk-DG6BSXZ7.js} +5 -5
  96. package/dist/cli-bundle/chunks/{chunk-HIHMT6WS.js.map → chunk-DG6BSXZ7.js.map} +2 -2
  97. package/dist/cli-bundle/chunks/{chunk-IWVU4C2F.js → chunk-DR2V5OIV.js} +3 -3
  98. package/dist/cli-bundle/chunks/{chunk-ZGK4L4JM.js → chunk-E3LWJUGF.js} +4 -6
  99. package/dist/cli-bundle/chunks/{chunk-ZGK4L4JM.js.map → chunk-E3LWJUGF.js.map} +1 -1
  100. package/dist/cli-bundle/chunks/{chunk-XUC7PI2H.js → chunk-E3YQFSFE.js} +6 -10
  101. package/dist/cli-bundle/chunks/{chunk-XUC7PI2H.js.map → chunk-E3YQFSFE.js.map} +1 -1
  102. package/dist/cli-bundle/chunks/{chunk-XG625QP4.js → chunk-EDO7VXSO.js} +2 -2
  103. package/dist/cli-bundle/chunks/{chunk-MA4SM3QZ.js → chunk-EIUBK2LT.js} +12 -18
  104. package/dist/cli-bundle/chunks/{chunk-MA4SM3QZ.js.map → chunk-EIUBK2LT.js.map} +1 -1
  105. package/dist/cli-bundle/chunks/{chunk-YN7Y6DQZ.js → chunk-EMXPI36L.js} +14 -20
  106. package/dist/cli-bundle/chunks/{chunk-YN7Y6DQZ.js.map → chunk-EMXPI36L.js.map} +1 -1
  107. package/dist/cli-bundle/chunks/{chunk-MLIYFOE7.js → chunk-EOUVR7JN.js} +12 -8
  108. package/dist/cli-bundle/chunks/chunk-EOUVR7JN.js.map +1 -0
  109. package/dist/cli-bundle/chunks/{chunk-Y4M7CPQP.js → chunk-EVEPHNXJ.js} +4 -4
  110. package/dist/cli-bundle/chunks/{chunk-M7JNBQAD.js → chunk-F6MT7KKE.js} +4 -6
  111. package/dist/cli-bundle/chunks/{chunk-M7JNBQAD.js.map → chunk-F6MT7KKE.js.map} +1 -1
  112. package/dist/cli-bundle/chunks/{chunk-W3DSJQIO.js → chunk-F6YC2A6X.js} +7 -11
  113. package/dist/cli-bundle/chunks/{chunk-W3DSJQIO.js.map → chunk-F6YC2A6X.js.map} +1 -1
  114. package/dist/cli-bundle/chunks/chunk-FILL6BB2.js +5514 -0
  115. package/dist/cli-bundle/chunks/chunk-FILL6BB2.js.map +7 -0
  116. package/dist/cli-bundle/chunks/{chunk-JDDLOQAE.js → chunk-FN6SB4HU.js} +2 -2
  117. package/dist/cli-bundle/chunks/chunk-GH73UOSJ.js +5359 -0
  118. package/dist/cli-bundle/chunks/chunk-GH73UOSJ.js.map +1 -0
  119. package/dist/cli-bundle/chunks/{chunk-EKFNL33R.js → chunk-GLS6VMWI.js} +37 -16
  120. package/dist/cli-bundle/chunks/chunk-GLS6VMWI.js.map +1 -0
  121. package/dist/cli-bundle/chunks/{chunk-HOVCGJSD.js → chunk-GPIDUMMN.js} +9 -11
  122. package/dist/cli-bundle/chunks/{chunk-HOVCGJSD.js.map → chunk-GPIDUMMN.js.map} +1 -1
  123. package/dist/cli-bundle/chunks/{chunk-SQOIV3OQ.js → chunk-GTM5HQL4.js} +11 -15
  124. package/dist/cli-bundle/chunks/{chunk-SQOIV3OQ.js.map → chunk-GTM5HQL4.js.map} +1 -1
  125. package/dist/cli-bundle/chunks/{chunk-24YG75HI.js → chunk-H2SMKL2N.js} +8 -8
  126. package/dist/cli-bundle/chunks/{chunk-QLMX7SRD.js → chunk-HHEWQXPD.js} +6 -6
  127. package/dist/cli-bundle/chunks/chunk-HHEWQXPD.js.map +7 -0
  128. package/dist/cli-bundle/chunks/{chunk-EGY6JBQ3.js → chunk-HX6QXV5P.js} +2 -2
  129. package/dist/cli-bundle/chunks/{chunk-4ZBE5GUN.js → chunk-I74FMIWA.js} +10 -16
  130. package/dist/cli-bundle/chunks/{chunk-4ZBE5GUN.js.map → chunk-I74FMIWA.js.map} +1 -1
  131. package/dist/cli-bundle/chunks/{chunk-3N6RRO2Q.js → chunk-IDIBF4E2.js} +20 -24
  132. package/dist/cli-bundle/chunks/{chunk-3N6RRO2Q.js.map → chunk-IDIBF4E2.js.map} +1 -1
  133. package/dist/cli-bundle/chunks/{chunk-6QBJLYBP.js → chunk-II7R6KD4.js} +8 -7
  134. package/dist/cli-bundle/chunks/{chunk-6QBJLYBP.js.map → chunk-II7R6KD4.js.map} +1 -1
  135. package/dist/cli-bundle/chunks/chunk-J2VGADNG.js +10320 -0
  136. package/dist/cli-bundle/chunks/chunk-J2VGADNG.js.map +1 -0
  137. package/dist/cli-bundle/chunks/{chunk-FT3QTERD.js → chunk-J7BOLHAV.js} +5 -7
  138. package/dist/cli-bundle/chunks/{chunk-FT3QTERD.js.map → chunk-J7BOLHAV.js.map} +1 -1
  139. package/dist/cli-bundle/chunks/{chunk-GANUTS7W.js → chunk-KTGJ2CBU.js} +4 -6
  140. package/dist/cli-bundle/chunks/{chunk-GANUTS7W.js.map → chunk-KTGJ2CBU.js.map} +1 -1
  141. package/dist/cli-bundle/chunks/{chunk-LK6XLOGP.js → chunk-LCFJ7XAM.js} +22 -2
  142. package/dist/cli-bundle/chunks/{chunk-LK6XLOGP.js.map → chunk-LCFJ7XAM.js.map} +3 -3
  143. package/dist/cli-bundle/chunks/{chunk-3UJRFJ5R.js → chunk-LZQU6XJG.js} +28 -34
  144. package/dist/cli-bundle/chunks/{chunk-3UJRFJ5R.js.map → chunk-LZQU6XJG.js.map} +1 -1
  145. package/dist/cli-bundle/chunks/{chunk-L5PSPMZ4.js → chunk-M62RO3XK.js} +10 -14
  146. package/dist/cli-bundle/chunks/{chunk-L5PSPMZ4.js.map → chunk-M62RO3XK.js.map} +1 -1
  147. package/dist/cli-bundle/chunks/{chunk-CFB33L7W.js → chunk-MCEUKJKW.js} +12 -14
  148. package/dist/cli-bundle/chunks/{chunk-CFB33L7W.js.map → chunk-MCEUKJKW.js.map} +1 -1
  149. package/dist/cli-bundle/chunks/{chunk-TKD5VCTD.js → chunk-MHNMCDWR.js} +343 -195
  150. package/dist/cli-bundle/chunks/chunk-MHNMCDWR.js.map +1 -0
  151. package/dist/cli-bundle/chunks/{chunk-O6AWCQRQ.js → chunk-MRFWUSVA.js} +4 -6
  152. package/dist/cli-bundle/chunks/{chunk-O6AWCQRQ.js.map → chunk-MRFWUSVA.js.map} +1 -1
  153. package/dist/cli-bundle/chunks/{chunk-SQYJ4HF2.js → chunk-N6ZHDLUY.js} +6 -8
  154. package/dist/cli-bundle/chunks/{chunk-SQYJ4HF2.js.map → chunk-N6ZHDLUY.js.map} +1 -1
  155. package/dist/cli-bundle/chunks/{chunk-ZWBEPGD7.js → chunk-NWWL22C7.js} +7 -9
  156. package/dist/cli-bundle/chunks/{chunk-ZWBEPGD7.js.map → chunk-NWWL22C7.js.map} +1 -1
  157. package/dist/cli-bundle/chunks/{chunk-Y46GD4IX.js → chunk-P3MJJW7P.js} +2 -2
  158. package/dist/cli-bundle/chunks/{chunk-MVYWGY2A.js → chunk-PDXJXEZJ.js} +2 -2
  159. package/dist/cli-bundle/chunks/{chunk-SGMFPXKR.js → chunk-Q64AYQYW.js} +10 -12
  160. package/dist/cli-bundle/chunks/{chunk-SGMFPXKR.js.map → chunk-Q64AYQYW.js.map} +1 -1
  161. package/dist/cli-bundle/chunks/{chunk-EBRZZ54H.js → chunk-QDABF2RB.js} +26 -34
  162. package/dist/cli-bundle/chunks/{chunk-EBRZZ54H.js.map → chunk-QDABF2RB.js.map} +1 -1
  163. package/dist/cli-bundle/chunks/{chunk-TULGS6X6.js → chunk-QFBSP3NI.js} +529 -46
  164. package/dist/cli-bundle/chunks/chunk-QFBSP3NI.js.map +1 -0
  165. package/dist/cli-bundle/chunks/{chunk-GDDAGPWJ.js → chunk-RB3KLPAH.js} +10 -14
  166. package/dist/cli-bundle/chunks/{chunk-GDDAGPWJ.js.map → chunk-RB3KLPAH.js.map} +1 -1
  167. package/dist/cli-bundle/chunks/{chunk-3VHSI5FL.js → chunk-RY7PTTUB.js} +94 -53
  168. package/dist/cli-bundle/chunks/chunk-RY7PTTUB.js.map +1 -0
  169. package/dist/cli-bundle/chunks/{chunk-COSPOP7H.js → chunk-S547WBYG.js} +343 -195
  170. package/dist/cli-bundle/chunks/chunk-S547WBYG.js.map +7 -0
  171. package/dist/cli-bundle/chunks/{chunk-NZEHECMW.js → chunk-S5BNGFN5.js} +24 -32
  172. package/dist/cli-bundle/chunks/{chunk-NZEHECMW.js.map → chunk-S5BNGFN5.js.map} +1 -1
  173. package/dist/cli-bundle/chunks/{chunk-MVSP7WGJ.js → chunk-S6VC2A2K.js} +8 -12
  174. package/dist/cli-bundle/chunks/{chunk-MVSP7WGJ.js.map → chunk-S6VC2A2K.js.map} +1 -1
  175. package/dist/cli-bundle/chunks/{chunk-45FYNUFJ.js → chunk-SIM5JDON.js} +6 -6
  176. package/dist/cli-bundle/chunks/{chunk-45FYNUFJ.js.map → chunk-SIM5JDON.js.map} +1 -1
  177. package/dist/cli-bundle/chunks/{chunk-VPIM42PC.js → chunk-SY75LYXR.js} +11 -7
  178. package/dist/cli-bundle/chunks/chunk-SY75LYXR.js.map +7 -0
  179. package/dist/cli-bundle/chunks/{chunk-K46RF36U.js → chunk-TEISGNSH.js} +7 -7
  180. package/dist/cli-bundle/chunks/chunk-TEISGNSH.js.map +1 -0
  181. package/dist/cli-bundle/chunks/{chunk-AGHMOTGM.js → chunk-TEKZOS7M.js} +2 -2
  182. package/dist/cli-bundle/chunks/{chunk-W572BIEB.js → chunk-TGUK6XN6.js} +14 -18
  183. package/dist/cli-bundle/chunks/{chunk-W572BIEB.js.map → chunk-TGUK6XN6.js.map} +1 -1
  184. package/dist/cli-bundle/chunks/{chunk-E42XTBSP.js → chunk-TNC6MZUD.js} +8 -12
  185. package/dist/cli-bundle/chunks/{chunk-E42XTBSP.js.map → chunk-TNC6MZUD.js.map} +1 -1
  186. package/dist/cli-bundle/chunks/chunk-TZLYO4PP.js +10498 -0
  187. package/dist/cli-bundle/chunks/chunk-TZLYO4PP.js.map +7 -0
  188. package/dist/cli-bundle/chunks/{chunk-57NWPFF2.js → chunk-UO7XAZK6.js} +17 -4
  189. package/dist/cli-bundle/chunks/chunk-UO7XAZK6.js.map +1 -0
  190. package/dist/cli-bundle/chunks/{chunk-JVH7QBVV.js → chunk-V5ZWKJNY.js} +2 -2
  191. package/dist/cli-bundle/chunks/{chunk-I36Y7PCE.js → chunk-VGO73OCK.js} +6 -6
  192. package/dist/cli-bundle/chunks/{chunk-I36Y7PCE.js.map → chunk-VGO73OCK.js.map} +1 -1
  193. package/dist/cli-bundle/chunks/{chunk-KUOOJR35.js → chunk-VLEA2UTQ.js} +2 -2
  194. package/dist/cli-bundle/chunks/{chunk-RCQZK2GO.js → chunk-W5HXHC7C.js} +7 -9
  195. package/dist/cli-bundle/chunks/{chunk-RCQZK2GO.js.map → chunk-W5HXHC7C.js.map} +1 -1
  196. package/dist/cli-bundle/chunks/{chunk-MUH7A3FD.js → chunk-WCWVEXGA.js} +2 -2
  197. package/dist/cli-bundle/chunks/chunk-X47MKQXU.js +6690 -0
  198. package/dist/cli-bundle/chunks/chunk-X47MKQXU.js.map +7 -0
  199. package/dist/cli-bundle/chunks/{chunk-NB7RLQFW.js → chunk-XBX5CBRQ.js} +5 -7
  200. package/dist/cli-bundle/chunks/{chunk-NB7RLQFW.js.map → chunk-XBX5CBRQ.js.map} +1 -1
  201. package/dist/cli-bundle/chunks/{chunk-SCUR7K7N.js → chunk-XC3X7BQR.js} +541 -44
  202. package/dist/cli-bundle/chunks/chunk-XC3X7BQR.js.map +7 -0
  203. package/dist/cli-bundle/chunks/{chunk-CRVYGJUI.js → chunk-XHCVAZGM.js} +13 -17
  204. package/dist/cli-bundle/chunks/{chunk-CRVYGJUI.js.map → chunk-XHCVAZGM.js.map} +1 -1
  205. package/dist/cli-bundle/chunks/{chunk-XB7KFVFI.js → chunk-XPMXPR7K.js} +7 -9
  206. package/dist/cli-bundle/chunks/{chunk-XB7KFVFI.js.map → chunk-XPMXPR7K.js.map} +1 -1
  207. package/dist/cli-bundle/chunks/{chunk-4CJFCTLM.js → chunk-XS2TMNXR.js} +6 -8
  208. package/dist/cli-bundle/chunks/{chunk-4CJFCTLM.js.map → chunk-XS2TMNXR.js.map} +1 -1
  209. package/dist/cli-bundle/chunks/{chunk-HFDADVJZ.js → chunk-XXIYUTLK.js} +10 -14
  210. package/dist/cli-bundle/chunks/{chunk-HFDADVJZ.js.map → chunk-XXIYUTLK.js.map} +1 -1
  211. package/dist/cli-bundle/chunks/{chunk-EOKXK3R3.js → chunk-XZWL7VNE.js} +1220 -398
  212. package/dist/cli-bundle/chunks/chunk-XZWL7VNE.js.map +1 -0
  213. package/dist/cli-bundle/chunks/chunk-Y5IKRUEM.js +6624 -0
  214. package/dist/cli-bundle/chunks/chunk-Y5IKRUEM.js.map +1 -0
  215. package/dist/cli-bundle/chunks/{chunk-6LLVNJXT.js → chunk-Y7KYVCZM.js} +12 -18
  216. package/dist/cli-bundle/chunks/{chunk-6LLVNJXT.js.map → chunk-Y7KYVCZM.js.map} +1 -1
  217. package/dist/cli-bundle/chunks/{chunk-VIIUS6N6.js → chunk-YCVWWIKY.js} +16 -14
  218. package/dist/cli-bundle/chunks/chunk-YCVWWIKY.js.map +7 -0
  219. package/dist/cli-bundle/chunks/{chunk-CFNGIXZP.js → chunk-YH5NBDFA.js} +22 -26
  220. package/dist/cli-bundle/chunks/{chunk-CFNGIXZP.js.map → chunk-YH5NBDFA.js.map} +1 -1
  221. package/dist/cli-bundle/chunks/chunk-YNCFP5AR.js +5509 -0
  222. package/dist/cli-bundle/chunks/chunk-YNCFP5AR.js.map +7 -0
  223. package/dist/cli-bundle/chunks/{chunk-NC33K5ZS.js → chunk-YPD7SQ5P.js} +7 -6
  224. package/dist/cli-bundle/chunks/{chunk-NC33K5ZS.js.map → chunk-YPD7SQ5P.js.map} +2 -2
  225. package/dist/cli-bundle/chunks/{chunk-NGXQ3PFT.js → chunk-YPMZMKN7.js} +2 -2
  226. package/dist/cli-bundle/chunks/{chunk-KGFUY7WN.js → chunk-YTD5GICJ.js} +4 -4
  227. package/dist/cli-bundle/chunks/{chunk-W6DYWXPQ.js → chunk-ZNEG2UDO.js} +261 -34
  228. package/dist/cli-bundle/chunks/{chunk-W6DYWXPQ.js.map → chunk-ZNEG2UDO.js.map} +4 -4
  229. package/dist/cli-bundle/chunks/{chunk-7DT4WSH2.js → chunk-ZO7CLOY2.js} +3 -3
  230. package/dist/cli-bundle/chunks/{close-2SSSHHUZ.js → close-3YYQ5OG2.js} +5 -9
  231. package/dist/cli-bundle/chunks/close-Z3Q4U7TS.js +12 -0
  232. package/dist/cli-bundle/chunks/close-many-3L2RXH3M.js +22 -0
  233. package/dist/cli-bundle/chunks/close-many-D366FTIG.js +26 -0
  234. package/dist/cli-bundle/chunks/comments-54XDJNFE.js +17 -0
  235. package/dist/cli-bundle/chunks/comments-HGHC2PN6.js +13 -0
  236. package/dist/cli-bundle/chunks/{copy-32ROBIDL.js → copy-44RT5GDW.js} +4 -8
  237. package/dist/cli-bundle/chunks/copy-UGMUGHZA.js +9 -0
  238. package/dist/cli-bundle/chunks/{create-E77SDCUP.js → create-4GWJWPXG.js} +9 -14
  239. package/dist/cli-bundle/chunks/create-AZXCUYKP.js +25 -0
  240. package/dist/cli-bundle/chunks/delete-Y6SXIQ4X.js +10 -0
  241. package/dist/cli-bundle/chunks/{delete-RA5KTCLB.js → delete-YQ2VPXNF.js} +4 -8
  242. package/dist/cli-bundle/chunks/{deps-32SU7HO5.js → deps-BU5EBJDU.js} +4 -8
  243. package/dist/cli-bundle/chunks/deps-FMANWFRP.js +13 -0
  244. package/dist/cli-bundle/chunks/{docs-RRUPT7O2.js → docs-OQBSJNIA.js} +6 -10
  245. package/dist/cli-bundle/chunks/docs-VNPBZXEL.js +14 -0
  246. package/dist/cli-bundle/chunks/files-72HZEBOE.js +18 -0
  247. package/dist/cli-bundle/chunks/{files-PYKR2UUG.js → files-HTSB2KJG.js} +6 -10
  248. package/dist/cli-bundle/chunks/{contracts-NYPEW2G4.js → focus-FOG4ALC2.js} +7 -9
  249. package/dist/cli-bundle/chunks/focus-SUTMKXGX.js +10 -0
  250. package/dist/cli-bundle/chunks/{history-compact-3MNXLKAT.js → history-compact-M6IFAMBP.js} +9 -13
  251. package/dist/cli-bundle/chunks/history-compact-NEXRPP2O.js +21 -0
  252. package/dist/cli-bundle/chunks/{history-redact-P6DYF55G.js → history-redact-NQX3OGZP.js} +7 -11
  253. package/dist/cli-bundle/chunks/history-redact-WQJBZ3PX.js +17 -0
  254. package/dist/cli-bundle/chunks/history-repair-CBHMHAJO.js +19 -0
  255. package/dist/cli-bundle/chunks/{history-repair-ZJQFMWPD.js → history-repair-NHOJG7WO.js} +9 -13
  256. package/dist/cli-bundle/chunks/learnings-M64NTSOR.js +13 -0
  257. package/dist/cli-bundle/chunks/{append-BGML6VLD.js → learnings-T63JGKKN.js} +9 -11
  258. package/dist/cli-bundle/chunks/notes-73WE2UV2.js +13 -0
  259. package/dist/cli-bundle/chunks/notes-U7L6HQQ2.js +17 -0
  260. package/dist/cli-bundle/chunks/plan-OSCNYFGC.js +24 -0
  261. package/dist/cli-bundle/chunks/{plan-CHVE7PBR.js → plan-TN537L24.js} +10 -15
  262. package/dist/cli-bundle/chunks/{profile-ZXGSKBJD.js → profile-MHAMXMHQ.js} +9 -13
  263. package/dist/cli-bundle/chunks/{profile-LD23PSI6.js → profile-TIGLAKJ7.js} +9 -13
  264. package/dist/cli-bundle/chunks/{register-list-query-OEYQHFXO.js → register-list-query-OHXD7G5N.js} +41 -33
  265. package/dist/cli-bundle/chunks/register-list-query-OHXD7G5N.js.map +7 -0
  266. package/dist/cli-bundle/chunks/{register-list-query-B42JCCOI.js → register-list-query-ZCRABAPN.js} +42 -34
  267. package/dist/cli-bundle/chunks/register-list-query-ZCRABAPN.js.map +1 -0
  268. package/dist/cli-bundle/chunks/{register-mutation-IAEST26S.js → register-mutation-P3G4XP6Q.js} +36 -41
  269. package/dist/cli-bundle/chunks/{register-mutation-IAEST26S.js.map → register-mutation-P3G4XP6Q.js.map} +1 -1
  270. package/dist/cli-bundle/chunks/{register-mutation-3QXIHCQG.js → register-mutation-XX4H56PE.js} +34 -39
  271. package/dist/cli-bundle/chunks/{register-mutation-3QXIHCQG.js.map → register-mutation-XX4H56PE.js.map} +1 -1
  272. package/dist/cli-bundle/chunks/{chunk-5BMM6XQY.js → register-operations-V6PIYEDU.js} +79 -46
  273. package/dist/cli-bundle/chunks/register-operations-V6PIYEDU.js.map +1 -0
  274. package/dist/cli-bundle/chunks/{chunk-Z3U3U5KD.js → register-operations-V6VKTG54.js} +78 -45
  275. package/dist/cli-bundle/chunks/register-operations-V6VKTG54.js.map +7 -0
  276. package/dist/cli-bundle/chunks/{register-setup-3ZVVX2VN.js → register-setup-6RVAWT6W.js} +129 -29
  277. package/dist/cli-bundle/chunks/register-setup-6RVAWT6W.js.map +7 -0
  278. package/dist/cli-bundle/chunks/{register-setup-Q6KFNIOZ.js → register-setup-6YVUSQYD.js} +130 -30
  279. package/dist/cli-bundle/chunks/register-setup-6YVUSQYD.js.map +1 -0
  280. package/dist/cli-bundle/chunks/{restore-5RQHAPMA.js → restore-HC3YSWF7.js} +7 -11
  281. package/dist/cli-bundle/chunks/restore-LFAMMRYZ.js +15 -0
  282. package/dist/cli-bundle/chunks/{schema-HBORFC6B.js → schema-DAGSYO6E.js} +6 -10
  283. package/dist/cli-bundle/chunks/{schema-245WW4G2.js → schema-UBXJCQAC.js} +6 -10
  284. package/dist/cli-bundle/chunks/update-CJGG5WMV.js +21 -0
  285. package/dist/cli-bundle/chunks/update-LKD64AFP.js +25 -0
  286. package/dist/cli-bundle/chunks/update-many-G4SM7BHC.js +31 -0
  287. package/dist/cli-bundle/chunks/update-many-VLIV3D7R.js +35 -0
  288. package/dist/cli-bundle/main.js +29 -31
  289. package/dist/cli-bundle/main.js.map +2 -2
  290. package/dist/cli-bundle/sdk-runtime.js +129 -107
  291. package/dist/cli-bundle/sdk-testing.js +7 -8
  292. package/dist/cli-bundle/sdk.js +122 -117
  293. package/dist/cli-bundle/sdk.js.map +2 -2
  294. package/dist/core/history/drift-scan.js +3 -8
  295. package/dist/core/history/drift-scan.js.map +1 -1
  296. package/dist/core/output/mutation-projection.js +11 -5
  297. package/dist/core/output/mutation-projection.js.map +1 -1
  298. package/dist/core/search/cache.js +3 -3
  299. package/dist/core/search/cache.js.map +1 -1
  300. package/dist/core/search/semantic-defaults.d.ts +2 -0
  301. package/dist/core/search/semantic-defaults.js +11 -4
  302. package/dist/core/search/semantic-defaults.js.map +1 -1
  303. package/dist/core/search/vector-stores.d.ts +1 -1
  304. package/dist/core/search/vector-stores.js +33 -7
  305. package/dist/core/search/vector-stores.js.map +1 -1
  306. package/dist/mcp/server.d.ts +1 -1
  307. package/dist/sdk/cli-contracts/flag-contracts.js +7 -7
  308. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  309. package/dist/sdk/cli-contracts/tool-schema.js +9 -7
  310. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
  311. package/dist/sdk/index.d.ts +1 -1
  312. package/dist/sdk/index.js +3 -3
  313. package/dist/sdk/index.js.map +1 -1
  314. package/dist/sdk/runtime.d.ts +151 -8
  315. package/dist/sdk/runtime.js +255 -14
  316. package/dist/sdk/runtime.js.map +1 -1
  317. package/dist/sdk/start-task-status.d.ts +13 -0
  318. package/dist/sdk/start-task-status.js +19 -0
  319. package/dist/sdk/start-task-status.js.map +1 -0
  320. package/docs/COMMANDS.md +10 -1
  321. package/docs/SDK.md +35 -0
  322. package/docs/TESTING.md +3 -0
  323. package/package.json +1 -1
  324. package/dist/cli-bundle/chunks/activity-WJCGCYPU.js +0 -18
  325. package/dist/cli-bundle/chunks/activity-Z6QUAUSG.js +0 -22
  326. package/dist/cli-bundle/chunks/aggregate-BDM6EIAR.js +0 -25
  327. package/dist/cli-bundle/chunks/aggregate-VQ2DHU3S.js +0 -21
  328. package/dist/cli-bundle/chunks/append-RKJYPU74.js +0 -15
  329. package/dist/cli-bundle/chunks/chunk-2XG4IZON.js +0 -218
  330. package/dist/cli-bundle/chunks/chunk-2XG4IZON.js.map +0 -7
  331. package/dist/cli-bundle/chunks/chunk-37E72CNS.js +0 -217
  332. package/dist/cli-bundle/chunks/chunk-37E72CNS.js.map +0 -1
  333. package/dist/cli-bundle/chunks/chunk-3GCS5SKL.js +0 -228
  334. package/dist/cli-bundle/chunks/chunk-3GCS5SKL.js.map +0 -1
  335. package/dist/cli-bundle/chunks/chunk-3KTN6IBA.js +0 -2330
  336. package/dist/cli-bundle/chunks/chunk-3KTN6IBA.js.map +0 -7
  337. package/dist/cli-bundle/chunks/chunk-3VHSI5FL.js.map +0 -1
  338. package/dist/cli-bundle/chunks/chunk-425E4QL5.js +0 -278
  339. package/dist/cli-bundle/chunks/chunk-425E4QL5.js.map +0 -7
  340. package/dist/cli-bundle/chunks/chunk-46CUF5L6.js.map +0 -7
  341. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +0 -87
  342. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +0 -7
  343. package/dist/cli-bundle/chunks/chunk-4HIFVN7N.js +0 -249
  344. package/dist/cli-bundle/chunks/chunk-4HIFVN7N.js.map +0 -7
  345. package/dist/cli-bundle/chunks/chunk-4IWYTWGF.js +0 -819
  346. package/dist/cli-bundle/chunks/chunk-4IWYTWGF.js.map +0 -1
  347. package/dist/cli-bundle/chunks/chunk-4MZVRJOE.js +0 -279
  348. package/dist/cli-bundle/chunks/chunk-4MZVRJOE.js.map +0 -1
  349. package/dist/cli-bundle/chunks/chunk-57NWPFF2.js.map +0 -1
  350. package/dist/cli-bundle/chunks/chunk-5AJXHQM7.js +0 -268
  351. package/dist/cli-bundle/chunks/chunk-5AJXHQM7.js.map +0 -1
  352. package/dist/cli-bundle/chunks/chunk-5BMM6XQY.js.map +0 -1
  353. package/dist/cli-bundle/chunks/chunk-5GZ7TDD6.js +0 -1868
  354. package/dist/cli-bundle/chunks/chunk-5GZ7TDD6.js.map +0 -7
  355. package/dist/cli-bundle/chunks/chunk-5VAA4YHR.js +0 -1749
  356. package/dist/cli-bundle/chunks/chunk-5VAA4YHR.js.map +0 -7
  357. package/dist/cli-bundle/chunks/chunk-64YKRTSV.js +0 -1961
  358. package/dist/cli-bundle/chunks/chunk-64YKRTSV.js.map +0 -1
  359. package/dist/cli-bundle/chunks/chunk-7C2O74AE.js +0 -23
  360. package/dist/cli-bundle/chunks/chunk-7C2O74AE.js.map +0 -7
  361. package/dist/cli-bundle/chunks/chunk-B7FRNMYN.js +0 -421
  362. package/dist/cli-bundle/chunks/chunk-B7FRNMYN.js.map +0 -1
  363. package/dist/cli-bundle/chunks/chunk-C5JBZRPU.js +0 -1985
  364. package/dist/cli-bundle/chunks/chunk-C5JBZRPU.js.map +0 -7
  365. package/dist/cli-bundle/chunks/chunk-CL36D4PC.js.map +0 -7
  366. package/dist/cli-bundle/chunks/chunk-COSPOP7H.js.map +0 -7
  367. package/dist/cli-bundle/chunks/chunk-COWTDV6B.js +0 -3461
  368. package/dist/cli-bundle/chunks/chunk-COWTDV6B.js.map +0 -7
  369. package/dist/cli-bundle/chunks/chunk-DEWEK6AN.js +0 -1858
  370. package/dist/cli-bundle/chunks/chunk-DEWEK6AN.js.map +0 -1
  371. package/dist/cli-bundle/chunks/chunk-DMRNBQOI.js.map +0 -1
  372. package/dist/cli-bundle/chunks/chunk-E3SZTQ4K.js +0 -1932
  373. package/dist/cli-bundle/chunks/chunk-E3SZTQ4K.js.map +0 -1
  374. package/dist/cli-bundle/chunks/chunk-EGAP5OWD.js.map +0 -1
  375. package/dist/cli-bundle/chunks/chunk-EKFNL33R.js.map +0 -1
  376. package/dist/cli-bundle/chunks/chunk-ENGQOEUY.js +0 -1704
  377. package/dist/cli-bundle/chunks/chunk-ENGQOEUY.js.map +0 -1
  378. package/dist/cli-bundle/chunks/chunk-EOKXK3R3.js.map +0 -1
  379. package/dist/cli-bundle/chunks/chunk-FLZSGSQR.js +0 -231
  380. package/dist/cli-bundle/chunks/chunk-FLZSGSQR.js.map +0 -7
  381. package/dist/cli-bundle/chunks/chunk-FOUYJE4A.js +0 -2090
  382. package/dist/cli-bundle/chunks/chunk-FOUYJE4A.js.map +0 -1
  383. package/dist/cli-bundle/chunks/chunk-G24G7ZAV.js +0 -1570
  384. package/dist/cli-bundle/chunks/chunk-G24G7ZAV.js.map +0 -1
  385. package/dist/cli-bundle/chunks/chunk-GEYZ4G4O.js +0 -239
  386. package/dist/cli-bundle/chunks/chunk-GEYZ4G4O.js.map +0 -1
  387. package/dist/cli-bundle/chunks/chunk-GPLPTGOV.js +0 -530
  388. package/dist/cli-bundle/chunks/chunk-GPLPTGOV.js.map +0 -7
  389. package/dist/cli-bundle/chunks/chunk-GZRDYONU.js +0 -1005
  390. package/dist/cli-bundle/chunks/chunk-GZRDYONU.js.map +0 -7
  391. package/dist/cli-bundle/chunks/chunk-HN6NSXNW.js +0 -277
  392. package/dist/cli-bundle/chunks/chunk-HN6NSXNW.js.map +0 -7
  393. package/dist/cli-bundle/chunks/chunk-IQNVQHOP.js +0 -309
  394. package/dist/cli-bundle/chunks/chunk-IQNVQHOP.js.map +0 -7
  395. package/dist/cli-bundle/chunks/chunk-JINYH2DB.js +0 -371
  396. package/dist/cli-bundle/chunks/chunk-JINYH2DB.js.map +0 -7
  397. package/dist/cli-bundle/chunks/chunk-JQXPY7DN.js +0 -2257
  398. package/dist/cli-bundle/chunks/chunk-JQXPY7DN.js.map +0 -7
  399. package/dist/cli-bundle/chunks/chunk-K46RF36U.js.map +0 -1
  400. package/dist/cli-bundle/chunks/chunk-KERMZVY5.js +0 -371
  401. package/dist/cli-bundle/chunks/chunk-KERMZVY5.js.map +0 -7
  402. package/dist/cli-bundle/chunks/chunk-KSRUHV2H.js +0 -76
  403. package/dist/cli-bundle/chunks/chunk-KSRUHV2H.js.map +0 -1
  404. package/dist/cli-bundle/chunks/chunk-LP3HSFZ2.js +0 -140
  405. package/dist/cli-bundle/chunks/chunk-LP3HSFZ2.js.map +0 -1
  406. package/dist/cli-bundle/chunks/chunk-MAWDPCJW.js +0 -1601
  407. package/dist/cli-bundle/chunks/chunk-MAWDPCJW.js.map +0 -1
  408. package/dist/cli-bundle/chunks/chunk-MFAZSEM5.js +0 -1031
  409. package/dist/cli-bundle/chunks/chunk-MFAZSEM5.js.map +0 -1
  410. package/dist/cli-bundle/chunks/chunk-MFSCBT5Q.js +0 -995
  411. package/dist/cli-bundle/chunks/chunk-MFSCBT5Q.js.map +0 -1
  412. package/dist/cli-bundle/chunks/chunk-ML5X7DP2.js +0 -296
  413. package/dist/cli-bundle/chunks/chunk-ML5X7DP2.js.map +0 -1
  414. package/dist/cli-bundle/chunks/chunk-MLIYFOE7.js.map +0 -1
  415. package/dist/cli-bundle/chunks/chunk-MR6FJ7LL.js +0 -2043
  416. package/dist/cli-bundle/chunks/chunk-MR6FJ7LL.js.map +0 -7
  417. package/dist/cli-bundle/chunks/chunk-MXYA5SAJ.js +0 -2033
  418. package/dist/cli-bundle/chunks/chunk-MXYA5SAJ.js.map +0 -1
  419. package/dist/cli-bundle/chunks/chunk-N745W3B3.js +0 -1604
  420. package/dist/cli-bundle/chunks/chunk-N745W3B3.js.map +0 -7
  421. package/dist/cli-bundle/chunks/chunk-NMP5I3I5.js +0 -1615
  422. package/dist/cli-bundle/chunks/chunk-NMP5I3I5.js.map +0 -7
  423. package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js +0 -20
  424. package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js.map +0 -1
  425. package/dist/cli-bundle/chunks/chunk-PZUGEOPS.js +0 -143
  426. package/dist/cli-bundle/chunks/chunk-PZUGEOPS.js.map +0 -7
  427. package/dist/cli-bundle/chunks/chunk-QLMX7SRD.js.map +0 -7
  428. package/dist/cli-bundle/chunks/chunk-QX6HM775.js +0 -398
  429. package/dist/cli-bundle/chunks/chunk-QX6HM775.js.map +0 -7
  430. package/dist/cli-bundle/chunks/chunk-QZ342C63.js +0 -220
  431. package/dist/cli-bundle/chunks/chunk-QZ342C63.js.map +0 -7
  432. package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js +0 -368
  433. package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js.map +0 -1
  434. package/dist/cli-bundle/chunks/chunk-RFNYTESG.js +0 -520
  435. package/dist/cli-bundle/chunks/chunk-RFNYTESG.js.map +0 -1
  436. package/dist/cli-bundle/chunks/chunk-RKQOO2UM.js +0 -79
  437. package/dist/cli-bundle/chunks/chunk-RKQOO2UM.js.map +0 -7
  438. package/dist/cli-bundle/chunks/chunk-RQLT6ZWB.js +0 -282
  439. package/dist/cli-bundle/chunks/chunk-RQLT6ZWB.js.map +0 -7
  440. package/dist/cli-bundle/chunks/chunk-S3JS6YVZ.js +0 -274
  441. package/dist/cli-bundle/chunks/chunk-S3JS6YVZ.js.map +0 -1
  442. package/dist/cli-bundle/chunks/chunk-SCUR7K7N.js.map +0 -7
  443. package/dist/cli-bundle/chunks/chunk-SHQY2IDC.js +0 -1977
  444. package/dist/cli-bundle/chunks/chunk-SHQY2IDC.js.map +0 -7
  445. package/dist/cli-bundle/chunks/chunk-SPZ6DOGY.js +0 -1041
  446. package/dist/cli-bundle/chunks/chunk-SPZ6DOGY.js.map +0 -7
  447. package/dist/cli-bundle/chunks/chunk-T42JWV3F.js +0 -822
  448. package/dist/cli-bundle/chunks/chunk-T42JWV3F.js.map +0 -7
  449. package/dist/cli-bundle/chunks/chunk-TKD5VCTD.js.map +0 -1
  450. package/dist/cli-bundle/chunks/chunk-TULGS6X6.js.map +0 -1
  451. package/dist/cli-bundle/chunks/chunk-TZXRBVAM.js +0 -2306
  452. package/dist/cli-bundle/chunks/chunk-TZXRBVAM.js.map +0 -1
  453. package/dist/cli-bundle/chunks/chunk-VIIUS6N6.js.map +0 -7
  454. package/dist/cli-bundle/chunks/chunk-VPIM42PC.js.map +0 -7
  455. package/dist/cli-bundle/chunks/chunk-VQRSPVME.js +0 -368
  456. package/dist/cli-bundle/chunks/chunk-VQRSPVME.js.map +0 -1
  457. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +0 -84
  458. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +0 -1
  459. package/dist/cli-bundle/chunks/chunk-WG34ZNQQ.js +0 -3423
  460. package/dist/cli-bundle/chunks/chunk-WG34ZNQQ.js.map +0 -1
  461. package/dist/cli-bundle/chunks/chunk-WLSM645P.js +0 -2247
  462. package/dist/cli-bundle/chunks/chunk-WLSM645P.js.map +0 -1
  463. package/dist/cli-bundle/chunks/chunk-WRTENIX3.js +0 -215
  464. package/dist/cli-bundle/chunks/chunk-WRTENIX3.js.map +0 -1
  465. package/dist/cli-bundle/chunks/chunk-WSBLYDWV.js +0 -388
  466. package/dist/cli-bundle/chunks/chunk-WSBLYDWV.js.map +0 -1
  467. package/dist/cli-bundle/chunks/chunk-XC5BURG2.js +0 -306
  468. package/dist/cli-bundle/chunks/chunk-XC5BURG2.js.map +0 -1
  469. package/dist/cli-bundle/chunks/chunk-XDB7RWQT.js +0 -424
  470. package/dist/cli-bundle/chunks/chunk-XDB7RWQT.js.map +0 -7
  471. package/dist/cli-bundle/chunks/chunk-Y6BK55A3.js +0 -2128
  472. package/dist/cli-bundle/chunks/chunk-Y6BK55A3.js.map +0 -7
  473. package/dist/cli-bundle/chunks/chunk-Z3U3U5KD.js.map +0 -7
  474. package/dist/cli-bundle/chunks/chunk-ZO3XKAOP.js +0 -299
  475. package/dist/cli-bundle/chunks/chunk-ZO3XKAOP.js.map +0 -7
  476. package/dist/cli-bundle/chunks/chunk-ZSUS2OD3.js.map +0 -7
  477. package/dist/cli-bundle/chunks/claim-RFS7BROJ.js +0 -19
  478. package/dist/cli-bundle/chunks/claim-XP5AWZ5H.js +0 -23
  479. package/dist/cli-bundle/chunks/close-GEANHQ2J.js +0 -16
  480. package/dist/cli-bundle/chunks/close-many-CMZW7ITN.js +0 -31
  481. package/dist/cli-bundle/chunks/close-many-ZFDIG6M7.js +0 -27
  482. package/dist/cli-bundle/chunks/comments-MFSYVNNU.js +0 -21
  483. package/dist/cli-bundle/chunks/comments-XUBPXDYX.js +0 -17
  484. package/dist/cli-bundle/chunks/config-D7XQMONX.js +0 -18
  485. package/dist/cli-bundle/chunks/config-T4FHBSYN.js +0 -22
  486. package/dist/cli-bundle/chunks/context-DIU275XI.js +0 -48
  487. package/dist/cli-bundle/chunks/context-JCOYB4LZ.js +0 -44
  488. package/dist/cli-bundle/chunks/contracts-BVO7CSLK.js +0 -12
  489. package/dist/cli-bundle/chunks/copy-NAGLGMHZ.js +0 -13
  490. package/dist/cli-bundle/chunks/create-4V7SWNBB.js +0 -30
  491. package/dist/cli-bundle/chunks/delete-NQI5OSKN.js +0 -14
  492. package/dist/cli-bundle/chunks/deps-T7SCWXEX.js +0 -17
  493. package/dist/cli-bundle/chunks/docs-WL2IWGWV.js +0 -18
  494. package/dist/cli-bundle/chunks/eval-NF2J5SHR.js +0 -23
  495. package/dist/cli-bundle/chunks/eval-SKDT3MZU.js +0 -27
  496. package/dist/cli-bundle/chunks/extension-LAXKCAYE.js +0 -42
  497. package/dist/cli-bundle/chunks/extension-ZISPBRBC.js +0 -38
  498. package/dist/cli-bundle/chunks/files-EWRQHGIS.js +0 -22
  499. package/dist/cli-bundle/chunks/focus-4T7TM4MT.js +0 -18
  500. package/dist/cli-bundle/chunks/focus-L3YUASOD.js +0 -14
  501. package/dist/cli-bundle/chunks/gc-2PCTYYRI.js +0 -12
  502. package/dist/cli-bundle/chunks/get-7DMITJ3G.js +0 -23
  503. package/dist/cli-bundle/chunks/get-VKQXCXLL.js +0 -19
  504. package/dist/cli-bundle/chunks/health-CVSTAR2F.js +0 -31
  505. package/dist/cli-bundle/chunks/health-TV3GKTFN.js +0 -35
  506. package/dist/cli-bundle/chunks/history-D4JUX5XV.js +0 -20
  507. package/dist/cli-bundle/chunks/history-D4JUX5XV.js.map +0 -7
  508. package/dist/cli-bundle/chunks/history-LQ2UWZTE.js +0 -24
  509. package/dist/cli-bundle/chunks/history-LQ2UWZTE.js.map +0 -1
  510. package/dist/cli-bundle/chunks/history-compact-3MNXLKAT.js.map +0 -1
  511. package/dist/cli-bundle/chunks/history-compact-QWEO32FP.js +0 -25
  512. package/dist/cli-bundle/chunks/history-compact-QWEO32FP.js.map +0 -7
  513. package/dist/cli-bundle/chunks/history-redact-3OIVBVIY.js +0 -21
  514. package/dist/cli-bundle/chunks/history-redact-3OIVBVIY.js.map +0 -7
  515. package/dist/cli-bundle/chunks/history-redact-P6DYF55G.js.map +0 -1
  516. package/dist/cli-bundle/chunks/history-repair-I3E73UGQ.js +0 -23
  517. package/dist/cli-bundle/chunks/history-repair-I3E73UGQ.js.map +0 -7
  518. package/dist/cli-bundle/chunks/history-repair-ZJQFMWPD.js.map +0 -1
  519. package/dist/cli-bundle/chunks/init-C3LJPWQZ.js +0 -30
  520. package/dist/cli-bundle/chunks/init-C3LJPWQZ.js.map +0 -1
  521. package/dist/cli-bundle/chunks/init-J3DPGWQI.js +0 -26
  522. package/dist/cli-bundle/chunks/init-J3DPGWQI.js.map +0 -7
  523. package/dist/cli-bundle/chunks/learnings-5BO2SNDW.js +0 -21
  524. package/dist/cli-bundle/chunks/learnings-5BO2SNDW.js.map +0 -1
  525. package/dist/cli-bundle/chunks/learnings-OGP4JB4I.js +0 -17
  526. package/dist/cli-bundle/chunks/learnings-OGP4JB4I.js.map +0 -7
  527. package/dist/cli-bundle/chunks/list-O5NZVSPN.js +0 -36
  528. package/dist/cli-bundle/chunks/list-O5NZVSPN.js.map +0 -1
  529. package/dist/cli-bundle/chunks/list-Z55YCNTC.js +0 -32
  530. package/dist/cli-bundle/chunks/list-Z55YCNTC.js.map +0 -7
  531. package/dist/cli-bundle/chunks/next-GBNTGXFC.js +0 -28
  532. package/dist/cli-bundle/chunks/next-GBNTGXFC.js.map +0 -7
  533. package/dist/cli-bundle/chunks/next-QKW7PTKE.js +0 -32
  534. package/dist/cli-bundle/chunks/next-QKW7PTKE.js.map +0 -1
  535. package/dist/cli-bundle/chunks/notes-R5FZTKWF.js +0 -17
  536. package/dist/cli-bundle/chunks/notes-R5FZTKWF.js.map +0 -7
  537. package/dist/cli-bundle/chunks/notes-WCGIULVG.js +0 -21
  538. package/dist/cli-bundle/chunks/notes-WCGIULVG.js.map +0 -1
  539. package/dist/cli-bundle/chunks/plan-ADISFYH4.js +0 -29
  540. package/dist/cli-bundle/chunks/plan-ADISFYH4.js.map +0 -7
  541. package/dist/cli-bundle/chunks/plan-CHVE7PBR.js.map +0 -1
  542. package/dist/cli-bundle/chunks/profile-LD23PSI6.js.map +0 -7
  543. package/dist/cli-bundle/chunks/profile-ZXGSKBJD.js.map +0 -1
  544. package/dist/cli-bundle/chunks/register-list-query-B42JCCOI.js.map +0 -1
  545. package/dist/cli-bundle/chunks/register-list-query-OEYQHFXO.js.map +0 -7
  546. package/dist/cli-bundle/chunks/register-operations-I3M3U7DS.js +0 -19
  547. package/dist/cli-bundle/chunks/register-operations-I3M3U7DS.js.map +0 -7
  548. package/dist/cli-bundle/chunks/register-operations-UHKENLZV.js +0 -23
  549. package/dist/cli-bundle/chunks/register-operations-UHKENLZV.js.map +0 -1
  550. package/dist/cli-bundle/chunks/register-setup-3ZVVX2VN.js.map +0 -7
  551. package/dist/cli-bundle/chunks/register-setup-Q6KFNIOZ.js.map +0 -1
  552. package/dist/cli-bundle/chunks/restore-5RQHAPMA.js.map +0 -1
  553. package/dist/cli-bundle/chunks/restore-PNEIBBLW.js +0 -19
  554. package/dist/cli-bundle/chunks/restore-PNEIBBLW.js.map +0 -7
  555. package/dist/cli-bundle/chunks/scheduling-shortcuts-4G56YHVQ.js +0 -29
  556. package/dist/cli-bundle/chunks/scheduling-shortcuts-4G56YHVQ.js.map +0 -1
  557. package/dist/cli-bundle/chunks/scheduling-shortcuts-75DULBYP.js +0 -25
  558. package/dist/cli-bundle/chunks/scheduling-shortcuts-75DULBYP.js.map +0 -7
  559. package/dist/cli-bundle/chunks/schema-245WW4G2.js.map +0 -1
  560. package/dist/cli-bundle/chunks/schema-HBORFC6B.js.map +0 -7
  561. package/dist/cli-bundle/chunks/search-AOZC5SIK.js +0 -34
  562. package/dist/cli-bundle/chunks/search-AOZC5SIK.js.map +0 -7
  563. package/dist/cli-bundle/chunks/search-DRXPGHD7.js +0 -38
  564. package/dist/cli-bundle/chunks/search-DRXPGHD7.js.map +0 -1
  565. package/dist/cli-bundle/chunks/stats-NJG4NLHG.js +0 -21
  566. package/dist/cli-bundle/chunks/stats-NJG4NLHG.js.map +0 -1
  567. package/dist/cli-bundle/chunks/stats-RG6AG4N2.js +0 -17
  568. package/dist/cli-bundle/chunks/stats-RG6AG4N2.js.map +0 -7
  569. package/dist/cli-bundle/chunks/telemetry-HQC2JJIF.js +0 -14
  570. package/dist/cli-bundle/chunks/telemetry-HQC2JJIF.js.map +0 -7
  571. package/dist/cli-bundle/chunks/telemetry-MPNL3HHY.js +0 -18
  572. package/dist/cli-bundle/chunks/telemetry-MPNL3HHY.js.map +0 -1
  573. package/dist/cli-bundle/chunks/test-6CMOCWUC.js +0 -39
  574. package/dist/cli-bundle/chunks/test-6CMOCWUC.js.map +0 -7
  575. package/dist/cli-bundle/chunks/test-RI7XHBZL.js +0 -43
  576. package/dist/cli-bundle/chunks/test-RI7XHBZL.js.map +0 -1
  577. package/dist/cli-bundle/chunks/test-all-7R7YRZIA.js +0 -29
  578. package/dist/cli-bundle/chunks/test-all-7R7YRZIA.js.map +0 -7
  579. package/dist/cli-bundle/chunks/test-all-QEIORFYW.js +0 -33
  580. package/dist/cli-bundle/chunks/test-all-QEIORFYW.js.map +0 -1
  581. package/dist/cli-bundle/chunks/test-runs-5Y2BOU2S.js +0 -28
  582. package/dist/cli-bundle/chunks/test-runs-5Y2BOU2S.js.map +0 -1
  583. package/dist/cli-bundle/chunks/test-runs-PVGC3GRZ.js +0 -24
  584. package/dist/cli-bundle/chunks/test-runs-PVGC3GRZ.js.map +0 -7
  585. package/dist/cli-bundle/chunks/update-QVJDFEAP.js +0 -30
  586. package/dist/cli-bundle/chunks/update-QVJDFEAP.js.map +0 -1
  587. package/dist/cli-bundle/chunks/update-VQVHAY6X.js +0 -26
  588. package/dist/cli-bundle/chunks/update-VQVHAY6X.js.map +0 -7
  589. package/dist/cli-bundle/chunks/update-many-S7XWBSB3.js +0 -37
  590. package/dist/cli-bundle/chunks/update-many-S7XWBSB3.js.map +0 -7
  591. package/dist/cli-bundle/chunks/update-many-YIYW6XQ6.js +0 -41
  592. package/dist/cli-bundle/chunks/update-many-YIYW6XQ6.js.map +0 -1
  593. package/dist/cli-bundle/chunks/upgrade-OPRXA56R.js +0 -24
  594. package/dist/cli-bundle/chunks/upgrade-OPRXA56R.js.map +0 -7
  595. package/dist/cli-bundle/chunks/upgrade-WH4BTQLX.js +0 -28
  596. package/dist/cli-bundle/chunks/upgrade-WH4BTQLX.js.map +0 -1
  597. package/dist/cli-bundle/chunks/validate-4NTXSB62.js +0 -36
  598. package/dist/cli-bundle/chunks/validate-4NTXSB62.js.map +0 -1
  599. package/dist/cli-bundle/chunks/validate-MUFXQZMI.js +0 -32
  600. package/dist/cli-bundle/chunks/validate-MUFXQZMI.js.map +0 -7
  601. /package/dist/cli-bundle/chunks/{activity-WJCGCYPU.js.map → append-F7WPGIQL.js.map} +0 -0
  602. /package/dist/cli-bundle/chunks/{activity-Z6QUAUSG.js.map → append-PVCTBVJG.js.map} +0 -0
  603. /package/dist/cli-bundle/chunks/{chunk-R5BMJX33.js.map → chunk-2LEJGRQ7.js.map} +0 -0
  604. /package/dist/cli-bundle/chunks/{chunk-AZYGZGGI.js.map → chunk-2TILG6F2.js.map} +0 -0
  605. /package/dist/cli-bundle/chunks/{chunk-GJ7QC5DJ.js.map → chunk-3TYOW6RR.js.map} +0 -0
  606. /package/dist/cli-bundle/chunks/{chunk-B6DUFX6H.js.map → chunk-3X542TEY.js.map} +0 -0
  607. /package/dist/cli-bundle/chunks/{chunk-JJP45OEI.js.map → chunk-7VQ3JJN5.js.map} +0 -0
  608. /package/dist/cli-bundle/chunks/{chunk-MWMVPCIE.js.map → chunk-AGAVEDIE.js.map} +0 -0
  609. /package/dist/cli-bundle/chunks/{chunk-22KBU3MW.js.map → chunk-AJUON7E6.js.map} +0 -0
  610. /package/dist/cli-bundle/chunks/{chunk-IWVU4C2F.js.map → chunk-DR2V5OIV.js.map} +0 -0
  611. /package/dist/cli-bundle/chunks/{chunk-XG625QP4.js.map → chunk-EDO7VXSO.js.map} +0 -0
  612. /package/dist/cli-bundle/chunks/{chunk-Y4M7CPQP.js.map → chunk-EVEPHNXJ.js.map} +0 -0
  613. /package/dist/cli-bundle/chunks/{chunk-JDDLOQAE.js.map → chunk-FN6SB4HU.js.map} +0 -0
  614. /package/dist/cli-bundle/chunks/{chunk-24YG75HI.js.map → chunk-H2SMKL2N.js.map} +0 -0
  615. /package/dist/cli-bundle/chunks/{chunk-EGY6JBQ3.js.map → chunk-HX6QXV5P.js.map} +0 -0
  616. /package/dist/cli-bundle/chunks/{chunk-Y46GD4IX.js.map → chunk-P3MJJW7P.js.map} +0 -0
  617. /package/dist/cli-bundle/chunks/{chunk-MVYWGY2A.js.map → chunk-PDXJXEZJ.js.map} +0 -0
  618. /package/dist/cli-bundle/chunks/{chunk-AGHMOTGM.js.map → chunk-TEKZOS7M.js.map} +0 -0
  619. /package/dist/cli-bundle/chunks/{chunk-JVH7QBVV.js.map → chunk-V5ZWKJNY.js.map} +0 -0
  620. /package/dist/cli-bundle/chunks/{chunk-KUOOJR35.js.map → chunk-VLEA2UTQ.js.map} +0 -0
  621. /package/dist/cli-bundle/chunks/{chunk-MUH7A3FD.js.map → chunk-WCWVEXGA.js.map} +0 -0
  622. /package/dist/cli-bundle/chunks/{chunk-NGXQ3PFT.js.map → chunk-YPMZMKN7.js.map} +0 -0
  623. /package/dist/cli-bundle/chunks/{chunk-KGFUY7WN.js.map → chunk-YTD5GICJ.js.map} +0 -0
  624. /package/dist/cli-bundle/chunks/{chunk-7DT4WSH2.js.map → chunk-ZO7CLOY2.js.map} +0 -0
  625. /package/dist/cli-bundle/chunks/{aggregate-BDM6EIAR.js.map → close-3YYQ5OG2.js.map} +0 -0
  626. /package/dist/cli-bundle/chunks/{aggregate-VQ2DHU3S.js.map → close-Z3Q4U7TS.js.map} +0 -0
  627. /package/dist/cli-bundle/chunks/{append-RKJYPU74.js.map → close-many-3L2RXH3M.js.map} +0 -0
  628. /package/dist/cli-bundle/chunks/{append-BGML6VLD.js.map → close-many-D366FTIG.js.map} +0 -0
  629. /package/dist/cli-bundle/chunks/{claim-XP5AWZ5H.js.map → comments-54XDJNFE.js.map} +0 -0
  630. /package/dist/cli-bundle/chunks/{claim-RFS7BROJ.js.map → comments-HGHC2PN6.js.map} +0 -0
  631. /package/dist/cli-bundle/chunks/{close-2SSSHHUZ.js.map → copy-44RT5GDW.js.map} +0 -0
  632. /package/dist/cli-bundle/chunks/{close-GEANHQ2J.js.map → copy-UGMUGHZA.js.map} +0 -0
  633. /package/dist/cli-bundle/chunks/{close-many-CMZW7ITN.js.map → create-4GWJWPXG.js.map} +0 -0
  634. /package/dist/cli-bundle/chunks/{close-many-ZFDIG6M7.js.map → create-AZXCUYKP.js.map} +0 -0
  635. /package/dist/cli-bundle/chunks/{comments-XUBPXDYX.js.map → delete-Y6SXIQ4X.js.map} +0 -0
  636. /package/dist/cli-bundle/chunks/{comments-MFSYVNNU.js.map → delete-YQ2VPXNF.js.map} +0 -0
  637. /package/dist/cli-bundle/chunks/{config-T4FHBSYN.js.map → deps-BU5EBJDU.js.map} +0 -0
  638. /package/dist/cli-bundle/chunks/{config-D7XQMONX.js.map → deps-FMANWFRP.js.map} +0 -0
  639. /package/dist/cli-bundle/chunks/{context-DIU275XI.js.map → docs-OQBSJNIA.js.map} +0 -0
  640. /package/dist/cli-bundle/chunks/{context-JCOYB4LZ.js.map → docs-VNPBZXEL.js.map} +0 -0
  641. /package/dist/cli-bundle/chunks/{contracts-BVO7CSLK.js.map → files-72HZEBOE.js.map} +0 -0
  642. /package/dist/cli-bundle/chunks/{contracts-NYPEW2G4.js.map → files-HTSB2KJG.js.map} +0 -0
  643. /package/dist/cli-bundle/chunks/{copy-32ROBIDL.js.map → focus-FOG4ALC2.js.map} +0 -0
  644. /package/dist/cli-bundle/chunks/{copy-NAGLGMHZ.js.map → focus-SUTMKXGX.js.map} +0 -0
  645. /package/dist/cli-bundle/chunks/{create-E77SDCUP.js.map → history-compact-M6IFAMBP.js.map} +0 -0
  646. /package/dist/cli-bundle/chunks/{create-4V7SWNBB.js.map → history-compact-NEXRPP2O.js.map} +0 -0
  647. /package/dist/cli-bundle/chunks/{delete-RA5KTCLB.js.map → history-redact-NQX3OGZP.js.map} +0 -0
  648. /package/dist/cli-bundle/chunks/{delete-NQI5OSKN.js.map → history-redact-WQJBZ3PX.js.map} +0 -0
  649. /package/dist/cli-bundle/chunks/{deps-T7SCWXEX.js.map → history-repair-CBHMHAJO.js.map} +0 -0
  650. /package/dist/cli-bundle/chunks/{deps-32SU7HO5.js.map → history-repair-NHOJG7WO.js.map} +0 -0
  651. /package/dist/cli-bundle/chunks/{docs-WL2IWGWV.js.map → learnings-M64NTSOR.js.map} +0 -0
  652. /package/dist/cli-bundle/chunks/{docs-RRUPT7O2.js.map → learnings-T63JGKKN.js.map} +0 -0
  653. /package/dist/cli-bundle/chunks/{eval-NF2J5SHR.js.map → notes-73WE2UV2.js.map} +0 -0
  654. /package/dist/cli-bundle/chunks/{eval-SKDT3MZU.js.map → notes-U7L6HQQ2.js.map} +0 -0
  655. /package/dist/cli-bundle/chunks/{extension-ZISPBRBC.js.map → plan-OSCNYFGC.js.map} +0 -0
  656. /package/dist/cli-bundle/chunks/{extension-LAXKCAYE.js.map → plan-TN537L24.js.map} +0 -0
  657. /package/dist/cli-bundle/chunks/{files-PYKR2UUG.js.map → profile-MHAMXMHQ.js.map} +0 -0
  658. /package/dist/cli-bundle/chunks/{files-EWRQHGIS.js.map → profile-TIGLAKJ7.js.map} +0 -0
  659. /package/dist/cli-bundle/chunks/{focus-4T7TM4MT.js.map → restore-HC3YSWF7.js.map} +0 -0
  660. /package/dist/cli-bundle/chunks/{focus-L3YUASOD.js.map → restore-LFAMMRYZ.js.map} +0 -0
  661. /package/dist/cli-bundle/chunks/{gc-2PCTYYRI.js.map → schema-DAGSYO6E.js.map} +0 -0
  662. /package/dist/cli-bundle/chunks/{gc-2DNMPXMC.js.map → schema-UBXJCQAC.js.map} +0 -0
  663. /package/dist/cli-bundle/chunks/{get-VKQXCXLL.js.map → update-CJGG5WMV.js.map} +0 -0
  664. /package/dist/cli-bundle/chunks/{get-7DMITJ3G.js.map → update-LKD64AFP.js.map} +0 -0
  665. /package/dist/cli-bundle/chunks/{health-CVSTAR2F.js.map → update-many-G4SM7BHC.js.map} +0 -0
  666. /package/dist/cli-bundle/chunks/{health-TV3GKTFN.js.map → update-many-VLIV3D7R.js.map} +0 -0
@@ -1,1031 +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]="06f25e42-4a55-5490-b7f5-780bc79db731")}catch(e){}}();
3
- import {
4
- parseLimit
5
- } from "./chunk-22KBU3MW.js";
6
- import {
7
- nowIso
8
- } from "./chunk-3GCS5SKL.js";
9
- import {
10
- PmCliError,
11
- readSettings
12
- } from "./chunk-E3SZTQ4K.js";
13
- import {
14
- EXIT_CODE,
15
- ensureDir,
16
- getSettingsPath,
17
- getTestRunRecordPath,
18
- getTestRunResultPath,
19
- getTestRunStderrPath,
20
- getTestRunStdoutPath,
21
- getTestRunsPath,
22
- getTestRunsRecordsPath,
23
- getTestRunsResultsPath,
24
- getTestRunsStderrPath,
25
- getTestRunsStdoutPath,
26
- pathExists,
27
- readFileIfExists,
28
- resolveGlobalPmRoot,
29
- resolvePmRoot,
30
- writeFileAtomic
31
- } from "./chunk-57NWPFF2.js";
32
-
33
- // dist/cli/commands/test-runs.js
34
- import os from "node:os";
35
-
36
- // dist/core/test/background-runs.js
37
- import fs from "node:fs/promises";
38
- import { spawn } from "node:child_process";
39
- import { createHash, randomBytes } from "node:crypto";
40
- import path from "node:path";
41
- var BACKGROUND_RUN_ACTIVE_STATUSES = /* @__PURE__ */ new Set(["queued", "running"]);
42
- var BACKGROUND_RUN_TERMINAL_STATUSES = /* @__PURE__ */ new Set(["passed", "failed", "stopped", "canceled"]);
43
- var DEFAULT_BACKGROUND_RUN_RESOURCE_SNAPSHOT_INTERVAL_MS = 3e3;
44
- var DEFAULT_BACKGROUND_RUN_FORCE_KILL_DELAY_MS = 3e3;
45
- var DEFAULT_BACKGROUND_RUN_HEARTBEAT_STALE_MS = 3e4;
46
- var DEFAULT_BACKGROUND_RUN_LOG_TAIL_LINES = 100;
47
- var PROC_STAT_TICKS_PER_SECOND = 100;
48
- function nowMs() {
49
- return Date.now();
50
- }
51
- function normalizeCommandArgs(args) {
52
- return args.map((entry) => entry.trim()).filter((entry) => entry.length > 0);
53
- }
54
- function summarizeCommandLabel(args) {
55
- const joined = args.join(" ").replaceAll(/\s+/g, " ").trim();
56
- if (joined.length <= 180) {
57
- return joined;
58
- }
59
- return `${joined.slice(0, 177)}...`;
60
- }
61
- function buildRunId() {
62
- const timePart = Date.now().toString(36);
63
- const randomPart = randomBytes(3).toString("hex");
64
- return `tr-${timePart}-${randomPart}`;
65
- }
66
- function buildBackgroundTestRunFingerprint(kind, commandArgs, pmRoot) {
67
- const payload = {
68
- kind,
69
- command: normalizeCommandArgs(commandArgs),
70
- pm_root: path.resolve(pmRoot)
71
- };
72
- return createHash("sha256").update(JSON.stringify(payload)).digest("hex");
73
- }
74
- function isPidRunning(pid) {
75
- if (!Number.isInteger(pid) || !pid || pid <= 0) {
76
- return false;
77
- }
78
- try {
79
- process.kill(pid, 0);
80
- return true;
81
- } catch (error) {
82
- const code = typeof error === "object" && error !== null && "code" in error ? error.code : void 0;
83
- return code === "EPERM";
84
- }
85
- }
86
- async function ensureBackgroundRunStorage(pmRoot) {
87
- await ensureDir(getTestRunsPath(pmRoot));
88
- await ensureDir(getTestRunsRecordsPath(pmRoot));
89
- await ensureDir(getTestRunsStdoutPath(pmRoot));
90
- await ensureDir(getTestRunsStderrPath(pmRoot));
91
- await ensureDir(getTestRunsResultsPath(pmRoot));
92
- }
93
- async function parseBackgroundRunRecord(raw, recordPath) {
94
- try {
95
- const parsed = JSON.parse(raw);
96
- if (!parsed || typeof parsed !== "object" || typeof parsed.id !== "string") {
97
- throw new Error("invalid run record payload");
98
- }
99
- return parsed;
100
- } catch (error) {
101
- throw new PmCliError(`Failed to parse background test run record at ${recordPath}: ${error instanceof Error ? error.message : String(error)}`, EXIT_CODE.GENERIC_FAILURE);
102
- }
103
- }
104
- async function writeBackgroundRunRecord(pmRoot, record) {
105
- const next = {
106
- ...record,
107
- updated_at: nowIso()
108
- };
109
- await writeFileAtomic(getTestRunRecordPath(pmRoot, record.id), `${JSON.stringify(next, null, 2)}
110
- `);
111
- }
112
- async function readBackgroundTestRunRecord(pmRoot, runId) {
113
- const recordPath = getTestRunRecordPath(pmRoot, runId);
114
- const raw = await readFileIfExists(recordPath);
115
- if (!raw) {
116
- return null;
117
- }
118
- return parseBackgroundRunRecord(raw, recordPath);
119
- }
120
- async function listBackgroundRunRecordPaths(pmRoot) {
121
- const recordsRoot = getTestRunsRecordsPath(pmRoot);
122
- if (!await pathExists(recordsRoot)) {
123
- return [];
124
- }
125
- const entries = await fs.readdir(recordsRoot, { withFileTypes: true });
126
- return entries.filter((entry) => entry.isFile() && entry.name.endsWith(".json")).map((entry) => path.join(recordsRoot, entry.name)).sort((left, right) => right.localeCompare(left));
127
- }
128
- function parseLinuxRssStatus(raw) {
129
- const match = raw.match(/^VmRSS:\s+(\d+)\s+kB$/m);
130
- if (!match) {
131
- return void 0;
132
- }
133
- return Number.parseInt(match[1], 10) * 1024;
134
- }
135
- async function readLinuxRssBytes(pid) {
136
- if (process.platform !== "linux") {
137
- return void 0;
138
- }
139
- try {
140
- const raw = await fs.readFile(`/proc/${pid}/status`, "utf8");
141
- return parseLinuxRssStatus(raw);
142
- } catch {
143
- return void 0;
144
- }
145
- }
146
- function parseLinuxCpuStat(raw) {
147
- const closeParenIndex = raw.lastIndexOf(")");
148
- if (closeParenIndex < 0) {
149
- return {};
150
- }
151
- const remainder = raw.slice(closeParenIndex + 2).trim();
152
- const parts = remainder.split(/\s+/);
153
- const utimeTicks = Number.parseInt(parts[11], 10);
154
- const stimeTicks = Number.parseInt(parts[12], 10);
155
- if (!Number.isFinite(utimeTicks) || !Number.isFinite(stimeTicks)) {
156
- return {};
157
- }
158
- return {
159
- cpu_user_seconds: utimeTicks / PROC_STAT_TICKS_PER_SECOND,
160
- cpu_system_seconds: stimeTicks / PROC_STAT_TICKS_PER_SECOND
161
- };
162
- }
163
- async function readLinuxCpuSeconds(pid) {
164
- if (process.platform !== "linux") {
165
- return {};
166
- }
167
- try {
168
- const raw = await fs.readFile(`/proc/${pid}/stat`, "utf8");
169
- return parseLinuxCpuStat(raw);
170
- } catch {
171
- return {};
172
- }
173
- }
174
- async function buildResourceSnapshot(record) {
175
- const pid = record.child_pid ?? record.worker_pid;
176
- if (!isPidRunning(pid)) {
177
- return void 0;
178
- }
179
- const rssBytes = await readLinuxRssBytes(pid);
180
- const cpu = await readLinuxCpuSeconds(pid);
181
- const startedAtMs = record.started_at ? Date.parse(record.started_at) : Number.NaN;
182
- const uptimeSeconds = Number.isFinite(startedAtMs) ? Math.max(0, (nowMs() - startedAtMs) / 1e3) : void 0;
183
- return {
184
- recorded_at: nowIso(),
185
- rss_bytes: rssBytes,
186
- cpu_user_seconds: cpu.cpu_user_seconds,
187
- cpu_system_seconds: cpu.cpu_system_seconds,
188
- uptime_seconds: uptimeSeconds
189
- };
190
- }
191
- function readCount(value) {
192
- return typeof value === "number" && Number.isFinite(value) ? value : 0;
193
- }
194
- function evaluateWorkerResult(kind, payload) {
195
- if (!payload || typeof payload !== "object") {
196
- return {
197
- summary: {
198
- passed: 0,
199
- failed: 1,
200
- skipped: 0
201
- },
202
- parsedResult: null
203
- };
204
- }
205
- const record = payload;
206
- if (kind === "test-all") {
207
- const totals = record.totals ?? {};
208
- return {
209
- summary: {
210
- items: typeof totals.items === "number" ? totals.items : void 0,
211
- linked_tests: typeof totals.linked_tests === "number" ? totals.linked_tests : void 0,
212
- passed: readCount(totals.passed),
213
- failed: readCount(totals.failed),
214
- skipped: readCount(totals.skipped),
215
- fail_on_skipped_triggered: record.fail_on_skipped_triggered === true ? true : void 0
216
- },
217
- parsedResult: payload
218
- };
219
- }
220
- const runResults = Array.isArray(record.run_results) ? record.run_results : [];
221
- let passed = 0;
222
- let failed = 0;
223
- let skipped = 0;
224
- for (const entry of runResults) {
225
- if (!entry || typeof entry !== "object") {
226
- continue;
227
- }
228
- const status = entry.status;
229
- if (status === "passed") {
230
- passed += 1;
231
- continue;
232
- }
233
- if (status === "failed") {
234
- failed += 1;
235
- continue;
236
- }
237
- skipped += 1;
238
- }
239
- return {
240
- summary: {
241
- passed,
242
- failed,
243
- skipped,
244
- fail_on_skipped_triggered: record.fail_on_skipped_triggered === true ? true : void 0
245
- },
246
- parsedResult: payload
247
- };
248
- }
249
- function parseProgressLine(stderrLine) {
250
- const line = stderrLine.trim();
251
- if (line.length === 0) {
252
- return null;
253
- }
254
- const testAllMatch = line.match(/\[pm test-all\]\s+item\s+(\d+)\/(\d+)\s+(start|end)\s+id=([^\s]+)/i);
255
- if (testAllMatch) {
256
- const itemIndex = Number.parseInt(testAllMatch[1], 10);
257
- const itemTotal = Number.parseInt(testAllMatch[2], 10);
258
- return {
259
- item_index: itemIndex,
260
- item_total: itemTotal,
261
- item_id: testAllMatch[4],
262
- linked_test_index: void 0,
263
- linked_test_total: void 0,
264
- current_command: void 0,
265
- elapsed_ms: void 0,
266
- heartbeat_at: nowIso(),
267
- phase: testAllMatch[3]?.toLowerCase() === "end" ? "finished" : "running"
268
- };
269
- }
270
- const linkedTestMatch = line.match(/\[pm test\]\s+linked-test\s+(\d+)\/(\d+)\s+(start|running|end)(?:.*elapsed_ms=(\d+))?/i);
271
- if (!linkedTestMatch) {
272
- return null;
273
- }
274
- const index = Number.parseInt(linkedTestMatch[1], 10);
275
- const total = Number.parseInt(linkedTestMatch[2], 10);
276
- const elapsed = linkedTestMatch[4] ? Number.parseInt(linkedTestMatch[4], 10) : void 0;
277
- const commandMatch = line.match(/\scommand="((?:\\.|[^"\\])*)"/);
278
- const currentCommand = commandMatch ? commandMatch[1].replaceAll('\\"', '"').replaceAll("\\\\", "\\") : void 0;
279
- return {
280
- linked_test_index: index,
281
- linked_test_total: total,
282
- current_command: currentCommand,
283
- elapsed_ms: Number.isFinite(elapsed) ? elapsed : void 0,
284
- heartbeat_at: nowIso(),
285
- phase: linkedTestMatch[3]?.toLowerCase() === "end" ? "finished" : "running"
286
- };
287
- }
288
- function splitLines(value) {
289
- return value.split(/\r?\n/).map((entry) => entry.trimEnd()).filter((entry) => entry.length > 0);
290
- }
291
- function tailLines(value, limit) {
292
- if (limit <= 0) {
293
- return [];
294
- }
295
- const lines = splitLines(value);
296
- if (lines.length <= limit) {
297
- return lines;
298
- }
299
- return lines.slice(lines.length - limit);
300
- }
301
- async function resolveBackgroundCliEntry(cwd) {
302
- const configured = process.env.PM_BACKGROUND_CLI_ENTRY?.trim();
303
- if (configured && configured.length > 0) {
304
- const resolvedConfigured = path.resolve(cwd, configured);
305
- if (await pathExists(resolvedConfigured)) {
306
- return resolvedConfigured;
307
- }
308
- }
309
- const distEntry = path.resolve(cwd, "dist", "cli.js");
310
- if (await pathExists(distEntry)) {
311
- return distEntry;
312
- }
313
- const argvEntry = process.argv[1]?.trim();
314
- if (argvEntry && argvEntry.length > 0) {
315
- const resolvedArgvEntry = path.resolve(cwd, argvEntry);
316
- if (await pathExists(resolvedArgvEntry)) {
317
- return resolvedArgvEntry;
318
- }
319
- }
320
- throw new PmCliError("Unable to resolve a CLI entrypoint for background test runs. Build the project or set PM_BACKGROUND_CLI_ENTRY.", EXIT_CODE.GENERIC_FAILURE);
321
- }
322
- async function refreshRunIfStale(pmRoot, record) {
323
- if (!BACKGROUND_RUN_ACTIVE_STATUSES.has(record.status)) {
324
- return record;
325
- }
326
- const workerAlive = isPidRunning(record.worker_pid);
327
- if (workerAlive) {
328
- return record;
329
- }
330
- if (record.finished_at) {
331
- return record;
332
- }
333
- const next = {
334
- ...record,
335
- status: "failed",
336
- finished_at: nowIso(),
337
- error: record.error ?? "Background test run worker exited before writing terminal status."
338
- };
339
- await writeBackgroundRunRecord(pmRoot, next);
340
- return next;
341
- }
342
- async function startBackgroundTestRun(options) {
343
- await ensureBackgroundRunStorage(options.pmRoot);
344
- const normalizedArgs = normalizeCommandArgs(options.commandArgs);
345
- if (normalizedArgs.length === 0) {
346
- throw new PmCliError("Background test run requires command arguments.", EXIT_CODE.USAGE);
347
- }
348
- const fingerprint = buildBackgroundTestRunFingerprint(options.kind, normalizedArgs, options.pmRoot);
349
- const existingRuns = await listBackgroundTestRuns(options.pmRoot, {});
350
- for (const existing of existingRuns) {
351
- const refreshed = await refreshRunIfStale(options.pmRoot, existing);
352
- if (refreshed.fingerprint !== fingerprint) {
353
- continue;
354
- }
355
- if (!BACKGROUND_RUN_ACTIVE_STATUSES.has(refreshed.status) || !isPidRunning(refreshed.worker_pid)) {
356
- continue;
357
- }
358
- return {
359
- started: false,
360
- run: {
361
- ...refreshed,
362
- duplicate_of: refreshed.id
363
- },
364
- duplicate_of: refreshed.id
365
- };
366
- }
367
- const runId = buildRunId();
368
- const createdAt = nowIso();
369
- const stdoutPath = getTestRunStdoutPath(options.pmRoot, runId);
370
- const stderrPath = getTestRunStderrPath(options.pmRoot, runId);
371
- const resultPath = getTestRunResultPath(options.pmRoot, runId);
372
- await fs.writeFile(stdoutPath, "", "utf8");
373
- await fs.writeFile(stderrPath, "", "utf8");
374
- const record = {
375
- id: runId,
376
- kind: options.kind,
377
- status: "queued",
378
- created_at: createdAt,
379
- updated_at: createdAt,
380
- requested_by: options.requestedBy,
381
- fingerprint,
382
- command_args: normalizedArgs,
383
- command_label: summarizeCommandLabel(normalizedArgs),
384
- pm_root: options.pmRoot,
385
- global_pm_root: options.globalPmRoot,
386
- target_id: options.targetId,
387
- status_filter: options.statusFilter,
388
- attempt: typeof options.attempt === "number" && Number.isFinite(options.attempt) && options.attempt >= 1 ? Math.floor(options.attempt) : 1,
389
- resumed_from: options.resumedFrom,
390
- resumed_by: options.resumedBy,
391
- stdout_path: stdoutPath,
392
- stderr_path: stderrPath,
393
- result_path: resultPath,
394
- progress: {
395
- phase: "queued",
396
- message: "Queued for background execution.",
397
- heartbeat_at: createdAt
398
- }
399
- };
400
- await writeBackgroundRunRecord(options.pmRoot, record);
401
- return {
402
- started: true,
403
- run: record
404
- };
405
- }
406
- async function spawnBackgroundTestRunWorker(options) {
407
- const record = await readBackgroundTestRunRecord(options.pmRoot, options.runId);
408
- if (!record) {
409
- throw new PmCliError(`Background test run ${options.runId} not found`, EXIT_CODE.NOT_FOUND);
410
- }
411
- if (BACKGROUND_RUN_TERMINAL_STATUSES.has(record.status)) {
412
- throw new PmCliError(`Background test run ${record.id} is already terminal (${record.status}).`, EXIT_CODE.CONFLICT);
413
- }
414
- const cliEntry = await resolveBackgroundCliEntry(process.cwd());
415
- const args = [];
416
- if (options.noExtensions === true) {
417
- args.push("--no-extensions");
418
- }
419
- args.push("--path", record.pm_root, "test-runs-worker", record.id);
420
- const env = {
421
- ...process.env,
422
- PM_PATH: record.pm_root,
423
- PM_GLOBAL_PATH: record.global_pm_root,
424
- PM_BACKGROUND_TEST_RUN_ID: record.id,
425
- PM_BACKGROUND_TEST_RUN_ATTEMPT: String(record.attempt),
426
- PM_BACKGROUND_TEST_RUN_RESUMED_FROM: record.resumed_from ?? "",
427
- FORCE_COLOR: "0"
428
- };
429
- const child = spawn(process.execPath, [cliEntry, ...args], {
430
- cwd: process.cwd(),
431
- env,
432
- detached: true,
433
- stdio: "ignore",
434
- windowsHide: true
435
- });
436
- child.unref();
437
- const next = {
438
- ...record,
439
- status: "queued",
440
- worker_pid: child.pid,
441
- progress: {
442
- phase: "queued",
443
- message: "Worker process started.",
444
- heartbeat_at: nowIso()
445
- }
446
- };
447
- await writeBackgroundRunRecord(options.pmRoot, next);
448
- return next;
449
- }
450
- async function appendFileOrdered(queue, filePath, text) {
451
- await queue;
452
- await fs.appendFile(filePath, text, "utf8");
453
- }
454
- function resolvePositiveEnvInteger(name, fallback) {
455
- const parsed = Number.parseInt(process.env[name] ?? "", 10);
456
- return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
457
- }
458
- function buildBackgroundWorkerEnv(record) {
459
- return {
460
- ...process.env,
461
- PM_PATH: record.pm_root,
462
- PM_GLOBAL_PATH: record.global_pm_root,
463
- FORCE_COLOR: "0"
464
- };
465
- }
466
- function buildBackgroundWorkerChildArgs(record, noExtensions) {
467
- return noExtensions ? ["--no-extensions", ...record.command_args] : [...record.command_args];
468
- }
469
- function createBackgroundRunRecordWriteScheduler(pmRoot, record) {
470
- let writeQueue = Promise.resolve();
471
- return {
472
- schedule() {
473
- writeQueue = writeQueue.then(async () => {
474
- try {
475
- await writeBackgroundRunRecord(pmRoot, record);
476
- } catch {
477
- }
478
- });
479
- },
480
- async flush() {
481
- await writeQueue;
482
- }
483
- };
484
- }
485
- function requestChildSignal(child, signal) {
486
- try {
487
- child.kill(signal);
488
- } catch {
489
- }
490
- }
491
- async function requestBackgroundWorkerStop(record, child, state, scheduleRecordWrite) {
492
- if (state.stopRequested) {
493
- return;
494
- }
495
- state.stopRequested = true;
496
- record.stop_requested_at = nowIso();
497
- record.progress = {
498
- ...record.progress,
499
- phase: "stopping",
500
- message: "Stop requested for background run.",
501
- heartbeat_at: nowIso()
502
- };
503
- scheduleRecordWrite();
504
- requestChildSignal(child, "SIGTERM");
505
- const forceTimer = setTimeout(() => requestChildSignal(child, "SIGKILL"), resolvePositiveEnvInteger("PM_BACKGROUND_RUN_FORCE_KILL_DELAY_MS", DEFAULT_BACKGROUND_RUN_FORCE_KILL_DELAY_MS));
506
- forceTimer.unref?.();
507
- }
508
- function buildItemBackgroundProgress(line, progressPatch, phase) {
509
- return {
510
- phase,
511
- message: line,
512
- heartbeat_at: nowIso(),
513
- item_index: progressPatch.item_index,
514
- item_total: progressPatch.item_total,
515
- item_id: progressPatch.item_id,
516
- linked_test_index: void 0,
517
- linked_test_total: void 0,
518
- current_command: void 0,
519
- elapsed_ms: void 0
520
- };
521
- }
522
- function buildLinkedTestBackgroundProgress(line, record, progressPatch, phase) {
523
- return {
524
- phase,
525
- message: line,
526
- heartbeat_at: nowIso(),
527
- item_index: progressPatch.item_index ?? record.progress?.item_index,
528
- item_total: progressPatch.item_total ?? record.progress?.item_total,
529
- item_id: progressPatch.item_id ?? record.progress?.item_id,
530
- linked_test_index: progressPatch.linked_test_index,
531
- linked_test_total: progressPatch.linked_test_total,
532
- current_command: progressPatch.current_command,
533
- elapsed_ms: progressPatch.elapsed_ms
534
- };
535
- }
536
- function applyBackgroundWorkerProgressLine(record, line, stopRequested) {
537
- const progressPatch = parseProgressLine(line);
538
- if (!progressPatch) {
539
- return false;
540
- }
541
- const phase = record.progress?.phase === "stopping" ? "stopping" : "running";
542
- record.progress = progressPatch.item_id ? buildItemBackgroundProgress(line, progressPatch, phase) : buildLinkedTestBackgroundProgress(line, record, progressPatch, phase);
543
- if (progressPatch.phase === "finished" && !stopRequested) {
544
- record.progress.phase = "running";
545
- }
546
- return true;
547
- }
548
- function parseBackgroundWorkerStdout(stdoutBuffer) {
549
- if (stdoutBuffer.trim().length === 0) {
550
- return null;
551
- }
552
- try {
553
- return JSON.parse(stdoutBuffer);
554
- } catch {
555
- return null;
556
- }
557
- }
558
- function resolveBackgroundWorkerFinalStatus(record, stopRequested) {
559
- if (stopRequested) {
560
- return "stopped";
561
- }
562
- const passed = record.exit_code === 0 && (record.summary?.failed ?? 0) === 0 && record.summary?.fail_on_skipped_triggered !== true;
563
- return passed ? "passed" : "failed";
564
- }
565
- function buildFinishedBackgroundProgress(record, stopRequested) {
566
- return {
567
- phase: "finished",
568
- message: stopRequested ? "Background run stopped." : `Background run finished with status=${record.status}.`,
569
- heartbeat_at: nowIso(),
570
- item_index: record.progress?.item_index,
571
- item_total: record.progress?.item_total,
572
- item_id: record.progress?.item_id,
573
- linked_test_index: record.progress?.linked_test_index,
574
- linked_test_total: record.progress?.linked_test_total,
575
- current_command: record.progress?.current_command,
576
- elapsed_ms: record.progress?.elapsed_ms
577
- };
578
- }
579
- async function writeBackgroundWorkerResult(record, parsedResult, stdoutBuffer) {
580
- if (parsedResult !== null) {
581
- await writeFileAtomic(record.result_path, `${JSON.stringify(parsedResult, null, 2)}
582
- `);
583
- return;
584
- }
585
- await writeFileAtomic(record.result_path, `${JSON.stringify({
586
- parse_error: "Background run output was not valid JSON.",
587
- stdout_excerpt: tailLines(stdoutBuffer, DEFAULT_BACKGROUND_RUN_LOG_TAIL_LINES)
588
- }, null, 2)}
589
- `);
590
- }
591
- async function runBackgroundTestRunWorker(pmRoot, runId, noExtensions = false) {
592
- const loaded = await readBackgroundTestRunRecord(pmRoot, runId);
593
- if (!loaded) {
594
- throw new PmCliError(`Background test run ${runId} not found`, EXIT_CODE.NOT_FOUND);
595
- }
596
- const record = {
597
- ...loaded,
598
- status: "running",
599
- started_at: loaded.started_at ?? nowIso(),
600
- worker_pid: process.pid,
601
- progress: {
602
- phase: "running",
603
- message: "Worker started.",
604
- heartbeat_at: nowIso()
605
- }
606
- };
607
- const cliEntry = await resolveBackgroundCliEntry(process.cwd());
608
- const env = buildBackgroundWorkerEnv(record);
609
- await writeBackgroundRunRecord(pmRoot, record);
610
- const childArgs = buildBackgroundWorkerChildArgs(record, noExtensions);
611
- const child = spawn(process.execPath, [cliEntry, ...childArgs], {
612
- cwd: process.cwd(),
613
- env,
614
- detached: false,
615
- stdio: ["ignore", "pipe", "pipe"],
616
- windowsHide: true
617
- });
618
- record.child_pid = child.pid;
619
- const recordWriteScheduler = createBackgroundRunRecordWriteScheduler(pmRoot, record);
620
- const scheduleRecordWrite = recordWriteScheduler.schedule;
621
- let stdoutWriteQueue = Promise.resolve();
622
- let stderrWriteQueue = Promise.resolve();
623
- let stdoutBuffer = "";
624
- let stderrBuffer = "";
625
- const stopState = { stopRequested: false };
626
- const onSignal = () => {
627
- void requestBackgroundWorkerStop(record, child, stopState, scheduleRecordWrite);
628
- };
629
- process.on("SIGTERM", onSignal);
630
- process.on("SIGINT", onSignal);
631
- const resourceTimer = setInterval(() => {
632
- void (async () => {
633
- record.resource = await buildResourceSnapshot(record);
634
- record.progress.heartbeat_at = nowIso();
635
- scheduleRecordWrite();
636
- })();
637
- }, resolvePositiveEnvInteger("PM_BACKGROUND_RUN_RESOURCE_INTERVAL_MS", DEFAULT_BACKGROUND_RUN_RESOURCE_SNAPSHOT_INTERVAL_MS));
638
- resourceTimer.unref?.();
639
- child.stdout?.on("data", (chunk) => {
640
- const text = chunk.toString("utf8");
641
- stdoutBuffer += text;
642
- stdoutWriteQueue = appendFileOrdered(stdoutWriteQueue, record.stdout_path, text);
643
- });
644
- child.stderr?.on("data", (chunk) => {
645
- const text = chunk.toString("utf8");
646
- stderrWriteQueue = appendFileOrdered(stderrWriteQueue, record.stderr_path, text);
647
- stderrBuffer += text;
648
- const parts = stderrBuffer.split(/\r?\n/);
649
- stderrBuffer = parts.pop();
650
- let progressChanged = false;
651
- for (const part of parts) {
652
- const line = part.trimEnd();
653
- if (line.length > 0 && applyBackgroundWorkerProgressLine(record, line, stopState.stopRequested)) {
654
- progressChanged = true;
655
- }
656
- }
657
- if (progressChanged) {
658
- scheduleRecordWrite();
659
- }
660
- });
661
- let exitCode = null;
662
- let signal = null;
663
- try {
664
- ({ code: exitCode, signal } = await new Promise((resolve) => {
665
- child.on("close", (code, closeSignal) => {
666
- resolve({ code, signal: closeSignal });
667
- });
668
- }));
669
- } finally {
670
- clearInterval(resourceTimer);
671
- process.off("SIGTERM", onSignal);
672
- process.off("SIGINT", onSignal);
673
- }
674
- await stdoutWriteQueue;
675
- await stderrWriteQueue;
676
- const trailingStderrLine = stderrBuffer.trimEnd();
677
- if (trailingStderrLine.length > 0 && applyBackgroundWorkerProgressLine(record, trailingStderrLine, stopState.stopRequested)) {
678
- scheduleRecordWrite();
679
- }
680
- stderrBuffer = "";
681
- const parsedResult = parseBackgroundWorkerStdout(stdoutBuffer);
682
- const evaluated = evaluateWorkerResult(record.kind, parsedResult);
683
- record.summary = evaluated.summary;
684
- record.exit_code = typeof exitCode === "number" ? exitCode : void 0;
685
- record.signal = signal ?? void 0;
686
- record.finished_at = nowIso();
687
- record.status = resolveBackgroundWorkerFinalStatus(record, stopState.stopRequested);
688
- record.progress = buildFinishedBackgroundProgress(record, stopState.stopRequested);
689
- record.resource = await buildResourceSnapshot(record);
690
- await writeBackgroundWorkerResult(record, parsedResult, stdoutBuffer);
691
- await writeBackgroundRunRecord(pmRoot, record);
692
- await recordWriteScheduler.flush();
693
- return record;
694
- }
695
- async function listBackgroundTestRuns(pmRoot, options) {
696
- const recordPaths = await listBackgroundRunRecordPaths(pmRoot);
697
- const runs = [];
698
- for (const recordPath of recordPaths) {
699
- const raw = await readFileIfExists(recordPath);
700
- if (!raw) {
701
- continue;
702
- }
703
- const parsed = await parseBackgroundRunRecord(raw, recordPath);
704
- runs.push(parsed);
705
- }
706
- const refreshed = [];
707
- for (const run of runs) {
708
- refreshed.push(await refreshRunIfStale(pmRoot, run));
709
- }
710
- const filtered = options.status ? refreshed.filter((entry) => entry.status === options.status) : refreshed;
711
- const sorted = filtered.sort((left, right) => {
712
- const byUpdated = Date.parse(right.updated_at) - Date.parse(left.updated_at);
713
- if (Number.isFinite(byUpdated) && byUpdated !== 0) {
714
- return byUpdated;
715
- }
716
- return right.id.localeCompare(left.id);
717
- });
718
- const limit = typeof options.limit === "number" && options.limit >= 0 ? options.limit : void 0;
719
- return limit === void 0 ? sorted : sorted.slice(0, limit);
720
- }
721
- async function getBackgroundTestRunStatus(pmRoot, runId) {
722
- const loaded = await readBackgroundTestRunRecord(pmRoot, runId);
723
- if (!loaded) {
724
- throw new PmCliError(`Background test run ${runId} not found`, EXIT_CODE.NOT_FOUND);
725
- }
726
- const refreshed = await refreshRunIfStale(pmRoot, loaded);
727
- const workerAlive = isPidRunning(refreshed.worker_pid);
728
- const childAlive = isPidRunning(refreshed.child_pid);
729
- if (refreshed.status === "running" && !childAlive && !refreshed.finished_at && !workerAlive) {
730
- refreshed.status = "failed";
731
- refreshed.finished_at = nowIso();
732
- refreshed.error = refreshed.error ?? "Background run process exited unexpectedly.";
733
- await writeBackgroundRunRecord(pmRoot, refreshed);
734
- }
735
- if (refreshed.status === "running") {
736
- refreshed.resource = await buildResourceSnapshot(refreshed);
737
- await writeBackgroundRunRecord(pmRoot, refreshed);
738
- }
739
- const heartbeatAt = refreshed.progress?.heartbeat_at;
740
- const heartbeatAtMs = heartbeatAt ? Date.parse(heartbeatAt) : Number.NaN;
741
- const lagMs = Number.isFinite(heartbeatAtMs) ? Math.max(0, nowMs() - heartbeatAtMs) : void 0;
742
- const staleMs = Number.parseInt(process.env.PM_BACKGROUND_RUN_HEARTBEAT_STALE_MS ?? "", 10);
743
- const staleThresholdMs = Number.isFinite(staleMs) && staleMs > 0 ? staleMs : DEFAULT_BACKGROUND_RUN_HEARTBEAT_STALE_MS;
744
- const healthState = refreshed.status === "running" ? lagMs !== void 0 && lagMs > staleThresholdMs ? "stale" : "healthy" : "inactive";
745
- return {
746
- run: refreshed,
747
- health: {
748
- state: healthState,
749
- last_heartbeat_at: heartbeatAt,
750
- heartbeat_lag_ms: lagMs,
751
- worker_alive: workerAlive,
752
- child_alive: childAlive
753
- }
754
- };
755
- }
756
- function sendBackgroundRunStopSignal(record, force) {
757
- const signal = force ? "SIGKILL" : "SIGTERM";
758
- if (!isPidRunning(record.worker_pid) || !record.worker_pid) {
759
- return "none";
760
- }
761
- try {
762
- process.kill(record.worker_pid, signal);
763
- return signal;
764
- } catch {
765
- return "none";
766
- }
767
- }
768
- function buildStoppingBackgroundProgress(record, signalSent) {
769
- return {
770
- phase: "stopping",
771
- message: signalSent === "none" ? "Run marked stopped." : `Stop requested via ${signalSent}.`,
772
- heartbeat_at: nowIso(),
773
- item_index: record.progress?.item_index,
774
- item_total: record.progress?.item_total,
775
- item_id: record.progress?.item_id,
776
- linked_test_index: record.progress?.linked_test_index,
777
- linked_test_total: record.progress?.linked_test_total,
778
- current_command: record.progress?.current_command,
779
- elapsed_ms: record.progress?.elapsed_ms
780
- };
781
- }
782
- async function stopBackgroundTestRun(pmRoot, runId, force = false) {
783
- const loaded = await readBackgroundTestRunRecord(pmRoot, runId);
784
- if (!loaded) {
785
- throw new PmCliError(`Background test run ${runId} not found`, EXIT_CODE.NOT_FOUND);
786
- }
787
- const refreshed = await refreshRunIfStale(pmRoot, loaded);
788
- if (BACKGROUND_RUN_TERMINAL_STATUSES.has(refreshed.status)) {
789
- return {
790
- run: refreshed,
791
- signal_sent: "none"
792
- };
793
- }
794
- const signalSent = sendBackgroundRunStopSignal(refreshed, force);
795
- if (signalSent === "none") {
796
- refreshed.status = "stopped";
797
- refreshed.finished_at = refreshed.finished_at ?? nowIso();
798
- }
799
- refreshed.stop_requested_at = nowIso();
800
- refreshed.progress = buildStoppingBackgroundProgress(refreshed, signalSent);
801
- await writeBackgroundRunRecord(pmRoot, refreshed);
802
- return {
803
- run: refreshed,
804
- signal_sent: signalSent
805
- };
806
- }
807
- async function resumeBackgroundTestRun(pmRoot, runId, requestedBy, noExtensions = false) {
808
- const loaded = await readBackgroundTestRunRecord(pmRoot, runId);
809
- if (!loaded) {
810
- throw new PmCliError(`Background test run ${runId} not found`, EXIT_CODE.NOT_FOUND);
811
- }
812
- const refreshed = await refreshRunIfStale(pmRoot, loaded);
813
- if (!BACKGROUND_RUN_TERMINAL_STATUSES.has(refreshed.status)) {
814
- throw new PmCliError(`Background test run ${runId} is not terminal and cannot be resumed.`, EXIT_CODE.CONFLICT);
815
- }
816
- const started = await startBackgroundTestRun({
817
- pmRoot: refreshed.pm_root,
818
- globalPmRoot: refreshed.global_pm_root,
819
- kind: refreshed.kind,
820
- commandArgs: refreshed.command_args,
821
- requestedBy,
822
- targetId: refreshed.target_id,
823
- statusFilter: refreshed.status_filter,
824
- resumedFrom: refreshed.id,
825
- resumedBy: requestedBy,
826
- attempt: refreshed.attempt + 1
827
- });
828
- if (!started.started) {
829
- return started.run;
830
- }
831
- const spawned = await spawnBackgroundTestRunWorker({
832
- pmRoot,
833
- runId: started.run.id,
834
- noExtensions
835
- });
836
- const prior = {
837
- ...refreshed,
838
- resumed_by: spawned.id
839
- };
840
- await writeBackgroundRunRecord(pmRoot, prior);
841
- return spawned;
842
- }
843
- async function readBackgroundTestRunLogs(pmRoot, runId, stream, tail) {
844
- const loaded = await readBackgroundTestRunRecord(pmRoot, runId);
845
- if (!loaded) {
846
- throw new PmCliError(`Background test run ${runId} not found`, EXIT_CODE.NOT_FOUND);
847
- }
848
- const resolvedTail = typeof tail === "number" && Number.isFinite(tail) && tail >= 0 ? Math.floor(tail) : DEFAULT_BACKGROUND_RUN_LOG_TAIL_LINES;
849
- const stdoutRaw = stream === "stdout" || stream === "both" ? await readFileIfExists(loaded.stdout_path) ?? "" : "";
850
- const stderrRaw = stream === "stderr" || stream === "both" ? await readFileIfExists(loaded.stderr_path) ?? "" : "";
851
- return {
852
- run: loaded,
853
- stream,
854
- tail: resolvedTail,
855
- stdout: stream === "stdout" || stream === "both" ? tailLines(stdoutRaw, resolvedTail) : [],
856
- stderr: stream === "stderr" || stream === "both" ? tailLines(stderrRaw, resolvedTail) : []
857
- };
858
- }
859
-
860
- // dist/cli/commands/test-runs.js
861
- var BACKGROUND_STATUS_VALUES = ["queued", "running", "passed", "failed", "stopped", "canceled"];
862
- var BACKGROUND_STREAM_VALUES = ["stdout", "stderr", "both"];
863
- function normalizeStatus(value) {
864
- if (value === void 0) {
865
- return void 0;
866
- }
867
- const normalized = value.trim().toLowerCase();
868
- if (BACKGROUND_STATUS_VALUES.includes(normalized)) {
869
- return normalized;
870
- }
871
- throw new PmCliError(`Invalid --status value "${value}"`, EXIT_CODE.USAGE);
872
- }
873
- function normalizeStream(value) {
874
- if (value === void 0 || value.trim().length === 0) {
875
- return "stderr";
876
- }
877
- const normalized = value.trim().toLowerCase();
878
- if (BACKGROUND_STREAM_VALUES.includes(normalized)) {
879
- return normalized;
880
- }
881
- throw new PmCliError(`Invalid --stream value "${value}"`, EXIT_CODE.USAGE);
882
- }
883
- function resolveWhoamiFallback() {
884
- try {
885
- const username = os.userInfo().username.trim();
886
- if (username.length > 0) {
887
- return username;
888
- }
889
- } catch {
890
- }
891
- return void 0;
892
- }
893
- function resolveRequestedBy(author, fallback) {
894
- const candidates = [
895
- author,
896
- process.env.PM_AUTHOR,
897
- fallback,
898
- process.env.USER,
899
- process.env.LOGNAME,
900
- process.env.USERNAME,
901
- resolveWhoamiFallback()
902
- ];
903
- for (const candidate of candidates) {
904
- if (typeof candidate !== "string") {
905
- continue;
906
- }
907
- const trimmed = candidate.trim();
908
- if (trimmed.length > 0) {
909
- return trimmed;
910
- }
911
- }
912
- return "unknown";
913
- }
914
- async function ensureInitialized(pmRoot) {
915
- if (!await pathExists(getSettingsPath(pmRoot))) {
916
- throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
917
- }
918
- }
919
- async function runStartBackgroundRun(options, global) {
920
- const pmRoot = resolvePmRoot(process.cwd(), global.path);
921
- const globalPmRoot = resolveGlobalPmRoot(process.cwd());
922
- await ensureInitialized(pmRoot);
923
- const settings = await readSettings(pmRoot);
924
- const requestedBy = resolveRequestedBy(options.author, settings.author_default);
925
- const started = await startBackgroundTestRun({
926
- pmRoot,
927
- globalPmRoot,
928
- kind: options.kind,
929
- commandArgs: options.commandArgs,
930
- requestedBy,
931
- targetId: options.targetId,
932
- statusFilter: options.statusFilter
933
- });
934
- if (!started.started) {
935
- return {
936
- started: false,
937
- duplicate_of: started.duplicate_of,
938
- run: started.run
939
- };
940
- }
941
- const spawned = await spawnBackgroundTestRunWorker({
942
- pmRoot,
943
- runId: started.run.id,
944
- noExtensions: options.noExtensions === true
945
- });
946
- return {
947
- started: true,
948
- run: spawned
949
- };
950
- }
951
- async function runTestRunsList(options, global) {
952
- const pmRoot = resolvePmRoot(process.cwd(), global.path);
953
- await ensureInitialized(pmRoot);
954
- const status = normalizeStatus(options.status);
955
- const limit = parseLimit(options.limit, "limit");
956
- const runs = await listBackgroundTestRuns(pmRoot, { status, limit });
957
- return {
958
- runs,
959
- count: runs.length,
960
- filters: {
961
- status,
962
- limit
963
- }
964
- };
965
- }
966
- async function runTestRunsStatus(runId, global) {
967
- const pmRoot = resolvePmRoot(process.cwd(), global.path);
968
- await ensureInitialized(pmRoot);
969
- const status = await getBackgroundTestRunStatus(pmRoot, runId);
970
- return {
971
- run: status.run,
972
- health: status.health
973
- };
974
- }
975
- async function runTestRunsLogs(runId, options, global) {
976
- const pmRoot = resolvePmRoot(process.cwd(), global.path);
977
- await ensureInitialized(pmRoot);
978
- const stream = normalizeStream(options.stream);
979
- const tail = parseLimit(options.tail, "tail");
980
- const logs = await readBackgroundTestRunLogs(pmRoot, runId, stream, tail);
981
- return {
982
- run: logs.run,
983
- stream: logs.stream,
984
- tail: logs.tail,
985
- stdout: logs.stdout,
986
- stderr: logs.stderr
987
- };
988
- }
989
- async function runTestRunsStop(runId, options, global) {
990
- const pmRoot = resolvePmRoot(process.cwd(), global.path);
991
- await ensureInitialized(pmRoot);
992
- const stopped = await stopBackgroundTestRun(pmRoot, runId, options.force === true);
993
- return {
994
- run: stopped.run,
995
- signal_sent: stopped.signal_sent
996
- };
997
- }
998
- async function runTestRunsResume(runId, options, global) {
999
- const pmRoot = resolvePmRoot(process.cwd(), global.path);
1000
- await ensureInitialized(pmRoot);
1001
- const settings = await readSettings(pmRoot);
1002
- const requestedBy = resolveRequestedBy(options.author, settings.author_default);
1003
- const resumed = await resumeBackgroundTestRun(pmRoot, runId, requestedBy, options.noExtensions === true);
1004
- return {
1005
- resumed_from: runId,
1006
- run: resumed
1007
- };
1008
- }
1009
- async function runTestRunsWorker(runId, global) {
1010
- const pmRoot = resolvePmRoot(process.cwd(), global.path);
1011
- await ensureInitialized(pmRoot);
1012
- const finished = await runBackgroundTestRunWorker(pmRoot, runId, global.noExtensions === true);
1013
- return {
1014
- id: finished.id,
1015
- status: finished.status,
1016
- exit_code: finished.exit_code
1017
- };
1018
- }
1019
-
1020
- export {
1021
- runStartBackgroundRun,
1022
- runTestRunsList,
1023
- runTestRunsStatus,
1024
- runTestRunsLogs,
1025
- runTestRunsStop,
1026
- runTestRunsResume,
1027
- runTestRunsWorker
1028
- };
1029
- //# sourceMappingURL=chunk-MFAZSEM5.js.map
1030
-
1031
- //# debugId=06f25e42-4a55-5490-b7f5-780bc79db731