@unbrained/pm-cli 2026.7.6 → 2026.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -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/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/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 +3 -3
- 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/register-list-query.d.ts +1 -1
- package/dist/cli/register-list-query.js +18 -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 +113 -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-F7WPGIQL.js +11 -0
- package/dist/cli-bundle/chunks/{gc-2DNMPXMC.js → append-PVCTBVJG.js} +8 -9
- package/dist/cli-bundle/chunks/{chunk-EGAP5OWD.js → chunk-2APXX4TZ.js} +16 -14
- package/dist/cli-bundle/chunks/chunk-2APXX4TZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-R5BMJX33.js → chunk-2LEJGRQ7.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-AZYGZGGI.js → chunk-2TILG6F2.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-SMB7RV23.js → chunk-3G6UMXT3.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-SMB7RV23.js.map → chunk-3G6UMXT3.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-GJ7QC5DJ.js → chunk-3TYOW6RR.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-B6DUFX6H.js → chunk-3X542TEY.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-B6XS3R3O.js → chunk-42LXP4VO.js} +12 -16
- package/dist/cli-bundle/chunks/{chunk-B6XS3R3O.js.map → chunk-42LXP4VO.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-CL36D4PC.js → chunk-43SIHQND.js} +36 -15
- package/dist/cli-bundle/chunks/chunk-43SIHQND.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-7D7OOEYG.js → chunk-43UQN754.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-7D7OOEYG.js.map → chunk-43UQN754.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-ALFPSEWO.js → chunk-43YSKY75.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-ALFPSEWO.js.map → chunk-43YSKY75.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-NO442GWJ.js → chunk-4BKDAEDF.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-NO442GWJ.js.map → chunk-4BKDAEDF.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4LELACOL.js → chunk-4IQKDKGE.js} +15 -23
- package/dist/cli-bundle/chunks/{chunk-4LELACOL.js.map → chunk-4IQKDKGE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-F3K4JGFD.js → chunk-4MZOKTI2.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-F3K4JGFD.js.map → chunk-4MZOKTI2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-D2XRLB55.js → chunk-52NS7JDP.js} +14 -20
- package/dist/cli-bundle/chunks/{chunk-D2XRLB55.js.map → chunk-52NS7JDP.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-IX5BXEMX.js → chunk-565WYS5W.js} +12 -16
- package/dist/cli-bundle/chunks/{chunk-IX5BXEMX.js.map → chunk-565WYS5W.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-UH7T2DAX.js → chunk-5FIQ4EX3.js} +12 -18
- package/dist/cli-bundle/chunks/{chunk-UH7T2DAX.js.map → chunk-5FIQ4EX3.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-DMRNBQOI.js → chunk-6G6O3OPQ.js} +256 -36
- package/dist/cli-bundle/chunks/chunk-6G6O3OPQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-G64OCSKU.js → chunk-6LCJRGPD.js} +9 -13
- package/dist/cli-bundle/chunks/{chunk-G64OCSKU.js.map → chunk-6LCJRGPD.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-7WBAJSS6.js → chunk-6UQCNWFV.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-7WBAJSS6.js.map → chunk-6UQCNWFV.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-ZSUS2OD3.js → chunk-6XTSYPPO.js} +1216 -387
- package/dist/cli-bundle/chunks/chunk-6XTSYPPO.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-7ML7JONU.js +5434 -0
- package/dist/cli-bundle/chunks/chunk-7ML7JONU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ZZD4J5XY.js → chunk-7PNQA24K.js} +30 -36
- package/dist/cli-bundle/chunks/{chunk-ZZD4J5XY.js.map → chunk-7PNQA24K.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-JJP45OEI.js → chunk-7VQ3JJN5.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-OGWQ2IEP.js → chunk-7Y5N34HX.js} +8 -12
- package/dist/cli-bundle/chunks/{chunk-OGWQ2IEP.js.map → chunk-7Y5N34HX.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MWMVPCIE.js → chunk-AGAVEDIE.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-22KBU3MW.js → chunk-AJUON7E6.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-ZJ262CED.js → chunk-ARKHKYYS.js} +13 -21
- package/dist/cli-bundle/chunks/{chunk-ZJ262CED.js.map → chunk-ARKHKYYS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-46CUF5L6.js → chunk-C5ACVMOI.js} +99 -51
- package/dist/cli-bundle/chunks/chunk-C5ACVMOI.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-LPSSSDJR.js → chunk-CJQM7O7R.js} +16 -20
- package/dist/cli-bundle/chunks/{chunk-LPSSSDJR.js.map → chunk-CJQM7O7R.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-GBAX2ZAQ.js → chunk-D2DCTFTL.js} +10 -12
- package/dist/cli-bundle/chunks/{chunk-GBAX2ZAQ.js.map → chunk-D2DCTFTL.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-XHET7YUZ.js → chunk-DDDWVPID.js} +8 -10
- package/dist/cli-bundle/chunks/{chunk-XHET7YUZ.js.map → chunk-DDDWVPID.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-HIHMT6WS.js → chunk-DG6BSXZ7.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-HIHMT6WS.js.map → chunk-DG6BSXZ7.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-IWVU4C2F.js → chunk-DR2V5OIV.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-ZGK4L4JM.js → chunk-E3LWJUGF.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-ZGK4L4JM.js.map → chunk-E3LWJUGF.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-XUC7PI2H.js → chunk-E3YQFSFE.js} +6 -10
- package/dist/cli-bundle/chunks/{chunk-XUC7PI2H.js.map → chunk-E3YQFSFE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-XG625QP4.js → chunk-EDO7VXSO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-MA4SM3QZ.js → chunk-EIUBK2LT.js} +12 -18
- package/dist/cli-bundle/chunks/{chunk-MA4SM3QZ.js.map → chunk-EIUBK2LT.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-YN7Y6DQZ.js → chunk-EMXPI36L.js} +14 -20
- package/dist/cli-bundle/chunks/{chunk-YN7Y6DQZ.js.map → chunk-EMXPI36L.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MLIYFOE7.js → chunk-EOUVR7JN.js} +12 -8
- package/dist/cli-bundle/chunks/chunk-EOUVR7JN.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-Y4M7CPQP.js → chunk-EVEPHNXJ.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-M7JNBQAD.js → chunk-F6MT7KKE.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-M7JNBQAD.js.map → chunk-F6MT7KKE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-W3DSJQIO.js → chunk-F6YC2A6X.js} +7 -11
- package/dist/cli-bundle/chunks/{chunk-W3DSJQIO.js.map → chunk-F6YC2A6X.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-FILL6BB2.js +5514 -0
- package/dist/cli-bundle/chunks/chunk-FILL6BB2.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-JDDLOQAE.js → chunk-FN6SB4HU.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-GH73UOSJ.js +5359 -0
- package/dist/cli-bundle/chunks/chunk-GH73UOSJ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-EKFNL33R.js → chunk-GLS6VMWI.js} +37 -16
- package/dist/cli-bundle/chunks/chunk-GLS6VMWI.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-HOVCGJSD.js → chunk-GPIDUMMN.js} +9 -11
- package/dist/cli-bundle/chunks/{chunk-HOVCGJSD.js.map → chunk-GPIDUMMN.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SQOIV3OQ.js → chunk-GTM5HQL4.js} +11 -15
- package/dist/cli-bundle/chunks/{chunk-SQOIV3OQ.js.map → chunk-GTM5HQL4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-24YG75HI.js → chunk-H2SMKL2N.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-QLMX7SRD.js → chunk-HHEWQXPD.js} +6 -6
- package/dist/cli-bundle/chunks/chunk-HHEWQXPD.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-EGY6JBQ3.js → chunk-HX6QXV5P.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4ZBE5GUN.js → chunk-I74FMIWA.js} +10 -16
- package/dist/cli-bundle/chunks/{chunk-4ZBE5GUN.js.map → chunk-I74FMIWA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-3N6RRO2Q.js → chunk-IDIBF4E2.js} +20 -24
- package/dist/cli-bundle/chunks/{chunk-3N6RRO2Q.js.map → chunk-IDIBF4E2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-6QBJLYBP.js → chunk-II7R6KD4.js} +8 -7
- package/dist/cli-bundle/chunks/{chunk-6QBJLYBP.js.map → chunk-II7R6KD4.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-J2VGADNG.js +10320 -0
- package/dist/cli-bundle/chunks/chunk-J2VGADNG.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-FT3QTERD.js → chunk-J7BOLHAV.js} +5 -7
- package/dist/cli-bundle/chunks/{chunk-FT3QTERD.js.map → chunk-J7BOLHAV.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-GANUTS7W.js → chunk-KTGJ2CBU.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-GANUTS7W.js.map → chunk-KTGJ2CBU.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-LK6XLOGP.js → chunk-LCFJ7XAM.js} +22 -2
- package/dist/cli-bundle/chunks/{chunk-LK6XLOGP.js.map → chunk-LCFJ7XAM.js.map} +3 -3
- package/dist/cli-bundle/chunks/{chunk-3UJRFJ5R.js → chunk-LZQU6XJG.js} +28 -34
- package/dist/cli-bundle/chunks/{chunk-3UJRFJ5R.js.map → chunk-LZQU6XJG.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-L5PSPMZ4.js → chunk-M62RO3XK.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-L5PSPMZ4.js.map → chunk-M62RO3XK.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-CFB33L7W.js → chunk-MCEUKJKW.js} +12 -14
- package/dist/cli-bundle/chunks/{chunk-CFB33L7W.js.map → chunk-MCEUKJKW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-TKD5VCTD.js → chunk-MHNMCDWR.js} +343 -195
- package/dist/cli-bundle/chunks/chunk-MHNMCDWR.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-O6AWCQRQ.js → chunk-MRFWUSVA.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-O6AWCQRQ.js.map → chunk-MRFWUSVA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SQYJ4HF2.js → chunk-N6ZHDLUY.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-SQYJ4HF2.js.map → chunk-N6ZHDLUY.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-ZWBEPGD7.js → chunk-NWWL22C7.js} +7 -9
- package/dist/cli-bundle/chunks/{chunk-ZWBEPGD7.js.map → chunk-NWWL22C7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-Y46GD4IX.js → chunk-P3MJJW7P.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-MVYWGY2A.js → chunk-PDXJXEZJ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-SGMFPXKR.js → chunk-Q64AYQYW.js} +10 -12
- package/dist/cli-bundle/chunks/{chunk-SGMFPXKR.js.map → chunk-Q64AYQYW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-EBRZZ54H.js → chunk-QDABF2RB.js} +26 -34
- package/dist/cli-bundle/chunks/{chunk-EBRZZ54H.js.map → chunk-QDABF2RB.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-TULGS6X6.js → chunk-QFBSP3NI.js} +529 -46
- package/dist/cli-bundle/chunks/chunk-QFBSP3NI.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-GDDAGPWJ.js → chunk-RB3KLPAH.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-GDDAGPWJ.js.map → chunk-RB3KLPAH.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-3VHSI5FL.js → chunk-RY7PTTUB.js} +94 -53
- package/dist/cli-bundle/chunks/chunk-RY7PTTUB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-COSPOP7H.js → chunk-S547WBYG.js} +343 -195
- package/dist/cli-bundle/chunks/chunk-S547WBYG.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-NZEHECMW.js → chunk-S5BNGFN5.js} +24 -32
- package/dist/cli-bundle/chunks/{chunk-NZEHECMW.js.map → chunk-S5BNGFN5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MVSP7WGJ.js → chunk-S6VC2A2K.js} +8 -12
- package/dist/cli-bundle/chunks/{chunk-MVSP7WGJ.js.map → chunk-S6VC2A2K.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-45FYNUFJ.js → chunk-SIM5JDON.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-45FYNUFJ.js.map → chunk-SIM5JDON.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-VPIM42PC.js → chunk-SY75LYXR.js} +11 -7
- package/dist/cli-bundle/chunks/chunk-SY75LYXR.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-K46RF36U.js → chunk-TEISGNSH.js} +7 -7
- package/dist/cli-bundle/chunks/chunk-TEISGNSH.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-AGHMOTGM.js → chunk-TEKZOS7M.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-W572BIEB.js → chunk-TGUK6XN6.js} +14 -18
- package/dist/cli-bundle/chunks/{chunk-W572BIEB.js.map → chunk-TGUK6XN6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-E42XTBSP.js → chunk-TNC6MZUD.js} +8 -12
- package/dist/cli-bundle/chunks/{chunk-E42XTBSP.js.map → chunk-TNC6MZUD.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-TZLYO4PP.js +10498 -0
- package/dist/cli-bundle/chunks/chunk-TZLYO4PP.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-57NWPFF2.js → chunk-UO7XAZK6.js} +17 -4
- package/dist/cli-bundle/chunks/chunk-UO7XAZK6.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-JVH7QBVV.js → chunk-V5ZWKJNY.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-I36Y7PCE.js → chunk-VGO73OCK.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-I36Y7PCE.js.map → chunk-VGO73OCK.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-KUOOJR35.js → chunk-VLEA2UTQ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-RCQZK2GO.js → chunk-W5HXHC7C.js} +7 -9
- package/dist/cli-bundle/chunks/{chunk-RCQZK2GO.js.map → chunk-W5HXHC7C.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MUH7A3FD.js → chunk-WCWVEXGA.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-X47MKQXU.js +6690 -0
- package/dist/cli-bundle/chunks/chunk-X47MKQXU.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-NB7RLQFW.js → chunk-XBX5CBRQ.js} +5 -7
- package/dist/cli-bundle/chunks/{chunk-NB7RLQFW.js.map → chunk-XBX5CBRQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SCUR7K7N.js → chunk-XC3X7BQR.js} +541 -44
- package/dist/cli-bundle/chunks/chunk-XC3X7BQR.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-CRVYGJUI.js → chunk-XHCVAZGM.js} +13 -17
- package/dist/cli-bundle/chunks/{chunk-CRVYGJUI.js.map → chunk-XHCVAZGM.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-XB7KFVFI.js → chunk-XPMXPR7K.js} +7 -9
- package/dist/cli-bundle/chunks/{chunk-XB7KFVFI.js.map → chunk-XPMXPR7K.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-4CJFCTLM.js → chunk-XS2TMNXR.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-4CJFCTLM.js.map → chunk-XS2TMNXR.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-HFDADVJZ.js → chunk-XXIYUTLK.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-HFDADVJZ.js.map → chunk-XXIYUTLK.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-EOKXK3R3.js → chunk-XZWL7VNE.js} +1220 -398
- package/dist/cli-bundle/chunks/chunk-XZWL7VNE.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-Y5IKRUEM.js +6624 -0
- package/dist/cli-bundle/chunks/chunk-Y5IKRUEM.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-6LLVNJXT.js → chunk-Y7KYVCZM.js} +12 -18
- package/dist/cli-bundle/chunks/{chunk-6LLVNJXT.js.map → chunk-Y7KYVCZM.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-VIIUS6N6.js → chunk-YCVWWIKY.js} +16 -14
- package/dist/cli-bundle/chunks/chunk-YCVWWIKY.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-CFNGIXZP.js → chunk-YH5NBDFA.js} +22 -26
- package/dist/cli-bundle/chunks/{chunk-CFNGIXZP.js.map → chunk-YH5NBDFA.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-YNCFP5AR.js +5509 -0
- package/dist/cli-bundle/chunks/chunk-YNCFP5AR.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-NC33K5ZS.js → chunk-YPD7SQ5P.js} +7 -6
- package/dist/cli-bundle/chunks/{chunk-NC33K5ZS.js.map → chunk-YPD7SQ5P.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NGXQ3PFT.js → chunk-YPMZMKN7.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-KGFUY7WN.js → chunk-YTD5GICJ.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-W6DYWXPQ.js → chunk-ZNEG2UDO.js} +261 -34
- package/dist/cli-bundle/chunks/{chunk-W6DYWXPQ.js.map → chunk-ZNEG2UDO.js.map} +4 -4
- package/dist/cli-bundle/chunks/{chunk-7DT4WSH2.js → chunk-ZO7CLOY2.js} +3 -3
- package/dist/cli-bundle/chunks/{close-2SSSHHUZ.js → close-3YYQ5OG2.js} +5 -9
- package/dist/cli-bundle/chunks/close-Z3Q4U7TS.js +12 -0
- package/dist/cli-bundle/chunks/close-many-3L2RXH3M.js +22 -0
- package/dist/cli-bundle/chunks/close-many-D366FTIG.js +26 -0
- package/dist/cli-bundle/chunks/comments-54XDJNFE.js +17 -0
- package/dist/cli-bundle/chunks/comments-HGHC2PN6.js +13 -0
- package/dist/cli-bundle/chunks/{copy-32ROBIDL.js → copy-44RT5GDW.js} +4 -8
- package/dist/cli-bundle/chunks/copy-UGMUGHZA.js +9 -0
- package/dist/cli-bundle/chunks/{create-E77SDCUP.js → create-4GWJWPXG.js} +9 -14
- package/dist/cli-bundle/chunks/create-AZXCUYKP.js +25 -0
- package/dist/cli-bundle/chunks/delete-Y6SXIQ4X.js +10 -0
- package/dist/cli-bundle/chunks/{delete-RA5KTCLB.js → delete-YQ2VPXNF.js} +4 -8
- package/dist/cli-bundle/chunks/{deps-32SU7HO5.js → deps-BU5EBJDU.js} +4 -8
- package/dist/cli-bundle/chunks/deps-FMANWFRP.js +13 -0
- package/dist/cli-bundle/chunks/{docs-RRUPT7O2.js → docs-OQBSJNIA.js} +6 -10
- package/dist/cli-bundle/chunks/docs-VNPBZXEL.js +14 -0
- package/dist/cli-bundle/chunks/files-72HZEBOE.js +18 -0
- package/dist/cli-bundle/chunks/{files-PYKR2UUG.js → files-HTSB2KJG.js} +6 -10
- package/dist/cli-bundle/chunks/{contracts-NYPEW2G4.js → focus-FOG4ALC2.js} +7 -9
- package/dist/cli-bundle/chunks/focus-SUTMKXGX.js +10 -0
- package/dist/cli-bundle/chunks/{history-compact-3MNXLKAT.js → history-compact-M6IFAMBP.js} +9 -13
- package/dist/cli-bundle/chunks/history-compact-NEXRPP2O.js +21 -0
- package/dist/cli-bundle/chunks/{history-redact-P6DYF55G.js → history-redact-NQX3OGZP.js} +7 -11
- package/dist/cli-bundle/chunks/history-redact-WQJBZ3PX.js +17 -0
- package/dist/cli-bundle/chunks/history-repair-CBHMHAJO.js +19 -0
- package/dist/cli-bundle/chunks/{history-repair-ZJQFMWPD.js → history-repair-NHOJG7WO.js} +9 -13
- package/dist/cli-bundle/chunks/learnings-M64NTSOR.js +13 -0
- package/dist/cli-bundle/chunks/{append-BGML6VLD.js → learnings-T63JGKKN.js} +9 -11
- package/dist/cli-bundle/chunks/notes-73WE2UV2.js +13 -0
- package/dist/cli-bundle/chunks/notes-U7L6HQQ2.js +17 -0
- package/dist/cli-bundle/chunks/plan-OSCNYFGC.js +24 -0
- package/dist/cli-bundle/chunks/{plan-CHVE7PBR.js → plan-TN537L24.js} +10 -15
- package/dist/cli-bundle/chunks/{profile-ZXGSKBJD.js → profile-MHAMXMHQ.js} +9 -13
- package/dist/cli-bundle/chunks/{profile-LD23PSI6.js → profile-TIGLAKJ7.js} +9 -13
- package/dist/cli-bundle/chunks/{register-list-query-OEYQHFXO.js → register-list-query-OHXD7G5N.js} +41 -33
- package/dist/cli-bundle/chunks/register-list-query-OHXD7G5N.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-list-query-B42JCCOI.js → register-list-query-ZCRABAPN.js} +42 -34
- package/dist/cli-bundle/chunks/register-list-query-ZCRABAPN.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-mutation-IAEST26S.js → register-mutation-P3G4XP6Q.js} +36 -41
- package/dist/cli-bundle/chunks/{register-mutation-IAEST26S.js.map → register-mutation-P3G4XP6Q.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-mutation-3QXIHCQG.js → register-mutation-XX4H56PE.js} +34 -39
- package/dist/cli-bundle/chunks/{register-mutation-3QXIHCQG.js.map → register-mutation-XX4H56PE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-5BMM6XQY.js → register-operations-V6PIYEDU.js} +79 -46
- package/dist/cli-bundle/chunks/register-operations-V6PIYEDU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-Z3U3U5KD.js → register-operations-V6VKTG54.js} +78 -45
- package/dist/cli-bundle/chunks/register-operations-V6VKTG54.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-setup-3ZVVX2VN.js → register-setup-6RVAWT6W.js} +129 -29
- package/dist/cli-bundle/chunks/register-setup-6RVAWT6W.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-setup-Q6KFNIOZ.js → register-setup-6YVUSQYD.js} +130 -30
- package/dist/cli-bundle/chunks/register-setup-6YVUSQYD.js.map +1 -0
- package/dist/cli-bundle/chunks/{restore-5RQHAPMA.js → restore-HC3YSWF7.js} +7 -11
- package/dist/cli-bundle/chunks/restore-LFAMMRYZ.js +15 -0
- package/dist/cli-bundle/chunks/{schema-HBORFC6B.js → schema-DAGSYO6E.js} +6 -10
- package/dist/cli-bundle/chunks/{schema-245WW4G2.js → schema-UBXJCQAC.js} +6 -10
- package/dist/cli-bundle/chunks/update-CJGG5WMV.js +21 -0
- package/dist/cli-bundle/chunks/update-LKD64AFP.js +25 -0
- package/dist/cli-bundle/chunks/update-many-G4SM7BHC.js +31 -0
- package/dist/cli-bundle/chunks/update-many-VLIV3D7R.js +35 -0
- package/dist/cli-bundle/main.js +29 -31
- package/dist/cli-bundle/main.js.map +2 -2
- package/dist/cli-bundle/sdk-runtime.js +129 -107
- package/dist/cli-bundle/sdk-testing.js +7 -8
- package/dist/cli-bundle/sdk.js +122 -117
- package/dist/cli-bundle/sdk.js.map +2 -2
- 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/flag-contracts.js +7 -7
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-schema.js +9 -7
- 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 +151 -8
- package/dist/sdk/runtime.js +255 -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/SDK.md +35 -0
- package/docs/TESTING.md +3 -0
- package/package.json +1 -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-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-F7WPGIQL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-Z6QUAUSG.js.map → append-PVCTBVJG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-R5BMJX33.js.map → chunk-2LEJGRQ7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AZYGZGGI.js.map → chunk-2TILG6F2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GJ7QC5DJ.js.map → chunk-3TYOW6RR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-B6DUFX6H.js.map → chunk-3X542TEY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JJP45OEI.js.map → chunk-7VQ3JJN5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MWMVPCIE.js.map → chunk-AGAVEDIE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-22KBU3MW.js.map → chunk-AJUON7E6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IWVU4C2F.js.map → chunk-DR2V5OIV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XG625QP4.js.map → chunk-EDO7VXSO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Y4M7CPQP.js.map → chunk-EVEPHNXJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JDDLOQAE.js.map → chunk-FN6SB4HU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-24YG75HI.js.map → chunk-H2SMKL2N.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EGY6JBQ3.js.map → chunk-HX6QXV5P.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Y46GD4IX.js.map → chunk-P3MJJW7P.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MVYWGY2A.js.map → chunk-PDXJXEZJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AGHMOTGM.js.map → chunk-TEKZOS7M.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JVH7QBVV.js.map → chunk-V5ZWKJNY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KUOOJR35.js.map → chunk-VLEA2UTQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MUH7A3FD.js.map → chunk-WCWVEXGA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NGXQ3PFT.js.map → chunk-YPMZMKN7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KGFUY7WN.js.map → chunk-YTD5GICJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7DT4WSH2.js.map → chunk-ZO7CLOY2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-BDM6EIAR.js.map → close-3YYQ5OG2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-VQ2DHU3S.js.map → close-Z3Q4U7TS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-RKJYPU74.js.map → close-many-3L2RXH3M.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-BGML6VLD.js.map → close-many-D366FTIG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-XP5AWZ5H.js.map → comments-54XDJNFE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-RFS7BROJ.js.map → comments-HGHC2PN6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-2SSSHHUZ.js.map → copy-44RT5GDW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-GEANHQ2J.js.map → copy-UGMUGHZA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-CMZW7ITN.js.map → create-4GWJWPXG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-ZFDIG6M7.js.map → create-AZXCUYKP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-XUBPXDYX.js.map → delete-Y6SXIQ4X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-MFSYVNNU.js.map → delete-YQ2VPXNF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-T4FHBSYN.js.map → deps-BU5EBJDU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-D7XQMONX.js.map → deps-FMANWFRP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-DIU275XI.js.map → docs-OQBSJNIA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-JCOYB4LZ.js.map → docs-VNPBZXEL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-BVO7CSLK.js.map → files-72HZEBOE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-NYPEW2G4.js.map → files-HTSB2KJG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-32ROBIDL.js.map → focus-FOG4ALC2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-NAGLGMHZ.js.map → focus-SUTMKXGX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-E77SDCUP.js.map → history-compact-M6IFAMBP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-4V7SWNBB.js.map → history-compact-NEXRPP2O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-RA5KTCLB.js.map → history-redact-NQX3OGZP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-NQI5OSKN.js.map → history-redact-WQJBZ3PX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-T7SCWXEX.js.map → history-repair-CBHMHAJO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-32SU7HO5.js.map → history-repair-NHOJG7WO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-WL2IWGWV.js.map → learnings-M64NTSOR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-RRUPT7O2.js.map → learnings-T63JGKKN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-NF2J5SHR.js.map → notes-73WE2UV2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-SKDT3MZU.js.map → notes-U7L6HQQ2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-ZISPBRBC.js.map → plan-OSCNYFGC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-LAXKCAYE.js.map → plan-TN537L24.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-PYKR2UUG.js.map → profile-MHAMXMHQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-EWRQHGIS.js.map → profile-TIGLAKJ7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-4T7TM4MT.js.map → restore-HC3YSWF7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-L3YUASOD.js.map → restore-LFAMMRYZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-2PCTYYRI.js.map → schema-DAGSYO6E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-2DNMPXMC.js.map → schema-UBXJCQAC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-VKQXCXLL.js.map → update-CJGG5WMV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-7DMITJ3G.js.map → update-LKD64AFP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{health-CVSTAR2F.js.map → update-many-G4SM7BHC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{health-TV3GKTFN.js.map → update-many-VLIV3D7R.js.map} +0 -0
|
@@ -1,34 +1,30 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
-
import {
|
|
4
|
-
parseCsvKv
|
|
5
|
-
} from "./chunk-IWVU4C2F.js";
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="696488c2-34f1-5097-a1c0-d97b38ae7d0a")}catch(e){}}();
|
|
6
3
|
import {
|
|
7
4
|
resolveAuthor
|
|
8
5
|
} from "./chunk-T5RRNDA7.js";
|
|
9
6
|
import {
|
|
10
7
|
parseLimit
|
|
11
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-AJUON7E6.js";
|
|
12
9
|
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
readLocatedItem
|
|
16
|
-
} from "./chunk-ENGQOEUY.js";
|
|
17
|
-
import {
|
|
18
|
-
nowIso
|
|
19
|
-
} from "./chunk-3GCS5SKL.js";
|
|
10
|
+
parseCsvKv
|
|
11
|
+
} from "./chunk-DR2V5OIV.js";
|
|
20
12
|
import {
|
|
21
13
|
PmCliError,
|
|
22
14
|
getActiveExtensionRegistrations,
|
|
15
|
+
locateItem,
|
|
16
|
+
mutateItem,
|
|
17
|
+
nowIso,
|
|
18
|
+
readLocatedItem,
|
|
23
19
|
readSettings
|
|
24
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-GH73UOSJ.js";
|
|
25
21
|
import {
|
|
26
22
|
EXIT_CODE,
|
|
27
23
|
getSettingsPath,
|
|
28
24
|
pathExists,
|
|
29
25
|
resolveItemTypeRegistry,
|
|
30
26
|
resolvePmRoot
|
|
31
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-UO7XAZK6.js";
|
|
32
28
|
|
|
33
29
|
// dist/cli/commands/annotation-command.js
|
|
34
30
|
function limitAnnotationEntries(values, limit) {
|
|
@@ -79,6 +75,29 @@ function wrapOwnershipConflict(error, guidance) {
|
|
|
79
75
|
}
|
|
80
76
|
throw error;
|
|
81
77
|
}
|
|
78
|
+
function annotationStdinHint(collectionKey) {
|
|
79
|
+
return collectionKey === "comments" ? "--stdin" : "--add -";
|
|
80
|
+
}
|
|
81
|
+
function assertAnnotationAddValueIsNotFlagLike(raw, config) {
|
|
82
|
+
const emptyFlag = config.input.emptyFlag ?? "--add";
|
|
83
|
+
if (emptyFlag !== "--add") {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const trimmed = raw.trim();
|
|
87
|
+
if (!/^-{1,2}[A-Za-z][\w-]*(?:=.*)?$/.test(trimmed)) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const stdinHint = annotationStdinHint(config.collectionKey);
|
|
91
|
+
const commandPrefix = config.input.mode === "edit" ? `pm ${config.collectionKey} <id> --edit <index>` : `pm ${config.collectionKey} <id>`;
|
|
92
|
+
throw new PmCliError(`--add value "${trimmed}" looks like an option, not annotation text. Use ${stdinHint} to read stdin, or use text=${trimmed} for literal dash-leading text.`, EXIT_CODE.USAGE, {
|
|
93
|
+
code: "annotation_flag_like_value",
|
|
94
|
+
required: `Use ${stdinHint} for stdin input, pass plain text, or use text=${trimmed} when the text really starts with "-".`,
|
|
95
|
+
examples: [
|
|
96
|
+
`${commandPrefix} ${stdinHint}`,
|
|
97
|
+
`${commandPrefix} --add text=${trimmed}`
|
|
98
|
+
]
|
|
99
|
+
});
|
|
100
|
+
}
|
|
82
101
|
async function runAnnotationCommand(id, options, global, config) {
|
|
83
102
|
const pmRoot = resolvePmRoot(process.cwd(), global.path);
|
|
84
103
|
if (!await pathExists(getSettingsPath(pmRoot))) {
|
|
@@ -124,6 +143,8 @@ async function runAnnotationCommand(id, options, global, config) {
|
|
|
124
143
|
const allEntries2 = readAnnotationEntries(result2.item, config.collectionKey);
|
|
125
144
|
return renderAnnotationResult(result2.item.id, config.collectionKey, allEntries2, limit, options.includeMeta === true);
|
|
126
145
|
}
|
|
146
|
+
const rawText = config.input.rawValue ?? config.input.value ?? "";
|
|
147
|
+
assertAnnotationAddValueIsNotFlagLike(rawText, config);
|
|
127
148
|
const text = config.parseText(config.input.value ?? "");
|
|
128
149
|
if (!text.trim()) {
|
|
129
150
|
throw new PmCliError(`${config.input.emptyFlag ?? "--add"} text cannot be empty`, EXIT_CODE.USAGE);
|
|
@@ -217,6 +238,6 @@ export {
|
|
|
217
238
|
wrapOwnershipConflict,
|
|
218
239
|
runAnnotationCommand
|
|
219
240
|
};
|
|
220
|
-
//# sourceMappingURL=chunk-
|
|
241
|
+
//# sourceMappingURL=chunk-GLS6VMWI.js.map
|
|
221
242
|
|
|
222
|
-
//# debugId=
|
|
243
|
+
//# debugId=696488c2-34f1-5097-a1c0-d97b38ae7d0a
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../cli/commands/annotation-command.ts"],"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 rawValue?: 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\nfunction annotationStdinHint(collectionKey: string): string {\n return collectionKey === \"comments\" ? \"--stdin\" : \"--add -\";\n}\n\nfunction assertAnnotationAddValueIsNotFlagLike(raw: string, config: AnnotationCommandConfig<string>): void {\n const emptyFlag = config.input.emptyFlag ?? \"--add\";\n if (emptyFlag !== \"--add\") {\n return;\n }\n const trimmed = raw.trim();\n if (!/^-{1,2}[A-Za-z][\\w-]*(?:=.*)?$/.test(trimmed)) {\n return;\n }\n const stdinHint = annotationStdinHint(config.collectionKey);\n const commandPrefix =\n config.input.mode === \"edit\"\n ? `pm ${config.collectionKey} <id> --edit <index>`\n : `pm ${config.collectionKey} <id>`;\n throw new PmCliError(\n `--add value \"${trimmed}\" looks like an option, not annotation text. Use ${stdinHint} to read stdin, or use text=${trimmed} for literal dash-leading text.`,\n EXIT_CODE.USAGE,\n {\n code: \"annotation_flag_like_value\",\n required: `Use ${stdinHint} for stdin input, pass plain text, or use text=${trimmed} when the text really starts with \"-\".`,\n examples: [\n `${commandPrefix} ${stdinHint}`,\n `${commandPrefix} --add text=${trimmed}`,\n ],\n },\n );\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 rawText = config.input.rawValue ?? config.input.value ?? \"\";\n assertAnnotationAddValueIsNotFlagLike(rawText, config);\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"],"names":["allEntries","result"],"mappings":"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","debugId":"696488c2-34f1-5097-a1c0-d97b38ae7d0a"}
|
|
@@ -1,25 +1,23 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e9df2560-179f-5612-abb9-6b4a3417a34f")}catch(e){}}();
|
|
3
3
|
import {
|
|
4
4
|
dedupeLinkedArtifacts,
|
|
5
5
|
normalizeLinkedPath,
|
|
6
6
|
renameArtifactsResultKey,
|
|
7
7
|
runLinkedArtifacts,
|
|
8
8
|
sortLinkedArtifacts
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-MCEUKJKW.js";
|
|
10
10
|
import {
|
|
11
11
|
resolveAuthor
|
|
12
12
|
} from "./chunk-T5RRNDA7.js";
|
|
13
|
-
import {
|
|
14
|
-
locateItem,
|
|
15
|
-
mutateItem,
|
|
16
|
-
readLocatedItem
|
|
17
|
-
} from "./chunk-ENGQOEUY.js";
|
|
18
13
|
import {
|
|
19
14
|
PmCliError,
|
|
20
15
|
getActiveExtensionRegistrations,
|
|
16
|
+
locateItem,
|
|
17
|
+
mutateItem,
|
|
18
|
+
readLocatedItem,
|
|
21
19
|
readSettings
|
|
22
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-GH73UOSJ.js";
|
|
23
21
|
import {
|
|
24
22
|
EXIT_CODE,
|
|
25
23
|
getSettingsPath,
|
|
@@ -27,7 +25,7 @@ import {
|
|
|
27
25
|
pathExists,
|
|
28
26
|
resolveItemTypeRegistry,
|
|
29
27
|
resolvePmRoot
|
|
30
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-UO7XAZK6.js";
|
|
31
29
|
|
|
32
30
|
// dist/cli/commands/files.js
|
|
33
31
|
import fs from "node:fs/promises";
|
|
@@ -288,6 +286,6 @@ export {
|
|
|
288
286
|
runFiles,
|
|
289
287
|
runFilesDiscover
|
|
290
288
|
};
|
|
291
|
-
//# sourceMappingURL=chunk-
|
|
289
|
+
//# sourceMappingURL=chunk-GPIDUMMN.js.map
|
|
292
290
|
|
|
293
|
-
//# debugId=
|
|
291
|
+
//# debugId=e9df2560-179f-5612-abb9-6b4a3417a34f
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../cli/commands/files.ts"],"sourcesContent":["/**\n * @module cli/commands/files\n *\n * Implements the pm files command surface and its agent-facing runtime behavior.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { getActiveExtensionRegistrations } from \"../../core/extensions/index.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.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 { 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 { resolveAuthor } from \"../../core/shared/author.js\";\nimport { isPathWithinDirectory } from \"../../core/fs/path-utils.js\";\nimport type { ItemDocument, LinkedFile, LinkScope } from \"../../types/index.js\";\nimport {\n dedupeLinkedArtifacts,\n normalizeLinkedPath,\n renameArtifactsResultKey,\n runLinkedArtifacts,\n sortLinkedArtifacts,\n type LinkedArtifactResult,\n type LinkedPathAuditEntry,\n type LinkedPathValidation,\n} from \"./linked-artifacts.js\";\n\n/**\n * Documents the files command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface FilesCommandOptions {\n add?: string[];\n addGlob?: string[];\n remove?: string[];\n migrate?: string[];\n /** GH-170 (pm-pfnx): standalone note applied to every --add/--add-glob link in this invocation. */\n note?: string;\n list?: boolean;\n appendStable?: boolean;\n validatePaths?: boolean;\n audit?: boolean;\n author?: string;\n message?: string;\n force?: boolean;\n}\n\n/**\n * Documents the files discover options payload exchanged by command, SDK, and package integrations.\n */\nexport interface FilesDiscoverOptions {\n apply?: boolean;\n appendStable?: boolean;\n note?: string;\n author?: string;\n message?: string;\n force?: boolean;\n}\n\n/**\n * Documents the files discovery candidate payload exchanged by command, SDK, and package integrations.\n */\nexport interface FilesDiscoveryCandidate {\n path: string;\n scope: LinkScope;\n status: \"addable\" | \"already_linked\";\n source_count: number;\n source_fields: string[];\n original_paths: string[];\n}\n\n/**\n * Documents the files result payload exchanged by command, SDK, and package integrations.\n */\nexport interface FilesResult {\n id: string;\n files: LinkedFile[];\n changed: boolean;\n count: number;\n migrations_applied?: number;\n validation?: LinkedPathValidation;\n audit?: LinkedPathAuditEntry[];\n}\n\n/**\n * Documents the files discover result payload exchanged by command, SDK, and package integrations.\n */\nexport interface FilesDiscoverResult {\n id: string;\n files: LinkedFile[];\n changed: boolean;\n apply: boolean;\n count: number;\n candidate_count: number;\n addable_count: number;\n added_count: number;\n skipped_existing_count: number;\n candidates: FilesDiscoveryCandidate[];\n added: LinkedFile[];\n skipped_existing: FilesDiscoveryCandidate[];\n}\n\ninterface TextReference {\n field: string;\n value: string;\n}\n\ninterface RawPathReference {\n field: string;\n value: string;\n}\n\nfunction normalizeCandidatePathForOutput(value: string): string {\n return normalizeLinkedPath(path.normalize(value));\n}\n\nasync function realpathForContainment(inputPath: string): Promise<string> {\n try {\n return await fs.realpath(inputPath);\n } catch {\n return path.resolve(inputPath);\n }\n}\n\nfunction linkedFileResolvedKey(linkedFile: Pick<LinkedFile, \"path\" | \"scope\">, projectRoot: string): string {\n const resolvedPath = path.isAbsolute(linkedFile.path)\n ? path.resolve(linkedFile.path)\n : path.resolve(projectRoot, linkedFile.path);\n return `${normalizeCandidatePathForOutput(resolvedPath)}::${linkedFile.scope}`;\n}\n\nfunction collectTextReferences(value: unknown, fieldPath: string, references: TextReference[]): void {\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (trimmed.length > 0) {\n references.push({ field: fieldPath, value: trimmed });\n }\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((entry, index) => collectTextReferences(entry, `${fieldPath}[${index}]`, references));\n return;\n }\n if (typeof value === \"object\" && value !== null) {\n for (const [key, nested] of Object.entries(value)) {\n /* c8 ignore next -- root-level object traversal always carries a non-empty field path in current callers. */\n collectTextReferences(nested, fieldPath ? `${fieldPath}.${key}` : key, references);\n }\n }\n}\n\nfunction collectItemTextReferences(document: ItemDocument): TextReference[] {\n const references: TextReference[] = [];\n collectTextReferences(document.metadata, \"metadata\", references);\n collectTextReferences(document.body, \"body\", references);\n return references;\n}\n\nfunction cleanupPathToken(value: string): string {\n let next = value.trim();\n next = next.replace(/^[`\"'<([{]+/u, \"\");\n next = next.replace(/[`\"'>)\\]},;!?]+$/u, \"\");\n next = next.replace(/[.]+$/u, \"\");\n next = next.replace(/:(?:\\d+)(?::\\d+)?$/u, \"\");\n next = next.replace(/[.]+$/u, \"\");\n return next;\n}\n\nfunction extractRawPathReferences(references: TextReference[]): RawPathReference[] {\n const rawReferences: RawPathReference[] = [];\n const absolutePattern = /(?:[A-Za-z]:[\\\\/]|\\/)[^\\s\"'`<>()[\\]{},;]+/gu;\n const relativePattern =\n /(?:\\.{1,2}[\\\\/])?(?:(?:[A-Za-z0-9_.@-]+[\\\\/])+[A-Za-z0-9_.@-]+|[A-Za-z0-9_.@-]+\\.[A-Za-z0-9][A-Za-z0-9._-]*)/gu;\n for (const reference of references) {\n const seenInField = new Set<string>();\n for (const pattern of [absolutePattern, relativePattern]) {\n pattern.lastIndex = 0;\n for (const match of reference.value.matchAll(pattern)) {\n /* c8 ignore next -- RegExp match arrays always expose capture [0]. */\n const token = cleanupPathToken(match[0] ?? \"\");\n if (!token || seenInField.has(token)) {\n continue;\n }\n seenInField.add(token);\n rawReferences.push({ field: reference.field, value: token });\n }\n }\n }\n return rawReferences;\n}\n\nasync function resolveDiscoveredFile(\n rawPath: string,\n projectRoot: string,\n): Promise<Pick<LinkedFile, \"path\" | \"scope\"> | undefined> {\n const absolutePath = path.isAbsolute(rawPath) ? path.resolve(rawPath) : path.resolve(projectRoot, rawPath);\n let stats;\n try {\n stats = await fs.stat(absolutePath);\n } catch {\n return undefined;\n }\n if (!stats.isFile()) {\n return undefined;\n }\n const [canonicalProjectRoot, canonicalAbsolutePath] = await Promise.all([\n realpathForContainment(projectRoot),\n realpathForContainment(absolutePath),\n ]);\n if (isPathWithinDirectory(canonicalProjectRoot, canonicalAbsolutePath)) {\n const relativePath = path.relative(canonicalProjectRoot, canonicalAbsolutePath);\n if (!relativePath || relativePath.startsWith(\"..\") || path.isAbsolute(relativePath)) {\n return undefined;\n }\n return {\n path: normalizeCandidatePathForOutput(relativePath),\n scope: \"project\",\n };\n }\n return {\n path: normalizeCandidatePathForOutput(absolutePath),\n scope: \"global\",\n };\n}\n\nasync function discoverReferencedFiles(document: ItemDocument, projectRoot: string): Promise<FilesDiscoveryCandidate[]> {\n const existingResolvedKeys = new Set((document.metadata.files ?? []).map((entry) => linkedFileResolvedKey(entry, projectRoot)));\n const grouped = new Map<\n string,\n {\n path: string;\n scope: LinkScope;\n sourceFields: Set<string>;\n originalPaths: Set<string>;\n sourceCount: number;\n }\n >();\n const rawReferences = extractRawPathReferences(collectItemTextReferences(document));\n for (const reference of rawReferences) {\n const resolved = await resolveDiscoveredFile(reference.value, projectRoot);\n if (!resolved) {\n continue;\n }\n const key = linkedFileResolvedKey(resolved, projectRoot);\n const existing = grouped.get(key) ?? {\n path: resolved.path,\n scope: resolved.scope,\n sourceFields: new Set<string>(),\n originalPaths: new Set<string>(),\n sourceCount: 0,\n };\n existing.sourceFields.add(reference.field);\n existing.originalPaths.add(reference.value);\n existing.sourceCount += 1;\n grouped.set(key, existing);\n }\n return [...grouped.entries()]\n .map(([key, entry]) => ({\n path: entry.path,\n scope: entry.scope,\n status: existingResolvedKeys.has(key) ? (\"already_linked\" as const) : (\"addable\" as const),\n source_count: entry.sourceCount,\n source_fields: [...entry.sourceFields].sort((left, right) => left.localeCompare(right)),\n original_paths: [...entry.originalPaths].sort((left, right) => left.localeCompare(right)),\n }))\n .sort((left, right) => {\n const byStatus = left.status.localeCompare(right.status);\n if (byStatus !== 0) return byStatus;\n const byPath = left.path.localeCompare(right.path);\n if (byPath !== 0) return byPath;\n /* c8 ignore next -- path+status collisions are uncommon in deterministic fixtures. */\n return left.scope.localeCompare(right.scope);\n });\n}\n\nexport const _testOnly = {\n normalizeCandidatePathForOutput,\n realpathForContainment,\n linkedFileResolvedKey,\n collectTextReferences,\n collectItemTextReferences,\n cleanupPathToken,\n extractRawPathReferences,\n resolveDiscoveredFile,\n discoverReferencedFiles,\n};\n\n/**\n * Implements run files for the public runtime surface of this module.\n */\nexport async function runFiles(id: string, options: FilesCommandOptions, global: GlobalOptions): Promise<FilesResult> {\n const result: LinkedArtifactResult = await runLinkedArtifacts(id, options, global, {\n metadataKey: \"files\",\n op: \"files_add\",\n bareNoun: \"file\",\n supportsAppendStable: true,\n });\n return renameArtifactsResultKey(result, \"files\") as unknown as FilesResult;\n}\n\n/**\n * Implements run files discover for the public runtime surface of this module.\n */\nexport async function runFilesDiscover(\n id: string,\n options: FilesDiscoverOptions,\n global: GlobalOptions,\n): Promise<FilesDiscoverResult> {\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 located = await locateItem(pmRoot, id, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);\n /* c8 ignore next -- not-found behavior is validated by CLI integration coverage. */\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 candidates = await discoverReferencedFiles(loaded.document, process.cwd());\n const addableCandidates = candidates.filter((candidate) => candidate.status === \"addable\");\n const skippedExisting = candidates.filter((candidate) => candidate.status === \"already_linked\");\n const requestedApply = options.apply === true;\n const note = options.note?.trim() || \"discovered from item text\";\n\n if (!requestedApply || addableCandidates.length === 0) {\n const files = loaded.document.metadata.files ?? [];\n return {\n id: located.id,\n files,\n changed: false,\n apply: requestedApply,\n count: files.length,\n candidate_count: candidates.length,\n addable_count: addableCandidates.length,\n added_count: 0,\n skipped_existing_count: skippedExisting.length,\n candidates,\n added: [],\n skipped_existing: skippedExisting,\n };\n }\n\n const author = resolveAuthor(options.author, settings.author_default);\n const discoveredAdds: LinkedFile[] = addableCandidates.map((candidate) => ({\n path: candidate.path,\n scope: candidate.scope,\n note,\n }));\n const result = await mutateItem({\n pmRoot,\n settings,\n id,\n op: \"files_discover\",\n author,\n message: options.message ?? \"Discover referenced file links\",\n force: options.force,\n mutate(document) {\n const next = [...(document.metadata.files ?? [])];\n const existingResolvedKeys = new Set(next.map((entry) => linkedFileResolvedKey(entry, process.cwd())));\n const appliedAdds: LinkedFile[] = [];\n for (const add of discoveredAdds) {\n const resolvedKey = linkedFileResolvedKey(add, process.cwd());\n /* c8 ignore next -- duplicate-key race paths are exercised in broader CLI race tests. */\n if (existingResolvedKeys.has(resolvedKey)) {\n continue;\n }\n next.push(add);\n existingResolvedKeys.add(resolvedKey);\n appliedAdds.push(add);\n }\n const deduped = dedupeLinkedArtifacts(next);\n /* c8 ignore next -- appendStable branch is covered through runFiles command contract tests. */\n const normalized = options.appendStable ? deduped : sortLinkedArtifacts(deduped);\n if (normalized.length > 0) {\n document.metadata.files = normalized;\n } else {\n delete document.metadata.files;\n }\n return {\n /* c8 ignore next -- no-op mutation responses may emit empty changedFields for skipped discover batches. */\n changedFields: appliedAdds.length > 0 ? [\"files\"] : [],\n /* c8 ignore next -- warning emission is exercised by race-aware integration tests. */\n warnings: appliedAdds.length !== discoveredAdds.length ? [`files_discover_skipped_existing:${discoveredAdds.length - appliedAdds.length}`] : [],\n };\n },\n });\n\n const files = result.item.files ?? [];\n const addedResolvedKeys = new Set(discoveredAdds.map((entry) => linkedFileResolvedKey(entry, process.cwd())));\n const added = files.filter((entry) => addedResolvedKeys.has(linkedFileResolvedKey(entry, process.cwd())));\n return {\n id: result.item.id,\n files,\n changed: added.length > 0,\n apply: true,\n count: files.length,\n candidate_count: candidates.length,\n addable_count: addableCandidates.length,\n added_count: added.length,\n skipped_existing_count: skippedExisting.length,\n candidates,\n added,\n skipped_existing: skippedExisting,\n };\n}\n"],"names":["files"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,OAAO,QAAQ;AACf,OAAO,UAAU;AA4GjB,SAAS,gCAAgC,OAAa;AACpD,SAAO,oBAAoB,KAAK,UAAU,KAAK,CAAC;AAClD;AAEA,eAAe,uBAAuB,WAAiB;AACrD,MAAI;AACF,WAAO,MAAM,GAAG,SAAS,SAAS;EACpC,QAAQ;AACN,WAAO,KAAK,QAAQ,SAAS;EAC/B;AACF;AAEA,SAAS,sBAAsB,YAAgD,aAAmB;AAChG,QAAM,eAAe,KAAK,WAAW,WAAW,IAAI,IAChD,KAAK,QAAQ,WAAW,IAAI,IAC5B,KAAK,QAAQ,aAAa,WAAW,IAAI;AAC7C,SAAO,GAAG,gCAAgC,YAAY,CAAC,KAAK,WAAW,KAAK;AAC9E;AAEA,SAAS,sBAAsB,OAAgB,WAAmB,YAA2B;AAC3F,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,UAAU,MAAM,KAAI;AAC1B,QAAI,QAAQ,SAAS,GAAG;AACtB,iBAAW,KAAK,EAAE,OAAO,WAAW,OAAO,QAAO,CAAE;IACtD;AACA;EACF;AACA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,UAAM,QAAQ,CAAC,OAAO,UAAU,sBAAsB,OAAO,GAAG,SAAS,IAAI,KAAK,KAAK,UAAU,CAAC;AAClG;EACF;AACA,MAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC/C,eAAW,CAAC,KAAK,MAAM,KAAK,OAAO,QAAQ,KAAK,GAAG;AAEjD,4BAAsB,QAAQ,YAAY,GAAG,SAAS,IAAI,GAAG,KAAK,KAAK,UAAU;IACnF;EACF;AACF;AAEA,SAAS,0BAA0B,UAAsB;AACvD,QAAM,aAA8B,CAAA;AACpC,wBAAsB,SAAS,UAAU,YAAY,UAAU;AAC/D,wBAAsB,SAAS,MAAM,QAAQ,UAAU;AACvD,SAAO;AACT;AAEA,SAAS,iBAAiB,OAAa;AACrC,MAAI,OAAO,MAAM,KAAI;AACrB,SAAO,KAAK,QAAQ,gBAAgB,EAAE;AACtC,SAAO,KAAK,QAAQ,qBAAqB,EAAE;AAC3C,SAAO,KAAK,QAAQ,UAAU,EAAE;AAChC,SAAO,KAAK,QAAQ,uBAAuB,EAAE;AAC7C,SAAO,KAAK,QAAQ,UAAU,EAAE;AAChC,SAAO;AACT;AAEA,SAAS,yBAAyB,YAA2B;AAC3D,QAAM,gBAAoC,CAAA;AAC1C,QAAM,kBAAkB;AACxB,QAAM,kBACJ;AACF,aAAW,aAAa,YAAY;AAClC,UAAM,cAAc,oBAAI,IAAG;AAC3B,eAAW,WAAW,CAAC,iBAAiB,eAAe,GAAG;AACxD,cAAQ,YAAY;AACpB,iBAAW,SAAS,UAAU,MAAM,SAAS,OAAO,GAAG;AAErD,cAAM,QAAQ,iBAAiB,MAAM,CAAC,KAAK,EAAE;AAC7C,YAAI,CAAC,SAAS,YAAY,IAAI,KAAK,GAAG;AACpC;QACF;AACA,oBAAY,IAAI,KAAK;AACrB,sBAAc,KAAK,EAAE,OAAO,UAAU,OAAO,OAAO,MAAK,CAAE;MAC7D;IACF;EACF;AACA,SAAO;AACT;AAEA,eAAe,sBACb,SACA,aAAmB;AAEnB,QAAM,eAAe,KAAK,WAAW,OAAO,IAAI,KAAK,QAAQ,OAAO,IAAI,KAAK,QAAQ,aAAa,OAAO;AACzG,MAAI;AACJ,MAAI;AACF,YAAQ,MAAM,GAAG,KAAK,YAAY;EACpC,QAAQ;AACN,WAAO;EACT;AACA,MAAI,CAAC,MAAM,OAAM,GAAI;AACnB,WAAO;EACT;AACA,QAAM,CAAC,sBAAsB,qBAAqB,IAAI,MAAM,QAAQ,IAAI;IACtE,uBAAuB,WAAW;IAClC,uBAAuB,YAAY;GACpC;AACD,MAAI,sBAAsB,sBAAsB,qBAAqB,GAAG;AACtE,UAAM,eAAe,KAAK,SAAS,sBAAsB,qBAAqB;AAC9E,QAAI,CAAC,gBAAgB,aAAa,WAAW,IAAI,KAAK,KAAK,WAAW,YAAY,GAAG;AACnF,aAAO;IACT;AACA,WAAO;MACL,MAAM,gCAAgC,YAAY;MAClD,OAAO;;EAEX;AACA,SAAO;IACL,MAAM,gCAAgC,YAAY;IAClD,OAAO;;AAEX;AAEA,eAAe,wBAAwB,UAAwB,aAAmB;AAChF,QAAM,uBAAuB,IAAI,KAAK,SAAS,SAAS,SAAS,CAAA,GAAI,IAAI,CAAC,UAAU,sBAAsB,OAAO,WAAW,CAAC,CAAC;AAC9H,QAAM,UAAU,oBAAI,IAAG;AAUvB,QAAM,gBAAgB,yBAAyB,0BAA0B,QAAQ,CAAC;AAClF,aAAW,aAAa,eAAe;AACrC,UAAM,WAAW,MAAM,sBAAsB,UAAU,OAAO,WAAW;AACzE,QAAI,CAAC,UAAU;AACb;IACF;AACA,UAAM,MAAM,sBAAsB,UAAU,WAAW;AACvD,UAAM,WAAW,QAAQ,IAAI,GAAG,KAAK;MACnC,MAAM,SAAS;MACf,OAAO,SAAS;MAChB,cAAc,oBAAI,IAAG;MACrB,eAAe,oBAAI,IAAG;MACtB,aAAa;;AAEf,aAAS,aAAa,IAAI,UAAU,KAAK;AACzC,aAAS,cAAc,IAAI,UAAU,KAAK;AAC1C,aAAS,eAAe;AACxB,YAAQ,IAAI,KAAK,QAAQ;EAC3B;AACA,SAAO,CAAC,GAAG,QAAQ,QAAO,CAAE,EACzB,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO;IACtB,MAAM,MAAM;IACZ,OAAO,MAAM;IACb,QAAQ,qBAAqB,IAAI,GAAG,IAAK,mBAA8B;IACvE,cAAc,MAAM;IACpB,eAAe,CAAC,GAAG,MAAM,YAAY,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC;IACtF,gBAAgB,CAAC,GAAG,MAAM,aAAa,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC;IACxF,EACD,KAAK,CAAC,MAAM,UAAS;AACpB,UAAM,WAAW,KAAK,OAAO,cAAc,MAAM,MAAM;AACvD,QAAI,aAAa;AAAG,aAAO;AAC3B,UAAM,SAAS,KAAK,KAAK,cAAc,MAAM,IAAI;AACjD,QAAI,WAAW;AAAG,aAAO;AAEzB,WAAO,KAAK,MAAM,cAAc,MAAM,KAAK;EAC7C,CAAC;AACL;AAEO,IAAM,YAAY;EACvB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAMF,eAAsB,SAAS,IAAY,SAA8B,QAAqB;AAC5F,QAAM,SAA+B,MAAM,mBAAmB,IAAI,SAAS,QAAQ;IACjF,aAAa;IACb,IAAI;IACJ,UAAU;IACV,sBAAsB;GACvB;AACD,SAAO,yBAAyB,QAAQ,OAAO;AACjD;AAKA,eAAsB,iBACpB,IACA,SACA,QAAqB;AAErB,QAAM,SAAS,cAAc,QAAQ,IAAG,GAAI,OAAO,IAAI;AACvD,MAAI,CAAE,MAAM,WAAW,gBAAgB,MAAM,CAAC,GAAI;AAChD,UAAM,IAAI,WAAW,iCAAiC,MAAM,wBAAwB,UAAU,SAAS;EACzG;AACA,QAAM,WAAW,MAAM,aAAa,MAAM;AAC1C,QAAM,eAAe,wBAAwB,UAAU,gCAA+B,CAAE;AACxF,QAAM,UAAU,MAAM,WAAW,QAAQ,IAAI,SAAS,WAAW,SAAS,aAAa,aAAa,cAAc;AAElH,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,WAAW,QAAQ,EAAE,cAAc,UAAU,SAAS;EAClE;AACA,QAAM,SAAS,MAAM,gBAAgB,SAAS,EAAE,QAAQ,SAAS,OAAM,CAAE;AACzE,QAAM,aAAa,MAAM,wBAAwB,OAAO,UAAU,QAAQ,IAAG,CAAE;AAC/E,QAAM,oBAAoB,WAAW,OAAO,CAAC,cAAc,UAAU,WAAW,SAAS;AACzF,QAAM,kBAAkB,WAAW,OAAO,CAAC,cAAc,UAAU,WAAW,gBAAgB;AAC9F,QAAM,iBAAiB,QAAQ,UAAU;AACzC,QAAM,OAAO,QAAQ,MAAM,KAAI,KAAM;AAErC,MAAI,CAAC,kBAAkB,kBAAkB,WAAW,GAAG;AACrD,UAAMA,SAAQ,OAAO,SAAS,SAAS,SAAS,CAAA;AAChD,WAAO;MACL,IAAI,QAAQ;MACZ,OAAAA;MACA,SAAS;MACT,OAAO;MACP,OAAOA,OAAM;MACb,iBAAiB,WAAW;MAC5B,eAAe,kBAAkB;MACjC,aAAa;MACb,wBAAwB,gBAAgB;MACxC;MACA,OAAO,CAAA;MACP,kBAAkB;;EAEtB;AAEA,QAAM,SAAS,cAAc,QAAQ,QAAQ,SAAS,cAAc;AACpE,QAAM,iBAA+B,kBAAkB,IAAI,CAAC,eAAe;IACzE,MAAM,UAAU;IAChB,OAAO,UAAU;IACjB;IACA;AACF,QAAM,SAAS,MAAM,WAAW;IAC9B;IACA;IACA;IACA,IAAI;IACJ;IACA,SAAS,QAAQ,WAAW;IAC5B,OAAO,QAAQ;IACf,OAAO,UAAQ;AACb,YAAM,OAAO,CAAC,GAAI,SAAS,SAAS,SAAS,CAAA,CAAG;AAChD,YAAM,uBAAuB,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,sBAAsB,OAAO,QAAQ,IAAG,CAAE,CAAC,CAAC;AACrG,YAAM,cAA4B,CAAA;AAClC,iBAAW,OAAO,gBAAgB;AAChC,cAAM,cAAc,sBAAsB,KAAK,QAAQ,IAAG,CAAE;AAE5D,YAAI,qBAAqB,IAAI,WAAW,GAAG;AACzC;QACF;AACA,aAAK,KAAK,GAAG;AACb,6BAAqB,IAAI,WAAW;AACpC,oBAAY,KAAK,GAAG;MACtB;AACA,YAAM,UAAU,sBAAsB,IAAI;AAE1C,YAAM,aAAa,QAAQ,eAAe,UAAU,oBAAoB,OAAO;AAC/E,UAAI,WAAW,SAAS,GAAG;AACzB,iBAAS,SAAS,QAAQ;MAC5B,OAAO;AACL,eAAO,SAAS,SAAS;MAC3B;AACA,aAAO;;QAEL,eAAe,YAAY,SAAS,IAAI,CAAC,OAAO,IAAI,CAAA;;QAEpD,UAAU,YAAY,WAAW,eAAe,SAAS,CAAC,mCAAmC,eAAe,SAAS,YAAY,MAAM,EAAE,IAAI,CAAA;;IAEjJ;GACD;AAED,QAAM,QAAQ,OAAO,KAAK,SAAS,CAAA;AACnC,QAAM,oBAAoB,IAAI,IAAI,eAAe,IAAI,CAAC,UAAU,sBAAsB,OAAO,QAAQ,IAAG,CAAE,CAAC,CAAC;AAC5G,QAAM,QAAQ,MAAM,OAAO,CAAC,UAAU,kBAAkB,IAAI,sBAAsB,OAAO,QAAQ,IAAG,CAAE,CAAC,CAAC;AACxG,SAAO;IACL,IAAI,OAAO,KAAK;IAChB;IACA,SAAS,MAAM,SAAS;IACxB,OAAO;IACP,OAAO,MAAM;IACb,iBAAiB,WAAW;IAC5B,eAAe,kBAAkB;IACjC,aAAa,MAAM;IACnB,wBAAwB,gBAAgB;IACxC;IACA;IACA,kBAAkB;;AAEtB","debugId":"a23df4ca-1068-5387-aa13-5d0181f1cc3d"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../cli/commands/files.ts"],"sourcesContent":["/**\n * @module cli/commands/files\n *\n * Implements the pm files command surface and its agent-facing runtime behavior.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { getActiveExtensionRegistrations } from \"../../core/extensions/index.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.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 { 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 { resolveAuthor } from \"../../core/shared/author.js\";\nimport { isPathWithinDirectory } from \"../../core/fs/path-utils.js\";\nimport type { ItemDocument, LinkedFile, LinkScope } from \"../../types/index.js\";\nimport {\n dedupeLinkedArtifacts,\n normalizeLinkedPath,\n renameArtifactsResultKey,\n runLinkedArtifacts,\n sortLinkedArtifacts,\n type LinkedArtifactResult,\n type LinkedPathAuditEntry,\n type LinkedPathValidation,\n} from \"./linked-artifacts.js\";\n\n/**\n * Documents the files command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface FilesCommandOptions {\n add?: string[];\n addGlob?: string[];\n remove?: string[];\n migrate?: string[];\n /** GH-170 (pm-pfnx): standalone note applied to every --add/--add-glob link in this invocation. */\n note?: string;\n list?: boolean;\n appendStable?: boolean;\n validatePaths?: boolean;\n audit?: boolean;\n author?: string;\n message?: string;\n force?: boolean;\n}\n\n/**\n * Documents the files discover options payload exchanged by command, SDK, and package integrations.\n */\nexport interface FilesDiscoverOptions {\n apply?: boolean;\n appendStable?: boolean;\n note?: string;\n author?: string;\n message?: string;\n force?: boolean;\n}\n\n/**\n * Documents the files discovery candidate payload exchanged by command, SDK, and package integrations.\n */\nexport interface FilesDiscoveryCandidate {\n path: string;\n scope: LinkScope;\n status: \"addable\" | \"already_linked\";\n source_count: number;\n source_fields: string[];\n original_paths: string[];\n}\n\n/**\n * Documents the files result payload exchanged by command, SDK, and package integrations.\n */\nexport interface FilesResult {\n id: string;\n files: LinkedFile[];\n changed: boolean;\n count: number;\n migrations_applied?: number;\n validation?: LinkedPathValidation;\n audit?: LinkedPathAuditEntry[];\n}\n\n/**\n * Documents the files discover result payload exchanged by command, SDK, and package integrations.\n */\nexport interface FilesDiscoverResult {\n id: string;\n files: LinkedFile[];\n changed: boolean;\n apply: boolean;\n count: number;\n candidate_count: number;\n addable_count: number;\n added_count: number;\n skipped_existing_count: number;\n candidates: FilesDiscoveryCandidate[];\n added: LinkedFile[];\n skipped_existing: FilesDiscoveryCandidate[];\n}\n\ninterface TextReference {\n field: string;\n value: string;\n}\n\ninterface RawPathReference {\n field: string;\n value: string;\n}\n\nfunction normalizeCandidatePathForOutput(value: string): string {\n return normalizeLinkedPath(path.normalize(value));\n}\n\nasync function realpathForContainment(inputPath: string): Promise<string> {\n try {\n return await fs.realpath(inputPath);\n } catch {\n return path.resolve(inputPath);\n }\n}\n\nfunction linkedFileResolvedKey(linkedFile: Pick<LinkedFile, \"path\" | \"scope\">, projectRoot: string): string {\n const resolvedPath = path.isAbsolute(linkedFile.path)\n ? path.resolve(linkedFile.path)\n : path.resolve(projectRoot, linkedFile.path);\n return `${normalizeCandidatePathForOutput(resolvedPath)}::${linkedFile.scope}`;\n}\n\nfunction collectTextReferences(value: unknown, fieldPath: string, references: TextReference[]): void {\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (trimmed.length > 0) {\n references.push({ field: fieldPath, value: trimmed });\n }\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((entry, index) => collectTextReferences(entry, `${fieldPath}[${index}]`, references));\n return;\n }\n if (typeof value === \"object\" && value !== null) {\n for (const [key, nested] of Object.entries(value)) {\n /* c8 ignore next -- root-level object traversal always carries a non-empty field path in current callers. */\n collectTextReferences(nested, fieldPath ? `${fieldPath}.${key}` : key, references);\n }\n }\n}\n\nfunction collectItemTextReferences(document: ItemDocument): TextReference[] {\n const references: TextReference[] = [];\n collectTextReferences(document.metadata, \"metadata\", references);\n collectTextReferences(document.body, \"body\", references);\n return references;\n}\n\nfunction cleanupPathToken(value: string): string {\n let next = value.trim();\n next = next.replace(/^[`\"'<([{]+/u, \"\");\n next = next.replace(/[`\"'>)\\]},;!?]+$/u, \"\");\n next = next.replace(/[.]+$/u, \"\");\n next = next.replace(/:(?:\\d+)(?::\\d+)?$/u, \"\");\n next = next.replace(/[.]+$/u, \"\");\n return next;\n}\n\nfunction extractRawPathReferences(references: TextReference[]): RawPathReference[] {\n const rawReferences: RawPathReference[] = [];\n const absolutePattern = /(?:[A-Za-z]:[\\\\/]|\\/)[^\\s\"'`<>()[\\]{},;]+/gu;\n const relativePattern =\n /(?:\\.{1,2}[\\\\/])?(?:(?:[A-Za-z0-9_.@-]+[\\\\/])+[A-Za-z0-9_.@-]+|[A-Za-z0-9_.@-]+\\.[A-Za-z0-9][A-Za-z0-9._-]*)/gu;\n for (const reference of references) {\n const seenInField = new Set<string>();\n for (const pattern of [absolutePattern, relativePattern]) {\n pattern.lastIndex = 0;\n for (const match of reference.value.matchAll(pattern)) {\n /* c8 ignore next -- RegExp match arrays always expose capture [0]. */\n const token = cleanupPathToken(match[0] ?? \"\");\n if (!token || seenInField.has(token)) {\n continue;\n }\n seenInField.add(token);\n rawReferences.push({ field: reference.field, value: token });\n }\n }\n }\n return rawReferences;\n}\n\nasync function resolveDiscoveredFile(\n rawPath: string,\n projectRoot: string,\n): Promise<Pick<LinkedFile, \"path\" | \"scope\"> | undefined> {\n const absolutePath = path.isAbsolute(rawPath) ? path.resolve(rawPath) : path.resolve(projectRoot, rawPath);\n let stats;\n try {\n stats = await fs.stat(absolutePath);\n } catch {\n return undefined;\n }\n if (!stats.isFile()) {\n return undefined;\n }\n const [canonicalProjectRoot, canonicalAbsolutePath] = await Promise.all([\n realpathForContainment(projectRoot),\n realpathForContainment(absolutePath),\n ]);\n if (isPathWithinDirectory(canonicalProjectRoot, canonicalAbsolutePath)) {\n const relativePath = path.relative(canonicalProjectRoot, canonicalAbsolutePath);\n if (!relativePath || relativePath.startsWith(\"..\") || path.isAbsolute(relativePath)) {\n return undefined;\n }\n return {\n path: normalizeCandidatePathForOutput(relativePath),\n scope: \"project\",\n };\n }\n return {\n path: normalizeCandidatePathForOutput(absolutePath),\n scope: \"global\",\n };\n}\n\nasync function discoverReferencedFiles(document: ItemDocument, projectRoot: string): Promise<FilesDiscoveryCandidate[]> {\n const existingResolvedKeys = new Set((document.metadata.files ?? []).map((entry) => linkedFileResolvedKey(entry, projectRoot)));\n const grouped = new Map<\n string,\n {\n path: string;\n scope: LinkScope;\n sourceFields: Set<string>;\n originalPaths: Set<string>;\n sourceCount: number;\n }\n >();\n const rawReferences = extractRawPathReferences(collectItemTextReferences(document));\n for (const reference of rawReferences) {\n const resolved = await resolveDiscoveredFile(reference.value, projectRoot);\n if (!resolved) {\n continue;\n }\n const key = linkedFileResolvedKey(resolved, projectRoot);\n const existing = grouped.get(key) ?? {\n path: resolved.path,\n scope: resolved.scope,\n sourceFields: new Set<string>(),\n originalPaths: new Set<string>(),\n sourceCount: 0,\n };\n existing.sourceFields.add(reference.field);\n existing.originalPaths.add(reference.value);\n existing.sourceCount += 1;\n grouped.set(key, existing);\n }\n return [...grouped.entries()]\n .map(([key, entry]) => ({\n path: entry.path,\n scope: entry.scope,\n status: existingResolvedKeys.has(key) ? (\"already_linked\" as const) : (\"addable\" as const),\n source_count: entry.sourceCount,\n source_fields: [...entry.sourceFields].sort((left, right) => left.localeCompare(right)),\n original_paths: [...entry.originalPaths].sort((left, right) => left.localeCompare(right)),\n }))\n .sort((left, right) => {\n const byStatus = left.status.localeCompare(right.status);\n if (byStatus !== 0) return byStatus;\n const byPath = left.path.localeCompare(right.path);\n if (byPath !== 0) return byPath;\n /* c8 ignore next -- path+status collisions are uncommon in deterministic fixtures. */\n return left.scope.localeCompare(right.scope);\n });\n}\n\nexport const _testOnly = {\n normalizeCandidatePathForOutput,\n realpathForContainment,\n linkedFileResolvedKey,\n collectTextReferences,\n collectItemTextReferences,\n cleanupPathToken,\n extractRawPathReferences,\n resolveDiscoveredFile,\n discoverReferencedFiles,\n};\n\n/**\n * Implements run files for the public runtime surface of this module.\n */\nexport async function runFiles(id: string, options: FilesCommandOptions, global: GlobalOptions): Promise<FilesResult> {\n const result: LinkedArtifactResult = await runLinkedArtifacts(id, options, global, {\n metadataKey: \"files\",\n op: \"files_add\",\n bareNoun: \"file\",\n supportsAppendStable: true,\n });\n return renameArtifactsResultKey(result, \"files\") as unknown as FilesResult;\n}\n\n/**\n * Implements run files discover for the public runtime surface of this module.\n */\nexport async function runFilesDiscover(\n id: string,\n options: FilesDiscoverOptions,\n global: GlobalOptions,\n): Promise<FilesDiscoverResult> {\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 located = await locateItem(pmRoot, id, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);\n /* c8 ignore next -- not-found behavior is validated by CLI integration coverage. */\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 candidates = await discoverReferencedFiles(loaded.document, process.cwd());\n const addableCandidates = candidates.filter((candidate) => candidate.status === \"addable\");\n const skippedExisting = candidates.filter((candidate) => candidate.status === \"already_linked\");\n const requestedApply = options.apply === true;\n const note = options.note?.trim() || \"discovered from item text\";\n\n if (!requestedApply || addableCandidates.length === 0) {\n const files = loaded.document.metadata.files ?? [];\n return {\n id: located.id,\n files,\n changed: false,\n apply: requestedApply,\n count: files.length,\n candidate_count: candidates.length,\n addable_count: addableCandidates.length,\n added_count: 0,\n skipped_existing_count: skippedExisting.length,\n candidates,\n added: [],\n skipped_existing: skippedExisting,\n };\n }\n\n const author = resolveAuthor(options.author, settings.author_default);\n const discoveredAdds: LinkedFile[] = addableCandidates.map((candidate) => ({\n path: candidate.path,\n scope: candidate.scope,\n note,\n }));\n const result = await mutateItem({\n pmRoot,\n settings,\n id,\n op: \"files_discover\",\n author,\n message: options.message ?? \"Discover referenced file links\",\n force: options.force,\n mutate(document) {\n const next = [...(document.metadata.files ?? [])];\n const existingResolvedKeys = new Set(next.map((entry) => linkedFileResolvedKey(entry, process.cwd())));\n const appliedAdds: LinkedFile[] = [];\n for (const add of discoveredAdds) {\n const resolvedKey = linkedFileResolvedKey(add, process.cwd());\n /* c8 ignore next -- duplicate-key race paths are exercised in broader CLI race tests. */\n if (existingResolvedKeys.has(resolvedKey)) {\n continue;\n }\n next.push(add);\n existingResolvedKeys.add(resolvedKey);\n appliedAdds.push(add);\n }\n const deduped = dedupeLinkedArtifacts(next);\n /* c8 ignore next -- appendStable branch is covered through runFiles command contract tests. */\n const normalized = options.appendStable ? deduped : sortLinkedArtifacts(deduped);\n if (normalized.length > 0) {\n document.metadata.files = normalized;\n } else {\n delete document.metadata.files;\n }\n return {\n /* c8 ignore next -- no-op mutation responses may emit empty changedFields for skipped discover batches. */\n changedFields: appliedAdds.length > 0 ? [\"files\"] : [],\n /* c8 ignore next -- warning emission is exercised by race-aware integration tests. */\n warnings: appliedAdds.length !== discoveredAdds.length ? [`files_discover_skipped_existing:${discoveredAdds.length - appliedAdds.length}`] : [],\n };\n },\n });\n\n const files = result.item.files ?? [];\n const addedResolvedKeys = new Set(discoveredAdds.map((entry) => linkedFileResolvedKey(entry, process.cwd())));\n const added = files.filter((entry) => addedResolvedKeys.has(linkedFileResolvedKey(entry, process.cwd())));\n return {\n id: result.item.id,\n files,\n changed: added.length > 0,\n apply: true,\n count: files.length,\n candidate_count: candidates.length,\n addable_count: addableCandidates.length,\n added_count: added.length,\n skipped_existing_count: skippedExisting.length,\n candidates,\n added,\n skipped_existing: skippedExisting,\n };\n}\n"],"names":["files"],"mappings":"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","debugId":"e9df2560-179f-5612-abb9-6b4a3417a34f"}
|
|
@@ -2,16 +2,16 @@ import {
|
|
|
2
2
|
executeHistoryRewrite,
|
|
3
3
|
resolveHistorySubject,
|
|
4
4
|
writeHistoryRawWithRollback
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-EIUBK2LT.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveAuthor
|
|
8
8
|
} from "./chunk-WW4E2DC3.js";
|
|
9
9
|
import {
|
|
10
10
|
lifecycleClassifierFromStatusRegistry
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-FN6SB4HU.js";
|
|
12
12
|
import {
|
|
13
13
|
readHistoryEntries
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-M62RO3XK.js";
|
|
15
15
|
import {
|
|
16
16
|
cloneEmptyReplayDocument,
|
|
17
17
|
historyEntriesToRaw,
|
|
@@ -20,22 +20,18 @@ import {
|
|
|
20
20
|
toReplayDocument,
|
|
21
21
|
tryApplyReplayPatch,
|
|
22
22
|
verifyHistoryChain
|
|
23
|
-
} from "./chunk-
|
|
24
|
-
import {
|
|
25
|
-
createHistoryEntry,
|
|
26
|
-
listAllFrontMatterLight,
|
|
27
|
-
readLocatedItem
|
|
28
|
-
} from "./chunk-5VAA4YHR.js";
|
|
29
|
-
import {
|
|
30
|
-
nowIso
|
|
31
|
-
} from "./chunk-FLZSGSQR.js";
|
|
23
|
+
} from "./chunk-E3YQFSFE.js";
|
|
32
24
|
import {
|
|
33
25
|
PmCliError,
|
|
26
|
+
createHistoryEntry,
|
|
34
27
|
getActiveExtensionRegistrations,
|
|
28
|
+
listAllFrontMatterLight,
|
|
29
|
+
nowIso,
|
|
30
|
+
readLocatedItem,
|
|
35
31
|
readSettings,
|
|
36
32
|
runActiveOnReadHooks,
|
|
37
33
|
runActiveOnWriteHooks
|
|
38
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-YNCFP5AR.js";
|
|
39
35
|
import {
|
|
40
36
|
EXIT_CODE,
|
|
41
37
|
getSettingsPath,
|
|
@@ -44,7 +40,7 @@ import {
|
|
|
44
40
|
resolveItemTypeRegistry,
|
|
45
41
|
resolvePmRoot,
|
|
46
42
|
resolveRuntimeStatusRegistry
|
|
47
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-LCFJ7XAM.js";
|
|
48
44
|
|
|
49
45
|
// dist/cli/commands/history-compact.js
|
|
50
46
|
import fs from "node:fs/promises";
|
|
@@ -560,4 +556,4 @@ export {
|
|
|
560
556
|
assertHistoryCompactTarget,
|
|
561
557
|
runHistoryCompactBulk
|
|
562
558
|
};
|
|
563
|
-
//# sourceMappingURL=chunk-
|
|
559
|
+
//# sourceMappingURL=chunk-GTM5HQL4.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../../cli/commands/history-compact.ts", "../../../../../../../../core/history/history-compact-bulk.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * @module cli/commands/history-compact\n *\n * Implements the pm history compact command surface and its agent-facing runtime behavior.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { createHistoryEntry } from \"../../core/history/history.js\";\nimport {\n selectHistoryCompactBulkTargets,\n type HistoryCompactBulkCandidate,\n type HistoryCompactBulkSkipReason,\n type HistoryCompactScope,\n} from \"../../core/history/history-compact-bulk.js\";\nimport { executeHistoryRewrite, writeHistoryRawWithRollback } from \"../../core/history/history-rewrite.js\";\nimport {\n cloneEmptyReplayDocument,\n historyEntriesToRaw,\n replayHash,\n replayToItemDocument,\n toReplayDocument,\n tryApplyReplayPatch,\n verifyHistoryChain,\n type ReplayDocument,\n} from \"../../core/history/replay.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { lifecycleClassifierFromStatusRegistry } from \"../../core/governance/metadata-coverage.js\";\nimport { resolveRuntimeStatusRegistry } from \"../../core/schema/runtime-schema.js\";\nimport { listAllFrontMatterLight } from \"../../core/store/item-store.js\";\nimport { pathExists, readFileIfExists } from \"../../core/fs/fs-utils.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport {\n getActiveExtensionRegistrations,\n runActiveOnReadHooks,\n runActiveOnWriteHooks,\n} from \"../../core/extensions/index.js\";\nimport { readLocatedItem } from \"../../core/store/item-store.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport { resolveAuthor } from \"../../core/shared/author.js\";\nimport type { HistoryEntry } from \"../../types/index.js\";\nimport { readHistoryEntries } from \"./history.js\";\nimport { resolveHistorySubject } from \"./history-redact.js\";\n\n/**\n * Documents the history compact command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistoryCompactCommandOptions {\n before?: string;\n dryRun?: boolean;\n author?: string;\n message?: string;\n force?: boolean;\n}\n\ntype HistoryCompactBoundaryKind = \"default\" | \"version\" | \"timestamp\";\n\ninterface HistoryCompactBoundary {\n kind: HistoryCompactBoundaryKind;\n raw: string | null;\n compactCount: number;\n retainedCount: number;\n}\n\ninterface HistoryCompactCurrentItem {\n loadedItem: Awaited<ReturnType<typeof readLocatedItem>> | null;\n currentItemRawBeforeLock: string | null;\n matchedChainBefore: boolean | null;\n}\n\n/**\n * Documents the history compact result payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistoryCompactResult {\n id: string;\n dry_run: boolean;\n changed: boolean;\n compact_boundary: {\n kind: HistoryCompactBoundaryKind;\n before: string | null;\n entries_compacted: number;\n entries_retained: number;\n first_retained_entry: number | null;\n };\n history: {\n path: string;\n entries_scanned: number;\n entries_after: number;\n baseline_entry_added: boolean;\n audit_entry_added: boolean;\n verify_ok: boolean;\n verify_errors: string[];\n };\n item: {\n exists: boolean;\n path: string | null;\n matched_chain_before: boolean | null;\n };\n warnings: string[];\n generated_at: string;\n}\n\nfunction parseBeforeBoundary(before: string | undefined, entries: HistoryEntry[]): HistoryCompactBoundary {\n if (before === undefined) {\n return {\n kind: \"default\",\n raw: null,\n compactCount: entries.length,\n retainedCount: 0,\n };\n }\n\n const raw = before.trim();\n if (raw.length === 0) {\n throw new PmCliError(\"history-compact --before requires a non-empty value.\", EXIT_CODE.USAGE);\n }\n\n if (/^\\d+$/.test(raw)) {\n const version = Number.parseInt(raw, 10);\n if (!Number.isSafeInteger(version) || version < 1 || version > entries.length + 1) {\n throw new PmCliError(\n `history-compact --before version must be between 1 and ${entries.length + 1}.`,\n EXIT_CODE.USAGE,\n );\n }\n const compactCount = Math.max(0, Math.min(entries.length, version - 1));\n return {\n kind: \"version\",\n raw,\n compactCount,\n retainedCount: entries.length - compactCount,\n };\n }\n\n const beforeTs = Date.parse(raw);\n if (!Number.isFinite(beforeTs)) {\n throw new PmCliError(\n `Invalid history-compact --before value \"${before}\". Use a version number or ISO timestamp.`,\n EXIT_CODE.USAGE,\n );\n }\n\n let compactCount = 0;\n for (const [index, entry] of entries.entries()) {\n const entryTs = Date.parse(entry.ts);\n if (!Number.isFinite(entryTs)) {\n throw new PmCliError(\n `History for this item contains invalid timestamp at entry ${index + 1}.`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n if (entryTs >= beforeTs) {\n break;\n }\n compactCount += 1;\n }\n\n return {\n kind: \"timestamp\",\n raw,\n compactCount,\n retainedCount: entries.length - compactCount,\n };\n}\n\nfunction applyHistoryPatch(current: ReplayDocument, entry: HistoryEntry, entryNumber: number): ReplayDocument {\n const result = tryApplyReplayPatch(current, entry.patch);\n if (!result.ok) {\n throw new PmCliError(\n `history-compact failed to apply patch at entry ${entryNumber} (op=${entry.op}): ${\n result.error instanceof Error ? result.error.message : String(result.error)\n }`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n return result.document;\n}\n\nfunction replayHistoryAndResolveCheckpoint(\n entries: HistoryEntry[],\n compactCount: number,\n): {\n checkpoint: ReplayDocument;\n finalReplay: ReplayDocument;\n} {\n let replay = cloneEmptyReplayDocument();\n let checkpoint = cloneEmptyReplayDocument();\n for (let index = 0; index < entries.length; index += 1) {\n const entry = entries[index];\n if (replayHash(replay) !== entry.before_hash) {\n throw new PmCliError(\n `history-compact detected before-hash drift at entry ${index + 1}; run pm history-repair first.`,\n EXIT_CODE.CONFLICT,\n );\n }\n replay = applyHistoryPatch(replay, entry, index + 1);\n if (replayHash(replay) !== entry.after_hash) {\n throw new PmCliError(\n `history-compact detected after-hash drift at entry ${index + 1}; run pm history-repair first.`,\n EXIT_CODE.CONFLICT,\n );\n }\n if (index + 1 === compactCount) {\n checkpoint = structuredClone(replay);\n }\n }\n return {\n checkpoint,\n finalReplay: replay,\n };\n}\n\nfunction reanchorRetainedEntries(\n retainedEntries: HistoryEntry[],\n seed: ReplayDocument,\n retainedEntryOffset: number,\n): {\n entries: HistoryEntry[];\n finalReplay: ReplayDocument;\n} {\n let replay = structuredClone(seed);\n const rewritten: HistoryEntry[] = [];\n for (const [index, entry] of retainedEntries.entries()) {\n const beforeHash = replayHash(replay);\n replay = applyHistoryPatch(replay, entry, retainedEntryOffset + index + 1);\n rewritten.push({\n ...entry,\n before_hash: beforeHash,\n after_hash: replayHash(replay),\n });\n }\n return {\n entries: rewritten,\n finalReplay: replay,\n };\n}\n\nasync function loadHistoryCompactCurrentItem(\n subject: Awaited<ReturnType<typeof resolveHistorySubject>>,\n settings: Awaited<ReturnType<typeof readSettings>>,\n historyEntries: HistoryEntry[],\n): Promise<HistoryCompactCurrentItem> {\n const loadedItem = subject.located ? await readLocatedItem(subject.located, { schema: settings.schema }) : null;\n if (!loadedItem) {\n return { loadedItem: null, currentItemRawBeforeLock: null, matchedChainBefore: null };\n }\n return {\n loadedItem,\n currentItemRawBeforeLock: loadedItem.raw,\n matchedChainBefore: replayHash(toReplayDocument(loadedItem.document)) === historyEntries[historyEntries.length - 1]?.after_hash,\n };\n}\n\nfunction buildHistoryCompactMessage(options: HistoryCompactCommandOptions, boundary: HistoryCompactBoundary): string {\n if (typeof options.message === \"string\" && options.message.trim().length > 0) {\n return options.message;\n }\n if (boundary.raw === null) {\n return `history-compact compacted full stream (${boundary.compactCount} entr${\n boundary.compactCount === 1 ? \"y\" : \"ies\"\n }).`;\n }\n return `history-compact compacted ${boundary.compactCount} entr${\n boundary.compactCount === 1 ? \"y\" : \"ies\"\n } before ${boundary.raw}.`;\n}\n\nfunction buildHistoryCompactBaselineMessage(boundary: HistoryCompactBoundary): string {\n if (boundary.raw === null) {\n return `history-compact baseline snapshot after compacting ${boundary.compactCount} entr${\n boundary.compactCount === 1 ? \"y\" : \"ies\"\n }.`;\n }\n return `history-compact baseline snapshot before ${boundary.raw}.`;\n}\n\nfunction buildHistoryCompactEntries(params: {\n historyEntries: HistoryEntry[];\n boundary: HistoryCompactBoundary;\n changed: boolean;\n dryRun: boolean;\n author: string;\n options: HistoryCompactCommandOptions;\n}): { rewrittenEntries: HistoryEntry[]; baselineEntryAdded: boolean; auditEntryAdded: boolean } {\n if (!params.changed) {\n return { rewrittenEntries: params.historyEntries, baselineEntryAdded: false, auditEntryAdded: false };\n }\n const { checkpoint, finalReplay } = replayHistoryAndResolveCheckpoint(params.historyEntries, params.boundary.compactCount);\n const retained = params.historyEntries.slice(params.boundary.compactCount);\n const reanchored = reanchorRetainedEntries(retained, checkpoint, params.boundary.compactCount);\n const baselineEntry = createHistoryEntry({\n nowIso: nowIso(),\n author: params.author,\n op: \"history_compact_baseline\",\n before: replayToItemDocument(cloneEmptyReplayDocument()),\n after: replayToItemDocument(checkpoint),\n message: buildHistoryCompactBaselineMessage(params.boundary),\n });\n const rewrittenEntries = [baselineEntry, ...reanchored.entries];\n if (!params.dryRun) {\n rewrittenEntries.push(\n createHistoryEntry({\n nowIso: nowIso(),\n author: params.author,\n op: \"history_compact\",\n before: replayToItemDocument(finalReplay),\n after: replayToItemDocument(finalReplay),\n message: buildHistoryCompactMessage(params.options, params.boundary),\n }),\n );\n }\n return { rewrittenEntries, baselineEntryAdded: true, auditEntryAdded: !params.dryRun };\n}\n\nasync function applyHistoryCompactRewrite(params: {\n pmRoot: string;\n subject: Awaited<ReturnType<typeof resolveHistorySubject>>;\n settings: Awaited<ReturnType<typeof readSettings>>;\n typeRegistry: ReturnType<typeof resolveItemTypeRegistry>;\n historyRawBeforeLock: string;\n currentItemRawBeforeLock: string | null;\n author: string;\n force: boolean | undefined;\n loadedItem: Awaited<ReturnType<typeof readLocatedItem>> | null;\n historyPath: string;\n rewrittenEntries: HistoryEntry[];\n}): Promise<string[]> {\n return executeHistoryRewrite({\n pmRoot: params.pmRoot,\n subject: params.subject,\n settings: params.settings,\n typeRegistry: params.typeRegistry,\n historyRawBeforeLock: params.historyRawBeforeLock,\n currentItemRawBeforeLock: params.currentItemRawBeforeLock,\n operation: \"history-compact\",\n author: params.author,\n force: params.force,\n itemDocument: params.loadedItem?.document ?? null,\n applyRewrite: async ({ historyRawUnderLock }) =>\n writeHistoryRawWithRollback({\n historyPath: params.historyPath,\n nextHistoryRaw: historyEntriesToRaw(params.rewrittenEntries),\n historyRawUnderLock,\n }),\n applyPostRewrite: async () =>\n runActiveOnWriteHooks({\n path: params.historyPath,\n scope: \"project\",\n op: \"history_compact:history\",\n }),\n });\n}\n\n/**\n * Implements run history compact for the public runtime surface of this module.\n */\nexport async function runHistoryCompact(\n id: string,\n options: HistoryCompactCommandOptions,\n global: GlobalOptions,\n): Promise<HistoryCompactResult> {\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\n const settings = await readSettings(pmRoot);\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const subject = await resolveHistorySubject(pmRoot, id, settings, typeRegistry.type_to_folder);\n const historyPath = subject.historyPath;\n const historyRawBeforeLock = await readFileIfExists(historyPath);\n if (historyRawBeforeLock === null) {\n throw new PmCliError(`No history stream exists for ${subject.id}.`, EXIT_CODE.NOT_FOUND);\n }\n const historyEntries = await readHistoryEntries(historyPath, subject.id);\n if (historyEntries.length === 0) {\n throw new PmCliError(`No history entries exist for ${subject.id}; nothing to compact.`, EXIT_CODE.USAGE);\n }\n\n const chainVerification = verifyHistoryChain(historyEntries);\n if (!chainVerification.ok) {\n throw new PmCliError(\n `history-compact requires a valid history chain (${chainVerification.errors.join(\", \")}). Run pm history-repair ${subject.id} first.`,\n EXIT_CODE.CONFLICT,\n );\n }\n\n const boundary = parseBeforeBoundary(options.before, historyEntries);\n const changed = boundary.compactCount > 0;\n const dryRun = Boolean(options.dryRun);\n const author = resolveAuthor(options.author, settings.author_default);\n const warnings: string[] = [];\n if (!changed) {\n warnings.push(\"history_compact_noop_before_boundary\");\n }\n\n const currentItem = await loadHistoryCompactCurrentItem(subject, settings, historyEntries);\n if (currentItem.matchedChainBefore === false) {\n warnings.push(\"history_compact_item_chain_mismatch\");\n }\n\n const { rewrittenEntries, baselineEntryAdded, auditEntryAdded } = buildHistoryCompactEntries({\n historyEntries,\n boundary,\n changed,\n dryRun,\n author,\n options,\n });\n\n const rewrittenVerify = verifyHistoryChain(rewrittenEntries);\n if (!rewrittenVerify.ok) {\n throw new PmCliError(\n `history-compact produced an invalid rewritten chain (${rewrittenVerify.errors.join(\", \")}).`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n\n if (changed && !dryRun) {\n warnings.push(\n ...(await applyHistoryCompactRewrite({\n pmRoot,\n subject,\n settings,\n typeRegistry,\n historyRawBeforeLock,\n currentItemRawBeforeLock: currentItem.currentItemRawBeforeLock,\n author,\n force: options.force,\n loadedItem: currentItem.loadedItem,\n historyPath,\n rewrittenEntries,\n })),\n );\n }\n\n const firstRetainedEntry = boundary.retainedCount > 0 ? boundary.compactCount + 1 : null;\n return {\n id: subject.id,\n dry_run: dryRun,\n changed,\n compact_boundary: {\n kind: boundary.kind,\n before: boundary.raw,\n entries_compacted: boundary.compactCount,\n entries_retained: boundary.retainedCount,\n first_retained_entry: firstRetainedEntry,\n },\n history: {\n path: historyPath,\n entries_scanned: historyEntries.length,\n entries_after: rewrittenEntries.length,\n baseline_entry_added: baselineEntryAdded,\n audit_entry_added: auditEntryAdded,\n verify_ok: rewrittenVerify.ok,\n verify_errors: rewrittenVerify.errors,\n },\n item: {\n exists: subject.located !== null,\n path: subject.located?.itemPath ?? null,\n matched_chain_before: currentItem.matchedChainBefore,\n },\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n generated_at: nowIso(),\n };\n}\n\n/** Default entry floor below which a stream is treated as already compact. */\nexport const HISTORY_COMPACT_BULK_DEFAULT_MIN_ENTRIES = 3;\n\n/**\n * Documents the bulk history compact command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistoryCompactBulkCommandOptions {\n ids?: string[];\n scope?: HistoryCompactScope;\n allOver?: number;\n minEntries?: number;\n dryRun?: boolean;\n author?: string;\n message?: string;\n force?: boolean;\n}\n\n/** Per-item outcome row in a bulk compaction pass. */\nexport interface HistoryCompactBulkItemResult {\n id: string;\n outcome: \"compacted\" | \"skipped\" | \"errored\";\n entries_before: number;\n entries_after: number | null;\n skip_reason: HistoryCompactBulkSkipReason | null;\n changed: boolean;\n error: string | null;\n}\n\n/**\n * Documents the bulk history compact result payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistoryCompactBulkResult {\n bulk: true;\n dry_run: boolean;\n mode: \"ids\" | \"scan\";\n scope: HistoryCompactScope | null;\n criteria: {\n min_entries: number;\n all_over: number | null;\n policy_threshold_applied: boolean;\n };\n totals: {\n streams_considered: number;\n selected: number;\n items_compacted: number;\n items_skipped: number;\n items_errored: number;\n };\n results: HistoryCompactBulkItemResult[];\n generated_at: string;\n}\n\n/**\n * Enforce the `pm history-compact` target contract shared by the CLI and MCP\n * surfaces: exactly one selection mode — a single item `<id>`, an explicit\n * `--ids` list, or a scan selector (`--all-over` / `--closed` / `--all-streams`).\n */\nexport function assertHistoryCompactTarget(\n id: string | undefined,\n bulk: { ids?: string[]; allOver?: number; scope?: HistoryCompactScope },\n): void {\n const hasIds = bulk.ids !== undefined && bulk.ids.length > 0;\n const hasScan = bulk.allOver !== undefined || bulk.scope !== undefined;\n const selectorCount = (id !== undefined ? 1 : 0) + (hasIds ? 1 : 0) + (hasScan ? 1 : 0);\n if (selectorCount === 0) {\n throw new PmCliError(\n \"history-compact: provide an item <id>, or a bulk selector (--ids, --all-over <N>, --closed, or --all-streams).\",\n EXIT_CODE.USAGE,\n );\n }\n if (id !== undefined && (hasIds || hasScan)) {\n throw new PmCliError(\n \"history-compact: <id> and bulk selectors (--ids/--all-over/--closed/--all-streams) are mutually exclusive; pass one item id, or use bulk mode without a positional id.\",\n EXIT_CODE.USAGE,\n );\n }\n if (hasIds && hasScan) {\n throw new PmCliError(\n \"history-compact: --ids is mutually exclusive with --all-over/--closed/--all-streams; pass an explicit id list or a scan selector, not both.\",\n EXIT_CODE.USAGE,\n );\n }\n}\n\nfunction countHistoryStreamEntries(raw: string): number {\n let count = 0;\n for (const line of raw.split(/\\r?\\n/)) {\n if (line.trim().length > 0) {\n count += 1;\n }\n }\n return count;\n}\n\nasync function collectHistoryCompactBulkCandidates(params: {\n pmRoot: string;\n settings: Awaited<ReturnType<typeof readSettings>>;\n typeToFolder: Record<string, string>;\n}): Promise<{ candidates: HistoryCompactBulkCandidate[]; preselectionErrors: HistoryCompactBulkItemResult[] }> {\n const statusRegistry = resolveRuntimeStatusRegistry(params.settings.schema);\n const classifier = lifecycleClassifierFromStatusRegistry(statusRegistry);\n const items = await listAllFrontMatterLight(\n params.pmRoot,\n params.settings.item_format,\n params.typeToFolder,\n undefined,\n params.settings.schema,\n );\n const bucketById = new Map(items.map((item) => [item.id, classifier.classify(item.status)] as const));\n const historyDir = path.join(params.pmRoot, \"history\");\n const candidates: HistoryCompactBulkCandidate[] = [];\n const preselectionErrors: HistoryCompactBulkItemResult[] = [];\n if (!(await pathExists(historyDir))) {\n return { candidates, preselectionErrors };\n }\n const historyFiles = (await fs.readdir(historyDir))\n .filter((entry) => entry.endsWith(\".jsonl\"))\n .sort((left, right) => left.localeCompare(right));\n for (const fileName of historyFiles) {\n const historyPath = path.join(historyDir, fileName);\n const id = fileName.slice(0, -\".jsonl\".length);\n try {\n const raw = await fs.readFile(historyPath, \"utf8\");\n await runActiveOnReadHooks({ path: historyPath, scope: \"project\" });\n candidates.push({ id, entries: countHistoryStreamEntries(raw), bucket: bucketById.get(id) ?? null });\n } catch (error) {\n preselectionErrors.push({\n id,\n outcome: \"errored\",\n entries_before: 0,\n entries_after: null,\n skip_reason: null,\n changed: false,\n /* c8 ignore next -- non-Error throws are normalized in defensive fallback. */\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n return { candidates, preselectionErrors };\n}\n\nasync function runHistoryCompactBulkRow(params: {\n row: ReturnType<typeof selectHistoryCompactBulkTargets>[number];\n options: HistoryCompactBulkCommandOptions;\n dryRun: boolean;\n global: GlobalOptions;\n}): Promise<{ result: HistoryCompactBulkItemResult; selected: boolean; compacted: boolean; errored: boolean }> {\n if (!params.row.selected) {\n return {\n selected: false,\n compacted: false,\n errored: false,\n result: {\n id: params.row.id,\n outcome: \"skipped\",\n entries_before: params.row.entries,\n entries_after: null,\n skip_reason: params.row.skip_reason,\n changed: false,\n error: null,\n },\n };\n }\n try {\n const result = await runHistoryCompact(\n params.row.id,\n {\n dryRun: params.dryRun,\n author: params.options.author,\n message: params.options.message,\n force: params.options.force,\n },\n params.global,\n );\n return {\n selected: true,\n compacted: true,\n errored: false,\n result: {\n id: params.row.id,\n outcome: \"compacted\",\n entries_before: params.row.entries,\n entries_after: result.history.entries_after,\n skip_reason: null,\n changed: result.changed,\n error: null,\n },\n };\n } catch (error) {\n return {\n selected: true,\n compacted: false,\n errored: true,\n result: {\n id: params.row.id,\n outcome: \"errored\",\n entries_before: params.row.entries,\n entries_after: null,\n skip_reason: null,\n changed: false,\n /* c8 ignore next -- non-Error throws are normalized in defensive fallback. */\n error: error instanceof Error ? error.message : String(error),\n },\n };\n }\n}\n\n/**\n * Bulk history compaction: compact every history stream matching the requested\n * selection (explicit `--ids`, a `--scope` lifecycle filter, and/or an\n * `--all-over <N>` entry threshold) in one audited pass. Each selected stream is\n * compacted with the same single-item logic ({@link runHistoryCompact}); one\n * failing stream never aborts the rest, and the caller decides the exit code\n * from `totals.items_errored`.\n *\n * When `history.compact_policy` is enabled and no explicit `--all-over` is\n * given, the policy's `max_entries` is used as the scan threshold so the\n * configured policy drives the sweep.\n */\nexport async function runHistoryCompactBulk(\n options: HistoryCompactBulkCommandOptions,\n global: GlobalOptions,\n): Promise<HistoryCompactBulkResult> {\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\n const settings = await readSettings(pmRoot);\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const { candidates, preselectionErrors } = await collectHistoryCompactBulkCandidates({\n pmRoot,\n settings,\n typeToFolder: typeRegistry.type_to_folder,\n });\n\n const mode: \"ids\" | \"scan\" = options.ids !== undefined && options.ids.length > 0 ? \"ids\" : \"scan\";\n const minEntries = options.minEntries ?? HISTORY_COMPACT_BULK_DEFAULT_MIN_ENTRIES;\n const policy = settings.history.compact_policy;\n const policyThresholdApplied = mode === \"scan\" && options.allOver === undefined && policy.enabled;\n const allOver = options.allOver ?? (policyThresholdApplied ? policy.max_entries : undefined);\n\n const selection = selectHistoryCompactBulkTargets(candidates, {\n ids: options.ids,\n scope: options.scope,\n minEntries,\n allOver,\n });\n\n const dryRun = Boolean(options.dryRun);\n const results: HistoryCompactBulkItemResult[] = [...preselectionErrors];\n const totals = {\n streams_considered: candidates.length + preselectionErrors.length,\n selected: 0,\n items_compacted: 0,\n items_skipped: 0,\n items_errored: preselectionErrors.length,\n };\n for (const row of selection) {\n const outcome = await runHistoryCompactBulkRow({ row, options, dryRun, global });\n results.push(outcome.result);\n if (!outcome.selected) {\n totals.items_skipped += 1;\n continue;\n }\n totals.selected += 1;\n if (outcome.compacted) {\n totals.items_compacted += 1;\n }\n if (outcome.errored) {\n totals.items_errored += 1;\n }\n }\n\n return {\n bulk: true,\n dry_run: dryRun,\n mode,\n scope: options.scope ?? null,\n criteria: {\n min_entries: minEntries,\n all_over: allOver ?? null,\n policy_threshold_applied: policyThresholdApplied,\n },\n totals,\n results,\n generated_at: nowIso(),\n };\n}\n", "/**\n * @module core/history/history-compact-bulk\n *\n * Pure selection logic for bulk history-stream compaction. Given a set of\n * history-stream candidates (id, entry count, and lifecycle bucket of the\n * owning item) plus the requested selection criteria, this module decides which\n * streams should be compacted and which are skipped (and why).\n *\n * The module performs no filesystem access and imports no heavy runtime\n * dependencies — the command layer reads streams and item statuses, hands the\n * resolved candidates here, then executes per-item compaction on the selection\n * this module returns. Keeping selection pure makes the matrix of scope /\n * threshold / explicit-id rules trivially testable without touching disk.\n */\n\nimport type { LifecycleBucket } from \"../governance/metadata-coverage.js\";\n\n/** Bulk-compaction scope: only closed items, or every history stream. */\nexport type HistoryCompactScope = \"closed\" | \"all-streams\";\n\n/** Why a candidate stream was not selected for compaction. */\nexport type HistoryCompactBulkSkipReason = \"no_stream\" | \"already_compact\" | \"scope_mismatch\" | \"below_threshold\";\n\n/**\n * One history stream considered for bulk compaction.\n *\n * `bucket` is the lifecycle bucket of the owning item, or `null` when no item\n * matches the stream (an orphan history file). Orphan streams never satisfy a\n * `closed` scope filter but are eligible under `all-streams`.\n */\nexport interface HistoryCompactBulkCandidate {\n id: string;\n entries: number;\n bucket: LifecycleBucket | null;\n}\n\n/** Selection criteria resolved from the command flags + policy defaults. */\nexport interface HistoryCompactBulkCriteria {\n /**\n * Explicit, ordered list of item ids to compact. When non-empty the selection\n * runs in \"ids\" mode: scope/allOver are ignored and only the `minEntries`\n * floor applies. Duplicates are collapsed, preserving first-seen order.\n */\n ids?: string[];\n /** Lifecycle scope filter for scan mode (ignored in ids mode). */\n scope?: HistoryCompactScope;\n /**\n * Streams with at most this many entries are skipped as `already_compact`\n * (compaction collapses a stream to a 2-entry baseline+audit pair, so smaller\n * streams gain nothing). Applies in both modes.\n */\n minEntries: number;\n /**\n * Scan mode only: when set, only streams with strictly more entries than this\n * are selected. Streams above `minEntries` but at/below `allOver` are skipped\n * as `below_threshold`.\n */\n allOver?: number;\n}\n\n/** Per-candidate selection outcome. */\nexport interface HistoryCompactBulkSelectionRow {\n id: string;\n entries: number;\n selected: boolean;\n skip_reason: HistoryCompactBulkSkipReason | null;\n}\n\nfunction selectIdsMode(\n ids: string[],\n byId: ReadonlyMap<string, HistoryCompactBulkCandidate>,\n minEntries: number,\n): HistoryCompactBulkSelectionRow[] {\n const seen = new Set<string>();\n const rows: HistoryCompactBulkSelectionRow[] = [];\n for (const rawId of ids) {\n const id = rawId.trim();\n if (id.length === 0 || seen.has(id)) {\n continue;\n }\n seen.add(id);\n const candidate = byId.get(id);\n if (candidate === undefined) {\n rows.push({ id, entries: 0, selected: false, skip_reason: \"no_stream\" });\n continue;\n }\n if (candidate.entries <= minEntries) {\n rows.push({ id, entries: candidate.entries, selected: false, skip_reason: \"already_compact\" });\n continue;\n }\n rows.push({ id, entries: candidate.entries, selected: true, skip_reason: null });\n }\n return rows;\n}\n\nfunction selectScanMode(\n candidates: HistoryCompactBulkCandidate[],\n criteria: HistoryCompactBulkCriteria,\n): HistoryCompactBulkSelectionRow[] {\n const ordered = [...candidates].sort((a, b) => b.entries - a.entries || a.id.localeCompare(b.id));\n const rows: HistoryCompactBulkSelectionRow[] = [];\n for (const candidate of ordered) {\n if (criteria.scope === \"closed\" && candidate.bucket !== \"closed\") {\n rows.push({ id: candidate.id, entries: candidate.entries, selected: false, skip_reason: \"scope_mismatch\" });\n continue;\n }\n if (candidate.entries <= criteria.minEntries) {\n rows.push({ id: candidate.id, entries: candidate.entries, selected: false, skip_reason: \"already_compact\" });\n continue;\n }\n if (criteria.allOver !== undefined && candidate.entries <= criteria.allOver) {\n rows.push({ id: candidate.id, entries: candidate.entries, selected: false, skip_reason: \"below_threshold\" });\n continue;\n }\n rows.push({ id: candidate.id, entries: candidate.entries, selected: true, skip_reason: null });\n }\n return rows;\n}\n\n/**\n * Decide which history streams to compact.\n *\n * Runs in \"ids\" mode when `criteria.ids` is non-empty (exact, ordered set,\n * honouring only the `minEntries` floor) and \"scan\" mode otherwise (every\n * candidate, filtered by scope and entry thresholds, ordered deepest-first).\n */\nexport function selectHistoryCompactBulkTargets(\n candidates: HistoryCompactBulkCandidate[],\n criteria: HistoryCompactBulkCriteria,\n): HistoryCompactBulkSelectionRow[] {\n if (criteria.ids !== undefined && criteria.ids.length > 0) {\n const byId = new Map(candidates.map((candidate) => [candidate.id, candidate]));\n return selectIdsMode(criteria.ids, byId, criteria.minEntries);\n }\n return selectScanMode(candidates, criteria);\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["compactCount", "global"]
|
|
7
7
|
}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
2
|
normalizeStatusToken
|
|
3
3
|
} from "./chunk-CZVISY5A.js";
|
|
4
|
-
import {
|
|
5
|
-
TYPE_PRESET_DEFINITIONS,
|
|
6
|
-
normalizeAddFieldInput,
|
|
7
|
-
normalizeAddStatusInput
|
|
8
|
-
} from "./chunk-FT3QTERD.js";
|
|
9
4
|
import {
|
|
10
5
|
parseNestedSettingValue,
|
|
11
6
|
resolveNestedSettingDescriptor
|
|
12
7
|
} from "./chunk-VUHVWI4C.js";
|
|
8
|
+
import {
|
|
9
|
+
TYPE_PRESET_DEFINITIONS,
|
|
10
|
+
normalizeAddFieldInput,
|
|
11
|
+
normalizeAddStatusInput
|
|
12
|
+
} from "./chunk-J7BOLHAV.js";
|
|
13
13
|
import {
|
|
14
14
|
normalizeAddTypeInput
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-YPMZMKN7.js";
|
|
16
16
|
import {
|
|
17
17
|
BUILTIN_ITEM_TYPE_VALUES,
|
|
18
18
|
DEFAULT_RUNTIME_STATUS_DEFINITIONS,
|
|
19
19
|
toErrorMessage
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-LCFJ7XAM.js";
|
|
21
21
|
|
|
22
22
|
// dist/core/profile/profile-presets.js
|
|
23
23
|
!(function() {
|
|
@@ -631,4 +631,4 @@ export {
|
|
|
631
631
|
PROFILE_LINT_CODES,
|
|
632
632
|
lintProjectProfile
|
|
633
633
|
};
|
|
634
|
-
//# sourceMappingURL=chunk-
|
|
634
|
+
//# sourceMappingURL=chunk-H2SMKL2N.js.map
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import {
|
|
2
2
|
verifyHistoryChain
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-E3YQFSFE.js";
|
|
4
4
|
import {
|
|
5
5
|
hashDocument
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-YNCFP5AR.js";
|
|
7
7
|
import {
|
|
8
8
|
getHistoryPath,
|
|
9
9
|
writeFileAtomic
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-LCFJ7XAM.js";
|
|
11
11
|
|
|
12
12
|
// dist/core/history/drift-scan.js
|
|
13
|
-
import fs from "fs/promises";
|
|
13
|
+
import fs from "node:fs/promises";
|
|
14
14
|
import { createHash } from "node:crypto";
|
|
15
15
|
import path from "node:path";
|
|
16
16
|
!(function() {
|
|
17
17
|
try {
|
|
18
18
|
var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
|
|
19
|
-
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "
|
|
19
|
+
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "20ed642a-081f-55bd-9bbe-840b1a1bd3b5");
|
|
20
20
|
} catch (e2) {
|
|
21
21
|
}
|
|
22
22
|
})();
|
|
@@ -207,4 +207,4 @@ async function scanHistoryDrift(pmRoot, items, options = {}) {
|
|
|
207
207
|
export {
|
|
208
208
|
scanHistoryDrift
|
|
209
209
|
};
|
|
210
|
-
//# sourceMappingURL=chunk-
|
|
210
|
+
//# sourceMappingURL=chunk-HHEWQXPD.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../core/history/drift-scan.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * @module core/history/drift-scan\n *\n * Implements append-only history and replay behavior for Drift Scan.\n */\nimport type { Stats } from \"node:fs\";\nimport fs from \"node:fs/promises\";\nimport { createHash } from \"node:crypto\";\nimport path from \"node:path\";\nimport { getHistoryPath } from \"../store/paths.js\";\nimport { writeFileAtomic } from \"../fs/fs-utils.js\";\nimport { hashDocument } from \"./history.js\";\nimport { verifyHistoryChain } from \"./replay.js\";\nimport type { HistoryEntry, ItemMetadata } from \"../../types/index.js\";\n\n/**\n * Documents the drift scan result payload exchanged by command, SDK, and package integrations.\n */\nexport interface DriftScanResult {\n missingStreams: string[];\n unreadableStreams: string[];\n hashMismatches: string[];\n chainMismatches: string[];\n driftedItems: string[];\n}\n\nconst DRIFT_CACHE_VERSION = 3;\nconst DRIFT_CACHE_FILENAME = \"history-drift-cache.json\";\n\n/**\n * Controls how cached history stream verification is trusted when the file stat\n * tuple still matches a previous scan.\n */\nexport type DriftCacheHitVerification = \"content_hash\" | \"metadata\";\n\n/**\n * Documents the history drift scan options shared by health, validate, and\n * repair callers.\n */\nexport interface DriftScanOptions {\n cacheHitVerification?: DriftCacheHitVerification;\n}\n\ninterface DriftCacheEntry {\n mtime_ms: number;\n ctime_ms: number;\n size: number;\n content_hash: string;\n latest_after_hash: string;\n chain_ok: boolean;\n}\n\ninterface DriftCacheEnvelope {\n version: number;\n entries: Record<string, DriftCacheEntry>;\n}\n\nfunction getDriftCachePath(pmRoot: string): string {\n return path.join(pmRoot, \"runtime\", DRIFT_CACHE_FILENAME);\n}\n\nasync function loadDriftCache(pmRoot: string): Promise<DriftCacheEnvelope | null> {\n try {\n const raw = await fs.readFile(getDriftCachePath(pmRoot), \"utf8\");\n const parsed = JSON.parse(raw) as DriftCacheEnvelope;\n if (parsed.version !== DRIFT_CACHE_VERSION || typeof parsed.entries !== \"object\" || parsed.entries === null) {\n return null;\n }\n return parsed;\n } catch {\n return null;\n }\n}\n\nfunction isErrno(error: unknown, code: string): boolean {\n return typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: string }).code === code;\n}\n\ninterface StreamVerification {\n latestAfterHash: string;\n chainOk: boolean;\n contentHash: string;\n}\n\ninterface DriftScanAccumulator {\n missingStreams: string[];\n unreadableStreams: string[];\n hashMismatches: string[];\n chainMismatches: string[];\n}\n\nfunction hashContent(raw: string): string {\n return createHash(\"sha256\").update(raw).digest(\"hex\");\n}\n\nasync function readHistoryContentHash(historyPath: string): Promise<string> {\n const raw = await fs.readFile(historyPath, \"utf8\");\n return hashContent(raw);\n}\n\n/**\n * Read and fully verify one history stream's hash chain. Returns null for an\n * empty/missing stream (caller records it as a missing stream).\n */\nasync function verifyHistoryStream(historyPath: string): Promise<StreamVerification | null> {\n const raw = await fs.readFile(historyPath, \"utf8\");\n const contentHash = hashContent(raw);\n if (raw.trim().length === 0) {\n return null;\n }\n const entries: HistoryEntry[] = [];\n let latestAfterHash: string | null = null;\n for (const line of raw.split(/\\r?\\n/)) {\n const trimmed = line.trim();\n if (trimmed.length === 0) {\n continue;\n }\n const parsed = JSON.parse(trimmed) as HistoryEntry;\n if (typeof parsed.after_hash !== \"string\" || parsed.after_hash.trim().length === 0) {\n throw new Error(\"missing after_hash\");\n }\n entries.push(parsed);\n latestAfterHash = parsed.after_hash;\n }\n /* c8 ignore start -- defensive guard for future history schema changes. */\n if (!latestAfterHash) {\n return null;\n }\n /* c8 ignore stop */\n return {\n latestAfterHash,\n chainOk: verifyHistoryChain(entries).ok,\n contentHash,\n };\n}\n\nfunction cacheMetadataMatches(cached: DriftCacheEntry | undefined, stat: Stats): boolean {\n return cached !== undefined && cached.mtime_ms === stat.mtimeMs && cached.ctime_ms === stat.ctimeMs && cached.size === stat.size;\n}\n\nasync function loadFreshStreamVerification(\n itemId: string,\n historyPath: string,\n accumulator: DriftScanAccumulator,\n): Promise<StreamVerification | null> {\n try {\n const loaded = await verifyHistoryStream(historyPath);\n if (!loaded) {\n accumulator.missingStreams.push(itemId);\n return null;\n }\n return loaded;\n } catch {\n accumulator.unreadableStreams.push(itemId);\n return null;\n }\n}\n\nasync function resolveStreamVerification(params: {\n itemId: string;\n historyPath: string;\n stat: Stats;\n cached: DriftCacheEntry | undefined;\n verifyCacheHitByContent: boolean;\n accumulator: DriftScanAccumulator;\n}): Promise<{ verification: StreamVerification | null; cacheDirty: boolean }> {\n const cachedContentHash =\n typeof params.cached?.content_hash === \"string\" && params.cached.content_hash.length > 0\n ? params.cached.content_hash\n : undefined;\n const canUseCache = cacheMetadataMatches(params.cached, params.stat) && cachedContentHash !== undefined && params.cached !== undefined;\n if (!canUseCache || !params.cached) {\n return {\n verification: await loadFreshStreamVerification(params.itemId, params.historyPath, params.accumulator),\n cacheDirty: true,\n };\n }\n let currentContentHash: string;\n if (params.verifyCacheHitByContent) {\n try {\n currentContentHash = await readHistoryContentHash(params.historyPath);\n } catch {\n params.accumulator.unreadableStreams.push(params.itemId);\n return { verification: null, cacheDirty: false };\n }\n } else {\n currentContentHash = cachedContentHash;\n }\n if (!params.verifyCacheHitByContent || currentContentHash === cachedContentHash) {\n return {\n verification: {\n latestAfterHash: params.cached.latest_after_hash,\n chainOk: params.cached.chain_ok,\n contentHash: currentContentHash,\n },\n cacheDirty: false,\n };\n }\n return {\n verification: await loadFreshStreamVerification(params.itemId, params.historyPath, params.accumulator),\n cacheDirty: true,\n };\n}\n\n/**\n * Scan every item's history stream for drift (missing/unreadable streams, broken\n * hash chains, and item/history hash mismatches).\n *\n * Full chain re-verification of a large history tree is the dominant cost of\n * `pm health`. We cache the per-stream verification keyed by the history file's\n * mtime/ctime/size plus content hash. Strict callers keep recomputing the\n * content hash on metadata hits; latency-sensitive health checks can opt into\n * trusting the stat tuple and skip rereading unchanged streams.\n */\nexport async function scanHistoryDrift(\n pmRoot: string,\n items: Array<ItemMetadata & { body: string }>,\n options: DriftScanOptions = {},\n): Promise<DriftScanResult> {\n const accumulator: DriftScanAccumulator = {\n missingStreams: [],\n unreadableStreams: [],\n hashMismatches: [],\n chainMismatches: [],\n };\n\n const cache = await loadDriftCache(pmRoot);\n const previousEntries: Record<string, DriftCacheEntry> = cache?.entries ?? {};\n const nextEntries: Record<string, DriftCacheEntry> = {};\n let cacheDirty = false;\n // Metadata mode does not open a stat-matched stream, so unreadable-after-stat\n // failures are intentionally deferred to strict validate/history-repair scans.\n const verifyCacheHitByContent = options.cacheHitVerification !== \"metadata\";\n\n for (const item of items) {\n const historyPath = getHistoryPath(pmRoot, item.id);\n\n let stat: Stats;\n try {\n stat = await fs.stat(historyPath);\n } catch (error: unknown) {\n if (isErrno(error, \"ENOENT\")) {\n accumulator.missingStreams.push(item.id);\n } else {\n accumulator.unreadableStreams.push(item.id);\n }\n continue;\n }\n\n const cached = previousEntries[item.id];\n const resolved = await resolveStreamVerification({\n itemId: item.id,\n historyPath,\n stat,\n cached,\n verifyCacheHitByContent,\n accumulator,\n });\n cacheDirty ||= resolved.cacheDirty;\n if (!resolved.verification) {\n continue;\n }\n\n if (!resolved.verification.chainOk) {\n accumulator.chainMismatches.push(item.id);\n }\n nextEntries[item.id] = {\n mtime_ms: stat.mtimeMs,\n ctime_ms: stat.ctimeMs,\n size: stat.size,\n content_hash: resolved.verification.contentHash,\n latest_after_hash: resolved.verification.latestAfterHash,\n chain_ok: resolved.verification.chainOk,\n };\n\n const { body, ...frontMatter } = item;\n const currentHash = hashDocument({\n metadata: frontMatter as ItemMetadata,\n body,\n });\n if (currentHash !== resolved.verification.latestAfterHash) {\n accumulator.hashMismatches.push(item.id);\n }\n }\n\n if (cacheDirty || Object.keys(previousEntries).length !== Object.keys(nextEntries).length) {\n const cachePath = getDriftCachePath(pmRoot);\n try {\n await fs.mkdir(path.dirname(cachePath), { recursive: true });\n await writeFileAtomic(cachePath, JSON.stringify({ version: DRIFT_CACHE_VERSION, entries: nextEntries }));\n } catch {\n // Best-effort cache write: a failed persist must never fail a health scan.\n }\n }\n\n const driftedItems = [\n ...new Set([\n ...accumulator.missingStreams,\n ...accumulator.unreadableStreams,\n ...accumulator.hashMismatches,\n ...accumulator.chainMismatches,\n ]),\n ].sort((a, b) => a.localeCompare(b));\n return { ...accumulator, driftedItems };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
collectUsedExtensionCapabilities,
|
|
3
3
|
normalizeExtensionName
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-LCFJ7XAM.js";
|
|
5
5
|
|
|
6
6
|
// dist/core/extensions/activation-summary.js
|
|
7
7
|
!(function() {
|
|
@@ -157,4 +157,4 @@ export {
|
|
|
157
157
|
describeExtensionActivation,
|
|
158
158
|
renderExtensionSurfaceMarkdown
|
|
159
159
|
};
|
|
160
|
-
//# sourceMappingURL=chunk-
|
|
160
|
+
//# sourceMappingURL=chunk-HX6QXV5P.js.map
|