@unbrained/pm-cli 2026.7.6 → 2026.7.8
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 +50 -0
- package/dist/cli/commands/annotation-command.d.ts +1 -0
- package/dist/cli/commands/annotation-command.js +29 -2
- package/dist/cli/commands/annotation-command.js.map +1 -1
- package/dist/cli/commands/comments.js +3 -4
- package/dist/cli/commands/comments.js.map +1 -1
- package/dist/cli/commands/completion.js +10 -2
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/context.d.ts +1 -0
- package/dist/cli/commands/context.js +4 -4
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/extension/bundled-catalog.d.ts +3 -0
- package/dist/cli/commands/extension/bundled-catalog.js +38 -28
- package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
- package/dist/cli/commands/extension/install-sources.js +81 -18
- package/dist/cli/commands/extension/install-sources.js.map +1 -1
- package/dist/cli/commands/extension.d.ts +23 -19
- package/dist/cli/commands/extension.js +167 -57
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/health.js +9 -5
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/learnings.js +5 -3
- package/dist/cli/commands/learnings.js.map +1 -1
- package/dist/cli/commands/notes.js +5 -3
- package/dist/cli/commands/notes.js.map +1 -1
- package/dist/cli/commands/reindex.js +4 -3
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/search.js +4 -4
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/test.d.ts +9 -0
- package/dist/cli/commands/test.js +144 -105
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/extension-command-help.js +10 -2
- package/dist/cli/extension-command-help.js.map +1 -1
- package/dist/cli/help-content.js +28 -2
- package/dist/cli/help-content.js.map +1 -1
- package/dist/cli/register-list-query.d.ts +1 -1
- package/dist/cli/register-list-query.js +19 -27
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-operations.d.ts +0 -8
- package/dist/cli/register-operations.js +41 -46
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/register-setup.js +119 -13
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.d.ts +5 -1
- package/dist/cli/registration-helpers.js +14 -2
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/chunks/append-CDPAYYSB.js +11 -0
- package/dist/cli-bundle/chunks/{gc-2DNMPXMC.js → append-RSPHC423.js} +8 -9
- package/dist/cli-bundle/chunks/{chunk-LK6XLOGP.js → chunk-2BVD4ZD2.js} +288 -233
- package/dist/cli-bundle/chunks/chunk-2BVD4ZD2.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-TKD5VCTD.js → chunk-2RADY7IB.js} +517 -195
- package/dist/cli-bundle/chunks/chunk-2RADY7IB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-COSPOP7H.js → chunk-3FRNNVWY.js} +518 -196
- package/dist/cli-bundle/chunks/chunk-3FRNNVWY.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-24YG75HI.js → chunk-3FUXM574.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-IWVU4C2F.js → chunk-3SHDAKMF.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-O6AWCQRQ.js → chunk-3UXIMY62.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-O6AWCQRQ.js.map → chunk-3UXIMY62.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MUH7A3FD.js → chunk-3V5C7PUH.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ALFPSEWO.js → chunk-3YJDIJIE.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-ALFPSEWO.js.map → chunk-3YJDIJIE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-EGY6JBQ3.js → chunk-4I7KS5ES.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CRVYGJUI.js → chunk-4OCWJ2AP.js} +13 -17
- package/dist/cli-bundle/chunks/{chunk-CRVYGJUI.js.map → chunk-4OCWJ2AP.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-GJ7QC5DJ.js → chunk-5STY7NVM.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-JJP45OEI.js → chunk-5VAZHYVQ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CFB33L7W.js → chunk-6FU5BVRB.js} +12 -14
- package/dist/cli-bundle/chunks/{chunk-CFB33L7W.js.map → chunk-6FU5BVRB.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-22KBU3MW.js → chunk-6RR4XM5H.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-K46RF36U.js → chunk-6TD5QGIB.js} +7 -7
- package/dist/cli-bundle/chunks/chunk-6TD5QGIB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-IX5BXEMX.js → chunk-6WCXSC5V.js} +12 -16
- package/dist/cli-bundle/chunks/{chunk-IX5BXEMX.js.map → chunk-6WCXSC5V.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-ZWBEPGD7.js → chunk-6ZKDMEVT.js} +7 -9
- package/dist/cli-bundle/chunks/{chunk-ZWBEPGD7.js.map → chunk-6ZKDMEVT.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-KUOOJR35.js → chunk-7QKSLAHB.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-MVSP7WGJ.js → chunk-7TBUV7XS.js} +8 -12
- package/dist/cli-bundle/chunks/{chunk-MVSP7WGJ.js.map → chunk-7TBUV7XS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-NGXQ3PFT.js → chunk-7UCBLJDF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-F3K4JGFD.js → chunk-AEOFBBWO.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-F3K4JGFD.js.map → chunk-AEOFBBWO.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-ASMRSIDX.js +10498 -0
- package/dist/cli-bundle/chunks/chunk-ASMRSIDX.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-7DT4WSH2.js → chunk-BFNFTHWQ.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-BPJ5NYSJ.js +5509 -0
- package/dist/cli-bundle/chunks/chunk-BPJ5NYSJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-Y46GD4IX.js → chunk-C3YU3TXX.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-VPIM42PC.js → chunk-C6XSTACC.js} +11 -7
- package/dist/cli-bundle/chunks/chunk-C6XSTACC.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-AZYGZGGI.js → chunk-CGDUIPJL.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-FT3QTERD.js → chunk-CXH7EMSB.js} +5 -7
- package/dist/cli-bundle/chunks/{chunk-FT3QTERD.js.map → chunk-CXH7EMSB.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-DMRNBQOI.js → chunk-D63PEJTB.js} +256 -36
- package/dist/cli-bundle/chunks/chunk-D63PEJTB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-RCQZK2GO.js → chunk-D6J5673C.js} +7 -9
- package/dist/cli-bundle/chunks/{chunk-RCQZK2GO.js.map → chunk-D6J5673C.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-3UJRFJ5R.js → chunk-DUBC6TI3.js} +28 -34
- package/dist/cli-bundle/chunks/{chunk-3UJRFJ5R.js.map → chunk-DUBC6TI3.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-NC33K5ZS.js → chunk-EEJKHF7M.js} +7 -6
- package/dist/cli-bundle/chunks/{chunk-NC33K5ZS.js.map → chunk-EEJKHF7M.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-XG625QP4.js → chunk-EP2CKDS7.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NZEHECMW.js → chunk-EYPIUFWJ.js} +24 -32
- package/dist/cli-bundle/chunks/{chunk-NZEHECMW.js.map → chunk-EYPIUFWJ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-45FYNUFJ.js → chunk-F5DDGY6R.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-45FYNUFJ.js.map → chunk-F5DDGY6R.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-4ZBE5GUN.js → chunk-FFB3WITE.js} +10 -16
- package/dist/cli-bundle/chunks/{chunk-4ZBE5GUN.js.map → chunk-FFB3WITE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-7D7OOEYG.js → chunk-FJR2S7S4.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-7D7OOEYG.js.map → chunk-FJR2S7S4.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-FL625JJM.js +6792 -0
- package/dist/cli-bundle/chunks/chunk-FL625JJM.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-LPSSSDJR.js → chunk-FOJEBRDD.js} +16 -20
- package/dist/cli-bundle/chunks/{chunk-LPSSSDJR.js.map → chunk-FOJEBRDD.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-EOKXK3R3.js → chunk-G4FKP4ID.js} +1220 -398
- package/dist/cli-bundle/chunks/chunk-G4FKP4ID.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-GE44TQMC.js +6726 -0
- package/dist/cli-bundle/chunks/chunk-GE44TQMC.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-XUC7PI2H.js → chunk-GLMJLBLR.js} +6 -10
- package/dist/cli-bundle/chunks/{chunk-XUC7PI2H.js.map → chunk-GLMJLBLR.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-GANUTS7W.js → chunk-GO2X6ZRB.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-GANUTS7W.js.map → chunk-GO2X6ZRB.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-CFNGIXZP.js → chunk-GQOKFX2G.js} +22 -26
- package/dist/cli-bundle/chunks/{chunk-CFNGIXZP.js.map → chunk-GQOKFX2G.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-XHET7YUZ.js → chunk-GSQVQINP.js} +8 -10
- package/dist/cli-bundle/chunks/{chunk-XHET7YUZ.js.map → chunk-GSQVQINP.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-HI27UADG.js +5434 -0
- package/dist/cli-bundle/chunks/chunk-HI27UADG.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-I36Y7PCE.js → chunk-HZZ3AC27.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-I36Y7PCE.js.map → chunk-HZZ3AC27.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-OGWQ2IEP.js → chunk-IINCZYM3.js} +8 -12
- package/dist/cli-bundle/chunks/{chunk-OGWQ2IEP.js.map → chunk-IINCZYM3.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-EKFNL33R.js → chunk-INOWVPUD.js} +37 -16
- package/dist/cli-bundle/chunks/chunk-INOWVPUD.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-4LELACOL.js → chunk-IYRG5AEC.js} +15 -23
- package/dist/cli-bundle/chunks/{chunk-4LELACOL.js.map → chunk-IYRG5AEC.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MVYWGY2A.js → chunk-J6AD3GWC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-D2XRLB55.js → chunk-JH5XDDYS.js} +14 -20
- package/dist/cli-bundle/chunks/{chunk-D2XRLB55.js.map → chunk-JH5XDDYS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-HOVCGJSD.js → chunk-JYVPLGOW.js} +9 -11
- package/dist/cli-bundle/chunks/{chunk-HOVCGJSD.js.map → chunk-JYVPLGOW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MA4SM3QZ.js → chunk-K52C6YPA.js} +12 -18
- package/dist/cli-bundle/chunks/{chunk-MA4SM3QZ.js.map → chunk-K52C6YPA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-R5BMJX33.js → chunk-KFL3XHMA.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-KMXVZ2P7.js +10320 -0
- package/dist/cli-bundle/chunks/chunk-KMXVZ2P7.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-4CJFCTLM.js → chunk-LD2NBQ5T.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-4CJFCTLM.js.map → chunk-LD2NBQ5T.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-6QBJLYBP.js → chunk-LG4N6YOK.js} +8 -7
- package/dist/cli-bundle/chunks/{chunk-6QBJLYBP.js.map → chunk-LG4N6YOK.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-L5PSPMZ4.js → chunk-LHDHS4Z6.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-L5PSPMZ4.js.map → chunk-LHDHS4Z6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-M7JNBQAD.js → chunk-MCH6IKK7.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-M7JNBQAD.js.map → chunk-MCH6IKK7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-57NWPFF2.js → chunk-MFLLULHU.js} +281 -233
- package/dist/cli-bundle/chunks/chunk-MFLLULHU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-EGAP5OWD.js → chunk-ML27MHNM.js} +35 -17
- package/dist/cli-bundle/chunks/chunk-ML27MHNM.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-3N6RRO2Q.js → chunk-MYHFZNBO.js} +20 -24
- package/dist/cli-bundle/chunks/{chunk-3N6RRO2Q.js.map → chunk-MYHFZNBO.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-6LLVNJXT.js → chunk-NGBWEYNY.js} +12 -18
- package/dist/cli-bundle/chunks/{chunk-6LLVNJXT.js.map → chunk-NGBWEYNY.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-GDDAGPWJ.js → chunk-NRMDT4OV.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-GDDAGPWJ.js.map → chunk-NRMDT4OV.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-NTOOEVJ4.js +5359 -0
- package/dist/cli-bundle/chunks/chunk-NTOOEVJ4.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-W6DYWXPQ.js → chunk-P2WE5KCU.js} +261 -34
- package/dist/cli-bundle/chunks/{chunk-W6DYWXPQ.js.map → chunk-P2WE5KCU.js.map} +4 -4
- package/dist/cli-bundle/chunks/{chunk-YN7Y6DQZ.js → chunk-PAWPLIWW.js} +14 -20
- package/dist/cli-bundle/chunks/{chunk-YN7Y6DQZ.js.map → chunk-PAWPLIWW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MWMVPCIE.js → chunk-PCBZ2VJD.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-ZSUS2OD3.js → chunk-PJPZTE7P.js} +1216 -387
- package/dist/cli-bundle/chunks/chunk-PJPZTE7P.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-B6DUFX6H.js → chunk-Q3CFSOQZ.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-NO442GWJ.js → chunk-QJZM5WO5.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-NO442GWJ.js.map → chunk-QJZM5WO5.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QLMX7SRD.js → chunk-QLEH6FTQ.js} +6 -6
- package/dist/cli-bundle/chunks/chunk-QLEH6FTQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-GBAX2ZAQ.js → chunk-QYZMZD4L.js} +10 -12
- package/dist/cli-bundle/chunks/{chunk-GBAX2ZAQ.js.map → chunk-QYZMZD4L.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-W3DSJQIO.js → chunk-RDJXIAJB.js} +7 -11
- package/dist/cli-bundle/chunks/{chunk-W3DSJQIO.js.map → chunk-RDJXIAJB.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-7WBAJSS6.js → chunk-RFHLRMLQ.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-7WBAJSS6.js.map → chunk-RFHLRMLQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SGMFPXKR.js → chunk-RL24NAUX.js} +10 -12
- package/dist/cli-bundle/chunks/{chunk-SGMFPXKR.js.map → chunk-RL24NAUX.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-46CUF5L6.js → chunk-RLHQ3G4M.js} +99 -51
- package/dist/cli-bundle/chunks/chunk-RLHQ3G4M.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-UH7T2DAX.js → chunk-SCJPFQQT.js} +12 -18
- package/dist/cli-bundle/chunks/{chunk-UH7T2DAX.js.map → chunk-SCJPFQQT.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-B6XS3R3O.js → chunk-SIQGG335.js} +12 -16
- package/dist/cli-bundle/chunks/{chunk-B6XS3R3O.js.map → chunk-SIQGG335.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-E42XTBSP.js → chunk-SN5X5GTU.js} +8 -12
- package/dist/cli-bundle/chunks/{chunk-E42XTBSP.js.map → chunk-SN5X5GTU.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-CL36D4PC.js → chunk-TKWTJGD6.js} +36 -15
- package/dist/cli-bundle/chunks/chunk-TKWTJGD6.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-VIIUS6N6.js → chunk-TR2C6V5T.js} +37 -19
- package/dist/cli-bundle/chunks/chunk-TR2C6V5T.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-TTCJCKUJ.js +5514 -0
- package/dist/cli-bundle/chunks/chunk-TTCJCKUJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-KGFUY7WN.js → chunk-TU5P744I.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-TULGS6X6.js → chunk-TUDAYIO7.js} +529 -46
- package/dist/cli-bundle/chunks/chunk-TUDAYIO7.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-MLIYFOE7.js → chunk-U72GF3I2.js} +12 -8
- package/dist/cli-bundle/chunks/chunk-U72GF3I2.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ZZD4J5XY.js → chunk-UCRYCT5M.js} +30 -36
- package/dist/cli-bundle/chunks/{chunk-ZZD4J5XY.js.map → chunk-UCRYCT5M.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-JDDLOQAE.js → chunk-UEATYUZW.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JVH7QBVV.js → chunk-UFNFHCAC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NB7RLQFW.js → chunk-UH6VFRV6.js} +5 -7
- package/dist/cli-bundle/chunks/{chunk-NB7RLQFW.js.map → chunk-UH6VFRV6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SQOIV3OQ.js → chunk-UIHDZS6X.js} +11 -15
- package/dist/cli-bundle/chunks/{chunk-SQOIV3OQ.js.map → chunk-UIHDZS6X.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-W572BIEB.js → chunk-UURYLDDC.js} +14 -18
- package/dist/cli-bundle/chunks/{chunk-W572BIEB.js.map → chunk-UURYLDDC.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-G64OCSKU.js → chunk-UVFJSKTF.js} +9 -13
- package/dist/cli-bundle/chunks/{chunk-G64OCSKU.js.map → chunk-UVFJSKTF.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SMB7RV23.js → chunk-W2VFNVSJ.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-SMB7RV23.js.map → chunk-W2VFNVSJ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-HIHMT6WS.js → chunk-WVEMZZCR.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-HIHMT6WS.js.map → chunk-WVEMZZCR.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3VHSI5FL.js → chunk-XN5BEN2B.js} +94 -53
- package/dist/cli-bundle/chunks/chunk-XN5BEN2B.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-SCUR7K7N.js → chunk-XPSGJ4IV.js} +541 -44
- package/dist/cli-bundle/chunks/chunk-XPSGJ4IV.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-ZJ262CED.js → chunk-YQEKE4FO.js} +13 -21
- package/dist/cli-bundle/chunks/{chunk-ZJ262CED.js.map → chunk-YQEKE4FO.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-EBRZZ54H.js → chunk-YR5R4FMQ.js} +26 -34
- package/dist/cli-bundle/chunks/{chunk-EBRZZ54H.js.map → chunk-YR5R4FMQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-XB7KFVFI.js → chunk-YSRXFGNV.js} +7 -9
- package/dist/cli-bundle/chunks/{chunk-XB7KFVFI.js.map → chunk-YSRXFGNV.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-HFDADVJZ.js → chunk-YUCKM3MD.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-HFDADVJZ.js.map → chunk-YUCKM3MD.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SQYJ4HF2.js → chunk-YUMNZS3X.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-SQYJ4HF2.js.map → chunk-YUMNZS3X.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-AGHMOTGM.js → chunk-Z2JQH2MG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ZGK4L4JM.js → chunk-Z6RLSNUX.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-ZGK4L4JM.js.map → chunk-Z6RLSNUX.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-Y4M7CPQP.js → chunk-ZMOPZFVT.js} +4 -4
- package/dist/cli-bundle/chunks/close-E3RLZSP2.js +12 -0
- package/dist/cli-bundle/chunks/{close-2SSSHHUZ.js → close-K6BFI3OX.js} +5 -9
- package/dist/cli-bundle/chunks/close-many-6NBL3PM4.js +26 -0
- package/dist/cli-bundle/chunks/close-many-X4YKS3RO.js +22 -0
- package/dist/cli-bundle/chunks/comments-PLFK5ZKK.js +17 -0
- package/dist/cli-bundle/chunks/comments-ZNOD5PTV.js +13 -0
- package/dist/cli-bundle/chunks/copy-F7BUFY4J.js +9 -0
- package/dist/cli-bundle/chunks/{copy-32ROBIDL.js → copy-VH3L4MN2.js} +4 -8
- package/dist/cli-bundle/chunks/create-AMBMYP6F.js +25 -0
- package/dist/cli-bundle/chunks/{create-E77SDCUP.js → create-TRIBYORN.js} +9 -14
- package/dist/cli-bundle/chunks/delete-6KQHZYIP.js +10 -0
- package/dist/cli-bundle/chunks/{delete-RA5KTCLB.js → delete-ZNXUNCZR.js} +4 -8
- package/dist/cli-bundle/chunks/deps-CVDY7FFK.js +13 -0
- package/dist/cli-bundle/chunks/{deps-32SU7HO5.js → deps-SZXQHV73.js} +4 -8
- package/dist/cli-bundle/chunks/{docs-RRUPT7O2.js → docs-DR74ITCD.js} +6 -10
- package/dist/cli-bundle/chunks/docs-WCVYY6I7.js +14 -0
- package/dist/cli-bundle/chunks/files-H5YCA74Z.js +18 -0
- package/dist/cli-bundle/chunks/{files-PYKR2UUG.js → files-QEFQ2M3H.js} +6 -10
- package/dist/cli-bundle/chunks/{contracts-NYPEW2G4.js → focus-55TRYSNA.js} +7 -9
- package/dist/cli-bundle/chunks/focus-N2QGNS5D.js +10 -0
- package/dist/cli-bundle/chunks/history-compact-GWQ4UOEI.js +21 -0
- package/dist/cli-bundle/chunks/{history-compact-3MNXLKAT.js → history-compact-JJZ4EFL3.js} +9 -13
- package/dist/cli-bundle/chunks/history-redact-4GJOLXCM.js +17 -0
- package/dist/cli-bundle/chunks/{history-redact-P6DYF55G.js → history-redact-TPPUT3A5.js} +7 -11
- package/dist/cli-bundle/chunks/history-repair-HVCVCGUF.js +19 -0
- package/dist/cli-bundle/chunks/{history-repair-ZJQFMWPD.js → history-repair-J7PIZ6ZP.js} +9 -13
- package/dist/cli-bundle/chunks/{append-BGML6VLD.js → learnings-KB6BT4NR.js} +9 -11
- package/dist/cli-bundle/chunks/learnings-YYY3U2Y7.js +13 -0
- package/dist/cli-bundle/chunks/notes-BGG7VL72.js +13 -0
- package/dist/cli-bundle/chunks/notes-ZTHXVOKM.js +17 -0
- package/dist/cli-bundle/chunks/{plan-CHVE7PBR.js → plan-CJPKFRBK.js} +10 -15
- package/dist/cli-bundle/chunks/plan-MK2QY3GA.js +24 -0
- package/dist/cli-bundle/chunks/{profile-ZXGSKBJD.js → profile-AQNHXOYA.js} +9 -13
- package/dist/cli-bundle/chunks/{profile-LD23PSI6.js → profile-HTBFINKQ.js} +9 -13
- package/dist/cli-bundle/chunks/{register-list-query-B42JCCOI.js → register-list-query-EEF33SUJ.js} +43 -34
- package/dist/cli-bundle/chunks/register-list-query-EEF33SUJ.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-OEYQHFXO.js → register-list-query-S4FBWIWN.js} +42 -33
- package/dist/cli-bundle/chunks/register-list-query-S4FBWIWN.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-mutation-3QXIHCQG.js → register-mutation-L5Q7AUDN.js} +34 -39
- package/dist/cli-bundle/chunks/{register-mutation-3QXIHCQG.js.map → register-mutation-L5Q7AUDN.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-mutation-IAEST26S.js → register-mutation-QFLRBCI7.js} +36 -41
- package/dist/cli-bundle/chunks/{register-mutation-IAEST26S.js.map → register-mutation-QFLRBCI7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-5BMM6XQY.js → register-operations-HDE4FVW4.js} +79 -46
- package/dist/cli-bundle/chunks/register-operations-HDE4FVW4.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-Z3U3U5KD.js → register-operations-QDU43FCG.js} +78 -45
- package/dist/cli-bundle/chunks/register-operations-QDU43FCG.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-setup-Q6KFNIOZ.js → register-setup-EGMTAXDC.js} +134 -32
- package/dist/cli-bundle/chunks/register-setup-EGMTAXDC.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-3ZVVX2VN.js → register-setup-PNIO3L2P.js} +133 -31
- package/dist/cli-bundle/chunks/register-setup-PNIO3L2P.js.map +7 -0
- package/dist/cli-bundle/chunks/{restore-5RQHAPMA.js → restore-BTBEZ5CK.js} +7 -11
- package/dist/cli-bundle/chunks/restore-EX4UUZL6.js +15 -0
- package/dist/cli-bundle/chunks/{schema-HBORFC6B.js → schema-DGSTYYQB.js} +6 -10
- package/dist/cli-bundle/chunks/{schema-245WW4G2.js → schema-HAIBEE24.js} +6 -10
- package/dist/cli-bundle/chunks/update-MP4XLU56.js +25 -0
- package/dist/cli-bundle/chunks/update-SDIRJGSY.js +21 -0
- package/dist/cli-bundle/chunks/update-many-34AIU6W7.js +31 -0
- package/dist/cli-bundle/chunks/update-many-JUPCNOKV.js +35 -0
- package/dist/cli-bundle/main.js +56 -32
- package/dist/cli-bundle/main.js.map +2 -2
- package/dist/cli-bundle/sdk-runtime.js +161 -107
- package/dist/cli-bundle/sdk-testing.js +7 -8
- package/dist/cli-bundle/sdk.js +154 -117
- package/dist/cli-bundle/sdk.js.map +2 -2
- package/dist/core/extensions/extension-types.d.ts +1 -0
- package/dist/core/extensions/extension-types.js +2 -2
- package/dist/core/extensions/extension-types.js.map +1 -1
- package/dist/core/extensions/loader.js +268 -231
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/history/drift-scan.js +3 -8
- package/dist/core/history/drift-scan.js.map +1 -1
- package/dist/core/output/mutation-projection.js +11 -5
- package/dist/core/output/mutation-projection.js.map +1 -1
- package/dist/core/search/cache.js +3 -3
- package/dist/core/search/cache.js.map +1 -1
- package/dist/core/search/semantic-defaults.d.ts +2 -0
- package/dist/core/search/semantic-defaults.js +11 -4
- package/dist/core/search/semantic-defaults.js.map +1 -1
- package/dist/core/search/vector-stores.d.ts +1 -1
- package/dist/core/search/vector-stores.js +33 -7
- package/dist/core/search/vector-stores.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -1
- package/dist/sdk/cli-contracts/commander-types.js +3 -3
- package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.js +12 -8
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +10 -2
- package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-schema.js +14 -8
- package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
- package/dist/sdk/index.d.ts +1 -1
- package/dist/sdk/index.js +3 -3
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/runtime.d.ts +282 -8
- package/dist/sdk/runtime.js +453 -14
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/sdk/start-task-status.d.ts +13 -0
- package/dist/sdk/start-task-status.js +19 -0
- package/dist/sdk/start-task-status.js.map +1 -0
- package/docs/COMMANDS.md +10 -1
- package/docs/EXTENSIONS.md +7 -20
- package/docs/RELEASING.md +6 -0
- package/docs/SDK.md +65 -0
- package/docs/TESTING.md +3 -0
- package/package.json +2 -1
- package/dist/cli-bundle/chunks/activity-WJCGCYPU.js +0 -18
- package/dist/cli-bundle/chunks/activity-Z6QUAUSG.js +0 -22
- package/dist/cli-bundle/chunks/aggregate-BDM6EIAR.js +0 -25
- package/dist/cli-bundle/chunks/aggregate-VQ2DHU3S.js +0 -21
- package/dist/cli-bundle/chunks/append-RKJYPU74.js +0 -15
- package/dist/cli-bundle/chunks/chunk-2XG4IZON.js +0 -218
- package/dist/cli-bundle/chunks/chunk-2XG4IZON.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-37E72CNS.js +0 -217
- package/dist/cli-bundle/chunks/chunk-37E72CNS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-3GCS5SKL.js +0 -228
- package/dist/cli-bundle/chunks/chunk-3GCS5SKL.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-3KTN6IBA.js +0 -2330
- package/dist/cli-bundle/chunks/chunk-3KTN6IBA.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-3VHSI5FL.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-425E4QL5.js +0 -278
- package/dist/cli-bundle/chunks/chunk-425E4QL5.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-46CUF5L6.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +0 -87
- package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4HIFVN7N.js +0 -249
- package/dist/cli-bundle/chunks/chunk-4HIFVN7N.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4IWYTWGF.js +0 -819
- package/dist/cli-bundle/chunks/chunk-4IWYTWGF.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-4MZVRJOE.js +0 -279
- package/dist/cli-bundle/chunks/chunk-4MZVRJOE.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-57NWPFF2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-5AJXHQM7.js +0 -268
- package/dist/cli-bundle/chunks/chunk-5AJXHQM7.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-5BMM6XQY.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-5GZ7TDD6.js +0 -1868
- package/dist/cli-bundle/chunks/chunk-5GZ7TDD6.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-5VAA4YHR.js +0 -1749
- package/dist/cli-bundle/chunks/chunk-5VAA4YHR.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-64YKRTSV.js +0 -1961
- package/dist/cli-bundle/chunks/chunk-64YKRTSV.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-7C2O74AE.js +0 -23
- package/dist/cli-bundle/chunks/chunk-7C2O74AE.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-B7FRNMYN.js +0 -421
- package/dist/cli-bundle/chunks/chunk-B7FRNMYN.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-C5JBZRPU.js +0 -1985
- package/dist/cli-bundle/chunks/chunk-C5JBZRPU.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-CL36D4PC.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-COSPOP7H.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-COWTDV6B.js +0 -3461
- package/dist/cli-bundle/chunks/chunk-COWTDV6B.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-DEWEK6AN.js +0 -1858
- package/dist/cli-bundle/chunks/chunk-DEWEK6AN.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-DMRNBQOI.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-E3SZTQ4K.js +0 -1932
- package/dist/cli-bundle/chunks/chunk-E3SZTQ4K.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-EGAP5OWD.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-EKFNL33R.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ENGQOEUY.js +0 -1704
- package/dist/cli-bundle/chunks/chunk-ENGQOEUY.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-EOKXK3R3.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-FLZSGSQR.js +0 -231
- package/dist/cli-bundle/chunks/chunk-FLZSGSQR.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-FOUYJE4A.js +0 -2090
- package/dist/cli-bundle/chunks/chunk-FOUYJE4A.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-G24G7ZAV.js +0 -1570
- package/dist/cli-bundle/chunks/chunk-G24G7ZAV.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-GEYZ4G4O.js +0 -239
- package/dist/cli-bundle/chunks/chunk-GEYZ4G4O.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-GPLPTGOV.js +0 -530
- package/dist/cli-bundle/chunks/chunk-GPLPTGOV.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-GZRDYONU.js +0 -1005
- package/dist/cli-bundle/chunks/chunk-GZRDYONU.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-HN6NSXNW.js +0 -277
- package/dist/cli-bundle/chunks/chunk-HN6NSXNW.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-IQNVQHOP.js +0 -309
- package/dist/cli-bundle/chunks/chunk-IQNVQHOP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JINYH2DB.js +0 -371
- package/dist/cli-bundle/chunks/chunk-JINYH2DB.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JQXPY7DN.js +0 -2257
- package/dist/cli-bundle/chunks/chunk-JQXPY7DN.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-K46RF36U.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-KERMZVY5.js +0 -371
- package/dist/cli-bundle/chunks/chunk-KERMZVY5.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-KSRUHV2H.js +0 -76
- package/dist/cli-bundle/chunks/chunk-KSRUHV2H.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-LK6XLOGP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-LP3HSFZ2.js +0 -140
- package/dist/cli-bundle/chunks/chunk-LP3HSFZ2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MAWDPCJW.js +0 -1601
- package/dist/cli-bundle/chunks/chunk-MAWDPCJW.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MFAZSEM5.js +0 -1031
- package/dist/cli-bundle/chunks/chunk-MFAZSEM5.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MFSCBT5Q.js +0 -995
- package/dist/cli-bundle/chunks/chunk-MFSCBT5Q.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ML5X7DP2.js +0 -296
- package/dist/cli-bundle/chunks/chunk-ML5X7DP2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MLIYFOE7.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MR6FJ7LL.js +0 -2043
- package/dist/cli-bundle/chunks/chunk-MR6FJ7LL.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-MXYA5SAJ.js +0 -2033
- package/dist/cli-bundle/chunks/chunk-MXYA5SAJ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-N745W3B3.js +0 -1604
- package/dist/cli-bundle/chunks/chunk-N745W3B3.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-NMP5I3I5.js +0 -1615
- package/dist/cli-bundle/chunks/chunk-NMP5I3I5.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js +0 -20
- package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-PZUGEOPS.js +0 -143
- package/dist/cli-bundle/chunks/chunk-PZUGEOPS.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-QLMX7SRD.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-QX6HM775.js +0 -398
- package/dist/cli-bundle/chunks/chunk-QX6HM775.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-QZ342C63.js +0 -220
- package/dist/cli-bundle/chunks/chunk-QZ342C63.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js +0 -368
- package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RFNYTESG.js +0 -520
- package/dist/cli-bundle/chunks/chunk-RFNYTESG.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RKQOO2UM.js +0 -79
- package/dist/cli-bundle/chunks/chunk-RKQOO2UM.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RQLT6ZWB.js +0 -282
- package/dist/cli-bundle/chunks/chunk-RQLT6ZWB.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-S3JS6YVZ.js +0 -274
- package/dist/cli-bundle/chunks/chunk-S3JS6YVZ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-SCUR7K7N.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-SHQY2IDC.js +0 -1977
- package/dist/cli-bundle/chunks/chunk-SHQY2IDC.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-SPZ6DOGY.js +0 -1041
- package/dist/cli-bundle/chunks/chunk-SPZ6DOGY.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-T42JWV3F.js +0 -822
- package/dist/cli-bundle/chunks/chunk-T42JWV3F.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-TKD5VCTD.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-TULGS6X6.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-TZXRBVAM.js +0 -2306
- package/dist/cli-bundle/chunks/chunk-TZXRBVAM.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-VIIUS6N6.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-VPIM42PC.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-VQRSPVME.js +0 -368
- package/dist/cli-bundle/chunks/chunk-VQRSPVME.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +0 -84
- package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-WG34ZNQQ.js +0 -3423
- package/dist/cli-bundle/chunks/chunk-WG34ZNQQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-WLSM645P.js +0 -2247
- package/dist/cli-bundle/chunks/chunk-WLSM645P.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-WRTENIX3.js +0 -215
- package/dist/cli-bundle/chunks/chunk-WRTENIX3.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-WSBLYDWV.js +0 -388
- package/dist/cli-bundle/chunks/chunk-WSBLYDWV.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-XC5BURG2.js +0 -306
- package/dist/cli-bundle/chunks/chunk-XC5BURG2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-XDB7RWQT.js +0 -424
- package/dist/cli-bundle/chunks/chunk-XDB7RWQT.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-Y6BK55A3.js +0 -2128
- package/dist/cli-bundle/chunks/chunk-Y6BK55A3.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-Z3U3U5KD.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ZO3XKAOP.js +0 -299
- package/dist/cli-bundle/chunks/chunk-ZO3XKAOP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ZSUS2OD3.js.map +0 -7
- package/dist/cli-bundle/chunks/claim-RFS7BROJ.js +0 -19
- package/dist/cli-bundle/chunks/claim-XP5AWZ5H.js +0 -23
- package/dist/cli-bundle/chunks/close-GEANHQ2J.js +0 -16
- package/dist/cli-bundle/chunks/close-many-CMZW7ITN.js +0 -31
- package/dist/cli-bundle/chunks/close-many-ZFDIG6M7.js +0 -27
- package/dist/cli-bundle/chunks/comments-MFSYVNNU.js +0 -21
- package/dist/cli-bundle/chunks/comments-XUBPXDYX.js +0 -17
- package/dist/cli-bundle/chunks/config-D7XQMONX.js +0 -18
- package/dist/cli-bundle/chunks/config-T4FHBSYN.js +0 -22
- package/dist/cli-bundle/chunks/context-DIU275XI.js +0 -48
- package/dist/cli-bundle/chunks/context-JCOYB4LZ.js +0 -44
- package/dist/cli-bundle/chunks/contracts-BVO7CSLK.js +0 -12
- package/dist/cli-bundle/chunks/copy-NAGLGMHZ.js +0 -13
- package/dist/cli-bundle/chunks/create-4V7SWNBB.js +0 -30
- package/dist/cli-bundle/chunks/delete-NQI5OSKN.js +0 -14
- package/dist/cli-bundle/chunks/deps-T7SCWXEX.js +0 -17
- package/dist/cli-bundle/chunks/docs-WL2IWGWV.js +0 -18
- package/dist/cli-bundle/chunks/eval-NF2J5SHR.js +0 -23
- package/dist/cli-bundle/chunks/eval-SKDT3MZU.js +0 -27
- package/dist/cli-bundle/chunks/extension-LAXKCAYE.js +0 -42
- package/dist/cli-bundle/chunks/extension-ZISPBRBC.js +0 -38
- package/dist/cli-bundle/chunks/files-EWRQHGIS.js +0 -22
- package/dist/cli-bundle/chunks/focus-4T7TM4MT.js +0 -18
- package/dist/cli-bundle/chunks/focus-L3YUASOD.js +0 -14
- package/dist/cli-bundle/chunks/gc-2PCTYYRI.js +0 -12
- package/dist/cli-bundle/chunks/get-7DMITJ3G.js +0 -23
- package/dist/cli-bundle/chunks/get-VKQXCXLL.js +0 -19
- package/dist/cli-bundle/chunks/health-CVSTAR2F.js +0 -31
- package/dist/cli-bundle/chunks/health-TV3GKTFN.js +0 -35
- package/dist/cli-bundle/chunks/history-D4JUX5XV.js +0 -20
- package/dist/cli-bundle/chunks/history-D4JUX5XV.js.map +0 -7
- package/dist/cli-bundle/chunks/history-LQ2UWZTE.js +0 -24
- package/dist/cli-bundle/chunks/history-LQ2UWZTE.js.map +0 -1
- package/dist/cli-bundle/chunks/history-compact-3MNXLKAT.js.map +0 -1
- package/dist/cli-bundle/chunks/history-compact-QWEO32FP.js +0 -25
- package/dist/cli-bundle/chunks/history-compact-QWEO32FP.js.map +0 -7
- package/dist/cli-bundle/chunks/history-redact-3OIVBVIY.js +0 -21
- package/dist/cli-bundle/chunks/history-redact-3OIVBVIY.js.map +0 -7
- package/dist/cli-bundle/chunks/history-redact-P6DYF55G.js.map +0 -1
- package/dist/cli-bundle/chunks/history-repair-I3E73UGQ.js +0 -23
- package/dist/cli-bundle/chunks/history-repair-I3E73UGQ.js.map +0 -7
- package/dist/cli-bundle/chunks/history-repair-ZJQFMWPD.js.map +0 -1
- package/dist/cli-bundle/chunks/init-C3LJPWQZ.js +0 -30
- package/dist/cli-bundle/chunks/init-C3LJPWQZ.js.map +0 -1
- package/dist/cli-bundle/chunks/init-J3DPGWQI.js +0 -26
- package/dist/cli-bundle/chunks/init-J3DPGWQI.js.map +0 -7
- package/dist/cli-bundle/chunks/learnings-5BO2SNDW.js +0 -21
- package/dist/cli-bundle/chunks/learnings-5BO2SNDW.js.map +0 -1
- package/dist/cli-bundle/chunks/learnings-OGP4JB4I.js +0 -17
- package/dist/cli-bundle/chunks/learnings-OGP4JB4I.js.map +0 -7
- package/dist/cli-bundle/chunks/list-O5NZVSPN.js +0 -36
- package/dist/cli-bundle/chunks/list-O5NZVSPN.js.map +0 -1
- package/dist/cli-bundle/chunks/list-Z55YCNTC.js +0 -32
- package/dist/cli-bundle/chunks/list-Z55YCNTC.js.map +0 -7
- package/dist/cli-bundle/chunks/next-GBNTGXFC.js +0 -28
- package/dist/cli-bundle/chunks/next-GBNTGXFC.js.map +0 -7
- package/dist/cli-bundle/chunks/next-QKW7PTKE.js +0 -32
- package/dist/cli-bundle/chunks/next-QKW7PTKE.js.map +0 -1
- package/dist/cli-bundle/chunks/notes-R5FZTKWF.js +0 -17
- package/dist/cli-bundle/chunks/notes-R5FZTKWF.js.map +0 -7
- package/dist/cli-bundle/chunks/notes-WCGIULVG.js +0 -21
- package/dist/cli-bundle/chunks/notes-WCGIULVG.js.map +0 -1
- package/dist/cli-bundle/chunks/plan-ADISFYH4.js +0 -29
- package/dist/cli-bundle/chunks/plan-ADISFYH4.js.map +0 -7
- package/dist/cli-bundle/chunks/plan-CHVE7PBR.js.map +0 -1
- package/dist/cli-bundle/chunks/profile-LD23PSI6.js.map +0 -7
- package/dist/cli-bundle/chunks/profile-ZXGSKBJD.js.map +0 -1
- package/dist/cli-bundle/chunks/register-list-query-B42JCCOI.js.map +0 -1
- package/dist/cli-bundle/chunks/register-list-query-OEYQHFXO.js.map +0 -7
- package/dist/cli-bundle/chunks/register-operations-I3M3U7DS.js +0 -19
- package/dist/cli-bundle/chunks/register-operations-I3M3U7DS.js.map +0 -7
- package/dist/cli-bundle/chunks/register-operations-UHKENLZV.js +0 -23
- package/dist/cli-bundle/chunks/register-operations-UHKENLZV.js.map +0 -1
- package/dist/cli-bundle/chunks/register-setup-3ZVVX2VN.js.map +0 -7
- package/dist/cli-bundle/chunks/register-setup-Q6KFNIOZ.js.map +0 -1
- package/dist/cli-bundle/chunks/restore-5RQHAPMA.js.map +0 -1
- package/dist/cli-bundle/chunks/restore-PNEIBBLW.js +0 -19
- package/dist/cli-bundle/chunks/restore-PNEIBBLW.js.map +0 -7
- package/dist/cli-bundle/chunks/scheduling-shortcuts-4G56YHVQ.js +0 -29
- package/dist/cli-bundle/chunks/scheduling-shortcuts-4G56YHVQ.js.map +0 -1
- package/dist/cli-bundle/chunks/scheduling-shortcuts-75DULBYP.js +0 -25
- package/dist/cli-bundle/chunks/scheduling-shortcuts-75DULBYP.js.map +0 -7
- package/dist/cli-bundle/chunks/schema-245WW4G2.js.map +0 -1
- package/dist/cli-bundle/chunks/schema-HBORFC6B.js.map +0 -7
- package/dist/cli-bundle/chunks/search-AOZC5SIK.js +0 -34
- package/dist/cli-bundle/chunks/search-AOZC5SIK.js.map +0 -7
- package/dist/cli-bundle/chunks/search-DRXPGHD7.js +0 -38
- package/dist/cli-bundle/chunks/search-DRXPGHD7.js.map +0 -1
- package/dist/cli-bundle/chunks/stats-NJG4NLHG.js +0 -21
- package/dist/cli-bundle/chunks/stats-NJG4NLHG.js.map +0 -1
- package/dist/cli-bundle/chunks/stats-RG6AG4N2.js +0 -17
- package/dist/cli-bundle/chunks/stats-RG6AG4N2.js.map +0 -7
- package/dist/cli-bundle/chunks/telemetry-HQC2JJIF.js +0 -14
- package/dist/cli-bundle/chunks/telemetry-HQC2JJIF.js.map +0 -7
- package/dist/cli-bundle/chunks/telemetry-MPNL3HHY.js +0 -18
- package/dist/cli-bundle/chunks/telemetry-MPNL3HHY.js.map +0 -1
- package/dist/cli-bundle/chunks/test-6CMOCWUC.js +0 -39
- package/dist/cli-bundle/chunks/test-6CMOCWUC.js.map +0 -7
- package/dist/cli-bundle/chunks/test-RI7XHBZL.js +0 -43
- package/dist/cli-bundle/chunks/test-RI7XHBZL.js.map +0 -1
- package/dist/cli-bundle/chunks/test-all-7R7YRZIA.js +0 -29
- package/dist/cli-bundle/chunks/test-all-7R7YRZIA.js.map +0 -7
- package/dist/cli-bundle/chunks/test-all-QEIORFYW.js +0 -33
- package/dist/cli-bundle/chunks/test-all-QEIORFYW.js.map +0 -1
- package/dist/cli-bundle/chunks/test-runs-5Y2BOU2S.js +0 -28
- package/dist/cli-bundle/chunks/test-runs-5Y2BOU2S.js.map +0 -1
- package/dist/cli-bundle/chunks/test-runs-PVGC3GRZ.js +0 -24
- package/dist/cli-bundle/chunks/test-runs-PVGC3GRZ.js.map +0 -7
- package/dist/cli-bundle/chunks/update-QVJDFEAP.js +0 -30
- package/dist/cli-bundle/chunks/update-QVJDFEAP.js.map +0 -1
- package/dist/cli-bundle/chunks/update-VQVHAY6X.js +0 -26
- package/dist/cli-bundle/chunks/update-VQVHAY6X.js.map +0 -7
- package/dist/cli-bundle/chunks/update-many-S7XWBSB3.js +0 -37
- package/dist/cli-bundle/chunks/update-many-S7XWBSB3.js.map +0 -7
- package/dist/cli-bundle/chunks/update-many-YIYW6XQ6.js +0 -41
- package/dist/cli-bundle/chunks/update-many-YIYW6XQ6.js.map +0 -1
- package/dist/cli-bundle/chunks/upgrade-OPRXA56R.js +0 -24
- package/dist/cli-bundle/chunks/upgrade-OPRXA56R.js.map +0 -7
- package/dist/cli-bundle/chunks/upgrade-WH4BTQLX.js +0 -28
- package/dist/cli-bundle/chunks/upgrade-WH4BTQLX.js.map +0 -1
- package/dist/cli-bundle/chunks/validate-4NTXSB62.js +0 -36
- package/dist/cli-bundle/chunks/validate-4NTXSB62.js.map +0 -1
- package/dist/cli-bundle/chunks/validate-MUFXQZMI.js +0 -32
- package/dist/cli-bundle/chunks/validate-MUFXQZMI.js.map +0 -7
- /package/dist/cli-bundle/chunks/{activity-WJCGCYPU.js.map → append-CDPAYYSB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-Z6QUAUSG.js.map → append-RSPHC423.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-24YG75HI.js.map → chunk-3FUXM574.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IWVU4C2F.js.map → chunk-3SHDAKMF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MUH7A3FD.js.map → chunk-3V5C7PUH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EGY6JBQ3.js.map → chunk-4I7KS5ES.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GJ7QC5DJ.js.map → chunk-5STY7NVM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JJP45OEI.js.map → chunk-5VAZHYVQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-22KBU3MW.js.map → chunk-6RR4XM5H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KUOOJR35.js.map → chunk-7QKSLAHB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NGXQ3PFT.js.map → chunk-7UCBLJDF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7DT4WSH2.js.map → chunk-BFNFTHWQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Y46GD4IX.js.map → chunk-C3YU3TXX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AZYGZGGI.js.map → chunk-CGDUIPJL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XG625QP4.js.map → chunk-EP2CKDS7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MVYWGY2A.js.map → chunk-J6AD3GWC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-R5BMJX33.js.map → chunk-KFL3XHMA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MWMVPCIE.js.map → chunk-PCBZ2VJD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-B6DUFX6H.js.map → chunk-Q3CFSOQZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KGFUY7WN.js.map → chunk-TU5P744I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JDDLOQAE.js.map → chunk-UEATYUZW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JVH7QBVV.js.map → chunk-UFNFHCAC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AGHMOTGM.js.map → chunk-Z2JQH2MG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Y4M7CPQP.js.map → chunk-ZMOPZFVT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-VQ2DHU3S.js.map → close-E3RLZSP2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-BDM6EIAR.js.map → close-K6BFI3OX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-BGML6VLD.js.map → close-many-6NBL3PM4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-RKJYPU74.js.map → close-many-X4YKS3RO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-XP5AWZ5H.js.map → comments-PLFK5ZKK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-RFS7BROJ.js.map → comments-ZNOD5PTV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-GEANHQ2J.js.map → copy-F7BUFY4J.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-2SSSHHUZ.js.map → copy-VH3L4MN2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-ZFDIG6M7.js.map → create-AMBMYP6F.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-CMZW7ITN.js.map → create-TRIBYORN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-XUBPXDYX.js.map → delete-6KQHZYIP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-MFSYVNNU.js.map → delete-ZNXUNCZR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-D7XQMONX.js.map → deps-CVDY7FFK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-T4FHBSYN.js.map → deps-SZXQHV73.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-DIU275XI.js.map → docs-DR74ITCD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-JCOYB4LZ.js.map → docs-WCVYY6I7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-BVO7CSLK.js.map → files-H5YCA74Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-NYPEW2G4.js.map → files-QEFQ2M3H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-32ROBIDL.js.map → focus-55TRYSNA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-NAGLGMHZ.js.map → focus-N2QGNS5D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-4V7SWNBB.js.map → history-compact-GWQ4UOEI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-E77SDCUP.js.map → history-compact-JJZ4EFL3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-NQI5OSKN.js.map → history-redact-4GJOLXCM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-RA5KTCLB.js.map → history-redact-TPPUT3A5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-T7SCWXEX.js.map → history-repair-HVCVCGUF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-32SU7HO5.js.map → history-repair-J7PIZ6ZP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-RRUPT7O2.js.map → learnings-KB6BT4NR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-WL2IWGWV.js.map → learnings-YYY3U2Y7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-NF2J5SHR.js.map → notes-BGG7VL72.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-SKDT3MZU.js.map → notes-ZTHXVOKM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-LAXKCAYE.js.map → plan-CJPKFRBK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-ZISPBRBC.js.map → plan-MK2QY3GA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-PYKR2UUG.js.map → profile-AQNHXOYA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-EWRQHGIS.js.map → profile-HTBFINKQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-4T7TM4MT.js.map → restore-BTBEZ5CK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-L3YUASOD.js.map → restore-EX4UUZL6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-2PCTYYRI.js.map → schema-DGSTYYQB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-2DNMPXMC.js.map → schema-HAIBEE24.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-7DMITJ3G.js.map → update-MP4XLU56.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-VKQXCXLL.js.map → update-SDIRJGSY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{health-CVSTAR2F.js.map → update-many-34AIU6W7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{health-TV3GKTFN.js.map → update-many-JUPCNOKV.js.map} +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../../../cli/commands/test.ts", "../../../../../../../../core/test/item-test-run-tracking.ts", "../../../../../../../../core/test/run-selectors.ts", "../../../../../../../../cli/commands/test/linked-command-detection.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @module cli/commands/test\n *\n * Implements the pm test command surface and its agent-facing runtime behavior.\n */\nimport { spawn, type ChildProcess } from \"node:child_process\";\nimport { cp, mkdir, mkdtemp, readdir, rm } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport path from \"node:path\";\nimport { getActiveExtensionRegistrations } from \"../../core/extensions/index.js\";\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { createStdinTokenResolver, parseCsvKv, parseOptionalNumber } from \"../../core/item/parse.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 { stableValueEquals } from \"../../core/shared/serialization.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { locateItem, mutateItem, readLocatedItem } from \"../../core/store/item-store.js\";\nimport { getSettingsPath, ITEM_FILE_EXTENSIONS, resolveGlobalPmRoot, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport { appendTrackedTestRunSummary } from \"../../core/test/item-test-run-tracking.js\";\nimport { runInit } from \"./init.js\";\nimport { looksLikeStructuredLinkedTestEntry, normalizeStructuredLinkedTestEntry } from \"./linked-test-entry.js\";\nimport {\n LINKED_TEST_ENV_NAME_PATTERN,\n LINKED_TEST_PM_CONTEXT_MODE_VALUES as PM_CONTEXT_MODE_VALUES,\n LINKED_TEST_PROTECTED_ENV_KEYS,\n parseLinkedTestAssertionEqualsMap,\n parseLinkedTestAssertionGteMap,\n parseLinkedTestBoolean as parseLinkedTestBooleanValue,\n parseLinkedTestContextMode as parseLinkedTestContextModeValue,\n parseLinkedTestEnvClear as parseLinkedTestEnvClearValue,\n parseLinkedTestEnvSet as parseLinkedTestEnvSetValue,\n parseLinkedTestJsonEntries,\n parseLinkedTestMinLines,\n parseLinkedTestRegexList,\n parseLinkedTestStringList,\n type LinkedTestPmContextMode,\n} from \"./linked-test-parsers.js\";\nimport {\n parseOnlyIndexValue,\n resolveLinkedTestRunSelection,\n type LinkedTestRunSelection,\n type LinkedTestSelectorKind,\n} from \"../../core/test/run-selectors.js\";\nimport { SCOPE_VALUES } from \"../../types/index.js\";\nimport type { LinkedTest, LinkScope } from \"../../types/index.js\";\n\nconst TEST_OUTPUT_MAX_BUFFER_BYTES = 20 * 1024 * 1024;\nconst DEFAULT_LINKED_TEST_TIMEOUT_FORCE_KILL_DELAY_MS = 3000;\nconst DEFAULT_LINKED_TEST_HEARTBEAT_INTERVAL_MS = 10000;\nconst DEFAULT_LINKED_TEST_PIPE_CLOSE_GRACE_MS = 5000;\nconst MAX_LINKED_TEST_COMMAND_LABEL_LENGTH = 120;\ntype ResolvedLinkedTestPmContextMode = Exclude<LinkedTestPmContextMode, \"auto\">;\nconst LINKED_TEST_TRACKER_DIRS_TO_SKIP = new Set([\"locks\", \"extensions\", \"runtime\"]);\nconst LINKED_TEST_ITEM_COUNT_DIRS_TO_SKIP = new Set([\"history\", \"index\", \"search\", \"extensions\", \"locks\", \"runtime\"]);\nconst LINKED_TEST_INFRA_COLLISION_PATTERNS = [\n /eaddrinuse/i,\n /address already in use/i,\n /port\\s+\\d+\\s+is already in use/i,\n /web server[^.\\n]*already running/i,\n /failed to listen on/i,\n];\nconst PM_SUBCOMMANDS_WITH_ITEM_REFERENCE = new Set([\n \"get\",\n \"history\",\n \"restore\",\n \"update\",\n \"close\",\n \"delete\",\n \"append\",\n \"claim\",\n \"release\",\n \"comments\",\n \"notes\",\n \"learnings\",\n \"files\",\n \"docs\",\n \"deps\",\n \"test\",\n]);\nconst PM_TRACKER_READ_SUBCOMMANDS = new Set([\n \"activity\",\n \"calendar\",\n \"context\",\n \"ctx\",\n \"deps\",\n \"get\",\n \"health\",\n \"history\",\n \"list\",\n \"list-all\",\n \"list-blocked\",\n \"list-canceled\",\n \"list-closed\",\n \"list-draft\",\n \"list-in-progress\",\n \"list-open\",\n \"search\",\n \"stats\",\n \"test-all\",\n \"validate\",\n]);\n\nfunction readPositiveIntegerEnv(name: string, fallback: number): number {\n const raw = process.env[name];\n if (typeof raw !== \"string\" || raw.trim().length === 0) {\n return fallback;\n }\n const parsed = Number.parseInt(raw, 10);\n if (!Number.isFinite(parsed) || parsed <= 0) {\n return fallback;\n }\n return parsed;\n}\n\nfunction linkedTestTimeoutForceKillDelayMs(): number {\n return readPositiveIntegerEnv(\"PM_LINKED_TEST_TIMEOUT_FORCE_KILL_DELAY_MS\", DEFAULT_LINKED_TEST_TIMEOUT_FORCE_KILL_DELAY_MS);\n}\n\nfunction linkedTestHeartbeatIntervalMs(): number {\n return readPositiveIntegerEnv(\"PM_LINKED_TEST_HEARTBEAT_INTERVAL_MS\", DEFAULT_LINKED_TEST_HEARTBEAT_INTERVAL_MS);\n}\n\nfunction linkedTestPipeCloseGraceMs(): number {\n return readPositiveIntegerEnv(\"PM_LINKED_TEST_PIPE_CLOSE_GRACE_MS\", DEFAULT_LINKED_TEST_PIPE_CLOSE_GRACE_MS);\n}\n\ninterface LinkedTestExecutionResult {\n stdout: string;\n stderr: string;\n exitCode: number | null;\n signal?: NodeJS.Signals | null;\n timedOut: boolean;\n maxBufferExceeded: boolean;\n spawnError?: string;\n}\n\ninterface LinkedTestProgressContext {\n index: number;\n total: number;\n timeoutMs: number;\n command: string;\n}\n\ntype LinkedTestProgressMode = \"auto\" | \"always\" | \"off\";\n\ninterface LinkedTestSandboxSourceRoots {\n projectPmRoot: string;\n globalPmRoot: string;\n}\n\ninterface LinkedTestRuntimeDirectives {\n env_set: Record<string, string>;\n env_clear: string[];\n shared_host_safe: boolean;\n}\n\n/**\n * Documents the test command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface TestCommandOptions {\n add?: string[];\n addJson?: string[];\n remove?: string[];\n list?: boolean;\n run?: boolean;\n match?: string;\n onlyIndex?: string | number;\n onlyLast?: boolean;\n timeout?: string;\n progress?: boolean;\n envSet?: string[];\n envClear?: string[];\n sharedHostSafe?: boolean;\n pmContext?: string;\n overrideLinkedPmContext?: boolean;\n failOnContextMismatch?: boolean;\n failOnSkipped?: boolean;\n failOnEmptyTestRun?: boolean;\n requireAssertionsForPm?: boolean;\n checkContext?: boolean;\n autoPmContext?: boolean;\n author?: string;\n message?: string;\n force?: boolean;\n}\n\n/**\n * Restricts linked test failure category values accepted by command, SDK, and storage contracts.\n */\nexport type LinkedTestFailureCategory =\n | \"infra_collision\"\n | \"assertion_failure\"\n | \"empty_run\"\n | \"timeout\"\n | \"max_buffer\"\n | \"spawn_error\"\n | \"signal\";\n\n/**\n * Documents the test run result payload exchanged by command, SDK, and package integrations.\n */\nexport interface TestRunResult {\n command?: string;\n path?: string;\n status: \"passed\" | \"failed\" | \"skipped\";\n exit_code?: number;\n failure_category?: LinkedTestFailureCategory;\n execution_context?: {\n requested_pm_context_mode: LinkedTestPmContextMode;\n pm_context_mode: LinkedTestPmContextMode;\n auto_pm_context_applied: boolean;\n is_pm_command: boolean;\n is_pm_tracker_read_command: boolean;\n source_project_pm_path: string;\n sandbox_project_pm_path: string;\n source_global_pm_path: string;\n sandbox_global_pm_path: string;\n source_project_item_count: number;\n sandbox_project_item_count: number;\n source_global_item_count: number;\n sandbox_global_item_count: number;\n mismatch_detected: boolean;\n project_extensions_seeded: boolean;\n global_extensions_seeded: boolean;\n };\n stdout?: string;\n stderr?: string;\n error?: string;\n}\n\n/**\n * Documents the test result payload exchanged by command, SDK, and package integrations.\n */\nexport interface TestResult {\n ok: boolean;\n id: string;\n tests: LinkedTest[];\n run_results: TestRunResult[];\n failure_categories: Record<LinkedTestFailureCategory, number>;\n selection?: Omit<LinkedTestRunSelection, \"selected\">;\n fail_on_skipped_triggered?: boolean;\n warnings?: string[];\n changed: boolean;\n count: number;\n}\n\nfunction resolveAuthor(candidate: string | undefined, fallback: string): string {\n const resolved = candidate ?? process.env.PM_AUTHOR ?? fallback;\n const trimmed = resolved.trim();\n return trimmed || \"unknown\";\n}\n\nfunction resolveTrackedRunId(kind: \"test\" | \"test-all\"): string {\n const fromEnv = process.env.PM_BACKGROUND_TEST_RUN_ID?.trim();\n if (fromEnv && fromEnv.length > 0) {\n return fromEnv;\n }\n return `${kind}-local-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;\n}\n\nfunction summarizeRunResultStatuses(results: TestRunResult[]): { passed: number; failed: number; skipped: number } {\n let passed = 0;\n let failed = 0;\n let skipped = 0;\n for (const entry of results) {\n if (entry.status === \"passed\") {\n passed += 1;\n continue;\n }\n if (entry.status === \"failed\") {\n failed += 1;\n continue;\n }\n skipped += 1;\n }\n return { passed, failed, skipped };\n}\n\n/**\n * Implements summarize context preflight for the public runtime surface of this module.\n */\nexport function summarizeContextPreflight(runResults: TestRunResult[]): {\n checked_pm_commands: number;\n tracker_read_commands: number;\n mismatches: number;\n auto_remediated: number;\n} {\n let checkedPmCommands = 0;\n let trackerReadCommands = 0;\n let mismatches = 0;\n let autoRemediated = 0;\n for (const result of runResults) {\n const context = result.execution_context;\n if (!context || context.is_pm_command !== true) {\n continue;\n }\n checkedPmCommands += 1;\n if (context.is_pm_tracker_read_command === true) {\n trackerReadCommands += 1;\n }\n if (context.mismatch_detected === true) {\n mismatches += 1;\n }\n if (context.auto_pm_context_applied === true) {\n autoRemediated += 1;\n }\n }\n return {\n checked_pm_commands: checkedPmCommands,\n tracker_read_commands: trackerReadCommands,\n mismatches,\n auto_remediated: autoRemediated,\n };\n}\n\nfunction ensureScope(raw: string | undefined): LinkScope {\n const value = (raw ?? \"project\") as LinkScope;\n if (!SCOPE_VALUES.includes(value)) {\n throw new PmCliError(`Invalid scope \"${raw}\"`, EXIT_CODE.USAGE);\n }\n return value;\n}\n\nfunction parsePmContextMode(raw: string | undefined): LinkedTestPmContextMode {\n if (!raw) {\n return \"schema\";\n }\n const normalized = raw.trim().toLowerCase();\n if ((PM_CONTEXT_MODE_VALUES as readonly string[]).includes(normalized)) {\n return normalized as LinkedTestPmContextMode;\n }\n throw new PmCliError(\n `Invalid --pm-context value \"${raw}\". Expected one of: ${PM_CONTEXT_MODE_VALUES.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n}\n\nfunction resolveLinkedTestRequestedContextMode(\n linkedTest: LinkedTest,\n runLevelMode: LinkedTestPmContextMode,\n overrideLinkedPmContext: boolean,\n): LinkedTestPmContextMode {\n if (overrideLinkedPmContext) {\n return runLevelMode;\n }\n if (typeof linkedTest.pm_context_mode !== \"string\" || linkedTest.pm_context_mode.trim().length === 0) {\n return runLevelMode;\n }\n return parsePmContextMode(linkedTest.pm_context_mode);\n}\n\nfunction resolveLinkedTestEffectiveContextMode(\n requestedMode: LinkedTestPmContextMode,\n isPmTrackerReadCommand: boolean,\n): ResolvedLinkedTestPmContextMode {\n if (requestedMode === \"auto\") {\n return isPmTrackerReadCommand ? \"tracker\" : \"schema\";\n }\n return requestedMode;\n}\n\n/* c8 ignore start -- assertion-shape truthiness combinations are covered by linked-test integration suites */\nfunction hasLinkedTestAssertions(linkedTest: LinkedTest): boolean {\n return (\n (linkedTest.assert_stdout_contains?.length ?? 0) > 0 ||\n (linkedTest.assert_stdout_regex?.length ?? 0) > 0 ||\n (linkedTest.assert_stderr_contains?.length ?? 0) > 0 ||\n (linkedTest.assert_stderr_regex?.length ?? 0) > 0 ||\n typeof linkedTest.assert_stdout_min_lines === \"number\" ||\n Object.keys(linkedTest.assert_json_field_equals ?? {}).length > 0 ||\n Object.keys(linkedTest.assert_json_field_gte ?? {}).length > 0\n );\n}\n/* c8 ignore stop */\n\n/* c8 ignore start -- pm-context mismatch hint combinations are validated by tracker/schema integration runs */\nfunction buildPmContextMismatchHint(params: {\n executionContext: NonNullable<TestRunResult[\"execution_context\"]>;\n runLevelPmContextMode: LinkedTestPmContextMode;\n linkedOverridePmContextMode: LinkedTestPmContextMode | undefined;\n}): string {\n const { executionContext, runLevelPmContextMode, linkedOverridePmContextMode } = params;\n if (!executionContext.is_pm_tracker_read_command || !executionContext.mismatch_detected) {\n return \"\";\n }\n if (runLevelPmContextMode === \"tracker\" && linkedOverridePmContextMode === \"schema\") {\n return (\n \" Linked test metadata pm_context_mode=schema overrides run-level --pm-context tracker.\" +\n \" Set pm_context_mode=tracker (or auto) on the linked test, or remove the override, to run against seeded tracker data.\"\n );\n }\n if (executionContext.pm_context_mode === \"schema\") {\n return \" Use --pm-context tracker to run PM tracker-read commands against seeded tracker data.\";\n }\n return \"\";\n}\n/* c8 ignore stop */\n\nfunction mergeEnvSetDirectives(entries: string[] | undefined, optionName: string): Record<string, string> {\n const merged: Record<string, string> = {};\n if (!entries) {\n return merged;\n }\n for (const entry of entries) {\n const parsed = parseLinkedTestEnvSetValue(entry, optionName);\n if (!parsed) {\n continue;\n }\n for (const [key, value] of Object.entries(parsed)) {\n merged[key] = value;\n }\n }\n return merged;\n}\n\nfunction mergeEnvClearDirectives(entries: string[] | undefined, optionName: string): string[] {\n if (!entries) {\n return [];\n }\n const values: string[] = [];\n for (const entry of entries) {\n const parsed = parseLinkedTestEnvClearValue(entry, optionName);\n if (parsed) {\n values.push(...parsed);\n }\n }\n return [...new Set(values)];\n}\n\n// Linked-test command detection helpers + constants live in a sibling leaf\n// module to keep this command file under the per-file LOC budget. Re-exported\n// here so no consumer outside this file changes.\nimport {\n BUN_GLOBAL_FLAGS_WITH_VALUE,\n NPM_EXEC_SUBCOMMANDS,\n NPM_GLOBAL_FLAGS_WITH_VALUE,\n NPX_FLAGS_WITH_VALUE,\n PM_GLOBAL_FLAGS_WITH_VALUE,\n PNPM_GLOBAL_FLAGS_WITH_VALUE,\n SCRIPT_RUN_FLAGS_WITH_VALUE,\n SCRIPT_RUN_SUBCOMMANDS,\n YARN_GLOBAL_FLAGS_WITH_VALUE,\n firstPmSubcommand,\n firstPositionalToken,\n isPmCliPackageToken,\n isPmCliScriptToken,\n isPmExecutableToken,\n normalizePackageSpecifier,\n parseLauncherSubcommand,\n parseNpmExecCommand,\n parseNpxCommand,\n parsePnpmDlxCommand,\n resolvePmSubcommandContext,\n splitNormalizedCommandSegments,\n stripLeadingEnvAssignments,\n} from \"./test/linked-command-detection.js\";\n\nfunction looksLikePrefixedItemId(token: string, idPrefix: string): boolean {\n const normalizedPrefix = idPrefix.trim().toLowerCase().replace(/-+$/, \"\");\n if (normalizedPrefix.length === 0) {\n return false;\n }\n const normalized = token.trim().toLowerCase();\n if (!normalized.startsWith(`${normalizedPrefix}-`)) {\n return false;\n }\n return normalized.length > normalizedPrefix.length + 1;\n}\n\nfunction extractPmInvocationArgsFromSegment(segment: string): string[] | null {\n const rawTokens = segment.split(\" \").filter((token) => token.length > 0);\n const tokens = stripLeadingEnvAssignments(rawTokens);\n if (tokens.length === 0) {\n return null;\n }\n const [executable, ...args] = tokens;\n if (isPmExecutableToken(executable) || isPmCliScriptToken(executable)) {\n return args;\n }\n if (executable === \"node\" && args.length > 0 && isPmCliScriptToken(args[0])) {\n return args.slice(1);\n }\n return extractPackageManagerPmInvocationArgs(executable, args);\n}\n\nfunction extractPackageManagerPmInvocationArgs(executable: string, args: string[]): string[] | null {\n const parsed = parsePackageManagerPmInvocation(executable, args);\n if (!parsed || (!isPmExecutableToken(parsed.command) && !isPmCliPackageToken(parsed.command))) {\n return null;\n }\n return parsed.args;\n}\n\nfunction parsePackageManagerPmInvocation(executable: string, args: string[]): { command: string; args: string[] } | null {\n if (executable === \"npx\" || executable === \"bunx\") {\n return parseNpxCommand(args);\n }\n if (executable === \"pnpm\") {\n return parsePnpmDlxCommand(args);\n }\n if (executable === \"npm\") {\n return parseNpmExecCommand(args);\n }\n return null;\n}\n\nfunction commandInvokesPmCli(command: string): boolean {\n const normalizedCommand = normalizeCommandForValidation(command);\n return splitNormalizedCommandSegments(normalizedCommand).some((segment) => extractPmInvocationArgsFromSegment(segment) !== null);\n}\n\nfunction commandInvokesPmTrackerReadCommand(command: string): boolean {\n const normalizedCommand = normalizeCommandForValidation(command);\n return splitNormalizedCommandSegments(normalizedCommand).some((segment) => {\n const invocationArgs = extractPmInvocationArgsFromSegment(segment);\n if (!invocationArgs) {\n return false;\n }\n const context = resolvePmSubcommandContext(invocationArgs);\n if (!context) {\n return false;\n }\n return PM_TRACKER_READ_SUBCOMMANDS.has(context.subcommand);\n });\n}\n\n/* c8 ignore start -- command-token extraction edge permutations are covered by integration command-parser tests */\n/**\n * Implements extract referenced pm item ids from command for the public runtime surface of this module.\n */\nexport function extractReferencedPmItemIdsFromCommand(command: string, idPrefix = \"pm\"): string[] {\n const normalizedCommand = normalizeCommandForValidation(command);\n const ids = new Set<string>();\n for (const segment of splitNormalizedCommandSegments(normalizedCommand)) {\n const invocationArgs = extractPmInvocationArgsFromSegment(segment);\n if (!invocationArgs) {\n continue;\n }\n const context = resolvePmSubcommandContext(invocationArgs);\n if (!context) {\n continue;\n }\n if (!PM_SUBCOMMANDS_WITH_ITEM_REFERENCE.has(context.subcommand)) {\n continue;\n }\n const candidate = firstPositionalToken(context.remaining);\n if (!candidate) {\n continue;\n }\n if (looksLikePrefixedItemId(candidate, idPrefix)) {\n ids.add(candidate);\n }\n }\n return [...ids].sort((left, right) => left.localeCompare(right));\n}\n/* c8 ignore stop */\n\nfunction resolveDirectRunnerSubcommand(parsed: { subcommand: string; args: string[] } | null): string | undefined {\n if (!parsed) {\n return undefined;\n }\n if (!SCRIPT_RUN_SUBCOMMANDS.has(parsed.subcommand)) {\n return parsed.subcommand;\n }\n return parseLauncherSubcommand(parsed.args, SCRIPT_RUN_FLAGS_WITH_VALUE)?.subcommand;\n}\n\nfunction firstDirectTestRunnerSubcommand(executable: string, args: string[]): string | undefined {\n if (executable === \"npx\" || executable === \"bunx\") {\n return parseNpxCommand(args)?.command;\n }\n if (executable === \"pnpm\") {\n return resolveDirectRunnerSubcommand(parseLauncherSubcommand(args, PNPM_GLOBAL_FLAGS_WITH_VALUE));\n }\n if (executable === \"npm\") {\n return resolveDirectRunnerSubcommand(parseLauncherSubcommand(args, NPM_GLOBAL_FLAGS_WITH_VALUE));\n }\n if (executable === \"yarn\") {\n return resolveDirectRunnerSubcommand(parseLauncherSubcommand(args, YARN_GLOBAL_FLAGS_WITH_VALUE));\n }\n if (executable === \"bun\") {\n return resolveDirectRunnerSubcommand(parseLauncherSubcommand(args, BUN_GLOBAL_FLAGS_WITH_VALUE));\n }\n return undefined;\n}\n\nfunction isDirectTestRunnerSubcommand(token: string | undefined): boolean {\n if (!token) {\n return false;\n }\n return token === \"vitest\" || token === \"test\" || token.startsWith(\"test:\");\n}\n\nfunction parsedLauncherInvokesRecursiveTestAll(parsed: { command: string; args: string[] } | null): boolean {\n if (!parsed) {\n return false;\n }\n if (!isPmExecutableToken(parsed.command) && !isPmCliPackageToken(parsed.command)) {\n return false;\n }\n return firstPmSubcommand(parsed.args) === \"test-all\";\n}\n\nfunction segmentInvokesRecursiveTestAll(segment: string): boolean {\n const rawTokens = segment.split(\" \").filter((token) => token.length > 0);\n const tokens = stripLeadingEnvAssignments(rawTokens);\n if (tokens.length === 0) {\n return false;\n }\n\n const [executable, ...args] = tokens;\n if (isPmExecutableToken(executable) || isPmCliScriptToken(executable)) {\n return firstPmSubcommand(args) === \"test-all\";\n }\n\n if (executable === \"node\" && args.length > 0 && isPmCliScriptToken(args[0])) {\n return firstPmSubcommand(args.slice(1)) === \"test-all\";\n }\n\n if (executable === \"npx\" || executable === \"bunx\") {\n return parsedLauncherInvokesRecursiveTestAll(parseNpxCommand(args));\n }\n\n if (executable === \"pnpm\") {\n return parsedLauncherInvokesRecursiveTestAll(parsePnpmDlxCommand(args));\n }\n\n if (executable === \"npm\") {\n return parsedLauncherInvokesRecursiveTestAll(parseNpmExecCommand(args));\n }\n\n return false;\n}\n\nfunction invokesRecursiveTestAllCommand(command: string): boolean {\n const normalized = normalizeCommandForValidation(command);\n return splitNormalizedCommandSegments(normalized).some((segment) => segmentInvokesRecursiveTestAll(segment));\n}\n\nfunction assertNoRecursiveTestAllCommand(command: string): void {\n if (!invokesRecursiveTestAllCommand(command)) return;\n throw new PmCliError(\n 'Linked test commands must not invoke \"pm test-all\"; this creates recursive orchestration.',\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeCommandForValidation(command: string): string {\n return command\n .trim()\n .replaceAll(\"\\\\\", \"/\")\n .replaceAll('\"', \"\")\n .replaceAll(\"'\", \"\")\n .replaceAll(/\\s+/g, \" \")\n .toLowerCase();\n}\n\nfunction commandUsesSandboxRunner(normalizedCommand: string): boolean {\n return (\n normalizedCommand.includes(\"node scripts/run-tests.mjs \") ||\n normalizedCommand.endsWith(\"node scripts/run-tests.mjs\") ||\n normalizedCommand.includes(\"node ./scripts/run-tests.mjs \") ||\n normalizedCommand.endsWith(\"node ./scripts/run-tests.mjs\")\n );\n}\n\nfunction segmentHasExplicitSandboxEnv(normalizedSegment: string): boolean {\n const hasExplicitPmPath = /\\bpm_path\\s*=/.test(normalizedSegment) || /\\$env:pm_path\\s*=/.test(normalizedSegment);\n const hasExplicitPmGlobalPath =\n /\\bpm_global_path\\s*=/.test(normalizedSegment) || /\\$env:pm_global_path\\s*=/.test(normalizedSegment);\n return hasExplicitPmPath && hasExplicitPmGlobalPath;\n}\n\nfunction segmentInvokesUnsafeDirectTestRunner(normalizedSegment: string): boolean {\n const rawTokens = normalizedSegment.split(\" \").filter((token) => token.length > 0);\n const tokens = stripLeadingEnvAssignments(rawTokens);\n if (tokens.length === 0) {\n return false;\n }\n const [executable, ...args] = tokens;\n if (executable === \"vitest\" || executable.endsWith(\"/vitest\") || executable.endsWith(\"/vitest.mjs\")) {\n return true;\n }\n if (executable === \"node\") {\n return nodeArgsInvokeUnsafeDirectTestRunner(args);\n }\n return packageManagerInvokesUnsafeDirectTestRunner(executable, args);\n}\n\nfunction nodeArgsInvokeUnsafeDirectTestRunner(args: string[]): boolean {\n return (\n args.includes(\"--test\") ||\n args.some((arg) => arg === \"vitest\" || arg === \"vitest.mjs\" || arg.endsWith(\"/vitest\") || arg.endsWith(\"/vitest.mjs\"))\n );\n}\n\nfunction packageManagerInvokesUnsafeDirectTestRunner(executable: string, args: string[]): boolean {\n if (executable === \"npx\" || executable === \"bunx\") {\n return isDirectTestRunnerSubcommand(parseNpxCommand(args)?.command);\n }\n if (executable === \"pnpm\" || executable === \"npm\") {\n return (\n isDirectTestRunnerSubcommand(parsePackageManagerPmInvocation(executable, args)?.command) ||\n firstDirectTestRunnerSubcommand(executable, args) === \"vitest\"\n );\n }\n return (executable === \"yarn\" || executable === \"bun\") && firstDirectTestRunnerSubcommand(executable, args) === \"vitest\";\n}\n\nfunction assertSandboxSafeTestRunnerCommand(command: string): void {\n const normalized = normalizeCommandForValidation(command);\n const segments = splitNormalizedCommandSegments(normalized);\n const hasUnsafeDirectRunnerSegment = segments.some(\n (segment) =>\n !commandUsesSandboxRunner(segment) &&\n segmentInvokesUnsafeDirectTestRunner(segment) &&\n !segmentHasExplicitSandboxEnv(segment),\n );\n\n if (!hasUnsafeDirectRunnerSegment) {\n return;\n }\n\n throw new PmCliError(\n 'Linked test runner commands must be sandbox-safe: use \"node scripts/run-tests.mjs <test|coverage>\", use a package-manager script such as \"pnpm test\", or include PM_PATH=... PM_GLOBAL_PATH=... INLINE in the command string (exporting them in your shell environment is not checked). Example: \"PM_PATH=/tmp/pm-x PM_GLOBAL_PATH=/tmp/pm-x-g vitest run\".',\n EXIT_CODE.USAGE,\n );\n}\n\nfunction getRuntimeSafetySkipReason(command: string): string | undefined {\n if (!invokesRecursiveTestAllCommand(command)) return undefined;\n return 'Linked test command skipped: Linked test commands must not invoke \"pm test-all\"; this creates recursive orchestration.';\n}\n\nfunction parseAddEntries(raw: string[] | undefined): LinkedTest[] {\n if (!raw) return [];\n return raw.map(parseAddEntry);\n}\n\nfunction parseAddEntry(entry: string): LinkedTest {\n const trimmed = entry.trim();\n const kv = looksLikeStructuredLinkedTestEntry(trimmed)\n ? normalizeStructuredLinkedTestEntry(parseCsvKv(entry, \"--add\"), \"--add\")\n : { command: trimmed };\n const command = trimLinkedTestEntryField(kv.command);\n if (!command) {\n throw new PmCliError(\"--add requires command=<value> or a bare command (path=<value> is optional metadata)\", EXIT_CODE.USAGE);\n }\n assertNoRecursiveTestAllCommand(command);\n assertSandboxSafeTestRunnerCommand(command);\n return {\n command,\n path: trimLinkedTestEntryField(kv.path),\n scope: ensureScope(kv.scope),\n timeout_seconds: parseLinkedTestTimeoutSeconds(\n trimLinkedTestEntryField(kv.timeout_seconds),\n trimLinkedTestEntryField(kv.timeout),\n ),\n pm_context_mode: parseLinkedTestContextModeValue(trimLinkedTestEntryField(kv.pm_context_mode), \"--add\"),\n env_set: parseLinkedTestEnvSetValue(trimLinkedTestEntryField(kv.env_set), \"--add\"),\n env_clear: parseLinkedTestEnvClearValue(trimLinkedTestEntryField(kv.env_clear), \"--add\"),\n shared_host_safe: parseLinkedTestBooleanValue(trimLinkedTestEntryField(kv.shared_host_safe), \"--add\", \"shared_host_safe\"),\n assert_stdout_contains: parseLinkedTestStringList(trimLinkedTestEntryField(kv.assert_stdout_contains)),\n assert_stdout_regex: parseLinkedTestRegexList(trimLinkedTestEntryField(kv.assert_stdout_regex), \"--add\", \"assert_stdout_regex\"),\n assert_stderr_contains: parseLinkedTestStringList(trimLinkedTestEntryField(kv.assert_stderr_contains)),\n assert_stderr_regex: parseLinkedTestRegexList(trimLinkedTestEntryField(kv.assert_stderr_regex), \"--add\", \"assert_stderr_regex\"),\n assert_stdout_min_lines: parseLinkedTestMinLines(trimLinkedTestEntryField(kv.assert_stdout_min_lines), \"--add\"),\n assert_json_field_equals: parseLinkedTestAssertionEqualsMap(trimLinkedTestEntryField(kv.assert_json_field_equals), \"--add\"),\n assert_json_field_gte: parseLinkedTestAssertionGteMap(trimLinkedTestEntryField(kv.assert_json_field_gte), \"--add\"),\n note: trimLinkedTestEntryField(kv.note),\n };\n}\n\nfunction trimLinkedTestEntryField(value: string | undefined): string | undefined {\n const trimmed = value?.trim();\n return trimmed && trimmed.length > 0 ? trimmed : undefined;\n}\n\nfunction parseLinkedTestTimeoutSeconds(timeoutSecondsRaw: string | undefined, timeoutAliasRaw: string | undefined): number | undefined {\n if (timeoutSecondsRaw && timeoutAliasRaw && timeoutSecondsRaw !== timeoutAliasRaw) {\n throw new PmCliError(\"--add timeout and timeout_seconds must match when both are provided\", EXIT_CODE.USAGE);\n }\n const timeoutRaw = timeoutSecondsRaw ?? timeoutAliasRaw;\n return timeoutRaw === undefined ? undefined : Math.floor(parseOptionalNumber(timeoutRaw, \"timeout_seconds\"));\n}\n\n/* c8 ignore start -- add-json validation matrix is covered by linked-test parser integration suites */\nfunction parseAddJsonEntries(raw: string[] | undefined): LinkedTest[] {\n if (!raw) return [];\n return raw.flatMap((entry) => {\n const parsed = parseLinkedTestJsonEntries(entry, \"--add-json\");\n for (const linkedTest of parsed) {\n const command = linkedTest.command;\n if (!command) {\n throw new PmCliError(\"--add-json requires a non-empty command string\", EXIT_CODE.USAGE);\n }\n assertNoRecursiveTestAllCommand(command);\n assertSandboxSafeTestRunnerCommand(command);\n }\n return parsed;\n });\n}\n/* c8 ignore stop */\n\nfunction parseRemoveEntries(raw: string[] | undefined): string[] {\n if (!raw) return [];\n return raw.map((entry) => {\n const trimmed = entry.trim();\n if (!trimmed) {\n throw new PmCliError(\"--remove requires command or path value\", EXIT_CODE.USAGE);\n }\n if (\n trimmed.includes(\"=\") ||\n /^(?:[-*+]\\s+)?(?:path|command)\\s*[:=]/i.test(trimmed) ||\n trimmed.startsWith(\"```\")\n ) {\n const kv = parseCsvKv(trimmed, \"--remove\");\n const value = kv.path ?? kv.command;\n if (!value?.trim()) {\n throw new PmCliError(\"--remove requires command=<value> and/or path=<value>\", EXIT_CODE.USAGE);\n }\n return value.trim();\n }\n return trimmed;\n });\n}\n\nfunction closeLinkedTestStdin(child: ChildProcess): void {\n // Force EOF on child stdin so non-interactive runs do not wait on input.\n try {\n child.stdin?.end();\n } catch {\n // Child stdin can already be closed depending on command startup timing.\n }\n}\n\nfunction summarizeLinkedTestCommand(command: string): string {\n const normalized = command.trim().replaceAll(/\\s+/g, \" \");\n if (normalized.length <= MAX_LINKED_TEST_COMMAND_LABEL_LENGTH) {\n return normalized;\n }\n return `${normalized.slice(0, MAX_LINKED_TEST_COMMAND_LABEL_LENGTH - 3)}...`;\n}\n\nfunction shouldEmitLinkedTestProgress(mode: LinkedTestProgressMode): boolean {\n /* c8 ignore start -- reserved for future explicit \"off\" mode wiring. */\n if (mode === \"off\") {\n return false;\n }\n /* c8 ignore stop */\n if (mode === \"always\") {\n return true;\n }\n return process.stderr.isTTY === true;\n}\n\nfunction emitLinkedTestProgress(message: string): void {\n try {\n process.stderr.write(`${message}\\n`);\n } catch {\n // Ignore transient stderr write failures.\n }\n}\n\nfunction beginLinkedTestProgress(context: LinkedTestProgressContext, mode: LinkedTestProgressMode): NodeJS.Timeout | null {\n if (!shouldEmitLinkedTestProgress(mode)) {\n return null;\n }\n const commandLabel = summarizeLinkedTestCommand(context.command);\n const startAt = Date.now();\n emitLinkedTestProgress(\n `[pm test] linked-test ${context.index}/${context.total} start timeout_ms=${context.timeoutMs} command=\"${commandLabel}\"`,\n );\n const heartbeat = setInterval(() => {\n const elapsedMs = Date.now() - startAt;\n emitLinkedTestProgress(\n `[pm test] linked-test ${context.index}/${context.total} running elapsed_ms=${elapsedMs} command=\"${commandLabel}\"`,\n );\n }, linkedTestHeartbeatIntervalMs());\n heartbeat.unref?.();\n return heartbeat;\n}\n\nfunction endLinkedTestProgress(\n context: LinkedTestProgressContext,\n executionResult: Pick<LinkedTestExecutionResult, \"timedOut\" | \"maxBufferExceeded\" | \"exitCode\" | \"signal\">,\n startedAt: number,\n mode: LinkedTestProgressMode,\n): void {\n if (!shouldEmitLinkedTestProgress(mode)) {\n return;\n }\n const commandLabel = summarizeLinkedTestCommand(context.command);\n const elapsedMs = Date.now() - startedAt;\n const failed = executionResult.timedOut || executionResult.maxBufferExceeded || executionResult.exitCode !== 0;\n const statusLabel = failed ? \"failed\" : \"passed\";\n const reasonTokens: string[] = [];\n if (executionResult.timedOut) {\n reasonTokens.push(\"reason=timeout\");\n }\n if (executionResult.maxBufferExceeded) {\n reasonTokens.push(\"reason=max_buffer\");\n }\n if (executionResult.signal) {\n reasonTokens.push(`signal=${executionResult.signal}`);\n }\n const exitLabel = executionResult.exitCode === null ? \"null\" : String(executionResult.exitCode);\n const reasonSuffix = reasonTokens.length > 0 ? ` ${reasonTokens.join(\" \")}` : \"\";\n emitLinkedTestProgress(\n `[pm test] linked-test ${context.index}/${context.total} end status=${statusLabel} exit_code=${exitLabel} elapsed_ms=${elapsedMs}${reasonSuffix} command=\"${commandLabel}\"`,\n );\n}\n\n/* c8 ignore start -- process-tree teardown paths are highly platform-dependent. */\nasync function killProcessTree(pid: number): Promise<void> {\n if (!Number.isInteger(pid) || pid <= 0) {\n return;\n }\n if (process.platform === \"win32\") {\n await new Promise<void>((resolve) => {\n const killer = spawn(\"taskkill\", [\"/pid\", String(pid), \"/T\", \"/F\"], {\n stdio: \"ignore\",\n windowsHide: true,\n });\n killer.on(\"error\", () => resolve());\n killer.on(\"close\", () => resolve());\n });\n return;\n }\n try {\n process.kill(-pid, \"SIGKILL\");\n return;\n } catch {\n // Fall back to direct child kill when no process group is available.\n }\n try {\n process.kill(pid, \"SIGKILL\");\n } catch {\n // The process can already be gone.\n }\n}\n/* c8 ignore stop */\n\n/* c8 ignore start -- process lifecycle timing/error race branches are covered by cross-platform integration runners */\nasync function runLinkedTestCommand(\n command: string,\n timeoutMs: number,\n env: NodeJS.ProcessEnv,\n progressContext: LinkedTestProgressContext,\n progressMode: LinkedTestProgressMode,\n): Promise<LinkedTestExecutionResult> {\n const startedAt = Date.now();\n const heartbeat = beginLinkedTestProgress(progressContext, progressMode);\n const child = spawn(command, {\n cwd: process.cwd(),\n env,\n shell: true,\n windowsHide: true,\n detached: process.platform !== \"win32\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n closeLinkedTestStdin(child);\n\n let stdout = \"\";\n let stderr = \"\";\n let stdoutBytes = 0;\n let stderrBytes = 0;\n let timedOut = false;\n let maxBufferExceeded = false;\n let spawnError: string | undefined;\n let forceKillTimer: NodeJS.Timeout | null = null;\n let timedOutTimer: NodeJS.Timeout | null = null;\n let terminationRequested = false;\n\n const clearTimers = (): void => {\n if (heartbeat) {\n clearInterval(heartbeat);\n }\n if (timedOutTimer) {\n clearTimeout(timedOutTimer);\n timedOutTimer = null;\n }\n if (forceKillTimer) {\n clearTimeout(forceKillTimer);\n forceKillTimer = null;\n }\n };\n\n /* c8 ignore start -- timeout termination branches depend on scheduler/process-group timing. */\n const requestTermination = async (): Promise<void> => {\n if (terminationRequested) {\n return;\n }\n terminationRequested = true;\n const pid = child.pid;\n if (!pid || pid <= 0) {\n try {\n child.kill(\"SIGTERM\");\n } catch {\n // Child can already be closed.\n }\n return;\n }\n if (process.platform === \"win32\") {\n await killProcessTree(pid);\n return;\n }\n try {\n process.kill(-pid, \"SIGTERM\");\n } catch {\n /* c8 ignore next 4 -- platform-specific process-group fallback path. */\n try {\n child.kill(\"SIGTERM\");\n } catch {\n // Child can already be closed.\n }\n }\n /* c8 ignore next 3 -- exercised only when timeout escalation triggers force-kill fallback. */\n forceKillTimer = setTimeout(() => {\n void killProcessTree(pid);\n }, linkedTestTimeoutForceKillDelayMs());\n forceKillTimer.unref?.();\n };\n /* c8 ignore stop */\n\n const appendChunk = (chunk: Buffer | string, target: \"stdout\" | \"stderr\"): void => {\n const text = typeof chunk === \"string\" ? chunk : chunk.toString(\"utf8\");\n const bytes = Buffer.byteLength(text);\n if (target === \"stdout\") {\n stdoutBytes += bytes;\n if (stdoutBytes <= TEST_OUTPUT_MAX_BUFFER_BYTES) {\n stdout += text;\n }\n } else {\n stderrBytes += bytes;\n if (stderrBytes <= TEST_OUTPUT_MAX_BUFFER_BYTES) {\n stderr += text;\n }\n }\n if (!maxBufferExceeded && (stdoutBytes > TEST_OUTPUT_MAX_BUFFER_BYTES || stderrBytes > TEST_OUTPUT_MAX_BUFFER_BYTES)) {\n maxBufferExceeded = true;\n void requestTermination();\n }\n };\n\n child.stdout?.on(\"data\", (chunk) => appendChunk(chunk, \"stdout\"));\n child.stderr?.on(\"data\", (chunk) => appendChunk(chunk, \"stderr\"));\n /* c8 ignore next 5 -- shell spawn error callbacks are non-deterministic across platforms. */\n child.on(\"error\", (error) => {\n spawnError = error.message;\n });\n\n /* c8 ignore next 4 -- callback scheduling timing is non-deterministic under coverage instrumentation. */\n timedOutTimer = setTimeout(() => {\n timedOut = true;\n void requestTermination();\n }, timeoutMs);\n timedOutTimer.unref?.();\n\n const { code, signal } = await new Promise<{ code: number | null; signal: NodeJS.Signals | null }>((resolve) => {\n let settled = false;\n let pipeCloseGraceTimer: NodeJS.Timeout | null = null;\n const settle = (value: { code: number | null; signal: NodeJS.Signals | null }, destroyPipes = false): void => {\n if (settled) {\n return;\n }\n settled = true;\n if (pipeCloseGraceTimer) {\n clearTimeout(pipeCloseGraceTimer);\n pipeCloseGraceTimer = null;\n }\n if (destroyPipes) {\n child.stdin?.destroy();\n child.stdout?.destroy();\n child.stderr?.destroy();\n }\n resolve(value);\n };\n child.on(\"exit\", (exitCode, exitSignal) => {\n if (settled) {\n return;\n }\n pipeCloseGraceTimer = setTimeout(() => {\n settle({\n code: exitCode,\n signal: exitSignal,\n }, true);\n }, linkedTestPipeCloseGraceMs());\n pipeCloseGraceTimer.unref?.();\n });\n child.on(\"close\", (closeCode, closeSignal) => {\n settle({\n code: closeCode,\n signal: closeSignal,\n });\n });\n });\n clearTimers();\n const executionResult: LinkedTestExecutionResult = {\n stdout,\n stderr,\n exitCode: code,\n signal,\n timedOut,\n maxBufferExceeded,\n spawnError,\n };\n endLinkedTestProgress(progressContext, executionResult, startedAt, progressMode);\n return executionResult;\n}\n/* c8 ignore stop */\n\nfunction formatLinkedTestExecutionError(result: LinkedTestExecutionResult, timeoutMs: number): string {\n const details: string[] = [];\n if (result.maxBufferExceeded) {\n details.push(\n `Linked test output exceeded maxBuffer=${TEST_OUTPUT_MAX_BUFFER_BYTES} bytes. Reduce output volume or split the command.`,\n );\n }\n if (result.timedOut && timeoutMs > 0) {\n details.push(`Linked test timed out after ${timeoutMs}ms.`);\n }\n const signalMessage = result.signal ? `Linked test command terminated by signal ${result.signal}.` : undefined;\n const baseMessage = result.spawnError?.trim() || signalMessage || \"Linked test command failed.\";\n if (details.length === 0) {\n return baseMessage;\n }\n return `${baseMessage} ${details.join(\" \")}`;\n}\n\nfunction hasInfraCollisionSignal(result: Pick<LinkedTestExecutionResult, \"stdout\" | \"stderr\" | \"spawnError\">): boolean {\n const combined = [result.spawnError ?? \"\", result.stderr, result.stdout].join(\"\\n\");\n return LINKED_TEST_INFRA_COLLISION_PATTERNS.some((pattern) => pattern.test(combined));\n}\n\n/**\n * Implements classify linked test failure for the public runtime surface of this module.\n */\nexport function classifyLinkedTestFailure(\n result: Pick<LinkedTestExecutionResult, \"stdout\" | \"stderr\" | \"spawnError\" | \"signal\" | \"timedOut\" | \"maxBufferExceeded\">,\n): LinkedTestFailureCategory {\n if (hasInfraCollisionSignal(result)) {\n return \"infra_collision\";\n }\n if (result.timedOut) {\n return \"timeout\";\n }\n if (result.maxBufferExceeded) {\n return \"max_buffer\";\n }\n if (result.spawnError) {\n return \"spawn_error\";\n }\n if (result.signal) {\n return \"signal\";\n }\n return \"assertion_failure\";\n}\n\nfunction createEmptyFailureCategoryCounts(): Record<LinkedTestFailureCategory, number> {\n return {\n infra_collision: 0,\n assertion_failure: 0,\n empty_run: 0,\n timeout: 0,\n max_buffer: 0,\n spawn_error: 0,\n signal: 0,\n };\n}\n\n/**\n * Implements count failure categories for the public runtime surface of this module.\n */\nexport function countFailureCategories(runResults: TestRunResult[]): Record<LinkedTestFailureCategory, number> {\n const counts = createEmptyFailureCategoryCounts();\n for (const result of runResults) {\n if (result.status !== \"failed\" || !result.failure_category) {\n continue;\n }\n counts[result.failure_category] += 1;\n }\n return counts;\n}\n\nfunction applyEnvDirectiveStage(env: NodeJS.ProcessEnv, directives: Pick<LinkedTestRuntimeDirectives, \"env_set\" | \"env_clear\">): void {\n for (const [key, value] of Object.entries(directives.env_set)) {\n if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {\n continue;\n }\n env[key] = value;\n }\n for (const key of directives.env_clear) {\n if (LINKED_TEST_PROTECTED_ENV_KEYS.has(key.toUpperCase())) {\n continue;\n }\n delete env[key];\n }\n}\n\nfunction applySharedHostSafeDefaults(env: NodeJS.ProcessEnv): void {\n if (env.PORT === undefined) {\n env.PORT = \"0\";\n }\n if (env.HOST === undefined) {\n env.HOST = \"127.0.0.1\";\n }\n if (env.PM_SHARED_HOST_SAFE === undefined) {\n env.PM_SHARED_HOST_SAFE = \"1\";\n }\n if (env.PLAYWRIGHT_HTML_OPEN === undefined) {\n env.PLAYWRIGHT_HTML_OPEN = \"never\";\n }\n if (env.PW_TEST_HTML_REPORT_OPEN === undefined) {\n env.PW_TEST_HTML_REPORT_OPEN = \"never\";\n }\n}\n\nfunction resolveEffectiveLinkedTestDirectives(\n runtimeDirectives: LinkedTestRuntimeDirectives,\n linkedTest: LinkedTest,\n): LinkedTestRuntimeDirectives {\n const envSet = { ...runtimeDirectives.env_set, ...linkedTest.env_set };\n const envClear = [...new Set([...runtimeDirectives.env_clear, ...(linkedTest.env_clear ?? [])])];\n const sharedHostSafe = linkedTest.shared_host_safe ?? runtimeDirectives.shared_host_safe;\n return {\n env_set: envSet,\n env_clear: envClear,\n shared_host_safe: sharedHostSafe,\n };\n}\n\nfunction resolveRuntimeDirectives(\n envSetEntries: string[] | undefined,\n envClearEntries: string[] | undefined,\n sharedHostSafe: boolean | undefined,\n): LinkedTestRuntimeDirectives {\n return {\n env_set: mergeEnvSetDirectives(envSetEntries, \"--env-set\"),\n env_clear: mergeEnvClearDirectives(envClearEntries, \"--env-clear\"),\n shared_host_safe: sharedHostSafe === true,\n };\n}\n\n/* c8 ignore start -- sandbox copy race/path permutations are covered by filesystem integration suites */\nasync function copyIntoSandboxIfPresent(sourcePath: string, targetPath: string, recursive = false): Promise<void> {\n if (!(await pathExists(sourcePath))) {\n return;\n }\n await mkdir(path.dirname(targetPath), { recursive: true });\n try {\n if (recursive) {\n await cp(sourcePath, targetPath, { recursive: true, force: true });\n return;\n }\n await cp(sourcePath, targetPath, { force: true });\n } catch (error: unknown) {\n if (typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: string }).code === \"ENOENT\") {\n return;\n }\n throw error;\n }\n}\n/* c8 ignore stop */\n\nasync function seedLinkedTestSandbox(\n sandboxPmPath: string,\n sandboxGlobalPath: string,\n sourceRoots: LinkedTestSandboxSourceRoots,\n): Promise<void> {\n await copyIntoSandboxIfPresent(getSettingsPath(sourceRoots.projectPmRoot), getSettingsPath(sandboxPmPath));\n await copyIntoSandboxIfPresent(\n path.join(sourceRoots.projectPmRoot, \"extensions\"),\n path.join(sandboxPmPath, \"extensions\"),\n true,\n );\n await copyIntoSandboxIfPresent(getSettingsPath(sourceRoots.globalPmRoot), getSettingsPath(sandboxGlobalPath));\n await copyIntoSandboxIfPresent(\n path.join(sourceRoots.globalPmRoot, \"extensions\"),\n path.join(sandboxGlobalPath, \"extensions\"),\n true,\n );\n}\n\nasync function seedLinkedTestTrackerData(sourceRoot: string, sandboxRoot: string): Promise<void> {\n if (!(await pathExists(sourceRoot))) {\n return;\n }\n const entries = await readdir(sourceRoot, { withFileTypes: true });\n for (const entry of entries) {\n if (LINKED_TEST_TRACKER_DIRS_TO_SKIP.has(entry.name)) {\n continue;\n }\n const sourcePath = path.join(sourceRoot, entry.name);\n const targetPath = path.join(sandboxRoot, entry.name);\n if (entry.isDirectory()) {\n await copyIntoSandboxIfPresent(sourcePath, targetPath, true);\n continue;\n }\n if (entry.isFile()) {\n await copyIntoSandboxIfPresent(sourcePath, targetPath);\n }\n }\n}\n\nasync function countLinkedTestItemFiles(pmRoot: string): Promise<number> {\n if (!(await pathExists(pmRoot))) {\n return 0;\n }\n let total = 0;\n const entries = await readdir(pmRoot, { withFileTypes: true });\n for (const entry of entries) {\n if (!entry.isDirectory() || LINKED_TEST_ITEM_COUNT_DIRS_TO_SKIP.has(entry.name)) {\n continue;\n }\n const folderPath = path.join(pmRoot, entry.name);\n let files;\n try {\n files = await readdir(folderPath, { withFileTypes: true });\n } catch {\n continue;\n }\n for (const file of files) {\n if (!file.isFile()) {\n continue;\n }\n if (ITEM_FILE_EXTENSIONS.some((extension) => file.name.toLowerCase().endsWith(extension))) {\n total += 1;\n }\n }\n }\n return total;\n}\n\n/**\n * Implements resolve linked test failure exit code for the public runtime surface of this module.\n */\nexport function resolveLinkedTestFailureExitCode(\n execution: Pick<LinkedTestExecutionResult, \"exitCode\" | \"timedOut\" | \"maxBufferExceeded\">,\n): number {\n const rawExitCode = typeof execution.exitCode === \"number\" ? execution.exitCode : 1;\n if ((execution.timedOut || execution.maxBufferExceeded) && rawExitCode === 0) {\n return 1;\n }\n return rawExitCode;\n}\n\nfunction splitJsonPathSegments(fieldPath: string): Array<string | number> {\n const segments: Array<string | number> = [];\n const tokens = fieldPath.match(/[^.[\\]]+|\\[\\d+\\]/g) ?? [];\n for (const token of tokens) {\n if (token.startsWith(\"[\") && token.endsWith(\"]\")) {\n const parsedIndex = Number.parseInt(token.slice(1, -1), 10);\n if (!Number.isInteger(parsedIndex) || parsedIndex < 0) {\n return [];\n }\n segments.push(parsedIndex);\n continue;\n }\n segments.push(token);\n }\n return segments;\n}\n\nfunction readJsonPathValue(root: unknown, fieldPath: string): { found: boolean; value: unknown } {\n const normalizedPath = fieldPath.trim();\n if (normalizedPath.length === 0) {\n return { found: false, value: undefined };\n }\n const segments = splitJsonPathSegments(normalizedPath);\n if (segments.length === 0) {\n return { found: false, value: undefined };\n }\n let current: unknown = root;\n for (const segment of segments) {\n if (typeof segment === \"number\") {\n if (!Array.isArray(current) || segment >= current.length) {\n return { found: false, value: undefined };\n }\n current = current[segment];\n continue;\n }\n if (typeof current !== \"object\" || current === null || !(segment in current)) {\n return { found: false, value: undefined };\n }\n current = (current as Record<string, unknown>)[segment];\n }\n return { found: true, value: current };\n}\n\n/* c8 ignore start -- assertion-literal parsing edge cases are validated by assertion integration suites */\nfunction parseAssertionLiteral(raw: string): unknown {\n const trimmed = raw.trim();\n if (trimmed === \"true\") {\n return true;\n }\n if (trimmed === \"false\") {\n return false;\n }\n if (trimmed === \"null\") {\n return null;\n }\n const numeric = Number(trimmed);\n if (trimmed.length > 0 && Number.isFinite(numeric)) {\n return numeric;\n }\n if ((trimmed.startsWith(\"{\") && trimmed.endsWith(\"}\")) || (trimmed.startsWith(\"[\") && trimmed.endsWith(\"]\"))) {\n try {\n return JSON.parse(trimmed) as unknown;\n } catch {\n // Fall back to string comparison for malformed JSON literals.\n }\n }\n return trimmed;\n}\n/* c8 ignore stop */\n\nfunction compareAssertionValues(actual: unknown, expected: unknown): boolean {\n if (\n typeof actual === \"object\" &&\n actual !== null &&\n typeof expected === \"object\" &&\n expected !== null\n ) {\n return stableValueEquals(actual, expected);\n }\n return Object.is(actual, expected);\n}\n\n/* c8 ignore start -- assertion failure-path permutations are covered by linked-test integration fixtures */\nfunction evaluateLinkedTestAssertions(linkedTest: LinkedTest, stdout: string, stderr: string): string[] {\n const failures: string[] = [];\n failures.push(...evaluateContainsAssertions(\"stdout\", stdout, linkedTest.assert_stdout_contains));\n failures.push(...evaluateRegexAssertions(\"stdout\", stdout, linkedTest.assert_stdout_regex));\n failures.push(...evaluateContainsAssertions(\"stderr\", stderr, linkedTest.assert_stderr_contains));\n failures.push(...evaluateRegexAssertions(\"stderr\", stderr, linkedTest.assert_stderr_regex));\n failures.push(...evaluateStdoutLineCountAssertion(stdout, linkedTest.assert_stdout_min_lines));\n\n const jsonEqualsAssertions = linkedTest.assert_json_field_equals ?? {};\n const jsonGteAssertions = linkedTest.assert_json_field_gte ?? {};\n const needsJsonAssertions = Object.keys(jsonEqualsAssertions).length > 0 || Object.keys(jsonGteAssertions).length > 0;\n if (!needsJsonAssertions) {\n return failures;\n }\n\n let parsedJson: unknown;\n try {\n parsedJson = JSON.parse(stdout);\n } catch (error: unknown) {\n failures.push(\n `stdout is not valid JSON for assert_json_field_* checks: ${error instanceof Error ? error.message : String(error)}`,\n );\n return failures;\n }\n\n for (const [fieldPath, expectedRaw] of Object.entries(jsonEqualsAssertions)) {\n const resolved = readJsonPathValue(parsedJson, fieldPath);\n if (!resolved.found) {\n failures.push(`assert_json_field_equals missing path \"${fieldPath}\"`);\n continue;\n }\n const expected = parseAssertionLiteral(expectedRaw);\n if (!compareAssertionValues(resolved.value, expected)) {\n failures.push(\n `assert_json_field_equals mismatch at \"${fieldPath}\" (expected=${JSON.stringify(expected)} actual=${JSON.stringify(resolved.value)})`,\n );\n }\n }\n\n for (const [fieldPath, expectedMinimum] of Object.entries(jsonGteAssertions)) {\n const resolved = readJsonPathValue(parsedJson, fieldPath);\n if (!resolved.found) {\n failures.push(`assert_json_field_gte missing path \"${fieldPath}\"`);\n continue;\n }\n if (typeof resolved.value !== \"number\" || !Number.isFinite(resolved.value)) {\n failures.push(`assert_json_field_gte path \"${fieldPath}\" resolved to non-numeric value`);\n continue;\n }\n if (resolved.value < expectedMinimum) {\n failures.push(`assert_json_field_gte failed at \"${fieldPath}\" (expected >= ${expectedMinimum}, actual ${resolved.value})`);\n }\n }\n\n return failures;\n}\n/* c8 ignore stop */\n\nfunction evaluateContainsAssertions(streamName: \"stdout\" | \"stderr\", output: string, expectedValues: string[] | undefined): string[] {\n const failures: string[] = [];\n for (const expected of expectedValues ?? []) {\n if (!output.includes(expected)) {\n failures.push(`${streamName} missing required text: \"${expected}\"`);\n }\n }\n return failures;\n}\n\nfunction evaluateRegexAssertions(streamName: \"stdout\" | \"stderr\", output: string, patterns: string[] | undefined): string[] {\n const failures: string[] = [];\n for (const pattern of patterns ?? []) {\n try {\n const regex = new RegExp(pattern, \"m\");\n if (!regex.test(output)) {\n failures.push(`${streamName} failed regex assertion: /${pattern}/m`);\n }\n } catch (error: unknown) {\n failures.push(`${streamName} regex assertion is invalid: /${pattern}/ (${error instanceof Error ? error.message : String(error)})`);\n }\n }\n return failures;\n}\n\nfunction evaluateStdoutLineCountAssertion(stdout: string, minimum: number | undefined): string[] {\n if (typeof minimum !== \"number\") {\n return [];\n }\n const lineCount = stdout\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter((line) => line.length > 0).length;\n return lineCount < minimum ? [`stdout line count ${lineCount} is below required minimum ${minimum}`] : [];\n}\n\nconst EMPTY_LINKED_TEST_RUN_PATTERNS: Array<{ code: string; regex: RegExp }> = [\n { code: \"no_projects_matched_filters\", regex: /\\bNo projects matched the filters\\b/i },\n { code: \"no_test_files_found\", regex: /\\bNo test files found\\b/i },\n { code: \"no_tests_found\", regex: /\\bNo tests found\\b/i },\n { code: \"no_matching_tests\", regex: /\\bNo matching tests?\\b/i },\n { code: \"collected_zero_items\", regex: /\\bcollected 0 items?\\b/i },\n];\n\nfunction detectEmptyLinkedTestRun(stdout: string, stderr: string): string | null {\n const combined = `${stdout}\\n${stderr}`;\n for (const pattern of EMPTY_LINKED_TEST_RUN_PATTERNS) {\n if (pattern.regex.test(combined)) {\n return pattern.code;\n }\n }\n return null;\n}\n\n/* c8 ignore start -- linked-test orchestration branch matrix is covered by end-to-end command integration runs */\ninterface RunLinkedTestsOptions {\n progress?: boolean;\n sourceRoots?: LinkedTestSandboxSourceRoots;\n envSet?: string[];\n envClear?: string[];\n sharedHostSafe?: boolean;\n pmContext?: string;\n overrideLinkedPmContext?: boolean;\n failOnContextMismatch?: boolean;\n failOnEmptyTestRun?: boolean;\n requireAssertionsForPm?: boolean;\n checkContext?: boolean;\n autoPmContext?: boolean;\n}\n\ninterface LinkedTestSandboxLayout {\n root: string;\n schemaProjectPmPath: string;\n schemaGlobalPmPath: string;\n trackerProjectPmPath: string;\n trackerGlobalPmPath: string;\n}\n\ninterface LinkedTestSandboxCounts {\n sourceProjectItemCount: number;\n sourceGlobalItemCount: number;\n schemaProjectItemCount: number;\n schemaGlobalItemCount: number;\n trackerProjectItemCount: number;\n trackerGlobalItemCount: number;\n}\n\ninterface LinkedTestCommandContext {\n linkedOverridePmContextMode: LinkedTestPmContextMode | undefined;\n executionContext: NonNullable<TestRunResult[\"execution_context\"]>;\n}\n\nfunction createLinkedTestSandboxLayout(sandboxRoot: string): LinkedTestSandboxLayout {\n return {\n root: sandboxRoot,\n schemaProjectPmPath: path.join(sandboxRoot, \"schema\", \"project\", \".agents\", \"pm\"),\n schemaGlobalPmPath: path.join(sandboxRoot, \"schema\", \"global\"),\n trackerProjectPmPath: path.join(sandboxRoot, \"tracker\", \"project\", \".agents\", \"pm\"),\n trackerGlobalPmPath: path.join(sandboxRoot, \"tracker\", \"global\"),\n };\n}\n\nasync function initializeLinkedTestSandboxes(layout: LinkedTestSandboxLayout): Promise<void> {\n await runInit(undefined, { path: layout.schemaProjectPmPath });\n await runInit(undefined, { path: layout.schemaGlobalPmPath });\n await runInit(undefined, { path: layout.trackerProjectPmPath });\n await runInit(undefined, { path: layout.trackerGlobalPmPath });\n}\n\nasync function seedLinkedTestSandboxesFromSource(\n layout: LinkedTestSandboxLayout,\n sourceRoots: LinkedTestSandboxSourceRoots | undefined,\n): Promise<void> {\n if (!sourceRoots) {\n return;\n }\n await seedLinkedTestSandbox(layout.schemaProjectPmPath, layout.schemaGlobalPmPath, sourceRoots);\n await seedLinkedTestSandbox(layout.trackerProjectPmPath, layout.trackerGlobalPmPath, sourceRoots);\n await seedLinkedTestTrackerData(sourceRoots.projectPmRoot, layout.trackerProjectPmPath);\n await seedLinkedTestTrackerData(sourceRoots.globalPmRoot, layout.trackerGlobalPmPath);\n}\n\nasync function countLinkedTestSandboxItems(\n layout: LinkedTestSandboxLayout,\n sourceRoots: LinkedTestSandboxSourceRoots | undefined,\n): Promise<LinkedTestSandboxCounts> {\n return {\n sourceProjectItemCount: sourceRoots ? await countLinkedTestItemFiles(sourceRoots.projectPmRoot) : 0,\n sourceGlobalItemCount: sourceRoots ? await countLinkedTestItemFiles(sourceRoots.globalPmRoot) : 0,\n schemaProjectItemCount: await countLinkedTestItemFiles(layout.schemaProjectPmPath),\n schemaGlobalItemCount: await countLinkedTestItemFiles(layout.schemaGlobalPmPath),\n trackerProjectItemCount: await countLinkedTestItemFiles(layout.trackerProjectPmPath),\n trackerGlobalItemCount: await countLinkedTestItemFiles(layout.trackerGlobalPmPath),\n };\n}\n\nfunction buildLinkedTestExecutionContext(params: {\n layout: LinkedTestSandboxLayout;\n counts: LinkedTestSandboxCounts;\n sourceRoots: LinkedTestSandboxSourceRoots | undefined;\n isPmCommand: boolean;\n isPmTrackerReadCommand: boolean;\n requestedPmContextMode: LinkedTestPmContextMode;\n effectivePmContextMode: ResolvedLinkedTestPmContextMode;\n autoPmContextApplied: boolean;\n}): NonNullable<TestRunResult[\"execution_context\"]> {\n const trackerMode = params.effectivePmContextMode === \"tracker\";\n const selectedSandboxProjectPmPath = trackerMode ? params.layout.trackerProjectPmPath : params.layout.schemaProjectPmPath;\n const selectedSandboxGlobalPmPath = trackerMode ? params.layout.trackerGlobalPmPath : params.layout.schemaGlobalPmPath;\n const selectedSandboxProjectItemCount = trackerMode ? params.counts.trackerProjectItemCount : params.counts.schemaProjectItemCount;\n const selectedSandboxGlobalItemCount = trackerMode ? params.counts.trackerGlobalItemCount : params.counts.schemaGlobalItemCount;\n return {\n requested_pm_context_mode: params.requestedPmContextMode,\n pm_context_mode: params.effectivePmContextMode,\n auto_pm_context_applied: params.autoPmContextApplied,\n is_pm_command: params.isPmCommand,\n is_pm_tracker_read_command: params.isPmTrackerReadCommand,\n source_project_pm_path: params.sourceRoots?.projectPmRoot ?? \"\",\n sandbox_project_pm_path: selectedSandboxProjectPmPath,\n source_global_pm_path: params.sourceRoots?.globalPmRoot ?? \"\",\n sandbox_global_pm_path: selectedSandboxGlobalPmPath,\n source_project_item_count: params.counts.sourceProjectItemCount,\n sandbox_project_item_count: selectedSandboxProjectItemCount,\n source_global_item_count: params.counts.sourceGlobalItemCount,\n sandbox_global_item_count: selectedSandboxGlobalItemCount,\n mismatch_detected: params.isPmCommand && params.counts.sourceProjectItemCount !== selectedSandboxProjectItemCount,\n project_extensions_seeded: Boolean(params.sourceRoots),\n global_extensions_seeded: Boolean(params.sourceRoots),\n };\n}\n\nfunction resolveLinkedTestCommandContext(params: {\n linkedTest: LinkedTest;\n layout: LinkedTestSandboxLayout;\n counts: LinkedTestSandboxCounts;\n sourceRoots: LinkedTestSandboxSourceRoots | undefined;\n runLevelPmContextMode: LinkedTestPmContextMode;\n options: RunLinkedTestsOptions | undefined;\n}): LinkedTestCommandContext {\n const linkedOverridePmContextMode =\n typeof params.linkedTest.pm_context_mode === \"string\" && params.linkedTest.pm_context_mode.trim().length > 0\n ? parsePmContextMode(params.linkedTest.pm_context_mode)\n : undefined;\n const command = typeof params.linkedTest.command === \"string\" && params.linkedTest.command.length > 0\n ? params.linkedTest.command\n : undefined;\n const isPmCommand = command ? commandInvokesPmCli(command) : false;\n const isPmTrackerReadCommand = isPmCommand && command ? commandInvokesPmTrackerReadCommand(command) : false;\n const autoPmContextApplied = params.options?.autoPmContext === true && isPmTrackerReadCommand;\n const requestedPmContextMode = autoPmContextApplied\n ? \"auto\"\n : resolveLinkedTestRequestedContextMode(\n params.linkedTest,\n params.runLevelPmContextMode,\n params.options?.overrideLinkedPmContext === true,\n );\n const effectivePmContextMode = resolveLinkedTestEffectiveContextMode(requestedPmContextMode, isPmTrackerReadCommand);\n return {\n linkedOverridePmContextMode,\n executionContext: buildLinkedTestExecutionContext({\n layout: params.layout,\n counts: params.counts,\n sourceRoots: params.sourceRoots,\n isPmCommand,\n isPmTrackerReadCommand,\n requestedPmContextMode,\n effectivePmContextMode,\n autoPmContextApplied,\n }),\n };\n}\n\nfunction buildLinkedTestSkippedResult(\n linkedTest: LinkedTest,\n executionContext: NonNullable<TestRunResult[\"execution_context\"]>,\n error: string,\n): TestRunResult {\n return {\n command: linkedTest.command,\n path: linkedTest.path,\n status: \"skipped\",\n execution_context: executionContext,\n error,\n };\n}\n\nfunction buildLinkedTestAssertionFailureResult(\n linkedTest: LinkedTest,\n executionContext: NonNullable<TestRunResult[\"execution_context\"]>,\n error: string,\n output?: Pick<LinkedTestExecutionResult, \"stdout\" | \"stderr\">,\n): TestRunResult {\n return {\n command: linkedTest.command,\n path: linkedTest.path,\n status: \"failed\",\n exit_code: 1,\n failure_category: \"assertion_failure\",\n execution_context: executionContext,\n ...(output ? { stdout: output.stdout, stderr: output.stderr } : {}),\n error,\n };\n}\n\nfunction resolveLinkedTestPreflightResult(params: {\n linkedTest: LinkedTest;\n executionContext: NonNullable<TestRunResult[\"execution_context\"]>;\n runLevelPmContextMode: LinkedTestPmContextMode;\n linkedOverridePmContextMode: LinkedTestPmContextMode | undefined;\n options: RunLinkedTestsOptions | undefined;\n}): TestRunResult | null {\n if (!params.linkedTest.command) {\n return buildLinkedTestSkippedResult(params.linkedTest, params.executionContext, \"No command configured for this linked test.\");\n }\n const runtimeSafetySkipReason = getRuntimeSafetySkipReason(params.linkedTest.command);\n if (runtimeSafetySkipReason) {\n return buildLinkedTestSkippedResult(params.linkedTest, params.executionContext, runtimeSafetySkipReason);\n }\n const failOnMismatchByDefault =\n params.executionContext.pm_context_mode === \"schema\" &&\n params.executionContext.is_pm_tracker_read_command &&\n params.executionContext.mismatch_detected;\n const failOnMismatchByFlag =\n params.options?.failOnContextMismatch === true &&\n params.executionContext.is_pm_command &&\n params.executionContext.mismatch_detected;\n if (failOnMismatchByDefault || failOnMismatchByFlag) {\n const mismatchHint = buildPmContextMismatchHint({\n executionContext: params.executionContext,\n runLevelPmContextMode: params.runLevelPmContextMode,\n linkedOverridePmContextMode: params.linkedOverridePmContextMode,\n });\n const mismatchPrefix =\n params.options?.checkContext === true\n ? \"Linked test preflight PM context mismatch detected\"\n : \"Linked test PM context mismatch detected\";\n return buildLinkedTestAssertionFailureResult(\n params.linkedTest,\n params.executionContext,\n `${mismatchPrefix} (source_project_items=${params.executionContext.source_project_item_count}, ` +\n `sandbox_project_items=${params.executionContext.sandbox_project_item_count}).${mismatchHint}`,\n );\n }\n if (\n params.options?.requireAssertionsForPm === true &&\n params.executionContext.is_pm_command &&\n !hasLinkedTestAssertions(params.linkedTest)\n ) {\n return buildLinkedTestAssertionFailureResult(\n params.linkedTest,\n params.executionContext,\n \"Linked PM command requires assertions when --require-assertions-for-pm is enabled.\",\n );\n }\n return null;\n}\n\nfunction buildLinkedTestExecutionEnv(params: {\n runtimeDirectives: LinkedTestRuntimeDirectives;\n linkedTest: LinkedTest;\n executionContext: NonNullable<TestRunResult[\"execution_context\"]>;\n}): NodeJS.ProcessEnv {\n const effectiveDirectives = resolveEffectiveLinkedTestDirectives(params.runtimeDirectives, params.linkedTest);\n const executionEnv: NodeJS.ProcessEnv = { ...process.env };\n applyEnvDirectiveStage(executionEnv, params.runtimeDirectives);\n applyEnvDirectiveStage(executionEnv, {\n env_set: params.linkedTest.env_set ?? {},\n env_clear: params.linkedTest.env_clear ?? [],\n });\n if (effectiveDirectives.shared_host_safe) {\n applySharedHostSafeDefaults(executionEnv);\n }\n executionEnv.FORCE_COLOR = \"0\";\n executionEnv.PM_PATH = params.executionContext.sandbox_project_pm_path;\n executionEnv.PM_GLOBAL_PATH = params.executionContext.sandbox_global_pm_path;\n return executionEnv;\n}\n\nfunction buildLinkedTestPassedResult(\n linkedTest: LinkedTest,\n executionContext: NonNullable<TestRunResult[\"execution_context\"]>,\n execution: LinkedTestExecutionResult,\n): TestRunResult {\n return {\n command: linkedTest.command,\n path: linkedTest.path,\n status: \"passed\",\n exit_code: 0,\n execution_context: executionContext,\n stdout: execution.stdout,\n stderr: execution.stderr,\n };\n}\n\nfunction buildLinkedTestEmptyRunResult(params: {\n linkedTest: LinkedTest;\n executionContext: NonNullable<TestRunResult[\"execution_context\"]>;\n execution: LinkedTestExecutionResult;\n emptyRunSignal: string;\n}): TestRunResult {\n return {\n command: params.linkedTest.command,\n path: params.linkedTest.path,\n status: \"failed\",\n exit_code: 1,\n failure_category: \"empty_run\",\n execution_context: params.executionContext,\n stdout: params.execution.stdout,\n stderr: params.execution.stderr,\n error:\n `Linked test reported an empty test run (${params.emptyRunSignal}) while --fail-on-empty-test-run is enabled. ` +\n \"Update test selection or disable --fail-on-empty-test-run for this run.\",\n };\n}\n\nfunction buildLinkedTestCommandFailureResult(params: {\n linkedTest: LinkedTest;\n executionContext: NonNullable<TestRunResult[\"execution_context\"]>;\n execution: LinkedTestExecutionResult;\n timeoutMs: number;\n}): TestRunResult {\n return {\n command: params.linkedTest.command,\n path: params.linkedTest.path,\n status: \"failed\",\n exit_code: resolveLinkedTestFailureExitCode(params.execution),\n failure_category: classifyLinkedTestFailure(params.execution),\n execution_context: params.executionContext,\n stdout: params.execution.stdout,\n stderr: params.execution.stderr,\n error: formatLinkedTestExecutionError(params.execution, params.timeoutMs),\n };\n}\n\nfunction buildLinkedTestPassedExecutionResult(params: {\n linkedTest: LinkedTest;\n executionContext: NonNullable<TestRunResult[\"execution_context\"]>;\n execution: LinkedTestExecutionResult;\n options: RunLinkedTestsOptions | undefined;\n}): TestRunResult {\n if (params.options?.failOnEmptyTestRun === true) {\n const emptyRunSignal = detectEmptyLinkedTestRun(params.execution.stdout, params.execution.stderr);\n if (emptyRunSignal) {\n return buildLinkedTestEmptyRunResult({ ...params, emptyRunSignal });\n }\n }\n const assertionFailures = evaluateLinkedTestAssertions(params.linkedTest, params.execution.stdout, params.execution.stderr);\n if (assertionFailures.length > 0) {\n return buildLinkedTestAssertionFailureResult(\n params.linkedTest,\n params.executionContext,\n `Linked test assertion(s) failed: ${assertionFailures.join(\"; \")}`,\n params.execution,\n );\n }\n return buildLinkedTestPassedResult(params.linkedTest, params.executionContext, params.execution);\n}\n\nasync function runSingleLinkedTest(params: {\n linkedTest: LinkedTest;\n index: number;\n total: number;\n defaultTimeoutSeconds: number | undefined;\n runtimeDirectives: LinkedTestRuntimeDirectives;\n progressMode: LinkedTestProgressMode;\n executionContext: NonNullable<TestRunResult[\"execution_context\"]>;\n options: RunLinkedTestsOptions | undefined;\n}): Promise<TestRunResult> {\n const command = params.linkedTest.command ?? \"\";\n const timeoutMs = (params.linkedTest.timeout_seconds ?? params.defaultTimeoutSeconds ?? 120) * 1000;\n const execution = await runLinkedTestCommand(\n command,\n timeoutMs,\n buildLinkedTestExecutionEnv(params),\n {\n index: params.index + 1,\n total: params.total,\n timeoutMs,\n command,\n },\n params.progressMode,\n );\n const passed = execution.exitCode === 0 && !execution.timedOut && !execution.maxBufferExceeded;\n return passed\n ? buildLinkedTestPassedExecutionResult({ ...params, execution })\n : buildLinkedTestCommandFailureResult({ ...params, execution, timeoutMs });\n}\n\n/**\n * Implements run linked tests for the public runtime surface of this module.\n */\nexport async function runLinkedTests(\n tests: LinkedTest[],\n defaultTimeoutSeconds: number | undefined,\n options?: RunLinkedTestsOptions,\n): Promise<TestRunResult[]> {\n const results: TestRunResult[] = [];\n const sandboxRoot = await mkdtemp(path.join(tmpdir(), \"pm-linked-test-\"));\n const layout = createLinkedTestSandboxLayout(sandboxRoot);\n const runLevelPmContextMode = parsePmContextMode(options?.pmContext);\n const progressMode: LinkedTestProgressMode = options?.progress === true ? \"always\" : \"auto\";\n const runtimeDirectives = resolveRuntimeDirectives(options?.envSet, options?.envClear, options?.sharedHostSafe);\n const sourceRoots = options?.sourceRoots;\n\n try {\n await initializeLinkedTestSandboxes(layout);\n await seedLinkedTestSandboxesFromSource(layout, sourceRoots);\n const counts = await countLinkedTestSandboxItems(layout, sourceRoots);\n\n for (let index = 0; index < tests.length; index += 1) {\n const linkedTest = tests[index];\n const commandContext = resolveLinkedTestCommandContext({\n linkedTest,\n layout,\n counts,\n sourceRoots,\n runLevelPmContextMode,\n options,\n });\n const preflightResult = resolveLinkedTestPreflightResult({\n linkedTest,\n executionContext: commandContext.executionContext,\n runLevelPmContextMode,\n linkedOverridePmContextMode: commandContext.linkedOverridePmContextMode,\n options,\n });\n if (preflightResult) {\n results.push(preflightResult);\n continue;\n }\n results.push(\n await runSingleLinkedTest({\n linkedTest,\n index,\n total: tests.length,\n defaultTimeoutSeconds,\n runtimeDirectives,\n progressMode,\n executionContext: commandContext.executionContext,\n options,\n }),\n );\n }\n } finally {\n await rm(layout.root, { recursive: true, force: true, maxRetries: 3, retryDelay: 100 });\n }\n return results;\n}\n\ninterface ResolvedTestItem {\n itemId: string;\n tests: LinkedTest[];\n changed: boolean;\n}\n\ninterface ResolvedTestRunOptions {\n defaultTimeoutSeconds: number | undefined;\n pmContextMode: LinkedTestPmContextMode;\n runSelection: LinkedTestRunSelection | undefined;\n testsToRun: LinkedTest[];\n}\n\nfunction hasTestRuntimeDirectiveFlags(options: TestCommandOptions): boolean {\n return (\n (options.envSet?.length ?? 0) > 0 ||\n (options.envClear?.length ?? 0) > 0 ||\n options.sharedHostSafe === true ||\n options.pmContext !== undefined ||\n options.overrideLinkedPmContext === true ||\n options.failOnContextMismatch === true ||\n options.failOnSkipped === true ||\n options.failOnEmptyTestRun === true ||\n options.requireAssertionsForPm === true ||\n options.checkContext === true ||\n options.autoPmContext === true\n );\n}\n\nfunction assertTestRunFlagUsage(options: TestCommandOptions): void {\n if (hasTestRuntimeDirectiveFlags(options) && options.run !== true) {\n throw new PmCliError(\n \"--env-set, --env-clear, --shared-host-safe, --pm-context, --override-linked-pm-context, --fail-on-context-mismatch, --fail-on-skipped, --fail-on-empty-test-run, --require-assertions-for-pm, --check-context, and --auto-pm-context require --run\",\n EXIT_CODE.USAGE,\n );\n }\n const hasSelectorFlags = options.match !== undefined || options.onlyIndex !== undefined || options.onlyLast === true;\n if (hasSelectorFlags && options.run !== true) {\n throw new PmCliError(\"--match, --only-index, and --only-last require --run\", EXIT_CODE.USAGE);\n }\n}\n\nasync function resolveLinkedTestItem(params: {\n id: string;\n options: TestCommandOptions;\n pmRoot: string;\n settings: Awaited<ReturnType<typeof readSettings>>;\n typeToFolder: Record<string, string>;\n adds: LinkedTest[];\n removes: string[];\n}): Promise<ResolvedTestItem> {\n const { id, options, pmRoot, settings, typeToFolder, adds, removes } = params;\n if (adds.length === 0 && removes.length === 0) {\n const located = await locateItem(pmRoot, id, settings.id_prefix, settings.item_format, typeToFolder);\n if (!located) {\n throw new PmCliError(`Item ${id} not found`, EXIT_CODE.NOT_FOUND);\n }\n const loaded = await readLocatedItem(located, { schema: settings.schema });\n return { itemId: located.id, tests: loaded.document.metadata.tests ?? [], changed: false };\n }\n const result = await mutateItem({\n pmRoot,\n settings,\n id,\n op: \"tests_add\",\n author: resolveAuthor(options.author, settings.author_default),\n message: options.message,\n force: options.force,\n skipNoop: true,\n mutate(document) {\n const previous = document.metadata.tests ?? [];\n const next = [...previous];\n for (const add of adds) {\n const exists = next.some(\n (entry) =>\n entry.command === add.command &&\n entry.path === add.path &&\n entry.scope === add.scope &&\n entry.pm_context_mode === add.pm_context_mode,\n );\n if (!exists) {\n next.push(add);\n }\n }\n if (removes.length > 0) {\n for (let i = next.length - 1; i >= 0; i -= 1) {\n const entry = next[i];\n if (removes.includes(entry.path ?? \"\") || removes.includes(entry.command ?? \"\")) {\n next.splice(i, 1);\n }\n }\n }\n document.metadata.tests = next;\n return { changedFields: stableValueEquals(previous, next) ? [] : [\"tests\"] };\n },\n });\n return {\n itemId: result.item.id,\n tests: result.item.tests ?? [],\n changed: result.changedFields.length > 0,\n };\n}\n\nfunction resolveTestRunOptions(options: TestCommandOptions, tests: LinkedTest[]): ResolvedTestRunOptions {\n assertTestRunFlagUsage(options);\n const selectorInput = {\n match: options.match,\n onlyIndex: options.onlyIndex === undefined ? undefined : parseOnlyIndexValue(options.onlyIndex),\n onlyLast: options.onlyLast,\n };\n const runSelection = options.run === true ? resolveLinkedTestRunSelection(tests, selectorInput) : undefined;\n return {\n defaultTimeoutSeconds: options.timeout === undefined ? undefined : parseOptionalNumber(options.timeout, \"timeout\"),\n pmContextMode: parsePmContextMode(options.pmContext),\n runSelection,\n testsToRun: runSelection?.selected ?? tests,\n };\n}\n\nasync function executeSelectedLinkedTests(params: {\n options: TestCommandOptions;\n runOptions: ResolvedTestRunOptions;\n pmRoot: string;\n}): Promise<TestRunResult[]> {\n const { options, runOptions, pmRoot } = params;\n if (options.run !== true) {\n return [];\n }\n return await runLinkedTests(runOptions.testsToRun, runOptions.defaultTimeoutSeconds, {\n progress: options.progress,\n envSet: options.envSet,\n envClear: options.envClear,\n sharedHostSafe: options.sharedHostSafe,\n pmContext: runOptions.pmContextMode,\n overrideLinkedPmContext: options.overrideLinkedPmContext,\n failOnContextMismatch: options.failOnContextMismatch,\n failOnEmptyTestRun: options.failOnEmptyTestRun,\n requireAssertionsForPm: options.requireAssertionsForPm,\n checkContext: options.checkContext,\n autoPmContext: options.autoPmContext,\n sourceRoots: {\n projectPmRoot: pmRoot,\n globalPmRoot: resolveGlobalPmRoot(process.cwd()),\n },\n });\n}\n\nfunction buildTestWarnings(\n options: TestCommandOptions,\n runSelection: LinkedTestRunSelection | undefined,\n runResults: TestRunResult[],\n): string[] {\n const warnings: string[] = [];\n if (runSelection && runSelection.selector !== null) {\n warnings.push(\n `linked_test_selection:${runSelection.selector}=${runSelection.requested};selected=${runSelection.selected_count};skipped=${runSelection.skipped_count};indexes=${runSelection.selected_indexes.join(\",\")}`,\n );\n }\n if (options.run === true && options.checkContext === true) {\n const preflight = summarizeContextPreflight(runResults);\n warnings.push(\n `context_preflight:checked_pm_commands=${preflight.checked_pm_commands};` +\n `tracker_read_commands=${preflight.tracker_read_commands};` +\n `mismatches=${preflight.mismatches};` +\n `auto_remediated=${preflight.auto_remediated}`,\n );\n }\n return warnings;\n}\n\nasync function recordTestRunSummary(params: {\n options: TestCommandOptions;\n pmRoot: string;\n settings: Awaited<ReturnType<typeof readSettings>>;\n itemId: string;\n runStartedAt: string | undefined;\n runResults: TestRunResult[];\n failOnSkippedTriggered: boolean;\n warnings: string[];\n}): Promise<void> {\n const { options, pmRoot, settings, itemId, runStartedAt, runResults, failOnSkippedTriggered, warnings } = params;\n if (options.run !== true || !runStartedAt || settings.testing.record_results_to_items !== true) {\n return;\n }\n const summary = summarizeRunResultStatuses(runResults);\n const trackedRunId = resolveTrackedRunId(\"test\");\n const attemptRaw = process.env.PM_BACKGROUND_TEST_RUN_ATTEMPT?.trim();\n const parsedAttempt = attemptRaw ? Number.parseInt(attemptRaw, 10) : Number.NaN;\n const resumedFrom = process.env.PM_BACKGROUND_TEST_RUN_RESUMED_FROM?.trim();\n try {\n await appendTrackedTestRunSummary({\n pmRoot,\n settings,\n itemId,\n author: resolveAuthor(options.author, settings.author_default),\n message: `Track test run summary (${trackedRunId})`,\n entry: {\n run_id: trackedRunId,\n kind: \"test\",\n status: summary.failed > 0 || failOnSkippedTriggered === true ? \"failed\" : \"passed\",\n started_at: runStartedAt,\n finished_at: nowIso(),\n recorded_at: nowIso(),\n attempt: Number.isFinite(parsedAttempt) && parsedAttempt >= 1 ? parsedAttempt : undefined,\n resumed_from: resumedFrom && resumedFrom.length > 0 ? resumedFrom : undefined,\n passed: summary.passed,\n failed: summary.failed,\n skipped: summary.skipped,\n fail_on_skipped_triggered: failOnSkippedTriggered ? true : undefined,\n },\n });\n } catch (error: unknown) {\n warnings.push(`test_result_tracking_failed:${itemId}:${error instanceof Error ? error.message : String(error)}`);\n }\n}\n\n/**\n * Implements run test for the public runtime surface of this module.\n */\nexport async function runTest(id: string, options: TestCommandOptions, global: GlobalOptions): Promise<TestResult> {\n const stdinResolver = createStdinTokenResolver();\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\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 const settings = await readSettings(pmRoot);\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const resolvedAdds = await stdinResolver.resolveList(options.add, \"--add\");\n const resolvedAddJsons = await stdinResolver.resolveList(options.addJson, \"--add-json\");\n const resolvedRemoves = await stdinResolver.resolveList(options.remove, \"--remove\");\n const adds = [...parseAddEntries(resolvedAdds), ...parseAddJsonEntries(resolvedAddJsons)];\n const removes = parseRemoveEntries(resolvedRemoves);\n const item = await resolveLinkedTestItem({\n id,\n options,\n pmRoot,\n settings,\n typeToFolder: typeRegistry.type_to_folder,\n adds,\n removes,\n });\n const runOptions = resolveTestRunOptions(options, item.tests);\n const runStartedAt = options.run === true ? nowIso() : undefined;\n const runResults = await executeSelectedLinkedTests({ options, runOptions, pmRoot });\n const failureCategories = countFailureCategories(runResults);\n const failOnSkippedTriggered =\n options.run === true && options.failOnSkipped === true && runResults.some((entry) => entry.status === \"skipped\");\n const warnings = buildTestWarnings(options, runOptions.runSelection, runResults);\n await recordTestRunSummary({ options, pmRoot, settings, itemId: item.itemId, runStartedAt, runResults, failOnSkippedTriggered, warnings });\n\n return {\n ok: runResults.every((entry) => entry.status !== \"failed\") && failOnSkippedTriggered !== true,\n id: item.itemId,\n tests: item.tests,\n run_results: runResults,\n failure_categories: failureCategories,\n selection: runOptions.runSelection\n ? {\n selector: runOptions.runSelection.selector,\n requested: runOptions.runSelection.requested,\n selected_indexes: runOptions.runSelection.selected_indexes,\n selected_count: runOptions.runSelection.selected_count,\n skipped_count: runOptions.runSelection.skipped_count,\n }\n : undefined,\n fail_on_skipped_triggered: failOnSkippedTriggered ? true : undefined,\n warnings: warnings.length > 0 ? warnings : undefined,\n changed: item.changed,\n count: item.tests.length,\n };\n}\n/* c8 ignore stop */\n\nexport const _testOnlyTestCommand = {\n buildPmContextMismatchHint,\n commandInvokesPmCli,\n commandInvokesPmTrackerReadCommand,\n copyIntoSandboxIfPresent,\n countLinkedTestItemFiles,\n ensureScope,\n evaluateLinkedTestAssertions,\n extractPmInvocationArgsFromSegment,\n firstDirectTestRunnerSubcommand,\n hasLinkedTestAssertions,\n parseAddJsonEntries,\n parsePmContextMode,\n readJsonPathValue,\n resolveAuthor,\n resolveDirectRunnerSubcommand,\n resolveLinkedTestEffectiveContextMode,\n resolveLinkedTestFailureExitCode,\n resolveLinkedTestRequestedContextMode,\n resolveTrackedRunId,\n runLinkedTestCommand,\n seedLinkedTestSandbox,\n seedLinkedTestTrackerData,\n splitJsonPathSegments,\n summarizeRunResultStatuses,\n};\n", "/**\n * @module core/test/item-test-run-tracking\n *\n * Runs and records linked-test orchestration for Item Test Run Tracking.\n */\nimport { mutateItem } from \"../store/item-store.js\";\nimport { compareTimestampStrings } from \"../shared/time.js\";\nimport type { ItemTestRunSummary, PmSettings } from \"../../types/index.js\";\n\nconst DEFAULT_TRACKED_TEST_RUN_HISTORY_LIMIT = 20;\n\nfunction trackedTestRunHistoryLimit(): number {\n const raw = process.env.PM_TRACKED_TEST_RUN_HISTORY_LIMIT;\n if (!raw || raw.trim().length === 0) {\n return DEFAULT_TRACKED_TEST_RUN_HISTORY_LIMIT;\n }\n const parsed = Number.parseInt(raw, 10);\n if (!Number.isFinite(parsed) || parsed <= 0) {\n return DEFAULT_TRACKED_TEST_RUN_HISTORY_LIMIT;\n }\n return parsed;\n}\n\nfunction normalizeTrackedTestRunSummaries(entries: ItemTestRunSummary[]): ItemTestRunSummary[] {\n return [...entries]\n .filter((entry) =>\n entry.run_id.trim().length > 0 &&\n entry.started_at.trim().length > 0 &&\n entry.finished_at.trim().length > 0 &&\n entry.recorded_at.trim().length > 0\n )\n .sort((left, right) => {\n const byRecorded = compareTimestampStrings(left.recorded_at, right.recorded_at);\n if (byRecorded !== 0) return byRecorded;\n const byRunId = left.run_id.localeCompare(right.run_id);\n if (byRunId !== 0) return byRunId;\n return left.kind.localeCompare(right.kind);\n });\n}\n\n/**\n * Implements append tracked test run summary for the public runtime surface of this module.\n */\nexport async function appendTrackedTestRunSummary(options: {\n pmRoot: string;\n settings: PmSettings;\n itemId: string;\n author: string;\n entry: ItemTestRunSummary;\n message?: string;\n}): Promise<void> {\n const historyLimit = trackedTestRunHistoryLimit();\n await mutateItem({\n pmRoot: options.pmRoot,\n settings: options.settings,\n id: options.itemId,\n op: \"test_run_track\",\n author: options.author,\n message: options.message,\n force: false,\n mutate(document) {\n const current = document.metadata.test_runs ?? [];\n const next = normalizeTrackedTestRunSummaries([...current, options.entry]);\n const bounded = next.length > historyLimit ? next.slice(next.length - historyLimit) : next;\n document.metadata.test_runs = bounded;\n return { changedFields: [\"test_runs\"] };\n },\n });\n}\n", "/**\n * @module core/test/run-selectors\n *\n * Runs and records linked-test orchestration for Run Selectors.\n */\nimport { EXIT_CODE } from \"../shared/constants.js\";\nimport { PmCliError } from \"../shared/errors.js\";\nimport type { LinkedTest } from \"../../types.js\";\n\n/**\n * Pure selection logic for `pm test --run` selectors (pm-p86h / GitHub #194).\n *\n * Selectors pick WHICH linked tests execute without mutating item metadata:\n * - `--match <substring>`: case-insensitive substring on command/path.\n * - `--only-index <n>`: 1-based index into the `--list` order.\n * - `--only-last`: most recently added entry (last in `--list` order).\n */\n\nexport type LinkedTestSelectorKind = \"match\" | \"only-index\" | \"only-last\";\n\n/**\n * Documents the linked test run selector payload exchanged by command, SDK, and package integrations.\n */\nexport interface LinkedTestRunSelector {\n match?: string;\n onlyIndex?: number;\n onlyLast?: boolean;\n}\n\n/**\n * Documents the linked test run selection payload exchanged by command, SDK, and package integrations.\n */\nexport interface LinkedTestRunSelection {\n selector: LinkedTestSelectorKind | null;\n requested: string | null;\n selected: LinkedTest[];\n /** 1-based positions of selected entries in the original `--list` order. */\n selected_indexes: number[];\n selected_count: number;\n skipped_count: number;\n}\n\nconst MAX_SELECTOR_ENTRY_LABEL_LENGTH = 100;\n\n/**\n * Implements parse only index value for the public runtime surface of this module.\n */\nexport function parseOnlyIndexValue(raw: string | number, optionName = \"--only-index\"): number {\n const value = typeof raw === \"number\" ? raw : Number(String(raw).trim());\n if (!Number.isInteger(value) || value < 1) {\n throw new PmCliError(\n `${optionName} requires a 1-based integer index into the linked-test list (got \"${raw}\"). Use pm test <id> --list to inspect positions.`,\n EXIT_CODE.USAGE,\n );\n }\n return value;\n}\n\nfunction summarizeSelectorEntry(entry: LinkedTest): string {\n const label = entry.command ?? entry.path ?? \"<no command>\";\n const normalized = label.replaceAll(/\\s+/g, \" \").trim() || \"<no command>\";\n if (normalized.length <= MAX_SELECTOR_ENTRY_LABEL_LENGTH) {\n return normalized;\n }\n return `${normalized.slice(0, MAX_SELECTOR_ENTRY_LABEL_LENGTH - 3)}...`;\n}\n\n/**\n * Implements describe linked test entries for the public runtime surface of this module.\n */\nexport function describeLinkedTestEntries(tests: LinkedTest[]): string {\n return tests.map((entry, index) => `${index + 1}. ${summarizeSelectorEntry(entry)}`).join(\"; \");\n}\n\nfunction activeSelectorKinds(selector: LinkedTestRunSelector): LinkedTestSelectorKind[] {\n const kinds: LinkedTestSelectorKind[] = [];\n if (selector.match !== undefined) {\n kinds.push(\"match\");\n }\n if (selector.onlyIndex !== undefined) {\n kinds.push(\"only-index\");\n }\n if (selector.onlyLast === true) {\n kinds.push(\"only-last\");\n }\n return kinds;\n}\n\nfunction entryMatchesSubstring(entry: LinkedTest, needle: string): boolean {\n const command = entry.command?.toLowerCase() ?? \"\";\n const entryPath = entry.path?.toLowerCase() ?? \"\";\n return command.includes(needle) || entryPath.includes(needle);\n}\n\n/**\n * Implements resolve linked test run selection for the public runtime surface of this module.\n */\nexport function resolveLinkedTestRunSelection(tests: LinkedTest[], selector: LinkedTestRunSelector): LinkedTestRunSelection {\n const kinds = activeSelectorKinds(selector);\n if (kinds.length === 0) {\n return {\n selector: null,\n requested: null,\n selected: tests,\n selected_indexes: tests.map((_, index) => index + 1),\n selected_count: tests.length,\n skipped_count: 0,\n };\n }\n if (kinds.length > 1) {\n throw new PmCliError(\n `Combine at most one linked-test selector per run: ${kinds.map((kind) => `--${kind}`).join(\" and \")} were provided. Pick one of --match, --only-index, --only-last.`,\n EXIT_CODE.USAGE,\n );\n }\n const kind = kinds[0];\n if (tests.length === 0) {\n throw new PmCliError(\n `--${kind} matched no linked tests because this item has none. Add one first with --add, --command, or --add-json.`,\n EXIT_CODE.USAGE,\n );\n }\n if (kind === \"match\") {\n // kind is \"match\" only when selector.match is defined (see activeSelectorKinds).\n const needle = (selector.match as string).trim().toLowerCase();\n if (needle.length === 0) {\n throw new PmCliError(\"--match requires a non-empty substring to match against linked-test command/path values\", EXIT_CODE.USAGE);\n }\n const selectedIndexes: number[] = [];\n const selected: LinkedTest[] = [];\n for (let index = 0; index < tests.length; index += 1) {\n if (entryMatchesSubstring(tests[index], needle)) {\n selected.push(tests[index]);\n selectedIndexes.push(index + 1);\n }\n }\n if (selected.length === 0) {\n throw new PmCliError(\n `--match \"${selector.match}\" matched none of the ${tests.length} linked test(s). Available entries: ${describeLinkedTestEntries(tests)}`,\n EXIT_CODE.USAGE,\n );\n }\n return {\n selector: \"match\",\n requested: selector.match as string,\n selected,\n selected_indexes: selectedIndexes,\n selected_count: selected.length,\n skipped_count: tests.length - selected.length,\n };\n }\n if (kind === \"only-index\") {\n const index = parseOnlyIndexValue(selector.onlyIndex as number);\n if (index > tests.length) {\n throw new PmCliError(\n `--only-index ${index} is out of range: this item has ${tests.length} linked test(s). Available entries: ${describeLinkedTestEntries(tests)}`,\n EXIT_CODE.USAGE,\n );\n }\n return {\n selector: \"only-index\",\n requested: String(index),\n selected: [tests[index - 1]],\n selected_indexes: [index],\n selected_count: 1,\n skipped_count: tests.length - 1,\n };\n }\n return {\n selector: \"only-last\",\n requested: \"last\",\n selected: [tests[tests.length - 1]],\n selected_indexes: [tests.length],\n selected_count: 1,\n skipped_count: tests.length - 1,\n };\n}\n", "/**\n * @module cli/commands/test/linked-command-detection\n *\n * Parses linked-test command invocations for sandbox and context-safety checks.\n */\n// Pure, leaf-level helpers for detecting how linked-test shell commands invoke\n// the pm CLI (directly, via npx/pnpm/npm exec, or a launcher subcommand) and for\n// pulling structured context (subcommand, referenced item ids, runner) out of a\n// normalized command string. Extracted from test.ts to keep that command file\n// under the per-file LOC budget; consumers re-export these from test.ts so no\n// caller outside test.ts changes.\n\nexport const PM_GLOBAL_FLAGS_WITH_VALUE = new Set([\"--path\"]);\nexport const NPX_FLAGS_WITH_VALUE = new Set([\"-p\", \"--package\", \"-c\", \"--call\"]);\nexport const PNPM_GLOBAL_FLAGS_WITH_VALUE = new Set([\n \"-c\",\n \"-C\",\n \"--config\",\n \"--dir\",\n \"--filter\",\n \"--workspace-dir\",\n]);\nexport const NPM_GLOBAL_FLAGS_WITH_VALUE = new Set([\"-C\", \"--prefix\", \"--userconfig\", \"--cache\"]);\nexport const YARN_GLOBAL_FLAGS_WITH_VALUE = new Set([\"--cwd\"]);\nexport const BUN_GLOBAL_FLAGS_WITH_VALUE = new Set([\"--cwd\"]);\nexport const NPM_EXEC_SUBCOMMANDS = new Set([\"exec\", \"x\"]);\nexport const SCRIPT_RUN_SUBCOMMANDS = new Set([\"run\", \"run-script\"]);\nexport const SCRIPT_RUN_FLAGS_WITH_VALUE = new Set([\"-C\", \"--dir\", \"--cwd\", \"-w\", \"--workspace\", \"--filter\"]);\n\n/**\n * Implements split normalized command segments for the public runtime surface of this module.\n */\nexport function splitNormalizedCommandSegments(normalizedCommand: string): string[] {\n return normalizedCommand\n .split(/&&|\\|\\||\\||;/)\n .map((segment) => segment.trim())\n .filter((segment) => segment.length > 0);\n}\n\n/**\n * Implements strip leading env assignments for the public runtime surface of this module.\n */\nexport function stripLeadingEnvAssignments(tokens: string[]): string[] {\n let start = 0;\n if (tokens[start] === \"env\") {\n start += 1;\n }\n while (start < tokens.length) {\n const token = tokens[start];\n if (/^(?:[a-z_][a-z0-9_]*|\\$env:[a-z_][a-z0-9_]*)=.*/.test(token)) {\n start += 1;\n continue;\n }\n break;\n }\n return tokens.slice(start);\n}\n\n/**\n * Implements first pm subcommand for the public runtime surface of this module.\n */\nexport function firstPmSubcommand(args: string[]): string | undefined {\n let index = 0;\n while (index < args.length) {\n const token = args[index];\n if (token === \"--\") {\n index += 1;\n continue;\n }\n if (token.startsWith(\"-\")) {\n if (PM_GLOBAL_FLAGS_WITH_VALUE.has(token)) {\n index += 2;\n continue;\n }\n index += 1;\n continue;\n }\n return token;\n }\n return undefined;\n}\n\n/**\n * Implements check whether pm executable token for the public runtime surface of this module.\n */\nexport function isPmExecutableToken(token: string): boolean {\n return (\n token === \"pm\" ||\n token === \"pm.cmd\" ||\n token === \"pm.exe\" ||\n token.endsWith(\"/pm\") ||\n token.endsWith(\"/pm.cmd\") ||\n token.endsWith(\"/pm.exe\")\n );\n}\n\n/**\n * Implements normalize package specifier for the public runtime surface of this module.\n */\nexport function normalizePackageSpecifier(token: string): string {\n const trimmed = token.trim();\n if (!trimmed.startsWith(\"@\")) {\n const versionSeparator = trimmed.indexOf(\"@\");\n return versionSeparator === -1 ? trimmed : trimmed.slice(0, versionSeparator);\n }\n const scopeSeparator = trimmed.indexOf(\"/\");\n if (scopeSeparator === -1) {\n return trimmed;\n }\n const versionSeparator = trimmed.indexOf(\"@\", scopeSeparator + 1);\n return versionSeparator === -1 ? trimmed : trimmed.slice(0, versionSeparator);\n}\n\n/**\n * Implements check whether pm cli package token for the public runtime surface of this module.\n */\nexport function isPmCliPackageToken(token: string): boolean {\n const normalizedSpecifier = normalizePackageSpecifier(token);\n return (\n normalizedSpecifier === \"pm-cli\" ||\n normalizedSpecifier.endsWith(\"/pm-cli\") ||\n token === \"pm-cli\" ||\n token.endsWith(\"/pm-cli\")\n );\n}\n\n/**\n * Implements check whether pm cli script token for the public runtime surface of this module.\n */\nexport function isPmCliScriptToken(token: string): boolean {\n return token === \"dist/cli.js\" || token === \"./dist/cli.js\" || token.endsWith(\"/dist/cli.js\");\n}\n\n/**\n * Implements parse npx command for the public runtime surface of this module.\n */\nexport function parseNpxCommand(tokens: string[]): { command: string; args: string[] } | null {\n let index = 0;\n while (index < tokens.length) {\n const token = tokens[index];\n if (token === \"--\") {\n index += 1;\n break;\n }\n if (!token.startsWith(\"-\")) {\n break;\n }\n if (token.includes(\"=\")) {\n index += 1;\n continue;\n }\n if (NPX_FLAGS_WITH_VALUE.has(token)) {\n index += 2;\n continue;\n }\n index += 1;\n }\n const command = tokens[index];\n if (!command) {\n return null;\n }\n return {\n command,\n args: tokens.slice(index + 1),\n };\n}\n\n/**\n * Implements parse launcher subcommand for the public runtime surface of this module.\n */\nexport function parseLauncherSubcommand(\n tokens: string[],\n flagsWithValue: Set<string>,\n): { subcommand: string; args: string[] } | null {\n let index = 0;\n while (index < tokens.length) {\n const token = tokens[index];\n if (token === \"--\") {\n index += 1;\n continue;\n }\n if (token.startsWith(\"-\")) {\n if (token.includes(\"=\")) {\n index += 1;\n continue;\n }\n if (flagsWithValue.has(token)) {\n index += 2;\n continue;\n }\n index += 1;\n continue;\n }\n return {\n subcommand: token,\n args: tokens.slice(index + 1),\n };\n }\n return null;\n}\n\n/**\n * Implements parse pnpm dlx command for the public runtime surface of this module.\n */\nexport function parsePnpmDlxCommand(tokens: string[]): { command: string; args: string[] } | null {\n const parsed = parseLauncherSubcommand(tokens, PNPM_GLOBAL_FLAGS_WITH_VALUE);\n if (parsed?.subcommand !== \"dlx\") {\n return null;\n }\n return parseNpxCommand(parsed.args);\n}\n\n/**\n * Implements parse npm exec command for the public runtime surface of this module.\n */\nexport function parseNpmExecCommand(tokens: string[]): { command: string; args: string[] } | null {\n const parsed = parseLauncherSubcommand(tokens, NPM_GLOBAL_FLAGS_WITH_VALUE);\n if (!parsed || !NPM_EXEC_SUBCOMMANDS.has(parsed.subcommand)) {\n return null;\n }\n return parseNpxCommand(parsed.args);\n}\n\n/**\n * Implements resolve pm subcommand context for the public runtime surface of this module.\n */\nexport function resolvePmSubcommandContext(args: string[]): { subcommand: string; remaining: string[] } | null {\n let index = 0;\n while (index < args.length) {\n const token = args[index];\n if (token === \"--\") {\n index += 1;\n continue;\n }\n if (token.startsWith(\"-\")) {\n if (PM_GLOBAL_FLAGS_WITH_VALUE.has(token)) {\n index += 2;\n continue;\n }\n index += 1;\n continue;\n }\n return {\n subcommand: token,\n remaining: args.slice(index + 1),\n };\n }\n return null;\n}\n\n/**\n * Implements first positional token for the public runtime surface of this module.\n */\nexport function firstPositionalToken(tokens: string[]): string | undefined {\n for (const token of tokens) {\n if (!token.startsWith(\"-\")) {\n return token;\n }\n }\n return undefined;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["kind", "versionSeparator", "global"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../../../cli/commands/annotation-command.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @module cli/commands/annotation-command\n *\n * Implements the pm annotation command command surface and its agent-facing runtime behavior.\n */\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { getActiveExtensionRegistrations } from \"../../core/extensions/index.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { parseCsvKv } from \"../../core/item/parse.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 { nowIso } from \"../../core/shared/time.js\";\nimport { resolveAuthor } from \"../../core/shared/author.js\";\nimport { locateItem, mutateItem, readLocatedItem } from \"../../core/store/item-store.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport { parseLimit } from \"../shared-parsers.js\";\n\ninterface AnnotationEntry {\n created_at: string;\n author: string;\n text: string;\n edited_at?: string;\n}\n\ninterface AnnotationCommandOptions {\n limit?: string;\n author?: string;\n message?: string;\n force?: boolean;\n includeMeta?: boolean;\n}\n\ninterface AnnotationInput {\n mode: \"list\" | \"add\" | \"stdin\" | \"file\" | \"edit\" | \"delete\";\n value?: string;\n emptyFlag?: string;\n index?: number;\n}\n\ninterface OwnershipConflictGuidance {\n required: string;\n examples: string[];\n nextSteps: string[];\n}\n\ninterface AnnotationCommandConfig<TKey extends string> {\n input: AnnotationInput;\n collectionKey: TKey;\n op: Parameters<typeof mutateItem>[0][\"op\"];\n editOp?: Parameters<typeof mutateItem>[0][\"op\"];\n deleteOp?: Parameters<typeof mutateItem>[0][\"op\"];\n parseText: (raw: string) => string;\n allowAuditBypass: boolean;\n conflictGuidance: OwnershipConflictGuidance;\n}\n\ntype AnnotationCommandResult<TKey extends string, TEntry extends AnnotationEntry> = {\n id: string;\n count: number;\n} & Record<TKey, TEntry[]> & {\n total_count?: number;\n returned_count?: number;\n has_more?: boolean;\n limit?: number;\n };\n\n/**\n * Implements limit annotation entries for the public runtime surface of this module.\n */\nexport function limitAnnotationEntries<TEntry>(values: TEntry[], limit: number | undefined): TEntry[] {\n if (limit === undefined) return values;\n if (limit === 0) return [];\n return values.slice(Math.max(0, values.length - limit));\n}\n\n/**\n * Implements read annotation entries for the public runtime surface of this module.\n */\nexport function readAnnotationEntries<TEntry>(source: Record<string, unknown>, collectionKey: string): TEntry[] {\n const value = source[collectionKey];\n return Array.isArray(value) ? (value as TEntry[]) : [];\n}\n\n/**\n * Implements parse annotation text input for the public runtime surface of this module.\n */\nexport function parseAnnotationTextInput(raw: string, options: { stripPlainTextPrefix?: boolean } = {}): string {\n const trimmed = raw.trim();\n if (!trimmed) {\n return \"\";\n }\n const textPrefixMatch = /^(?:[-*+]\\s*)?text\\s*[:=]/i.exec(trimmed);\n if (options.stripPlainTextPrefix === true && textPrefixMatch && !trimmed.startsWith(\"```\")) {\n const text = trimmed.slice(textPrefixMatch[0].length).trim();\n return text || trimmed;\n }\n const looksStructured = /^(?:[-*+]\\s*)?text\\s*[:=]/im.test(trimmed) || trimmed.startsWith(\"```\");\n if (!looksStructured) {\n return trimmed;\n }\n try {\n const kv = parseCsvKv(trimmed, \"--add\");\n const keys = Object.keys(kv).map((key) => key.trim().toLowerCase());\n if (keys.some((key) => key !== \"text\")) {\n return trimmed;\n }\n const text = kv.text?.trim();\n return text || trimmed;\n } catch {\n return trimmed;\n }\n}\n\n/**\n * Implements wrap ownership conflict for the public runtime surface of this module.\n */\nexport function wrapOwnershipConflict(error: unknown, guidance: OwnershipConflictGuidance): never {\n if (\n error instanceof PmCliError &&\n error.exitCode === EXIT_CODE.CONFLICT &&\n error.message.includes(\"is assigned to\") &&\n error.message.includes(\"Use --force to override\")\n ) {\n throw new PmCliError(error.message, error.exitCode, {\n code: \"ownership_conflict\",\n required: guidance.required,\n examples: guidance.examples,\n nextSteps: guidance.nextSteps,\n });\n }\n throw error;\n}\n\n/**\n * Implements run annotation command for the public runtime surface of this module.\n */\nexport async function runAnnotationCommand<TKey extends string, TEntry extends AnnotationEntry>(\n id: string,\n options: AnnotationCommandOptions,\n global: GlobalOptions,\n config: AnnotationCommandConfig<TKey>,\n): Promise<AnnotationCommandResult<TKey, TEntry>> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\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 const settings = await readSettings(pmRoot);\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const limit = parseLimit(options.limit);\n\n if (config.input.mode === \"list\") {\n const located = await locateItem(pmRoot, id, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);\n if (!located) {\n throw new PmCliError(`Item ${id} not found`, EXIT_CODE.NOT_FOUND);\n }\n const loaded = await readLocatedItem(located, { schema: settings.schema });\n const allEntries = readAnnotationEntries<TEntry>(loaded.document.metadata, config.collectionKey);\n return renderAnnotationResult(located.id, config.collectionKey, allEntries, limit, options.includeMeta === true);\n }\n\n const author = resolveAuthor(options.author, settings.author_default);\n\n if (config.input.mode === \"delete\") {\n const op = config.deleteOp ?? config.op;\n let result: Awaited<ReturnType<typeof mutateItem>>;\n try {\n result = await mutateItem({\n pmRoot,\n settings,\n id,\n op,\n author,\n message: options.message,\n force: options.force,\n bypassAssigneeConflict: config.allowAuditBypass,\n mutate(document) {\n const entries = readAnnotationEntries<TEntry>(document.metadata, config.collectionKey);\n const arrayIndex = resolveAnnotationIndex(config.input.index, entries.length, config.collectionKey);\n entries.splice(arrayIndex, 1);\n document.metadata[config.collectionKey] = entries as never;\n return { changedFields: [config.collectionKey] };\n },\n });\n } catch (error: unknown) {\n wrapOwnershipConflict(error, config.conflictGuidance);\n }\n const allEntries = readAnnotationEntries<TEntry>(result.item, config.collectionKey);\n return renderAnnotationResult(result.item.id, config.collectionKey, allEntries, limit, options.includeMeta === true);\n }\n\n const text = config.parseText(config.input.value ?? \"\");\n if (!text.trim()) {\n throw new PmCliError(`${config.input.emptyFlag ?? \"--add\"} text cannot be empty`, EXIT_CODE.USAGE);\n }\n\n if (config.input.mode === \"edit\") {\n const op = config.editOp ?? config.op;\n let result: Awaited<ReturnType<typeof mutateItem>>;\n try {\n result = await mutateItem({\n pmRoot,\n settings,\n id,\n op,\n author,\n message: options.message,\n force: options.force,\n bypassAssigneeConflict: config.allowAuditBypass,\n mutate(document) {\n const entries = readAnnotationEntries<TEntry>(document.metadata, config.collectionKey);\n const arrayIndex = resolveAnnotationIndex(config.input.index, entries.length, config.collectionKey);\n const existing = entries[arrayIndex];\n entries[arrayIndex] = {\n ...existing,\n text,\n edited_at: nowIso(),\n } as TEntry;\n document.metadata[config.collectionKey] = entries as never;\n return { changedFields: [config.collectionKey] };\n },\n });\n } catch (error: unknown) {\n wrapOwnershipConflict(error, config.conflictGuidance);\n }\n const allEntries = readAnnotationEntries<TEntry>(result.item, config.collectionKey);\n return renderAnnotationResult(result.item.id, config.collectionKey, allEntries, limit, options.includeMeta === true);\n }\n\n let result: Awaited<ReturnType<typeof mutateItem>>;\n try {\n result = await mutateItem({\n pmRoot,\n settings,\n id,\n op: config.op,\n author,\n message: options.message,\n force: options.force,\n bypassAssigneeConflict: config.allowAuditBypass,\n mutate(document) {\n const entries = readAnnotationEntries<TEntry>(document.metadata, config.collectionKey);\n entries.push({\n created_at: nowIso(),\n author,\n text,\n } as TEntry);\n document.metadata[config.collectionKey] = entries as never;\n return { changedFields: [config.collectionKey] };\n },\n });\n } catch (error: unknown) {\n wrapOwnershipConflict(error, config.conflictGuidance);\n }\n\n const allEntries = readAnnotationEntries<TEntry>(result.item, config.collectionKey);\n return renderAnnotationResult(result.item.id, config.collectionKey, allEntries, limit, options.includeMeta === true);\n}\n\n/**\n * Implements resolve annotation index for the public runtime surface of this module.\n */\nexport function resolveAnnotationIndex(\n oneBasedIndex: number | undefined,\n count: number,\n collectionKey: string,\n): number {\n if (oneBasedIndex === undefined || !Number.isInteger(oneBasedIndex) || oneBasedIndex < 1 || oneBasedIndex > count) {\n const singular = collectionKey.replace(/s$/, \"\");\n const label = `${singular.charAt(0).toUpperCase()}${singular.slice(1)}`;\n const noun = count === 1 ? `1 ${singular}` : `${count} ${collectionKey}`;\n throw new PmCliError(\n `${label} index ${oneBasedIndex ?? \"(missing)\"} out of range (item has ${noun})`,\n EXIT_CODE.USAGE,\n );\n }\n return oneBasedIndex - 1;\n}\n\nfunction renderAnnotationResult<TKey extends string, TEntry extends AnnotationEntry>(\n id: string,\n collectionKey: TKey,\n allEntries: TEntry[],\n limit: number | undefined,\n includeMeta: boolean,\n): AnnotationCommandResult<TKey, TEntry> {\n const entries = limitAnnotationEntries(allEntries, limit);\n return {\n id,\n [collectionKey]: entries,\n count: entries.length,\n ...(includeMeta\n ? {\n total_count: allEntries.length,\n returned_count: entries.length,\n has_more: entries.length < allEntries.length,\n ...(limit !== undefined ? { limit } : {}),\n }\n : {}),\n } as AnnotationCommandResult<TKey, TEntry>;\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["global", "allEntries", "result"]
|
|
7
|
-
}
|