@unbrained/pm-cli 2026.7.3 → 2026.7.5
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.
- package/CHANGELOG.md +36 -0
- package/CONTRIBUTING.md +36 -7
- package/README.md +1 -9
- package/dist/cli/commands/calendar.d.ts +3 -2
- package/dist/cli/commands/calendar.js +5 -5
- package/dist/cli/commands/calendar.js.map +1 -1
- package/dist/cli/commands/claim.js +17 -3
- package/dist/cli/commands/claim.js.map +1 -1
- package/dist/cli/commands/close.js +34 -16
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/completion.js +231 -345
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/copy.js +3 -3
- package/dist/cli/commands/copy.js.map +1 -1
- package/dist/cli/commands/create.d.ts +9 -59
- package/dist/cli/commands/create.js +162 -132
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/extension/bundled-catalog.d.ts +6 -0
- package/dist/cli/commands/extension/bundled-catalog.js +15 -2
- package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
- package/dist/cli/commands/extension/describe.d.ts +6 -3
- package/dist/cli/commands/extension/describe.js +21 -9
- package/dist/cli/commands/extension/describe.js.map +1 -1
- package/dist/cli/commands/extension/doctor.d.ts +0 -4
- package/dist/cli/commands/extension/doctor.js +3 -3
- package/dist/cli/commands/extension/doctor.js.map +1 -1
- package/dist/cli/commands/extension/scaffold.js +59 -133
- package/dist/cli/commands/extension/scaffold.js.map +1 -1
- package/dist/cli/commands/extension/shared.d.ts +2 -7
- package/dist/cli/commands/extension/shared.js +4 -10
- package/dist/cli/commands/extension/shared.js.map +1 -1
- package/dist/cli/commands/extension.js +33 -8
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/files.js +3 -3
- package/dist/cli/commands/files.js.map +1 -1
- package/dist/cli/commands/history-compact.js +9 -18
- package/dist/cli/commands/history-compact.js.map +1 -1
- package/dist/cli/commands/history-repair.js +9 -19
- package/dist/cli/commands/history-repair.js.map +1 -1
- package/dist/cli/commands/init-agent-guidance.js +133 -97
- package/dist/cli/commands/init-agent-guidance.js.map +1 -1
- package/dist/cli/commands/init.js +3 -3
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/item-filter-options.d.ts +2 -0
- package/dist/cli/commands/item-filter-options.js +2 -2
- package/dist/cli/commands/item-filter-options.js.map +1 -1
- package/dist/cli/commands/mutation-command-options.d.ts +78 -0
- package/dist/cli/commands/mutation-command-options.js +10 -0
- package/dist/cli/commands/mutation-command-options.js.map +1 -0
- package/dist/cli/commands/profile.js +3 -3
- package/dist/cli/commands/profile.js.map +1 -1
- package/dist/cli/commands/reindex.js +4 -4
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/restore.js +3 -3
- package/dist/cli/commands/restore.js.map +1 -1
- package/dist/cli/commands/schema.js +10 -10
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/shared-unset-fields.d.ts +19 -0
- package/dist/cli/commands/shared-unset-fields.js +31 -2
- package/dist/cli/commands/shared-unset-fields.js.map +1 -1
- package/dist/cli/commands/update.d.ts +2 -59
- package/dist/cli/commands/update.js +29 -98
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/validate.js +4 -4
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/error-guidance.js +107 -7
- package/dist/cli/error-guidance.js.map +1 -1
- package/dist/cli/main.d.ts +6 -2
- package/dist/cli/main.js +33 -12
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/register-list-query.js +4 -2
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/registration-helpers.js +12 -6
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/chunks/activity-4XQIDNM5.js +18 -0
- package/dist/cli-bundle/chunks/{activity-5YWLSPGE.js → activity-YKAKZTZ4.js} +11 -9
- package/dist/cli-bundle/chunks/{aggregate-2V2M3JZU.js → aggregate-EQX2RGB7.js} +16 -13
- package/dist/cli-bundle/chunks/{aggregate-2V2M3JZU.js.map → aggregate-EQX2RGB7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{aggregate-EK7DXML7.js → aggregate-PEGZGJXD.js} +18 -15
- package/dist/cli-bundle/chunks/{aggregate-EK7DXML7.js.map → aggregate-PEGZGJXD.js.map} +1 -1
- package/dist/cli-bundle/chunks/{append-EZESUVJT.js → append-CZGUZ45Q.js} +11 -8
- package/dist/cli-bundle/chunks/{append-EZESUVJT.js.map → append-CZGUZ45Q.js.map} +1 -1
- package/dist/cli-bundle/chunks/{append-JFG4WQMG.js → append-NSQBCXZJ.js} +13 -10
- package/dist/cli-bundle/chunks/{append-JFG4WQMG.js.map → append-NSQBCXZJ.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-3JZNEQBA.js +1413 -0
- package/dist/cli-bundle/chunks/chunk-3JZNEQBA.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-NOIEVOK5.js → chunk-3PL6LEKP.js} +16 -14
- package/dist/cli-bundle/chunks/{chunk-NOIEVOK5.js.map → chunk-3PL6LEKP.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-6KRFL33E.js → chunk-3U3VEWK6.js} +277 -119
- package/dist/cli-bundle/chunks/chunk-3U3VEWK6.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-Z5F6XZXE.js → chunk-3Y4OESPP.js} +14 -12
- package/dist/cli-bundle/chunks/{chunk-Z5F6XZXE.js.map → chunk-3Y4OESPP.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-HB4FAT3O.js → chunk-4LRVSBO6.js} +21 -15
- package/dist/cli-bundle/chunks/chunk-4LRVSBO6.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-T3P7PMZP.js → chunk-4OFLJHX6.js} +7 -5
- package/dist/cli-bundle/chunks/{chunk-T3P7PMZP.js.map → chunk-4OFLJHX6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-JPATY4SE.js → chunk-4QQ6PM7M.js} +45 -557
- package/dist/cli-bundle/chunks/chunk-4QQ6PM7M.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-6CDCWKSX.js → chunk-53BTLLAF.js} +68 -331
- package/dist/cli-bundle/chunks/chunk-53BTLLAF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-4WB6S4YX.js → chunk-57C2RLW5.js} +277 -112
- package/dist/cli-bundle/chunks/chunk-57C2RLW5.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-PULUSQAV.js → chunk-5B3X4Y22.js} +52 -63
- package/dist/cli-bundle/chunks/{chunk-PULUSQAV.js.map → chunk-5B3X4Y22.js.map} +3 -3
- package/dist/cli-bundle/chunks/{chunk-7LYO6S5A.js → chunk-5J2XPTAD.js} +10 -8
- package/dist/cli-bundle/chunks/{chunk-7LYO6S5A.js.map → chunk-5J2XPTAD.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-QCDTQCMW.js → chunk-5JE6SMYS.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-MHRS5FUX.js → chunk-5JZ7APJU.js} +153 -108
- package/dist/cli-bundle/chunks/chunk-5JZ7APJU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-KHVGM5CS.js → chunk-5VVUKE3U.js} +544 -2368
- package/dist/cli-bundle/chunks/chunk-5VVUKE3U.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-RJH5VQHW.js → chunk-75U6M5ZD.js} +22 -16
- package/dist/cli-bundle/chunks/chunk-75U6M5ZD.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-7C2O74AE.js +23 -0
- package/dist/cli-bundle/chunks/chunk-7C2O74AE.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-ZFTKYWIF.js → chunk-7EQNAZX2.js} +14 -12
- package/dist/cli-bundle/chunks/{chunk-ZFTKYWIF.js.map → chunk-7EQNAZX2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-Z4DGFQDH.js → chunk-7LQKVMPA.js} +14 -4
- package/dist/cli-bundle/chunks/chunk-7LQKVMPA.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ERG65A2L.js → chunk-7MDXZAZS.js} +29 -7
- package/dist/cli-bundle/chunks/chunk-7MDXZAZS.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OGLGI22K.js → chunk-7QH7DHUB.js} +74 -8
- package/dist/cli-bundle/chunks/chunk-7QH7DHUB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-JBZ2NTKX.js → chunk-7WYXBPYQ.js} +7 -5
- package/dist/cli-bundle/chunks/{chunk-JBZ2NTKX.js.map → chunk-7WYXBPYQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-AAEQMOC6.js +150 -0
- package/dist/cli-bundle/chunks/chunk-AAEQMOC6.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-K5DT2YKM.js → chunk-ABRA3BHY.js} +18 -16
- package/dist/cli-bundle/chunks/{chunk-K5DT2YKM.js.map → chunk-ABRA3BHY.js.map} +2 -2
- package/dist/cli-bundle/chunks/chunk-B5KXLBSJ.js +47 -0
- package/dist/cli-bundle/chunks/chunk-B5KXLBSJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-7CLLC75T.js → chunk-BFVHCAOO.js} +9 -7
- package/dist/cli-bundle/chunks/{chunk-7CLLC75T.js.map → chunk-BFVHCAOO.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MDHWWBNZ.js → chunk-BVEUCSH2.js} +6 -4
- package/dist/cli-bundle/chunks/{chunk-MDHWWBNZ.js.map → chunk-BVEUCSH2.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-C3PMDWGX.js +160 -0
- package/dist/cli-bundle/chunks/chunk-C3PMDWGX.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-T4XBKJ3F.js → chunk-D3UCE7RW.js} +7 -5
- package/dist/cli-bundle/chunks/{chunk-T4XBKJ3F.js.map → chunk-D3UCE7RW.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js +275 -0
- package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-DLQ4ZTCU.js +634 -0
- package/dist/cli-bundle/chunks/chunk-DLQ4ZTCU.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-AJHYQCBJ.js → chunk-DRBV5UC2.js} +8 -23
- package/dist/cli-bundle/chunks/chunk-DRBV5UC2.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-NZ7QIUP5.js → chunk-E2FUG6GD.js} +67 -351
- package/dist/cli-bundle/chunks/chunk-E2FUG6GD.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-4PFVUUYV.js → chunk-EEY54JMF.js} +5 -3
- package/dist/cli-bundle/chunks/{chunk-4PFVUUYV.js.map → chunk-EEY54JMF.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-3W2HJKJX.js → chunk-EZFKWSC7.js} +94 -16
- package/dist/cli-bundle/chunks/{chunk-3W2HJKJX.js.map → chunk-EZFKWSC7.js.map} +4 -4
- package/dist/cli-bundle/chunks/{chunk-F6WNBITZ.js → chunk-FDBARR33.js} +40 -19
- package/dist/cli-bundle/chunks/{chunk-F6WNBITZ.js.map → chunk-FDBARR33.js.map} +3 -3
- package/dist/cli-bundle/chunks/{chunk-WRYERRZX.js → chunk-FGQKEDE4.js} +36 -12
- package/dist/cli-bundle/chunks/chunk-FGQKEDE4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-CXR3CMBQ.js → chunk-FJRKQREY.js} +10 -18
- package/dist/cli-bundle/chunks/chunk-FJRKQREY.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-QNNQAAZ5.js → chunk-FUM6UMY4.js} +10 -11
- package/dist/cli-bundle/chunks/{chunk-QNNQAAZ5.js.map → chunk-FUM6UMY4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-TQ6AX5SQ.js → chunk-GIWXVMZ3.js} +140 -334
- package/dist/cli-bundle/chunks/chunk-GIWXVMZ3.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-FZJM2TXF.js → chunk-HBYZDSK5.js} +19 -17
- package/dist/cli-bundle/chunks/{chunk-FZJM2TXF.js.map → chunk-HBYZDSK5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-5IZUBZBR.js → chunk-HJE4JTKQ.js} +6 -4
- package/dist/cli-bundle/chunks/{chunk-5IZUBZBR.js.map → chunk-HJE4JTKQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-YSDFIY7N.js → chunk-HK72NWAD.js} +89 -18
- package/dist/cli-bundle/chunks/chunk-HK72NWAD.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-LBE5QFMZ.js → chunk-IJ6CO3JV.js} +41 -20
- package/dist/cli-bundle/chunks/{chunk-LBE5QFMZ.js.map → chunk-IJ6CO3JV.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-YF746GTH.js → chunk-JFCVQXZX.js} +139 -326
- package/dist/cli-bundle/chunks/chunk-JFCVQXZX.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-A3OQ7TFW.js → chunk-JLA7EVYV.js} +12 -10
- package/dist/cli-bundle/chunks/{chunk-A3OQ7TFW.js.map → chunk-JLA7EVYV.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-K32L7HZO.js +76 -0
- package/dist/cli-bundle/chunks/chunk-K32L7HZO.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-32IUNTG4.js → chunk-K3AGVXSF.js} +37 -13
- package/dist/cli-bundle/chunks/chunk-K3AGVXSF.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js +79 -0
- package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-KGHH652T.js +44 -0
- package/dist/cli-bundle/chunks/chunk-KGHH652T.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-KL22PY6L.js +915 -0
- package/dist/cli-bundle/chunks/chunk-KL22PY6L.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-BI4R7HI2.js → chunk-KLG4ZULO.js} +12 -10
- package/dist/cli-bundle/chunks/{chunk-BI4R7HI2.js.map → chunk-KLG4ZULO.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-XRYSCRZR.js → chunk-LEKT4K7I.js} +74 -8
- package/dist/cli-bundle/chunks/chunk-LEKT4K7I.js.map +7 -0
- package/dist/cli-bundle/chunks/{contracts-X74F2GSM.js → chunk-MNZ7DRNC.js} +13 -10
- package/dist/cli-bundle/chunks/{contracts-X74F2GSM.js.map → chunk-MNZ7DRNC.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-4EXFFP7T.js → chunk-MTTXDAK4.js} +206 -147
- package/dist/cli-bundle/chunks/chunk-MTTXDAK4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-KEZOIPCR.js → chunk-MZ7VNEVY.js} +8 -6
- package/dist/cli-bundle/chunks/{chunk-KEZOIPCR.js.map → chunk-MZ7VNEVY.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-5JIWFWOZ.js → chunk-N6DNM2FA.js} +2 -2
- package/dist/cli-bundle/chunks/{test-runs-QIR5MJPL.js → chunk-N7X4WP6L.js} +11 -8
- package/dist/cli-bundle/chunks/{test-runs-QIR5MJPL.js.map → chunk-N7X4WP6L.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-U3S2B7TA.js → chunk-NBFCNJ7Q.js} +206 -147
- package/dist/cli-bundle/chunks/chunk-NBFCNJ7Q.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-GVJE5T7Q.js → chunk-NER3KUUS.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js +20 -0
- package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-OBA2WH65.js +918 -0
- package/dist/cli-bundle/chunks/chunk-OBA2WH65.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-YPWUSH72.js → chunk-OESSOFJ4.js} +14 -12
- package/dist/cli-bundle/chunks/{chunk-YPWUSH72.js.map → chunk-OESSOFJ4.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js +238 -0
- package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-FUFFPIYA.js → chunk-OWTIRHX4.js} +28 -6
- package/dist/cli-bundle/chunks/chunk-OWTIRHX4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-Z7RPDF2Y.js → chunk-P3VRG72Q.js} +10 -8
- package/dist/cli-bundle/chunks/{chunk-Z7RPDF2Y.js.map → chunk-P3VRG72Q.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-P5TFTLWW.js +1423 -0
- package/dist/cli-bundle/chunks/chunk-P5TFTLWW.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-P5YORJRH.js +1977 -0
- package/dist/cli-bundle/chunks/chunk-P5YORJRH.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-MEZZZBYX.js → chunk-PDXT6Q55.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-EJ2OCBHF.js → chunk-PJ3A56YF.js} +46 -537
- package/dist/cli-bundle/chunks/chunk-PJ3A56YF.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-runs-MG5VIGSK.js → chunk-PPAJG4GB.js} +13 -10
- package/dist/cli-bundle/chunks/{test-runs-MG5VIGSK.js.map → chunk-PPAJG4GB.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-572FKBRL.js → chunk-PPE4YUQM.js} +1725 -1663
- package/dist/cli-bundle/chunks/chunk-PPE4YUQM.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ER4ME5U2.js → chunk-QHZO65XW.js} +8 -6
- package/dist/cli-bundle/chunks/{chunk-ER4ME5U2.js.map → chunk-QHZO65XW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-T6AXEBOP.js → chunk-R3ZBLGTC.js} +9 -10
- package/dist/cli-bundle/chunks/{chunk-T6AXEBOP.js.map → chunk-R3ZBLGTC.js.map} +2 -2
- package/dist/cli-bundle/chunks/chunk-RCT3YJOK.js +624 -0
- package/dist/cli-bundle/chunks/chunk-RCT3YJOK.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-YVKZ3ANP.js → chunk-RX3HQSYG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-LOWVNZBZ.js → chunk-S4APD35C.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-FH2H3CBD.js → chunk-S5AYOUT5.js} +8 -6
- package/dist/cli-bundle/chunks/{chunk-FH2H3CBD.js.map → chunk-S5AYOUT5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SYE6WMV6.js → chunk-STPSZ2XY.js} +19 -744
- package/dist/cli-bundle/chunks/chunk-STPSZ2XY.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-6NYJGMTY.js → chunk-T35XLYZF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-P5L7Z2O6.js → chunk-T3ABIMGW.js} +5 -3
- package/dist/cli-bundle/chunks/{chunk-P5L7Z2O6.js.map → chunk-T3ABIMGW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SU2E4AWU.js → chunk-T3F4DF23.js} +16 -14
- package/dist/cli-bundle/chunks/{chunk-SU2E4AWU.js.map → chunk-T3F4DF23.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-T4MX77AK.js +272 -0
- package/dist/cli-bundle/chunks/chunk-T4MX77AK.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js +5354 -0
- package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ECU6MMTQ.js → chunk-TSPKZRRW.js} +50 -116
- package/dist/cli-bundle/chunks/chunk-TSPKZRRW.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-BE2SR6QL.js → chunk-TT42JUMF.js} +4 -4
- package/dist/cli-bundle/chunks/chunk-UHKX7I75.js +165 -0
- package/dist/cli-bundle/chunks/chunk-UHKX7I75.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-RAHINBVP.js → chunk-UI5BJ6DO.js} +1339 -1277
- package/dist/cli-bundle/chunks/chunk-UI5BJ6DO.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-US3T3W5J.js +1932 -0
- package/dist/cli-bundle/chunks/chunk-US3T3W5J.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js +175 -0
- package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-B4O5S7I3.js → chunk-VUHVWI4C.js} +13 -3
- package/dist/cli-bundle/chunks/chunk-VUHVWI4C.js.map +7 -0
- package/dist/cli-bundle/chunks/{contracts-L6ODXNUM.js → chunk-VZIYHZDX.js} +11 -8
- package/dist/cli-bundle/chunks/{contracts-L6ODXNUM.js.map → chunk-VZIYHZDX.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-U5TR4N7J.js → chunk-WISPVC2E.js} +9 -7
- package/dist/cli-bundle/chunks/{chunk-U5TR4N7J.js.map → chunk-WISPVC2E.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js +5434 -0
- package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-HQAF23Q2.js → chunk-XQCG2JGW.js} +17 -749
- package/dist/cli-bundle/chunks/chunk-XQCG2JGW.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-Y76TWC45.js +550 -0
- package/dist/cli-bundle/chunks/chunk-Y76TWC45.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-L4SLHV6G.js → chunk-YD5FML7K.js} +464 -2239
- package/dist/cli-bundle/chunks/chunk-YD5FML7K.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-YSGTMDWC.js → chunk-YFIE7YK6.js} +7 -5
- package/dist/cli-bundle/chunks/{chunk-YSGTMDWC.js.map → chunk-YFIE7YK6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-WYOIIFSE.js → chunk-YMABYTNG.js} +49 -115
- package/dist/cli-bundle/chunks/chunk-YMABYTNG.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-SU3TB4NS.js → chunk-YOF5VPKM.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-WJA3PXW7.js → chunk-YPPVU5GX.js} +11 -9
- package/dist/cli-bundle/chunks/{chunk-WJA3PXW7.js.map → chunk-YPPVU5GX.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-GUYNUXQT.js → chunk-YQMMMONE.js} +6 -4
- package/dist/cli-bundle/chunks/{chunk-GUYNUXQT.js.map → chunk-YQMMMONE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-AIKU3IIL.js → chunk-YSAH5FY5.js} +16 -14
- package/dist/cli-bundle/chunks/{chunk-AIKU3IIL.js.map → chunk-YSAH5FY5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-KS6ATO47.js → chunk-YZIR4R3U.js} +153 -108
- package/dist/cli-bundle/chunks/chunk-YZIR4R3U.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-LCWQP6NM.js → chunk-Z2CRRZYF.js} +14 -12
- package/dist/cli-bundle/chunks/{chunk-LCWQP6NM.js.map → chunk-Z2CRRZYF.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-ZAHXPXVY.js +533 -0
- package/dist/cli-bundle/chunks/chunk-ZAHXPXVY.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-UMNQZS4H.js → chunk-ZCJAA3JK.js} +8 -6
- package/dist/cli-bundle/chunks/{chunk-UMNQZS4H.js.map → chunk-ZCJAA3JK.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-EQURFOMH.js → chunk-ZD34OFFQ.js} +5 -3
- package/dist/cli-bundle/chunks/{chunk-EQURFOMH.js.map → chunk-ZD34OFFQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-67LARBDL.js → chunk-ZJB3UV5U.js} +54 -58
- package/dist/cli-bundle/chunks/chunk-ZJB3UV5U.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-5E7N4T2Z.js → chunk-ZMD35NYG.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js +241 -0
- package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{claim-5GU7OE67.js → claim-4DROPSIS.js} +30 -13
- package/dist/cli-bundle/chunks/claim-4DROPSIS.js.map +1 -0
- package/dist/cli-bundle/chunks/{claim-2BGBGSVI.js → claim-VX54TV5U.js} +29 -12
- package/dist/cli-bundle/chunks/claim-VX54TV5U.js.map +7 -0
- package/dist/cli-bundle/chunks/{close-AFVKPR57.js → close-3YRR3XY6.js} +9 -7
- package/dist/cli-bundle/chunks/close-OB2Y4QP5.js +16 -0
- package/dist/cli-bundle/chunks/{close-many-JKUJMHLG.js → close-many-AP4MWU36.js} +21 -18
- package/dist/cli-bundle/chunks/{close-many-JKUJMHLG.js.map → close-many-AP4MWU36.js.map} +1 -1
- package/dist/cli-bundle/chunks/{close-many-7KLOSYLP.js → close-many-OMZIGZB4.js} +19 -16
- package/dist/cli-bundle/chunks/{close-many-7KLOSYLP.js.map → close-many-OMZIGZB4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{comments-DNWHEBOS.js → comments-MIW5MZOX.js} +12 -9
- package/dist/cli-bundle/chunks/{comments-DNWHEBOS.js.map → comments-MIW5MZOX.js.map} +1 -1
- package/dist/cli-bundle/chunks/{comments-RW23R3VE.js → comments-SAG5LSKL.js} +14 -11
- package/dist/cli-bundle/chunks/{comments-RW23R3VE.js.map → comments-SAG5LSKL.js.map} +1 -1
- package/dist/cli-bundle/chunks/{config-AUM5WBYA.js → config-DJJKZB5R.js} +20 -17
- package/dist/cli-bundle/chunks/{config-AUM5WBYA.js.map → config-DJJKZB5R.js.map} +1 -1
- package/dist/cli-bundle/chunks/{config-OZWSA2NP.js → config-V57QD47V.js} +22 -19
- package/dist/cli-bundle/chunks/{config-OZWSA2NP.js.map → config-V57QD47V.js.map} +1 -1
- package/dist/cli-bundle/chunks/{context-PKCEHQY3.js → context-4OQGIPSO.js} +15 -12
- package/dist/cli-bundle/chunks/{context-OYXRGY7S.js → context-WLA6IAWE.js} +15 -12
- package/dist/cli-bundle/chunks/contracts-HXJLKCRI.js +12 -0
- package/dist/cli-bundle/chunks/contracts-OJEXMKVW.js +16 -0
- package/dist/cli-bundle/chunks/{copy-I4NCLBR4.js → copy-LEE6P6EM.js} +17 -14
- package/dist/cli-bundle/chunks/{copy-I4NCLBR4.js.map → copy-LEE6P6EM.js.map} +2 -2
- package/dist/cli-bundle/chunks/{copy-6XOR3HKN.js → copy-OTJOWFL6.js} +18 -15
- package/dist/cli-bundle/chunks/{copy-6XOR3HKN.js.map → copy-OTJOWFL6.js.map} +1 -1
- package/dist/cli-bundle/chunks/create-WKOZKPQR.js +30 -0
- package/dist/cli-bundle/chunks/{create-PM45M6PE.js → create-XWWQFQ6S.js} +14 -12
- package/dist/cli-bundle/chunks/{delete-7YXHYG67.js → delete-62JQTYT4.js} +10 -7
- package/dist/cli-bundle/chunks/{delete-7YXHYG67.js.map → delete-62JQTYT4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{delete-LPISP43T.js → delete-HQKGRNRZ.js} +12 -9
- package/dist/cli-bundle/chunks/{delete-LPISP43T.js.map → delete-HQKGRNRZ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{deps-WATKQDE3.js → deps-55FTG6Z5.js} +12 -9
- package/dist/cli-bundle/chunks/{deps-WATKQDE3.js.map → deps-55FTG6Z5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{deps-N2T26FME.js → deps-L2FPIAD3.js} +10 -7
- package/dist/cli-bundle/chunks/{deps-N2T26FME.js.map → deps-L2FPIAD3.js.map} +1 -1
- package/dist/cli-bundle/chunks/{docs-6LQ3GLM7.js → docs-6CRCSVKK.js} +11 -9
- package/dist/cli-bundle/chunks/{docs-6LQ3GLM7.js.map → docs-6CRCSVKK.js.map} +1 -1
- package/dist/cli-bundle/chunks/{docs-Z3X6JZLT.js → docs-S6UTOTO5.js} +9 -7
- package/dist/cli-bundle/chunks/{docs-Z3X6JZLT.js.map → docs-S6UTOTO5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{eval-6DCLG52D.js → eval-N6UHFWVO.js} +15 -11
- package/dist/cli-bundle/chunks/{eval-6DCLG52D.js.map → eval-N6UHFWVO.js.map} +1 -1
- package/dist/cli-bundle/chunks/{eval-Y3ZCUTHK.js → eval-PHOTWYHI.js} +17 -13
- package/dist/cli-bundle/chunks/{eval-Y3ZCUTHK.js.map → eval-PHOTWYHI.js.map} +1 -1
- package/dist/cli-bundle/chunks/{extension-BNINIMT7.js → extension-NBAH62ML.js} +17 -11
- package/dist/cli-bundle/chunks/{extension-QWE4YYK5.js → extension-ZF6ZZPOU.js} +17 -11
- package/dist/cli-bundle/chunks/{files-FUYPSOFJ.js → files-6P57MRKL.js} +14 -11
- package/dist/cli-bundle/chunks/files-6P57MRKL.js.map +7 -0
- package/dist/cli-bundle/chunks/{files-6SGKHS6O.js → files-JPU3FNJ7.js} +15 -12
- package/dist/cli-bundle/chunks/files-JPU3FNJ7.js.map +1 -0
- package/dist/cli-bundle/chunks/{focus-2Q3K76G2.js → focus-LFZ6IDBR.js} +15 -11
- package/dist/cli-bundle/chunks/{focus-2Q3K76G2.js.map → focus-LFZ6IDBR.js.map} +1 -1
- package/dist/cli-bundle/chunks/{focus-ATLBWXXD.js → focus-WNMYCVYA.js} +13 -9
- package/dist/cli-bundle/chunks/{focus-ATLBWXXD.js.map → focus-WNMYCVYA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{gc-RUYEMNRF.js → gc-AETFKZ44.js} +10 -7
- package/dist/cli-bundle/chunks/{gc-RUYEMNRF.js.map → gc-AETFKZ44.js.map} +1 -1
- package/dist/cli-bundle/chunks/{gc-TDWSDR66.js → gc-RLBP4QVN.js} +12 -9
- package/dist/cli-bundle/chunks/{gc-TDWSDR66.js.map → gc-RLBP4QVN.js.map} +1 -1
- package/dist/cli-bundle/chunks/{get-LY6M2JIM.js → get-NH2MPBCI.js} +18 -15
- package/dist/cli-bundle/chunks/{get-LY6M2JIM.js.map → get-NH2MPBCI.js.map} +1 -1
- package/dist/cli-bundle/chunks/{get-2WGLX74N.js → get-P4ZQXCPZ.js} +16 -13
- package/dist/cli-bundle/chunks/{get-2WGLX74N.js.map → get-P4ZQXCPZ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{health-4RKHYS3T.js → health-3GVPMQBL.js} +36 -29
- package/dist/cli-bundle/chunks/{health-4RKHYS3T.js.map → health-3GVPMQBL.js.map} +1 -1
- package/dist/cli-bundle/chunks/{health-TMFVNYRA.js → health-DNTM72GJ.js} +34 -27
- package/dist/cli-bundle/chunks/{health-TMFVNYRA.js.map → health-DNTM72GJ.js.map} +1 -1
- package/dist/cli-bundle/chunks/history-RYKLC72X.js +20 -0
- package/dist/cli-bundle/chunks/{history-SGRRS72R.js → history-SGPYRAFT.js} +10 -8
- package/dist/cli-bundle/chunks/{history-compact-LOED43R3.js → history-compact-3F6VELO7.js} +26 -30
- package/dist/cli-bundle/chunks/history-compact-3F6VELO7.js.map +7 -0
- package/dist/cli-bundle/chunks/{history-compact-V5DNAQHH.js → history-compact-656Y2TN4.js} +27 -31
- package/dist/cli-bundle/chunks/history-compact-656Y2TN4.js.map +1 -0
- package/dist/cli-bundle/chunks/history-redact-4H3FCKF3.js +21 -0
- package/dist/cli-bundle/chunks/{history-redact-IRL7WJ3E.js → history-redact-54ICFKXM.js} +11 -9
- package/dist/cli-bundle/chunks/{history-repair-PGYQJMGD.js → history-repair-4N6SDVHK.js} +25 -30
- package/dist/cli-bundle/chunks/history-repair-4N6SDVHK.js.map +7 -0
- package/dist/cli-bundle/chunks/{history-repair-4WVBVHFR.js → history-repair-EVTO6LIH.js} +26 -31
- package/dist/cli-bundle/chunks/history-repair-EVTO6LIH.js.map +1 -0
- package/dist/cli-bundle/chunks/init-RPIPQUNV.js +32 -0
- package/dist/cli-bundle/chunks/init-SKQAESQS.js +28 -0
- package/dist/cli-bundle/chunks/{learnings-4FJY7WIW.js → learnings-2HTPZNGZ.js} +10 -8
- package/dist/cli-bundle/chunks/{learnings-4FJY7WIW.js.map → learnings-2HTPZNGZ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{learnings-4BHWFFUV.js → learnings-YBIHY3D6.js} +12 -10
- package/dist/cli-bundle/chunks/{learnings-4BHWFFUV.js.map → learnings-YBIHY3D6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{list-472TIOVK.js → list-64LHZ3HM.js} +10 -8
- package/dist/cli-bundle/chunks/{list-D7BF5CL2.js → list-7LXBTEKI.js} +10 -8
- package/dist/cli-bundle/chunks/{next-SFQZVX2B.js → next-7ODPAQ4U.js} +22 -18
- package/dist/cli-bundle/chunks/{next-SFQZVX2B.js.map → next-7ODPAQ4U.js.map} +1 -1
- package/dist/cli-bundle/chunks/{next-D5STGWI2.js → next-ODJUM4ZM.js} +24 -20
- package/dist/cli-bundle/chunks/{next-D5STGWI2.js.map → next-ODJUM4ZM.js.map} +1 -1
- package/dist/cli-bundle/chunks/{notes-6KNOSLIT.js → notes-72YXN5JX.js} +10 -8
- package/dist/cli-bundle/chunks/{notes-6KNOSLIT.js.map → notes-72YXN5JX.js.map} +1 -1
- package/dist/cli-bundle/chunks/{notes-W4UEICGF.js → notes-NJ7IQJX4.js} +12 -10
- package/dist/cli-bundle/chunks/{notes-W4UEICGF.js.map → notes-NJ7IQJX4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{plan-MJQW5XK3.js → plan-R4NDQ27E.js} +18 -15
- package/dist/cli-bundle/chunks/{plan-MJQW5XK3.js.map → plan-R4NDQ27E.js.map} +1 -1
- package/dist/cli-bundle/chunks/{plan-JO6V7BXO.js → plan-XWY5T67S.js} +20 -17
- package/dist/cli-bundle/chunks/{plan-JO6V7BXO.js.map → plan-XWY5T67S.js.map} +1 -1
- package/dist/cli-bundle/chunks/profile-XQWEQKS3.js +397 -0
- package/dist/cli-bundle/chunks/profile-XQWEQKS3.js.map +1 -0
- package/dist/cli-bundle/chunks/profile-YRDHLMRO.js +400 -0
- package/dist/cli-bundle/chunks/profile-YRDHLMRO.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-list-query-ELBHCCFI.js → register-list-query-5H66WFYF.js} +24 -21
- package/dist/cli-bundle/chunks/register-list-query-5H66WFYF.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-list-query-GAPQ6DM3.js → register-list-query-FB3FNDLZ.js} +25 -22
- package/dist/cli-bundle/chunks/{register-list-query-ELBHCCFI.js.map → register-list-query-FB3FNDLZ.js.map} +1 -7
- package/dist/cli-bundle/chunks/{register-mutation-SJWMVIJ2.js → register-mutation-UJO23C7R.js} +42 -39
- package/dist/cli-bundle/chunks/{register-mutation-SJWMVIJ2.js.map → register-mutation-UJO23C7R.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-mutation-ROFE2YPC.js → register-mutation-Z2ETYHKS.js} +40 -37
- package/dist/cli-bundle/chunks/{register-mutation-ROFE2YPC.js.map → register-mutation-Z2ETYHKS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-operations-MEKU3AKC.js → register-operations-A3XAM5J7.js} +39 -36
- package/dist/cli-bundle/chunks/{register-operations-MEKU3AKC.js.map → register-operations-A3XAM5J7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-operations-IADFVH53.js → register-operations-SG7HBSUP.js} +37 -34
- package/dist/cli-bundle/chunks/{register-operations-IADFVH53.js.map → register-operations-SG7HBSUP.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-setup-AJWUSSQX.js → register-setup-I45OGJUV.js} +25 -19
- package/dist/cli-bundle/chunks/{register-setup-AJWUSSQX.js.map → register-setup-I45OGJUV.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-setup-3QJY43CY.js → register-setup-K6U3NVY5.js} +23 -17
- package/dist/cli-bundle/chunks/{register-setup-3QJY43CY.js.map → register-setup-K6U3NVY5.js.map} +1 -1
- package/dist/cli-bundle/chunks/restore-PXOFL6AM.js +19 -0
- package/dist/cli-bundle/chunks/{restore-44IHMMZZ.js → restore-YJ2ET6AT.js} +11 -9
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-TSBK4AY5.js → scheduling-shortcuts-SSC4MYWQ.js} +14 -12
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-TSBK4AY5.js.map → scheduling-shortcuts-SSC4MYWQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-OLHNLAZY.js → scheduling-shortcuts-ULRG7MNP.js} +16 -14
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-OLHNLAZY.js.map → scheduling-shortcuts-ULRG7MNP.js.map} +1 -1
- package/dist/cli-bundle/chunks/{schema-VBCELP5G.js → schema-2PUXCZ25.js} +10 -7
- package/dist/cli-bundle/chunks/{schema-IB2NZZWD.js → schema-Y6DXXK2F.js} +10 -7
- package/dist/cli-bundle/chunks/{search-7UBETML4.js → search-3S72CTD6.js} +13 -10
- package/dist/cli-bundle/chunks/{search-R227JOL6.js → search-WNUNBQXO.js} +13 -10
- package/dist/cli-bundle/chunks/{stats-FAG7COEH.js → stats-IJYTRQGV.js} +13 -10
- package/dist/cli-bundle/chunks/{stats-FAG7COEH.js.map → stats-IJYTRQGV.js.map} +1 -1
- package/dist/cli-bundle/chunks/{stats-MCK7PLYS.js → stats-L2D5Y2O5.js} +15 -12
- package/dist/cli-bundle/chunks/{stats-MCK7PLYS.js.map → stats-L2D5Y2O5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{telemetry-DRPDZMAO.js → telemetry-L2CVOKVN.js} +11 -8
- package/dist/cli-bundle/chunks/{telemetry-DRPDZMAO.js.map → telemetry-L2CVOKVN.js.map} +1 -1
- package/dist/cli-bundle/chunks/{telemetry-GVVUQSJQ.js → telemetry-QBYWQA76.js} +13 -10
- package/dist/cli-bundle/chunks/{telemetry-GVVUQSJQ.js.map → telemetry-QBYWQA76.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-QY44WAMR.js → test-DQ2QFJ7W.js} +21 -15
- package/dist/cli-bundle/chunks/test-W7QBLVJS.js +41 -0
- package/dist/cli-bundle/chunks/{test-all-USPJHXFR.js → test-all-636NTRTT.js} +26 -19
- package/dist/cli-bundle/chunks/{test-all-USPJHXFR.js.map → test-all-636NTRTT.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-all-QD6QAEG7.js → test-all-DWYK3RG6.js} +24 -17
- package/dist/cli-bundle/chunks/{test-all-QD6QAEG7.js.map → test-all-DWYK3RG6.js.map} +1 -1
- package/dist/cli-bundle/chunks/test-runs-245OINZR.js +28 -0
- package/dist/cli-bundle/chunks/test-runs-245OINZR.js.map +1 -0
- package/dist/cli-bundle/chunks/test-runs-ZRD4GCTT.js +24 -0
- package/dist/cli-bundle/chunks/test-runs-ZRD4GCTT.js.map +7 -0
- package/dist/cli-bundle/chunks/update-SFLZPJXX.js +30 -0
- package/dist/cli-bundle/chunks/update-SFLZPJXX.js.map +1 -0
- package/dist/cli-bundle/chunks/update-SJZ6S77U.js +26 -0
- package/dist/cli-bundle/chunks/update-SJZ6S77U.js.map +7 -0
- package/dist/cli-bundle/chunks/{update-many-RATAARHU.js → update-many-DC7X3EWM.js} +32 -29
- package/dist/cli-bundle/chunks/{update-many-RATAARHU.js.map → update-many-DC7X3EWM.js.map} +1 -1
- package/dist/cli-bundle/chunks/{update-many-BEMTDA2X.js → update-many-SLLAMHT7.js} +34 -31
- package/dist/cli-bundle/chunks/{update-many-BEMTDA2X.js.map → update-many-SLLAMHT7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-VU46BLJZ.js → upgrade-HFFXLZJA.js} +19 -12
- package/dist/cli-bundle/chunks/{upgrade-VU46BLJZ.js.map → upgrade-HFFXLZJA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-NWMR3VQL.js → upgrade-UYQKM7RF.js} +21 -14
- package/dist/cli-bundle/chunks/{upgrade-NWMR3VQL.js.map → upgrade-UYQKM7RF.js.map} +1 -1
- package/dist/cli-bundle/chunks/{validate-NRY6MFXN.js → validate-PA4FDTOV.js} +35 -28
- package/dist/cli-bundle/chunks/validate-PA4FDTOV.js.map +7 -0
- package/dist/cli-bundle/chunks/{validate-GAJ6FUSI.js → validate-Z7L75YEJ.js} +35 -28
- package/dist/cli-bundle/chunks/validate-Z7L75YEJ.js.map +1 -0
- package/dist/cli-bundle/main.js +173 -57
- package/dist/cli-bundle/main.js.map +2 -2
- package/dist/cli-bundle/sdk-runtime.js +247 -0
- package/dist/cli-bundle/sdk-runtime.js.map +7 -0
- package/dist/cli-bundle/sdk-testing.js +101 -0
- package/dist/cli-bundle/sdk-testing.js.map +7 -0
- package/dist/cli-bundle/sdk.js +787 -0
- package/dist/cli-bundle/sdk.js.map +7 -0
- package/dist/core/config/nested-settings.d.ts +4 -3
- package/dist/core/config/nested-settings.js +17 -6
- package/dist/core/config/nested-settings.js.map +1 -1
- package/dist/core/extensions/activation-summary.d.ts +6 -0
- package/dist/core/extensions/activation-summary.js +10 -4
- package/dist/core/extensions/activation-summary.js.map +1 -1
- package/dist/core/extensions/capability-usage.d.ts +6 -0
- package/dist/core/extensions/capability-usage.js +10 -4
- package/dist/core/extensions/capability-usage.js.map +1 -1
- package/dist/core/extensions/extension-types.d.ts +6 -2
- package/dist/core/extensions/extension-types.js +2 -2
- package/dist/core/extensions/extension-types.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +3 -0
- package/dist/core/extensions/loader.js +11 -19
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/history/history-rewrite.d.ts +10 -0
- package/dist/core/history/history-rewrite.js +28 -4
- package/dist/core/history/history-rewrite.js.map +1 -1
- package/dist/core/item/parent-reference-policy.d.ts +9 -1
- package/dist/core/item/parent-reference-policy.js +28 -4
- package/dist/core/item/parent-reference-policy.js.map +1 -1
- package/dist/core/item/type-registry.d.ts +1 -0
- package/dist/core/item/type-registry.js +153 -177
- package/dist/core/item/type-registry.js.map +1 -1
- package/dist/core/lock/lock.d.ts +28 -1
- package/dist/core/lock/lock.js +254 -20
- package/dist/core/lock/lock.js.map +1 -1
- package/dist/core/search/background-refresh.js +7 -19
- package/dist/core/search/background-refresh.js.map +1 -1
- package/dist/core/search/http-client.d.ts +0 -1
- package/dist/core/search/http-client.js +3 -3
- package/dist/core/search/http-client.js.map +1 -1
- package/dist/core/shared/constants.js +3 -2
- package/dist/core/shared/constants.js.map +1 -1
- package/dist/core/shared/errors.d.ts +1 -0
- package/dist/core/shared/errors.js +2 -2
- package/dist/core/shared/errors.js.map +1 -1
- package/dist/core/shared/primitives.d.ts +12 -0
- package/dist/core/shared/primitives.js +29 -2
- package/dist/core/shared/primitives.js.map +1 -1
- package/dist/core/store/item-store.js +3 -3
- package/dist/core/store/item-store.js.map +1 -1
- package/dist/core/store/settings-validator.d.ts +1 -0
- package/dist/core/store/settings-validator.js +6 -3
- package/dist/core/store/settings-validator.js.map +1 -1
- package/dist/core/store/settings.js +3 -3
- package/dist/core/store/settings.js.map +1 -1
- package/dist/core/validate/fix-planning.d.ts +0 -2
- package/dist/core/validate/fix-planning.js +3 -3
- package/dist/core/validate/fix-planning.js.map +1 -1
- package/dist/sdk/cli-contracts/commander-mutation-options.js +3 -2
- package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.js +5 -2
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-option-contracts.js +4 -2
- package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-schema.js +55 -94
- package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
- package/dist/sdk/errors.d.ts +21 -2
- package/dist/sdk/errors.js +8 -2
- package/dist/sdk/errors.js.map +1 -1
- package/dist/sdk/package-import-adapters.d.ts +90 -2
- package/dist/sdk/package-import-adapters.js +275 -3
- package/dist/sdk/package-import-adapters.js.map +1 -1
- package/dist/sdk/runtime.d.ts +1 -1
- package/dist/sdk/runtime.js +3 -3
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/sdk/testing.js +41 -19
- package/dist/sdk/testing.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/docs/ARCHITECTURE.md +27 -0
- package/docs/CONFIGURATION.md +3 -0
- package/docs/README.md +1 -0
- package/docs/SDK_PRIMITIVE_INVENTORY.md +55 -0
- package/docs/TESTING.md +5 -1
- package/docs/examples/ci/github-actions-pm-extension-gate.yml +5 -5
- package/docs/examples/ci/gitlab-ci-pm-extension-gate.yml +1 -1
- package/docs/examples/ci/jenkins-pm-extension-gate.Jenkinsfile +1 -1
- package/package.json +14 -26
- package/packages/pm-beads/extensions/beads/package.json +3 -0
- package/packages/pm-beads/extensions/beads/runtime-loader.ts +50 -41
- package/packages/pm-beads/extensions/beads/runtime.ts +106 -223
- package/packages/pm-calendar/extensions/calendar/package.json +3 -0
- package/packages/pm-calendar/extensions/calendar/runtime.ts +21 -18
- package/packages/pm-command-kit/extensions/command-kit/package.json +3 -0
- package/packages/pm-governance-audit/extensions/governance-audit/package.json +3 -0
- package/packages/pm-guide-shell/extensions/guide-shell/package.json +3 -0
- package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +9 -11
- package/packages/pm-kanban/extensions/kanban/package.json +3 -0
- package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/package.json +3 -0
- package/packages/pm-search-advanced/extensions/search-advanced/package.json +3 -0
- package/packages/pm-templates/extensions/templates/package.json +3 -0
- package/packages/pm-todos/extensions/todos/package.json +3 -0
- package/packages/pm-todos/extensions/todos/runtime-loader.ts +62 -72
- package/packages/pm-todos/extensions/todos/runtime.ts +61 -257
- package/plugins/pm-claude/scripts/pm-mcp-server.mjs +73 -31
- package/plugins/pm-codex/scripts/pm-mcp-server.mjs +80 -34
- package/scripts/bundle-cli.mjs +12 -2
- package/scripts/install.ps1 +7 -7
- package/dist/cli-bundle/chunks/activity-BIML7K2D.js +0 -16
- package/dist/cli-bundle/chunks/chunk-32IUNTG4.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-4EXFFP7T.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4WB6S4YX.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-572FKBRL.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-67LARBDL.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-6CDCWKSX.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-6KRFL33E.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-AJHYQCBJ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-B4O5S7I3.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-CXR3CMBQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ECU6MMTQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-EJ2OCBHF.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ERG65A2L.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-FUFFPIYA.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-HB4FAT3O.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-HQAF23Q2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JPATY4SE.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-KHVGM5CS.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-KS6ATO47.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-L4SLHV6G.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MHRS5FUX.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-NZ7QIUP5.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-OGLGI22K.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RAHINBVP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RJH5VQHW.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-SYE6WMV6.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-TQ6AX5SQ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-U3S2B7TA.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-WRYERRZX.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-WYOIIFSE.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-XRYSCRZR.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-YF746GTH.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-YSDFIY7N.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-Z4DGFQDH.js.map +0 -1
- package/dist/cli-bundle/chunks/claim-2BGBGSVI.js.map +0 -7
- package/dist/cli-bundle/chunks/claim-5GU7OE67.js.map +0 -1
- package/dist/cli-bundle/chunks/close-6YODBUIV.js +0 -14
- package/dist/cli-bundle/chunks/create-Z7YCH3BE.js +0 -28
- package/dist/cli-bundle/chunks/files-6SGKHS6O.js.map +0 -1
- package/dist/cli-bundle/chunks/files-FUYPSOFJ.js.map +0 -7
- package/dist/cli-bundle/chunks/history-CGNQJXFE.js +0 -18
- package/dist/cli-bundle/chunks/history-compact-LOED43R3.js.map +0 -7
- package/dist/cli-bundle/chunks/history-compact-V5DNAQHH.js.map +0 -1
- package/dist/cli-bundle/chunks/history-redact-N3JK7VBW.js +0 -19
- package/dist/cli-bundle/chunks/history-repair-4WVBVHFR.js.map +0 -1
- package/dist/cli-bundle/chunks/history-repair-PGYQJMGD.js.map +0 -7
- package/dist/cli-bundle/chunks/init-4GESW7RM.js +0 -26
- package/dist/cli-bundle/chunks/init-XIDPABA4.js +0 -22
- package/dist/cli-bundle/chunks/profile-3TOTMUR4.js +0 -1243
- package/dist/cli-bundle/chunks/profile-3TOTMUR4.js.map +0 -7
- package/dist/cli-bundle/chunks/profile-WIQY2KCV.js +0 -1205
- package/dist/cli-bundle/chunks/profile-WIQY2KCV.js.map +0 -1
- package/dist/cli-bundle/chunks/register-list-query-GAPQ6DM3.js.map +0 -1
- package/dist/cli-bundle/chunks/restore-EXHU34EU.js +0 -17
- package/dist/cli-bundle/chunks/test-SY76DZTO.js +0 -35
- package/dist/cli-bundle/chunks/update-A7EICML6.js +0 -24
- package/dist/cli-bundle/chunks/update-IKJZWLQC.js +0 -28
- package/dist/cli-bundle/chunks/validate-GAJ6FUSI.js.map +0 -1
- package/dist/cli-bundle/chunks/validate-NRY6MFXN.js.map +0 -7
- /package/dist/cli-bundle/chunks/{activity-BIML7K2D.js.map → activity-4XQIDNM5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-5YWLSPGE.js.map → activity-YKAKZTZ4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QCDTQCMW.js.map → chunk-5JE6SMYS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5JIWFWOZ.js.map → chunk-N6DNM2FA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GVJE5T7Q.js.map → chunk-NER3KUUS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MEZZZBYX.js.map → chunk-PDXT6Q55.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YVKZ3ANP.js.map → chunk-RX3HQSYG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LOWVNZBZ.js.map → chunk-S4APD35C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6NYJGMTY.js.map → chunk-T35XLYZF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BE2SR6QL.js.map → chunk-TT42JUMF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SU3TB4NS.js.map → chunk-YOF5VPKM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5E7N4T2Z.js.map → chunk-ZMD35NYG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-AFVKPR57.js.map → close-3YRR3XY6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-6YODBUIV.js.map → close-OB2Y4QP5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-PKCEHQY3.js.map → context-4OQGIPSO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-OYXRGY7S.js.map → context-WLA6IAWE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-Z7YCH3BE.js.map → contracts-HXJLKCRI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-PM45M6PE.js.map → contracts-OJEXMKVW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-BNINIMT7.js.map → create-WKOZKPQR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-QWE4YYK5.js.map → create-XWWQFQ6S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-CGNQJXFE.js.map → extension-NBAH62ML.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-SGRRS72R.js.map → extension-ZF6ZZPOU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-N3JK7VBW.js.map → history-RYKLC72X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-IRL7WJ3E.js.map → history-SGPYRAFT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-XIDPABA4.js.map → history-redact-4H3FCKF3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-4GESW7RM.js.map → history-redact-54ICFKXM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-D7BF5CL2.js.map → init-RPIPQUNV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-472TIOVK.js.map → init-SKQAESQS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-EXHU34EU.js.map → list-64LHZ3HM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-44IHMMZZ.js.map → list-7LXBTEKI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-VBCELP5G.js.map → restore-PXOFL6AM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-IB2NZZWD.js.map → restore-YJ2ET6AT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-R227JOL6.js.map → schema-2PUXCZ25.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-7UBETML4.js.map → schema-Y6DXXK2F.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-QY44WAMR.js.map → search-3S72CTD6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-SY76DZTO.js.map → search-WNUNBQXO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-IKJZWLQC.js.map → test-DQ2QFJ7W.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-A7EICML6.js.map → test-W7QBLVJS.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../cli/commands/linked-test-entry.ts","../../../../../../../../cli/commands/linked-test-parsers.ts"],"sourcesContent":["/**\n * @module cli/commands/linked-test-entry\n *\n * Implements the pm linked test entry command surface and its agent-facing runtime behavior.\n */\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\n\n// Keys accepted inside a structured linked-test entry. `cmd` is an alias for\n// `command`; everything else maps 1:1 to a LinkedTest field.\nexport const STRUCTURED_LINKED_TEST_KEYS = [\n \"command\",\n \"cmd\",\n \"path\",\n \"scope\",\n \"timeout\",\n \"timeout_seconds\",\n \"pm_context_mode\",\n \"env_set\",\n \"env_clear\",\n \"shared_host_safe\",\n \"assert_stdout_contains\",\n \"assert_stdout_regex\",\n \"assert_stderr_contains\",\n \"assert_stderr_regex\",\n \"assert_stdout_min_lines\",\n \"assert_json_field_equals\",\n \"assert_json_field_gte\",\n \"note\",\n] as const;\n\nconst STRUCTURED_LINKED_TEST_KEY_SET = new Set<string>(STRUCTURED_LINKED_TEST_KEYS);\nconst STRUCTURED_LINKED_TEST_KEY_PATTERN = STRUCTURED_LINKED_TEST_KEYS.map((key) =>\n key.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"),\n).join(\"|\");\nconst STRUCTURED_LINKED_TEST_ENTRY_PATTERN = new RegExp(\n `^(?:[-*+]\\\\s+)?(?:${STRUCTURED_LINKED_TEST_KEY_PATTERN})\\\\s*[:=]`,\n \"i\",\n);\n\n/**\n * Implements looks like structured linked test entry for the public runtime surface of this module.\n */\nexport function looksLikeStructuredLinkedTestEntry(raw: string): boolean {\n if (raw.startsWith(\"```\") || raw.includes(\"\\n\")) {\n return true;\n }\n return STRUCTURED_LINKED_TEST_ENTRY_PATTERN.test(raw);\n}\n\n/**\n * Implements normalize structured linked test entry for the public runtime surface of this module.\n */\nexport function normalizeStructuredLinkedTestEntry(\n kv: Record<string, string>,\n optionName: \"--add\" | \"--test\",\n): Record<string, string> {\n const normalizedKv: Record<string, string> = {};\n const unknownKeys: string[] = [];\n for (const [key, value] of Object.entries(kv)) {\n const normalizedKey = key.toLowerCase();\n if (!STRUCTURED_LINKED_TEST_KEY_SET.has(normalizedKey)) {\n unknownKeys.push(key);\n continue;\n }\n normalizedKv[normalizedKey] = value;\n }\n if (unknownKeys.length > 0) {\n throw new PmCliError(\n `${optionName} does not recognize key${unknownKeys.length > 1 ? \"s\" : \"\"} ${unknownKeys\n .map((key) => `\"${key}\"`)\n .join(\", \")}. Allowed keys: ${STRUCTURED_LINKED_TEST_KEYS.join(\", \")}.`,\n EXIT_CODE.USAGE,\n );\n }\n if (normalizedKv.cmd !== undefined) {\n if (normalizedKv.command !== undefined && normalizedKv.command.trim() !== normalizedKv.cmd.trim()) {\n throw new PmCliError(`${optionName} command and cmd must match when both are provided`, EXIT_CODE.USAGE);\n }\n const { cmd, ...rest } = normalizedKv;\n return { ...rest, command: rest.command ?? cmd };\n }\n return normalizedKv;\n}\n","/**\n * @module cli/commands/linked-test-parsers\n *\n * Implements the pm linked test parsers command surface and its agent-facing runtime behavior.\n */\nimport { parseOptionalNumber } from \"../../core/item/parse.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { splitCommaList } from \"../../core/shared/split-comma-list.js\";\nimport { STRUCTURED_LINKED_TEST_KEYS } from \"./linked-test-entry.js\";\nimport { SCOPE_VALUES } from \"../../types/index.js\";\nimport type { LinkedTest, LinkScope } from \"../../types/index.js\";\n\n/**\n * Shared linked-test field parsers used by the `create` and `test` commands.\n *\n * Extracted verbatim from create.ts and test.ts (pm-why9). The two copies were\n * byte-identical apart from their empty-input guard: create called these with\n * raw (untrimmed) values and used `if (!normalized)`; test called them with\n * pre-`.trim()`-ed values and used `if (!raw || raw.trim().length === 0)`.\n *\n * Both reduce to the same observable behaviour when the guard is the plain\n * falsy check used here: create's call sites still pass untrimmed values\n * (behaviour preserved exactly), and test's call sites pre-trim so a\n * whitespace-only value collapses to \"\" and is rejected by `!raw` exactly as\n * before. Error strings and parsing semantics are identical to both originals.\n */\n\nexport const LINKED_TEST_PROTECTED_ENV_KEYS = new Set([\"PM_PATH\", \"PM_GLOBAL_PATH\", \"FORCE_COLOR\"]);\nexport const LINKED_TEST_ENV_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;\nexport const LINKED_TEST_PM_CONTEXT_MODE_VALUES = [\"schema\", \"tracker\", \"auto\"] as const;\n/**\n * Restricts linked test pm context mode values accepted by command, SDK, and storage contracts.\n */\nexport type LinkedTestPmContextMode = (typeof LINKED_TEST_PM_CONTEXT_MODE_VALUES)[number];\n\n/**\n * Implements parse linked test env set for the public runtime surface of this module.\n */\nexport function parseLinkedTestEnvSet(raw: string | undefined, optionName: string): Record<string, string> | undefined {\n if (!raw) {\n return undefined;\n }\n const assignments = raw\n .split(/[;\\n]/)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n if (assignments.length === 0) {\n throw new PmCliError(`${optionName} env_set must include at least one KEY=VALUE assignment`, EXIT_CODE.USAGE);\n }\n const envSet: Record<string, string> = {};\n for (const assignment of assignments) {\n const separatorIndex = assignment.indexOf(\"=\");\n if (separatorIndex <= 0) {\n throw new PmCliError(\n `${optionName} env_set entries must use KEY=VALUE and be separated by semicolons. Example: env_set=PORT=0;PLAYWRIGHT_BASE_URL=http://127.0.0.1:4173`,\n EXIT_CODE.USAGE,\n );\n }\n const key = assignment.slice(0, separatorIndex).trim();\n const value = assignment.slice(separatorIndex + 1);\n if (!LINKED_TEST_ENV_NAME_PATTERN.test(key)) {\n throw new PmCliError(`${optionName} env_set key \"${key}\" is invalid`, EXIT_CODE.USAGE);\n }\n if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {\n throw new PmCliError(`${optionName} env_set key \"${key}\" is reserved for sandbox safety`, EXIT_CODE.USAGE);\n }\n envSet[key] = value;\n }\n /* c8 ignore start -- envSet always has >=1 key here (assignments is non-empty and each adds one); the undefined branch is defensive. */\n return Object.keys(envSet).length > 0 ? envSet : undefined;\n /* c8 ignore stop */\n}\n\n/**\n * Implements parse linked test env clear for the public runtime surface of this module.\n */\nexport function parseLinkedTestEnvClear(raw: string | undefined, optionName: string): string[] | undefined {\n if (!raw) {\n return undefined;\n }\n const keys = splitCommaList(raw, { separators: /[;,\\n]/ });\n if (keys.length === 0) {\n throw new PmCliError(`${optionName} env_clear must include at least one environment variable name`, EXIT_CODE.USAGE);\n }\n for (const key of keys) {\n if (!LINKED_TEST_ENV_NAME_PATTERN.test(key)) {\n throw new PmCliError(`${optionName} env_clear key \"${key}\" is invalid`, EXIT_CODE.USAGE);\n }\n if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {\n throw new PmCliError(`${optionName} env_clear key \"${key}\" is reserved for sandbox safety`, EXIT_CODE.USAGE);\n }\n }\n return keys;\n}\n\n/**\n * Implements parse linked test boolean for the public runtime surface of this module.\n */\nexport function parseLinkedTestBoolean(raw: string | undefined, optionName: string, fieldLabel: string): boolean | undefined {\n if (!raw) {\n return undefined;\n }\n const value = raw.trim().toLowerCase();\n if (value === \"true\" || value === \"1\" || value === \"yes\") {\n return true;\n }\n if (value === \"false\" || value === \"0\" || value === \"no\") {\n return false;\n }\n throw new PmCliError(`${optionName} ${fieldLabel} must be one of true|false|1|0|yes|no`, EXIT_CODE.USAGE);\n}\n\n/**\n * Implements parse linked test context mode for the public runtime surface of this module.\n */\nexport function parseLinkedTestContextMode(\n raw: string | undefined,\n optionName: string,\n): LinkedTest[\"pm_context_mode\"] | undefined {\n if (!raw) {\n return undefined;\n }\n const value = raw.trim().toLowerCase();\n if ((LINKED_TEST_PM_CONTEXT_MODE_VALUES as readonly string[]).includes(value)) {\n return value as LinkedTest[\"pm_context_mode\"];\n }\n throw new PmCliError(\n `${optionName} pm_context_mode must be one of: ${LINKED_TEST_PM_CONTEXT_MODE_VALUES.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n}\n\n/**\n * Implements parse linked test string list for the public runtime surface of this module.\n */\nexport function parseLinkedTestStringList(raw: string | undefined): string[] | undefined {\n if (!raw) {\n return undefined;\n }\n const values = splitCommaList(raw, { separators: /[;\\n]/ });\n return values.length > 0 ? values : undefined;\n}\n\n/**\n * Implements parse linked test regex list for the public runtime surface of this module.\n */\nexport function parseLinkedTestRegexList(raw: string | undefined, optionName: string, fieldLabel: string): string[] | undefined {\n const values = parseLinkedTestStringList(raw);\n if (!values || values.length === 0) {\n return undefined;\n }\n for (const pattern of values) {\n try {\n // Validate regex syntax early so malformed assertions fail at parse time.\n // User-provided, per-item patterns only run during local CLI validation.\n new RegExp(pattern, \"m\");\n } catch (error: unknown) {\n throw new PmCliError(\n /* c8 ignore next -- RegExp only throws SyntaxError (an Error); String(error) fallback is defensive. */\n `${optionName} ${fieldLabel} includes invalid regex \"${pattern}\": ${error instanceof Error ? error.message : String(error)}`,\n EXIT_CODE.USAGE,\n );\n }\n }\n return values;\n}\n\n/**\n * Implements parse linked test min lines for the public runtime surface of this module.\n */\nexport function parseLinkedTestMinLines(raw: string | undefined, optionName: string): number | undefined {\n if (!raw) {\n return undefined;\n }\n const parsed = parseOptionalNumber(raw, \"assert_stdout_min_lines\");\n if (!Number.isInteger(parsed) || parsed < 0) {\n throw new PmCliError(`${optionName} assert_stdout_min_lines must be an integer >= 0`, EXIT_CODE.USAGE);\n }\n return parsed;\n}\n\n/**\n * Implements parse linked test assertion equals map for the public runtime surface of this module.\n */\nexport function parseLinkedTestAssertionEqualsMap(raw: string | undefined, optionName: string): Record<string, string> | undefined {\n if (!raw) {\n return undefined;\n }\n const assignments = raw\n .split(/[;\\n]/)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n if (assignments.length === 0) {\n throw new PmCliError(`${optionName} assert_json_field_equals must include at least one path=value assignment`, EXIT_CODE.USAGE);\n }\n const values: Record<string, string> = {};\n for (const assignment of assignments) {\n const separatorIndex = assignment.indexOf(\"=\");\n if (separatorIndex <= 0) {\n throw new PmCliError(\n `${optionName} assert_json_field_equals entries must use path=value and be separated by semicolons`,\n EXIT_CODE.USAGE,\n );\n }\n const key = assignment.slice(0, separatorIndex).trim();\n const value = assignment.slice(separatorIndex + 1).trim();\n if (key.length === 0 || value.length === 0) {\n throw new PmCliError(`${optionName} assert_json_field_equals entries must include non-empty path and value`, EXIT_CODE.USAGE);\n }\n values[key] = value;\n }\n /* c8 ignore start -- values always has >=1 key here (assignments is non-empty and each adds one); the undefined branch is defensive. */\n return Object.keys(values).length > 0 ? values : undefined;\n /* c8 ignore stop */\n}\n\n/**\n * Implements parse linked test assertion gte map for the public runtime surface of this module.\n */\nexport function parseLinkedTestAssertionGteMap(raw: string | undefined, optionName: string): Record<string, number> | undefined {\n if (!raw) {\n return undefined;\n }\n const assignments = raw\n .split(/[;\\n]/)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n if (assignments.length === 0) {\n throw new PmCliError(`${optionName} assert_json_field_gte must include at least one path=value assignment`, EXIT_CODE.USAGE);\n }\n const values: Record<string, number> = {};\n for (const assignment of assignments) {\n const separatorIndex = assignment.indexOf(\"=\");\n if (separatorIndex <= 0) {\n throw new PmCliError(\n `${optionName} assert_json_field_gte entries must use path=value and be separated by semicolons`,\n EXIT_CODE.USAGE,\n );\n }\n const key = assignment.slice(0, separatorIndex).trim();\n const valueRaw = assignment.slice(separatorIndex + 1).trim();\n if (key.length === 0 || valueRaw.length === 0) {\n throw new PmCliError(`${optionName} assert_json_field_gte entries must include non-empty path and value`, EXIT_CODE.USAGE);\n }\n const value = Number.parseFloat(valueRaw);\n if (!Number.isFinite(value)) {\n throw new PmCliError(`${optionName} assert_json_field_gte value for \"${key}\" must be numeric`, EXIT_CODE.USAGE);\n }\n values[key] = value;\n }\n /* c8 ignore start -- values always has >=1 key here (assignments is non-empty and each adds one); the undefined branch is defensive. */\n return Object.keys(values).length > 0 ? values : undefined;\n /* c8 ignore stop */\n}\n\n/**\n * Strict JSON linked-test entry parsing for `pm test --add-json` (pm-vcr2).\n *\n * Accepts a JSON object or array of objects whose keys match the structured\n * linked-test fields. Unlike `--add` CSV parsing, command strings are stored\n * verbatim: commas, nested quotes, `--` separators, and shell variables like\n * `$tmp` survive byte-identically.\n */\n\nconst LINKED_TEST_JSON_KEY_SET = new Set<string>(STRUCTURED_LINKED_TEST_KEYS);\n\ntype JsonRecord = Record<string, unknown>;\n\nfunction isPlainObject(value: unknown): value is JsonRecord {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction normalizeJsonEntryKeys(entry: JsonRecord, fail: (message: string) => PmCliError): JsonRecord {\n const normalized: JsonRecord = {};\n const unknownKeys: string[] = [];\n for (const [key, value] of Object.entries(entry)) {\n const normalizedKey = key.toLowerCase();\n if (!LINKED_TEST_JSON_KEY_SET.has(normalizedKey)) {\n unknownKeys.push(key);\n continue;\n }\n if (Object.hasOwn(normalized, normalizedKey)) {\n throw fail(`provides key \"${key}\" more than once after case normalization`);\n }\n normalized[normalizedKey] = value;\n }\n if (unknownKeys.length > 0) {\n throw fail(\n `does not recognize key${unknownKeys.length > 1 ? \"s\" : \"\"} ${unknownKeys.map((key) => `\"${key}\"`).join(\", \")}. Allowed keys: ${STRUCTURED_LINKED_TEST_KEYS.join(\", \")}.`,\n );\n }\n return normalized;\n}\n\nfunction readJsonEntryString(entry: JsonRecord, key: string, fail: (message: string) => PmCliError): string | undefined {\n if (!Object.hasOwn(entry, key)) {\n return undefined;\n }\n const value = entry[key];\n if (value === undefined) {\n return undefined;\n }\n if (typeof value !== \"string\") {\n throw fail(`field \"${key}\" must be a JSON string`);\n }\n return value;\n}\n\nfunction readJsonEntryStringList(entry: JsonRecord, key: string, fail: (message: string) => PmCliError): string[] | undefined {\n if (!Object.hasOwn(entry, key)) {\n return undefined;\n }\n const value = entry[key];\n if (value === undefined) {\n return undefined;\n }\n const list = typeof value === \"string\" ? [value] : value;\n if (!Array.isArray(list) || list.some((item) => typeof item !== \"string\")) {\n throw fail(`field \"${key}\" must be a string or an array of strings`);\n }\n const values = (list as string[]).filter((item) => item.length > 0);\n return values.length > 0 ? values : undefined;\n}\n\nfunction readJsonEntryRegexList(entry: JsonRecord, key: string, fail: (message: string) => PmCliError): string[] | undefined {\n const values = readJsonEntryStringList(entry, key, fail);\n if (!values) {\n return undefined;\n }\n for (const pattern of values) {\n try {\n new RegExp(pattern, \"m\");\n } catch (error: unknown) {\n throw fail(\n /* c8 ignore next -- RegExp only throws SyntaxError (an Error); String(error) fallback is defensive. */\n `field \"${key}\" includes invalid regex \"${pattern}\": ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n }\n return values;\n}\n\nfunction readJsonEntryNumber(value: unknown, key: string, fail: (message: string) => PmCliError): number {\n const parsed =\n typeof value === \"number\"\n ? value\n : typeof value === \"string\" && value.trim().length > 0\n ? Number(value.trim())\n : Number.NaN;\n if (typeof value === \"boolean\" || !Number.isFinite(parsed)) {\n throw fail(`field \"${key}\" must be a finite number (or numeric string)`);\n }\n return parsed;\n}\n\nfunction readJsonEntryTimeoutSeconds(entry: JsonRecord, fail: (message: string) => PmCliError): number | undefined {\n const timeoutSecondsRaw = entry.timeout_seconds;\n const timeoutAliasRaw = entry.timeout;\n if (timeoutSecondsRaw === undefined && timeoutAliasRaw === undefined) {\n return undefined;\n }\n const timeoutSeconds = timeoutSecondsRaw === undefined ? undefined : readJsonEntryNumber(timeoutSecondsRaw, \"timeout_seconds\", fail);\n const timeoutAlias = timeoutAliasRaw === undefined ? undefined : readJsonEntryNumber(timeoutAliasRaw, \"timeout\", fail);\n if (timeoutSeconds !== undefined && timeoutAlias !== undefined && timeoutSeconds !== timeoutAlias) {\n throw fail(\"timeout and timeout_seconds must match when both are provided\");\n }\n const timeout = timeoutSeconds ?? (timeoutAlias as number);\n if (!Number.isInteger(timeout) || timeout <= 0) {\n throw fail(\"timeout_seconds must be a positive integer\");\n }\n return timeout;\n}\n\nfunction readJsonEntryScope(entry: JsonRecord, fail: (message: string) => PmCliError): LinkScope {\n const value = readJsonEntryString(entry, \"scope\", fail);\n if (value === undefined) {\n return \"project\";\n }\n if (!(SCOPE_VALUES as readonly string[]).includes(value)) {\n throw fail(`field \"scope\" must be one of: ${SCOPE_VALUES.join(\", \")}`);\n }\n return value as LinkScope;\n}\n\nfunction readJsonEntryEnvSet(entry: JsonRecord, fail: (message: string) => PmCliError): Record<string, string> | undefined {\n if (!Object.hasOwn(entry, \"env_set\")) {\n return undefined;\n }\n const value = entry.env_set;\n if (value === undefined) {\n return undefined;\n }\n if (!isPlainObject(value)) {\n throw fail('field \"env_set\" must be a JSON object mapping environment names to string values');\n }\n const envSet: Record<string, string> = {};\n for (const [key, entryValue] of Object.entries(value)) {\n if (typeof entryValue !== \"string\") {\n throw fail(`field \"env_set\" value for \"${key}\" must be a string`);\n }\n if (!LINKED_TEST_ENV_NAME_PATTERN.test(key)) {\n throw fail(`field \"env_set\" key \"${key}\" is invalid`);\n }\n if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {\n throw fail(`field \"env_set\" key \"${key}\" is reserved for sandbox safety`);\n }\n envSet[key] = entryValue;\n }\n return Object.keys(envSet).length > 0 ? envSet : undefined;\n}\n\nfunction readJsonEntryEnvClear(entry: JsonRecord, fail: (message: string) => PmCliError): string[] | undefined {\n const keys = readJsonEntryStringList(entry, \"env_clear\", fail);\n if (!keys) {\n return undefined;\n }\n for (const key of keys) {\n if (!LINKED_TEST_ENV_NAME_PATTERN.test(key)) {\n throw fail(`field \"env_clear\" key \"${key}\" is invalid`);\n }\n if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {\n throw fail(`field \"env_clear\" key \"${key}\" is reserved for sandbox safety`);\n }\n }\n return keys;\n}\n\nfunction readJsonEntryBoolean(entry: JsonRecord, key: string, fail: (message: string) => PmCliError): boolean | undefined {\n if (!Object.hasOwn(entry, key)) {\n return undefined;\n }\n const value = entry[key];\n if (value === undefined) {\n return undefined;\n }\n if (typeof value !== \"boolean\") {\n throw fail(`field \"${key}\" must be a JSON boolean (true or false)`);\n }\n return value;\n}\n\nfunction readJsonEntryMinLines(entry: JsonRecord, fail: (message: string) => PmCliError): number | undefined {\n if (!Object.hasOwn(entry, \"assert_stdout_min_lines\")) {\n return undefined;\n }\n const value = entry.assert_stdout_min_lines;\n if (value === undefined) {\n return undefined;\n }\n const parsed = readJsonEntryNumber(value, \"assert_stdout_min_lines\", fail);\n if (!Number.isInteger(parsed) || parsed < 0) {\n throw fail('field \"assert_stdout_min_lines\" must be an integer >= 0');\n }\n return parsed;\n}\n\nfunction readJsonEntryEqualsMap(entry: JsonRecord, fail: (message: string) => PmCliError): Record<string, string> | undefined {\n if (!Object.hasOwn(entry, \"assert_json_field_equals\")) {\n return undefined;\n }\n const value = entry.assert_json_field_equals;\n if (value === undefined) {\n return undefined;\n }\n if (!isPlainObject(value)) {\n throw fail('field \"assert_json_field_equals\" must be a JSON object mapping field paths to expected values');\n }\n const values: Record<string, string> = {};\n for (const [key, entryValue] of Object.entries(value)) {\n if (key.trim().length === 0) {\n throw fail('field \"assert_json_field_equals\" keys must be non-empty field paths');\n }\n if (typeof entryValue !== \"string\" && typeof entryValue !== \"number\" && typeof entryValue !== \"boolean\") {\n throw fail(`field \"assert_json_field_equals\" value for \"${key}\" must be a string, number, or boolean`);\n }\n values[key] = String(entryValue);\n }\n return Object.keys(values).length > 0 ? values : undefined;\n}\n\nfunction readJsonEntryGteMap(entry: JsonRecord, fail: (message: string) => PmCliError): Record<string, number> | undefined {\n if (!Object.hasOwn(entry, \"assert_json_field_gte\")) {\n return undefined;\n }\n const value = entry.assert_json_field_gte;\n if (value === undefined) {\n return undefined;\n }\n if (!isPlainObject(value)) {\n throw fail('field \"assert_json_field_gte\" must be a JSON object mapping field paths to numeric minimums');\n }\n const values: Record<string, number> = {};\n for (const [key, entryValue] of Object.entries(value)) {\n if (key.trim().length === 0) {\n throw fail('field \"assert_json_field_gte\" keys must be non-empty field paths');\n }\n values[key] = readJsonEntryNumber(entryValue, `assert_json_field_gte.${key}`, fail);\n }\n return Object.keys(values).length > 0 ? values : undefined;\n}\n\nfunction parseLinkedTestJsonEntry(rawEntry: unknown, label: string, optionName: string): LinkedTest {\n const fail = (message: string): PmCliError => new PmCliError(`${optionName} ${label} ${message}`, EXIT_CODE.USAGE);\n if (!isPlainObject(rawEntry)) {\n throw fail(`must be a JSON object with linked-test fields. Allowed keys: ${STRUCTURED_LINKED_TEST_KEYS.join(\", \")}.`);\n }\n const entry = normalizeJsonEntryKeys(rawEntry, fail);\n const commandValue = readJsonEntryString(entry, \"command\", fail);\n const cmdAlias = readJsonEntryString(entry, \"cmd\", fail);\n if (commandValue !== undefined && cmdAlias !== undefined && commandValue !== cmdAlias) {\n throw fail(\"command and cmd must match when both are provided\");\n }\n const command = commandValue ?? cmdAlias;\n if (command === undefined || command.trim().length === 0) {\n throw fail('requires a non-empty \"command\" string');\n }\n const pathValue = readJsonEntryString(entry, \"path\", fail);\n const pmContextModeValue = readJsonEntryString(entry, \"pm_context_mode\", fail);\n if (pmContextModeValue !== undefined && !(LINKED_TEST_PM_CONTEXT_MODE_VALUES as readonly string[]).includes(pmContextModeValue)) {\n throw fail(`field \"pm_context_mode\" must be one of: ${LINKED_TEST_PM_CONTEXT_MODE_VALUES.join(\", \")}`);\n }\n const noteValue = readJsonEntryString(entry, \"note\", fail);\n return {\n command,\n path: pathValue !== undefined && pathValue.length > 0 ? pathValue : undefined,\n scope: readJsonEntryScope(entry, fail),\n timeout_seconds: readJsonEntryTimeoutSeconds(entry, fail),\n pm_context_mode: pmContextModeValue as LinkedTest[\"pm_context_mode\"],\n env_set: readJsonEntryEnvSet(entry, fail),\n env_clear: readJsonEntryEnvClear(entry, fail),\n shared_host_safe: readJsonEntryBoolean(entry, \"shared_host_safe\", fail),\n assert_stdout_contains: readJsonEntryStringList(entry, \"assert_stdout_contains\", fail),\n assert_stdout_regex: readJsonEntryRegexList(entry, \"assert_stdout_regex\", fail),\n assert_stderr_contains: readJsonEntryStringList(entry, \"assert_stderr_contains\", fail),\n assert_stderr_regex: readJsonEntryRegexList(entry, \"assert_stderr_regex\", fail),\n assert_stdout_min_lines: readJsonEntryMinLines(entry, fail),\n assert_json_field_equals: readJsonEntryEqualsMap(entry, fail),\n assert_json_field_gte: readJsonEntryGteMap(entry, fail),\n note: noteValue !== undefined && noteValue.trim().length > 0 ? noteValue.trim() : undefined,\n };\n}\n\n/**\n * Implements parse linked test json entries for the public runtime surface of this module.\n */\nexport function parseLinkedTestJsonEntries(raw: string, optionName: string): LinkedTest[] {\n const trimmed = raw.trim();\n if (trimmed.length === 0) {\n throw new PmCliError(\n `${optionName} requires a JSON object or array of objects describing linked-test entries`,\n EXIT_CODE.USAGE,\n );\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(trimmed) as unknown;\n } catch (error: unknown) {\n throw new PmCliError(\n /* c8 ignore next -- JSON.parse only throws SyntaxError (an Error); String(error) fallback is defensive. */\n `${optionName} value is not valid JSON: ${error instanceof Error ? error.message : String(error)}. Provide a JSON object or array of objects, e.g. '{\"command\":\"node scripts/check.js --flag value, with commas\",\"timeout_seconds\":120}'.`,\n EXIT_CODE.USAGE,\n );\n }\n const entries = Array.isArray(parsed) ? parsed : [parsed];\n if (entries.length === 0) {\n throw new PmCliError(`${optionName} array must include at least one linked-test entry object`, EXIT_CODE.USAGE);\n }\n return entries.map((entry, index) =>\n parseLinkedTestJsonEntry(entry, entries.length > 1 ? `entry ${index + 1}` : \"entry\", optionName),\n );\n}\n\nexport const _testOnlyLinkedTestParsers = {\n parseLinkedTestJsonEntry,\n};\n"],"names":[],"mappings":"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","debugId":"cc38118c-431e-5112-8201-cf5ec5a89ce6"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../cli/commands/linked-test-entry.ts","../../../../../../../../cli/commands/linked-test-parsers.ts"],"sourcesContent":["/**\n * @module cli/commands/linked-test-entry\n *\n * Implements the pm linked test entry command surface and its agent-facing runtime behavior.\n */\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\n\n// Keys accepted inside a structured linked-test entry. `cmd` is an alias for\n// `command`; everything else maps 1:1 to a LinkedTest field.\nexport const STRUCTURED_LINKED_TEST_KEYS = [\n \"command\",\n \"cmd\",\n \"path\",\n \"scope\",\n \"timeout\",\n \"timeout_seconds\",\n \"pm_context_mode\",\n \"env_set\",\n \"env_clear\",\n \"shared_host_safe\",\n \"assert_stdout_contains\",\n \"assert_stdout_regex\",\n \"assert_stderr_contains\",\n \"assert_stderr_regex\",\n \"assert_stdout_min_lines\",\n \"assert_json_field_equals\",\n \"assert_json_field_gte\",\n \"note\",\n] as const;\n\nconst STRUCTURED_LINKED_TEST_KEY_SET = new Set<string>(STRUCTURED_LINKED_TEST_KEYS);\nconst STRUCTURED_LINKED_TEST_KEY_PATTERN = STRUCTURED_LINKED_TEST_KEYS.map((key) =>\n key.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"),\n).join(\"|\");\nconst STRUCTURED_LINKED_TEST_ENTRY_PATTERN = new RegExp(\n `^(?:[-*+]\\\\s+)?(?:${STRUCTURED_LINKED_TEST_KEY_PATTERN})\\\\s*[:=]`,\n \"i\",\n);\n\n/**\n * Implements looks like structured linked test entry for the public runtime surface of this module.\n */\nexport function looksLikeStructuredLinkedTestEntry(raw: string): boolean {\n if (raw.startsWith(\"```\") || raw.includes(\"\\n\")) {\n return true;\n }\n return STRUCTURED_LINKED_TEST_ENTRY_PATTERN.test(raw);\n}\n\n/**\n * Implements normalize structured linked test entry for the public runtime surface of this module.\n */\nexport function normalizeStructuredLinkedTestEntry(\n kv: Record<string, string>,\n optionName: \"--add\" | \"--test\",\n): Record<string, string> {\n const normalizedKv: Record<string, string> = {};\n const unknownKeys: string[] = [];\n for (const [key, value] of Object.entries(kv)) {\n const normalizedKey = key.toLowerCase();\n if (!STRUCTURED_LINKED_TEST_KEY_SET.has(normalizedKey)) {\n unknownKeys.push(key);\n continue;\n }\n normalizedKv[normalizedKey] = value;\n }\n if (unknownKeys.length > 0) {\n throw new PmCliError(\n `${optionName} does not recognize key${unknownKeys.length > 1 ? \"s\" : \"\"} ${unknownKeys\n .map((key) => `\"${key}\"`)\n .join(\", \")}. Allowed keys: ${STRUCTURED_LINKED_TEST_KEYS.join(\", \")}.`,\n EXIT_CODE.USAGE,\n );\n }\n if (normalizedKv.cmd !== undefined) {\n if (normalizedKv.command !== undefined && normalizedKv.command.trim() !== normalizedKv.cmd.trim()) {\n throw new PmCliError(`${optionName} command and cmd must match when both are provided`, EXIT_CODE.USAGE);\n }\n const { cmd, ...rest } = normalizedKv;\n return { ...rest, command: rest.command ?? cmd };\n }\n return normalizedKv;\n}\n","/**\n * @module cli/commands/linked-test-parsers\n *\n * Implements the pm linked test parsers command surface and its agent-facing runtime behavior.\n */\nimport { parseOptionalNumber } from \"../../core/item/parse.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { splitCommaList } from \"../../core/shared/split-comma-list.js\";\nimport { STRUCTURED_LINKED_TEST_KEYS } from \"./linked-test-entry.js\";\nimport { SCOPE_VALUES } from \"../../types/index.js\";\nimport type { LinkedTest, LinkScope } from \"../../types/index.js\";\n\n/**\n * Shared linked-test field parsers used by the `create` and `test` commands.\n *\n * Extracted verbatim from create.ts and test.ts (pm-why9). The two copies were\n * byte-identical apart from their empty-input guard: create called these with\n * raw (untrimmed) values and used `if (!normalized)`; test called them with\n * pre-`.trim()`-ed values and used `if (!raw || raw.trim().length === 0)`.\n *\n * Both reduce to the same observable behaviour when the guard is the plain\n * falsy check used here: create's call sites still pass untrimmed values\n * (behaviour preserved exactly), and test's call sites pre-trim so a\n * whitespace-only value collapses to \"\" and is rejected by `!raw` exactly as\n * before. Error strings and parsing semantics are identical to both originals.\n */\n\nexport const LINKED_TEST_PROTECTED_ENV_KEYS = new Set([\"PM_PATH\", \"PM_GLOBAL_PATH\", \"FORCE_COLOR\"]);\nexport const LINKED_TEST_ENV_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;\nexport const LINKED_TEST_PM_CONTEXT_MODE_VALUES = [\"schema\", \"tracker\", \"auto\"] as const;\n/**\n * Restricts linked test pm context mode values accepted by command, SDK, and storage contracts.\n */\nexport type LinkedTestPmContextMode = (typeof LINKED_TEST_PM_CONTEXT_MODE_VALUES)[number];\n\n/**\n * Implements parse linked test env set for the public runtime surface of this module.\n */\nexport function parseLinkedTestEnvSet(raw: string | undefined, optionName: string): Record<string, string> | undefined {\n if (!raw) {\n return undefined;\n }\n const assignments = raw\n .split(/[;\\n]/)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n if (assignments.length === 0) {\n throw new PmCliError(`${optionName} env_set must include at least one KEY=VALUE assignment`, EXIT_CODE.USAGE);\n }\n const envSet: Record<string, string> = {};\n for (const assignment of assignments) {\n const separatorIndex = assignment.indexOf(\"=\");\n if (separatorIndex <= 0) {\n throw new PmCliError(\n `${optionName} env_set entries must use KEY=VALUE and be separated by semicolons. Example: env_set=PORT=0;PLAYWRIGHT_BASE_URL=http://127.0.0.1:4173`,\n EXIT_CODE.USAGE,\n );\n }\n const key = assignment.slice(0, separatorIndex).trim();\n const value = assignment.slice(separatorIndex + 1);\n if (!LINKED_TEST_ENV_NAME_PATTERN.test(key)) {\n throw new PmCliError(`${optionName} env_set key \"${key}\" is invalid`, EXIT_CODE.USAGE);\n }\n if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {\n throw new PmCliError(`${optionName} env_set key \"${key}\" is reserved for sandbox safety`, EXIT_CODE.USAGE);\n }\n envSet[key] = value;\n }\n /* c8 ignore start -- envSet always has >=1 key here (assignments is non-empty and each adds one); the undefined branch is defensive. */\n return Object.keys(envSet).length > 0 ? envSet : undefined;\n /* c8 ignore stop */\n}\n\n/**\n * Implements parse linked test env clear for the public runtime surface of this module.\n */\nexport function parseLinkedTestEnvClear(raw: string | undefined, optionName: string): string[] | undefined {\n if (!raw) {\n return undefined;\n }\n const keys = splitCommaList(raw, { separators: /[;,\\n]/ });\n if (keys.length === 0) {\n throw new PmCliError(`${optionName} env_clear must include at least one environment variable name`, EXIT_CODE.USAGE);\n }\n for (const key of keys) {\n if (!LINKED_TEST_ENV_NAME_PATTERN.test(key)) {\n throw new PmCliError(`${optionName} env_clear key \"${key}\" is invalid`, EXIT_CODE.USAGE);\n }\n if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {\n throw new PmCliError(`${optionName} env_clear key \"${key}\" is reserved for sandbox safety`, EXIT_CODE.USAGE);\n }\n }\n return keys;\n}\n\n/**\n * Implements parse linked test boolean for the public runtime surface of this module.\n */\nexport function parseLinkedTestBoolean(raw: string | undefined, optionName: string, fieldLabel: string): boolean | undefined {\n if (!raw) {\n return undefined;\n }\n const value = raw.trim().toLowerCase();\n if (value === \"true\" || value === \"1\" || value === \"yes\") {\n return true;\n }\n if (value === \"false\" || value === \"0\" || value === \"no\") {\n return false;\n }\n throw new PmCliError(`${optionName} ${fieldLabel} must be one of true|false|1|0|yes|no`, EXIT_CODE.USAGE);\n}\n\n/**\n * Implements parse linked test context mode for the public runtime surface of this module.\n */\nexport function parseLinkedTestContextMode(\n raw: string | undefined,\n optionName: string,\n): LinkedTest[\"pm_context_mode\"] | undefined {\n if (!raw) {\n return undefined;\n }\n const value = raw.trim().toLowerCase();\n if ((LINKED_TEST_PM_CONTEXT_MODE_VALUES as readonly string[]).includes(value)) {\n return value as LinkedTest[\"pm_context_mode\"];\n }\n throw new PmCliError(\n `${optionName} pm_context_mode must be one of: ${LINKED_TEST_PM_CONTEXT_MODE_VALUES.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n}\n\n/**\n * Implements parse linked test string list for the public runtime surface of this module.\n */\nexport function parseLinkedTestStringList(raw: string | undefined): string[] | undefined {\n if (!raw) {\n return undefined;\n }\n const values = splitCommaList(raw, { separators: /[;\\n]/ });\n return values.length > 0 ? values : undefined;\n}\n\n/**\n * Implements parse linked test regex list for the public runtime surface of this module.\n */\nexport function parseLinkedTestRegexList(raw: string | undefined, optionName: string, fieldLabel: string): string[] | undefined {\n const values = parseLinkedTestStringList(raw);\n if (!values || values.length === 0) {\n return undefined;\n }\n for (const pattern of values) {\n try {\n // Validate regex syntax early so malformed assertions fail at parse time.\n // User-provided, per-item patterns only run during local CLI validation.\n new RegExp(pattern, \"m\");\n } catch (error: unknown) {\n throw new PmCliError(\n /* c8 ignore next -- RegExp only throws SyntaxError (an Error); String(error) fallback is defensive. */\n `${optionName} ${fieldLabel} includes invalid regex \"${pattern}\": ${error instanceof Error ? error.message : String(error)}`,\n EXIT_CODE.USAGE,\n );\n }\n }\n return values;\n}\n\n/**\n * Implements parse linked test min lines for the public runtime surface of this module.\n */\nexport function parseLinkedTestMinLines(raw: string | undefined, optionName: string): number | undefined {\n if (!raw) {\n return undefined;\n }\n const parsed = parseOptionalNumber(raw, \"assert_stdout_min_lines\");\n if (!Number.isInteger(parsed) || parsed < 0) {\n throw new PmCliError(`${optionName} assert_stdout_min_lines must be an integer >= 0`, EXIT_CODE.USAGE);\n }\n return parsed;\n}\n\n/**\n * Implements parse linked test assertion equals map for the public runtime surface of this module.\n */\nexport function parseLinkedTestAssertionEqualsMap(raw: string | undefined, optionName: string): Record<string, string> | undefined {\n if (!raw) {\n return undefined;\n }\n const assignments = raw\n .split(/[;\\n]/)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n if (assignments.length === 0) {\n throw new PmCliError(`${optionName} assert_json_field_equals must include at least one path=value assignment`, EXIT_CODE.USAGE);\n }\n const values: Record<string, string> = {};\n for (const assignment of assignments) {\n const separatorIndex = assignment.indexOf(\"=\");\n if (separatorIndex <= 0) {\n throw new PmCliError(\n `${optionName} assert_json_field_equals entries must use path=value and be separated by semicolons`,\n EXIT_CODE.USAGE,\n );\n }\n const key = assignment.slice(0, separatorIndex).trim();\n const value = assignment.slice(separatorIndex + 1).trim();\n if (key.length === 0 || value.length === 0) {\n throw new PmCliError(`${optionName} assert_json_field_equals entries must include non-empty path and value`, EXIT_CODE.USAGE);\n }\n values[key] = value;\n }\n /* c8 ignore start -- values always has >=1 key here (assignments is non-empty and each adds one); the undefined branch is defensive. */\n return Object.keys(values).length > 0 ? values : undefined;\n /* c8 ignore stop */\n}\n\n/**\n * Implements parse linked test assertion gte map for the public runtime surface of this module.\n */\nexport function parseLinkedTestAssertionGteMap(raw: string | undefined, optionName: string): Record<string, number> | undefined {\n if (!raw) {\n return undefined;\n }\n const assignments = raw\n .split(/[;\\n]/)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n if (assignments.length === 0) {\n throw new PmCliError(`${optionName} assert_json_field_gte must include at least one path=value assignment`, EXIT_CODE.USAGE);\n }\n const values: Record<string, number> = {};\n for (const assignment of assignments) {\n const separatorIndex = assignment.indexOf(\"=\");\n if (separatorIndex <= 0) {\n throw new PmCliError(\n `${optionName} assert_json_field_gte entries must use path=value and be separated by semicolons`,\n EXIT_CODE.USAGE,\n );\n }\n const key = assignment.slice(0, separatorIndex).trim();\n const valueRaw = assignment.slice(separatorIndex + 1).trim();\n if (key.length === 0 || valueRaw.length === 0) {\n throw new PmCliError(`${optionName} assert_json_field_gte entries must include non-empty path and value`, EXIT_CODE.USAGE);\n }\n const value = Number.parseFloat(valueRaw);\n if (!Number.isFinite(value)) {\n throw new PmCliError(`${optionName} assert_json_field_gte value for \"${key}\" must be numeric`, EXIT_CODE.USAGE);\n }\n values[key] = value;\n }\n /* c8 ignore start -- values always has >=1 key here (assignments is non-empty and each adds one); the undefined branch is defensive. */\n return Object.keys(values).length > 0 ? values : undefined;\n /* c8 ignore stop */\n}\n\n/**\n * Strict JSON linked-test entry parsing for `pm test --add-json` (pm-vcr2).\n *\n * Accepts a JSON object or array of objects whose keys match the structured\n * linked-test fields. Unlike `--add` CSV parsing, command strings are stored\n * verbatim: commas, nested quotes, `--` separators, and shell variables like\n * `$tmp` survive byte-identically.\n */\n\nconst LINKED_TEST_JSON_KEY_SET = new Set<string>(STRUCTURED_LINKED_TEST_KEYS);\n\ntype JsonRecord = Record<string, unknown>;\n\nfunction isPlainObject(value: unknown): value is JsonRecord {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction normalizeJsonEntryKeys(entry: JsonRecord, fail: (message: string) => PmCliError): JsonRecord {\n const normalized: JsonRecord = {};\n const unknownKeys: string[] = [];\n for (const [key, value] of Object.entries(entry)) {\n const normalizedKey = key.toLowerCase();\n if (!LINKED_TEST_JSON_KEY_SET.has(normalizedKey)) {\n unknownKeys.push(key);\n continue;\n }\n if (Object.hasOwn(normalized, normalizedKey)) {\n throw fail(`provides key \"${key}\" more than once after case normalization`);\n }\n normalized[normalizedKey] = value;\n }\n if (unknownKeys.length > 0) {\n throw fail(\n `does not recognize key${unknownKeys.length > 1 ? \"s\" : \"\"} ${unknownKeys.map((key) => `\"${key}\"`).join(\", \")}. Allowed keys: ${STRUCTURED_LINKED_TEST_KEYS.join(\", \")}.`,\n );\n }\n return normalized;\n}\n\nfunction readJsonEntryString(entry: JsonRecord, key: string, fail: (message: string) => PmCliError): string | undefined {\n if (!Object.hasOwn(entry, key)) {\n return undefined;\n }\n const value = entry[key];\n if (value === undefined) {\n return undefined;\n }\n if (typeof value !== \"string\") {\n throw fail(`field \"${key}\" must be a JSON string`);\n }\n return value;\n}\n\nfunction readJsonEntryStringList(entry: JsonRecord, key: string, fail: (message: string) => PmCliError): string[] | undefined {\n if (!Object.hasOwn(entry, key)) {\n return undefined;\n }\n const value = entry[key];\n if (value === undefined) {\n return undefined;\n }\n const list = typeof value === \"string\" ? [value] : value;\n if (!Array.isArray(list) || list.some((item) => typeof item !== \"string\")) {\n throw fail(`field \"${key}\" must be a string or an array of strings`);\n }\n const values = (list as string[]).filter((item) => item.length > 0);\n return values.length > 0 ? values : undefined;\n}\n\nfunction readJsonEntryRegexList(entry: JsonRecord, key: string, fail: (message: string) => PmCliError): string[] | undefined {\n const values = readJsonEntryStringList(entry, key, fail);\n if (!values) {\n return undefined;\n }\n for (const pattern of values) {\n try {\n new RegExp(pattern, \"m\");\n } catch (error: unknown) {\n throw fail(\n /* c8 ignore next -- RegExp only throws SyntaxError (an Error); String(error) fallback is defensive. */\n `field \"${key}\" includes invalid regex \"${pattern}\": ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n }\n return values;\n}\n\nfunction readJsonEntryNumber(value: unknown, key: string, fail: (message: string) => PmCliError): number {\n const parsed =\n typeof value === \"number\"\n ? value\n : typeof value === \"string\" && value.trim().length > 0\n ? Number(value.trim())\n : Number.NaN;\n if (typeof value === \"boolean\" || !Number.isFinite(parsed)) {\n throw fail(`field \"${key}\" must be a finite number (or numeric string)`);\n }\n return parsed;\n}\n\nfunction readJsonEntryTimeoutSeconds(entry: JsonRecord, fail: (message: string) => PmCliError): number | undefined {\n const timeoutSecondsRaw = entry.timeout_seconds;\n const timeoutAliasRaw = entry.timeout;\n if (timeoutSecondsRaw === undefined && timeoutAliasRaw === undefined) {\n return undefined;\n }\n const timeoutSeconds = timeoutSecondsRaw === undefined ? undefined : readJsonEntryNumber(timeoutSecondsRaw, \"timeout_seconds\", fail);\n const timeoutAlias = timeoutAliasRaw === undefined ? undefined : readJsonEntryNumber(timeoutAliasRaw, \"timeout\", fail);\n if (timeoutSeconds !== undefined && timeoutAlias !== undefined && timeoutSeconds !== timeoutAlias) {\n throw fail(\"timeout and timeout_seconds must match when both are provided\");\n }\n const timeout = timeoutSeconds ?? (timeoutAlias as number);\n if (!Number.isInteger(timeout) || timeout <= 0) {\n throw fail(\"timeout_seconds must be a positive integer\");\n }\n return timeout;\n}\n\nfunction readJsonEntryScope(entry: JsonRecord, fail: (message: string) => PmCliError): LinkScope {\n const value = readJsonEntryString(entry, \"scope\", fail);\n if (value === undefined) {\n return \"project\";\n }\n if (!(SCOPE_VALUES as readonly string[]).includes(value)) {\n throw fail(`field \"scope\" must be one of: ${SCOPE_VALUES.join(\", \")}`);\n }\n return value as LinkScope;\n}\n\nfunction readJsonEntryEnvSet(entry: JsonRecord, fail: (message: string) => PmCliError): Record<string, string> | undefined {\n if (!Object.hasOwn(entry, \"env_set\")) {\n return undefined;\n }\n const value = entry.env_set;\n if (value === undefined) {\n return undefined;\n }\n if (!isPlainObject(value)) {\n throw fail('field \"env_set\" must be a JSON object mapping environment names to string values');\n }\n const envSet: Record<string, string> = {};\n for (const [key, entryValue] of Object.entries(value)) {\n if (typeof entryValue !== \"string\") {\n throw fail(`field \"env_set\" value for \"${key}\" must be a string`);\n }\n if (!LINKED_TEST_ENV_NAME_PATTERN.test(key)) {\n throw fail(`field \"env_set\" key \"${key}\" is invalid`);\n }\n if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {\n throw fail(`field \"env_set\" key \"${key}\" is reserved for sandbox safety`);\n }\n envSet[key] = entryValue;\n }\n return Object.keys(envSet).length > 0 ? envSet : undefined;\n}\n\nfunction readJsonEntryEnvClear(entry: JsonRecord, fail: (message: string) => PmCliError): string[] | undefined {\n const keys = readJsonEntryStringList(entry, \"env_clear\", fail);\n if (!keys) {\n return undefined;\n }\n for (const key of keys) {\n if (!LINKED_TEST_ENV_NAME_PATTERN.test(key)) {\n throw fail(`field \"env_clear\" key \"${key}\" is invalid`);\n }\n if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {\n throw fail(`field \"env_clear\" key \"${key}\" is reserved for sandbox safety`);\n }\n }\n return keys;\n}\n\nfunction readJsonEntryBoolean(entry: JsonRecord, key: string, fail: (message: string) => PmCliError): boolean | undefined {\n if (!Object.hasOwn(entry, key)) {\n return undefined;\n }\n const value = entry[key];\n if (value === undefined) {\n return undefined;\n }\n if (typeof value !== \"boolean\") {\n throw fail(`field \"${key}\" must be a JSON boolean (true or false)`);\n }\n return value;\n}\n\nfunction readJsonEntryMinLines(entry: JsonRecord, fail: (message: string) => PmCliError): number | undefined {\n if (!Object.hasOwn(entry, \"assert_stdout_min_lines\")) {\n return undefined;\n }\n const value = entry.assert_stdout_min_lines;\n if (value === undefined) {\n return undefined;\n }\n const parsed = readJsonEntryNumber(value, \"assert_stdout_min_lines\", fail);\n if (!Number.isInteger(parsed) || parsed < 0) {\n throw fail('field \"assert_stdout_min_lines\" must be an integer >= 0');\n }\n return parsed;\n}\n\nfunction readJsonEntryEqualsMap(entry: JsonRecord, fail: (message: string) => PmCliError): Record<string, string> | undefined {\n if (!Object.hasOwn(entry, \"assert_json_field_equals\")) {\n return undefined;\n }\n const value = entry.assert_json_field_equals;\n if (value === undefined) {\n return undefined;\n }\n if (!isPlainObject(value)) {\n throw fail('field \"assert_json_field_equals\" must be a JSON object mapping field paths to expected values');\n }\n const values: Record<string, string> = {};\n for (const [key, entryValue] of Object.entries(value)) {\n if (key.trim().length === 0) {\n throw fail('field \"assert_json_field_equals\" keys must be non-empty field paths');\n }\n if (typeof entryValue !== \"string\" && typeof entryValue !== \"number\" && typeof entryValue !== \"boolean\") {\n throw fail(`field \"assert_json_field_equals\" value for \"${key}\" must be a string, number, or boolean`);\n }\n values[key] = String(entryValue);\n }\n return Object.keys(values).length > 0 ? values : undefined;\n}\n\nfunction readJsonEntryGteMap(entry: JsonRecord, fail: (message: string) => PmCliError): Record<string, number> | undefined {\n if (!Object.hasOwn(entry, \"assert_json_field_gte\")) {\n return undefined;\n }\n const value = entry.assert_json_field_gte;\n if (value === undefined) {\n return undefined;\n }\n if (!isPlainObject(value)) {\n throw fail('field \"assert_json_field_gte\" must be a JSON object mapping field paths to numeric minimums');\n }\n const values: Record<string, number> = {};\n for (const [key, entryValue] of Object.entries(value)) {\n if (key.trim().length === 0) {\n throw fail('field \"assert_json_field_gte\" keys must be non-empty field paths');\n }\n values[key] = readJsonEntryNumber(entryValue, `assert_json_field_gte.${key}`, fail);\n }\n return Object.keys(values).length > 0 ? values : undefined;\n}\n\nfunction parseLinkedTestJsonEntry(rawEntry: unknown, label: string, optionName: string): LinkedTest {\n const fail = (message: string): PmCliError => new PmCliError(`${optionName} ${label} ${message}`, EXIT_CODE.USAGE);\n if (!isPlainObject(rawEntry)) {\n throw fail(`must be a JSON object with linked-test fields. Allowed keys: ${STRUCTURED_LINKED_TEST_KEYS.join(\", \")}.`);\n }\n const entry = normalizeJsonEntryKeys(rawEntry, fail);\n const commandValue = readJsonEntryString(entry, \"command\", fail);\n const cmdAlias = readJsonEntryString(entry, \"cmd\", fail);\n if (commandValue !== undefined && cmdAlias !== undefined && commandValue !== cmdAlias) {\n throw fail(\"command and cmd must match when both are provided\");\n }\n const command = commandValue ?? cmdAlias;\n if (command === undefined || command.trim().length === 0) {\n throw fail('requires a non-empty \"command\" string');\n }\n const pathValue = readJsonEntryString(entry, \"path\", fail);\n const pmContextModeValue = readJsonEntryString(entry, \"pm_context_mode\", fail);\n if (pmContextModeValue !== undefined && !(LINKED_TEST_PM_CONTEXT_MODE_VALUES as readonly string[]).includes(pmContextModeValue)) {\n throw fail(`field \"pm_context_mode\" must be one of: ${LINKED_TEST_PM_CONTEXT_MODE_VALUES.join(\", \")}`);\n }\n const noteValue = readJsonEntryString(entry, \"note\", fail);\n return {\n command,\n path: pathValue !== undefined && pathValue.length > 0 ? pathValue : undefined,\n scope: readJsonEntryScope(entry, fail),\n timeout_seconds: readJsonEntryTimeoutSeconds(entry, fail),\n pm_context_mode: pmContextModeValue as LinkedTest[\"pm_context_mode\"],\n env_set: readJsonEntryEnvSet(entry, fail),\n env_clear: readJsonEntryEnvClear(entry, fail),\n shared_host_safe: readJsonEntryBoolean(entry, \"shared_host_safe\", fail),\n assert_stdout_contains: readJsonEntryStringList(entry, \"assert_stdout_contains\", fail),\n assert_stdout_regex: readJsonEntryRegexList(entry, \"assert_stdout_regex\", fail),\n assert_stderr_contains: readJsonEntryStringList(entry, \"assert_stderr_contains\", fail),\n assert_stderr_regex: readJsonEntryRegexList(entry, \"assert_stderr_regex\", fail),\n assert_stdout_min_lines: readJsonEntryMinLines(entry, fail),\n assert_json_field_equals: readJsonEntryEqualsMap(entry, fail),\n assert_json_field_gte: readJsonEntryGteMap(entry, fail),\n note: noteValue !== undefined && noteValue.trim().length > 0 ? noteValue.trim() : undefined,\n };\n}\n\n/**\n * Implements parse linked test json entries for the public runtime surface of this module.\n */\nexport function parseLinkedTestJsonEntries(raw: string, optionName: string): LinkedTest[] {\n const trimmed = raw.trim();\n if (trimmed.length === 0) {\n throw new PmCliError(\n `${optionName} requires a JSON object or array of objects describing linked-test entries`,\n EXIT_CODE.USAGE,\n );\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(trimmed) as unknown;\n } catch (error: unknown) {\n throw new PmCliError(\n /* c8 ignore next -- JSON.parse only throws SyntaxError (an Error); String(error) fallback is defensive. */\n `${optionName} value is not valid JSON: ${error instanceof Error ? error.message : String(error)}. Provide a JSON object or array of objects, e.g. '{\"command\":\"node scripts/check.js --flag value, with commas\",\"timeout_seconds\":120}'.`,\n EXIT_CODE.USAGE,\n );\n }\n const entries = Array.isArray(parsed) ? parsed : [parsed];\n if (entries.length === 0) {\n throw new PmCliError(`${optionName} array must include at least one linked-test entry object`, EXIT_CODE.USAGE);\n }\n return entries.map((entry, index) =>\n parseLinkedTestJsonEntry(entry, entries.length > 1 ? `entry ${index + 1}` : \"entry\", optionName),\n );\n}\n\nexport const _testOnlyLinkedTestParsers = {\n parseLinkedTestJsonEntry,\n};\n"],"names":[],"mappings":"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","debugId":"f38e3071-bb2a-530d-81ee-256b76a93b0c"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import {
|
|
4
4
|
isTerminalStatus,
|
|
5
5
|
normalizeStatusForRegistry
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-HK72NWAD.js";
|
|
7
7
|
|
|
8
8
|
// dist/core/item/actionability.js
|
|
9
9
|
var BLOCKED_BY_DEPENDENCY_KIND = "blocked_by";
|
|
@@ -111,6 +111,6 @@ export {
|
|
|
111
111
|
collectBlockedByIds,
|
|
112
112
|
computeActionabilityReport
|
|
113
113
|
};
|
|
114
|
-
//# sourceMappingURL=chunk-
|
|
114
|
+
//# sourceMappingURL=chunk-N6DNM2FA.js.map
|
|
115
115
|
|
|
116
116
|
//# debugId=bf636ecd-87ea-5f64-922e-24b95e830769
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
parseLimit
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-EEY54JMF.js";
|
|
4
4
|
import {
|
|
5
5
|
nowIso
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-DRBV5UC2.js";
|
|
7
7
|
import {
|
|
8
|
-
EXIT_CODE,
|
|
9
8
|
PmCliError,
|
|
9
|
+
readSettings
|
|
10
|
+
} from "./chunk-P5YORJRH.js";
|
|
11
|
+
import {
|
|
12
|
+
EXIT_CODE,
|
|
10
13
|
ensureDir,
|
|
11
14
|
getSettingsPath,
|
|
12
15
|
getTestRunRecordPath,
|
|
@@ -20,11 +23,10 @@ import {
|
|
|
20
23
|
getTestRunsStdoutPath,
|
|
21
24
|
pathExists,
|
|
22
25
|
readFileIfExists,
|
|
23
|
-
readSettings,
|
|
24
26
|
resolveGlobalPmRoot,
|
|
25
27
|
resolvePmRoot,
|
|
26
28
|
writeFileAtomic
|
|
27
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-5VVUKE3U.js";
|
|
28
30
|
|
|
29
31
|
// dist/cli/commands/test-runs.js
|
|
30
32
|
import os from "node:os";
|
|
@@ -1026,13 +1028,14 @@ async function runTestRunsWorker(runId, global2) {
|
|
|
1026
1028
|
exit_code: finished.exit_code
|
|
1027
1029
|
};
|
|
1028
1030
|
}
|
|
1031
|
+
|
|
1029
1032
|
export {
|
|
1030
1033
|
runStartBackgroundRun,
|
|
1031
1034
|
runTestRunsList,
|
|
1032
|
-
runTestRunsLogs,
|
|
1033
|
-
runTestRunsResume,
|
|
1034
1035
|
runTestRunsStatus,
|
|
1036
|
+
runTestRunsLogs,
|
|
1035
1037
|
runTestRunsStop,
|
|
1038
|
+
runTestRunsResume,
|
|
1036
1039
|
runTestRunsWorker
|
|
1037
1040
|
};
|
|
1038
|
-
//# sourceMappingURL=
|
|
1041
|
+
//# sourceMappingURL=chunk-N7X4WP6L.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../../cli/commands/test-runs.ts", "../../../../../../../../core/test/background-runs.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * @module cli/commands/test-runs\n *\n * Implements the pm test runs command surface and its agent-facing runtime behavior.\n */\nimport os from \"node:os\";\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport {\n type BackgroundLogStream,\n type BackgroundTestRunKind,\n type BackgroundTestRunStatus,\n getBackgroundTestRunStatus,\n listBackgroundTestRuns,\n readBackgroundTestRunLogs,\n resumeBackgroundTestRun,\n runBackgroundTestRunWorker,\n spawnBackgroundTestRunWorker,\n startBackgroundTestRun,\n stopBackgroundTestRun,\n} from \"../../core/test/background-runs.js\";\nimport { getSettingsPath, resolveGlobalPmRoot, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport { parseLimit } from \"../shared-parsers.js\";\n\nconst BACKGROUND_STATUS_VALUES: readonly BackgroundTestRunStatus[] = [\"queued\", \"running\", \"passed\", \"failed\", \"stopped\", \"canceled\"];\nconst BACKGROUND_STREAM_VALUES: readonly BackgroundLogStream[] = [\"stdout\", \"stderr\", \"both\"];\n\nfunction normalizeStatus(value: string | undefined): BackgroundTestRunStatus | undefined {\n if (value === undefined) {\n return undefined;\n }\n const normalized = value.trim().toLowerCase();\n if ((BACKGROUND_STATUS_VALUES as readonly string[]).includes(normalized)) {\n return normalized as BackgroundTestRunStatus;\n }\n throw new PmCliError(`Invalid --status value \"${value}\"`, EXIT_CODE.USAGE);\n}\n\nfunction normalizeStream(value: string | undefined): BackgroundLogStream {\n if (value === undefined || value.trim().length === 0) {\n return \"stderr\";\n }\n const normalized = value.trim().toLowerCase();\n if ((BACKGROUND_STREAM_VALUES as readonly string[]).includes(normalized)) {\n return normalized as BackgroundLogStream;\n }\n throw new PmCliError(`Invalid --stream value \"${value}\"`, EXIT_CODE.USAGE);\n}\n\nfunction resolveWhoamiFallback(): string | undefined {\n try {\n const username = os.userInfo().username.trim();\n if (username.length > 0) {\n return username;\n }\n } catch {\n // Fall back to environment-derived attribution.\n }\n return undefined;\n}\n\nfunction resolveRequestedBy(author: string | undefined, fallback: string): string {\n const candidates = [\n author,\n process.env.PM_AUTHOR,\n fallback,\n process.env.USER,\n process.env.LOGNAME,\n process.env.USERNAME,\n resolveWhoamiFallback(),\n ];\n for (const candidate of candidates) {\n if (typeof candidate !== \"string\") {\n continue;\n }\n const trimmed = candidate.trim();\n if (trimmed.length > 0) {\n return trimmed;\n }\n }\n return \"unknown\";\n}\n\nasync function ensureInitialized(pmRoot: string): Promise<void> {\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n}\n\n/**\n * Documents the start background run command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface StartBackgroundRunCommandOptions {\n kind: BackgroundTestRunKind;\n commandArgs: string[];\n targetId?: string;\n statusFilter?: string;\n author?: string;\n noExtensions?: boolean;\n}\n\n/**\n * Documents the start background run result payload exchanged by command, SDK, and package integrations.\n */\nexport interface StartBackgroundRunResult {\n started: boolean;\n duplicate_of?: string;\n run: unknown;\n}\n\n/**\n * Implements run start background run for the public runtime surface of this module.\n */\nexport async function runStartBackgroundRun(\n options: StartBackgroundRunCommandOptions,\n global: GlobalOptions,\n): Promise<StartBackgroundRunResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n const globalPmRoot = resolveGlobalPmRoot(process.cwd());\n await ensureInitialized(pmRoot);\n const settings = await readSettings(pmRoot);\n const requestedBy = resolveRequestedBy(options.author, settings.author_default);\n const started = await startBackgroundTestRun({\n pmRoot,\n globalPmRoot,\n kind: options.kind,\n commandArgs: options.commandArgs,\n requestedBy,\n targetId: options.targetId,\n statusFilter: options.statusFilter,\n });\n if (!started.started) {\n return {\n started: false,\n duplicate_of: started.duplicate_of,\n run: started.run,\n };\n }\n const spawned = await spawnBackgroundTestRunWorker({\n pmRoot,\n runId: started.run.id,\n noExtensions: options.noExtensions === true,\n });\n return {\n started: true,\n run: spawned,\n };\n}\n\n/**\n * Documents the test runs list command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface TestRunsListCommandOptions {\n status?: string;\n limit?: string;\n}\n\n/**\n * Implements run test runs list for the public runtime surface of this module.\n */\nexport async function runTestRunsList(options: TestRunsListCommandOptions, global: GlobalOptions): Promise<{\n runs: unknown[];\n count: number;\n filters: {\n status?: BackgroundTestRunStatus;\n limit?: number;\n };\n}> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n await ensureInitialized(pmRoot);\n const status = normalizeStatus(options.status);\n const limit = parseLimit(options.limit, \"limit\");\n const runs = await listBackgroundTestRuns(pmRoot, { status, limit });\n return {\n runs,\n count: runs.length,\n filters: {\n status,\n limit,\n },\n };\n}\n\n/**\n * Implements run test runs status for the public runtime surface of this module.\n */\nexport async function runTestRunsStatus(runId: string, global: GlobalOptions): Promise<{\n run: unknown;\n health: unknown;\n}> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n await ensureInitialized(pmRoot);\n const status = await getBackgroundTestRunStatus(pmRoot, runId);\n return {\n run: status.run,\n health: status.health,\n };\n}\n\n/**\n * Documents the test runs logs command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface TestRunsLogsCommandOptions {\n stream?: string;\n tail?: string;\n}\n\n/**\n * Implements run test runs logs for the public runtime surface of this module.\n */\nexport async function runTestRunsLogs(\n runId: string,\n options: TestRunsLogsCommandOptions,\n global: GlobalOptions,\n): Promise<{\n run: unknown;\n stream: BackgroundLogStream;\n tail: number;\n stdout: string[];\n stderr: string[];\n}> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n await ensureInitialized(pmRoot);\n const stream = normalizeStream(options.stream);\n const tail = parseLimit(options.tail, \"tail\");\n const logs = await readBackgroundTestRunLogs(pmRoot, runId, stream, tail);\n return {\n run: logs.run,\n stream: logs.stream,\n tail: logs.tail,\n stdout: logs.stdout,\n stderr: logs.stderr,\n };\n}\n\n/**\n * Documents the test runs stop command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface TestRunsStopCommandOptions {\n force?: boolean;\n}\n\n/**\n * Implements run test runs stop for the public runtime surface of this module.\n */\nexport async function runTestRunsStop(\n runId: string,\n options: TestRunsStopCommandOptions,\n global: GlobalOptions,\n): Promise<{\n run: unknown;\n signal_sent: \"SIGTERM\" | \"SIGKILL\" | \"none\";\n}> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n await ensureInitialized(pmRoot);\n const stopped = await stopBackgroundTestRun(pmRoot, runId, options.force === true);\n return {\n run: stopped.run,\n signal_sent: stopped.signal_sent,\n };\n}\n\n/**\n * Documents the test runs resume command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface TestRunsResumeCommandOptions {\n author?: string;\n noExtensions?: boolean;\n}\n\n/**\n * Implements run test runs resume for the public runtime surface of this module.\n */\nexport async function runTestRunsResume(\n runId: string,\n options: TestRunsResumeCommandOptions,\n global: GlobalOptions,\n): Promise<{\n resumed_from: string;\n run: unknown;\n}> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n await ensureInitialized(pmRoot);\n const settings = await readSettings(pmRoot);\n const requestedBy = resolveRequestedBy(options.author, settings.author_default);\n const resumed = await resumeBackgroundTestRun(pmRoot, runId, requestedBy, options.noExtensions === true);\n return {\n resumed_from: runId,\n run: resumed,\n };\n}\n\n/**\n * Implements run test runs worker for the public runtime surface of this module.\n */\nexport async function runTestRunsWorker(runId: string, global: GlobalOptions): Promise<{\n id: string;\n status: BackgroundTestRunStatus;\n exit_code?: number;\n}> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n await ensureInitialized(pmRoot);\n const finished = await runBackgroundTestRunWorker(pmRoot, runId, global.noExtensions === true);\n return {\n id: finished.id,\n status: finished.status,\n exit_code: finished.exit_code,\n };\n}\n", "/**\n * @module core/test/background-runs\n *\n * Runs and records linked-test orchestration for Background Runs.\n */\nimport fs from \"node:fs/promises\";\nimport { spawn, type ChildProcess } from \"node:child_process\";\nimport { createHash, randomBytes } from \"node:crypto\";\nimport path from \"node:path\";\nimport { ensureDir, pathExists, readFileIfExists, writeFileAtomic } from \"../fs/fs-utils.js\";\nimport { PmCliError } from \"../shared/errors.js\";\nimport { EXIT_CODE } from \"../shared/constants.js\";\nimport { nowIso } from \"../shared/time.js\";\nimport {\n getTestRunRecordPath,\n getTestRunResultPath,\n getTestRunStderrPath,\n getTestRunStdoutPath,\n getTestRunsPath,\n getTestRunsRecordsPath,\n getTestRunsResultsPath,\n getTestRunsStderrPath,\n getTestRunsStdoutPath,\n} from \"../store/paths.js\";\n\nconst BACKGROUND_RUN_ACTIVE_STATUSES = new Set<BackgroundTestRunStatus>([\"queued\", \"running\"]);\nconst BACKGROUND_RUN_TERMINAL_STATUSES = new Set<BackgroundTestRunStatus>([\"passed\", \"failed\", \"stopped\", \"canceled\"]);\nconst DEFAULT_BACKGROUND_RUN_RESOURCE_SNAPSHOT_INTERVAL_MS = 3000;\nconst DEFAULT_BACKGROUND_RUN_FORCE_KILL_DELAY_MS = 3000;\nconst DEFAULT_BACKGROUND_RUN_HEARTBEAT_STALE_MS = 30000;\nconst DEFAULT_BACKGROUND_RUN_LOG_TAIL_LINES = 100;\nconst PROC_STAT_TICKS_PER_SECOND = 100;\n\n/**\n * Restricts background test run kind values accepted by command, SDK, and storage contracts.\n */\nexport type BackgroundTestRunKind = \"test\" | \"test-all\";\n\n/**\n * Restricts background test run status values accepted by command, SDK, and storage contracts.\n */\nexport type BackgroundTestRunStatus = \"queued\" | \"running\" | \"passed\" | \"failed\" | \"stopped\" | \"canceled\";\n\n/**\n * Restricts background log stream values accepted by command, SDK, and storage contracts.\n */\nexport type BackgroundLogStream = \"stdout\" | \"stderr\" | \"both\";\n\n/**\n * Documents the background run progress payload exchanged by command, SDK, and package integrations.\n */\nexport interface BackgroundRunProgress {\n phase: \"queued\" | \"running\" | \"stopping\" | \"finished\";\n message?: string;\n item_index?: number;\n item_total?: number;\n item_id?: string;\n linked_test_index?: number;\n linked_test_total?: number;\n current_command?: string;\n elapsed_ms?: number;\n heartbeat_at?: string;\n}\n\n/**\n * Documents the background run resource snapshot payload exchanged by command, SDK, and package integrations.\n */\nexport interface BackgroundRunResourceSnapshot {\n recorded_at: string;\n rss_bytes?: number;\n cpu_user_seconds?: number;\n cpu_system_seconds?: number;\n uptime_seconds?: number;\n}\n\n/**\n * Documents the background run summary payload exchanged by command, SDK, and package integrations.\n */\nexport interface BackgroundRunSummary {\n items?: number;\n linked_tests?: number;\n passed: number;\n failed: number;\n skipped: number;\n fail_on_skipped_triggered?: boolean;\n}\n\n/**\n * Documents the background test run record payload exchanged by command, SDK, and package integrations.\n */\nexport interface BackgroundTestRunRecord {\n id: string;\n kind: BackgroundTestRunKind;\n status: BackgroundTestRunStatus;\n created_at: string;\n started_at?: string;\n finished_at?: string;\n updated_at: string;\n requested_by: string;\n fingerprint: string;\n command_args: string[];\n command_label: string;\n pm_root: string;\n global_pm_root: string;\n target_id?: string;\n status_filter?: string;\n attempt: number;\n resumed_from?: string;\n resumed_by?: string;\n worker_pid?: number;\n child_pid?: number;\n exit_code?: number;\n signal?: string;\n stdout_path: string;\n stderr_path: string;\n result_path: string;\n progress?: BackgroundRunProgress;\n resource?: BackgroundRunResourceSnapshot;\n summary?: BackgroundRunSummary;\n stop_requested_at?: string;\n duplicate_of?: string;\n error?: string;\n}\n\n/**\n * Documents the start background test run options payload exchanged by command, SDK, and package integrations.\n */\nexport interface StartBackgroundTestRunOptions {\n pmRoot: string;\n globalPmRoot: string;\n kind: BackgroundTestRunKind;\n commandArgs: string[];\n requestedBy: string;\n targetId?: string;\n statusFilter?: string;\n resumedFrom?: string;\n resumedBy?: string;\n attempt?: number;\n}\n\n/**\n * Documents the start background test run result payload exchanged by command, SDK, and package integrations.\n */\nexport interface StartBackgroundTestRunResult {\n started: boolean;\n run: BackgroundTestRunRecord;\n duplicate_of?: string;\n}\n\n/**\n * Documents the spawn background test run worker options payload exchanged by command, SDK, and package integrations.\n */\nexport interface SpawnBackgroundTestRunWorkerOptions {\n pmRoot: string;\n runId: string;\n noExtensions?: boolean;\n}\n\n/**\n * Documents the stop background test run result payload exchanged by command, SDK, and package integrations.\n */\nexport interface StopBackgroundTestRunResult {\n run: BackgroundTestRunRecord;\n signal_sent: \"SIGTERM\" | \"SIGKILL\" | \"none\";\n}\n\n/**\n * Documents the list background test run options payload exchanged by command, SDK, and package integrations.\n */\nexport interface ListBackgroundTestRunOptions {\n status?: BackgroundTestRunStatus;\n limit?: number;\n}\n\n/**\n * Documents the background run health payload exchanged by command, SDK, and package integrations.\n */\nexport interface BackgroundRunHealth {\n state: \"healthy\" | \"stale\" | \"inactive\";\n last_heartbeat_at?: string;\n heartbeat_lag_ms?: number;\n worker_alive: boolean;\n child_alive: boolean;\n}\n\n/**\n * Documents the background run status view payload exchanged by command, SDK, and package integrations.\n */\nexport interface BackgroundRunStatusView {\n run: BackgroundTestRunRecord;\n health: BackgroundRunHealth;\n}\n\n/**\n * Documents the background run logs result payload exchanged by command, SDK, and package integrations.\n */\nexport interface BackgroundRunLogsResult {\n run: BackgroundTestRunRecord;\n stream: BackgroundLogStream;\n tail: number;\n stdout: string[];\n stderr: string[];\n}\n\ninterface WorkerEvaluationResult {\n summary: BackgroundRunSummary;\n parsedResult: unknown | null;\n}\n\ninterface BackgroundWorkerStopState {\n stopRequested: boolean;\n}\n\ninterface BackgroundRunRecordWriteScheduler {\n schedule: () => void;\n flush: () => Promise<void>;\n}\n\nfunction nowMs(): number {\n return Date.now();\n}\n\nfunction normalizeCommandArgs(args: string[]): string[] {\n return args.map((entry) => entry.trim()).filter((entry) => entry.length > 0);\n}\n\nfunction summarizeCommandLabel(args: string[]): string {\n const joined = args.join(\" \").replaceAll(/\\s+/g, \" \").trim();\n if (joined.length <= 180) {\n return joined;\n }\n return `${joined.slice(0, 177)}...`;\n}\n\nfunction buildRunId(): string {\n const timePart = Date.now().toString(36);\n const randomPart = randomBytes(3).toString(\"hex\");\n return `tr-${timePart}-${randomPart}`;\n}\n\n/**\n * Implements build background test run fingerprint for the public runtime surface of this module.\n */\nexport function buildBackgroundTestRunFingerprint(kind: BackgroundTestRunKind, commandArgs: string[], pmRoot: string): string {\n const payload = {\n kind,\n command: normalizeCommandArgs(commandArgs),\n pm_root: path.resolve(pmRoot),\n };\n return createHash(\"sha256\").update(JSON.stringify(payload)).digest(\"hex\");\n}\n\nfunction isPidRunning(pid: number | undefined): boolean {\n if (!Number.isInteger(pid) || !pid || pid <= 0) {\n return false;\n }\n try {\n process.kill(pid, 0);\n return true;\n } catch (error: unknown) {\n const code = typeof error === \"object\" && error !== null && \"code\" in error ? (error as { code?: string }).code : undefined;\n return code === \"EPERM\";\n }\n}\n\nasync function ensureBackgroundRunStorage(pmRoot: string): Promise<void> {\n await ensureDir(getTestRunsPath(pmRoot));\n await ensureDir(getTestRunsRecordsPath(pmRoot));\n await ensureDir(getTestRunsStdoutPath(pmRoot));\n await ensureDir(getTestRunsStderrPath(pmRoot));\n await ensureDir(getTestRunsResultsPath(pmRoot));\n}\n\nasync function parseBackgroundRunRecord(raw: string, recordPath: string): Promise<BackgroundTestRunRecord> {\n try {\n const parsed = JSON.parse(raw) as BackgroundTestRunRecord;\n if (!parsed || typeof parsed !== \"object\" || typeof parsed.id !== \"string\") {\n throw new Error(\"invalid run record payload\");\n }\n return parsed;\n } catch (error: unknown) {\n throw new PmCliError(\n `Failed to parse background test run record at ${recordPath}: ${error instanceof Error ? error.message : String(error)}`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n}\n\nasync function writeBackgroundRunRecord(pmRoot: string, record: BackgroundTestRunRecord): Promise<void> {\n const next: BackgroundTestRunRecord = {\n ...record,\n updated_at: nowIso(),\n };\n await writeFileAtomic(getTestRunRecordPath(pmRoot, record.id), `${JSON.stringify(next, null, 2)}\\n`);\n}\n\n/**\n * Implements read background test run record for the public runtime surface of this module.\n */\nexport async function readBackgroundTestRunRecord(pmRoot: string, runId: string): Promise<BackgroundTestRunRecord | null> {\n const recordPath = getTestRunRecordPath(pmRoot, runId);\n const raw = await readFileIfExists(recordPath);\n if (!raw) {\n return null;\n }\n return parseBackgroundRunRecord(raw, recordPath);\n}\n\nasync function listBackgroundRunRecordPaths(pmRoot: string): Promise<string[]> {\n const recordsRoot = getTestRunsRecordsPath(pmRoot);\n if (!(await pathExists(recordsRoot))) {\n return [];\n }\n const entries = await fs.readdir(recordsRoot, { withFileTypes: true });\n return entries\n .filter((entry) => entry.isFile() && entry.name.endsWith(\".json\"))\n .map((entry) => path.join(recordsRoot, entry.name))\n .sort((left, right) => right.localeCompare(left));\n}\n\nfunction parseLinuxRssStatus(raw: string): number | undefined {\n const match = raw.match(/^VmRSS:\\s+(\\d+)\\s+kB$/m);\n if (!match) {\n return undefined;\n }\n return Number.parseInt(match[1], 10) * 1024;\n}\n\nasync function readLinuxRssBytes(pid: number): Promise<number | undefined> {\n if (process.platform !== \"linux\") {\n return undefined;\n }\n try {\n const raw = await fs.readFile(`/proc/${pid}/status`, \"utf8\");\n return parseLinuxRssStatus(raw);\n } catch {\n return undefined;\n }\n}\n\nfunction parseLinuxCpuStat(raw: string): { cpu_user_seconds?: number; cpu_system_seconds?: number } {\n const closeParenIndex = raw.lastIndexOf(\")\");\n if (closeParenIndex < 0) {\n return {};\n }\n const remainder = raw.slice(closeParenIndex + 2).trim();\n const parts = remainder.split(/\\s+/);\n const utimeTicks = Number.parseInt(parts[11], 10);\n const stimeTicks = Number.parseInt(parts[12], 10);\n if (!Number.isFinite(utimeTicks) || !Number.isFinite(stimeTicks)) {\n return {};\n }\n return {\n cpu_user_seconds: utimeTicks / PROC_STAT_TICKS_PER_SECOND,\n cpu_system_seconds: stimeTicks / PROC_STAT_TICKS_PER_SECOND,\n };\n}\n\nasync function readLinuxCpuSeconds(\n pid: number,\n): Promise<{ cpu_user_seconds?: number; cpu_system_seconds?: number }> {\n if (process.platform !== \"linux\") {\n return {};\n }\n try {\n const raw = await fs.readFile(`/proc/${pid}/stat`, \"utf8\");\n return parseLinuxCpuStat(raw);\n } catch {\n /* c8 ignore next -- /proc entries can disappear between liveness and stat reads. */\n return {};\n }\n}\n\nasync function buildResourceSnapshot(record: BackgroundTestRunRecord): Promise<BackgroundRunResourceSnapshot | undefined> {\n const pid = record.child_pid ?? record.worker_pid;\n if (!isPidRunning(pid)) {\n return undefined;\n }\n const rssBytes = await readLinuxRssBytes(pid as number);\n const cpu = await readLinuxCpuSeconds(pid as number);\n const startedAtMs = record.started_at ? Date.parse(record.started_at) : Number.NaN;\n const uptimeSeconds = Number.isFinite(startedAtMs) ? Math.max(0, (nowMs() - startedAtMs) / 1000) : undefined;\n return {\n recorded_at: nowIso(),\n rss_bytes: rssBytes,\n cpu_user_seconds: cpu.cpu_user_seconds,\n cpu_system_seconds: cpu.cpu_system_seconds,\n uptime_seconds: uptimeSeconds,\n };\n}\n\nfunction readCount(value: unknown): number {\n return typeof value === \"number\" && Number.isFinite(value) ? value : 0;\n}\n\nfunction evaluateWorkerResult(kind: BackgroundTestRunKind, payload: unknown): WorkerEvaluationResult {\n if (!payload || typeof payload !== \"object\") {\n return {\n summary: {\n passed: 0,\n failed: 1,\n skipped: 0,\n },\n parsedResult: null,\n };\n }\n const record = payload as Record<string, unknown>;\n if (kind === \"test-all\") {\n const totals = (record.totals ?? {}) as Record<string, unknown>;\n return {\n summary: {\n items: typeof totals.items === \"number\" ? totals.items : undefined,\n linked_tests: typeof totals.linked_tests === \"number\" ? totals.linked_tests : undefined,\n passed: readCount(totals.passed),\n failed: readCount(totals.failed),\n skipped: readCount(totals.skipped),\n fail_on_skipped_triggered: record.fail_on_skipped_triggered === true ? true : undefined,\n },\n parsedResult: payload,\n };\n }\n const runResults = Array.isArray(record.run_results) ? record.run_results : [];\n let passed = 0;\n let failed = 0;\n let skipped = 0;\n for (const entry of runResults) {\n if (!entry || typeof entry !== \"object\") {\n continue;\n }\n const status = (entry as { status?: unknown }).status;\n if (status === \"passed\") {\n passed += 1;\n continue;\n }\n if (status === \"failed\") {\n failed += 1;\n continue;\n }\n skipped += 1;\n }\n return {\n summary: {\n passed,\n failed,\n skipped,\n fail_on_skipped_triggered: record.fail_on_skipped_triggered === true ? true : undefined,\n },\n parsedResult: payload,\n };\n}\n\nfunction parseProgressLine(stderrLine: string): Partial<BackgroundRunProgress> | null {\n const line = stderrLine.trim();\n if (line.length === 0) {\n return null;\n }\n const testAllMatch = line.match(/\\[pm test-all\\]\\s+item\\s+(\\d+)\\/(\\d+)\\s+(start|end)\\s+id=([^\\s]+)/i);\n if (testAllMatch) {\n const itemIndex = Number.parseInt(testAllMatch[1], 10);\n const itemTotal = Number.parseInt(testAllMatch[2], 10);\n return {\n item_index: itemIndex,\n item_total: itemTotal,\n item_id: testAllMatch[4],\n linked_test_index: undefined,\n linked_test_total: undefined,\n current_command: undefined,\n elapsed_ms: undefined,\n heartbeat_at: nowIso(),\n phase: testAllMatch[3]?.toLowerCase() === \"end\" ? \"finished\" : \"running\",\n };\n }\n const linkedTestMatch = line.match(/\\[pm test\\]\\s+linked-test\\s+(\\d+)\\/(\\d+)\\s+(start|running|end)(?:.*elapsed_ms=(\\d+))?/i);\n if (!linkedTestMatch) {\n return null;\n }\n const index = Number.parseInt(linkedTestMatch[1], 10);\n const total = Number.parseInt(linkedTestMatch[2], 10);\n const elapsed = linkedTestMatch[4] ? Number.parseInt(linkedTestMatch[4], 10) : undefined;\n const commandMatch = line.match(/\\scommand=\"((?:\\\\.|[^\"\\\\])*)\"/);\n const currentCommand = commandMatch\n ? commandMatch[1].replaceAll('\\\\\"', '\"').replaceAll(\"\\\\\\\\\", \"\\\\\")\n : undefined;\n return {\n linked_test_index: index,\n linked_test_total: total,\n current_command: currentCommand,\n elapsed_ms: Number.isFinite(elapsed) ? elapsed : undefined,\n heartbeat_at: nowIso(),\n phase: linkedTestMatch[3]?.toLowerCase() === \"end\" ? \"finished\" : \"running\",\n };\n}\n\nfunction splitLines(value: string): string[] {\n return value\n .split(/\\r?\\n/)\n .map((entry) => entry.trimEnd())\n .filter((entry) => entry.length > 0);\n}\n\nfunction tailLines(value: string, limit: number): string[] {\n if (limit <= 0) {\n return [];\n }\n const lines = splitLines(value);\n if (lines.length <= limit) {\n return lines;\n }\n return lines.slice(lines.length - limit);\n}\n\nasync function resolveBackgroundCliEntry(cwd: string): Promise<string> {\n const configured = process.env.PM_BACKGROUND_CLI_ENTRY?.trim();\n if (configured && configured.length > 0) {\n const resolvedConfigured = path.resolve(cwd, configured);\n if (await pathExists(resolvedConfigured)) {\n return resolvedConfigured;\n }\n }\n const distEntry = path.resolve(cwd, \"dist\", \"cli.js\");\n if (await pathExists(distEntry)) {\n return distEntry;\n }\n const argvEntry = process.argv[1]?.trim();\n if (argvEntry && argvEntry.length > 0) {\n const resolvedArgvEntry = path.resolve(cwd, argvEntry);\n if (await pathExists(resolvedArgvEntry)) {\n return resolvedArgvEntry;\n }\n }\n throw new PmCliError(\n \"Unable to resolve a CLI entrypoint for background test runs. Build the project or set PM_BACKGROUND_CLI_ENTRY.\",\n EXIT_CODE.GENERIC_FAILURE,\n );\n}\n\nasync function refreshRunIfStale(pmRoot: string, record: BackgroundTestRunRecord): Promise<BackgroundTestRunRecord> {\n if (!BACKGROUND_RUN_ACTIVE_STATUSES.has(record.status)) {\n return record;\n }\n const workerAlive = isPidRunning(record.worker_pid);\n if (workerAlive) {\n return record;\n }\n if (record.finished_at) {\n return record;\n }\n const next: BackgroundTestRunRecord = {\n ...record,\n status: \"failed\",\n finished_at: nowIso(),\n error: record.error ?? \"Background test run worker exited before writing terminal status.\",\n };\n await writeBackgroundRunRecord(pmRoot, next);\n return next;\n}\n\n/**\n * Implements start background test run for the public runtime surface of this module.\n */\nexport async function startBackgroundTestRun(options: StartBackgroundTestRunOptions): Promise<StartBackgroundTestRunResult> {\n await ensureBackgroundRunStorage(options.pmRoot);\n const normalizedArgs = normalizeCommandArgs(options.commandArgs);\n if (normalizedArgs.length === 0) {\n throw new PmCliError(\"Background test run requires command arguments.\", EXIT_CODE.USAGE);\n }\n const fingerprint = buildBackgroundTestRunFingerprint(options.kind, normalizedArgs, options.pmRoot);\n const existingRuns = await listBackgroundTestRuns(options.pmRoot, {});\n for (const existing of existingRuns) {\n const refreshed = await refreshRunIfStale(options.pmRoot, existing);\n if (refreshed.fingerprint !== fingerprint) {\n continue;\n }\n if (!BACKGROUND_RUN_ACTIVE_STATUSES.has(refreshed.status) || !isPidRunning(refreshed.worker_pid)) {\n continue;\n }\n return {\n started: false,\n run: {\n ...refreshed,\n duplicate_of: refreshed.id,\n },\n duplicate_of: refreshed.id,\n };\n }\n\n const runId = buildRunId();\n const createdAt = nowIso();\n const stdoutPath = getTestRunStdoutPath(options.pmRoot, runId);\n const stderrPath = getTestRunStderrPath(options.pmRoot, runId);\n const resultPath = getTestRunResultPath(options.pmRoot, runId);\n await fs.writeFile(stdoutPath, \"\", \"utf8\");\n await fs.writeFile(stderrPath, \"\", \"utf8\");\n const record: BackgroundTestRunRecord = {\n id: runId,\n kind: options.kind,\n status: \"queued\",\n created_at: createdAt,\n updated_at: createdAt,\n requested_by: options.requestedBy,\n fingerprint,\n command_args: normalizedArgs,\n command_label: summarizeCommandLabel(normalizedArgs),\n pm_root: options.pmRoot,\n global_pm_root: options.globalPmRoot,\n target_id: options.targetId,\n status_filter: options.statusFilter,\n attempt: typeof options.attempt === \"number\" && Number.isFinite(options.attempt) && options.attempt >= 1\n ? Math.floor(options.attempt)\n : 1,\n resumed_from: options.resumedFrom,\n resumed_by: options.resumedBy,\n stdout_path: stdoutPath,\n stderr_path: stderrPath,\n result_path: resultPath,\n progress: {\n phase: \"queued\",\n message: \"Queued for background execution.\",\n heartbeat_at: createdAt,\n },\n };\n await writeBackgroundRunRecord(options.pmRoot, record);\n return {\n started: true,\n run: record,\n };\n}\n\n/**\n * Implements spawn background test run worker for the public runtime surface of this module.\n */\nexport async function spawnBackgroundTestRunWorker(options: SpawnBackgroundTestRunWorkerOptions): Promise<BackgroundTestRunRecord> {\n const record = await readBackgroundTestRunRecord(options.pmRoot, options.runId);\n if (!record) {\n throw new PmCliError(`Background test run ${options.runId} not found`, EXIT_CODE.NOT_FOUND);\n }\n if (BACKGROUND_RUN_TERMINAL_STATUSES.has(record.status)) {\n throw new PmCliError(`Background test run ${record.id} is already terminal (${record.status}).`, EXIT_CODE.CONFLICT);\n }\n const cliEntry = await resolveBackgroundCliEntry(process.cwd());\n const args: string[] = [];\n if (options.noExtensions === true) {\n args.push(\"--no-extensions\");\n }\n args.push(\"--path\", record.pm_root, \"test-runs-worker\", record.id);\n const env: NodeJS.ProcessEnv = {\n ...process.env,\n PM_PATH: record.pm_root,\n PM_GLOBAL_PATH: record.global_pm_root,\n PM_BACKGROUND_TEST_RUN_ID: record.id,\n PM_BACKGROUND_TEST_RUN_ATTEMPT: String(record.attempt),\n PM_BACKGROUND_TEST_RUN_RESUMED_FROM: record.resumed_from ?? \"\",\n FORCE_COLOR: \"0\",\n };\n const child = spawn(process.execPath, [cliEntry, ...args], {\n cwd: process.cwd(),\n env,\n detached: true,\n stdio: \"ignore\",\n windowsHide: true,\n });\n child.unref();\n const next: BackgroundTestRunRecord = {\n ...record,\n status: \"queued\",\n worker_pid: child.pid as number | undefined,\n progress: {\n phase: \"queued\",\n message: \"Worker process started.\",\n heartbeat_at: nowIso(),\n },\n };\n await writeBackgroundRunRecord(options.pmRoot, next);\n return next;\n}\n\nasync function appendFileOrdered(queue: Promise<void>, filePath: string, text: string): Promise<void> {\n await queue;\n await fs.appendFile(filePath, text, \"utf8\");\n}\n\nfunction resolvePositiveEnvInteger(name: string, fallback: number): number {\n const parsed = Number.parseInt(process.env[name] ?? \"\", 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n}\n\nfunction buildBackgroundWorkerEnv(record: BackgroundTestRunRecord): NodeJS.ProcessEnv {\n return {\n ...process.env,\n PM_PATH: record.pm_root,\n PM_GLOBAL_PATH: record.global_pm_root,\n FORCE_COLOR: \"0\",\n };\n}\n\nfunction buildBackgroundWorkerChildArgs(record: BackgroundTestRunRecord, noExtensions: boolean): string[] {\n return noExtensions ? [\"--no-extensions\", ...record.command_args] : [...record.command_args];\n}\n\nfunction createBackgroundRunRecordWriteScheduler(\n pmRoot: string,\n record: BackgroundTestRunRecord,\n): BackgroundRunRecordWriteScheduler {\n let writeQueue: Promise<void> = Promise.resolve();\n return {\n schedule(): void {\n writeQueue = writeQueue.then(async () => {\n try {\n await writeBackgroundRunRecord(pmRoot, record);\n } catch {\n // Keep worker alive even if a single metadata write fails.\n }\n });\n },\n async flush(): Promise<void> {\n await writeQueue;\n },\n };\n}\n\nfunction requestChildSignal(child: ChildProcess, signal: NodeJS.Signals): void {\n try {\n child.kill(signal);\n } catch {\n // Child may already be gone.\n }\n}\n\nasync function requestBackgroundWorkerStop(\n record: BackgroundTestRunRecord,\n child: ChildProcess,\n state: BackgroundWorkerStopState,\n scheduleRecordWrite: () => void,\n): Promise<void> {\n if (state.stopRequested) {\n return;\n }\n state.stopRequested = true;\n record.stop_requested_at = nowIso();\n record.progress = {\n ...record.progress,\n phase: \"stopping\",\n message: \"Stop requested for background run.\",\n heartbeat_at: nowIso(),\n };\n scheduleRecordWrite();\n requestChildSignal(child, \"SIGTERM\");\n const forceTimer = setTimeout(() => requestChildSignal(child, \"SIGKILL\"), resolvePositiveEnvInteger(\n \"PM_BACKGROUND_RUN_FORCE_KILL_DELAY_MS\",\n DEFAULT_BACKGROUND_RUN_FORCE_KILL_DELAY_MS,\n ));\n forceTimer.unref?.();\n}\n\nfunction buildItemBackgroundProgress(line: string, progressPatch: Partial<BackgroundRunProgress>, phase: \"running\" | \"stopping\"): BackgroundRunProgress {\n return {\n phase,\n message: line,\n heartbeat_at: nowIso(),\n item_index: progressPatch.item_index,\n item_total: progressPatch.item_total,\n item_id: progressPatch.item_id,\n linked_test_index: undefined,\n linked_test_total: undefined,\n current_command: undefined,\n elapsed_ms: undefined,\n };\n}\n\nfunction buildLinkedTestBackgroundProgress(\n line: string,\n record: BackgroundTestRunRecord,\n progressPatch: Partial<BackgroundRunProgress>,\n phase: \"running\" | \"stopping\",\n): BackgroundRunProgress {\n return {\n phase,\n message: line,\n heartbeat_at: nowIso(),\n item_index: progressPatch.item_index ?? record.progress?.item_index,\n item_total: progressPatch.item_total ?? record.progress?.item_total,\n item_id: progressPatch.item_id ?? record.progress?.item_id,\n linked_test_index: progressPatch.linked_test_index,\n linked_test_total: progressPatch.linked_test_total,\n current_command: progressPatch.current_command,\n elapsed_ms: progressPatch.elapsed_ms,\n };\n}\n\nfunction applyBackgroundWorkerProgressLine(record: BackgroundTestRunRecord, line: string, stopRequested: boolean): boolean {\n const progressPatch = parseProgressLine(line);\n if (!progressPatch) {\n return false;\n }\n const phase = record.progress?.phase === \"stopping\" ? \"stopping\" : \"running\";\n record.progress = progressPatch.item_id\n ? buildItemBackgroundProgress(line, progressPatch, phase)\n : buildLinkedTestBackgroundProgress(line, record, progressPatch, phase);\n if (progressPatch.phase === \"finished\" && !stopRequested) {\n record.progress.phase = \"running\";\n }\n return true;\n}\n\nfunction parseBackgroundWorkerStdout(stdoutBuffer: string): unknown | null {\n if (stdoutBuffer.trim().length === 0) {\n return null;\n }\n try {\n return JSON.parse(stdoutBuffer) as unknown;\n } catch {\n return null;\n }\n}\n\nfunction resolveBackgroundWorkerFinalStatus(record: BackgroundTestRunRecord, stopRequested: boolean): BackgroundTestRunStatus {\n if (stopRequested) {\n return \"stopped\";\n }\n const passed = record.exit_code === 0 && (record.summary?.failed ?? 0) === 0 && record.summary?.fail_on_skipped_triggered !== true;\n return passed ? \"passed\" : \"failed\";\n}\n\nfunction buildFinishedBackgroundProgress(record: BackgroundTestRunRecord, stopRequested: boolean): BackgroundRunProgress {\n return {\n phase: \"finished\",\n message: stopRequested ? \"Background run stopped.\" : `Background run finished with status=${record.status}.`,\n heartbeat_at: nowIso(),\n item_index: record.progress?.item_index,\n item_total: record.progress?.item_total,\n item_id: record.progress?.item_id,\n linked_test_index: record.progress?.linked_test_index,\n linked_test_total: record.progress?.linked_test_total,\n current_command: record.progress?.current_command,\n elapsed_ms: record.progress?.elapsed_ms,\n };\n}\n\nasync function writeBackgroundWorkerResult(record: BackgroundTestRunRecord, parsedResult: unknown | null, stdoutBuffer: string): Promise<void> {\n if (parsedResult !== null) {\n await writeFileAtomic(record.result_path, `${JSON.stringify(parsedResult, null, 2)}\\n`);\n return;\n }\n await writeFileAtomic(\n record.result_path,\n `${JSON.stringify(\n {\n parse_error: \"Background run output was not valid JSON.\",\n stdout_excerpt: tailLines(stdoutBuffer, DEFAULT_BACKGROUND_RUN_LOG_TAIL_LINES),\n },\n null,\n 2,\n )}\\n`,\n );\n}\n\n/**\n * Implements run background test run worker for the public runtime surface of this module.\n */\nexport async function runBackgroundTestRunWorker(pmRoot: string, runId: string, noExtensions = false): Promise<BackgroundTestRunRecord> {\n const loaded = await readBackgroundTestRunRecord(pmRoot, runId);\n if (!loaded) {\n throw new PmCliError(`Background test run ${runId} not found`, EXIT_CODE.NOT_FOUND);\n }\n const record: BackgroundTestRunRecord = {\n ...loaded,\n status: \"running\",\n started_at: loaded.started_at ?? nowIso(),\n worker_pid: process.pid,\n progress: {\n phase: \"running\",\n message: \"Worker started.\",\n heartbeat_at: nowIso(),\n },\n };\n const cliEntry = await resolveBackgroundCliEntry(process.cwd());\n const env = buildBackgroundWorkerEnv(record);\n await writeBackgroundRunRecord(pmRoot, record);\n\n const childArgs = buildBackgroundWorkerChildArgs(record, noExtensions);\n const child = spawn(process.execPath, [cliEntry, ...childArgs], {\n cwd: process.cwd(),\n env,\n detached: false,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n windowsHide: true,\n });\n record.child_pid = child.pid as number | undefined;\n\n const recordWriteScheduler = createBackgroundRunRecordWriteScheduler(pmRoot, record);\n const scheduleRecordWrite = recordWriteScheduler.schedule;\n\n let stdoutWriteQueue: Promise<void> = Promise.resolve();\n let stderrWriteQueue: Promise<void> = Promise.resolve();\n let stdoutBuffer = \"\";\n let stderrBuffer = \"\";\n const stopState: BackgroundWorkerStopState = { stopRequested: false };\n\n const onSignal = (): void => {\n void requestBackgroundWorkerStop(record, child, stopState, scheduleRecordWrite);\n };\n process.on(\"SIGTERM\", onSignal);\n process.on(\"SIGINT\", onSignal);\n\n const resourceTimer = setInterval(() => {\n void (async () => {\n record.resource = await buildResourceSnapshot(record);\n (record.progress as BackgroundRunProgress).heartbeat_at = nowIso();\n scheduleRecordWrite();\n })();\n }, resolvePositiveEnvInteger(\"PM_BACKGROUND_RUN_RESOURCE_INTERVAL_MS\", DEFAULT_BACKGROUND_RUN_RESOURCE_SNAPSHOT_INTERVAL_MS));\n resourceTimer.unref?.();\n\n child.stdout?.on(\"data\", (chunk) => {\n const text = chunk.toString(\"utf8\");\n stdoutBuffer += text;\n stdoutWriteQueue = appendFileOrdered(stdoutWriteQueue, record.stdout_path, text);\n });\n\n child.stderr?.on(\"data\", (chunk) => {\n const text = chunk.toString(\"utf8\");\n stderrWriteQueue = appendFileOrdered(stderrWriteQueue, record.stderr_path, text);\n stderrBuffer += text;\n const parts = stderrBuffer.split(/\\r?\\n/);\n stderrBuffer = parts.pop()!;\n let progressChanged = false;\n for (const part of parts) {\n const line = part.trimEnd();\n if (line.length > 0 && applyBackgroundWorkerProgressLine(record, line, stopState.stopRequested)) {\n progressChanged = true;\n }\n }\n if (progressChanged) {\n scheduleRecordWrite();\n }\n });\n\n let exitCode: number | null = null;\n let signal: NodeJS.Signals | null = null;\n try {\n ({ code: exitCode, signal } = await new Promise<{ code: number | null; signal: NodeJS.Signals | null }>((resolve) => {\n child.on(\"close\", (code, closeSignal) => {\n resolve({ code, signal: closeSignal });\n });\n }));\n } finally {\n clearInterval(resourceTimer);\n process.off(\"SIGTERM\", onSignal);\n process.off(\"SIGINT\", onSignal);\n }\n\n await stdoutWriteQueue;\n await stderrWriteQueue;\n const trailingStderrLine = stderrBuffer.trimEnd();\n if (trailingStderrLine.length > 0 && applyBackgroundWorkerProgressLine(record, trailingStderrLine, stopState.stopRequested)) {\n scheduleRecordWrite();\n }\n stderrBuffer = \"\";\n\n const parsedResult = parseBackgroundWorkerStdout(stdoutBuffer);\n const evaluated = evaluateWorkerResult(record.kind, parsedResult);\n record.summary = evaluated.summary;\n record.exit_code = typeof exitCode === \"number\" ? exitCode : undefined;\n record.signal = signal ?? undefined;\n record.finished_at = nowIso();\n record.status = resolveBackgroundWorkerFinalStatus(record, stopState.stopRequested);\n record.progress = buildFinishedBackgroundProgress(record, stopState.stopRequested);\n record.resource = await buildResourceSnapshot(record);\n await writeBackgroundWorkerResult(record, parsedResult, stdoutBuffer);\n await writeBackgroundRunRecord(pmRoot, record);\n await recordWriteScheduler.flush();\n return record;\n}\n\n/**\n * Implements list background test runs for the public runtime surface of this module.\n */\nexport async function listBackgroundTestRuns(\n pmRoot: string,\n options: ListBackgroundTestRunOptions,\n): Promise<BackgroundTestRunRecord[]> {\n const recordPaths = await listBackgroundRunRecordPaths(pmRoot);\n const runs: BackgroundTestRunRecord[] = [];\n for (const recordPath of recordPaths) {\n const raw = await readFileIfExists(recordPath);\n if (!raw) {\n continue;\n }\n const parsed = await parseBackgroundRunRecord(raw, recordPath);\n runs.push(parsed);\n }\n const refreshed: BackgroundTestRunRecord[] = [];\n for (const run of runs) {\n refreshed.push(await refreshRunIfStale(pmRoot, run));\n }\n const filtered = options.status ? refreshed.filter((entry) => entry.status === options.status) : refreshed;\n const sorted = filtered.sort((left, right) => {\n const byUpdated = Date.parse(right.updated_at) - Date.parse(left.updated_at);\n if (Number.isFinite(byUpdated) && byUpdated !== 0) {\n return byUpdated;\n }\n return right.id.localeCompare(left.id);\n });\n const limit = typeof options.limit === \"number\" && options.limit >= 0 ? options.limit : undefined;\n return limit === undefined ? sorted : sorted.slice(0, limit);\n}\n\n/**\n * Implements get background test run status for the public runtime surface of this module.\n */\nexport async function getBackgroundTestRunStatus(pmRoot: string, runId: string): Promise<BackgroundRunStatusView> {\n const loaded = await readBackgroundTestRunRecord(pmRoot, runId);\n if (!loaded) {\n throw new PmCliError(`Background test run ${runId} not found`, EXIT_CODE.NOT_FOUND);\n }\n const refreshed = await refreshRunIfStale(pmRoot, loaded);\n const workerAlive = isPidRunning(refreshed.worker_pid);\n const childAlive = isPidRunning(refreshed.child_pid);\n if (refreshed.status === \"running\" && !childAlive && !refreshed.finished_at && !workerAlive) {\n refreshed.status = \"failed\";\n refreshed.finished_at = nowIso();\n refreshed.error = refreshed.error ?? \"Background run process exited unexpectedly.\";\n await writeBackgroundRunRecord(pmRoot, refreshed);\n }\n if (refreshed.status === \"running\") {\n refreshed.resource = await buildResourceSnapshot(refreshed);\n await writeBackgroundRunRecord(pmRoot, refreshed);\n }\n const heartbeatAt = refreshed.progress?.heartbeat_at;\n const heartbeatAtMs = heartbeatAt ? Date.parse(heartbeatAt) : Number.NaN;\n const lagMs = Number.isFinite(heartbeatAtMs) ? Math.max(0, nowMs() - heartbeatAtMs) : undefined;\n const staleMs = Number.parseInt(process.env.PM_BACKGROUND_RUN_HEARTBEAT_STALE_MS ?? \"\", 10);\n const staleThresholdMs = Number.isFinite(staleMs) && staleMs > 0 ? staleMs : DEFAULT_BACKGROUND_RUN_HEARTBEAT_STALE_MS;\n const healthState = refreshed.status === \"running\"\n ? lagMs !== undefined && lagMs > staleThresholdMs\n ? \"stale\"\n : \"healthy\"\n : \"inactive\";\n return {\n run: refreshed,\n health: {\n state: healthState,\n last_heartbeat_at: heartbeatAt,\n heartbeat_lag_ms: lagMs,\n worker_alive: workerAlive,\n child_alive: childAlive,\n },\n };\n}\n\n/* v8 ignore start -- stop-signal branches depend on live process state; command tests cover observable stop behavior */\nfunction sendBackgroundRunStopSignal(record: BackgroundTestRunRecord, force: boolean): \"SIGTERM\" | \"SIGKILL\" | \"none\" {\n const signal: NodeJS.Signals = force ? \"SIGKILL\" : \"SIGTERM\";\n if (!isPidRunning(record.worker_pid) || !record.worker_pid) {\n return \"none\";\n }\n try {\n process.kill(record.worker_pid, signal);\n return signal;\n } catch {\n return \"none\";\n }\n}\n/* v8 ignore stop */\n\nfunction buildStoppingBackgroundProgress(\n record: BackgroundTestRunRecord,\n signalSent: \"SIGTERM\" | \"SIGKILL\" | \"none\",\n): BackgroundRunProgress {\n return {\n phase: \"stopping\",\n message: signalSent === \"none\" ? \"Run marked stopped.\" : `Stop requested via ${signalSent}.`,\n heartbeat_at: nowIso(),\n item_index: record.progress?.item_index,\n item_total: record.progress?.item_total,\n item_id: record.progress?.item_id,\n linked_test_index: record.progress?.linked_test_index,\n linked_test_total: record.progress?.linked_test_total,\n current_command: record.progress?.current_command,\n elapsed_ms: record.progress?.elapsed_ms,\n };\n}\n\n/**\n * Implements stop background test run for the public runtime surface of this module.\n */\nexport async function stopBackgroundTestRun(pmRoot: string, runId: string, force = false): Promise<StopBackgroundTestRunResult> {\n const loaded = await readBackgroundTestRunRecord(pmRoot, runId);\n if (!loaded) {\n throw new PmCliError(`Background test run ${runId} not found`, EXIT_CODE.NOT_FOUND);\n }\n const refreshed = await refreshRunIfStale(pmRoot, loaded);\n if (BACKGROUND_RUN_TERMINAL_STATUSES.has(refreshed.status)) {\n return {\n run: refreshed,\n signal_sent: \"none\",\n };\n }\n const signalSent = sendBackgroundRunStopSignal(refreshed, force);\n if (signalSent === \"none\") {\n refreshed.status = \"stopped\";\n refreshed.finished_at = refreshed.finished_at ?? nowIso();\n }\n refreshed.stop_requested_at = nowIso();\n refreshed.progress = buildStoppingBackgroundProgress(refreshed, signalSent);\n await writeBackgroundRunRecord(pmRoot, refreshed);\n return {\n run: refreshed,\n signal_sent: signalSent,\n };\n}\n\n/**\n * Implements resume background test run for the public runtime surface of this module.\n */\nexport async function resumeBackgroundTestRun(\n pmRoot: string,\n runId: string,\n requestedBy: string,\n noExtensions = false,\n): Promise<BackgroundTestRunRecord> {\n const loaded = await readBackgroundTestRunRecord(pmRoot, runId);\n if (!loaded) {\n throw new PmCliError(`Background test run ${runId} not found`, EXIT_CODE.NOT_FOUND);\n }\n const refreshed = await refreshRunIfStale(pmRoot, loaded);\n if (!BACKGROUND_RUN_TERMINAL_STATUSES.has(refreshed.status)) {\n throw new PmCliError(`Background test run ${runId} is not terminal and cannot be resumed.`, EXIT_CODE.CONFLICT);\n }\n const started = await startBackgroundTestRun({\n pmRoot: refreshed.pm_root,\n globalPmRoot: refreshed.global_pm_root,\n kind: refreshed.kind,\n commandArgs: refreshed.command_args,\n requestedBy,\n targetId: refreshed.target_id,\n statusFilter: refreshed.status_filter,\n resumedFrom: refreshed.id,\n resumedBy: requestedBy,\n attempt: refreshed.attempt + 1,\n });\n if (!started.started) {\n return started.run;\n }\n const spawned = await spawnBackgroundTestRunWorker({\n pmRoot,\n runId: started.run.id,\n noExtensions,\n });\n const prior: BackgroundTestRunRecord = {\n ...refreshed,\n resumed_by: spawned.id,\n };\n await writeBackgroundRunRecord(pmRoot, prior);\n return spawned;\n}\n\n/**\n * Implements read background test run logs for the public runtime surface of this module.\n */\nexport async function readBackgroundTestRunLogs(\n pmRoot: string,\n runId: string,\n stream: BackgroundLogStream,\n tail: number | undefined,\n): Promise<BackgroundRunLogsResult> {\n const loaded = await readBackgroundTestRunRecord(pmRoot, runId);\n if (!loaded) {\n throw new PmCliError(`Background test run ${runId} not found`, EXIT_CODE.NOT_FOUND);\n }\n const resolvedTail = typeof tail === \"number\" && Number.isFinite(tail) && tail >= 0 ? Math.floor(tail) : DEFAULT_BACKGROUND_RUN_LOG_TAIL_LINES;\n const stdoutRaw = stream === \"stdout\" || stream === \"both\" ? (await readFileIfExists(loaded.stdout_path)) ?? \"\" : \"\";\n const stderrRaw = stream === \"stderr\" || stream === \"both\" ? (await readFileIfExists(loaded.stderr_path)) ?? \"\" : \"\";\n return {\n run: loaded,\n stream,\n tail: resolvedTail,\n stdout: stream === \"stdout\" || stream === \"both\" ? tailLines(stdoutRaw, resolvedTail) : [],\n stderr: stream === \"stderr\" || stream === \"both\" ? tailLines(stderrRaw, resolvedTail) : [],\n };\n}\n\nexport const _testOnly = {\n buildResourceSnapshot,\n evaluateWorkerResult,\n isPidRunning,\n parseLinuxCpuStat,\n parseLinuxRssStatus,\n parseProgressLine,\n readLinuxCpuSeconds,\n readLinuxRssBytes,\n refreshRunIfStale,\n splitLines,\n tailLines,\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["global"]
|
|
7
7
|
}
|